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

Resolve "Add services to tracker"

parent 598909e2
No related branches found
No related tags found
1 merge request!179Resolve "Add services to tracker"
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<lccdd> <lccdd>
<comment> <documentation>
--------------- ### Silicon Tracker
Silicon Tracker
--------------- #### Some references:
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
With some added info on ITS3 chip from To be used as standin until we get more detailed specs from the working group on the tracker.
https://indico.bnl.gov/event/10677/contributions/45591/attachments/33204/53254/20210318-IR2%40EIC-SVT.pdf - https://wiki.bnl.gov/athena/index.php/Tracking
To be used as standin until we get more detailed specs from the working group on the tracker.
Note: initial implementation with hard-coded values,
Note: initial implementation with hard-coded values, TODO: add parametrization
TODO: add parametrization
#### ITS3 sensors
----
Aug 04, 2021, Shujie Li ITS3 sensor thickness:
- 40um, pixel size: 10um (segmentation)
udpated stave and disck material budget for the baseline design. - total X0 0.55% per barrel layer:
see https://eicweb.phy.anl.gov/EIC/detectors/athena/-/issues/63 - 0.35 mm aluminum ~ 0.4% X0.
- 2 x carbonfiber (RL ~ 28) 0.12 mm (!!! material scan shows ~0.17mm, need to check later) to match Si (RL~9) of 0.04mm ~ 0.04%
ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
total X0 0.55% per barrel layer: total X0 0.24% per disk layer (4 sectors per disk):
0.35 mm aluminum ~ 0.4% X0. - 0.15 mm aluminum ~ 0.16% X0.
2 x carbonfiber (RL ~ 28) 0.12 mm (!!! material scan shows ~0.17mm, need to check later) to match Si (RL~9) of 0.04mm ~ 0.04% - 1 x carbonfiber (RL ~ 28) 0.12 mm to match Si (RL~9) of 0.04mm ~ 0.04%
total X0 0.24% per disk layer (4 sectors per disk): </documentation>
0.15 mm aluminum ~ 0.16% X0.
1 x carbonfiber (RL ~ 28) 0.12 mm to match Si (RL~9) of 0.04mm ~ 0.04%
</comment>
<define> <define>
<comment> <comment>
...@@ -64,15 +60,12 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation) ...@@ -64,15 +60,12 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
<constant name="TrackerEndcapInner_nLayers" value="1"/> <constant name="TrackerEndcapInner_nLayers" value="1"/>
<constant name="TrackerEndcapOuter_nLayers" value="3"/> <constant name="TrackerEndcapOuter_nLayers" value="3"/>
<constant name="TrackerEndcapLayer_dz" value="2*cm"/> <constant name="TrackerEndcapLayer_dz" value="2*cm"/>
<constant name="TrackerEndcapLayerModule_dz" value="2.5*mm"/> <constant name="TrackerEndcapModule_dz" value="2.5*mm"/>
<constant name="TrackerEndcapInner_zmin" value="49*cm"/> <constant name="TrackerEndcapInner_zmin" value="49*cm"/>
<!-- <constant name="TrackerEndcapInnerLayer_dz" value="TrackerEndcapLayer_dz"/> -->
<constant name="TrackerEndcapInner_zmax" value="TrackerEndcapInner_zmin+TrackerEndcapLayer_dz"/> <constant name="TrackerEndcapInner_zmax" value="TrackerEndcapInner_zmin+TrackerEndcapLayer_dz"/>
<constant name="TrackerEndcapInner_length" value="TrackerEndcapLayer_dz"/> <constant name="TrackerEndcapInner_length" value="TrackerEndcapLayer_dz"/>
<constant name="TrackerEndcapInnerLayer_thickness" value="min(5.0*cm,TrackerEndcapLayer_dz - 0.5*cm)"/> <constant name="TrackerEndcapInnerLayer_thickness" value="min(3.0*cm,TrackerEndcapLayer_dz - 0.5*cm)"/>
<comment> Note, the -1.0*cm is so the layers do not touch surfaces.
This is a limitation of ACTS geometry which will likely go away in the future.</comment>
<constant name="TrackerEndcapOuter_zmin1" value="73*cm"/> <constant name="TrackerEndcapOuter_zmin1" value="73*cm"/>
<constant name="TrackerEndcapOuter_zmin2" value="97*cm"/> <constant name="TrackerEndcapOuter_zmin2" value="97*cm"/>
...@@ -80,6 +73,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation) ...@@ -80,6 +73,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
<constant name="TrackerEndcapOuter_zmin" value="TrackerEndcapOuter_zmin1"/> <constant name="TrackerEndcapOuter_zmin" value="TrackerEndcapOuter_zmin1"/>
<constant name="TrackerEndcapOuter_zmax" value="TrackerEndcapOuter_zmin3 + TrackerEndcapLayer_dz"/> <constant name="TrackerEndcapOuter_zmax" value="TrackerEndcapOuter_zmin3 + TrackerEndcapLayer_dz"/>
<constant name="TrackerEndcapOuterLayer_thickness" value="min(5.0*cm,TrackerEndcapLayer_dz - 1.0*cm)"/> <constant name="TrackerEndcapOuterLayer_thickness" value="min(5.0*cm,TrackerEndcapLayer_dz - 1.0*cm)"/>
<comment> Note, the -1.0*cm is so the layers do not touch surfaces. <comment> Note, the -1.0*cm is so the layers do not touch surfaces.
This is a limitation of ACTS geometry which will likely go away in the future.</comment> This is a limitation of ACTS geometry which will likely go away in the future.</comment>
...@@ -101,8 +95,6 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation) ...@@ -101,8 +95,6 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
<constant name="TrackerEndcapOuterShell_zmin" value="TrackerEndcapOuter_rmax1 * TrackerEndcapInner_zmin/TrackerEndcapInner_rmax1+1*cm"/> <constant name="TrackerEndcapOuterShell_zmin" value="TrackerEndcapOuter_rmax1 * TrackerEndcapInner_zmin/TrackerEndcapInner_rmax1+1*cm"/>
<constant name="TrackerEndcapOuterShell_length" value="TrackerEndcapOuter_zmax- TrackerEndcapOuterShell_zmin"/> <constant name="TrackerEndcapOuterShell_length" value="TrackerEndcapOuter_zmax- TrackerEndcapOuterShell_zmin"/>
<constant name="TrackerEndcap_NModules" value="12"/> <constant name="TrackerEndcap_NModules" value="12"/>
<comment> nmodules = np.pi/np.arcsin(frame_width*np.cos(tilt_angle)/2.0/R) </comment> <comment> nmodules = np.pi/np.arcsin(frame_width*np.cos(tilt_angle)/2.0/R) </comment>
...@@ -138,9 +130,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation) ...@@ -138,9 +130,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
<comment> <comment>
----------------------------------- #### Inner Tracker Subassembly
Inner Tracker Subassembly (group 1)
-----------------------------------
</comment> </comment>
<detector <detector
...@@ -212,6 +202,12 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation) ...@@ -212,6 +202,12 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
readout="TrackerEndcapHits" readout="TrackerEndcapHits"
vis="AnlRed" vis="AnlRed"
reflect="false"> reflect="false">
<support material="CarbonFiber" name="sup_cylinder" vis="TrackerSupportVis">
<shape type="Cone"
rmin1="TrackerEndcapInner_rmax1-14.0*cm" rmax1="TrackerEndcapInner_rmax1-14.0*cm+0.2*mm"
rmin2="TrackerEndcapInner_rmax1" rmax2="TrackerEndcapInner_rmax1+0.2*mm" z="8*cm"/>
<position x="0*cm" y="0*cm" z="TrackerEndcapInner_zmin-10.0*cm"/>
</support>
<module name="Module1" vis="AnlProcess_Blue"> <module name="Module1" vis="AnlProcess_Blue">
<trd x1="TrackerEndcapInnerMod1_x1/2.0" x2="TrackerEndcapInnerMod1_x2/2.0" z="TrackerEndcapInnerMod1_y/2"/> <trd x1="TrackerEndcapInnerMod1_x1/2.0" x2="TrackerEndcapInnerMod1_x2/2.0" z="TrackerEndcapInnerMod1_y/2"/>
<module_component thickness="ITS3Thickness" material="Silicon" sensitive="true"/> <module_component thickness="ITS3Thickness" material="Silicon" sensitive="true"/>
...@@ -227,7 +223,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation) ...@@ -227,7 +223,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
<ring vis="AnlRed" <ring vis="AnlRed"
r="TrackerEndcapInner_rmin1+TrackerEndcapInnerMod1_y/2.0" r="TrackerEndcapInner_rmin1+TrackerEndcapInnerMod1_y/2.0"
zstart="0.0" zstart="0.0"
nmodules="TrackerEndcap_NModules" dz="TrackerEndcapLayerModule_dz" module="Module1" /> nmodules="TrackerEndcap_NModules" dz="TrackerEndcapModule_dz" module="Module1" />
</layer> </layer>
</detector> </detector>
...@@ -238,10 +234,16 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation) ...@@ -238,10 +234,16 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
readout="TrackerEndcapHits" readout="TrackerEndcapHits"
vis="AnlRed" vis="AnlRed"
reflect="true"> reflect="true">
<support material="CarbonFiber" name="sup_cylinder" vis="TrackerSupportVis">
<shape type="Cone"
rmin2="TrackerEndcapInner_rmax1-14.0*cm" rmax2="TrackerEndcapInner_rmax1-14.0*cm+0.2*mm"
rmin1="TrackerEndcapInner_rmax1-1.0*cm" rmax1="TrackerEndcapInner_rmax1-1.0*cm+0.2*mm" z="8*cm"/>
<position x="0*cm" y="0*cm" z="-1.0*(TrackerEndcapInner_zmin-10.0*cm)"/>
</support>
<module name="Module1" vis="AnlProcess_Blue"> <module name="Module1" vis="AnlProcess_Blue">
<trd x1="TrackerEndcapInnerMod1_x1/2.0" x2="TrackerEndcapInnerMod1_x2/2.0" z="TrackerEndcapInnerMod1_y/2"/> <trd x1="TrackerEndcapInnerMod1_x1/2.0" x2="TrackerEndcapInnerMod1_x2/2.0" z="TrackerEndcapInnerMod1_y/2"/>
<module_component thickness="ITS3Thickness" material="Silicon" sensitive="true"/> <module_component thickness="ITS3Thickness" material="Silicon" sensitive="true"/>
<module_component thickness="TrackerEndcapAluminum_thickness" material="Aluminum"/> <module_component thickness="TrackerEndcapAluminum_thickness" material="Aluminum"/>
<module_component thickness="TrackerCarbon_thickness" material="CarbonFiber"/> <module_component thickness="TrackerCarbon_thickness" material="CarbonFiber"/>
</module> </module>
<layer id="1"> <layer id="1">
...@@ -253,7 +255,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation) ...@@ -253,7 +255,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
<ring vis="AnlRed" <ring vis="AnlRed"
r="TrackerEndcapInner_rmin1+TrackerEndcapInnerMod1_y/2.0" r="TrackerEndcapInner_rmin1+TrackerEndcapInnerMod1_y/2.0"
zstart="0" zstart="0"
nmodules="TrackerEndcap_NModules" dz="TrackerEndcapLayerModule_dz" module="Module1" /> nmodules="TrackerEndcap_NModules" dz="TrackerEndcapModule_dz" module="Module1" />
</layer> </layer>
</detector> </detector>
...@@ -361,7 +363,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation) ...@@ -361,7 +363,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
<ring vis="AnlRed" <ring vis="AnlRed"
r="TrackerEndcapOuter_rmin1+TrackerEndcapOuterMod1_y/2.0" r="TrackerEndcapOuter_rmin1+TrackerEndcapOuterMod1_y/2.0"
zstart="0.0*mm" zstart="0.0*mm"
nmodules="TrackerEndcap_NModules" dz="TrackerEndcapLayerModule_dz" module="Module1" /> nmodules="TrackerEndcap_NModules" dz="TrackerEndcapModule_dz" module="Module1" />
</layer> </layer>
<layer id="2"> <layer id="2">
<envelope vis="AnlRed" <envelope vis="AnlRed"
...@@ -372,7 +374,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation) ...@@ -372,7 +374,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
<ring vis="AnlRed" <ring vis="AnlRed"
r="TrackerEndcapOuter_rmin2+TrackerEndcapOuterMod2_y/2.0" r="TrackerEndcapOuter_rmin2+TrackerEndcapOuterMod2_y/2.0"
zstart="0.0*mm" zstart="0.0*mm"
nmodules="TrackerEndcap_NModules" dz="TrackerEndcapLayerModule_dz" module="Module2" /> nmodules="TrackerEndcap_NModules" dz="TrackerEndcapModule_dz" module="Module2" />
</layer> </layer>
<layer id="3"> <layer id="3">
<envelope vis="AnlRed" <envelope vis="AnlRed"
...@@ -383,7 +385,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation) ...@@ -383,7 +385,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
<ring vis="AnlRed" <ring vis="AnlRed"
r="TrackerEndcapOuter_rmin3+TrackerEndcapOuterMod3_y/2.0" r="TrackerEndcapOuter_rmin3+TrackerEndcapOuterMod3_y/2.0"
zstart="0.0*mm" zstart="0.0*mm"
nmodules="TrackerEndcap_NModules" dz="TrackerEndcapLayerModule_dz" module="Module3" /> nmodules="TrackerEndcap_NModules" dz="TrackerEndcapModule_dz" module="Module3" />
</layer> </layer>
</detector> </detector>
...@@ -394,9 +396,13 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation) ...@@ -394,9 +396,13 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
readout="TrackerEndcapHits" readout="TrackerEndcapHits"
vis="AnlRed" vis="AnlRed"
reflect="true"> reflect="true">
<support vis="TrackerSupportVis" material="CarbonFiber" <support material="CarbonFiber" name="sup_cylinder" vis="TrackerSupportVis"
rmin="TrackerEndcapOuter_rmax3+1.0*mm" rmin="TrackerEndcapOuter_rmax3+1.0*mm"
thickness="2.0*mm" length="TrackerEndcapOuterShell_length" zstart="TrackerEndcapOuterShell_zmin" /> thickness="2.0*mm"
length="TrackerEndcapOuterShell_length"
zstart="TrackerEndcapOuterShell_zmin"/>
<module name="Module1" vis="AnlProcess_Blue"> <module name="Module1" vis="AnlProcess_Blue">
<trd x1="TrackerEndcapOuterMod1_x1/2.0" x2="TrackerEndcapOuterMod1_x2/2.0" z="TrackerEndcapOuterMod1_y/2"/> <trd x1="TrackerEndcapOuterMod1_x1/2.0" x2="TrackerEndcapOuterMod1_x2/2.0" z="TrackerEndcapOuterMod1_y/2"/>
<module_component thickness="ITS3Thickness" material="Silicon" sensitive="true"/> <module_component thickness="ITS3Thickness" material="Silicon" sensitive="true"/>
...@@ -424,7 +430,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation) ...@@ -424,7 +430,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
<ring vis="AnlRed" <ring vis="AnlRed"
r="TrackerEndcapOuter_rmin1+TrackerEndcapOuterMod1_y/2.0" r="TrackerEndcapOuter_rmin1+TrackerEndcapOuterMod1_y/2.0"
zstart="0.0*mm" zstart="0.0*mm"
nmodules="TrackerEndcap_NModules" dz="TrackerEndcapLayerModule_dz" module="Module1" /> nmodules="TrackerEndcap_NModules" dz="TrackerEndcapModule_dz" module="Module1" />
</layer> </layer>
<layer id="2"> <layer id="2">
<envelope vis="AnlRed" <envelope vis="AnlRed"
...@@ -435,7 +441,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation) ...@@ -435,7 +441,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
<ring vis="AnlRed" <ring vis="AnlRed"
r="TrackerEndcapOuter_rmin2+TrackerEndcapOuterMod2_y/2.0" r="TrackerEndcapOuter_rmin2+TrackerEndcapOuterMod2_y/2.0"
zstart="0.0*mm" zstart="0.0*mm"
nmodules="TrackerEndcap_NModules" dz="TrackerEndcapLayerModule_dz" module="Module2" /> nmodules="TrackerEndcap_NModules" dz="TrackerEndcapModule_dz" module="Module2" />
</layer> </layer>
<layer id="3"> <layer id="3">
<envelope vis="AnlRed" <envelope vis="AnlRed"
...@@ -446,7 +452,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation) ...@@ -446,7 +452,7 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
<ring vis="AnlRed" <ring vis="AnlRed"
r="TrackerEndcapOuter_rmin3+TrackerEndcapOuterMod3_y/2.0" r="TrackerEndcapOuter_rmin3+TrackerEndcapOuterMod3_y/2.0"
zstart="0.0*mm" zstart="0.0*mm"
nmodules="TrackerEndcap_NModules" dz="TrackerEndcapLayerModule_dz" module="Module3" /> nmodules="TrackerEndcap_NModules" dz="TrackerEndcapModule_dz" module="Module3" />
</layer> </layer>
</detector> </detector>
...@@ -466,4 +472,4 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation) ...@@ -466,4 +472,4 @@ ITS3 sensor thickness: 40um, pixel size: 10um (segmentation)
</readouts> </readouts>
</lccdd> </lccdd>
\ No newline at end of file
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#include "DD4hep/DetFactoryHelper.h" #include "DD4hep/DetFactoryHelper.h"
#include "Acts/Plugins/DD4hep/ActsExtension.hpp" #include "Acts/Plugins/DD4hep/ActsExtension.hpp"
#include "Acts/Definitions/Units.hpp" #include "Acts/Definitions/Units.hpp"
#include "XML/Utilities.h"
using namespace std; using namespace std;
using namespace dd4hep; using namespace dd4hep;
...@@ -46,16 +47,36 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s ...@@ -46,16 +47,36 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
double support_length = getAttrOrDefault(x_support, _U(length), 2.0 * mm); double support_length = getAttrOrDefault(x_support, _U(length), 2.0 * mm);
double support_rmin = getAttrOrDefault(x_support, _U(rmin), 2.0 * mm); double support_rmin = getAttrOrDefault(x_support, _U(rmin), 2.0 * mm);
double support_zstart = getAttrOrDefault(x_support, _U(zstart), 2.0 * mm); double support_zstart = getAttrOrDefault(x_support, _U(zstart), 2.0 * mm);
std::string support_name = getAttrOrDefault<std::string>(x_support, _Unicode(name), "support_tube");
std::string support_vis = getAttrOrDefault<std::string>(x_support, _Unicode(vis), "AnlRed"); std::string support_vis = getAttrOrDefault<std::string>(x_support, _Unicode(vis), "AnlRed");
Material support_mat = description.material(x_support.materialStr()); xml_dim_t pos (x_support.child(_U(position), false));
Tube support_tub(support_rmin, support_rmin + support_thickness, support_length / 2); xml_dim_t rot (x_support.child(_U(rotation), false));
Volume support_vol("support_tube", support_tub, support_mat); // Create the layer envelope volume. Solid support_solid;
support_vol.setVisAttributes(description.visAttributes(support_vis)); if(x_support.hasChild("shape")){
if(reflect) { xml_comp_t shape(x_support.child(_U(shape)));
pv = assembly.placeVolume(support_vol, Position(0, 0, -1.0 * (support_zstart + support_length / 2))); string shape_type = shape.typeStr();
support_solid = xml::createShape(description, shape_type, shape);
} else { } else {
pv = assembly.placeVolume(support_vol, Position(0, 0, support_zstart + support_length / 2)); support_solid = Tube(support_rmin, support_rmin + support_thickness, support_length / 2);
}
Transform3D tr = Transform3D(Rotation3D(),Position(0,0,(reflect?-1.0:1.0) * (support_zstart + support_length / 2)));
if ( pos.ptr() && rot.ptr() ) {
Rotation3D rot3D(RotationZYX(rot.z(0),rot.y(0),rot.x(0)));
Position pos3D(pos.x(0),pos.y(0),pos.z(0));
tr = Transform3D(rot3D, pos3D);
}
else if ( pos.ptr() ) {
tr = Transform3D(Rotation3D(),Position(pos.x(0),pos.y(0),pos.z(0)));
} }
else if ( rot.ptr() ) {
Rotation3D rot3D(RotationZYX(rot.z(0),rot.y(0),rot.x(0)));
tr = Transform3D(rot3D,Position());
}
Material support_mat = description.material(x_support.materialStr());
Volume support_vol(support_name, support_solid, support_mat);
support_vol.setVisAttributes(description.visAttributes(support_vis));
pv = assembly.placeVolume(support_vol, tr);
// pv = assembly.placeVolume(support_vol, Position(0, 0, support_zstart + support_length / 2));
} }
for (xml_coll_t mi(x_det, _U(module)); mi; ++mi, ++m_id) { for (xml_coll_t mi(x_det, _U(module)); mi; ++mi, ++m_id) {
......
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