Skip to content
Snippets Groups Projects
Commit 1f13c244 authored by Whitney Armstrong's avatar Whitney Armstrong
Browse files

Resolve "Fix silicon detector construction"

parent 9b3aae4d
No related branches found
No related tags found
No related merge requests found
......@@ -5,14 +5,14 @@
Silicon Tracker
---------------
https://github.com/reynier0611/g4lblvtx/blob/master/macros/auxiliary_studies/simplified_geometry/Fun4All_G4_simplified_v2.C
Some references:
With some added info on ITS3 chip from
https://indico.bnl.gov/event/10677/contributions/45591/attachments/33204/53254/20210318-IR2%40EIC-SVT.pdf
To be used as standin until we get more detailed specs from the working group on the tracker.
Note that most details are replaced with
Note: initial implementation with hard-coded values,
TODO: add parametrization
TODO: add parametrization
</comment>
<define>
......@@ -27,42 +27,53 @@
Layer_rOffset is used to add inside space so the _rmin value is the nominal sensor radius.
</comment>
<constant name="TrackerBarrelLayer_rOffset" value="0.5*cm"/>
<constant name="TrackerBarrel1_rmin1" value="21.0*cm"/>
<constant name="TrackerBarrel1_rmin2" value="TrackerBarrel1_rmin1 + TrackerBarrelSpaceFrame_width"/>
<constant name="TrackerBarrel1_length1" value="54.0*cm"/>
<constant name="TrackerBarrel1_length2" value="60.0*cm"/>
<constant name="TrackerBarrelInner_rmin1" value="21.0*cm"/>
<constant name="TrackerBarrelInner_rmin2" value="TrackerBarrelInner_rmin1 + TrackerBarrelSpaceFrame_width"/>
<constant name="TrackerBarrelInner_length1" value="54.0*cm"/>
<constant name="TrackerBarrelInner_length2" value="60.0*cm"/>
<constant name="TrackerBarrel2_rmin1" value="39.3*cm"/>
<constant name="TrackerBarrel2_rmin2" value="TrackerBarrel2_rmin1 + TrackerBarrelSpaceFrame_width"/>
<constant name="TrackerBarrel2_length1" value="105.0*cm"/>
<constant name="TrackerBarrel2_length2" value="114.0*cm"/>
<constant name="TrackerBarrelOuter_rmin1" value="39.3*cm"/>
<constant name="TrackerBarrelOuter_rmin2" value="TrackerBarrelOuter_rmin1 + TrackerBarrelSpaceFrame_width"/>
<constant name="TrackerBarrelOuter_length1" value="105.0*cm"/>
<constant name="TrackerBarrelOuter_length2" value="114.0*cm"/>
<constant name="TrackerBarrelGroup1_thickness" value="TrackerBarrel1_rmin2 - TrackerBarrel1_rmin1"/>
<constant name="TrackerBarrelGroup2_thickness" value="TrackerBarrel2_rmin2 - TrackerBarrel2_rmin1"/>
<constant name="TrackerBarrelGroup1_length" value="TrackerBarrel1_length2"/>
<constant name="TrackerBarrelGroup2_length" value="TrackerBarrel2_length2"/>
<constant name="TrackerBarrelInner_thickness" value="TrackerBarrelInner_rmin2 - TrackerBarrelInner_rmin1"/>
<constant name="TrackerBarrelOuter_thickness" value="TrackerBarrelOuter_rmin2 - TrackerBarrelOuter_rmin1"/>
<constant name="TrackerBarrelInner_length" value="TrackerBarrelInner_length2"/>
<constant name="TrackerBarrelOuter_length" value="TrackerBarrelOuter_length2"/>
<comment>
Here we are assuming the two endcaps (P and N) are symmetric.
</comment>
<constant name="TrackerEndcap_thickness" value="0.25/100*9.37*cm"/>
<constant name="TrackerEndcapService_thickness" value="TrackerEndcap_thickness-TrackerSensor_thickness"/>
<constant name="TrackerEndcap_nLayers" value="3"/>
<constant name="TrackerEndcapInner_zmin" value="25.0*cm"/>
<constant name="TrackerEndcapInner_zmax" value="49.0*cm"/>
<constant name="TrackerEndcapOuter_zmin" value="73.0*cm"/>
<constant name="TrackerEndcapOuter_zmax" value="121.0*cm"/>
<constant name="TrackerEndcapOuter_deltaz" value="(TrackerEndcapOuter_zmax-TrackerEndcapOuter_zmin)/(TrackerEndcap_nLayers-1)" />
<constant name="TrackerEndcapLayer_length" value="5.0*cm"/>
<constant name="TrackerEndcapInner_nLayers" value="2"/>
<constant name="TrackerEndcapOuter_nLayers" value="3"/>
<constant name="TrackerEndcapInner_zmin" value="TrackerBarrelInner_length/2.0"/>
<constant name="TrackerEndcapInner_zmax" value="TrackerEndcapInner_zmin + 2.0*TrackerEndcapLayer_length "/>
<constant name="TrackerEndcapInner_length" value="TrackerEndcapInner_zmax- TrackerEndcapInner_zmin"/>
<constant name="TrackerEndcapInnerLayer_dz" value="TrackerEndcapInner_length/TrackerEndcapInner_nLayers"/>
<constant name="TrackerEndcapInner1_rmin" value="Beampipe_rmax+1.0*cm"/>
<constant name="TrackerEndcapInner2_rmin" value="Beampipe_rmax+1.0*cm"/>
<constant name="TrackerEndcapOuter_zmin" value="TrackerBarrelOuter_length/2.0"/>
<constant name="TrackerEndcapOuter_zmax" value="CentralTracking_length/2.0"/>
<constant name="TrackerEndcapOuter_length" value="TrackerEndcapOuter_zmax- TrackerEndcapOuter_zmin"/>
<constant name="TrackerEndcapOuterLayer_dz" value="TrackerEndcapOuter_length/TrackerEndcapOuter_nLayers"/>
<constant name="TrackerEndcapInner_rmin1" value="Beampipe_rmax+1.0*cm"/>
<constant name="TrackerEndcapInner_rmin2" value="Beampipe_rmax+1.0*cm"/>
<constant name="TrackerEndcapOuter_rmin" value="3.18*cm"/>
<constant name="TrackerEndcapInner1_rmax" value="18.5*cm"/>
<constant name="TrackerEndcapInner2_rmax" value="18.5*cm + TrackerBarrelGroup1_thickness"/>
<constant name="TrackerEndcapInner_rmax1" value="18.5*cm"/>
<constant name="TrackerEndcapInner_rmax2" value="18.5*cm + TrackerBarrelInner_thickness"/>
<constant name="TrackerEndcapOuter_rmax" value="43.23*cm"/>
<comment> TODO: These should be computed </comment>
<constant name="TrackerBarrelGroup1_NModules" value="30"/>
<constant name="TrackerBarrelGroup2_NModules" value="56"/>
<constant name="TrackerBarrelInner_NModules" value="30"/>
<constant name="TrackerBarrelOuter_NModules" value="56"/>
</define>
......@@ -71,190 +82,219 @@
<detectors>
<comment>
-----------------------------------
Inner Tracker Subassembly (group 1)
-----------------------------------
Note: Endcap trackers are using SimpleDiskTracker construction.
This should be changed to something more detailed in the future.
</comment>
<detector id="TrackerSubAssemblyLayer1_ID"
name="TrackerSubAssemblyLayer1"
type="DD4hep_SubdetectorAssembly"
vis="TrackerSubAssemblyVis">
<!--
<composite name="VertexTrackerEndcapN"/>
<composite name="VertexTrackerEndcapP"/>
-->
<composite name="TrackerBarrel_Inner1"/>
<composite name="TrackerEndcapN_Layer1"/>
<composite name="TrackerEndcapP_Layer1"/>
<composite name="TrackerBarrel_Layer1"/>
</detector>
<comment>
Inner Tracker Barrel (group 1)
</comment>
<detector
id="TrackerBarrel_Layer1_ID"
name="TrackerBarrel_Inner1"
name="TrackerBarrel_Layer1"
type="athena_TrackerBarrel"
readout="TrackerBarrelHits"
insideTrackingVolume="true">
<dimensions
rmin="TrackerBarrel1_rmin1-TrackerBarrelLayer_rOffset"
rmax="TrackerBarrel1_rmin2-TrackerBarrelLayer_rOffset + TrackerBarrelGroup1_thickness"
length="TrackerBarrelGroup1_length"/>
rmin="TrackerBarrelInner_rmin1-TrackerBarrelLayer_rOffset"
rmax="TrackerBarrelInner_rmin2-TrackerBarrelLayer_rOffset + TrackerBarrelInner_thickness"
length="TrackerBarrelInner_length"/>
<comment>
Tracker Barrel Modules
</comment>
<module name="TrackerBarrelGroup1_Module1" vis="PurpleVis">
<module name="TrackerBarrelInner_Module1" vis="PurpleVis">
<frame
width="TrackerBarrelSpaceFrame_width"
height="TrackerBarrelSpaceFrame_height"
length="TrackerBarrel1_length1"
length="TrackerBarrelInner_length1"
thickness="0.1*mm" material="CarbonFiber_25percent" vis="BlueGreenVis" />
<module_component name="silicon"
width="TrackerBarrelSpaceFrame_width"
length="TrackerBarrel1_length1-0.1*mm" thickness="0.05*mm" material="Silicon" sensitive="true">
length="TrackerBarrelInner_length1-0.1*mm" thickness="0.05*mm" material="Silicon" sensitive="true">
<position z="-0.025*mm" y="0*mm"/>
</module_component>
</module>
<comment>
Tracker Barrel Inner Layers
</comment>
<layer module="TrackerBarrelGroup1_Module1" id="1" vis="VertexVis">
<layer module="TrackerBarrelInner_Module1" id="1" vis="VertexVis">
<barrel_envelope
inner_r="TrackerBarrel1_rmin1-TrackerBarrelLayer_rOffset"
outer_r="TrackerBarrel1_rmin1-TrackerBarrelLayer_rOffset + TrackerBarrelGroup1_thickness"
z_length="TrackerBarrel1_length1"/>
<rphi_layout phi_tilt="10.0*degree" nphi="TrackerBarrelGroup1_NModules" phi0="0.0" rc="TrackerBarrel1_rmin1" dr="0.0 * mm"/>
inner_r="TrackerBarrelInner_rmin1-TrackerBarrelLayer_rOffset"
outer_r="TrackerBarrelInner_rmin1-TrackerBarrelLayer_rOffset + TrackerBarrelInner_thickness"
z_length="TrackerBarrelInner_length1"/>
<rphi_layout phi_tilt="10.0*degree" nphi="TrackerBarrelInner_NModules" phi0="0.0" rc="TrackerBarrelInner_rmin1" dr="0.0 * mm"/>
<z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/>
</layer>
<layer module="TrackerBarrelGroup1_Module1" id="2" vis="VertexVis">
<layer module="TrackerBarrelInner_Module1" id="2" vis="VertexVis">
<barrel_envelope
inner_r="TrackerBarrel1_rmin2-TrackerBarrelLayer_rOffset"
outer_r="TrackerBarrel1_rmin2-TrackerBarrelLayer_rOffset + TrackerBarrelGroup1_thickness"
z_length="TrackerBarrel1_length2"/>
<rphi_layout phi_tilt="10.0*degree" nphi="TrackerBarrelGroup1_NModules" phi0="0.0" rc="TrackerBarrel1_rmin2" dr="0.0 * mm"/>
inner_r="TrackerBarrelInner_rmin2-TrackerBarrelLayer_rOffset"
outer_r="TrackerBarrelInner_rmin2-TrackerBarrelLayer_rOffset + TrackerBarrelInner_thickness"
z_length="TrackerBarrelInner_length2"/>
<rphi_layout phi_tilt="10.0*degree" nphi="TrackerBarrelInner_NModules" phi0="0.0" rc="TrackerBarrelInner_rmin2" dr="0.0 * mm"/>
<z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/>
</layer>
</detector>
<detector id="TrackerEndcapP_Layer1_ID"
name="TrackerEndcapP_Layer1"
type="athena_SimpleDiskTracker"
insideTrackingVolume="true"
reflect="false" vis="AnlRed">
<position x="0" y="0" z="0"/>
<layer id="1" vis="AnlOrange"
inner_z="TrackerEndcapInner_zmin + 0*TrackerEndcapInnerLayer_dz"
inner_r="TrackerEndcapInner_rmin1"
outer_r="TrackerEndcapInner_rmax1">
<slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" />
</layer>
<layer id="2" vis="AnlOrange"
inner_z="TrackerEndcapInner_zmin + 1*TrackerEndcapInnerLayer_dz"
inner_r="TrackerEndcapInner_rmin2"
outer_r="TrackerEndcapInner_rmax2">
<slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" />
</layer>
</detector>
<detector id="TrackerEndcapN_Layer1_ID"
name="TrackerEndcapN_Layer1"
type="athena_SimpleDiskTracker"
insideTrackingVolume="true"
reflect="true" vis="AnlRed">
<position x="0" y="0" z="0"/>
<layer id="1" vis="AnlOrange"
inner_z="TrackerEndcapInner_zmin + 0*TrackerEndcapInnerLayer_dz"
inner_r="TrackerEndcapInner_rmin1"
outer_r="TrackerEndcapInner_rmax1">
<slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" />
</layer>
<layer id="2" vis="AnlOrange"
inner_z="TrackerEndcapInner_zmin + 1*TrackerEndcapInnerLayer_dz"
inner_r="TrackerEndcapInner_rmin2"
outer_r="TrackerEndcapInner_rmax2">
<slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" />
</layer>
</detector>
<comment>
Outer tracker barrel (Group2)
-----------------------------------
Outer Tracker Subassembly (group 2)
-----------------------------------
</comment>
<detector id="TrackerSubAssemblyLayer2_ID"
name="TrackerSubAssemblyLayer2"
type="DD4hep_SubdetectorAssembly"
vis="TrackerSubAssemblyVis">
<composite name="TrackerEndcapN_Layer2"/>
<composite name="TrackerEndcapP_Layer2"/>
<composite name="TrackerBarrel_Layer2"/>
</detector>
<detector
id="TrackerBarrel_Layer2_ID"
name="TrackerBarrel_Outer2"
name="TrackerBarrel_Layer2"
type="athena_TrackerBarrel"
readout="TrackerBarrelHits"
insideTrackingVolume="true">
<dimensions
rmin="TrackerBarrel2_rmin1-TrackerBarrelLayer_rOffset"
rmax="TrackerBarrel2_rmin2-TrackerBarrelLayer_rOffset + TrackerBarrelGroup2_thickness"
length="TrackerBarrelGroup2_length"/>
rmin="TrackerBarrelOuter_rmin1-TrackerBarrelLayer_rOffset"
rmax="TrackerBarrelOuter_rmin2-TrackerBarrelLayer_rOffset + TrackerBarrelOuter_thickness"
length="TrackerBarrelOuter_length"/>
<comment>
Tracker Barrel Modules
</comment>
<module name="TrackerBarrelGroup2_Module1" vis="PurpleVis">
<module name="TrackerBarrelOuter_Module1" vis="PurpleVis">
<frame
width="TrackerBarrelSpaceFrame_width"
height="TrackerBarrelSpaceFrame_height"
length="TrackerBarrel2_length1"
length="TrackerBarrelOuter_length1"
thickness="0.1*mm" material="CarbonFiber_25percent" vis="BlueGreenVis" />
<module_component name="silicon"
width="TrackerBarrelSpaceFrame_width"
length="TrackerBarrel2_length1-0.1*mm"
length="TrackerBarrelOuter_length1-0.1*mm"
thickness="0.05*mm" material="Silicon" sensitive="true">
<position z="-0.025*mm" y="0*mm"/>
</module_component>
</module>
<comment>
Tracker Barrel Inner Layers
</comment>
<layer module="TrackerBarrelGroup2_Module1" id="1" vis="VertexVis">
<layer module="TrackerBarrelOuter_Module1" id="1" vis="VertexVis">
<barrel_envelope
inner_r="TrackerBarrel2_rmin1-TrackerBarrelLayer_rOffset"
outer_r="TrackerBarrel2_rmin1-TrackerBarrelLayer_rOffset + TrackerBarrelGroup2_thickness"
z_length="TrackerBarrelGroup2_length"/>
<rphi_layout phi_tilt="10.0*degree" nphi="TrackerBarrelGroup2_NModules" phi0="0.0" rc="TrackerBarrel2_rmin1" dr="0.0 * mm"/>
inner_r="TrackerBarrelOuter_rmin1-TrackerBarrelLayer_rOffset"
outer_r="TrackerBarrelOuter_rmin1-TrackerBarrelLayer_rOffset + TrackerBarrelOuter_thickness"
z_length="TrackerBarrelOuter_length"/>
<rphi_layout phi_tilt="10.0*degree" nphi="TrackerBarrelOuter_NModules" phi0="0.0" rc="TrackerBarrelOuter_rmin1" dr="0.0 * mm"/>
<z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/>
</layer>
<layer module="TrackerBarrelGroup2_Module1" id="2" vis="VertexVis">
<layer module="TrackerBarrelOuter_Module1" id="2" vis="VertexVis">
<barrel_envelope
inner_r="TrackerBarrel2_rmin2-TrackerBarrelLayer_rOffset"
outer_r="TrackerBarrel2_rmin2-TrackerBarrelLayer_rOffset + TrackerBarrelGroup2_thickness"
z_length="TrackerBarrelGroup2_length"/>
<rphi_layout phi_tilt="10.0*degree" nphi="TrackerBarrelGroup2_NModules" phi0="0.0" rc="TrackerBarrel2_rmin2" dr="0.0 * mm"/>
inner_r="TrackerBarrelOuter_rmin2-TrackerBarrelLayer_rOffset"
outer_r="TrackerBarrelOuter_rmin2-TrackerBarrelLayer_rOffset + TrackerBarrelOuter_thickness"
z_length="TrackerBarrelOuter_length"/>
<rphi_layout phi_tilt="10.0*degree" nphi="TrackerBarrelOuter_NModules" phi0="0.0" rc="TrackerBarrelOuter_rmin2" dr="0.0 * mm"/>
<z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/>
</layer>
</detector>
<!--
<detector id="VertexEndcapP_ID" name="VertexTrackerEndcapP" type="ref_DiskTracker"
insideTrackingVolume="true" reflect="false" vis="AnlRed">
<detector id="TrackerEndcapP_Layer2_ID"
name="TrackerEndcapP_Layer2"
type="athena_SimpleDiskTracker"
insideTrackingVolume="true"
reflect="false" vis="AnlRed">
<position x="0" y="0" z="0"/>
<layer id="1" vis="AnlOrange"
inner_z="VertexTrackerEndcapP_zmin + 0*VertexTrackerEndcap_delta"
inner_r="VertexTrackerEndcapP_rmin"
outer_r="VertexTrackerEndcapP_rmax">
<slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
inner_z="TrackerEndcapOuter_zmin + 0*TrackerEndcapOuterLayer_dz"
inner_r="TrackerEndcapOuter_rmin"
outer_r="TrackerEndcapOuter_rmax">
<slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" />
</layer>
<layer id="2" vis="AnlOrange"
inner_z="VertexTrackerEndcapP_zmin + 1*VertexTrackerEndcap_delta"
inner_r="VertexTrackerEndcapP_rmin"
outer_r="VertexTrackerEndcapP_rmax">
<slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
inner_z="TrackerEndcapOuter_zmin + 1*TrackerEndcapOuterLayer_dz"
inner_r="TrackerEndcapOuter_rmin"
outer_r="TrackerEndcapOuter_rmax">
<slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" />
</layer>
<layer id="3" vis="AnlOrange"
inner_z="VertexTrackerEndcapP_zmin + 2*VertexTrackerEndcap_delta"
inner_r="VertexTrackerEndcapP_rmin"
outer_r="VertexTrackerEndcapP_rmax">
<slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
</layer>
<layer id="4" vis="AnlOrange"
inner_z="VertexTrackerEndcapP_zmin + 3*VertexTrackerEndcap_delta"
inner_r="VertexTrackerEndcapP_rmin"
outer_r="VertexTrackerEndcapP_rmax">
<slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
</layer>
<layer id="5" vis="AnlOrange"
inner_z="VertexTrackerEndcapP_zmin + 4*VertexTrackerEndcap_delta"
inner_r="VertexTrackerEndcapP_rmin"
outer_r="VertexTrackerEndcapP_rmax">
<slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
inner_z="TrackerEndcapOuter_zmin + 2*TrackerEndcapOuterLayer_dz"
inner_r="TrackerEndcapOuter_rmin"
outer_r="TrackerEndcapOuter_rmax">
<slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" />
</layer>
</detector>
<detector id="VertexEndcapN_ID" name="VertexTrackerEndcapN" type="ref_DiskTracker"
insideTrackingVolume="true" reflect="true" vis="AnlRed">
<detector id="TrackerEndcapN_Layer2_ID"
name="TrackerEndcapN_Layer2"
type="athena_SimpleDiskTracker"
insideTrackingVolume="true"
reflect="true" vis="AnlRed">
<position x="0" y="0" z="0"/>
<layer id="1" vis="AnlOrange"
inner_z="VertexTrackerEndcapN_zmin + 0*VertexTrackerEndcap_delta"
inner_r="VertexTrackerEndcapN_rmin"
outer_r="VertexTrackerEndcapN_rmax">
<slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
inner_z="TrackerEndcapOuter_zmin + 0*TrackerEndcapOuterLayer_dz"
inner_r="TrackerEndcapOuter_rmin"
outer_r="TrackerEndcapOuter_rmax">
<slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" />
</layer>
<layer id="2" vis="AnlOrange"
inner_z="VertexTrackerEndcapN_zmin + 1*VertexTrackerEndcap_delta"
inner_r="VertexTrackerEndcapN_rmin"
outer_r="VertexTrackerEndcapN_rmax">
<slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
inner_z="TrackerEndcapOuter_zmin + 1*TrackerEndcapOuterLayer_dz"
inner_r="TrackerEndcapOuter_rmin"
outer_r="TrackerEndcapOuter_rmax">
<slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" />
</layer>
<layer id="3" vis="AnlOrange"
inner_z="VertexTrackerEndcapN_zmin + 2*VertexTrackerEndcap_delta"
inner_r="VertexTrackerEndcapN_rmin"
outer_r="VertexTrackerEndcapN_rmax">
<slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
</layer>
<layer id="4" vis="AnlOrange"
inner_z="VertexTrackerEndcapN_zmin + 3*VertexTrackerEndcap_delta"
inner_r="VertexTrackerEndcapN_rmin"
outer_r="VertexTrackerEndcapN_rmax">
<slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
</layer>
<layer id="5" vis="AnlOrange"
inner_z="VertexTrackerEndcapN_zmin + 4*VertexTrackerEndcap_delta"
inner_r="VertexTrackerEndcapN_rmin"
outer_r="VertexTrackerEndcapN_rmax">
<slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
inner_z="TrackerEndcapOuter_zmin + 2*TrackerEndcapOuterLayer_dz"
inner_r="TrackerEndcapOuter_rmin"
outer_r="TrackerEndcapOuter_rmax">
<slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" />
</layer>
</detector>
-->
</detectors>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment