-
Notifications
You must be signed in to change notification settings - Fork 45
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement curved RSU structure for the three layers of vertex barrel trackers #803
base: main
Are you sure you want to change the base?
Changes from all commits
7b115d1
839e9f1
b30007d
70fe21d
f127bbd
6e3ca57
bfb8b56
5e60a76
2f9873e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,239 @@ | ||||||
<!-- SPDX-License-Identifier: LGPL-3.0-or-later --> | ||||||
<!-- Copyright (C) 2022 Sylvester Joosten, Whitney Armstrong, Shujie Li --> | ||||||
|
||||||
<lccdd> | ||||||
<define> | ||||||
<comment> | ||||||
Main parameters | ||||||
</comment> | ||||||
|
||||||
<constant name="SiVertexSensor_thickness" value="40*um" /> | ||||||
<constant name="RSU_width" value="19.564*mm" /> | ||||||
<constant name="RSU_length" value="21.666*mm" /> | ||||||
<constant name="Section_width" value="9.197*mm"/> | ||||||
<constant name="Section_length" value="10.773*mm"/> | ||||||
|
||||||
<comment> | ||||||
1 RSU = 2x6 tiles with inactive areas == 2x2 sections | ||||||
1 section (module) = 3-tiles along z | ||||||
1 "stave" = 1 row of 12 RSU | ||||||
</comment> | ||||||
<constant name="VertexBarrelMod_length" value="RSU_length/2" /> | ||||||
<constant name="VertexBarrelLayer_nz" value="12*2" /> | ||||||
<comment> | ||||||
# of staves in R: 12, 16, 40 RSUs = 24, 32, 80 sections | ||||||
</comment> | ||||||
<constant name="VertexBarrelStave_count1" value="12*2" /> | ||||||
<constant name="VertexBarrelStave_count2" value="16*2" /> | ||||||
<constant name="VertexBarrelStave_count3" value="40*2" /> | ||||||
|
||||||
<constant name="VertexBarrelStave1_width" value="RSU_width/2" /> | ||||||
<constant name="VertexBarrelStave2_width" value="RSU_width/2" /> | ||||||
<constant name="VertexBarrelStave3_width" value="RSU_width/2" /> | ||||||
|
||||||
<constant name="VertexBarrelMod1_rmin" value="VertexBarrelStave_count1*VertexBarrelStave1_width/2/Pi" /> | ||||||
<constant name="VertexBarrelMod2_rmin" value="VertexBarrelStave_count2*VertexBarrelStave2_width/2/Pi" /> | ||||||
<constant name="VertexBarrelMod3_rmin" value="VertexBarrelStave_count3*VertexBarrelStave3_width/2/Pi" /> | ||||||
|
||||||
<documentation> | ||||||
for the segmentation. Assume sensors are placed at the inner most surface for each layer | ||||||
</documentation> | ||||||
<constant name="VertexBarrelSeg1_r" value="VertexBarrelMod1_rmin+SiVertexSensor_thickness/2.0" /> | ||||||
<constant name="VertexBarrelSeg2_r" value="VertexBarrelMod2_rmin+SiVertexSensor_thickness/2.0" /> | ||||||
<constant name="VertexBarrelSeg3_r" value="VertexBarrelMod3_rmin+SiVertexSensor_thickness/2.0" /> | ||||||
|
||||||
<documentation> | ||||||
- Currently there are 3 sensor layers: Layer 1,2,3 = L0, L1, L2. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It will be confusing to have |
||||||
- assume they are of the same length and aligned. | ||||||
</documentation> | ||||||
<constant name="VertexBarrelEnvelope_length" value="VertexTrackingRegion_length"/> | ||||||
<constant name="VertexBarrelLayer_length" value="VertexBarrel_length + 1*um" /> | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Avoid magical length additions. I do not think this is needed and arguably has performance implications we don't want (it forces an extra step of 1 um that is physically unnecessary) |
||||||
<constant name="VertexBarrelLayer_zoff" value="0" /> | ||||||
<constant name="VertexBarrelLayer_zstart" value="-VertexBarrelLayer_length/2+VertexBarrelLayer_zoff" /> | ||||||
<constant name="VertexBarrelLayer_z0" | ||||||
value=" VertexBarrelLayer_zstart + VertexBarrelMod_length/2 " /> | ||||||
<comment> | ||||||
ensure the modules within the z stave with some margin. | ||||||
-- not sure where this is used | ||||||
</comment> | ||||||
<constant name="VertexZCheck" value="sqrt(VertexBarrelLayer_length - VertexBarrelLayer_nz*VertexBarrelMod_length - .1*cm)" /> | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is unused. |
||||||
|
||||||
<constant name="VertexBarrelLayer_thickness" value="0.2*cm" /> | ||||||
<constant name="VertexBarrelLayer1_rmin" value="VertexBarrelMod1_rmin" /> | ||||||
<constant name="VertexBarrelLayer1_rmax" value="VertexBarrelLayer1_rmin + VertexBarrelLayer_thickness" /> | ||||||
<constant name="VertexBarrelLayer2_rmin" value="VertexBarrelMod2_rmin" /> | ||||||
<constant name="VertexBarrelLayer2_rmax" value="VertexBarrelLayer2_rmin + VertexBarrelLayer_thickness" /> | ||||||
<constant name="VertexBarrelLayer3_rmin" value="VertexBarrelMod3_rmin" /> | ||||||
<constant name="VertexBarrelLayer3_rmax" value="VertexBarrelLayer3_rmin + VertexBarrelLayer_thickness" /> | ||||||
|
||||||
<comment> ensure we are within the vertex envelope with some margin. </comment> | ||||||
<constant name="VertexCheck" value="sqrt(VertexBarrel_rmax - VertexBarrelLayer3_rmax - .1*cm)" /> | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is unused. |
||||||
</define> | ||||||
|
||||||
<detectors> | ||||||
<documentation level="5"> | ||||||
### Actual detectors | ||||||
</documentation> | ||||||
<detector | ||||||
id="VertexBarrel_0_ID" | ||||||
name="VertexBarrel" | ||||||
type="epic_CylinderSVTBarrel" | ||||||
readout="VertexBarrelHits" | ||||||
insideTrackingVolume="true"> | ||||||
<type_flags type="DetType_TRACKER + DetType_BARREL" /> | ||||||
<comment> | ||||||
- Vertex Barrel Modules. | ||||||
- For RSU (1 module = 1 upper/lower section of three tiles): | ||||||
--Use [mod_name]_upper and [mod_name]_lower here, and [mod_name] in corresponding layer | ||||||
to allow the geo plugin find both modules. | ||||||
-- also need to specify type="upper" or "lower" in components. | ||||||
- for other modules and components: | ||||||
no need to specify upper and lower anywhere. | ||||||
- one RSU ("|" = backbone. Length alone z.): | ||||||
| ------readout-------- | -------readout-------- | ||||||
| tilex3 | tilex3 | ||||||
| ------biasing-------- | -------biasing-------- | ||||||
| ------biasing-------- | -------biasing-------- | ||||||
| tilex3 | tilex3 | ||||||
| ------readout-------- | -------readout-------- | ||||||
|
||||||
</comment> | ||||||
<module name="Module1_upper" rmin="VertexBarrelMod1_rmin" width="VertexBarrelStave1_width" | ||||||
length="VertexBarrelMod_length"> | ||||||
<module_component name="RSU" type="upper" | ||||||
material="Silicon" | ||||||
sensitive="true" | ||||||
thickness="SiVertexSensor_thickness" | ||||||
width="Section_width" | ||||||
length="Section_length" | ||||||
vis="VertexLayerVis" /> | ||||||
</module> | ||||||
<module name="Module1_lower" rmin="VertexBarrelMod1_rmin" width="VertexBarrelStave1_width" | ||||||
length="VertexBarrelMod_length"> | ||||||
<module_component name="RSU" type="lower" | ||||||
material="Silicon" | ||||||
sensitive="true" | ||||||
thickness="SiVertexSensor_thickness" | ||||||
width="Section_width" | ||||||
length="Section_length" | ||||||
vis="VertexLayerVis" /> | ||||||
</module> | ||||||
|
||||||
<module name="Module2_upper" rmin="VertexBarrelMod2_rmin" width="VertexBarrelStave2_width" | ||||||
length="VertexBarrelMod_length"> | ||||||
<module_component name="RSU" type="upper" | ||||||
material="Silicon" | ||||||
sensitive="true" | ||||||
thickness="SiVertexSensor_thickness" | ||||||
width="Section_width" | ||||||
length="Section_length" | ||||||
vis="VertexLayerVis" /> | ||||||
</module> | ||||||
<module name="Module2_lower" rmin="VertexBarrelMod2_rmin" width="VertexBarrelStave2_width" | ||||||
length="VertexBarrelMod_length"> | ||||||
<module_component name="RSU" type="lower" | ||||||
material="Silicon" | ||||||
sensitive="true" | ||||||
thickness="SiVertexSensor_thickness" | ||||||
width="Section_width" | ||||||
length="Section_length" | ||||||
vis="VertexLayerVis" /> | ||||||
</module> | ||||||
|
||||||
<module name="Module3_upper" rmin="VertexBarrelMod3_rmin" width="VertexBarrelStave3_width" | ||||||
length="VertexBarrelMod_length"> | ||||||
<module_component name="RSU" type="upper" | ||||||
material="Silicon" | ||||||
sensitive="true" | ||||||
thickness="SiVertexSensor_thickness" | ||||||
width="Section_width" | ||||||
length="Section_length" | ||||||
vis="VertexLayerVis" /> | ||||||
</module> | ||||||
<module name="Module3_lower" rmin="VertexBarrelMod3_rmin" width="VertexBarrelStave3_width" | ||||||
length="VertexBarrelMod_length"> | ||||||
<module_component name="RSU" type="lower" | ||||||
material="Silicon" | ||||||
sensitive="true" | ||||||
thickness="SiVertexSensor_thickness" | ||||||
width="Section_width" | ||||||
length="Section_length" | ||||||
vis="VertexLayerVis" /> | ||||||
</module> | ||||||
|
||||||
<comment> Layers composed of many arrayed modules </comment> | ||||||
<comment> L0 </comment> | ||||||
<layer module="Module1" id="1" vis="VertexLayerVis"> | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Mismatch of name and numbering.
Suggested change
|
||||||
<barrel_envelope | ||||||
inner_r="VertexBarrelLayer1_rmin" | ||||||
outer_r="VertexBarrelLayer1_rmax" | ||||||
z_length="VertexBarrelLayer_length" /> | ||||||
<layer_material surface="inner" binning="binPhi,binZ" bins0="VertexBarrelStave_count1" | ||||||
bins1="100" /> | ||||||
<layer_material surface="outer" binning="binPhi,binZ" bins0="VertexBarrelStave_count1" | ||||||
bins1="100" /> | ||||||
<comment> | ||||||
phi0 : Starting phi of first module. | ||||||
nphi : Number of modules in phi. | ||||||
z0 : Z position of first module's center. | ||||||
nz : Number of modules to place in z. | ||||||
</comment> | ||||||
<rphi_layout nphi="VertexBarrelStave_count1" phi0="0.0" dr="0.0 * mm" /> | ||||||
<z_layout z0="VertexBarrelLayer_z0" nz="VertexBarrelLayer_nz" /> | ||||||
</layer> | ||||||
|
||||||
<comment> L1 </comment> | ||||||
<layer module="Module2" id="2" vis="VertexLayerVis"> | ||||||
<barrel_envelope | ||||||
inner_r="VertexBarrelLayer2_rmin" | ||||||
outer_r="VertexBarrelLayer2_rmax" | ||||||
z_length="VertexBarrelLayer_length" /> | ||||||
<layer_material surface="inner" binning="binPhi,binZ" bins0="VertexBarrelStave_count2" | ||||||
bins1="100" /> | ||||||
<layer_material surface="outer" binning="binPhi,binZ" bins0="VertexBarrelStave_count2" | ||||||
bins1="100" /> | ||||||
<rphi_layout nphi="VertexBarrelStave_count2" phi0="0.0" dr="0.0 * mm" /> | ||||||
<z_layout z0="VertexBarrelLayer_z0" nz="VertexBarrelLayer_nz" /> | ||||||
</layer> | ||||||
|
||||||
<comment> L2 </comment> | ||||||
<layer module="Module3" id="4" vis="VertexLayerVis"> | ||||||
<barrel_envelope | ||||||
inner_r="VertexBarrelLayer3_rmin" | ||||||
outer_r="VertexBarrelLayer3_rmax" | ||||||
z_length="VertexBarrelLayer_length" /> | ||||||
<layer_material surface="inner" binning="binPhi,binZ" bins0="VertexBarrelStave_count3" | ||||||
bins1="100" /> | ||||||
<layer_material surface="outer" binning="binPhi,binZ" bins0="VertexBarrelStave_count3" | ||||||
bins1="100" /> | ||||||
<rphi_layout nphi="VertexBarrelStave_count3" phi0="0.0" dr="0.0 * mm" /> | ||||||
<z_layout z0="VertexBarrelLayer_z0" nz="VertexBarrelLayer_nz" /> | ||||||
</layer> | ||||||
</detector> | ||||||
</detectors> | ||||||
|
||||||
<plugins> | ||||||
<plugin name="DD4hep_ParametersPlugin"> | ||||||
<argument value="VertexBarrel" /> | ||||||
<argument value="layer_pattern: str=VertexBarrel_layer\d" /> | ||||||
</plugin> | ||||||
</plugins> | ||||||
|
||||||
<readouts> | ||||||
<readout name="VertexBarrelHits"> | ||||||
<segmentation type="MultiSegmentation" key="layer"> | ||||||
<segmentation name="L0" type="CylindricalGridPhiZ" key_value="1" | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Again, a mismatch between L0 and key_value 1. Just use key_value 0 for L0, etc. This will avoid mistakes. |
||||||
grid_size_phi="0.02*mm/VertexBarrelSeg1_r" grid_size_z="0.02*mm" | ||||||
radius="VertexBarrelSeg1_r" /> | ||||||
<segmentation name="L1" type="CylindricalGridPhiZ" key_value="2" | ||||||
grid_size_phi="0.02*mm/VertexBarrelSeg2_r" grid_size_z="0.02*mm" | ||||||
radius="VertexBarrelSeg2_r" /> | ||||||
<segmentation name="L2" type="CylindricalGridPhiZ" key_value="4" | ||||||
grid_size_phi="0.02*mm/VertexBarrelSeg3_r" grid_size_z="0.02*mm" | ||||||
radius="VertexBarrelSeg3_r" /> | ||||||
</segmentation> | ||||||
<id>system:8,layer:4,module:12,sensor:3,phi:30:-18,z:-16</id> | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does phi,z not fit in 32 bits? Based on my quick calculation, phi is still within 16 bits for L2. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Also, you're allocating 4 bits for layers, which allows for 16 layers. You only use 3 layers, so 3 bits would be sufficient. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Also, your bit fields don't add up cleanly to 64 due to sensor being 3 bits wide. |
||||||
</readout> | ||||||
</readouts> | ||||||
|
||||||
</lccdd> |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,7 +4,7 @@ features: | |
beampipe: | ||
tracking: | ||
definitions_craterlake: | ||
vertex_barrel: | ||
vertex_barrel_curved: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The default name should be the best implementation. We should want people to be able to rely on the fact that |
||
silicon_barrel: | ||
mpgd_barrel: | ||
support_service_craterlake: | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,4 +3,4 @@ features: | |
marco: | ||
tracking: | ||
definitions_craterlake: | ||
vertex_barrel: | ||
vertex_barrel_curved: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Update date.