Skip to content
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

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
2 changes: 1 addition & 1 deletion compact/tracking/definitions_craterlake.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<comment> Main parameters for the vertex tracker </comment>
<constant name="VertexBarrel_length" value="270.0*mm"/>
<constant name="VertexBarrel_rmin" value="3.6*cm"/>
<constant name="VertexBarrel_rmax" value="12.6*cm"/>
<constant name="VertexBarrel_rmax" value="13.0*cm"/>

<comment> Main parameters for the SiBarrel layer geometry </comment>
<constant name="SiBarrel1_rmin" value="27.0*cm"/>
Expand Down
239 changes: 239 additions & 0 deletions compact/tracking/vertex_barrel_curved.xml
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 -->
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update date.


<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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It will be confusing to have VertexBarrelSeg2_r refer to L1 under this off-by-one numbering scheme. Please use VertexBarrelSegL1_r etc to avoid this confusion.

- 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" />
Copy link
Contributor

Choose a reason for hiding this comment

The 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)" />
Copy link
Contributor

Choose a reason for hiding this comment

The 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)" />
Copy link
Contributor

Choose a reason for hiding this comment

The 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">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mismatch of name and numbering.

Suggested change
<layer module="Module1" id="1" vis="VertexLayerVis">
<layer module="ModuleL0" id="0" vis="VertexLayerVis">

<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"
Copy link
Contributor

Choose a reason for hiding this comment

The 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>
Copy link
Contributor

Choose a reason for hiding this comment

The 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.

Copy link
Contributor

Choose a reason for hiding this comment

The 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.

Copy link
Contributor

Choose a reason for hiding this comment

The 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>
2 changes: 1 addition & 1 deletion configurations/craterlake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ features:
beampipe:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
Copy link
Contributor

Choose a reason for hiding this comment

The 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 vertex_barrel is just going to be the best possible implementation of the vertex barrel. Any suffixes should be exceptions, not what we want people to use by default. I would suggest that you rename the previous vertex_barrel to something like vertex_barrel_flat_staves or something.

silicon_barrel:
mpgd_barrel:
support_service_craterlake:
Expand Down
2 changes: 1 addition & 1 deletion configurations/craterlake_10x100.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ features:
beampipe:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
silicon_barrel:
mpgd_barrel:
support_service_craterlake:
Expand Down
2 changes: 1 addition & 1 deletion configurations/craterlake_10x275.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ features:
beampipe:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
silicon_barrel:
mpgd_barrel:
support_service_craterlake:
Expand Down
2 changes: 1 addition & 1 deletion configurations/craterlake_18x110_Au.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ features:
beampipe:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
silicon_barrel:
mpgd_barrel:
support_service_craterlake:
Expand Down
2 changes: 1 addition & 1 deletion configurations/craterlake_18x275.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ features:
beampipe:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
silicon_barrel:
mpgd_barrel:
support_service_craterlake:
Expand Down
2 changes: 1 addition & 1 deletion configurations/craterlake_5x100.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ features:
beampipe:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
silicon_barrel:
mpgd_barrel:
support_service_craterlake:
Expand Down
2 changes: 1 addition & 1 deletion configurations/craterlake_5x41.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ features:
beampipe:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
silicon_barrel:
mpgd_barrel:
support_service_craterlake:
Expand Down
2 changes: 1 addition & 1 deletion configurations/craterlake_bic_6layers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ features:
beampipe:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
silicon_barrel:
mpgd_barrel:
support_service_craterlake:
Expand Down
2 changes: 1 addition & 1 deletion configurations/craterlake_material_map.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ features:
beampipe:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
silicon_barrel:
mpgd_barrel:
support_service_craterlake:
Expand Down
2 changes: 1 addition & 1 deletion configurations/craterlake_no_bhcal.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ features:
beampipe:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
silicon_barrel:
mpgd_barrel:
support_service_craterlake:
Expand Down
2 changes: 1 addition & 1 deletion configurations/craterlake_no_zdc_lyso.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ features:
beampipe:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
silicon_barrel:
mpgd_barrel:
support_service_craterlake:
Expand Down
2 changes: 1 addition & 1 deletion configurations/craterlake_tracking_only.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ features:
marco:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
silicon_barrel:
mpgd_barrel:
support_service_craterlake:
Expand Down
2 changes: 1 addition & 1 deletion configurations/forward_detectors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ features:
marco:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
silicon_barrel:
mpgd_barrel:
silicon_disks:
Expand Down
2 changes: 1 addition & 1 deletion configurations/forward_detectors_with_inserts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ features:
marco:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
silicon_barrel:
mpgd_barrel:
silicon_disks:
Expand Down
2 changes: 1 addition & 1 deletion configurations/full.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ features:
beampipe:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
silicon_barrel:
mpgd_barrel:
support_service_craterlake:
Expand Down
2 changes: 1 addition & 1 deletion configurations/inner_detector.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ features:
marco:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
silicon_barrel:
mpgd_barrel:
support_service_craterlake:
Expand Down
2 changes: 1 addition & 1 deletion configurations/vertex_only.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ features:
marco:
tracking:
definitions_craterlake:
vertex_barrel:
vertex_barrel_curved:
Loading
Loading