diff --git a/compact/definitions.xml b/compact/definitions.xml new file mode 100644 index 0000000000000000000000000000000000000000..67b8717c096197450ca6764abbd43bd9f2bddb0d --- /dev/null +++ b/compact/definitions.xml @@ -0,0 +1,451 @@ + <define> + <comment>Although not explicit in the design study, the eRHIC crossing angle is not symmetric.</comment> + <constant name="CrossingAngle" value="0.025"/> + <constant name="ionCrossingAngle" value="0.0166667"/> + <constant name="electronCrossingAngle" value="0.00833333"/> + <constant name="CrossingSlope" value="0.0166682"/> + + <constant name="Pi" value="3.14159265359"/> + <constant name="world_side" value="30*m"/> + <constant name="world_x" value="world_side"/> + <constant name="world_y" value="world_side"/> + <constant name="world_z" value="100*m"/> + + <constant name="mil" value="0.0254*mm"/> + + <comment> + ------------ + Detector IDs + ------------ + + Note about ACTS tracking geometry construction + ---------------------------------------------- + + The tracking surfaces need to be structured in a barrel + endcapP + endcapN where + endcapP/endcapN are the endcaps at positive/negative z values. + See https://acts.readthedocs.io/en/latest/plugins/dd4hep.html for more details. + + The tracking geometry needs to beconstructed from cylinders from the inside out. For this reason + each layer needs its own subsystem assembly. This increases the number of top level system IDs. + For example the silicon tracker needs 3 IDs for each area (endcap+barrel+endcap) and a subassembly for each + layer. Therefore it needs a minimum of 20 IDs. Therefore we will allocate blocks of ~25 for each major subsystem. + Note, future improvements will likely include a more sophisticated ACTS-dd4hep plugin, + eliminating the need for so many system IDs at construction time. + + This barrel/endcap structure needs IDs to be in increasing order going outward. + The space of IDs for the subassemblies starts at (Subassembly_ID*10+101). + + The unused IDs below are saved for future use. + </comment> + + + <comment> + =================== + (1-9) Reserved IDs + =================== + Unused IDs: 1-9 + + ==================================== + (10-24) Interaction region beamline + ==================================== + + Beampipe ID : 10 + Unused IDs: 11-24 + + </comment> + <constant name="BeamPipe_ID" value="10"/> + + + <comment> + =============================== + (25-49) Silicon Vertex Tracker + =============================== + SiVertex subsystem ID: 25 + Layer 1 subassembly ID: 26 + Layer 2 subassembly ID: 27 + Layer 3 subassembly ID: 28 + Layer 4 subassembly ID: 29 + Layer 5 subassembly ID: 30 + </comment> + <constant name="SiVertexSubAssembly_ID" value="25"/> + <comment> + Unused values reserved for vertex: + constant name="SiVertexSubAssemblyLayer1_ID" value="121" + constant name="SiVertexSubAssemblyLayer2_ID" value="122" + constant name="SiVertexSubAssemblyLayer3_ID" value="123" + constant name="SiVertexSubAssemblyLayer4_ID" value="124" + constant name="SiVertexSubAssemblyLayer5_ID" value="125" + </comment> + + <comment> + =============================== + (50-74) Silicon Tracker System + =============================== + + SiTracker subsystem ID: 50 + Layer 1 subassembly ID: 51 + Layer 2 subassembly ID: 52 + Layer 3 subassembly ID: 53 + Layer 4 subassembly ID: 54 + Layer 5 subassembly ID: 55 + + (56-70) etc... + + Unused IDs: 71-74 + + </comment> + + <constant name="SiTrackerSubAssembly_ID" value="50"/> + <constant name="SiTrackerSubAssemblyLayer1_ID" value="51"/> + <constant name="SiTrackerSubAssemblyLayer2_ID" value="52"/> + <constant name="SiTrackerSubAssemblyLayer3_ID" value="53"/> + <constant name="SiTrackerSubAssemblyLayer4_ID" value="54"/> + <constant name="SiTrackerSubAssemblyLayer5_ID" value="55"/> + + <constant name="SiTrackerBarrel_Layer1_ID" value="56"/> + <constant name="SiTrackerEndcapP_Layer1_ID" value="57"/> + <constant name="SiTrackerEndcapN_Layer1_ID" value="58"/> + + <constant name="SiTrackerBarrel_Layer2_ID" value="59"/> + <constant name="SiTrackerEndcapP_Layer2_ID" value="60"/> + <constant name="SiTrackerEndcapN_Layer2_ID" value="61"/> + + <constant name="SiTrackerBarrel_Layer3_ID" value="62"/> + <constant name="SiTrackerEndcapP_Layer3_ID" value="63"/> + <constant name="SiTrackerEndcapN_Layer3_ID" value="64"/> + + <constant name="SiTrackerBarrel_Layer4_ID" value="65"/> + <constant name="SiTrackerEndcapP_Layer4_ID" value="66"/> + <constant name="SiTrackerEndcapN_Layer4_ID" value="67"/> + + <constant name="SiTrackerBarrel_Layer5_ID" value="68"/> + <constant name="SiTrackerEndcapP_Layer5_ID" value="69"/> + <constant name="SiTrackerEndcapN_Layer5_ID" value="70"/> + + <comment> + =================== + (75-99 Reserved IDs + =================== + + Unused IDs: 75-99 + TBD + </comment> + + <comment> + ===================================== + (100-109) Electromagnetic Calorimeter + ===================================== + + ECal subsystem ID: 100 + Barrel subassembly ID: 101 + EndcapP subassembly ID: 102 + EndcapN subassembly ID: 103 + Crystal subassembly ID: 104 + + Unused IDs: 105-109 + + </comment> + <constant name="ECalSubAssembly_ID" value="100"/> + <constant name="ECalBarrel_ID" value="101"/> + <constant name="ECalEndcapP_ID" value="102"/> + <constant name="ECalEndcapN_ID" value="103"/> + <constant name="CrystalEndcap_ID" value="104"/> + + <comment> + ===================================== + (110-119Hadronic Calorimeter + ===================================== + + HCal subsystem ID: 110 + Barrel subassembly ID: 111 + EndcapP subassembly ID: 112 + EndcapN subassembly ID: 113 + + Unused IDs: 114-119 + </comment> + <constant name="HCalSubAssembly_ID" value="110"/> + <constant name="HCalBarrel_ID" value="111"/> + <constant name="HCalEndcapP_ID" value="112"/> + <constant name="HCalEndcapN_ID" value="113"/> + + <comment> + ===================================== + (120-129) (near) Forward reserved + ===================================== + + Forwardtracking ID: 120 + Forward RICH ID: 121 + + Unused IDs: 122-129 + </comment> + <constant name="ForwardTracking_ID" value="120"/> + <constant name="ForwardRICH_ID" value="121"/> + + <comment> + ===================================== + (130-139) Backward reserved + ===================================== + + TBD + + </comment> + + <comment> + ===================================== + (140-149) Central Magnet + ===================================== + + Solenoid ID: 140 + Solenoid support ID: 141 + Solenoid Yoke ID: 142 + + Unused IDs: 143-149 + + </comment> + <constant name="Solenoid_ID" value="140"/> + <constant name="SolenoidSupport_ID" value="141"/> + <constant name="SolenoidYoke_ID" value="142"/> + + <comment> + ===================================== + (150-169) Far Forward Detectors + ===================================== + + Forward Roman Pot ID: 150 + Zero Degree Cal. ID: 160 + + </comment> + <constant name="ForwardRomanPot_ID" value="150"/> + <constant name="ZDC_ID" value="160"/> + + <comment> + ===================================== + (170-189) Forward Beamline Magnets + ===================================== + </comment> + + <comment> + ===================================== + (190-199) Backward Beamline Magnets + ===================================== + </comment> + + <comment> + -------------------------- + Solenoid Magnet Parameters + -------------------------- + </comment> + <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="SolenoidBarrelCryostatThickness" value=" 1.0 * cm"/> + <constant name="SolenoidBarrelGapThickness" value=" 3.3 * cm"/> + <constant name="SolenoidBarrelAlConductorThickness" value="12.0 * cm"/> + <constant name="SolenoidBarrelQuenchbackThickness" value=" 1.5 * cm"/> + <constant name="SolenoidBarrelOuterGapThickness" value=" 5.6 * cm"/> + <constant name="SolenoidBarrelOuterCryostatThickness" value=" 1.2 * cm"/> + + <constant name="SolenoidEndPlateGapThickness" value=" 5.7 * cm"/> + <constant name="SolenoidEndPlateCryostatThickness" value=" 1.5 * cm"/> + + <constant name="SolenoidBarrel_rmin" value="Solenoid_rmin"/> + <constant name="SolenoidBarrelLenth" value="SolenoidLength"/> + <constant name="SolenoidBarrel_zmax" value="SolenoidBarrelLenth/2.0"/> + + <constant name="SolenoidCoilConductor_rmin" + value="SolenoidBarrel_rmin + SolenoidBarrelCryostatThickness + SolenoidBarrelGapThickness"/> + <constant name="SolenoidCoilConductor_rmax" + value="SolenoidCoilConductor_rmin + SolenoidBarrelAlConductorThickness + SolenoidBarrelQuenchbackThickness"/> + <constant name="SolenoidBarrel_rmax" + value="SolenoidCoilConductor_rmax + SolenoidBarrelOuterGapThickness + SolenoidBarrelOuterCryostatThickness"/> + + <constant name="SolenoidCoil_zmax" + value="SolenoidBarrel_zmax - SolenoidEndPlateCryostatThickness - SolenoidEndPlateGapThickness"/> + + <constant name="SolenoidalFieldRadius" + value="SolenoidCoilConductor_rmin + SolenoidBarrelAlConductorThickness / 2.0"/> + + <constant name="SolenoidCoilLength" value="SolenoidCoil_zmax*2.0"/> + + <constant name="SolenoidThickness" value="Solenoid_rmax - Solenoid_rmin"/> + + <constant name="SolenoidYokeEndcapP_rmin" value="800*mm"/> + <constant name="SolenoidYokeEndcapN_rmin" value="800*mm"/> + <constant name="SolenoidYokeEndcapThickness" value="0.2 * m"/> + <constant name="SolenoidYokeEndcap_zmin" value="SolenoidBarrel_zmax"/> + <constant name="SolenoidYokeEndcap_zmax" value="SolenoidYokeEndcap_zmin + SolenoidYokeEndcapThickness"/> + + <constant name="SolenoidYokeChamferAngle" value="0.2"/> + + <comment> + ============================ + Tracking Parameters + ============================ + </comment> + <constant name="tracker_region_rmax" value="Solenoid_rmax/2.0"/> + <constant name="tracker_region_zmax" value="SolenoidLength/2.0"/> + + <comment> + ------------------------- + Vertex Tracker Parameters + ------------------------- + </comment> + <constant name="VertexTrackerInnerRadius" value="30.0*mm"/> + <constant name="VertexTrackerOuterRadius" value="Solenoid_rmin/2.0"/> + <constant name="VertexTrackerOuterBarrelLength" value="300.0*mm"/> + + + <comment> + -------------------------- + Silicon Tracker Parameters + -------------------------- + </comment> + <constant name="SiliconTrackerInnerRadius" value="95.0*mm"/> + <constant name="SiliconTrackerInnerBarrelLength" value="400.0*mm"/> + <constant name="SiliconTrackerOuterRadius" value="Solenoid_rmax/2.0"/> + <constant name="SiliconTrackerOuterBarrelLength" value="SolenoidLength/2.0"/> + + <comment> + ------------ + Calorimeters + ------------ + </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="EcalBarrelLength" value="SiliconTrackerOuterBarrelLength+50.0*cm"/> + <constant name="EcalEndcap_zmin" value="EcalBarrelLength/2.0"/> + + <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)"/> + + <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="HcalEndcapP_rmin" value="250.0 * mm"/> + <constant name="HcalEndcapN_rmin" value="350.0 * mm"/> + + <comment> + ------------------------- + EM Calorimeter Parameters + ------------------------- + </comment> + <constant name="CaloSides" value="12"/> + + <comment>Material Thickness</comment> + <constant name="EcalSiliconThickness" value="9.00 * mm"/> + <constant name="EcalCopperThickness" value="0.05 * mm"/> + <constant name="EcalKaptonThickness" value="0.30 * mm"/> + <constant name="EcalAir1Thickness" value="0.33 * mm"/> + <constant name="EcalAir2Thickness" value="0.25 * mm"/> + <constant name="EcalThinTungstenThickness" value="2.50 * mm"/> + <constant name="EcalThickTungstenThickness" value="5.00 * mm"/> + + <comment> Layer Thickness </comment> + <constant name="EcalFirstLayerThickness" + value="EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/> + <constant name="EcalThinOneLayerThickness" + value="EcalThinTungstenThickness + EcalAir2Thickness + EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/> + <constant name="EcalThickOneLayerThickness" + 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))"/> + <constant name="EcalBarrelThinLayers" value="EcalBarrelLayers"/> + <constant name="EcalBarrelThickLayers" value="EcalBarrelLayers"/> + <comment> EM Barrel Thickness </comment> + <constant name="EcalBarrelThickness" + 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"/> + <comment> EM Endcap Thickness </comment> + <constant name="EcalEndcapThickness" + value="EcalFirstLayerThickness + (EcalEndcapThinLayers * EcalThinOneLayerThickness) + (EcalEndcapThickLayers * EcalThickOneLayerThickness)"/> + + <comment> + ------------------------------- + Hadronic Calorimeter Parameters + ------------------------------- + </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="HcalEndcap_zmin" value="HcalBarrelLength/2.0"/> + <constant name="HcalEndcapAvailThickness" value="(SolenoidYokeEndcap_zmin - 10.0 * mm) - HcalEndcap_zmin"/> + + <comment> Material Thickness </comment> + <constant name="HcalSteelThickness" value="1.89 * cm"/> + <constant name="HcalPyrexThickness" value="1.10 * mm"/> + <constant name="HcalRPCGasThickness" value="1.20 * mm"/> + <constant name="HcalG10Thickness" value="3.00 * mm"/> + <constant name="HcalAirThickness" value="1.60 * mm"/> + + <comment> Layer Thickness </comment> + <constant name="HcalOneLayerThickness" + value="HcalSteelThickness + (2 * HcalPyrexThickness) + HcalRPCGasThickness + HcalG10Thickness + HcalAirThickness"/> + + <comment> H Barrel Layers and Thickness </comment> + <constant name="HcalBarrelLayers" value="floor(HcalBarrelAvailThickness / HcalOneLayerThickness)"/> + <constant name="HcalBarrelThickness" value="HcalBarrelLayers * HcalOneLayerThickness"/> + + <comment> H Endcap Layers and Thickness </comment> + <constant name="HcalEndcapLayers" value="floor(HcalEndcapAvailThickness / HcalOneLayerThickness)"/> + <constant name="HcalEndcapThickness" value="HcalEndcapLayers * HcalOneLayerThickness"/> + + <comment> + ----------------------- + Gaseous RICH Parameters + ----------------------- + </comment> + <constant name="RICHZMin" value="SolenoidYokeEndcap_zmin + 1 * cm"/> + <constant name="RICHRMin" value="15 * cm"/> + <constant name="RICHDepth" value="1 * m"/> + + + <comment> + -------------------------- + 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> + -------------------------- + Forward ECal Parameters + -------------------------- + </comment> + + <comment> + -------------------------- + Forward HCal Parameters + -------------------------- + </comment> + + + + + </define> +