Skip to content
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
55 changes: 34 additions & 21 deletions compact/far_forward/ZDC_SiPMonTile.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,43 +12,53 @@
<documentation>
#### Material Thicknesses
</documentation>
<constant name="HcalFarForwardZDC_SiPMonTile_AirThickness" value="0.02*cm"/>
<constant name="HcalFarForwardZDC_SiPMonTile_AirThickness" value="0.1212*cm"/>
<constant name="HcalFarForwardZDC_SiPMonTile_AbsorberThickness" value="2*cm"/>
<constant name="HcalFarForwardZDC_SiPMonTile_ScintillatorCoverThickness" value="0.04*cm"/>
<constant name="HcalFarForwardZDC_SiPMonTile_PolystyreneThickness" value="0.30*cm"/>
<constant name="HcalFarForwardZDC_SiPMonTile_PCBThickness" value="0.08*cm"/>
<constant name="HcalFarForwardZDC_SiPMonTile_PolystyreneThickness" value="0.40*cm"/>
<constant name="HcalFarForwardZDC_SiPMonTile_PCBThickness" value="0.16*cm"/>
<constant name="HcalFarForwardZDC_SiPMonTile_ESRFoilThickness" value="0.015*cm"/>

<documentation>
- ZDC N Layers and computed Thickness
</documentation>


<constant name="HcalFarForwardZDC_SiPMonTile_SingleLayerThickness"
value="HcalFarForwardZDC_SiPMonTile_AbsorberThickness +
value="HcalFarForwardZDC_SiPMonTile_AbsorberThickness +
HcalFarForwardZDC_SiPMonTile_PolystyreneThickness +
HcalFarForwardZDC_SiPMonTile_PCBThickness+HcalFarForwardZDC_SiPMonTile_ESRFoilThickness*2+
2*HcalFarForwardZDC_SiPMonTile_AirThickness+HcalFarForwardZDC_SiPMonTile_ScintillatorCoverThickness"
/>
2*HcalFarForwardZDC_SiPMonTile_AirThickness"
/>

<constant name="HcalFarForwardZDC_SiPMonTile_BackplateThickness" value="HcalFarForwardZDC_SiPMonTile_AbsorberThickness"/>
<constant name="HcalFarForwardZDC_SiPMonTile_Layer_NSteelRepeat" value="64"/>

<constant name="HcalFarForwardZDC_SiPMonTile_SquareSideLength" value="48.8*mm"/>
<constant name="HcalFarForwardZDC_SiPMonTile_stagger" value="1"/>
<constant name="HcalFarForwardZDC_SiPMonTile_offset_x" value="0"/>
<constant name="HcalFarForwardZDC_SiPMonTile_offset_y" value="0"/>

<constant name="HcalFarForwardZDC_SiPMonTile_BackplateThickness" value="HcalFarForwardZDC_SiPMonTile_AbsorberThickness"/>
<constant name="HcalFarForwardZDC_SiPMonTile_Layer_NSteelRepeat" value="64"/>
<constant name="HcalFarForwardZDC_SiPMonTile_width" value= "60*cm"/>
<constant name="HcalFarForwardZDC_SiPMonTile_height" value= "61*cm"/>

<constant name="HcalFarForwardZDC_SiPMonTile_HexSideLength" value="31.3*mm"/>
<constant name="HcalFarForwardZDC_SiPMonTile_stagger" value="2"/>
<constant name="HcalFarForwardZDC_SiPMonTile_nrows_even_layers" value= "12"/>
<constant name="HcalFarForwardZDC_SiPMonTile_nrows_odd_layers" value= "11"/>
<constant name="HcalFarForwardZDC_SiPMonTile_ncols_even_layers" value= "11"/>
<constant name="HcalFarForwardZDC_SiPMonTile_ncols_odd_layers" value= "11"/>

