35 double ecal_xy = 600.;
36 double back_transverse_width = 3100.;
37 double ecal_front_z = 220.;
41 (back_transverse_width + ecal_xy) / 2.;
43 (back_transverse_width + ecal_xy) / 2.;
45 (back_transverse_width + ecal_xy) / 2.;
47 (back_transverse_width + ecal_xy) / 2.;
56 hcalZeroStrip_[ldmx::HcalID::HcalSection::BACK] = back_transverse_width / 2.;
83 std::vector<double> ecalSiPlanes = {
84 7.850, 13.300, 26.400, 33.500, 47.950, 56.550, 72.250,
85 81.350, 97.050, 106.150, 121.850, 130.950, 146.650, 155.750,
86 171.450, 180.550, 196.250, 205.350, 221.050, 230.150, 245.850,
87 254.950, 270.650, 279.750, 298.950, 311.550, 330.750, 343.350,
88 362.550, 375.150, 394.350, 406.950, 426.150, 438.750};
90 std::map<std::string, std::any> hexReadoutParams;
91 hexReadoutParams[
"gap"] = 1.5;
92 hexReadoutParams[
"moduleMinR"] = 85.0;
93 hexReadoutParams[
"layerZPositions"] = ecalSiPlanes;
95 hexReadoutParams[
"nCellRHeight"] = 35.3;
96 hexReadoutParams[
"verbose"] = 0;
101 ldmx::EcalHexReadout::debugMake(hexReadout));
121 recoilStereoStripLength_ = 98.0;
123 recoilStereoXWidth_ = 40.34;
125 recoilStereoYWidth_ = 100.0;
127 recoilStereoSeparation_ = 3.0;
129 recoilStereoAngle_ = 0.1;
131 recoilMonoStripLength_ = 78.0;
133 recoilMonoXWidth_ = 50.0;
135 recoilMonoYWidth_ = 80.0;
137 recoilMonoSeparation_ = 1.0;
139 recoilSensorThickness_ = 0.52;
145 std::vector<double> recoilStereoLayerZPos = {7.5, 22.5, 37.5, 52.5};
148 0, 0, recoilStereoLayerZPos.at(0) - recoilStereoSeparation_};
150 0, 0, recoilStereoLayerZPos.at(0) + recoilStereoSeparation_};
153 0, 0, recoilStereoLayerZPos.at(1) - recoilStereoSeparation_};
155 0, 0, recoilStereoLayerZPos.at(1) + recoilStereoSeparation_};
158 0, 0, recoilStereoLayerZPos.at(2) - recoilStereoSeparation_};
160 0, 0, recoilStereoLayerZPos.at(2) + recoilStereoSeparation_};
163 0, 0, recoilStereoLayerZPos.at(3) - recoilStereoSeparation_};
165 0, 0, recoilStereoLayerZPos.at(3) + recoilStereoSeparation_};
167 std::vector<double> recoilMonoLayerZPos = {90.0, 180.0};
170 recoilMonoLayerZPos.at(0) + recoilMonoSeparation_};
172 recoilMonoLayerZPos.at(0) - recoilMonoSeparation_};
174 recoilMonoLayerZPos.at(0) + recoilMonoSeparation_};
176 recoilMonoLayerZPos.at(0) - recoilMonoSeparation_};
178 recoilMonoLayerZPos.at(0) + recoilMonoSeparation_};
180 recoilMonoLayerZPos.at(0) + recoilMonoSeparation_};
182 recoilMonoLayerZPos.at(0) - recoilMonoSeparation_};
184 recoilMonoLayerZPos.at(0) + recoilMonoSeparation_};
186 recoilMonoLayerZPos.at(0) - recoilMonoSeparation_};
188 recoilMonoLayerZPos.at(0) + recoilMonoSeparation_};
191 recoilMonoLayerZPos.at(1) + recoilMonoSeparation_};
193 recoilMonoLayerZPos.at(1) - recoilMonoSeparation_};
195 recoilMonoLayerZPos.at(1) + recoilMonoSeparation_};
197 recoilMonoLayerZPos.at(1) - recoilMonoSeparation_};
199 recoilMonoLayerZPos.at(1) + recoilMonoSeparation_};
201 recoilMonoLayerZPos.at(1) + recoilMonoSeparation_};
203 recoilMonoLayerZPos.at(1) - recoilMonoSeparation_};
205 recoilMonoLayerZPos.at(1) + recoilMonoSeparation_};
207 recoilMonoLayerZPos.at(1) - recoilMonoSeparation_};
209 recoilMonoLayerZPos.at(1) + recoilMonoSeparation_};
384 std::pair<double, double> X(0, 0), Y(0, 0), Z(0, 0);
387 double total_thickness =
389 if (section == ldmx::HcalID::HcalSection::BACK) {
391 X.second = X.first + total_strip_width;
397 Z.second = Z.first + total_thickness;
401 Z.second = Z.first + total_strip_width;
403 if (section == ldmx::HcalID::HcalSection::LEFT) {
405 X.second = X.first + total_thickness;
410 }
else if (section == ldmx::HcalID::HcalSection::RIGHT) {
412 X.first = X.second - total_thickness;
418 }
else if (section == ldmx::HcalID::HcalSection::TOP) {
420 Y.second = Y.first + total_thickness;
425 }
else if (section == ldmx::HcalID::HcalSection::BOTTOM) {
427 Y.first = Y.second - total_thickness;
434 std::cerr <<
"[ Warning ] : Unrecognized ldmx::HcalID::HcalSection in "
435 "DetectorGeometry::getBoundingBox."
437 std::cerr <<
" Will return an incorrect geometry description!"
443 boundingbox.push_back(X);
444 boundingbox.push_back(Y);
445 boundingbox.push_back(Z);