From ff844b0c2035142d3260fa5e002b30022b721a88 Mon Sep 17 00:00:00 2001 From: Whitney Armstrong <warmstrong@anl.gov> Date: Wed, 24 Mar 2021 23:21:59 -0500 Subject: [PATCH] modified: compact/definitions.xml modified: compact/definitions.xml modified: compact/definitions.xml modified: compact/ecal.xml modified: compact/definitions.xml modified: compact/definitions.xml modified: compact/ecal.xml modified: compact/definitions.xml modified: CMakeLists.txt modified: compact/definitions.xml modified: compact/ecal.xml --- CMakeLists.txt | 2 +- compact/definitions.xml | 136 ++++++++++++++++++++++++++-------------- compact/ecal.xml | 26 ++++---- 3 files changed, 104 insertions(+), 60 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b2d5e2d..f807d33 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,7 +16,7 @@ set(a_lib_name reference_detector) dd4hep_configure_output() dd4hep_add_plugin(${a_lib_name} SOURCES src/*.cpp - USES ActsCore ActsPluginDD4hep + # USES ActsCore ActsPluginDD4hep ) target_link_libraries(${a_lib_name} PUBLIC DD4hep::DDCore DD4hep::DDRec diff --git a/compact/definitions.xml b/compact/definitions.xml index c23b1cc..f371c0a 100644 --- a/compact/definitions.xml +++ b/compact/definitions.xml @@ -237,13 +237,15 @@ </comment> <comment> - -------------------------- - Solenoid Magnet Parameters - -------------------------- + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Detector Definition Parameters + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </comment> <comment> - These cb_ parameters don't make sense + ========================== + Solenoid Magnet Parameters + ========================== </comment> <constant name="cb_Solenoid_rmin" value="0.0 * cm"/> <comment> Central Barrel Solenoid Inner diameter </comment> <constant name="cb_Solenoid_rmax" value="137.0 * cm"/> <comment> Central Barrel Solenoid Outer diameter </comment> @@ -253,7 +255,7 @@ <constant name="Solenoid_thickness" value="400*mm"/> <constant name="Solenoid_rmin" value="2000.0*mm"/> <constant name="Solenoid_rmax" value="Solenoid_rmin + Solenoid_thickness"/> - <constant name="SolenoidLength" value="4050.0*mm"/> + <constant name="SolenoidLength" value="6000.0*mm"/> <constant name="SolenoidBarrelCryostatThickness" value=" 1.0 * cm"/> <constant name="SolenoidBarrelGapThickness" value=" 3.3 * cm"/> @@ -294,6 +296,24 @@ <constant name="SolenoidYokeChamferAngle" value="0.2"/> + + <comment> + --------------------------------- + Other Central Detector parameters + -------------------------------- + These are needed here to compute the dependent parameters. + </comment> + <constant name="RICHLength" value="1.5*m"/> + <constant name="TRDLength" value="40.0*cm"/> + <constant name="ForwardTOFLength" value="10.0*cm"/> + <constant name="ForwardPIDLength" value="RICHLength + TRDLength + ForwardTOFLength"/> + + <constant name="BackwardCherenkovLength" value="50.0*cm"/> + <constant name="BackwardTOFLength" value="10.0*cm"/> + <constant name="BackwardPIDLength" value="BackwardCherenkovLength + BackwardTOFLength"/> + + <constant name="BarrelPIDThickness" value="25.0 * cm"/> + <comment> ============================ Tracking Parameters @@ -308,8 +328,8 @@ ------------------------- </comment> <constant name="VertexTrackerInnerRadius" value="30.0*mm"/> - <constant name="VertexTrackerOuterRadius" value="Solenoid_rmin/2.0"/> - <constant name="VertexTrackerOuterBarrelLength" value="300.0*mm"/> + <constant name="VertexTrackerOuterRadius" value="90.0*mm"/> + <constant name="VertexTrackerOuterBarrelLength" value="400.0*mm"/> <comment> @@ -318,9 +338,9 @@ -------------------------- </comment> <constant name="SiliconTrackerInnerRadius" value="95.0*mm"/> - <constant name="SiliconTrackerInnerBarrelLength" value="400.0*mm"/> + <constant name="SiliconTrackerInnerBarrelLength" value="500.0*mm"/> <constant name="SiliconTrackerOuterRadius" value="Solenoid_rmax/2.0"/> - <constant name="SiliconTrackerOuterBarrelLength" value="SolenoidLength/2.0"/> + <constant name="SiliconTrackerOuterBarrelLength" value="SolenoidLength/3.0"/> <comment> ------------------------------- @@ -347,25 +367,37 @@ ------------ Calorimeters ------------ + ====================== + Calorimeter Parameters + ====================== + </comment> - <constant name="EcalBarrel_rmin" value="SiliconTrackerOuterRadius + 3.0 * cm"/> - <constant name="HcalBarrel_rmax" value="Solenoid_rmin - 5.0 *cm "/> - <constant name="AvailTotalBarrelCalorimetryThickness" value="HcalBarrel_rmax - EcalBarrel_rmin"/> - <constant name="CalBarrelDivider" value="0.5"/> <comment> Ecal and Hcal have the same thickness </comment> - <constant name="EcalBarrelAvailTotalThickness" value="AvailTotalBarrelCalorimetryThickness * CalBarrelDivider"/> - <constant name="HcalBarrelAvailTotalThickness" value="AvailTotalBarrelCalorimetryThickness * (1.0 - CalBarrelDivider)"/> + <constant name="EcalBarrel_rmin" value="SiliconTrackerOuterRadius + BarrelPIDThickness + 3.0 * cm"/> + <constant name="HcalBarrel_rmax" value="Solenoid_rmin - 5.0 *cm "/> + <constant name="Barrel_TotalCalThickness" value="HcalBarrel_rmax - EcalBarrel_rmin"/> + <constant name="CalBarrelDivider" value="0.5"/> <comment> Ecal and Hcal have the same thickness </comment> + <constant name="EcalBarrel_TotalThickness" value="Barrel_TotalCalThickness * CalBarrelDivider"/> + <constant name="HcalBarrel_TotalThickness" value="Barrel_TotalCalThickness * (1.0 - CalBarrelDivider)"/> + + <constant name="EcalBarrelLength" value="SiliconTrackerOuterBarrelLength + ForwardPIDLength + BackwardPIDLength"/> + <constant name="EcalEndcapP_zmin" value="SiliconTrackerOuterBarrelLength/2.0 + ForwardPIDLength"/> + <constant name="EcalEndcapN_zmin" value="SiliconTrackerOuterBarrelLength/2.0 + BackwardPIDLength"/> + + <constant name="EndcapP_TotalCalThickness" value="(SolenoidYokeEndcap_zmin - 10.0 * mm) - (EcalEndcapP_zmin + 10.0 * mm)"/> + <constant name="EndcapN_TotalCalThickness" value="(SolenoidYokeEndcap_zmin - 10.0 * mm) - (EcalEndcapN_zmin + 10.0 * mm)"/> - <constant name="EcalBarrelLength" value="SiliconTrackerOuterBarrelLength+50.0*cm"/> - <constant name="EcalEndcap_zmin" value="EcalBarrelLength/2.0"/> + <constant name="EndcapP_CalDivide" value="0.5"/> <comment> 0.5 means Ecal and Hcal have the same thickness </comment> + <constant name="EndcapN_CalDivide" value="0.5"/> <comment> 0.5 means Ecal and Hcal have the same thickness </comment> - <constant name="AvailTotalEndcapCalorimetryThickness" value="(SolenoidYokeEndcap_zmin - 10.0 * mm) - (EcalEndcap_zmin + 10.0 * mm)"/> - <constant name="CalEndcapDivider" value="0.5"/> <comment> Ecal and Hcal have the same thickness </comment> - <constant name="EcalEndcapAvailTotalThickness" value="AvailTotalEndcapCalorimetryThickness * CalEndcapDivider"/> - <constant name="HcalEndcapAvailTotalThickness" value="AvailTotalEndcapCalorimetryThickness * (1.0 - CalEndcapDivider)"/> + <constant name="EcalEndcapP_TotalThickness" value="EndcapP_TotalCalThickness * EndcapP_CalDivide"/> + <constant name="EcalEndcapN_TotalThickness" value="EndcapN_TotalCalThickness * EndcapN_CalDivide"/> + + <constant name="HcalEndcapP_TotalThickness" value="EndcapP_TotalCalThickness * (1.0 - EndcapP_CalDivide)"/> + <constant name="HcalEndcapN_TotalThickness" value="EndcapN_TotalCalThickness * (1.0 - EndcapN_CalDivide)"/> <comment> These need to be set in sync with the forward and backward detectors </comment> - <constant name="EcalEndcapP_rmin" value="250.0*mm"/> - <constant name="EcalEndcapN_rmin" value="350.0*mm"/> + <constant name="EcalEndcapP_rmin" value="200.0*mm"/> + <constant name="EcalEndcapN_rmin" value="300.0*mm"/> <constant name="HcalEndcapP_rmin" value="250.0 * mm"/> <constant name="HcalEndcapN_rmin" value="350.0 * mm"/> @@ -374,6 +406,14 @@ ------------------------- EM Calorimeter Parameters ------------------------- + + ## Note about Calormieter parameterization. + + The logic goes like this: + 1. The space for the calorimeter is fixed via parameterization above. + 2. The layer thicknesses are fixed (first parameters below) + 3. From the space/thickness the number of layers is computed. + </comment> <constant name="CaloSides" value="12"/> @@ -388,30 +428,39 @@ <comment> Layer Thickness </comment> <constant name="EcalFirstLayerThickness" - value="EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/> + value="EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/> <constant name="EcalThinOneLayerThickness" - value="EcalThinTungstenThickness + EcalAir2Thickness + EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/> + value="EcalThinTungstenThickness + EcalAir2Thickness + EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/> <constant name="EcalThickOneLayerThickness" - value="EcalThickTungstenThickness + EcalAir2Thickness + EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/> + value="EcalThickTungstenThickness + EcalAir2Thickness + EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/> <comment> EM Barrel N Layer; same number of layers for EcalThin and EcalThick</comment> <constant name="EcalBarrelLayers" - value="floor((EcalBarrelAvailTotalThickness - EcalFirstLayerThickness) / (EcalThinOneLayerThickness + EcalThickOneLayerThickness))"/> + value="floor((EcalBarrel_TotalThickness - EcalFirstLayerThickness) / (EcalThinOneLayerThickness + EcalThickOneLayerThickness))"/> <constant name="EcalBarrelThinLayers" value="EcalBarrelLayers"/> <constant name="EcalBarrelThickLayers" value="EcalBarrelLayers"/> + <comment> EM Barrel Thickness </comment> <constant name="EcalBarrelThickness" - value="EcalFirstLayerThickness + (EcalBarrelThinLayers * EcalThinOneLayerThickness) + (EcalBarrelThickLayers * EcalThickOneLayerThickness)"/> + value="EcalFirstLayerThickness + (EcalBarrelThinLayers * EcalThinOneLayerThickness) + (EcalBarrelThickLayers * EcalThickOneLayerThickness)"/> <constant name="EcalBarrel_rmax" value="EcalBarrel_rmin + EcalBarrelThickness"/> <comment> EM Endcap N Layer; same number of layers for EcalThin and EcalThick </comment> - <constant name="EcalEndcapLayers" - value="floor((EcalEndcapAvailTotalThickness - EcalFirstLayerThickness) / (EcalThinOneLayerThickness + EcalThickOneLayerThickness))"/> - <constant name="EcalEndcapThinLayers" value="EcalEndcapLayers"/> - <constant name="EcalEndcapThickLayers" value="EcalEndcapLayers"/> + <constant name="EcalEndcapPLayers" + value="floor((EcalEndcapP_TotalThickness - EcalFirstLayerThickness) / (EcalThinOneLayerThickness + EcalThickOneLayerThickness))"/> + <constant name="EcalEndcapNLayers" + value="floor((EcalEndcapN_TotalThickness - EcalFirstLayerThickness) / (EcalThinOneLayerThickness + EcalThickOneLayerThickness))"/> + <constant name="EcalEndcapP_NThinLayers" value="EcalEndcapPLayers"/> + <constant name="EcalEndcapP_NThickLayers" value="EcalEndcapPLayers"/> + <constant name="EcalEndcapN_NThinLayers" value="EcalEndcapNLayers"/> + <constant name="EcalEndcapN_NThickLayers" value="EcalEndcapNLayers"/> + <comment> EM Endcap Thickness </comment> - <constant name="EcalEndcapThickness" - value="EcalFirstLayerThickness + (EcalEndcapThinLayers * EcalThinOneLayerThickness) + (EcalEndcapThickLayers * EcalThickOneLayerThickness)"/> + <constant name="EcalEndcapPThickness" + value="EcalFirstLayerThickness + (EcalEndcapP_NThinLayers * EcalThinOneLayerThickness) + (EcalEndcapP_NThickLayers * EcalThickOneLayerThickness)"/> + <constant name="EcalEndcapNThickness" + value="EcalFirstLayerThickness + (EcalEndcapN_NThinLayers * EcalThinOneLayerThickness) + (EcalEndcapN_NThickLayers * EcalThickOneLayerThickness)"/> + <comment> ------------------------------- @@ -420,7 +469,7 @@ </comment> <constant name="HcalBarrel_rmin" value="EcalBarrel_rmax+10.0*mm"/> <constant name="HcalBarrelAvailThickness" value="HcalBarrel_rmax - HcalBarrel_rmin"/> - <constant name="HcalBarrelLength" value="EcalBarrelLength+2.0*EcalEndcapThickness + 10.0*mm "/> + <constant name="HcalBarrelLength" value="EcalBarrelLength + EcalEndcapP_TotalThickness + EcalEndcapN_TotalThickness + 10.0*mm "/> <constant name="HcalEndcap_zmin" value="HcalBarrelLength/2.0"/> <constant name="HcalEndcapAvailThickness" value="(SolenoidYokeEndcap_zmin - 10.0 * mm) - HcalEndcap_zmin"/> @@ -489,10 +538,10 @@ Gaseous RICH Parameters ----------------------- </comment> - <constant name="RICHZMin" value="SolenoidYokeEndcap_zmin + 1 * cm"/> - <constant name="RICHRMin" value="15 * cm"/> - <constant name="RICHRMax" value="60 * cm"/> - <constant name="RICHDepth" value="1 * m"/> + <constant name="RICHZMin" value="SiliconTrackerOuterBarrelLength/2.0 + 1 * cm"/> + <constant name="RICHRMin" value="15 * cm"/> + <constant name="RICHRMax" value="60 * cm"/> + <constant name="RICHDepth" value="1.0*m"/> <comment> @@ -500,15 +549,6 @@ Forward Tracker Parameters -------------------------- </comment> - <constant name="TempForwardTrackerSpace" value="1.5 * m"/> - <constant name="ForwardEcalZMin" value="RICHZMin + RICHDepth + TempForwardTrackerSpace"/> - <constant name="ForwardCaloAngle" value="2 * SolenoidYokeChamferAngle"/> - <constant name="ForwardEcalRInner" value="10 * cm"/> - <constant name="ForwardEcalROuter" value="EcalBarrel_rmin + tan(SolenoidYokeChamferAngle) * (RICHDepth) + tan(ForwardCaloAngle) * (ForwardEcalZMin - RICHZMin - RICHDepth)"/> - <constant name="ForwardHcalZMin" value="RICHZMin + RICHDepth + TempForwardTrackerSpace + EcalEndcapThickness + 1 * mm"/> - <constant name="ForwardHcalAngle" value="ForwardCaloAngle"/> - <constant name="ForwardHcalRInner" value="10 * cm"/> - <constant name="ForwardHcalROuter" value="ForwardEcalROuter + tan(ForwardCaloAngle) * (ForwardHcalZMin - ForwardEcalZMin)"/> <comment> -------------------------- diff --git a/compact/ecal.xml b/compact/ecal.xml index be2a125..a58ad10 100644 --- a/compact/ecal.xml +++ b/compact/ecal.xml @@ -9,7 +9,7 @@ <constant name="CrystalBox_offset" value="0.000001*mm"/> <constant name="CrystalEndcap_x_pos" value="0.0*m"/> <constant name="CrystalEndcap_y_pos" value="0.0*m"/> - <constant name="CrystalEndcap_z_pos" value="-EcalEndcap_zmin"/> + <constant name="CrystalEndcap_z_pos" value="-EcalEndcapN_zmin"/> </define> @@ -69,21 +69,22 @@ </detector> <comment> - ----------------------------- - Forward Endcap EM Calorimeter - ----------------------------- + ------------------------------------------ + Forward (Positive Z) Endcap EM Calorimeter + ------------------------------------------ A layered EM calorimeter with tungsten and silicon (or scintillator) strips </comment> + <!-- <detector id="ECalEndcapP_ID" name="EcalEndcapP" reflect="false" - type="DD4hep_PolyhedraEndcapCalorimeter2" + type="refdet_PolyhedraEndcapCalorimeter2" readout="EcalEndcapHits" vis="EcalEndcapVis" calorimeterType="EM_ENDCAP" > <dimensions numsides="CaloSides" - zmin="EcalEndcap_zmin" + zmin="EcalEndcapP_zmin" rmin="EcalEndcapP_rmin" rmax="EcalBarrel_rmax " /> <layer repeat="1"> @@ -92,7 +93,7 @@ <slice material="Kapton" thickness="EcalKaptonThickness"/> <slice material="Air" thickness="EcalAir1Thickness"/> </layer> - <layer repeat="EcalEndcapThinLayers"> + <layer repeat="EcalEndcapP_NThinLayers"> <slice material="TungstenDens24" thickness="EcalThinTungstenThickness"/> <slice material="Air" thickness="EcalAir2Thickness"/> <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/> @@ -100,7 +101,7 @@ <slice material="Kapton" thickness="EcalKaptonThickness"/> <slice material="Air" thickness="EcalAir1Thickness"/> </layer> - <layer repeat="EcalEndcapThickLayers"> + <layer repeat="EcalEndcapP_NThickLayers"> <slice material="TungstenDens24" thickness="EcalThickTungstenThickness"/> <slice material="Air" thickness="EcalAir2Thickness"/> <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/> @@ -110,6 +111,7 @@ </layer> </detector> +--> <comment> ------------------------------- @@ -117,6 +119,7 @@ ------------------------------- A layered EM calorimeter with tungsten and silicon (or scintillator) strips </comment> + <!-- <detector id="ECalEndcapN_ID" name="EcalEndcapN" type="refdet_PolyhedraEndcapCalorimeter2" @@ -126,7 +129,7 @@ calorimeterType="EM_ENDCAP"> <dimensions numsides="CaloSides" - zmin="EcalEndcap_zmin" + zmin="EcalEndcapN_zmin" rmin="EcalEndcapN_rmin" rmax="EcalBarrel_rmax " /> <layer repeat="1"> @@ -135,7 +138,7 @@ <slice material="Kapton" thickness="EcalKaptonThickness"/> <slice material="Air" thickness="EcalAir1Thickness"/> </layer> - <layer repeat="EcalEndcapThinLayers"> + <layer repeat="EcalEndcapN_NThinLayers"> <slice material="TungstenDens24" thickness="EcalThinTungstenThickness"/> <slice material="Air" thickness="EcalAir2Thickness"/> <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/> @@ -143,7 +146,7 @@ <slice material="Kapton" thickness="EcalKaptonThickness"/> <slice material="Air" thickness="EcalAir1Thickness"/> </layer> - <layer repeat="EcalEndcapThickLayers"> + <layer repeat="EcalEndcapN_NThickLayers"> <slice material="TungstenDens24" thickness="EcalThickTungstenThickness"/> <slice material="Air" thickness="EcalAir2Thickness"/> <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/> @@ -152,6 +155,7 @@ <slice material="Air" thickness="EcalAir1Thickness"/> </layer> </detector> + --> </detectors> <!-- Definition of the readout segmentation/definition --> -- GitLab