<constant name="HcalFarForwardZDC_SiPMonTile_width" value= "60*cm"/>
<constant name="HcalFarForwardZDC_SiPMonTile_height" value= "60*cm"/>
<constant name="HcalFarForwardZDC_SiPMonTile_length" value= "HcalFarForwardZDC_SiPMonTile_SingleLayerThickness*HcalFarForwardZDC_SiPMonTile_Layer_NSteelRepeat +
<constant name="HcalFarForwardZDC_SiPMonTile_length" value= "HcalFarForwardZDC_SiPMonTile_SingleLayerThickness*HcalFarForwardZDC_SiPMonTile_Layer_NSteelRepeat +
HcalFarForwardZDC_SiPMonTile_BackplateThickness"/>

<constant name="HcalFarForwardZDC_SiPMonTile_absorber_width" value= "57.6*cm"/>
<constant name="HcalFarForwardZDC_SiPMonTile_absorber_height" value= "58.8*cm"/>

<constant name="HcalFarForwardZDC_SiPMonTile_rotateX_angle" value="0*deg"/>
<constant name="HcalFarForwardZDC_SiPMonTile_rotateY_angle" value="ionCrossingAngle"/>
<constant name="HcalFarForwardZDC_SiPMonTile_rotateZ_angle" value="0*deg"/>

<constant name="HcalFarForwardZDC_SiPMonTile_r_pos_front_face" value="35.8*m"/>
<constant name="HcalFarForwardZDC_SiPMonTile_r_pos" value="HcalFarForwardZDC_SiPMonTile_r_pos_front_face + HcalFarForwardZDC_SiPMonTile_length/2.0"/>
<constant name="HcalFarForwardZDC_SiPMonTile_x_pos" value="sin(HcalFarForwardZDC_SiPMonTile_rotateY_angle)*HcalFarForwardZDC_SiPMonTile_r_pos"/>
<constant name="HcalFarForwardZDC_SiPMonTile_y_pos" value="0*m" />
<constant name="HcalFarForwardZDC_SiPMonTile_y_pos" value="0*m"/>
<constant name="HcalFarForwardZDC_SiPMonTile_z_pos" value="cos(HcalFarForwardZDC_SiPMonTile_rotateY_angle)*HcalFarForwardZDC_SiPMonTile_r_pos"/>
</define>

