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.;
57 back_transverse_width / 2.;
84 std::vector<double> ecalSiPlanes = {
85 7.850, 13.300, 26.400, 33.500, 47.950, 56.550, 72.250,
86 81.350, 97.050, 106.150, 121.850, 130.950, 146.650, 155.750,
87 171.450, 180.550, 196.250, 205.350, 221.050, 230.150, 245.850,
88 254.950, 270.650, 279.750, 298.950, 311.550, 330.750, 343.350,
89 362.550, 375.150, 394.350, 406.950, 426.150, 438.750};
91 std::map<std::string, std::any> hexReadoutParams;
92 hexReadoutParams[
"gap"] = 1.5;
93 hexReadoutParams[
"moduleMinR"] = 85.0;
94 hexReadoutParams[
"layerZPositions"] = ecalSiPlanes;
96 hexReadoutParams[
"nCellRHeight"] = 35.3;
97 hexReadoutParams[
"verbose"] = 0;
100 hexReadout.setParameters(hexReadoutParams);
102 ldmx::EcalHexReadout::debugMake(hexReadout));
122 recoil_stereo_strip_length_ = 98.0;
124 recoil_stereo_x_width_ = 40.34;
126 recoil_stereo_y_width_ = 100.0;
128 recoil_stereo_separation_ = 3.0;
130 recoil_stereo_angle_ = 0.1;
132 recoil_mono_strip_length_ = 78.0;
134 recoil_mono_x_width_ = 50.0;
136 recoil_mono_y_width_ = 80.0;
138 recoil_mono_separation_ = 1.0;
140 recoil_sensor_thickness_ = 0.52;
146 std::vector<double> recoilStereoLayerZPos = {7.5, 22.5, 37.5, 52.5};
149 0, 0, recoilStereoLayerZPos.at(0) - recoil_stereo_separation_};
151 0, 0, recoilStereoLayerZPos.at(0) + recoil_stereo_separation_};
154 0, 0, recoilStereoLayerZPos.at(1) - recoil_stereo_separation_};
156 0, 0, recoilStereoLayerZPos.at(1) + recoil_stereo_separation_};
159 0, 0, recoilStereoLayerZPos.at(2) - recoil_stereo_separation_};
161 0, 0, recoilStereoLayerZPos.at(2) + recoil_stereo_separation_};
164 0, 0, recoilStereoLayerZPos.at(3) - recoil_stereo_separation_};
166 0, 0, recoilStereoLayerZPos.at(3) + recoil_stereo_separation_};
168 std::vector<double> recoilMonoLayerZPos = {90.0, 180.0};
171 2 * recoil_mono_x_width_, 0.5 * recoil_mono_y_width_,
172 recoilMonoLayerZPos.at(0) + recoil_mono_separation_};
174 recoil_mono_x_width_, 0.5 * recoil_mono_y_width_,
175 recoilMonoLayerZPos.at(0) - recoil_mono_separation_};
177 0.0, 0.5 * recoil_mono_y_width_,
178 recoilMonoLayerZPos.at(0) + recoil_mono_separation_};
180 -1 * recoil_mono_x_width_, 0.5 * recoil_mono_y_width_,
181 recoilMonoLayerZPos.at(0) - recoil_mono_separation_};
183 -2 * recoil_mono_x_width_, 0.5 * recoil_mono_y_width_,
184 recoilMonoLayerZPos.at(0) + recoil_mono_separation_};
186 2 * recoil_mono_x_width_, -0.5 * recoil_mono_y_width_,
187 recoilMonoLayerZPos.at(0) + recoil_mono_separation_};
189 recoil_mono_x_width_, -0.5 * recoil_mono_y_width_,
190 recoilMonoLayerZPos.at(0) - recoil_mono_separation_};
192 0.0, -0.5 * recoil_mono_y_width_,
193 recoilMonoLayerZPos.at(0) + recoil_mono_separation_};
195 -1 * recoil_mono_x_width_, -0.5 * recoil_mono_y_width_,
196 recoilMonoLayerZPos.at(0) - recoil_mono_separation_};
198 -2 * recoil_mono_x_width_, -0.5 * recoil_mono_y_width_,
199 recoilMonoLayerZPos.at(0) + recoil_mono_separation_};
202 2 * recoil_mono_x_width_, 0.5 * recoil_mono_y_width_,
203 recoilMonoLayerZPos.at(1) + recoil_mono_separation_};
205 recoil_mono_x_width_, 0.5 * recoil_mono_y_width_,
206 recoilMonoLayerZPos.at(1) - recoil_mono_separation_};
208 0.0, 0.5 * recoil_mono_y_width_,
209 recoilMonoLayerZPos.at(1) + recoil_mono_separation_};
211 -1 * recoil_mono_x_width_, 0.5 * recoil_mono_y_width_,
212 recoilMonoLayerZPos.at(1) - recoil_mono_separation_};
214 -2 * recoil_mono_x_width_, 0.5 * recoil_mono_y_width_,
215 recoilMonoLayerZPos.at(1) + recoil_mono_separation_};
217 2 * recoil_mono_x_width_, -0.5 * recoil_mono_y_width_,
218 recoilMonoLayerZPos.at(1) + recoil_mono_separation_};
220 recoil_mono_x_width_, -0.5 * recoil_mono_y_width_,
221 recoilMonoLayerZPos.at(1) - recoil_mono_separation_};
223 0.0, -0.5 * recoil_mono_y_width_,
224 recoilMonoLayerZPos.at(1) + recoil_mono_separation_};
226 -1 * recoil_mono_x_width_, -0.5 * recoil_mono_y_width_,
227 recoilMonoLayerZPos.at(1) - recoil_mono_separation_};
229 -2 * recoil_mono_x_width_, -0.5 * recoil_mono_y_width_,
230 recoilMonoLayerZPos.at(1) + recoil_mono_separation_};
405 std::pair<double, double> X(0, 0), Y(0, 0), Z(0, 0);
408 double total_thickness =
410 if (section == ldmx::HcalID::HcalSection::BACK) {
412 X.second = X.first + total_strip_width;
418 Z.second = Z.first + total_thickness;
422 Z.second = Z.first + total_strip_width;
424 if (section == ldmx::HcalID::HcalSection::LEFT) {
426 X.second = X.first + total_thickness;
432 }
else if (section == ldmx::HcalID::HcalSection::RIGHT) {
434 X.first = X.second - total_thickness;
440 }
else if (section == ldmx::HcalID::HcalSection::TOP) {
442 Y.second = Y.first + total_thickness;
448 }
else if (section == ldmx::HcalID::HcalSection::BOTTOM) {
450 Y.first = Y.second - total_thickness;
457 std::cerr <<
"[ Warning ] : Unrecognized ldmx::HcalID::HcalSection in "
458 "DetectorGeometry::getBoundingBox."
460 std::cerr <<
" Will return an incorrect geometry description!"
466 boundingbox.push_back(X);
467 boundingbox.push_back(Y);
468 boundingbox.push_back(Z);