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

Update hcal prototype in reduced LDMX #1515

Open
wants to merge 7 commits into
base: trunk
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/validation_samples/reduced_ldmx/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@
count = ElectronCounter(1,'ElectronCounter')
count.input_pass_name = ''

# Load hcal veto
import LDMX.Hcal.hcal as hcal
hcal_veto = hcal.HcalVetoProcessor()

from LDMX.DQM import dqm

p.sequence.extend([
Expand All @@ -70,6 +74,7 @@
ecalVeto,
hcal_digi.HcalDigiProducer(),
hcal_digi.HcalRecProducer(),
hcal_veto,
*ts_digis,
TrigScintClusterProducer.pad1(),
TrigScintClusterProducer.pad2(),
Expand Down
168 changes: 91 additions & 77 deletions Detectors/data/ldmx-reduced-v2/constants.gdml
Original file line number Diff line number Diff line change
Expand Up @@ -150,85 +150,99 @@

<!--
HCal
TODO:
- add Hcal case
- do airBoxes need to be added?
-->

<!-- Common HCal components
- Scintillator Thickness: oriented in z in back Hcal, y/x in side hcal
- Scintillator Width: oriented in x/y in back Hcal
-->

<constant name="hcal_airThick" value="2."/>
<constant name="hcal_scintThick" value="20."/>
<constant name="hcal_scintWidth" value="50."/>

<!-- Back HCal Layer component -->
<constant name="back_hcal_numLayers" value="96"/>
<constant name="back_hcal_numScint" value="40"/>
<constant name="back_hcal_absoThick" value="25"/>
<constant name="back_hcal_layerThick"
value="back_hcal_absoThick + hcal_scintThick + 2.0*hcal_airThick"/>

<!--
The back Hcal is 4704.mm long in z
-->
<constant name="back_hcal_dx" value="2000."/>
<constant name="back_hcal_dy" value="2000."/>
<constant name="back_hcal_dz" value="back_hcal_numLayers*back_hcal_layerThick"/>

<!--
Side HCal Layer component
-->
<constant name="side_hcal_absoThick" value="20."/>

<!--
Length of bars oriented in z: side_hcal_dz
Side Hcal dz has to be greater than side Ecal dz
-->
<constant name="side_hcal_dz" value="600."/>

<!--
Bars oriented in x (top or bottom)
in y (left or right)
Length varies.
-->
<variable name="side_hcal_numModules" value="4"/>
<matrix name="side_hcal_length" coldim="1" values="1800.
1600.
1400.
1200."/>

<!--
num bars per module:
oriented in z: 4*1800/50. + 3*1600/50.+2*1400/50. + 3*1200/50. = 368
oriented in x or y: 12
num of bars oriented in z: varies by number
-->
<matrix name="side_hcal_numLayers" coldim="1" values="4 3 2 3"/>
<matrix name="side_hcal_numPrevLayers" coldim="1" values="0 4 7 9"/>
<matrix name="side_hcal_numScintZ" coldim="1" values="side_hcal_length[1]/hcal_scintWidth
side_hcal_length[2]/hcal_scintWidth
side_hcal_length[3]/hcal_scintWidth
side_hcal_length[4]/hcal_scintWidth"/>
<variable name="side_hcal_numScintXY" value="side_hcal_dz/hcal_scintWidth"/>
<variable name="side_hcal_numTotalLayers"
value="(side_hcal_numLayers[1]+side_hcal_numLayers[2]
+side_hcal_numLayers[3]+side_hcal_numLayers[4])*2"/>
<variable name="side_hcal_layerThick"
value="side_hcal_absoThick + 2.*hcal_airThick + hcal_scintThick"/>
<variable name="side_hcal_moduleWidth" value="side_hcal_numTotalLayers*side_hcal_layerThick"/>
<variable name="side_hcal_moduleLength" value="side_hcal_length[1]"/>
<!--
Total calorimeter envelope
Width and height of the envelope for the side and back Hcal
Must be the maximum of back hcal dx and side hcal dx
-->
<constant name="hcal_envelope_dx" value="3000."/>
<constant name="hcal_envelope_dy" value="3000."/>
<constant name="hcal_envelope_dz" value="back_hcal_dz + side_hcal_dz"/>
<constant name="hcal_dz" value="back_hcal_dz + side_hcal_dz"/>
<!-- Absorber -->
<variable name="absorber_width" value="665"/>
<variable name="absorber_height" value="700"/>
<variable name="absorber_thickness" value="20."/>
<variable name="absorber_hole_radius" value="6.5"/>
<variable name="absorber_hole_distance_from_edge" value="16."/>

<!-- Mounting plates -->
<variable name="bar_mounting_plate_thickness" value="3."/>

<!-- Scintillators -->
<variable name="scint_thickness" value="20."/>
<variable name="scint_bar_width" value="50."/>
<variable name="scint_bar_length" value="2000."/>
<variable name="scint_bar_cover_thickness" value="0.5"/>
<variable name="num_bars_front" value="8"/>
<variable name="num_bars_back" value="12"/>

<!-- Layers -->
<variable name="layer_thickness" value="45."/>
<variable name="air_thickness"
value="layer_thickness - (absorber_thickness + bar_mounting_plate_thickness + scint_thickness + scint_bar_cover_thickness)"/>
<variable name="num_layers_front_vertical" value="5"/>
<variable name="num_layers_front_horizontal" value="4"/>
<variable name="num_layers_front"
value="num_layers_front_vertical + num_layers_front_horizontal"/>
<variable name="num_layers_back_vertical" value="5"/>
<variable name="num_layers_back_horizontal" value="5"/>
<variable name="num_layers_back"
value="num_layers_back_vertical + num_layers_back_horizontal"/>
<variable name="num_layers" value="num_layers_front + num_layers_back"/>
<variable name="num_absorbers" value="num_layers + 1"/>
<variable name="back_start" value="num_layers_front * layer_thickness"/>

<!-- Distances between layers -->
<constant name="distance_to_subsequent_absorber_layer " value="layer_thickness"/>
<constant name="distance_to_subsequent_scint_layer" value="2*layer_thickness"/>

<!-- Prototype dimensions-->
<variable name="bar_x_displacement" value="0"/>
<variable name="hcal_dx" value="3000. + 2*bar_x_displacement"/>
<variable name="hcal_dy" value="3000."/>
<variable name="hcal_dz" value="num_layers * layer_thickness"/>

<!-- Positional constants -->
<position name="hadron_calorimeter_pos" x="0.0" y="0.0" z="0.0"/>
<variable name="first_layer_zpos" value="-hcal_dz/2"/>
<variable name="first_layer_absorber_zpos"
value="first_layer_zpos + absorber_thickness/2"/>
<variable name="first_layer_scint_cover_zpos"
value="first_layer_zpos + absorber_thickness + scint_bar_cover_thickness/2"/>
<variable name="first_layer_scint_zpos"
value="first_layer_zpos + absorber_thickness + scint_bar_cover_thickness + scint_thickness/2"/>
<variable name="first_layer_bar_mounting_plate_zpos"
value="first_layer_zpos + absorber_thickness + scint_bar_cover_thickness + scint_thickness + bar_mounting_plate_thickness/2"/>
<variable name="first_back_layer_zpos" value="first_layer_zpos+back_start"/>

<!-- Front Layer, horizontal bars -->
<variable name="scint_front_horizontal_x" value="scint_bar_length"/>
<variable name="scint_front_horizontal_y" value="num_bars_front * scint_bar_width"/>

<!-- Front Layer, vertical bars -->
<variable name="scint_front_vertical_x" value="num_bars_front * scint_bar_width"/>
<variable name="scint_front_vertical_y" value="scint_bar_length"/>

<!-- Back Layer, vertical bars -->
<variable name="scint_back_vertical_x" value="num_bars_back * scint_bar_width"/>
<variable name="scint_back_vertical_y" value="scint_bar_length"/>

<!-- Back Layer, horizontal bars -->
<variable name="scint_back_horizontal_x" value="scint_bar_length"/>
<variable name="scint_back_horizontal_y" value="num_bars_back * scint_bar_width"/>

<!-- Horizontal mounting plates -->
<variable name="bar_mounting_plate_horizontal_x" value="scint_back_horizontal_x"/>
<variable name="bar_mounting_plate_horizontal_y" value="scint_back_horizontal_y"/>

<!-- Vertical mounting plates -->
<variable name="bar_mounting_plate_vertical_x" value="scint_back_vertical_x"/>
<variable name="bar_mounting_plate_vertical_y" value="scint_back_vertical_y"/>

<!-- Frame description variables-->
<quantity name="d1" type="length" value="4.32" unit="mm"/>
<quantity name="d2" type="length" value="12.3" unit="mm"/>
<quantity name="w1" type="length" value="20 - 20.57/2" unit="mm"/>
<quantity name="w2" type="length" value="20 - 8.13/2" unit="mm"/>
<quantity name="frame_length_z" type="length" value="1500" unit="mm"/>
<quantity name="frame_length_x" type="length" value="620" unit="mm"/>
<rotation name="crosswise_rotation" y="90" unit="deg"/>
<rotation name="vertical_rotation" x="90" unit="deg"/>
<rotation name="no_rotation" y="0" unit="deg"/>

<!--
ECal
Expand Down
Loading
Loading