Expand Down Expand Up @@ -89,11 +99,10 @@
<layer repeat="HcalFarForwardZDC_SiPMonTile_Layer_NSteelRepeat" thickness="HcalFarForwardZDC_SiPMonTile_SingleLayerThickness" vis="InvisibleWithDaughters">
<slice name="Absorber_slice" material="Steel235" thickness="HcalFarForwardZDC_SiPMonTile_AbsorberThickness" vis="AnlGray"/>
<slice name="Air_slice" material="Air" thickness="HcalFarForwardZDC_SiPMonTile_AirThickness"/>
<slice name="ScintCover_slice" material="Aluminum" thickness="HcalFarForwardZDC_SiPMonTile_ScintillatorCoverThickness"/>
<slice name="PCB_slice" material="Fr4" thickness="HcalFarForwardZDC_SiPMonTile_PCBThickness"/>
<slice name="ESRFoil_slice" material="Polystyrene" thickness="HcalFarForwardZDC_SiPMonTile_ESRFoilThickness"/>
<slice name="Scintillator_slice" material="Polystyrene" thickness="HcalFarForwardZDC_SiPMonTile_PolystyreneThickness" vis="AnlOrange" sensitive="true"/>
<slice name="ESRFoil_slice" material="Polystyrene" thickness="HcalFarForwardZDC_SiPMonTile_ESRFoilThickness"/>
<slice name="PCB_slice" material="Fr4" thickness="HcalFarForwardZDC_SiPMonTile_PCBThickness"/>
<slice name="Air_slice" material="Air" thickness="HcalFarForwardZDC_SiPMonTile_AirThickness"/>
</layer>
<comment> Final layer of steel </comment>
Expand All @@ -106,9 +115,13 @@
<readouts>
<readout name="HcalFarForwardZDCHits">
<segmentation
type="HexGrid"
side_length="HcalFarForwardZDC_SiPMonTile_HexSideLength"
stagger="HcalFarForwardZDC_SiPMonTile_stagger"
type="CartesianGridXYStaggered"
grid_size_x="HcalFarForwardZDC_SiPMonTile_SquareSideLength"
grid_size_y="HcalFarForwardZDC_SiPMonTile_SquareSideLength"
stagger_x="0"
stagger_y="HcalFarForwardZDC_SiPMonTile_stagger"
offset_x="HcalFarForwardZDC_SiPMonTile_offset_x"
offset_y="HcalFarForwardZDC_SiPMonTile_offset_y"
/>
<id>system:8,layer:8,slice:5,x:32:-16,y:-16</id>
</readout>
Expand Down
37 changes: 34 additions & 3 deletions src/ZeroDegreeCalorimeterSiPMonTile_geo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,16 @@ static Ref_t createDetector(Detector& desc, xml_h handle, SensitiveDetector sens
double height = dim.y(); // Size along y-axis
double length = dim.z(); // Size along z-axis

double absorber_width = desc.constant<double>("HcalFarForwardZDC_SiPMonTile_absorber_width");
double absorber_height = desc.constant<double>("HcalFarForwardZDC_SiPMonTile_absorber_height");

int nrows_even = desc.constant<int>("HcalFarForwardZDC_SiPMonTile_nrows_even_layers");
int nrows_odd = desc.constant<int>("HcalFarForwardZDC_SiPMonTile_nrows_odd_layers");
int ncols_even = desc.constant<int>("HcalFarForwardZDC_SiPMonTile_ncols_even_layers");
int ncols_odd = desc.constant<int>("HcalFarForwardZDC_SiPMonTile_ncols_odd_layers");

double tile = desc.constant<double>("HcalFarForwardZDC_SiPMonTile_SquareSideLength");

xml_dim_t pos = detElem.position(); // Position in global coordinates
xml_dim_t rot = detElem.rotation();

Expand Down Expand Up @@ -68,7 +78,28 @@ static Ref_t createDetector(Detector& desc, xml_h handle, SensitiveDetector sens
Material slice_mat = desc.material(x_slice.materialStr());
slice_z += slice_thickness / 2.; // Going to slice halfway point

Box slice(width / 2., height / 2., slice_thickness / 2.);
double slice_width, slice_height, slice_x, slice_y;
if (x_slice.nameStr() == "ESRFoil_slice" or x_slice.nameStr() == "Scintillator_slice") {
if (i % 2 == 0) {
slice_width = ncols_even * tile;
slice_height = nrows_even * tile;
slice_x = tile / 4;
slice_y = -tile / 4;
}
if (i % 2 == 1) {
slice_width = ncols_odd * tile;
slice_height = nrows_odd * tile;
slice_x = -tile / 4;
slice_y = -tile / 4;
}
} else { //absorber
slice_width = absorber_width;
slice_height = absorber_height;
slice_x = 0;
slice_y = (-nrows_even / 2 + 1 / 4) * tile + absorber_height / 2;
}

Box slice(slice_width / 2., slice_height / 2., slice_thickness / 2.);

Volume slice_vol(slice_name, slice, slice_mat);

Expand All @@ -82,8 +113,8 @@ static Ref_t createDetector(Detector& desc, xml_h handle, SensitiveDetector sens
slice_vol.setAttributes(desc, x_slice.regionStr(), x_slice.limitsStr(), x_slice.visStr());

// Placing slice within layer
pv = layer_vol.placeVolume(slice_vol,
Transform3D(RotationZYX(0, 0, 0), Position(0., 0., slice_z)));
pv = layer_vol.placeVolume(
slice_vol, Transform3D(RotationZYX(0, 0, 0), Position(slice_x, slice_y, slice_z)));
pv.addPhysVolID("slice", slice_num);
slice_z += slice_thickness / 2.;
z_distance_traversed += slice_thickness;
Expand Down
Loading