Newer
Older
<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="Pi" value="3.14159265359"/>
<constant name="mil" value="0.0254*mm"/>
### 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 be constructed 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.
</documentation>
### Allocated IDs
#### (1-9) Reserved IDs
#### (10-24) Interaction region beamline
- Beampipe ID : 10
- Unused IDs: 11-24
<constant name="BeamPipe_ID" value="10"/>
<constant name="BeamPipeB0_ID" value="11"/>
- 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
<constant name="VertexBarrel_ID" value="25"/>
<constant name="VertexBarrelSubAssembly_ID" value="26"/>
<constant name="VertexEndcapSubAssembly_ID" value="27"/>
<constant name="VertexEndcapP_ID" value="30"/>
<constant name="VertexEndcapN_ID" value="40"/>
<documentation>
- Unused IDs: 31-49
</documentation>
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
<constant name="TrackerBarrelSubAssembly_Inner_ID" value="50"/>
<constant name="TrackerEndcapSubAssembly_Inner_ID" value="51"/>
<constant name="TrackerBarrelSubAssembly_Outer_ID" value="52"/>
<constant name="TrackerEndcapSubAssembly_Outer_ID" value="53"/>
<constant name="OuterTrackingSubAssembly_ID" value="54"/>
<!--constant name="TrackerSubAssemblyLayer4_ID" value="54"/-->
<!--constant name="TrackerSubAssemblyLayer5_ID" value="55"/-->
<constant name="TrackerBarrel_Inner_ID" value="56"/>
<constant name="TrackerEndcapP_Inner_ID" value="57"/>
<constant name="TrackerEndcapN_Inner_ID" value="58"/>
<constant name="TrackerBarrel_Outer_ID" value="59"/>
<constant name="TrackerEndcapP_Outer_ID" value="60"/>
<constant name="TrackerEndcapN_Outer_ID" value="61"/>
<constant name="TrackerBarrel_Layer3_ID" value="62"/>
<constant name="TrackerEndcapP_Layer3_ID" value="63"/>
<constant name="TrackerEndcapN_Layer3_ID" value="64"/>
<constant name="TrackerBarrel_Layer4_ID" value="65"/>
<constant name="TrackerEndcapP_Layer4_ID" value="66"/>
<constant name="TrackerEndcapN_Layer4_ID" value="67"/>
<constant name="TrackerBarrel_Layer5_ID" value="68"/>
<constant name="TrackerEndcapP_Layer5_ID" value="69"/>
<constant name="TrackerEndcapN_Layer5_ID" value="70"/>
- MMTrackerBarrel ID: 75
- RWellTrackerBarrel ID: 76
- Unused IDs: 77-89
<constant name="MMTrackerBarrel_ID" value="75"/>
<constant name="RWellTrackerBarrel_ID" value="76"/>
</documentation>
<documentation>
- DIRC subsystem ID: 90
- Barrel TRD subsystem ID: 91
- Barrel TOF subsystem ID: 92
- Unused IDs: 93-99
<constant name="BarrelDIRC_ID" value="90"/>
<constant name="BarrelTRD_ID" value="91"/>
<constant name="BarrelTOF_ID" value="92"/>
<constant name="TOFSubAssembly_ID" value="93"/>
#### (100-109) Electromagnetic Calorimeter
ECal subsystem ID: 100
Barrel subassembly ID: 101
EndcapP subassembly ID: 102
EndcapN subassembly ID: 103
Crystal subassembly ID: 104
<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"/>
- HCal subsystem ID: 110
- Barrel subassembly ID: 111
- EndcapP subassembly ID: 112
- EndcapN subassembly ID: 113
- Unused IDs: 115-119
</documentation>
<constant name="HCalSubAssembly_ID" value="110"/>
<constant name="HCalBarrel_ID" value="111"/>
<constant name="HCalEndcapP_ID" value="112"/>
<constant name="HCalEndcapN_ID" value="113"/>
#### (120-129) (near) Forward reserved
- Forwardtracking ID: 120
- Forward RICH ID: 121
- Unused IDs: 124-129
</documentation>
<constant name="ForwardTracking_ID" value="120"/>
<constant name="ForwardRICH_ID" value="121"/>
<!--constant name="UNUSED" value="122"/-->
<constant name="ForwardTRD_ID" value="123"/>
<constant name="GEMTrackerEndcapP_ID" value="124"/>
<constant name="GEMTrackerEndcapN_ID" value="125"/>
<constant name="ForwardTOF_ID" value="126"/>
<constant name="BackwardTOF_ID" value="127"/>
- Modular RICH ID: 130
- Electron Endcap GEM tracking ID: 131
- Unused IDs: 132-139
<!--constant name="UNUSED" value="131"/-->
- Solenoid ID: 140
- Solenoid support ID: 141
- Solenoid Yoke ID: 142
<constant name="Solenoid_ID" value="140"/>
<constant name="SolenoidSupport_ID" value="141"/>
<constant name="SolenoidYoke_ID" value="142"/>
- Forward Roman Pot ID: 150
- Forward B0 Tracker ID: 151
- Zero Degree Cal. Ecal ID: 160
- Zero Degree Cal. Hcal ID: 161
TODO: A lot of the repeated ID's below should be pushed into a single detector
<constant name="B0Tracker_Station_1_ID" value="150"/>
<constant name="B0Tracker_Station_2_ID" value="151"/>
<constant name="B0Tracker_Station_3_ID" value="152"/>
<constant name="B0Tracker_Station_4_ID" value="153"/>
<constant name="B0Preshower_Station_1_ID" value="154"/>
<constant name="ForwardRomanPot_Station_1_ID" value="155"/>
<constant name="ForwardRomanPot_Station_2_ID" value="156"/>
<constant name="ForwardOffMTracker_station_1_ID" value="159"/>
<constant name="ForwardOffMTracker_station_2_ID" value="160"/>
<constant name="ForwardOffMTracker_station_3_ID" value="161"/>
<constant name="ForwardOffMTracker_station_4_ID" value="162"/>
<comment> TODO naming consistency </comment>
<constant name="ffi_ZDC_ECAL_ID" value="163"/>
<constant name="ffi_ZDC_HCAL_ID" value="164"/>
#### (170-189) Forward Beamline Magnets
#### (190-199) Backward Beamline Magnets
<documentation>
## Detector Definition Parameters
## Constant naming convention
SubSystemNameFurtherDescriptor_quantity
Examples:
- TrackerBarrelInside_length
- EcalEndcapP_rmin
- MRichFresnelLens_thickness
### Naming Barrel and Endcaps
- **Barrel**
- **EndcapP**
- Postive Endcap (+z direction)
- This is the ion beam side
- **EndcapN**
- Negative Endcap (-z direction)
- This is the electron beam side
## Parameter nomenclature
- "rmin", "rmax", "thickness" all refer to the radial direction.
- "zmin", "zmax", "length", "offset" all refer to the z direction.
- Positive and Negative are "EndcapP" and "EndcapN", respectively.
- All values are positive (except offsets, which are positive in the hadron direction, i.e. towards EndCapP).
When refering to a negative endcap z position, the values are
also positive then negated when required. (Many endcap constructions are mirrored,
hence a postive value.)
- We will try to keep the subsystem component name first and the parameter after an "_" (eg, EcalBarrel_length").
When changing here, also change the include file in athena.xml.
<comment>Solenoid option</comment>
<constant name="Solenoid_length" value="3840.0*mm"/>
<constant name="Solenoid_rmin" value="1600.0*mm"/>
<constant name="Solenoid_thickness" value="640*mm"/>
<constant name="Solenoid_offset" value="10*mm"/>
<comment>Helmholtz option</comment>
<constant name="Solenoid_length" value="3840.0*mm"/>
<constant name="Solenoid_rmin" value="1655.0*mm"/> <comment> Larger inner bore radius </comment>
<constant name="Solenoid_thickness" value="640*mm"/>
<constant name="Solenoid_offset" value="10*mm"/>
</comment>
<constant name="Solenoid_rmax" value="Solenoid_rmin + Solenoid_thickness"/>
<constant name="SolenoidForward_zmax" value="Solenoid_length/2. + Solenoid_offset"/>
<constant name="SolenoidBackward_zmax" value="Solenoid_length/2. - Solenoid_offset"/>
<constant name="SolenoidBarrel_rmin" value="Solenoid_rmin"/>
<constant name="SolenoidBarrel_length" value="Solenoid_length"/>
<constant name="VertexTrackerBarrel_rmin" value="Beampipe_rmax + 1.0*mm"/>
<constant name="VertexTrackerBarrel_rmax" value="200.0*mm"/>
<constant name="VertexTrackerBarrel_length" value="300.0*mm"/>
<constant name="VertexTrackerBarrel_zmax" value="VertexTrackerBarrel_length/2.0"/>
<constant name="VertexTrackerEndcapP_rmax" value="VertexTrackerBarrel_rmax"/>
<constant name="VertexTrackerEndcapN_rmax" value="VertexTrackerBarrel_rmax"/>
<constant name="VertexTrackerEndcapP_rmin" value="Beampipe_rmax + 5.0*mm"/>
<constant name="VertexTrackerEndcapN_rmin" value="Beampipe_rmax + 5.0*mm"/>
<constant name="VertexTrackerEndcapP_zmax" value="300.0*mm"/>
<constant name="VertexTrackerEndcapN_zmax" value="300.0*mm"/>
<constant name="VertexTrackingRegion_length" value="VertexTrackerEndcapP_zmax + VertexTrackerEndcapN_zmax "/>
<constant name="VertexTrackingRegion_zmax" value="VertexTrackerEndcapP_zmax"/>
<constant name="VertexTrackingRegion_rmax" value="VertexTrackerBarrel_rmax"/>
TrackerBarrel_rmax: also the rmin for the barrel PID system (DIRC)
<constant name="TrackerBarrel_rmin" value="VertexTrackingRegion_rmax"/>
<constant name="TrackerBarrel_rmax" value="95.*cm"/>
<constant name="TrackerBarrel_thickness" value="TrackerBarrel_rmax-TrackerBarrel_rmin"/>
<constant name="TrackerBarrel_length" value="VertexTrackingRegion_length + 1150.0*mm"/>
<constant name="TrackerBarrel_zmax" value="TrackerBarrel_length/2.0"/>
<constant name="TrackerBarrelInside_length" value="VertexTrackingRegion_length"/>
<constant name="TrackerBarrelInside_zmax" value="TrackerBarrelInside_length/2.0"/>
<constant name="TrackerEndcapP_length" value="925.0*mm"/>
<constant name="TrackerEndcapN_length" value="495.0*mm"/>
<documentation level="0">
### PID Detector Region Parameters
</documentation>
<constant name="ForwardPID_length" value="145.0*cm"/>
<constant name="ForwardPID_rmin1" value="Beampipe_rmax + 90*mm"/>
<constant name="ForwardPID_rmin2" value="18.0*cm"/>
<constant name="BackwardPID_length" value="40.0*cm"/>
<constant name="BackwardPID_rmax" value="TrackerBarrel_rmax"/>
<comment> Note: PID has space for DIRC, ExtraSpace has room for other detectors past the PID</comment>
<constant name="BarrelPIDThickness" value="10.0 * cm"/>
<constant name="BarrelExtraSpaceThickness" value="7.0 * cm"/>
<documentation level="0">
### Extra tracking region behind the endcap PID system
</documentation>
<constant name="ForwardTracking_length" value="5.0*cm"/>
<constant name="BackwardTracking_length" value="8.0*cm"/>
## Service gaps
Service gaps in FW direction (before endcapP ECAL) and BW direction (before endcapN HCAL)
<constant name="ForwardServiceGap_length" value="10.0*cm"/>
<constant name="BackwardServiceGap_length" value="10.0*cm"/>
<documentation>
## Central tracking and PID detector boundaries
</documentation>
<constant name="CentralTracking_rmax" value="TrackerBarrel_rmax"/>
<constant name="CentralTracking_length" value="TrackerBarrel_length + TrackerEndcapP_length + TrackerEndcapN_length"/>
<constant name="BackwardPID_zmin" value="TrackerBarrel_length/2. + TrackerEndcapN_length"/>
<constant name="ForwardPID_zmin" value="TrackerBarrel_length/2. + TrackerEndcapP_length"/>
<constant name="BackwardTracking_zmin" value="BackwardPID_zmin + BackwardPID_length"/>
<constant name="ForwardTracking_zmin" value="ForwardPID_zmin + ForwardPID_length"/>
<comment> These are used by ddsim </comment>
<constant name="tracker_region_rmax" value="CentralTracking_rmax"/>
<constant name="tracker_region_zmax" value="max(BackwardPID_zmin, ForwardPID_zmin)"/>
<comment> Total length of the endcap detectors in front of the calorimeter</comment>
<constant name="BackwardInnerEndcap_length" value="BackwardPID_length + BackwardTracking_length"/>
<constant name="ForwardInnerEndcap_length" value="ForwardPID_length + ForwardTracking_length"/>
<documentation level="3">
## Calorimeter Parameters
<constant name="CaloSides" value="12"/>
<constant name="EcalEndcapP_zmin" value="ForwardPID_zmin + ForwardInnerEndcap_length + ForwardServiceGap_length"/>
<constant name="EcalEndcapP_length" value="40*cm"/>
<constant name="EcalEndcapP_rmin" value="200.0*mm"/>
<constant name="EcalEndcapP_rmax" value="Solenoid_rmax "/>
<constant name="EcalEndcapN_zmin" value="max(BackwardPID_zmin + BackwardInnerEndcap_length, SolenoidBackward_zmax)"/>
<constant name="EcalEndcapN_length" value="60*cm"/>
<constant name="EcalEndcapN_rmin" value="max((EcalEndcapN_zmin + EcalEndcapN_length) * tan(abs(CrossingAngle)) + 12.5 * mm, 5*cm)"/>
<constant name="EcalEndcapN_rmax" value="TrackerBarrel_rmax"/>
<constant name="EcalBarrelEnvelope_thickness" value="40.0*cm"/>
<constant name="EcalBarrel_rmin" value="CentralTracking_rmax + BarrelPIDThickness + BarrelExtraSpaceThickness"/>
<constant name="EcalBarrelForward_length" value="-21*cm"/>
<constant name="EcalBarrelForward_zmax" value="ForwardPID_zmin + EcalBarrelForward_length"/>
<constant name="EcalBarrelBackward_zmax" value="BackwardPID_zmin + BackwardInnerEndcap_length + EcalEndcapN_length"/>
<constant name="EcalBarrel_length" value="EcalBarrelForward_zmax + EcalBarrelBackward_zmax"/>
<constant name="EcalBarrel_offset" value="(EcalBarrelForward_zmax - EcalBarrelBackward_zmax)/2.0"/>
<documentation level="3">
## Special DIRC parameters (depend on the ECAL setup)
</documentation>
<constant name="DIRCReadout_length" value="30*cm"/>
<constant name="DIRCForward_length" value="0*cm"/>
<constant name="DIRCForward_zmax" value="ForwardPID_zmin + DIRCForward_length"/>
<constant name="DIRCBackward_zmax" value="BackwardPID_zmin + BackwardInnerEndcap_length + EcalEndcapN_length + DIRCReadout_length"/>
<constant name="DIRC_length" value="DIRCForward_zmax + DIRCBackward_zmax"/>
<constant name="DIRC_offset" value="(DIRCForward_zmax - DIRCBackward_zmax)/2"/>
<constant name="DIRC_rmin" value="TrackerBarrel_rmax"/>
<constant name="DIRC_rmax" value="DIRC_rmin + BarrelPIDThickness"/>
<constant name="HcalEndcapP_zmin" value="max(EcalEndcapP_zmin + EcalEndcapP_length, Solenoid_length / 2.0 + Solenoid_offset) "/>
<constant name="HcalEndcapP_length" value="120.0*cm"/>
<comment> HcalEndcapP needs to clear the expanding beampipe with 2 * crossing angle + its radius of BeampipeOD / 2</comment>
<constant name="HcalEndcapP_rmin" value="max((HcalEndcapP_zmin + HcalEndcapP_length) * tan(2.0 * abs(CrossingAngle)) + BeampipeOD / 2.0, 15 * cm)"/>
<constant name="HcalEndcapN_zmin" value="DIRCBackward_zmax + BackwardServiceGap_length"/>
<constant name="HcalEndcapN_length" value="105.0*cm"/>
<comment> HcalEndcapN needs to clear the straight beampipe with 1 * crossing angle + its radius of 22.25 mm </comment>
<constant name="HcalEndcapN_rmin" value="max((HcalEndcapN_zmin + HcalEndcapN_length) * tan(abs(CrossingAngle)) + 22.25 * mm, 11 * cm)"/>
<constant name="HcalBarrel_thickness" value="100.0*cm "/>
<constant name="HcalBarrel_rmin" value="Solenoid_rmax"/>
<constant name="HcalBarrel_rmax" value="HcalBarrel_rmin + HcalBarrel_thickness"/>
<constant name="HcalBarrel_length" value="HcalEndcapP_zmin + HcalEndcapN_zmin "/>