57 auto* HalfConeVolume =
new TGeoVolumeAssembly(Form(
"HalfConeVolume%d", half));
59 TGeoMedium* malu5083 = gGeoManager->GetMedium(
"MFT_Alu5083$");
62 TGeoRotation* rot1 =
new TGeoRotation(
"rot1", 180, -180, 0);
64 rot1->RegisterYourself();
65 TGeoRotation* rot2 =
new TGeoRotation(
"rot2", 90, -90, 0);
66 rot2->RegisterYourself();
68 TGeoRotation* rot3 =
new TGeoRotation(
"rot3", 0, 90, 0);
69 rot3->RegisterYourself();
71 TGeoRotation* rot_90x =
new TGeoRotation(
"rot_90x", 0, -90, 0);
72 rot_90x->RegisterYourself();
74 TGeoRotation* rot_base =
new TGeoRotation(
"rot_base", 180, 180, 0);
75 rot_base->RegisterYourself();
77 TGeoCombiTrans* combi1 =
new TGeoCombiTrans(0, -10.3, 1.29, rot1);
78 combi1->RegisterYourself();
79 TGeoCombiTrans* combi2 =
new TGeoCombiTrans(-16.8, 0., 0., rot2);
80 combi2->RegisterYourself();
82 TGeoRotation* r0 =
new TGeoRotation(
"r0", 10., 0., 0.);
83 r0->RegisterYourself();
87 auto* Cross_mb0 =
new TGeoVolumeAssembly(
"Cross_mb0");
90 Double_t x_boxmb0 = 14.4;
91 Double_t y_boxmb0 = 0.6;
92 Double_t z_boxmb0 = 0.6;
95 Double_t radin_1hmb0 = 0.;
96 Double_t radout_1hmb0 = 0.175;
97 Double_t high_1hmb0 = 0.7;
99 TGeoRotation* rot_1hole_mb0 =
new TGeoRotation(
"rot_1hole_mb0", 0, 90, 0);
100 rot_1hole_mb0->RegisterYourself();
102 TGeoCombiTrans* acombi_1h_mb0 =
new TGeoCombiTrans(5.2, 0, 0, rot_1hole_mb0);
103 acombi_1h_mb0->SetName(
"acombi_1h_mb0");
104 acombi_1h_mb0->RegisterYourself();
105 TGeoCombiTrans* bcombi_1h_mb0 =
new TGeoCombiTrans(-5.2, 0, 0, rot_1hole_mb0);
106 bcombi_1h_mb0->SetName(
"bcombi_1h_mb0");
107 bcombi_1h_mb0->RegisterYourself();
110 Double_t radin_2hmb0 = 0.;
111 Double_t radout_2hmb0 = 0.15;
112 Double_t high_2hmb0 = 1.2;
113 TGeoRotation* rot_2hole_mb0 =
new TGeoRotation(
"rot_2hole_mb0", 90, 90, 0);
114 rot_2hole_mb0->SetName(
"rot_2hole_mb0");
115 rot_2hole_mb0->RegisterYourself();
117 TGeoCombiTrans* combi_2hole_mb0 =
118 new TGeoCombiTrans(6.7, 0, 0, rot_2hole_mb0);
119 combi_2hole_mb0->SetName(
"combi_2hole_mb0");
120 combi_2hole_mb0->RegisterYourself();
122 TGeoCombiTrans* combi_2hole_mb0_b =
123 new TGeoCombiTrans(-6.7, 0, 0, rot_2hole_mb0);
124 combi_2hole_mb0_b->SetName(
"combi_2hole_mb0_b");
125 combi_2hole_mb0_b->RegisterYourself();
128 new TGeoBBox(
"box_mb0", x_boxmb0 / 2, y_boxmb0 / 2, z_boxmb0 / 2);
129 new TGeoTube(
"hole1_mb0", radin_1hmb0, radout_1hmb0, high_1hmb0 / 2);
130 new TGeoTube(
"hole2_mb0", radin_2hmb0, radout_2hmb0, high_2hmb0 / 2);
133 auto* c_mb0_Shape_0 =
new TGeoCompositeShape(
135 "box_mb0 - hole2_mb0:combi_2hole_mb0 - "
136 "hole2_mb0:combi_2hole_mb0_b");
138 auto* cross_mb0_Volume =
139 new TGeoVolume(
"cross_mb0_Volume", c_mb0_Shape_0, malu5083);
141 Cross_mb0->AddNode(cross_mb0_Volume, 1);
144 auto* Cross_mft =
new TGeoVolumeAssembly(
"Cross_mft");
145 auto* Cross_mft_2 =
new TGeoVolumeAssembly(
"Cross_mft_2");
146 auto* Cross_mft_3 =
new TGeoVolumeAssembly(
"Cross_mft_3");
147 auto* Cross_mft_4 =
new TGeoVolumeAssembly(
"Cross_mft_4");
151 Double_t radin_cb = 0.;
152 Double_t radout_cb = 0.3;
153 Double_t high_cb = 14.2;
155 TGeoRotation* rot_cb =
new TGeoRotation(
"rot_cb", 90, 90, 0);
156 rot_cb->SetName(
"rot_cb");
157 rot_cb->RegisterYourself();
161 Double_t radin_hole_cbeam = 0.;
162 Double_t radout_hole_cbeam = 0.15;
163 Double_t high_hole_cbeam = 0.91;
166 TGeoCombiTrans* combi_hole_1cbeam =
167 new TGeoCombiTrans(6.8, 0, 0, rot_2hole_mb0);
168 combi_hole_1cbeam->SetName(
"combi_hole_1cbeam");
169 combi_hole_1cbeam->RegisterYourself();
171 TGeoCombiTrans* combi_hole_2cbeam =
172 new TGeoCombiTrans(-6.8, 0, 0, rot_2hole_mb0);
173 combi_hole_2cbeam->SetName(
"combi_hole_2cbeam");
174 combi_hole_2cbeam->RegisterYourself();
177 new TGeoTube(
"hole_cbeam", radin_hole_cbeam, radout_hole_cbeam,
178 high_hole_cbeam / 2);
179 new TGeoTube(
"s_cb", radin_cb, radout_cb, high_cb / 2);
183 auto* c_cbeam_Shape =
new TGeoCompositeShape(
185 " s_cb:rot_cb - hole_cbeam:combi_hole_1cbeam - "
186 "hole_cbeam:combi_hole_2cbeam");
188 auto* Cross_mft_Volume =
189 new TGeoVolume(
"Cross_mft_Volume", c_cbeam_Shape, malu5083);
190 auto* Cross_mft_Volume_2 =
191 new TGeoVolume(
"Cross_mft_Volume_2", c_cbeam_Shape, malu5083);
192 auto* Cross_mft_Volume_3 =
193 new TGeoVolume(
"Cross_mft_Volume_3", c_cbeam_Shape, malu5083);
194 auto* Cross_mft_Volume_4 =
195 new TGeoVolume(
"Cross_mft_Volume_4", c_cbeam_Shape, malu5083);
197 Cross_mft->AddNode(Cross_mft_Volume, 1);
198 Cross_mft_2->AddNode(Cross_mft_Volume_2, 1);
199 Cross_mft_3->AddNode(Cross_mft_Volume_3, 1);
200 Cross_mft_4->AddNode(Cross_mft_Volume_4, 1);
203 auto* Fra_front =
new TGeoVolumeAssembly(
"Fra_front");
204 auto* Fra_front_L =
new TGeoVolumeAssembly(
"Fra_front_L");
205 auto* Fra_front_R =
new TGeoVolumeAssembly(
"Fra_front_R");
208 Double_t radin_fwf = 15.2;
209 Double_t radout_fwf = 15.9;
210 Double_t high_fwf = 0.6;
211 Double_t ang_in_fwf = 180. + 21.0;
212 Double_t ang_fin_fwf = 180 + 60.21;
215 Double_t x_box_qdown = 1.6;
216 Double_t y_box_qdown = 1.6;
217 Double_t z_box_qdown = 0.65;
219 TGeoTranslation* tr_qdown =
220 new TGeoTranslation(
"tr_qdown", -7.1, -13.7985, 0.);
221 tr_qdown->RegisterYourself();
224 Double_t x_box_addown = 1.83;
225 Double_t y_box_addown = 0.6;
226 Double_t z_box_addown = 0.6;
228 TGeoTranslation* tr_addown =
229 new TGeoTranslation(
"tr_addown", -8.015, -12.6985, 0.);
230 tr_addown->RegisterYourself();
232 TGeoXtru* tria_fwf =
new TGeoXtru(2);
233 tria_fwf->SetName(
"tria_fwf");
235 Double_t x_tria_fwf[3] = {-13.2, -10.3, -10.3};
236 Double_t y_tria_fwf[3] = {-8.0, -11.4, -8.0};
237 tria_fwf->DefinePolygon(3, x_tria_fwf, y_tria_fwf);
238 tria_fwf->DefineSection(0, -0.3, 0., 0., 1);
239 tria_fwf->DefineSection(1, 0.3, 0., 0., 1);
241 TGeoXtru* top_adfwf =
new TGeoXtru(2);
242 top_adfwf->SetName(
"top_adfwf");
244 Double_t x_top_adfwf[4] = {-14.8, -14.2, -14.2, -14.8};
245 Double_t y_top_adfwf[4] = {-3.6 - 0.12, -3.6 - 0.12, -5.56, -5.83};
246 top_adfwf->DefinePolygon(4, x_top_adfwf, y_top_adfwf);
247 top_adfwf->DefineSection(0, -0.3, 0., 0.,
249 top_adfwf->DefineSection(1, 0.3, 0., 0., 1);
252 Double_t x_q_upbox = 0.4;
253 Double_t y_q_upbox = 4.;
254 Double_t z_q_upbox = 1.;
256 TGeoTranslation* tr_q_upbox =
257 new TGeoTranslation(
"tr_q_upbox", -14.8 - 0.2, -3.6 - 0.6, 0.);
258 tr_q_upbox->RegisterYourself();
260 TGeoRotation* rot_180yR =
new TGeoRotation(
"rot_180yR", 180, -180, 0);
261 rot_180yR->RegisterYourself();
262 TGeoCombiTrans* combi_fwb_R =
new TGeoCombiTrans(0, 0, 0, rot_180yR);
263 combi_fwb_R->SetName(
"combi_fwb_R");
264 combi_fwb_R->RegisterYourself();
267 Double_t x_box_up = 0.6;
268 Double_t y_box_up = 0.605;
269 Double_t z_box_up = 2.84;
271 Double_t dia_tub_up = 0.35;
272 Double_t high_tub_up = 0.65;
274 Double_t dia_tubdown = 0.35;
275 Double_t high_tubdown = 0.68;
277 Double_t x_boxA_down = 0.8;
278 Double_t y_boxA_down = 0.6;
279 Double_t z_boxA_down = 0.6;
281 Double_t x_boxB_down = 0.6;
282 Double_t y_boxB_down = 0.605;
283 Double_t z_boxB_down = 1.26;
285 Double_t radin_segtub = 16.9;
286 Double_t radout_segtub = 17.5;
287 Double_t high_segtub = 0.6;
288 Double_t ang_in_segtub = 212.1;
289 Double_t ang_fin_segtub = 241.92;
292 TGeoCombiTrans* combi_3a =
new TGeoCombiTrans(-7.4, 0, 8.975, rot2);
293 combi_3a->SetName(
"combi_3a");
294 combi_3a->RegisterYourself();
296 TGeoTranslation* tr1_up =
new TGeoTranslation(
"tr1_up", -7.4, 0, 8.28);
298 tr1_up->RegisterYourself();
300 TGeoTranslation* tr1_tub1 =
new TGeoTranslation(
"tr1_tub1", 0, 0., 3.075);
301 tr1_tub1->RegisterYourself();
303 TGeoCombiTrans* combi_3b =
new TGeoCombiTrans(7.118, 0, 16.16, rot3);
304 combi_3b->SetName(
"combi_3b");
305 combi_3b->RegisterYourself();
307 TGeoTranslation* tr_2_box =
new TGeoTranslation(
"tr_2_box", -0.4, 0, 0.7);
308 tr_2_box->RegisterYourself();
310 TGeoTranslation* tr3_box =
new TGeoTranslation(
"tr3_box", -1.1, 0, 0.63);
311 tr3_box->RegisterYourself();
313 TGeoTranslation* tr_tubdown =
new TGeoTranslation(
"tr_tubdown", -0.4, 0, 0.7);
314 tr_tubdown->RegisterYourself();
317 auto* fwf_tub =
new TGeoTubeSeg(
"fwf_tub", radin_fwf, radout_fwf,
318 high_fwf / 2, ang_in_fwf, ang_fin_fwf);
319 auto* box_qdown =
new TGeoBBox(
"box_qdown", x_box_qdown / 2, y_box_qdown / 2,
321 auto* box_addown =
new TGeoBBox(
"box_addown", x_box_addown / 2,
322 y_box_addown / 2, z_box_addown / 2);
324 new TGeoBBox(
"q_upbox", x_q_upbox / 2, y_q_upbox / 2, z_q_upbox / 2);
326 new TGeoBBox(
"box_up", x_box_up / 2, y_box_up / 2, z_box_up / 2);
328 new TGeoTube(
"tub_up", 0., dia_tub_up / 2, high_tub_up / 2);
329 new TGeoTubeSeg(
"seg_tub", radin_segtub, radout_segtub, high_segtub / 2,
330 ang_in_segtub, ang_fin_segtub);
332 new TGeoBBox(
"boxB_down", x_boxB_down / 2, y_boxB_down / 2, z_boxB_down / 2);
334 new TGeoBBox(
"boxA_down", x_boxA_down / 2, y_boxA_down / 2, z_boxA_down / 2);
336 new TGeoTube(
"tubdown", 0., dia_tubdown / 2, high_tubdown / 2);
339 new TGeoCompositeShape(
"fra_front_Shape_0",
340 "box_up:tr1_up + seg_tub:combi_3b + boxB_down:tr3_box "
341 "+ boxA_down:tr_2_box");
343 auto* fra_front_Shape_1 =
new TGeoCompositeShape(
345 "fra_front_Shape_0 - tubdown:tr_tubdown - tub_up:combi_3a");
347 TGeoRotation* rot_z180x90 =
348 new TGeoRotation(
"rot_z180x90", 180, 90, 0);
349 rot_z180x90->RegisterYourself();
351 TGeoRotation* rot_halfR =
352 new TGeoRotation(
"rot_halfR", 180, 180, 0);
353 rot_halfR->RegisterYourself();
354 TGeoCombiTrans* combi_front_L =
355 new TGeoCombiTrans(-7.1, -16.2, 32.5 + 0.675, rot_90x);
357 combi_front_L->SetName(
"combi_front_L");
358 combi_front_L->RegisterYourself();
360 TGeoTranslation* tr_ff =
new TGeoTranslation(
361 "tr_ff", 0, -2.5 - 0.31, 32.5 + 0.675);
362 tr_ff->RegisterYourself();
364 TGeoCombiTrans* combi_front_R =
365 new TGeoCombiTrans(0, -2.5 - 0.31, 32.5 + 0.675, rot_180yR);
366 combi_front_R->SetName(
"combi_front_R");
367 combi_front_R->RegisterYourself();
369 auto* fra_front_Shape_2 =
new TGeoCompositeShape(
371 "fwf_tub - box_qdown:tr_qdown + box_addown:tr_addown + tria_fwf + "
372 "top_adfwf - q_upbox:tr_q_upbox");
374 auto* fra_front_Shape_3 =
new TGeoCompositeShape(
375 "Fra_front_Shape_3",
"Fra_front_Shape_2 + Fra_front_Shape_2:rot_180yR");
377 auto* Fra_front_Volume_R =
378 new TGeoVolume(
"Fra_front_Volume_R", fra_front_Shape_2, malu5083);
379 auto* Fra_front_Volume_L =
380 new TGeoVolume(
"Fra_front_Volume_L", fra_front_Shape_2, malu5083);
382 auto* Fra_front_Volume_RL =
383 new TGeoVolume(
"Fra_front_Volume_RL", fra_front_Shape_3, malu5083);
385 Fra_front->AddNode(Fra_front_Volume_RL, 1, tr_ff);
388 auto* base =
new TGeoVolumeAssembly(
"base");
391 Double_t radin_disc = 23.6;
392 Double_t radout_disc = 30.3;
393 Double_t high_disc = 1.35;
394 Double_t ang_in_disc = 180;
395 Double_t ang_fin_disc = 360;
398 Double_t radin_holeB = 0.;
399 Double_t radout_holeB = 0.175;
400 Double_t high_holeB = 1.5;
401 TGeoTranslation* tr1_holeB =
new TGeoTranslation(
"tr1_holeB", -7.5, -28.8, 0);
402 tr1_holeB->RegisterYourself();
404 TGeoTranslation* tr2_holeB =
new TGeoTranslation(
"tr2_holeB", 7.5, -28.8, 0);
405 tr2_holeB->RegisterYourself();
408 Double_t x_1box = 61.0;
409 Double_t y_1box = 13.0;
410 Double_t z_1box = 1.4;
412 Double_t x_2box = 51.2;
413 Double_t y_2box = 14.6;
414 Double_t z_2box = 1.4;
416 Double_t x_3box = 45.1;
417 Double_t y_3box = 23.812;
418 Double_t z_3box = 1.4;
420 Double_t radin_1hole = 29.3;
421 Double_t radout_1hole = 30.3;
422 Double_t high_1hole = 1.4;
423 Double_t ang_in_1hole = 205;
424 Double_t ang_fin_1hole = 225;
426 Double_t radin_2hole = 23.0;
427 Double_t radout_2hole = 25.5;
428 Double_t high_2hole = 1.4;
429 Double_t ang_in_2hole = 207.83;
430 Double_t ang_fin_2hole = 249.998;
432 Double_t radin_3hole = 25.5;
433 Double_t radout_3hole = 27.5;
434 Double_t high_3hole = 1.35;
435 Double_t ang_in_3hole = 255.253;
436 Double_t ang_fin_3hole = 284.746;
438 Double_t xc_box = 7.0;
439 Double_t yc_box = 5.772;
440 Double_t zc_box = 1.4;
442 TGeoTranslation* tr_cbox =
443 new TGeoTranslation(
"tr_cbox", -xc_box / 2, -radout_disc + 0.888, 0);
444 tr_cbox->RegisterYourself();
446 Double_t x_labox = 60.0;
447 Double_t y_labox = 30.3;
448 Double_t z_labox = 0.305;
449 TGeoTranslation* tr_la =
450 new TGeoTranslation(
"tr_la", 0, -y_labox / 2 - 9.3, high_disc / 2);
451 tr_la->RegisterYourself();
454 Double_t x_2labox = 51.2;
455 Double_t y_2labox = 2.8;
456 Double_t z_2labox = 0.303;
457 TGeoTranslation* tr_2la =
458 new TGeoTranslation(
"tr_2la", 0, -8.1, high_disc / 2);
459 tr_2la->RegisterYourself();
463 Double_t radin_bord = 0.5;
464 Double_t radout_bord = 0.9;
465 Double_t high_bord = 1.355;
466 Double_t ang_in_bord = 0;
467 Double_t ang_fin_bord = 90;
468 TGeoRotation* rot1_bord1 =
new TGeoRotation(
"rot1_bord1", 14.8, 0, 0);
469 rot1_bord1->RegisterYourself();
470 TGeoCombiTrans* combi_bord1 =
471 new TGeoCombiTrans(-26.7995, -13.0215, 0, rot1_bord1);
472 combi_bord1->SetName(
"combi_bord1");
473 combi_bord1->RegisterYourself();
475 TGeoRotation* rot2_bord1 =
new TGeoRotation(
"rot2_bord1", -50, 0, 0);
476 rot2_bord1->RegisterYourself();
477 TGeoCombiTrans* combi2_bord1 =
478 new TGeoCombiTrans(-21.3795, -20.7636, 0, rot2_bord1);
479 combi2_bord1->SetName(
"combi2_bord1");
480 combi2_bord1->RegisterYourself();
482 TGeoRotation* rot1_bord2 =
new TGeoRotation(
"rot1_bord2", 250, 0, 0);
483 rot1_bord2->RegisterYourself();
484 TGeoCombiTrans* combi1_bord2 =
485 new TGeoCombiTrans(-9.0527, -23.3006, 0, rot1_bord2);
486 combi1_bord2->SetName(
"combi1_bord2");
487 combi1_bord2->RegisterYourself();
489 TGeoRotation* rot_cent_bord =
new TGeoRotation(
"rot_cent_bord", 90, 0, 0);
490 rot_cent_bord->RegisterYourself();
491 TGeoCombiTrans* combi_cent_bord =
492 new TGeoCombiTrans(-6.5, -27.094, 0, rot_cent_bord);
493 combi_cent_bord->SetName(
"combi_cent_bord");
494 combi_cent_bord->RegisterYourself();
496 Double_t x_tong = 2.0;
497 Double_t y_tong = 1.5;
498 Double_t z_tong = 1.35;
499 TGeoTranslation* tr_tong =
new TGeoTranslation(
"tr_tong", 0, -26.75, 0);
500 tr_tong->RegisterYourself();
502 Double_t radin_hole1 = 0;
503 Double_t radout_hole1 = 0.4;
504 Double_t high_hole1 = 1.36;
505 TGeoTranslation* tr_hole1 =
new TGeoTranslation(
"tr_hole1", 0, -28.0, 0);
506 tr_hole1->RegisterYourself();
508 TGeoTranslation* tr2_hole1 =
509 new TGeoTranslation(
"tr2_hole1", -26.5, -8.5, 0);
510 tr2_hole1->RegisterYourself();
512 TGeoTranslation* tr3_hole1 =
513 new TGeoTranslation(
"tr3_hole1", 26.5, -8.5, 0);
514 tr3_hole1->RegisterYourself();
517 Double_t radin_hole2 = 0;
518 Double_t radout_hole2 = 0.335;
519 Double_t high_hole2 = 1.36;
520 TGeoTranslation* tr1_hole2 =
521 new TGeoTranslation(
"tr1_hole2", -28.0, -8.5, 0);
522 tr1_hole2->RegisterYourself();
524 TGeoTranslation* tr2_hole2 =
525 new TGeoTranslation(
"tr2_hole2", 28.0, -8.5, 0);
526 tr2_hole2->RegisterYourself();
529 Double_t radin_T1 = 0.325;
530 Double_t radout_T1 = 0.55;
531 Double_t high_T1 = 1.2;
533 Double_t radin_T2 = 0;
534 Double_t radout_T2 = 1.1;
535 Double_t high_T2 = 1.2;
537 Double_t radin_ccut = 27.5;
538 Double_t radout_ccut = 29.;
539 Double_t high_ccut = 1.4;
540 Double_t ang_in_ccut = 260;
541 Double_t ang_fin_ccut = 280;
544 new TGeoTubeSeg(
"disc", radin_disc, radout_disc, high_disc / 2, ang_in_disc,
546 new TGeoTubeSeg(
"c_cut", radin_ccut, radout_ccut, high_ccut / 2, ang_in_ccut,
549 new TGeoBBox(
"box1", x_1box / 2, y_1box / 2, z_1box / 2);
550 new TGeoBBox(
"box2", x_2box / 2, y_2box / 2, z_2box / 2);
551 new TGeoBBox(
"box3", x_3box / 2, y_3box / 2, z_3box / 2);
552 new TGeoBBox(
"labox1", x_labox / 2, y_labox / 2, z_labox / 2);
553 new TGeoBBox(
"labox2", x_2labox / 2, y_2labox / 2, z_2labox / 2);
554 new TGeoBBox(
"cbox", xc_box / 2, yc_box / 2, zc_box / 2);
555 new TGeoBBox(
"tongbox", x_tong / 2, y_tong / 2, z_tong / 2);
557 new TGeoTubeSeg(
"seg_1hole", radin_1hole, radout_1hole, high_1hole / 2,
558 ang_in_1hole, ang_fin_1hole);
559 new TGeoTubeSeg(
"seg_2hole", radin_2hole, radout_2hole, high_2hole / 2,
560 ang_in_2hole, ang_fin_2hole);
561 new TGeoTubeSeg(
"seg_3hole", radin_3hole, radout_3hole, high_3hole / 2,
562 ang_in_3hole, ang_fin_3hole);
563 new TGeoTubeSeg(
"seg_bord", radin_bord, radout_bord, high_bord / 2,
564 ang_in_bord, ang_fin_bord);
566 new TGeoTube(
"circ_hole1", radin_hole1, radout_hole1, high_hole1 / 2);
568 new TGeoTube(
"circ_hole2", radin_hole2, radout_hole2, high_hole2 / 2);
570 new TGeoTube(
"circ_holeB", radin_holeB, radout_holeB, high_holeB / 2);
574 new TGeoCompositeShape(
"base_Shape_0",
" disc - box1 - box2 - box3");
575 new TGeoCompositeShape(
577 "(seg_1hole - seg_bord:combi_bord1 - seg_bord:combi2_bord1) + seg_2hole "
578 "-seg_bord:combi1_bord2 + cbox:tr_cbox");
580 new TGeoCompositeShape(
"base_Shape_2",
581 " seg_3hole + seg_bord:combi_cent_bord");
583 new TGeoCompositeShape(
"base_Shape_3",
" labox1:tr_la + labox2:tr_2la ");
585 auto* base_Shape_4 =
new TGeoCompositeShape(
587 "base_Shape_0 - base_Shape_1 - base_Shape_1:rot1 + base_Shape_2 - "
588 "base_Shape_3 + tongbox:tr_tong - c_cut");
590 auto* base4_Volume =
new TGeoVolume(
"base4_Volume", base_Shape_4, malu5083);
592 base->AddNode(base4_Volume, 2, rot_base);
595 auto* middle =
new TGeoVolumeAssembly(
"middle");
596 auto* middle_L =
new TGeoVolumeAssembly(
"middle_L");
597 auto* middle_R =
new TGeoVolumeAssembly(
"middle_R");
600 Double_t radin_fwm = 14.406;
601 Double_t radout_fwm = 15.185;
602 Double_t high_fwm = 0.6;
603 Double_t ang_in_fwm = 180. + 12.93;
604 Double_t ang_fin_fwm = 180. + 58.65;
607 Double_t x_fwm_1box = 0.8;
608 Double_t y_fwm_1box = 1.45;
609 Double_t z_fwm_1box = 0.6;
610 TGeoTranslation* tr_fwm_1box =
611 new TGeoTranslation(
"tr_fwm_1box", -14.4, -3.398 + 1.45 / 2, 0);
612 tr_fwm_1box->RegisterYourself();
615 Double_t x_fwm_2box = 0.8;
616 Double_t y_fwm_2box = 1.2;
617 Double_t z_fwm_2box = 0.7;
618 TGeoTranslation* tr_fwm_2box =
619 new TGeoTranslation(
"tr_fwm_2box", -14.4 + 6.9, -3.398 - 9.1, 0);
620 tr_fwm_2box->RegisterYourself();
622 TGeoXtru* tria_fwm =
new TGeoXtru(2);
623 tria_fwm->SetName(
"tria_fwm");
625 Double_t x_tria_fwm[3] = {-13.5, -10., -10.};
626 Double_t y_tria_fwm[3] = {-5.94, -5.94, -10.8};
627 tria_fwm->DefinePolygon(3, x_tria_fwm, y_tria_fwm);
628 tria_fwm->DefineSection(0, -0.3, 0., 0., 1);
629 tria_fwm->DefineSection(1, 0.3, 0., 0., 1);
633 Double_t x_middle = 0.8;
634 Double_t y_middle = 3.495;
635 Double_t z_middle = 0.62;
637 TGeoTranslation* tr1_middle_box =
638 new TGeoTranslation(
"tr1_middle_box", -14.4, -0.745, 0);
639 tr1_middle_box->RegisterYourself();
641 TGeoTranslation* tr2_middle_box =
642 new TGeoTranslation(
"tr2_middle_box", -15.2, -0.745, 0);
643 tr2_middle_box->RegisterYourself();
646 Double_t x_middle_d1box = 0.4;
647 Double_t y_middle_d1box = 0.28;
648 Double_t z_middle_d1box = 0.66;
649 TGeoTranslation* tr_middle_d1box =
650 new TGeoTranslation(
"tr_middle_d1box", -7.3, -11.96, 0.);
651 tr_middle_d1box->RegisterYourself();
654 Double_t x_middle_d2box = 0.8;
655 Double_t y_middle_d2box = 1.0;
656 Double_t z_middle_d2box = 0.66;
657 TGeoTranslation* tr_middle_d2box =
658 new TGeoTranslation(
"tr_middle_d2box", -7.5, -12.6249, 0);
659 tr_middle_d2box->RegisterYourself();
662 Double_t radin_middle = 14.0;
663 Double_t radout_middle = 15.0;
664 Double_t high_middle = 0.6;
665 Double_t ang_in_middle = 180;
666 Double_t ang_fin_middle = 238.21;
669 Double_t radin_mid_1hole = 0.;
670 Double_t radout_mid_1hole = 0.175;
671 Double_t high_mid_1hole = 1.5;
673 TGeoRotation* rot_mid_1hole =
new TGeoRotation(
"rot_mid_1hole", 90, 90, 0);
674 rot_mid_1hole->RegisterYourself();
675 TGeoCombiTrans* combi_mid_1tubhole =
676 new TGeoCombiTrans(-14.2, 0.325, 0, rot_mid_1hole);
677 combi_mid_1tubhole->SetName(
"combi_mid_1tubhole");
678 combi_mid_1tubhole->RegisterYourself();
681 Double_t radin_mid_2hole = 0.;
682 Double_t radout_mid_2hole = 0.15;
683 Double_t high_mid_2hole = 1.8;
685 TGeoCombiTrans* combi_mid_2tubhole =
686 new TGeoCombiTrans(-7.7, -12.355, 0, rot_mid_1hole);
687 combi_mid_2tubhole->SetName(
"combi_mid_2tubhole");
688 combi_mid_2tubhole->RegisterYourself();
691 new TGeoBBox(
"middle_box", x_middle / 2, y_middle / 2, z_middle / 2);
693 new TGeoBBox(
"middle_d1box", x_middle_d1box / 2, y_middle_d1box / 2,
696 new TGeoBBox(
"middle_d2box", x_middle_d2box / 2, y_middle_d2box / 2,
699 new TGeoTubeSeg(
"arc_middle", radin_middle, radout_middle, high_middle / 2,
700 ang_in_middle, ang_fin_middle);
702 new TGeoTube(
"mid_1tubhole", radin_mid_1hole, radout_mid_1hole,
705 new TGeoTube(
"mid_2tubhole", radin_mid_2hole, radout_mid_2hole,
708 auto* tube_fwm =
new TGeoTubeSeg(
"tube_fwm", radin_fwm, radout_fwm,
709 high_fwm / 2, ang_in_fwm, ang_fin_fwm);
711 new TGeoBBox(
"fwm_1box", x_fwm_1box / 2, y_fwm_1box / 2, z_fwm_1box / 2);
713 new TGeoBBox(
"fwm_2box", x_fwm_2box / 2, y_fwm_2box / 2, z_fwm_2box / 2);
716 new TGeoCompositeShape(
718 " arc_middle + middle_box:tr1_middle_box - middle_box:tr2_middle_box - "
719 "middle_d1box:tr_middle_d1box - middle_d2box:tr_middle_d2box");
721 auto* middle_Shape_1 =
new TGeoCompositeShape(
724 "-mid_1tubhole:combi_mid_1tubhole-mid_2tubhole:combi_mid_2tubhole");
726 TGeoRotation* rot_middlez =
new TGeoRotation(
"rot_middley", 180, 180, 0);
727 rot_middlez->RegisterYourself();
728 TGeoCombiTrans* combi_middle_L =
729 new TGeoCombiTrans(0, -7.625, 24.15 + 0.675, rot_90x);
730 combi_middle_L->SetName(
"combi_middle_L");
731 combi_middle_L->RegisterYourself();
733 TGeoTranslation* tr_middle_L =
734 new TGeoTranslation(
"tr_middle_L", 0, -4.45 - 0.1, 24.85 + 0.675);
735 tr_middle_L->RegisterYourself();
737 TGeoCombiTrans* combi_middle_R =
738 new TGeoCombiTrans(0, -4.45 - 0.1, 24.85 + 0.675, rot_middlez);
739 combi_middle_R->SetName(
"combi_middle_R");
740 combi_middle_R->RegisterYourself();
742 auto* middle_Shape_3 =
new TGeoCompositeShape(
744 " tube_fwm + fwm_1box:tr_fwm_1box - fwm_2box:tr_fwm_2box +tria_fwm");
746 auto* middle_Shape_4 =
new TGeoCompositeShape(
748 " tube_fwm + fwm_1box:tr_fwm_1box - fwm_2box:tr_fwm_2box +tria_fwm");
750 auto* middle_Volume_L =
751 new TGeoVolume(
"middle_Volume_L", middle_Shape_3, malu5083);
752 auto* middle_Volume_R =
753 new TGeoVolume(
"middle_Volume_R", middle_Shape_4, malu5083);
755 TGeoTranslation* tr_middle =
756 new TGeoTranslation(
"tr_middle", 0, -4.45 - 0.1, 24.85 + 0.675);
757 tr_middle->RegisterYourself();
759 middle_L->AddNode(middle_Volume_L, 1, tr_middle);
760 middle_R->AddNode(middle_Volume_R, 1, combi_middle_R);
762 middle->AddNode(middle_L, 1);
763 middle->AddNode(middle_R, 2);
768 auto* rail_L_R =
new TGeoVolumeAssembly(
"rail_L_R");
771 auto* rail_L =
new TGeoVolumeAssembly(
"rail_L");
774 Double_t x_RL_1box = 3.0;
775 Double_t y_RL_1box = 1.21;
776 Double_t z_RL_1box = 0.8;
777 TGeoTranslation* tr_RL_1box =
new TGeoTranslation(0, y_RL_1box / 2, 1.825);
778 tr_RL_1box->SetName(
"tr_RL_1box");
779 tr_RL_1box->RegisterYourself();
781 TGeoXtru* xtru_RL1 =
new TGeoXtru(2);
782 xtru_RL1->SetName(
"S_XTRU_RL1");
784 Double_t x_RL1[5] = {-1.5, 1.5, 0.5, 0.5, -1.5};
785 Double_t y_RL1[5] = {1.2, 1.2, 2.2, 8.2, 8.2};
786 xtru_RL1->DefinePolygon(5, x_RL1, y_RL1);
787 xtru_RL1->DefineSection(0, -2.225, 0., 0., 1);
788 xtru_RL1->DefineSection(1, 2.225, 0., 0., 1);
791 Double_t x_RL_kneebox = 1.5;
792 Double_t y_RL_kneebox = 3.5;
793 Double_t z_RL_kneebox = 1.5;
794 TGeoTranslation* tr_RL_kneebox =
new TGeoTranslation(0, 0, 0);
795 tr_RL_kneebox->SetName(
"tr_RL_kneebox");
796 tr_RL_kneebox->RegisterYourself();
798 TGeoRotation* rot_knee =
new TGeoRotation(
"rot_knee", -40, 0, 0);
799 rot_knee->SetName(
"rot_knee");
800 rot_knee->RegisterYourself();
801 TGeoCombiTrans* combi_knee =
802 new TGeoCombiTrans(0.96, 1.75 + 0.81864, 0, rot_knee);
803 combi_knee->SetName(
"combi_knee");
804 combi_knee->RegisterYourself();
806 Double_t x_qdi_box = 3.1;
807 Double_t y_qdi_box = 7.159;
808 Double_t z_qdi_box = 3.005;
810 TGeoRotation* rot_qdi =
new TGeoRotation(
"rot_qdi", 0, 24.775, 0);
811 rot_qdi->RegisterYourself();
812 TGeoCombiTrans* combi_qdi =
new TGeoCombiTrans(0, 5.579, -2.087, rot_qdi);
813 combi_qdi->SetName(
"combi_qdi");
814 combi_qdi->RegisterYourself();
817 TGeoXtru* xtru3_RL =
new TGeoXtru(2);
818 xtru3_RL->SetName(
"xtru3_RL");
820 Double_t x_3RL[6] = {-0.75, 0.75, 0.75, 2.6487, 1.4997, -0.75};
821 Double_t y_3RL[6] = {-1.75, -1.75, 1.203, 3.465, 4.4311, 1.75};
823 xtru3_RL->DefinePolygon(6, x_3RL, y_3RL);
824 xtru3_RL->DefineSection(0, -0.75, 0, 0, 1);
825 xtru3_RL->DefineSection(1, 0.76, 0, 0, 1);
827 TGeoTranslation* tr_vol3_RL =
new TGeoTranslation(-0.25, 12.66, 0);
828 tr_vol3_RL->SetName(
"tr_vol3_RL");
829 tr_vol3_RL->RegisterYourself();
833 Double_t radin_RL1hole = 0.;
834 Double_t radout_RL1hole = 0.325;
835 Double_t high_RL1hole = 1.0;
837 TGeoRotation* rot_RL1hole =
new TGeoRotation(
"rot_RL1hole", 0, 0, 0);
838 rot_RL1hole->RegisterYourself();
839 TGeoCombiTrans* combi_RL1hole =
840 new TGeoCombiTrans(0.7, 0.6, 1.85, rot_RL1hole);
841 combi_RL1hole->SetName(
"combi_RL1hole");
842 combi_RL1hole->RegisterYourself();
845 Double_t radin_ir_railL = 0.;
846 Double_t radout_ir_railL = 0.15;
847 Double_t high_ir_railL = 3.9;
848 TGeoRotation* rot_ir_RL =
new TGeoRotation(
"rot_ir_RL", 90, 90, 0);
849 rot_ir_RL->RegisterYourself();
851 TGeoCombiTrans* combi_ir1_RL =
852 new TGeoCombiTrans(8.62, 24.75, 1.5, rot_ir_RL);
853 combi_ir1_RL->SetName(
"combi_ir1_RL");
854 combi_ir1_RL->RegisterYourself();
856 TGeoCombiTrans* combi_ir2_RL =
new TGeoCombiTrans(8.6, 33.15, 1.5, rot_ir_RL);
857 combi_ir2_RL->SetName(
"combi_ir2_RL");
858 combi_ir2_RL->RegisterYourself();
860 TGeoXtru* xtru_RL2 =
new TGeoXtru(2);
861 xtru_RL2->SetName(
"S_XTRU_RL2");
863 Double_t x_RL2[8] = {-1.5, 0.5, 0.5, 9.3, 9.3, 7.3, 7.3, -1.5};
864 Double_t y_RL2[8] = {8.2, 8.2, 13.863, 24.35, 25.65, 25.65, 25.078, 14.591};
866 xtru_RL2->DefinePolygon(8, x_RL2, y_RL2);
867 xtru_RL2->DefineSection(0, 0.7752, 0, 0, 1);
868 xtru_RL2->DefineSection(1, 2.225, 0, 0, 1);
871 TGeoXtru* adi1_RL =
new TGeoXtru(2);
872 adi1_RL->SetName(
"S_ADI1_RL");
874 Double_t x_adi1RL[4] = {-1.5, -1.5, 0.5, 0.5};
875 Double_t y_adi1RL[4] = {2.2, 13.863, 13.863, 2.2};
877 adi1_RL->DefinePolygon(4, x_adi1RL, y_adi1RL);
878 adi1_RL->DefineSection(0, -0.75, 0, 0, 1);
879 adi1_RL->DefineSection(1, 0.775, 0, 0, 1);
882 TGeoXtru* adi2_RL =
new TGeoXtru(2);
883 adi2_RL->SetName(
"S_ADI2_RL");
884 Double_t x_adi2RL[6] = {-1.5, 0.5, 9.3, 9.3, 7.8, 7.8};
885 Double_t y_adi2RL[6] = {13.863, 13.863, 24.35, 25.65, 25.65, 25.078};
887 adi2_RL->DefinePolygon(6, x_adi2RL, y_adi2RL);
888 adi2_RL->DefineSection(0, -0.75, 0, 0, 1);
889 adi2_RL->DefineSection(1, 0.7755, 0, 0, 1);
892 Double_t RL_dx1 = 2.66;
894 Double_t RL_dy = 2.2;
895 Double_t RL_dz = 1.5;
897 TGeoRotation* rot_RL_Z50 =
new TGeoRotation(
"rot_RL_Z50", 50, 0, 0);
898 rot_RL_Z50->RegisterYourself();
899 TGeoCombiTrans* combi_RL_trap =
900 new TGeoCombiTrans(5, 18.633, -1.5 - 0.025, rot_RL_Z50);
901 combi_RL_trap->SetName(
"combi_RL_trap");
902 combi_RL_trap->RegisterYourself();
905 Double_t x_qinf_box = 10.66;
906 Double_t y_qinf_box = 10.2;
907 Double_t z_qinf_box = 3.;
908 auto* s_RL_qinf_box =
new TGeoBBox(
"S_RL_QINF_BOX", x_qinf_box / 2,
909 y_qinf_box / 2, z_qinf_box / 2);
910 TGeoCombiTrans* combi_RL_qbox =
911 new TGeoCombiTrans(7, 23., -1.5 - 0.025, rot_RL_Z50);
912 combi_RL_qbox->SetName(
"combi_RL_qbox");
913 combi_RL_qbox->RegisterYourself();
916 TGeoXtru* pentfa_RL =
new TGeoXtru(2);
917 pentfa_RL->SetName(
"S_PENTFA_RL");
918 Double_t x_pentfaRL[5] = {-1., -1., 0.13, 1., 1.};
919 Double_t y_pentfaRL[5] = {1.125, 0.045, -1.125, -1.125, 1.125};
921 pentfa_RL->DefinePolygon(5, x_pentfaRL, y_pentfaRL);
922 pentfa_RL->DefineSection(0, -5.05, 0, 0, 1);
923 pentfa_RL->DefineSection(1, 5.055, 0, 0, 1);
925 TGeoRotation* rot_X90 =
new TGeoRotation(
"rot_X90", 0, 90, 0);
926 rot_X90->RegisterYourself();
927 TGeoCombiTrans* combi_RL_pent =
928 new TGeoCombiTrans(8.3, 30.705, 1.125 - 0.025, rot_X90);
929 combi_RL_pent->SetName(
"combi_RL_pent");
930 combi_RL_pent->RegisterYourself();
933 new TGeoBBox(
"RL_1box", x_RL_1box / 2, y_RL_1box / 2, z_RL_1box / 2);
934 new TGeoBBox(
"RL_kneebox", x_RL_kneebox / 2, y_RL_kneebox / 2,
936 new TGeoBBox(
"qdi_box", x_qdi_box / 2, y_qdi_box / 2, z_qdi_box / 2);
937 new TGeoTrd1(
"TRAP1", RL_dx1, RL_dx2, RL_dy, RL_dz);
941 auto* RL_Shape_0 =
new TGeoCompositeShape(
943 " S_XTRU_RL1 + S_XTRU_RL2 + RL_1box:tr_RL_1box - "
944 "qdi_box:combi_qdi + "
945 "S_ADI1_RL + S_ADI2_RL - TRAP1:combi_RL_trap - "
946 "S_RL_QINF_BOX:combi_RL_qbox + "
947 "S_PENTFA_RL:combi_RL_pent");
949 TGeoVolume* rail_L_vol0 =
new TGeoVolume(
"RAIL_L_VOL0", RL_Shape_0, malu5083);
951 rail_L->AddNode(rail_L_vol0, 1,
new TGeoTranslation(0., 0., 1.5));
954 Double_t x_RR_1box = 3.0;
955 Double_t y_RR_1box = 1.2;
956 Double_t z_RR_1box = 0.8;
957 TGeoTranslation* tr_RR_1box =
958 new TGeoTranslation(
"tr_RR_1box", 0, 0.6, 1.825);
959 tr_RR_1box->RegisterYourself();
961 TGeoXtru* part_RR1 =
new TGeoXtru(2);
962 part_RR1->SetName(
"part_RR1");
964 Double_t x_RR1[5] = {-1.5, -0.5, -0.5, 1.5, 1.5};
965 Double_t y_RR1[5] = {1.2, 2.2, 8.2, 8.2, 1.2};
967 part_RR1->DefinePolygon(5, x_RR1, y_RR1);
968 part_RR1->DefineSection(0, -2.225, 0, 0, 1);
969 part_RR1->DefineSection(1, 2.225, 0, 0, 1);
972 TGeoXtru* part_RR3 =
new TGeoXtru(2);
973 part_RR3->SetName(
"part_RR3");
975 Double_t x_3RR[6] = {1.0, 1.0, -1.2497, -2.2138, -0.5, -0.5};
976 Double_t y_3RR[6] = {10.91, 14.41, 17.0911, 15.9421, 13.86, 10.91};
978 part_RR3->DefinePolygon(6, x_3RR, y_3RR);
979 part_RR3->DefineSection(0, -0.75, 0, 0, 1);
980 part_RR3->DefineSection(1, 0.78, 0, 0, 1);
982 TGeoTranslation* tr_vol3_RR =
983 new TGeoTranslation(
"tr_vol3_RR", -0.25, 12.66, 0);
984 tr_vol3_RR->RegisterYourself();
987 Double_t x_qdi_Rbox = 3.1;
988 Double_t y_qdi_Rbox = 7.159;
989 Double_t z_qdi_Rbox = 3.005;
991 TGeoRotation* rot_Rqdi =
new TGeoRotation(
"rot_Rqdi", 0, 24.775, 0);
992 rot_Rqdi->RegisterYourself();
993 TGeoCombiTrans* combi_Rqdi =
new TGeoCombiTrans(0, 5.579, -2.087, rot_Rqdi);
994 combi_Rqdi->SetName(
"combi_Rqdi");
995 combi_Rqdi->RegisterYourself();
998 Double_t radin_a_rail = 0.;
999 Double_t radout_a_rail = 0.325;
1000 Double_t high_a_rail = 0.82;
1002 TGeoTranslation* tr_a_RR =
new TGeoTranslation(
"tr_a_RR", -0.7, 0.6, 1.825);
1003 tr_a_RR->RegisterYourself();
1005 Double_t radin_ir_rail = 0.;
1006 Double_t radout_ir_rail = 0.15;
1007 Double_t high_ir_rail = 3.2;
1008 TGeoRotation* rot_ir_RR =
new TGeoRotation(
"rot_ir_RR", 90, 90, 0);
1009 rot_ir_RR->RegisterYourself();
1011 TGeoCombiTrans* combi_ir_RR =
1012 new TGeoCombiTrans(-8.62, 24.75, 1.5, rot_ir_RR);
1013 combi_ir_RR->SetName(
"combi_ir_RR");
1014 combi_ir_RR->RegisterYourself();
1016 TGeoCombiTrans* combi_ir2_RR =
1017 new TGeoCombiTrans(-8.6, 33.15, 1.5, rot_ir_RR);
1018 combi_ir2_RR->SetName(
"combi_ir2_RR");
1019 combi_ir2_RR->RegisterYourself();
1021 TGeoCombiTrans* combi_rail_R =
new TGeoCombiTrans(24.1, -1.825, 0, rot_90x);
1022 combi_rail_R->SetName(
"combi_rail_R");
1023 combi_rail_R->RegisterYourself();
1024 TGeoCombiTrans* combi_rail_L =
new TGeoCombiTrans(-24.1, -1.825, 0, rot_90x);
1025 combi_rail_L->SetName(
"combi_rail_L");
1026 combi_rail_L->RegisterYourself();
1029 TGeoTranslation* tr_sr_l =
new TGeoTranslation(
"tr_sr_l", -15.01, 0, 0);
1030 tr_sr_l->RegisterYourself();
1031 TGeoTranslation* tr_sr_r =
new TGeoTranslation(
"tr_sr_r", 15.01, 0, 0);
1032 tr_sr_r->RegisterYourself();
1035 TGeoXtru* part_RR2 =
new TGeoXtru(2);
1036 part_RR2->SetName(
"part_RR2");
1038 Double_t x_RR2[8] = {-0.5, -0.5, -9.3, -9.3, -7.3, -7.3, 1.5, 1.5};
1039 Double_t y_RR2[8] = {8.2, 13.863, 24.35, 25.65, 25.65, 25.078, 14.591, 8.2};
1041 part_RR2->DefinePolygon(8, x_RR2, y_RR2);
1042 part_RR2->DefineSection(0, 0.776, 0, 0, 1);
1043 part_RR2->DefineSection(1, 2.225, 0, 0, 1);
1046 TGeoXtru* adi1_RR =
new TGeoXtru(2);
1047 adi1_RR->SetName(
"S_ADI1_RR");
1049 Double_t x_adi1RR[4] = {-0.5, -.5, 1.5, 1.5};
1050 Double_t y_adi1RR[4] = {2.2, 13.863, 13.863, 2.2};
1052 adi1_RR->DefinePolygon(4, x_adi1RR, y_adi1RR);
1053 adi1_RR->DefineSection(0, -0.75, 0, 0, 1);
1054 adi1_RR->DefineSection(1, 0.775, 0, 0, 1);
1057 TGeoXtru* adi2_RR =
new TGeoXtru(2);
1058 adi2_RR->SetName(
"S_ADI2_RR");
1059 Double_t x_adi2RR[6] = {1.5, -0.5, -9.3, -9.3, -7.8, -7.8};
1060 Double_t y_adi2RR[6] = {13.863, 13.863, 24.35, 25.65, 25.65, 25.078};
1062 adi2_RR->DefinePolygon(6, x_adi2RR, y_adi2RR);
1063 adi2_RR->DefineSection(0, -0.75, 0, 0, 1);
1064 adi2_RR->DefineSection(1, 0.7755, 0, 0, 1);
1067 TGeoRotation* rot_RR_Z310 =
new TGeoRotation(
"rot_RR_Z310", -50, 0, 0);
1068 rot_RR_Z310->RegisterYourself();
1069 TGeoCombiTrans* combi_RR_trap =
1070 new TGeoCombiTrans(-5, 18.633, -1.5 - 0.025, rot_RR_Z310);
1071 combi_RR_trap->SetName(
"combi_RR_trap");
1072 combi_RR_trap->RegisterYourself();
1075 TGeoCombiTrans* combi_RR_qbox =
1076 new TGeoCombiTrans(-7, 23., -1.5 - 0.025, rot_RR_Z310);
1077 combi_RR_qbox->SetName(
"combi_RR_qbox");
1078 combi_RR_qbox->RegisterYourself();
1081 TGeoXtru* pentfa_RR =
new TGeoXtru(2);
1082 pentfa_RR->SetName(
"S_PENTFA_RR");
1083 Double_t x_pentfaRR[5] = {1., 1., -0.13, -1., -1.};
1084 Double_t y_pentfaRR[5] = {1.125, 0.045, -1.125, -1.125, 1.125};
1086 pentfa_RR->DefinePolygon(5, x_pentfaRR, y_pentfaRR);
1087 pentfa_RR->DefineSection(0, -5.05, 0, 0, 1);
1088 pentfa_RR->DefineSection(1, 5.055, 0, 0, 1);
1090 TGeoCombiTrans* combi_RR_pent =
1091 new TGeoCombiTrans(-8.3, 30.705, 1.125 - 0.025, rot_X90);
1092 combi_RR_pent->SetName(
"combi_RR_pent");
1093 combi_RR_pent->RegisterYourself();
1096 new TGeoBBox(
"RR_1box", x_RR_1box / 2, y_RR_1box / 2, z_RR_1box / 2);
1099 new TGeoCompositeShape(
1101 "RR_1box:tr_RR_1box + part_RR1 + part_RR2 - qdi_box:combi_qdi + "
1102 "S_ADI1_RR + S_ADI2_RR - TRAP1:combi_RR_trap - "
1103 "S_RL_QINF_BOX:combi_RR_qbox +S_PENTFA_RR:combi_RR_pent ");
1106 auto* rail_L_R_Shape =
new TGeoCompositeShape(
1107 "RAIL_L_R_Shape",
" RL_Shape_0:combi_rail_L + RR_Shape_0:combi_rail_R");
1109 TGeoVolume* rail_L_R_vol0 =
1110 new TGeoVolume(
"RAIL_L_R_VOL0", rail_L_R_Shape, malu5083);
1112 TGeoRotation* rot_rLR =
new TGeoRotation(
"rot_rLR", 180, 180, 0);
1113 rot_rLR->RegisterYourself();
1114 TGeoCombiTrans* combi_rLR =
new TGeoCombiTrans(0, -6.9, -0.5, rot_rLR);
1115 combi_rLR->SetName(
"combi_rLR");
1116 combi_rLR->RegisterYourself();
1118 rail_L_R->AddNode(rail_L_R_vol0, 2, combi_rLR);
1122 auto* sup_rail_MBL =
new TGeoVolumeAssembly(
"sup_rail_MBL");
1126 TGeoXtru* sup_MB_L =
new TGeoXtru(2);
1127 sup_MB_L->SetName(
"sup_MB_L");
1130 Double_t x_sMB_L[11] = {0., 0., 8.12, 24.55, 24.55, 28.25,
1131 28.25, 34.55, 34.55, 31.737, 6.287};
1132 Double_t y_sMB_L[11] = {0., 1.8, 1.8, 9.934, 12.6, 12.6,
1133 13.4, 13.4, 12.6, 12.6, 0.};
1135 sup_MB_L->DefinePolygon(11, x_sMB_L, y_sMB_L);
1136 sup_MB_L->DefineSection(0, -0.4, 0, 0, 1);
1137 sup_MB_L->DefineSection(1, 0.4, 0, 0, 1);
1139 TGeoXtru* part_MBL_0 =
new TGeoXtru(2);
1140 part_MBL_0->SetName(
"part_MBL_0");
1142 Double_t
x[8] = {0., 0, 6.1, 31.55, 34.55, 34.55, 31.946, 6.496};
1143 Double_t
y[8] = {-0.4, 0.4, 0.4, 13.0, 13.0, 12.2, 12.2, -0.4};
1145 part_MBL_0->DefinePolygon(8,
x,
y);
1146 part_MBL_0->DefineSection(0, -0.4, 0, 0, 1);
1147 part_MBL_0->DefineSection(1, 0.4, 0, 0, 1);
1149 TGeoRotation* rot1_MBL_0 =
new TGeoRotation(
"rot1_MBL_0", -90, -90, 90);
1150 rot1_MBL_0->RegisterYourself();
1153 Double_t x_mb_box = 0.8;
1154 Double_t y_mb_box = 0.8;
1155 Double_t z_mb_box = 0.81;
1156 TGeoTranslation* tr_mb_box =
new TGeoTranslation(
"tr_mb_box", 24.05, 9.55, 0);
1157 tr_mb_box->RegisterYourself();
1160 Double_t x_lat_box = 0.7;
1161 Double_t y_lat_box = 1.8;
1162 Double_t z_lat_box = 0.2;
1163 TGeoTranslation* tr_lat1L_box =
1164 new TGeoTranslation(
"tr_lat1L_box", 4.6, 0, 0.4);
1165 tr_lat1L_box->RegisterYourself();
1166 TGeoTranslation* tr_lat2L_box =
1167 new TGeoTranslation(
"tr_lat2L_box", 9.6, 1.65, 0.4);
1168 tr_lat2L_box->RegisterYourself();
1170 TGeoTranslation* tr_lat3L_box =
1171 new TGeoTranslation(
"tr_lat3L_box", 17.35, 5.923, 0.4);
1172 tr_lat3L_box->RegisterYourself();
1173 TGeoTranslation* tr_lat4L_box =
1174 new TGeoTranslation(
"tr_lat4L_box", 26.45, 10, 0.4);
1175 tr_lat4L_box->RegisterYourself();
1176 TGeoTranslation* tr_lat5L_box =
1177 new TGeoTranslation(
"tr_lat5L_box", 29.9, 11.6, 0.4);
1178 tr_lat5L_box->RegisterYourself();
1180 TGeoTranslation* tr_lat1R_box =
1181 new TGeoTranslation(
"tr_lat1R_box", 4.6, 0, -0.4);
1182 tr_lat1R_box->RegisterYourself();
1183 TGeoTranslation* tr_lat2R_box =
1184 new TGeoTranslation(
"tr_lat2R_box", 9.6, 1.65, -0.4);
1185 tr_lat2R_box->RegisterYourself();
1187 TGeoTranslation* tr_lat3R_box =
1188 new TGeoTranslation(
"tr_lat3R_box", 17.35, 5.923, -0.4);
1189 tr_lat3R_box->RegisterYourself();
1190 TGeoTranslation* tr_lat4R_box =
1191 new TGeoTranslation(
"tr_lat4R_box", 26.45, 10, -0.4);
1192 tr_lat4R_box->RegisterYourself();
1193 TGeoTranslation* tr_lat5R_box =
1194 new TGeoTranslation(
"tr_lat5R_box", 29.9, 11.6, -0.4);
1195 tr_lat5R_box->RegisterYourself();
1198 Double_t radin_1mb = 0.;
1199 Double_t radout_1mb = 0.175;
1200 Double_t high_1mb = 2.825;
1201 TGeoTranslation* tr1_mb =
new TGeoTranslation(
"tr1_mb", 18.48, 6.1, 0.);
1202 tr1_mb->RegisterYourself();
1204 TGeoTranslation* tr2_mb =
new TGeoTranslation(
"tr2_mb", 24.15, 8.9, 0.);
1205 tr2_mb->RegisterYourself();
1208 Double_t radin_2mb = 0.;
1209 Double_t radout_2mb = 0.15;
1210 Double_t high_2mb = 0.82;
1212 TGeoRotation* rot_hole2_MBL =
new TGeoRotation(
"rot_hole2_MBL", 0, 90, 0);
1213 rot_hole2_MBL->RegisterYourself();
1215 TGeoTranslation* tr_mbl =
new TGeoTranslation(
"tr_mbl", -7.5, 0., 0.);
1216 tr_mbl->RegisterYourself();
1218 TGeoTranslation* tr_mbr =
new TGeoTranslation(
"tr_mbr", 7.5, 0, 0);
1219 tr_mbr->RegisterYourself();
1222 TGeoCombiTrans* combi_hup_mb =
new TGeoCombiTrans(32.5, 12.6, 0, rot_90x);
1223 combi_hup_mb->SetName(
"combi_hup_mb");
1224 combi_hup_mb->RegisterYourself();
1227 new TGeoBBox(
"mb_box", x_mb_box / 2, y_mb_box / 2, z_mb_box / 2);
1228 new TGeoTube(
"hole_1mbl", radin_1mb, radout_1mb, high_1mb / 2);
1229 new TGeoTube(
"hole_2mbl", radin_2mb, radout_2mb, high_2mb / 2);
1230 new TGeoBBox(
"lat_box", x_lat_box / 2, y_lat_box / 2, z_lat_box / 2);
1233 auto* MB_Shape_0 =
new TGeoCompositeShape(
1234 "MB_Shape_0",
" sup_MB_L - hole_2mbl:combi_hup_mb ");
1235 auto* MB_Shape_0L =
new TGeoCompositeShape(
1236 "MB_Shape_0L",
"MB_Shape_0 - lat_box:tr_lat3L_box ");
1237 auto* MB_Shape_0R =
new TGeoCompositeShape(
1238 "MB_Shape_0R",
"MB_Shape_0 - lat_box:tr_lat3R_box ");
1240 new TGeoCompositeShape(
"MB_Shape_1L",
"MB_Shape_0L:rot1_MBL_0 - hole_2mbl");
1242 new TGeoCompositeShape(
"MB_Shape_1R",
"MB_Shape_0R:rot1_MBL_0 - hole_2mbl");
1244 auto* MB_Shape_2 =
new TGeoCompositeShape(
1245 "MB_Shape_2",
" MB_Shape_1L:tr_mbl + MB_Shape_1R:tr_mbr ");
1247 TGeoVolume* sup_rail_MBL_vol =
1248 new TGeoVolume(
"SUPPORT_MBL_VOL", MB_Shape_2, malu5083);
1250 sup_rail_MBL->AddNode(sup_rail_MBL_vol, 1, rot_halfR);
1252 auto* stair =
new TGeoVolumeAssembly(
"stair");
1254 stair->AddNode(sup_rail_MBL, 1,
1255 new TGeoTranslation(0, 0 - 28.8 - 0.4, 0 + 0.675));
1256 stair->AddNode(Cross_mft, 1,
new TGeoTranslation(0, -28.8, 4.55 + 0.675));
1257 stair->AddNode(Cross_mft_2, 2,
1258 new TGeoTranslation(0, 1.65 - 28.8, 9.55 + 0.675));
1259 stair->AddNode(Cross_mb0, 4,
1260 new TGeoTranslation(0, 5.423 - 28.8, 17.35 + 0.675));
1261 stair->AddNode(Cross_mft_3, 5,
1262 new TGeoTranslation(0, 11.7 - 28.8, 25.55 + 0.675));
1263 stair->AddNode(Cross_mft_4, 6,
1264 new TGeoTranslation(0, 12.5 - 28.8, 29.05 + 0.675));
1281 t_final_z = -80 - 0.675 - 0.15;
1289 tzMB0 = -(45.3 + 46.7) / 2;
1295 t_final_z = -80 - 0.675 - 0.15;
1303 tzMB0 = -(45.3 + 46.7) / 2;
1307 new TGeoTranslation(
"t_final", t_final_x, t_final_y, t_final_z);
1308 auto* r_final =
new TGeoRotation(
"r_final", r_final_x, r_final_y, r_final_z);
1309 auto* c_final =
new TGeoCombiTrans(*t_final, *r_final);
1312 auto* frame_back =
new TGeoVolumeAssembly(
"frame_back");
1315 Double_t x_box_fwb = 15.8;
1316 Double_t y_box_fwb = 5;
1317 Double_t z_box_fwb = 1;
1320 Double_t x_box2_fwb = 1.9;
1321 Double_t y_box2_fwb = 0.5;
1322 Double_t z_box2_fwb = 0.6;
1325 Double_t radin_fwb = 25.75;
1326 Double_t radout_fwb = 26.75;
1327 Double_t high_fwb = 0.6;
1330 Double_t radin_stub = 23.6;
1331 Double_t radout_stub = 24.4;
1332 Double_t high_stub = 0.6;
1333 Double_t ang_in_stub = 288.9;
1334 Double_t ang_fin_stub = 342.;
1336 TGeoRotation* rot_1hole_fwb =
new TGeoRotation(
"rot_1hole_fwb", 0, 90, 0);
1337 rot_1hole_fwb->RegisterYourself();
1339 TGeoCombiTrans* acombi_fwb =
new TGeoCombiTrans(5.2, 0, 0, rot_1hole_fwb);
1340 acombi_fwb->SetName(
"acombi_1h_fwb");
1341 acombi_fwb->RegisterYourself();
1343 TGeoTranslation* tr_box_y24 =
new TGeoTranslation(
"tr_box_y24", 0, -24., 0.);
1344 tr_box_y24->RegisterYourself();
1346 TGeoTranslation* tr_box2_fwb =
1347 new TGeoTranslation(
"tr_box2_fwb", 24.4 - 1.9 / 2, -7.121 - 0.5 / 2, 0.);
1348 tr_box2_fwb->RegisterYourself();
1350 TGeoRotation* rot_Z180_X180 =
new TGeoRotation(
"rot_Z180_X180", 180, 180, 0);
1351 rot_Z180_X180->RegisterYourself();
1353 TGeoTranslation* tr_fb =
1354 new TGeoTranslation(
"tr_fb", 0, -2.3 - 0.06, 13.85 + 0.675);
1355 tr_fb->RegisterYourself();
1358 new TGeoBBox(
"q_box_fwb", x_box_fwb / 2, y_box_fwb / 2, z_box_fwb / 2);
1360 new TGeoBBox(
"box2_fwb", x_box2_fwb / 2, y_box2_fwb / 2, z_box2_fwb / 2);
1362 new TGeoTube(
"s_tub_fwb", radin_fwb, radout_fwb, high_fwb / 2);
1364 auto* s_stub_fwb =
new TGeoTubeSeg(
"s_stub_fwb", radin_stub, radout_stub,
1365 high_stub / 2, ang_in_stub, ang_fin_stub);
1369 auto* fwb_Shape_0 =
new TGeoCompositeShape(
1371 " s_stub_fwb - q_box_fwb:tr_box_y24 + box2_fwb:tr_box2_fwb ");
1372 auto* fwb_Shape_1 =
new TGeoCompositeShape(
1373 "fwb_Shape_1",
"fwb_Shape_0 + fwb_Shape_0:rot_Z180_X180");
1375 auto* fwb_Volume =
new TGeoVolume(
"fwb_Volume", fwb_Shape_1, malu5083);
1376 frame_back->AddNode(fwb_Volume, 1, tr_fb);
1379 auto* colonne_mb =
new TGeoVolumeAssembly(
"colonne_mb");
1382 Double_t x_box_cmb = 1.9;
1383 Double_t y_box_cmb = 0.6;
1384 Double_t z_box_cmb = 2.2033;
1387 Double_t radin_c_mb = 0.;
1388 Double_t radout_c_mb = 0.3;
1389 Double_t high_c_mb = 2.2033;
1391 TGeoRotation* rot_1c_mb0 =
new TGeoRotation(
"rot_1c_mb0", 0, 90, 0);
1392 rot_1c_mb0->RegisterYourself();
1394 TGeoCombiTrans* acombi_1c_mb0 =
new TGeoCombiTrans(0.95, 0, 0, rot_1c_mb0);
1395 acombi_1c_mb0->SetName(
"acombi_1c_mb0");
1396 acombi_1c_mb0->RegisterYourself();
1397 TGeoCombiTrans* bcombi_1c_mb0 =
new TGeoCombiTrans(-0.95, 0, 0, rot_1c_mb0);
1398 bcombi_1c_mb0->SetName(
"bcombi_1c_mb0");
1399 bcombi_1c_mb0->RegisterYourself();
1402 Double_t x_boxq_cmb = 3.;
1403 Double_t y_boxq_cmb = 1.05;
1404 Double_t z_boxq_cmb = 4.;
1406 TGeoRotation* rot_X19 =
new TGeoRotation(
"rot_X19", 0, -19, 0);
1407 rot_X19->RegisterYourself();
1408 TGeoCombiTrans* combi_qbox =
1409 new TGeoCombiTrans(0, +2.1 / 2 + 0.5, 0, rot_X19);
1410 combi_qbox->SetName(
"combi_qbox");
1411 combi_qbox->RegisterYourself();
1415 new TGeoBBox(
"box_cmb", x_box_cmb / 2, y_box_cmb / 2, z_box_cmb / 2);
1417 new TGeoTube(
"tub_cmb", radin_c_mb, radout_c_mb, high_c_mb / 2);
1419 new TGeoBBox(
"boxq_cmb", x_boxq_cmb / 2, y_boxq_cmb / 2, z_boxq_cmb / 2);
1422 auto* c_mb_Shape_0 =
1423 new TGeoCompositeShape(
1424 "box_cmb:rot_1c_mb0 + tub_cmb:acombi_1c_mb0 + "
1425 "tub_cmb:bcombi_1c_mb0 - boxq_cmb:combi_qbox");
1427 TGeoTranslation* tr_cmb =
new TGeoTranslation(
1428 "tr_cmb", 0, 5.923 - 28.8 + 2.2033 / 2 - 0.2, 17.35 + 0.675);
1429 tr_cmb->RegisterYourself();
1432 auto* colonne_mb_Volume =
1433 new TGeoVolume(
"colonne_mb_Volume", c_mb_Shape_0, malu5083);
1434 colonne_mb->AddNode(colonne_mb_Volume, 1, tr_cmb);
1436 auto* Half_3 =
new TGeoVolumeAssembly(
"Half_3");
1439 Float_t Shell_rmax = 60.6 + .7;
1440 Float_t Shell_rmin = 37.5 + .7;
1444 new TGeoTranslation(
"tShell_0", 0., 0., 3.1 + (25.15 + 1.) / 2.);
1446 new TGeoTranslation(
"tShell_1", 0., 0., -1.6 - (25.15 + 1.) / 2.);
1448 new TGeoTranslation(
"tShellHole", 0., 0., 2. / 2. + (25.15 + 1.) / 2.);
1449 auto* tShellHole_0 =
1450 new TGeoTranslation(
"tShellHole_0", 0., -6.9, -26.1 / 2. - 6.2 / 2. - .1);
1451 auto* tShellHole_1 =
1452 new TGeoTranslation(
"tShellHole_1", 0., 0., -26.1 / 2. - 6.2 / 2. - .1);
1453 auto* tShell_Cut =
new TGeoTranslation(
"tShell_Cut", 0., 25. / 2., 0.);
1454 auto* tShell_Cut_1 =
new TGeoTranslation(
"tShell_Cut_1", -23., 0., -8.);
1455 auto* tShell_Cut_1_inv =
1456 new TGeoTranslation(
"tShell_Cut_1_inv", 23., 0., -8.);
1457 auto* Rz =
new TGeoRotation(
"Rz", 50., 0., 0.);
1458 auto* Rz_inv =
new TGeoRotation(
"Rz_inv", -50., 0., 0.);
1459 auto* RShell_Cut =
new TGeoRotation(
"RShell_Cut", 90., 90. - 24., -7.5);
1460 auto* RShell_Cut_inv =
1461 new TGeoRotation(
"RShell_Cut_inv", 90., 90. + 24., -7.5);
1463 auto* cShell_Cut =
new TGeoCombiTrans(*tShell_Cut_1, *RShell_Cut);
1464 auto* cShell_Cut_inv =
new TGeoCombiTrans(*tShell_Cut_1_inv, *RShell_Cut_inv);
1466 tShell_0->RegisterYourself();
1467 tShell_1->RegisterYourself();
1468 tShellHole->RegisterYourself();
1469 tShellHole_0->RegisterYourself();
1470 tShellHole_1->RegisterYourself();
1471 tShell_Cut->RegisterYourself();
1472 Rz->RegisterYourself();
1473 Rz_inv->RegisterYourself();
1474 RShell_Cut->RegisterYourself();
1475 cShell_Cut->SetName(
"cShell_Cut");
1476 cShell_Cut->RegisterYourself();
1477 cShell_Cut_inv->SetName(
"cShell_Cut_inv");
1478 cShell_Cut_inv->RegisterYourself();
1481 TGeoShape* Shell_0 =
new TGeoTubeSeg(
"Shell_0", Shell_rmax / 2. - .1,
1482 Shell_rmax / 2., 6.2 / 2., 12., 168.);
1483 TGeoShape* Shell_1 =
new TGeoTubeSeg(
"Shell_1", Shell_rmin / 2. - .1,
1484 Shell_rmin / 2., 3.2 / 2., 0., 180.);
1485 new TGeoConeSeg(
"Shell_2", (25.15 + 1.0) / 2., Shell_rmin / 2. - .1,
1486 Shell_rmin / 2., Shell_rmax / 2. - .1, Shell_rmax / 2., 0.,
1488 TGeoShape* Shell_3 =
1489 new TGeoTube(
"Shell_3", 0., Shell_rmin / 2. + .1, .1 / 2.);
1490 TGeoShape* ShellHole_0 =
new TGeoTrd1(
"ShellHole_0", 17.5 / 4., 42.5 / 4.,
1491 80. / 2., (25.15 + 1.) / 2.);
1492 TGeoShape* ShellHole_1 =
1493 new TGeoBBox(
"ShellHole_1", 42.5 / 4., 80. / 2., 2. / 2. + 0.00001);
1494 TGeoShape* ShellHole_2 =
new TGeoBBox(
1495 "ShellHole_2", 58.9 / 4., (Shell_rmin - 2.25) / 2., .4 / 2. + 0.00001);
1496 TGeoShape* ShellHole_3 =
new TGeoBBox(
1497 "ShellHole_3", 80. / 4., (Shell_rmin - 11.6) / 2., .4 / 2. + 0.00001);
1500 TGeoShape* Shell_Cut_0 =
new TGeoTube(
"Shell_Cut_0", 0., 3.5, 5. / 2.);
1501 TGeoShape* Shell_Cut_1 =
1502 new TGeoBBox(
"Shell_Cut_1", 7. / 2., 25. / 2., 5. / 2.);
1505 auto* Half_3_Shape_0 =
new TGeoCompositeShape(
1506 "Half_3_Shape_0",
"Shell_Cut_0+Shell_Cut_1:tShell_Cut");
1507 new TGeoCompositeShape(
1509 "Shell_2 - Half_3_Shape_0:cShell_Cut - Half_3_Shape_0:cShell_Cut_inv");
1510 auto* Half_3_Shape_2 =
new TGeoCompositeShape(
1511 "Half_3_Shape_2",
"ShellHole_0+ShellHole_1:tShellHole");
1512 new TGeoCompositeShape(
"Half_3_Shape_3",
1513 "Shell_3:tShellHole_1 -(ShellHole_2:tShellHole_1 + "
1514 "ShellHole_3:tShellHole_0)");
1515 auto* Half_3_Shape_4 =
new TGeoCompositeShape(
1517 "(Shell_0:tShell_0 + Half_3_Shape_1+ Shell_1:tShell_1) - (Half_3_Shape_2 "
1519 "Half_3_Shape_2:Rz + Half_3_Shape_2:Rz_inv)+Half_3_Shape_3");
1521 auto* Half_3_Volume =
1522 new TGeoVolume(
"Half_3_Volume", Half_3_Shape_4, malu5083);
1524 TGeoRotation* rot_z180 =
new TGeoRotation(
"rot_z180", 0, 180, 0);
1525 rot_z180->RegisterYourself();
1527 TGeoCombiTrans* combi_coat =
new TGeoCombiTrans(0, 0, 19.5 - 0.45, rot_z180);
1528 combi_coat->SetName(
"combi_coat");
1529 combi_coat->RegisterYourself();
1531 Half_3->AddNode(Half_3_Volume, 1, combi_coat);
1533 HalfConeVolume->AddNode(stair, 1, c_final);
1534 HalfConeVolume->AddNode(base, 2, c_final);
1535 HalfConeVolume->AddNode(rail_L_R, 3, c_final);
1536 HalfConeVolume->AddNode(Fra_front, 4, c_final);
1537 HalfConeVolume->AddNode(middle, 5, c_final);
1538 HalfConeVolume->AddNode(frame_back, 6, c_final);
1539 HalfConeVolume->AddNode(colonne_mb, 7, c_final);
1550 if (mftBaseParam.buildServices) {
1555 if (!mftBaseParam.minimal && mftBaseParam.buildCone && mftBaseParam.buildReadoutCables) {
1561 return HalfConeVolume;
1772 mMB0cu[0] = {14.00};
1773 mMB0cu[1] = {0.00615};
1780 auto* mCu = gGeoManager->GetMedium(
"MFT_Cu$");
1781 auto* mFR4 = gGeoManager->GetMedium(
"MFT_FR4$");
1782 auto* mPol = gGeoManager->GetMedium(
"MFT_Polyimide$");
1783 auto* mEpo = gGeoManager->GetMedium(
"MFT_Epoxy$");
1784 auto* mInox = gGeoManager->GetMedium(
"MFT_Inox$");
1785 auto* mPolyu = gGeoManager->GetMedium(
"MFT_Polyurethane$");
1788 auto* MotherBoard0 =
new TGeoVolumeAssembly(Form(
"MotherBoard0_H%d", half));
1790 TGeoVolume* vMB0cu = gGeoManager->MakeBox(
"vMB0cu", mCu, mMB0cu[0] / 2, mMB0cu[1] / 2, mMB0cu[2] / 2);
1791 TGeoVolume* vMB0fr4 = gGeoManager->MakeBox(
"vMB0fr4", mFR4, mMB0cu[0] / 2, mMB0fr4 / 2, mMB0cu[2] / 2);
1792 TGeoVolume* vMB0pol = gGeoManager->MakeBox(
"vMB0pol", mPol, mMB0cu[0] / 2, mMB0pol / 2, mMB0cu[2] / 2);
1793 TGeoVolume* vMB0epo = gGeoManager->MakeBox(
"vMB0epo", mEpo, mMB0cu[0] / 2, mMB0epo / 2, mMB0cu[2] / 2);
1796 TGeoVolume* vMB0screwH = gGeoManager->MakeTube(
"vMB0screwH", mInox, 0.0, 0.7 / 2, 0.35 / 2);
1797 TGeoVolume* vMB0screwT = gGeoManager->MakeTube(
"vMB0screwT", mInox, 0.0, 0.4 / 2, 0.95 / 2);
1799 TGeoVolume* vMB0serti = gGeoManager->MakeTube(
"vMB0serti", mInox, 0.16 / 2, 0.556 / 2, 0.15 / 2);
1801 Float_t heigthConnector = 0.4;
1802 TGeoVolume* vConnector = gGeoManager->MakeBox(
"vConnector", mPolyu, 6.2 / 2, heigthConnector / 2, 1.4 / 2);
1803 vMB0cu->SetLineColor(kGreen);
1804 vMB0fr4->SetLineColor(kBlack);
1805 vMB0pol->SetLineColor(kBlue);
1806 vMB0epo->SetLineColor(kGreen);
1807 vMB0screwH->SetLineColor(kOrange);
1808 vMB0screwT->SetLineColor(kOrange);
1809 vMB0serti->SetLineColor(kOrange);
1810 vConnector->SetLineColor(kGray + 3);
1813 MotherBoard0->AddNode(vMB0cu, 1);
1815 auto* t_MB0fr4 =
new TGeoTranslation(
"translation_fr4", 0.0, signe * (mMB0fr4 + mMB0cu[1]) / 2, 0.0);
1816 t_MB0fr4->RegisterYourself();
1817 MotherBoard0->AddNode(vMB0fr4, 1, t_MB0fr4);
1819 new TGeoTranslation(
"translation_pol", 0.0, signe * (mMB0fr4 + (mMB0cu[1] + mMB0pol) / 2), 0.0);
1820 t_MB0pol->RegisterYourself();
1821 MotherBoard0->AddNode(vMB0pol, 1, t_MB0pol);
1822 auto* t_MB0epo =
new TGeoTranslation(
"translation_epo", 0.0, signe * (mMB0fr4 + mMB0pol + (mMB0cu[1] + mMB0epo) / 2), 0.0);
1823 t_MB0epo->RegisterYourself();
1824 MotherBoard0->AddNode(vMB0epo, 1, t_MB0epo);
1825 auto* r_MB0screw =
new TGeoRotation(
"rotation_vMB0screw", 0, 90, 0);
1826 auto* t_MB0screwH1 =
new TGeoCombiTrans(mMB0cu[0] / 2 - 1.65, signe * (mMB0fr4 + mMB0pol + mMB0epo + (mMB0cu[1] + 0.35) / 2), 0.0, r_MB0screw);
1827 t_MB0screwH1->RegisterYourself();
1828 auto* t_MB0screwT1 =
new TGeoCombiTrans(mMB0cu[0] / 2 - 1.65, -signe * (mMB0cu[1] + 0.95) / 2, 0.0, r_MB0screw);
1829 t_MB0screwT1->RegisterYourself();
1830 auto* t_MB0screwH2 =
new TGeoCombiTrans(-(mMB0cu[0] / 2 - 1.65), signe * (mMB0fr4 + mMB0pol + mMB0epo + (mMB0cu[1] + 0.35) / 2), 0.0, r_MB0screw);
1831 t_MB0screwH2->RegisterYourself();
1832 auto* t_MB0screwT2 =
new TGeoCombiTrans(-(mMB0cu[0] / 2 - 1.65), -signe * (mMB0cu[1] + 0.95) / 2, 0.0, r_MB0screw);
1833 t_MB0screwT2->RegisterYourself();
1834 auto* t_MB0serti1 =
new TGeoCombiTrans(mMB0cu[0] / 2 - 2.65, signe * (mMB0fr4 + mMB0pol + mMB0epo + (mMB0cu[1] + 0.153) / 2), 0.0, r_MB0screw);
1835 t_MB0serti1->RegisterYourself();
1836 auto* t_MB0serti2 =
new TGeoCombiTrans(-(mMB0cu[0] / 2 - 2.65), signe * (mMB0fr4 + mMB0pol + mMB0epo + (mMB0cu[1] + 0.153) / 2), 0.0, r_MB0screw);
1837 t_MB0serti2->RegisterYourself();
1838 auto* t_MB0Connector =
new TGeoTranslation(
"translation_connector", 0.0, signe * (-mMB0cu[1] - 0.2), 0.0);
1839 t_MB0Connector->RegisterYourself();
1841 MotherBoard0->AddNode(vMB0screwH, 1, t_MB0screwH1);
1842 MotherBoard0->AddNode(vMB0screwT, 1, t_MB0screwT1);
1843 MotherBoard0->AddNode(vMB0screwH, 1, t_MB0screwH2);
1844 MotherBoard0->AddNode(vMB0screwT, 1, t_MB0screwT2);
1845 MotherBoard0->AddNode(vMB0serti, 1, t_MB0serti1);
1846 MotherBoard0->AddNode(vMB0serti, 1, t_MB0serti2);
1847 MotherBoard0->AddNode(vConnector, 1, t_MB0Connector);
1852 auto* t_disk0 =
new TGeoTranslation(
"translation_disk0", 0.0, tyMB0 - signe * shift, tzMB0);
1853 t_disk0->RegisterYourself();
1854 auto* t_disk1 =
new TGeoTranslation(
"translation_disk1", 0.0, tyMB0 - signe * shift, tzMB0 - 3.3);
1855 t_disk1->RegisterYourself();
1856 auto* t_disk2 =
new TGeoTranslation(
"translation_disk2", 0.0, tyMB0_3 - signe * shift3, tzMB0 - 7.1);
1857 t_disk2->RegisterYourself();
1858 auto* r_MB0 =
new TGeoRotation(
"rotation_MB0", 0.0, 0.0, 0.0);
1859 r_MB0->RegisterYourself();
1860 auto* p_disk0 =
new TGeoCombiTrans(*t_disk0, *r_MB0);
1861 p_disk0->RegisterYourself();
1862 auto* p_disk1 =
new TGeoCombiTrans(*t_disk1, *r_MB0);
1863 p_disk1->RegisterYourself();
1864 auto* p_disk2 =
new TGeoCombiTrans(*t_disk2, *r_MB0);
1865 p_disk2->RegisterYourself();
1867 HalfConeVolume->AddNode(MotherBoard0, 1, p_disk0);
1868 HalfConeVolume->AddNode(MotherBoard0, 1, p_disk1);
1869 HalfConeVolume->AddNode(MotherBoard0, 1, p_disk2);
1872 auto* MotherBoard0_1 =
new TGeoVolumeAssembly(Form(
"MotherBoard0_1_H%d", half));
1874 TGeoVolume* vMB0cu_1 =
1875 gGeoManager->MakeBox(
"vMB0cu_1", mCu, 18.0 / 2, mMB0cu[1] / 2, 1.2 / 2);
1876 TGeoVolume* vMB0fr4_1 =
1877 gGeoManager->MakeBox(
"vMB0fr4_1", mFR4, 18.0 / 2, mMB0fr4 / 2, 1.2 / 2);
1878 TGeoVolume* vMB0pol_1 =
1879 gGeoManager->MakeBox(
"vMB0pol_1", mPol, 18.0 / 2, mMB0pol / 2, 1.2 / 2);
1880 TGeoVolume* vMB0epo_1 =
1881 gGeoManager->MakeBox(
"vMB0epo_1", mEpo, 18.0 / 2, mMB0epo / 2, 1.2 / 2);
1882 vMB0cu_1->SetLineColor(kGreen);
1883 vMB0fr4_1->SetLineColor(kBlack);
1884 vMB0pol_1->SetLineColor(kBlue);
1885 vMB0epo_1->SetLineColor(kGreen);
1886 MotherBoard0_1->AddNode(vMB0cu_1, 1);
1887 MotherBoard0_1->AddNode(vMB0fr4_1, 1, t_MB0fr4);
1888 MotherBoard0_1->AddNode(vMB0pol_1, 1, t_MB0pol);
1889 MotherBoard0_1->AddNode(vMB0epo_1, 1, t_MB0epo);
1899 mMB2cu[2] = {0.0079};
1904 auto* MotherBoard2 =
new TGeoVolumeAssembly(Form(
"MotherBoard2_H%d", half));
1906 TGeoVolume* vMB2cu =
1907 gGeoManager->MakeTrd1(
"vMB2cu", mCu, mMB2cu[0] / 2, mMB2cu[1] / 2,
1908 mMB2cu[2] / 2, mMB2cu[3] / 2);
1909 TGeoVolume* vMB2fr4 =
1910 gGeoManager->MakeTrd1(
"vMB2fr4", mFR4, mMB2cu[0] / 2, mMB2cu[1] / 2,
1911 mMB2fr4 / 2, mMB2cu[3] / 2);
1912 TGeoVolume* vMB2pol =
1913 gGeoManager->MakeTrd1(
"vMB2pol", mPol, mMB2cu[0] / 2, mMB2cu[1] / 2,
1914 mMB2pol / 2, mMB2cu[3] / 2);
1915 TGeoVolume* vMB2epo =
1916 gGeoManager->MakeTrd1(
"vMB2epo", mEpo, mMB2cu[0] / 2, mMB2cu[1] / 2,
1917 mMB2epo / 2, mMB2cu[3] / 2);
1918 vMB2cu->SetLineColor(kGreen);
1919 vMB2fr4->SetLineColor(kBlack);
1920 vMB2pol->SetLineColor(kBlue);
1921 vMB2epo->SetLineColor(kGreen + 2);
1922 auto* t_MB2fr4 =
new TGeoTranslation(
"translation_fr4", 0.0,
1923 signe * (mMB2fr4 + mMB2cu[2]) / 2, 0.0);
1924 t_MB2fr4->RegisterYourself();
1926 new TGeoTranslation(
"translation_pol", 0.0,
1927 signe * (mMB2fr4 + (mMB2cu[2] + mMB2pol) / 2), 0.0);
1928 t_MB2pol->RegisterYourself();
1929 auto* t_MB2epo =
new TGeoTranslation(
1930 "translation_epo", 0.0,
1931 signe * (mMB2fr4 + mMB2pol + (mMB2cu[2] + mMB2epo) / 2), 0.0);
1932 t_MB2epo->RegisterYourself();
1933 MotherBoard2->AddNode(vMB2cu, 1);
1934 MotherBoard2->AddNode(vMB2fr4, 1, t_MB2fr4);
1935 MotherBoard2->AddNode(vMB2pol, 1, t_MB2pol);
1936 MotherBoard2->AddNode(vMB2epo, 1, t_MB2epo);
1939 auto* t_MB2serti1 =
new TGeoTranslation(
1940 "translationMB2serti1", 8.5, -signe * (mMB2cu[2] + 0.153) / 2, 1.3 *
i);
1941 t_MB2serti1->RegisterYourself();
1943 new TGeoTranslation(
"translationMB2serti2", -8.5,
1944 -signe * (mMB2cu[2] + 0.153) / 2, 1.3 *
i);
1945 t_MB2serti2->RegisterYourself();
1946 auto* p_MB2serti1 =
new TGeoCombiTrans(*t_MB2serti1, *r_MB0screw);
1947 p_MB2serti1->RegisterYourself();
1948 auto* p_MB2serti2 =
new TGeoCombiTrans(*t_MB2serti2, *r_MB0screw);
1949 p_MB2serti2->RegisterYourself();
1950 MotherBoard2->AddNode(vMB0serti, 1, p_MB2serti1);
1951 MotherBoard2->AddNode(vMB0serti, 1, p_MB2serti2);
1955 auto* t_MB2serti3 =
new TGeoTranslation(
1956 "translationMB2serti3", 0.7, -signe * (mMB2cu[2] + 0.153) / 2, 1.3 *
i);
1957 t_MB2serti3->RegisterYourself();
1959 new TGeoTranslation(
"translationMB2serti4", -0.7,
1960 -signe * (mMB2cu[2] + 0.153) / 2, 1.3 *
i);
1961 t_MB2serti4->RegisterYourself();
1962 auto* p_MB2serti3 =
new TGeoCombiTrans(*t_MB2serti3, *r_MB0screw);
1963 p_MB2serti3->RegisterYourself();
1964 auto* p_MB2serti4 =
new TGeoCombiTrans(*t_MB2serti4, *r_MB0screw);
1965 p_MB2serti4->RegisterYourself();
1966 MotherBoard2->AddNode(vMB0serti, 1, p_MB2serti3);
1967 MotherBoard2->AddNode(vMB0serti, 1, p_MB2serti4);
1972 new TGeoTranslation(
"translationMB2serti5", 7.0 *
i + 3.5,
1973 -signe * (mMB2cu[2] + 0.153) / 2, -2.5);
1974 t_MB2serti5->RegisterYourself();
1975 auto* p_MB2serti5 =
new TGeoCombiTrans(*t_MB2serti5, *r_MB0screw);
1976 p_MB2serti5->RegisterYourself();
1978 new TGeoTranslation(
"translationMB2serti6", 7.0 *
i + 3.5,
1979 -signe * (mMB2cu[2] + 0.153) / 2, -3.5);
1980 t_MB2serti6->RegisterYourself();
1981 auto* p_MB2serti6 =
new TGeoCombiTrans(*t_MB2serti6, *r_MB0screw);
1982 p_MB2serti6->RegisterYourself();
1983 MotherBoard2->AddNode(vMB0serti, 1, p_MB2serti5);
1984 MotherBoard2->AddNode(vMB0serti, 1, p_MB2serti6);
1987 auto* t_MotherBoard0_1 =
1988 new TGeoTranslation(
"translation_MB0_1", 0.0, -signe * (-heigthConnector - mMB2cu[2] - mMB2fr4 - mMB2pol - mMB2epo), 3.5);
1989 t_MotherBoard0_1->RegisterYourself();
1990 auto* t_MotherBoard0_2 =
1991 new TGeoTranslation(
"translation_MB0_2", 0.0, -signe * (-heigthConnector - mMB2cu[2] - mMB2fr4 - mMB2pol - mMB2epo), 1.5);
1993 t_MotherBoard0_2->RegisterYourself();
1994 MotherBoard2->AddNode(MotherBoard0_1, 1, t_MotherBoard0_1);
1995 MotherBoard2->AddNode(MotherBoard0_1, 2, t_MotherBoard0_2);
1997 TGeoVolume* vConnector2 = gGeoManager->MakeBox(
"vConnector2", mPolyu, 12.00 / 2, heigthConnector / 2, 0.7 / 2);
1998 TGeoVolume* vConnector2p = gGeoManager->MakeBox(
"vConnector2p", mPolyu, 6.00 / 2, heigthConnector / 2, 0.7 / 2);
2001 TGeoVolume* vConnectorRC = gGeoManager->MakeBox(
"vConnectorRC-MB2", mPolyu, 6.00 / 2, heigthConnector / 2, 1.4 / 2);
2003 Double_t yMB2Connector = signe * (mMB2cu[2] / 2 + mMB2fr4 + mMB2pol + mMB2epo + heigthConnector / 2);
2004 auto* t_MB2Connector1 =
new TGeoTranslation(
"translation_connector1", 0.0, yMB2Connector, 1.5);
2005 t_MB2Connector1->RegisterYourself();
2006 auto* t_MB2Connector2 =
new TGeoTranslation(
"translation_connector2", 0.0, yMB2Connector, 3.5);
2007 t_MB2Connector2->RegisterYourself();
2008 auto* t_MB2ConnectorRC_1 =
new TGeoTranslation(
"translation_connectorRC_1", 3.5, yMB2Connector, -0.5);
2009 t_MB2ConnectorRC_1->RegisterYourself();
2010 auto* t_MB2ConnectorRC_2 =
new TGeoTranslation(
"translation_connectorRC_2", -3.5, yMB2Connector, -0.5);
2011 t_MB2ConnectorRC_1->RegisterYourself();
2012 auto* t_MB2ConnectorRC_3 =
new TGeoTranslation(
"translation_connectorRC_3", 7.0, yMB2Connector, -3.5);
2013 t_MB2ConnectorRC_2->RegisterYourself();
2014 auto* t_MB2ConnectorRC_4 =
new TGeoTranslation(
"translation_connectorRC_4", -7.0, yMB2Connector, -3.5);
2015 t_MB2ConnectorRC_2->RegisterYourself();
2017 yMB2Connector = signe * (-mMB2cu[2] / 2 - heigthConnector / 2);
2018 auto* t_MB2ConnectorRCp_1 =
new TGeoTranslation(
"translation_connectorRCp_1", 4.0, yMB2Connector, 0.5);
2019 t_MB2ConnectorRCp_1->RegisterYourself();
2020 auto* t_MB2ConnectorRCp_2 =
new TGeoTranslation(
"translation_connectorRCp_2", -4.0, yMB2Connector, 0.5);
2021 t_MB2ConnectorRCp_2->RegisterYourself();
2022 auto* t_MB2ConnectorRCp_3 =
new TGeoTranslation(
"translation_connectorRCp_3", 7.0, yMB2Connector, -3.5);
2023 t_MB2ConnectorRCp_3->RegisterYourself();
2024 auto* t_MB2ConnectorRCp_4 =
new TGeoTranslation(
"translation_connectorRCp_4", -7.0, yMB2Connector, -3.5);
2025 t_MB2ConnectorRCp_4->RegisterYourself();
2027 vConnector2->SetLineColor(kGray + 3);
2028 vConnectorRC->SetLineColor(kGray + 3);
2029 MotherBoard2->AddNode(vConnector2, 1, t_MB2Connector1);
2030 MotherBoard2->AddNode(vConnector2, 1, t_MB2Connector2);
2031 MotherBoard2->AddNode(vConnectorRC, 1, t_MB2ConnectorRC_1);
2032 MotherBoard2->AddNode(vConnectorRC, 1, t_MB2ConnectorRC_2);
2033 MotherBoard2->AddNode(vConnectorRC, 1, t_MB2ConnectorRC_3);
2034 MotherBoard2->AddNode(vConnectorRC, 1, t_MB2ConnectorRC_4);
2035 MotherBoard2->AddNode(vConnectorRC, 1, t_MB2ConnectorRCp_1);
2036 MotherBoard2->AddNode(vConnectorRC, 1, t_MB2ConnectorRCp_2);
2037 MotherBoard2->AddNode(vConnectorRC, 1, t_MB2ConnectorRCp_3);
2038 MotherBoard2->AddNode(vConnectorRC, 1, t_MB2ConnectorRCp_4);
2041 auto* t_MotherBoard2 =
new TGeoTranslation(
2042 "translation_MB2", 0.0,
2043 -signe * (-20.52 + mMB2fr4 + mMB2pol + mMB2epo + 2.2 * TMath::Sin(19.0)),
2044 -62.8 + 2.2 * TMath::Cos(19.0));
2045 t_MotherBoard2->RegisterYourself();
2046 auto* r_MotherBoard2 =
2047 new TGeoRotation(
"rotation_MB2", 0.0, -signe * (-19.0), 0.0);
2048 r_MotherBoard2->RegisterYourself();
2049 auto* p_MB2 =
new TGeoCombiTrans(*t_MotherBoard2, *r_MotherBoard2);
2050 p_MB2->RegisterYourself();
2051 HalfConeVolume->AddNode(MotherBoard2, 1, p_MB2);
2134 auto* mCu = gGeoManager->GetMedium(
"MFT_Cu$");
2137 Float_t heigthConnector = 0.4;
2138 auto* mPolyu = gGeoManager->GetMedium(
"MFT_Polyurethane$");
2139 TGeoVolume* vConnectorRC = gGeoManager->MakeBox(
"vConnectorRC", mPolyu, 6.00 / 2, heigthConnector / 2, 1.4 / 2);
2140 vConnectorRC->SetLineColor(kGray + 3);
2143 Double_t section_ROcable_48pairs = 0.26544;
2144 Double_t section_ROcable_16pairs = 0.08848;
2149 mRO1[1] = (16 * section_ROcable_48pairs + 6 * section_ROcable_16pairs) / mRO1[0];
2151 TGeoVolume* vRO1 = gGeoManager->MakeBox(
"vRO1", mCu, mRO1[0] / 2, mRO1[1] / 2, mRO1[2] / 2);
2152 Double_t zRO1 = -80.20;
2153 auto* t_RO1 =
new TGeoTranslation(
"translation_RO1", 0.0, -signe * 28.0, zRO1);
2154 t_RO1->RegisterYourself();
2158 mRO2[1] = (14 * section_ROcable_48pairs + 5 * section_ROcable_16pairs) / mRO2[0];
2160 TGeoVolume* vRO2 = gGeoManager->MakeBox(
"vRO2", mCu, mRO2[0] / 2, mRO2[1] / 2, mRO2[2] / 2);
2161 auto* t_RO2 =
new TGeoTranslation(
"translation_RO2", 0.0, -signe * 28.0, zRO1 + mRO1[2] / 2 + mRO2[2] / 2);
2162 t_RO2->RegisterYourself();
2166 mRO3[1] = (12 * section_ROcable_48pairs + 4 * section_ROcable_16pairs) / mRO3[0];
2168 TGeoVolume* vRO3 = gGeoManager->MakeBox(
"vRO3", mCu, mRO3[0] / 2, mRO3[1] / 2, mRO3[2] / 2);
2169 auto* t_RO3 =
new TGeoTranslation(
"translation_RO3", 0.0, -signe * 28.0, zRO1 + mRO1[2] / 2 + mRO2[2] + mRO3[2] / 2);
2170 t_RO3->RegisterYourself();
2172 Double_t eRO4 = 12 * section_ROcable_48pairs / mRO1[0];
2173 TGeoVolume* vRO4 = gGeoManager->MakeTubs(
"vRO4", mCu, 6.5, 6.5 + eRO4, mRO1[0] / 2, -21.0 + signe * 26.11, 21.0 + signe * 26.11);
2174 auto* t_RO4 =
new TGeoTranslation(
"translation_RO4", 0.0, signe * 21.4, -70.9);
2175 t_RO4->RegisterYourself();
2176 auto* r_RO4 =
new TGeoRotation(
"rotation_RO4", signe * 90.0, signe * 90.0, 0.0);
2177 r_RO4->RegisterYourself();
2178 auto* p_RO4 =
new TGeoCombiTrans(*t_RO4, *r_RO4);
2179 p_RO4->RegisterYourself();
2180 HalfConeVolume->AddNode(vRO4, 1, p_RO4);
2185 mRO5[1] = section_ROcable_48pairs / mRO5[0];
2187 TGeoVolume* vRO5 = gGeoManager->MakeBox(
"vRO5", mCu, mRO5[0] / 2, mRO5[1] / 2, mRO5[2] / 2);
2188 auto* t_RO5_1 =
new TGeoTranslation(
"translation_RO5_1", 3.5, -signe * (20.83 + mRO5[2] / 2 * TMath::Sin(45.0 * TMath::Pi() / 180)), -61 - mRO5[2] / 2 * TMath::Cos(45 * TMath::Pi() / 180));
2189 t_RO5_1->RegisterYourself();
2190 auto* t_RO5_2 =
new TGeoTranslation(
"translation_RO5_1", -3.5, -signe * (20.83 + mRO5[2] / 2 * TMath::Sin(45.0 * TMath::Pi() / 180)), -61 - mRO5[2] / 2 * TMath::Cos(45 * TMath::Pi() / 180));
2191 t_RO5_2->RegisterYourself();
2192 auto* r_RO5 =
new TGeoRotation(
"rotation_RO5", 0.0, -signe * (45.0), 0.0);
2193 r_RO5->RegisterYourself();
2194 auto* p_RO5_1 =
new TGeoCombiTrans(*t_RO5_1, *r_RO5);
2195 p_RO5_1->RegisterYourself();
2196 auto* p_RO5_2 =
new TGeoCombiTrans(*t_RO5_2, *r_RO5);
2197 p_RO5_2->RegisterYourself();
2202 Float_t angleXY = -signe * 50.;
2204 Float_t thickness = (section_ROcable_48pairs /
width) / TMath::Cos(angleXY * TMath::Pi() / 180);
2205 TGeoVolume* vRO6 =
new TGeoVolume(
"vRO6",
new TGeoTrap(
length, angleZ, angleXY,
width / 2, thickness / 2, thickness / 2, 0.,
width / 2, thickness / 2, thickness / 2, 0.), mCu);
2206 Double_t yRO6 = -signe * (22.45 +
length * 1.26 * TMath::Sin(angleZ * TMath::Pi() / 180));
2207 Double_t zRO6 = -64.1 -
length * 2. * TMath::Cos(angleZ * TMath::Pi() / 180);
2208 auto* t_RO6 =
new TGeoTranslation(
"translation_RO6", 5.3, yRO6, zRO6);
2209 t_RO6->RegisterYourself();
2210 auto* r_RO6 =
new TGeoRotation(
"rotation_RO6", signe * 90.0, -signe * (0), 0.0);
2211 r_RO6->RegisterYourself();
2212 auto* p_RO6 =
new TGeoCombiTrans(*t_RO6, *r_RO6);
2213 p_RO6->RegisterYourself();
2215 TGeoVolume* vRO7 =
new TGeoVolume(
"vRO7",
new TGeoTrap(
length, angleZ, -angleXY,
width / 2, thickness / 2, thickness / 2, 0.,
width / 2, thickness / 2, thickness / 2, 0.), mCu);
2216 auto* t_RO7 =
new TGeoTranslation(
"translation_RO6", -5.3, yRO6, zRO6);
2217 t_RO7->RegisterYourself();
2218 auto* r_RO7 =
new TGeoRotation(
"rotation_RO7", signe * 90.0, -signe * (0), 0.0);
2219 r_RO7->RegisterYourself();
2220 auto* p_RO7 =
new TGeoCombiTrans(*t_RO7, *r_RO7);
2221 p_RO7->RegisterYourself();
2226 mRO8[1] = 2 * section_ROcable_48pairs / mRO8[0];
2228 TGeoVolume* vRO8 = gGeoManager->MakeBox(
"vRO8", mCu, mRO8[0] / 2, mRO8[1] / 2, mRO8[2] / 2);
2229 Double_t yRO8 = -signe * (19.1 + mRO8[2] / 2 * TMath::Sin(19.0 * TMath::Pi() / 180));
2230 Double_t zRO8 = -59.95 - mRO8[2] / 2 * TMath::Cos(19.0 * TMath::Pi() / 180);
2231 auto* t_RO8_1 =
new TGeoTranslation(
"translation_RO8_1", 3.5, yRO8, zRO8);
2232 t_RO8_1->RegisterYourself();
2233 auto* t_RO8_2 =
new TGeoTranslation(
"translation_RO8_1", -3.5, yRO8, zRO8);
2234 t_RO8_2->RegisterYourself();
2235 auto* r_RO8 =
new TGeoRotation(
"rotation_RO8", 0.0, -signe * (19.0), 0.0);
2236 r_RO8->RegisterYourself();
2237 auto* p_RO8_1 =
new TGeoCombiTrans(*t_RO8_1, *r_RO8);
2238 p_RO8_1->RegisterYourself();
2239 auto* p_RO8_2 =
new TGeoCombiTrans(*t_RO8_2, *r_RO8);
2240 p_RO8_2->RegisterYourself();
2244 mRO9[1] = 2 * section_ROcable_48pairs / mRO9[0];
2246 TGeoVolume* vRO9 = gGeoManager->MakeBox(
"vRO9", mCu, mRO9[0] / 2, mRO9[1] / 2, mRO9[2] / 2);
2247 auto* t_RO9_1 =
new TGeoTranslation(
"translation_RO9_1", 3.5, -signe * (23.5), -66.15);
2248 t_RO9_1->RegisterYourself();
2249 auto* t_RO9_2 =
new TGeoTranslation(
"translation_RO9_2", -3.5, -signe * (23.5), -66.15);
2250 t_RO9_2->RegisterYourself();
2251 auto* r_RO9 =
new TGeoRotation(
"rotation_RO9", 0.0, -signe * (90.0), 0.0);
2252 r_RO9->RegisterYourself();
2253 auto* p_RO9_1 =
new TGeoCombiTrans(*t_RO9_1, *r_RO9);
2254 p_RO9_1->RegisterYourself();
2255 auto* p_RO9_2 =
new TGeoCombiTrans(*t_RO9_2, *r_RO9);
2256 p_RO9_2->RegisterYourself();
2264 width = section_ROcable_48pairs / thickness;
2266 TGeoVolume* vRO_D3_1 =
new TGeoVolume(
"vRO_D3_1",
new TGeoTrap(
length, angleZ + 10., angleXY,
width / 2, thickness / 2, thickness / 2, 0.,
width / 2, thickness / 2, thickness / 2, 0.), mCu);
2267 auto* t_ROD3_1 =
new TGeoTranslation(
"translation_ROD3_1", 4.5, -signe * (20.9 +
length * TMath::Cos(angleZ * TMath::Pi() / 180)), -67.4);
2268 t_ROD3_1->RegisterYourself();
2269 auto* r_ROD3_1 =
new TGeoRotation(
"rotation_ROD3_1", signe * 180.0, signe * (90), 0.0);
2270 r_ROD3_1->RegisterYourself();
2271 auto* p_ROD3_1 =
new TGeoCombiTrans(*t_ROD3_1, *r_ROD3_1);
2272 p_ROD3_1->RegisterYourself();
2274 TGeoVolume* vRO_D3_2 =
new TGeoVolume(
"vRO_D3_2",
new TGeoTrap(
length, -angleZ - 10., angleXY,
width / 2, thickness / 2, thickness / 2, 0.,
width / 2, thickness / 2, thickness / 2, 0.), mCu);
2275 auto* t_ROD3_2 =
new TGeoTranslation(
"translation_ROD3_2", -4.5, -signe * (20.9 +
length * TMath::Cos(angleZ * TMath::Pi() / 180)), -67.4);
2276 t_ROD3_2->RegisterYourself();
2277 auto* r_ROD3_2 =
new TGeoRotation(
"rotation_ROD3_2", signe * 180.0, signe * (90), 0.0);
2278 r_ROD3_2->RegisterYourself();
2279 auto* p_ROD3_2 =
new TGeoCombiTrans(*t_ROD3_2, *r_ROD3_2);
2280 p_ROD3_2->RegisterYourself();
2283 TGeoVolume* vRO_D3_3 =
new TGeoVolume(
"vRO_D3_3",
new TGeoTrap(
length + 0.4, angleZ + 10., angleXY,
width / 2, thickness / 2, thickness / 2, 0.,
width / 2, thickness / 2, thickness / 2, 0.), mCu);
2284 auto* t_ROD3_3 =
new TGeoTranslation(
"translation_ROD3_3", 4.5, -signe * (21.3 +
length * TMath::Cos(angleZ * TMath::Pi() / 180)), -69.4);
2285 t_ROD3_3->RegisterYourself();
2286 auto* r_ROD3_3 =
new TGeoRotation(
"rotation_ROD3_3", signe * 180.0, signe * (90), 0.0);
2287 r_ROD3_3->RegisterYourself();
2288 auto* p_ROD3_3 =
new TGeoCombiTrans(*t_ROD3_3, *r_ROD3_3);
2289 p_ROD3_3->RegisterYourself();
2291 TGeoVolume* vRO_D3_4 =
new TGeoVolume(
"vRO_D3_4",
new TGeoTrap(
length + 0.4, -angleZ - 10., angleXY,
width / 2, thickness / 2, thickness / 2, 0.,
width / 2, thickness / 2, thickness / 2, 0.), mCu);
2292 auto* t_ROD3_4 =
new TGeoTranslation(
"translation_ROD3_4", -4.5, -signe * (21.3 +
length * TMath::Cos(angleZ * TMath::Pi() / 180)), -69.4);
2293 t_ROD3_4->RegisterYourself();
2294 auto* r_ROD3_4 =
new TGeoRotation(
"rotation_ROD3_4", signe * 180.0, signe * (90), 0.0);
2295 r_ROD3_4->RegisterYourself();
2296 auto* p_ROD3_4 =
new TGeoCombiTrans(*t_ROD3_4, *r_ROD3_4);
2297 p_ROD3_4->RegisterYourself();
2299 auto* t_ConnectorRC3_1 =
new TGeoTranslation(
"translation_RC3_1", 5.9, -signe * (20.2), -67.87 + heigthConnector / 2);
2300 t_ConnectorRC3_1->RegisterYourself();
2301 auto* r_ConnectorRC3_1 =
new TGeoRotation(
"rotation_RC3_1", 0.0, 90, 0.0);
2302 r_ConnectorRC3_1->RegisterYourself();
2303 auto* p_ConnectorRC3_1 =
new TGeoCombiTrans(*t_ConnectorRC3_1, *r_ConnectorRC3_1);
2304 p_ConnectorRC3_1->RegisterYourself();
2305 auto* t_ConnectorRC3_2 =
new TGeoTranslation(
"translation_RC3_2", -5.9, -signe * (20.2), -67.87 + heigthConnector / 2);
2306 t_ConnectorRC3_2->RegisterYourself();
2307 auto* p_ConnectorRC3_2 =
new TGeoCombiTrans(*t_ConnectorRC3_2, *r_ConnectorRC3_1);
2308 p_ConnectorRC3_2->RegisterYourself();
2309 auto* t_ConnectorRC3_3 =
new TGeoTranslation(
"translation_RC3_3", 5.9, -signe * (20.2), -68.93 - heigthConnector / 2);
2310 t_ConnectorRC3_3->RegisterYourself();
2311 auto* p_ConnectorRC3_3 =
new TGeoCombiTrans(*t_ConnectorRC3_3, *r_ConnectorRC3_1);
2312 p_ConnectorRC3_3->RegisterYourself();
2313 auto* t_ConnectorRC3_4 =
new TGeoTranslation(
"translation_RC3_4", -5.9, -signe * (20.2), -68.93 - heigthConnector / 2);
2314 t_ConnectorRC3_4->RegisterYourself();
2315 auto* p_ConnectorRC3_4 =
new TGeoCombiTrans(*t_ConnectorRC3_4, *r_ConnectorRC3_1);
2316 p_ConnectorRC3_4->RegisterYourself();
2323 width = section_ROcable_48pairs / thickness;
2327 TGeoVolume* vRO_D4_1 =
new TGeoVolume(
"vRO_D4_1",
new TGeoTrap(
length, angleZ, angleXY,
width / 2, thickness / 2, thickness / 2, 0.,
width / 2, thickness / 2, thickness / 2, 0.), mCu);
2328 auto* t_ROD4_1 =
new TGeoTranslation(
"translation_ROD4_1", xD4, -signe * (yD4 +
length * TMath::Cos(angleZ * TMath::Pi() / 180)), -75.8);
2329 t_ROD4_1->RegisterYourself();
2330 auto* r_ROD4_1 =
new TGeoRotation(
"rotation_ROD4_1", signe * 180.0, signe * (90), 0.0);
2331 r_ROD4_1->RegisterYourself();
2332 auto* p_ROD4_1 =
new TGeoCombiTrans(*t_ROD4_1, *r_ROD3_1);
2333 p_ROD4_1->RegisterYourself();
2335 TGeoVolume* vRO_D4_2 =
new TGeoVolume(
"vRO_D4_2",
new TGeoTrap(
length, -angleZ, angleXY,
width / 2, thickness / 2, thickness / 2, 0.,
width / 2, thickness / 2, thickness / 2, 0.), mCu);
2336 auto* t_ROD4_2 =
new TGeoTranslation(
"translation_ROD4_2", -xD4, -signe * (yD4 +
length * TMath::Cos(angleZ * TMath::Pi() / 180)), -75.8);
2337 t_ROD4_2->RegisterYourself();
2338 auto* r_ROD4_2 =
new TGeoRotation(
"rotation_ROD4_2", signe * 180.0, signe * (90), 0.0);
2339 r_ROD4_2->RegisterYourself();
2340 auto* p_ROD4_2 =
new TGeoCombiTrans(*t_ROD4_2, *r_ROD4_2);
2341 p_ROD4_2->RegisterYourself();
2344 TGeoVolume* vRO_D4_3 =
new TGeoVolume(
"vRO_D4_3",
new TGeoTrap(
length, angleZ, angleXY,
width / 2, thickness / 2, thickness / 2, 0.,
width / 2, thickness / 2, thickness / 2, 0.), mCu);
2345 auto* t_ROD4_3 =
new TGeoTranslation(
"translation_ROD4_3", xD4, -signe * (yD4 +
length * TMath::Cos(angleZ * TMath::Pi() / 180)), -77.8);
2346 t_ROD4_3->RegisterYourself();
2347 auto* r_ROD4_3 =
new TGeoRotation(
"rotation_ROD4_3", signe * 180.0, signe * (90), 0.0);
2348 r_ROD4_3->RegisterYourself();
2349 auto* p_ROD4_3 =
new TGeoCombiTrans(*t_ROD4_3, *r_ROD3_3);
2350 p_ROD4_3->RegisterYourself();
2352 TGeoVolume* vRO_D4_4 =
new TGeoVolume(
"vRO_D4_4",
new TGeoTrap(
length, -angleZ, angleXY,
width / 2, thickness / 2, thickness / 2, 0.,
width / 2, thickness / 2, thickness / 2, 0.), mCu);
2353 auto* t_ROD4_4 =
new TGeoTranslation(
"translation_ROD4_4", -xD4, -signe * (yD4 +
length * TMath::Cos(angleZ * TMath::Pi() / 180)), -77.8);
2354 t_ROD4_4->RegisterYourself();
2355 auto* r_ROD4_4 =
new TGeoRotation(
"rotation_ROD4_4", signe * 180.0, signe * (90), 0.0);
2356 r_ROD4_4->RegisterYourself();
2357 auto* p_ROD4_4 =
new TGeoCombiTrans(*t_ROD4_4, *r_ROD4_4);
2358 p_ROD4_4->RegisterYourself();
2362 width = section_ROcable_16pairs / thickness;
2363 TGeoVolume* vRO_D4_5 =
new TGeoVolume(
"vRO_D4_5",
new TGeoTrap(
length, 0., 0.,
width / 2, thickness / 2, thickness / 2, 0.,
width / 2, thickness / 2, thickness / 2, 0.), mCu);
2364 auto* t_ROD4_5 =
new TGeoTranslation(
"translation_ROD4_5", 0, -signe * (yD4 +
length - 0.2), -75.8);
2365 t_ROD4_5->RegisterYourself();
2366 auto* r_ROD4_5 =
new TGeoRotation(
"rotation_ROD4_5", signe * 180.0, signe * (90), 0.0);
2367 r_ROD4_5->RegisterYourself();
2368 auto* p_ROD4_5 =
new TGeoCombiTrans(*t_ROD4_5, *r_ROD4_5);
2369 p_ROD4_5->RegisterYourself();
2370 TGeoVolume* vRO_D4_6 =
new TGeoVolume(
"vRO_D4_6",
new TGeoTrap(
length, 0., 0.,
width / 2, thickness / 2, thickness / 2, 0.,
width / 2, thickness / 2, thickness / 2, 0.), mCu);
2371 auto* t_ROD4_6 =
new TGeoTranslation(
"translation_ROD4_6", 0, -signe * (yD4 +
length - 0.2), -77.8);
2372 t_ROD4_6->RegisterYourself();
2373 auto* r_ROD4_6 =
new TGeoRotation(
"rotation_ROD4_6", signe * 180.0, signe * (90), 0.0);
2374 r_ROD4_6->RegisterYourself();
2375 auto* p_ROD4_6 =
new TGeoCombiTrans(*t_ROD4_6, *r_ROD4_6);
2376 p_ROD4_6->RegisterYourself();
2378 auto* t_ConnectorRC4_1 =
new TGeoTranslation(
"translation_RC4_1", 7.5, -signe * (21.5), -76.26 + heigthConnector / 2);
2379 t_ConnectorRC4_1->RegisterYourself();
2380 auto* p_ConnectorRC4_1 =
new TGeoCombiTrans(*t_ConnectorRC4_1, *r_ConnectorRC3_1);
2381 p_ConnectorRC4_1->RegisterYourself();
2382 auto* t_ConnectorRC4_2 =
new TGeoTranslation(
"translation_RC4_2", -7.5, -signe * (21.5), -76.26 + heigthConnector / 2);
2383 t_ConnectorRC4_2->RegisterYourself();
2384 auto* p_ConnectorRC4_2 =
new TGeoCombiTrans(*t_ConnectorRC4_2, *r_ConnectorRC3_1);
2385 p_ConnectorRC4_2->RegisterYourself();
2386 auto* t_ConnectorRC4_3 =
new TGeoTranslation(
"translation_RC4_3", 7.5, -signe * (21.5), -77.34 - heigthConnector / 2);
2387 t_ConnectorRC4_3->RegisterYourself();
2388 auto* p_ConnectorRC4_3 =
new TGeoCombiTrans(*t_ConnectorRC4_3, *r_ConnectorRC3_1);
2389 p_ConnectorRC4_3->RegisterYourself();
2390 auto* t_ConnectorRC4_4 =
new TGeoTranslation(
"translation_RC4_4", -7.5, -signe * (21.5), -77.34 - heigthConnector / 2);
2391 t_ConnectorRC4_4->RegisterYourself();
2392 auto* p_ConnectorRC4_4 =
new TGeoCombiTrans(*t_ConnectorRC4_4, *r_ConnectorRC3_1);
2393 p_ConnectorRC4_4->RegisterYourself();
2394 auto* t_ConnectorRC4_5 =
new TGeoTranslation(
"translation_RC4_5", 0, -signe * (21.5), -76.26 + heigthConnector / 2);
2395 t_ConnectorRC4_5->RegisterYourself();
2396 auto* p_ConnectorRC4_5 =
new TGeoCombiTrans(*t_ConnectorRC4_5, *r_ConnectorRC3_1);
2397 p_ConnectorRC4_5->RegisterYourself();
2398 auto* t_ConnectorRC4_6 =
new TGeoTranslation(
"translation_RC4_6", 0, -signe * (21.5), -77.34 - heigthConnector / 2);
2399 t_ConnectorRC4_6->RegisterYourself();
2400 auto* p_ConnectorRC4_6 =
new TGeoCombiTrans(*t_ConnectorRC4_6, *r_ConnectorRC3_1);
2401 p_ConnectorRC4_6->RegisterYourself();
2406 angleXY = -signe * 25.;
2408 thickness = section_ROcable_16pairs /
width / TMath::Cos(angleZ * TMath::Pi() / 180);
2409 TGeoVolume* vRO_PSU_1 =
new TGeoVolume(
"vRO_PSU_1",
new TGeoTrap(
length, angleZ, angleXY,
width / 2, thickness / 2, thickness / 2, 0.,
width / 2, thickness / 2, thickness / 2, 0.), mCu);
2410 Double_t yPSU = -signe * (24.8 +
length * 1.26 * TMath::Sin(angleZ * TMath::Pi() / 180));
2411 Double_t zPSU = -71.1 -
length * 2. * TMath::Cos(angleZ * TMath::Pi() / 180);
2412 auto* t_RO_PSU_1 =
new TGeoTranslation(
"translation_RO_PSU_1", 5.0, yPSU, zPSU);
2413 t_RO_PSU_1->RegisterYourself();
2414 auto* r_RO_PSU_1 =
new TGeoRotation(
"rotation_RO_PSU_1", signe * 90.0, -signe * (0), 0.0);
2415 r_RO_PSU_1->RegisterYourself();
2416 auto* p_RO_PSU_1 =
new TGeoCombiTrans(*t_RO_PSU_1, *r_RO_PSU_1);
2417 p_RO_PSU_1->RegisterYourself();
2419 TGeoVolume* vRO_PSU_2 =
new TGeoVolume(
"vRO_PSU_2",
new TGeoTrap(
length, angleZ, -angleXY,
width / 2, thickness / 2, thickness / 2, 0.,
width / 2, thickness / 2, thickness / 2, 0.), mCu);
2420 auto* t_RO_PSU_2 =
new TGeoTranslation(
"translation_RO_PSU_2", -5.0, yPSU, zPSU);
2421 t_RO_PSU_2->RegisterYourself();
2422 auto* r_RO_PSU_2 =
new TGeoRotation(
"rotation_RO_PSU_2", signe * 90.0, -signe * (0), 0.0);
2423 r_RO_PSU_2->RegisterYourself();
2424 auto* p_RO_PSU_2 =
new TGeoCombiTrans(*t_RO_PSU_2, *r_RO_PSU_2);
2425 p_RO_PSU_2->RegisterYourself();
2427 zPSU = -72.98 -
length * 2. * TMath::Cos(angleZ * TMath::Pi() / 180);
2428 TGeoVolume* vRO_PSU_3 =
new TGeoVolume(
"vRO_PSU_3",
new TGeoTrap(
length, -angleZ, angleXY,
width / 2, thickness / 2, thickness / 2, 0.,
width / 2, thickness / 2, thickness / 2, 0.), mCu);
2429 auto* t_RO_PSU_3 =
new TGeoTranslation(
"translation_RO_PSU_3", 5.0, yPSU, zPSU);
2430 t_RO_PSU_3->RegisterYourself();
2431 auto* r_RO_PSU_3 =
new TGeoRotation(
"rotation_RO_PSU_3", signe * 90.0, -signe * (0), 0.0);
2432 r_RO_PSU_3->RegisterYourself();
2433 auto* p_RO_PSU_3 =
new TGeoCombiTrans(*t_RO_PSU_3, *r_RO_PSU_3);
2434 p_RO_PSU_3->RegisterYourself();
2436 TGeoVolume* vRO_PSU_4 =
new TGeoVolume(
"vRO_PSU_4",
new TGeoTrap(
length, -angleZ, -angleXY,
width / 2, thickness / 2, thickness / 2, 0.,
width / 2, thickness / 2, thickness / 2, 0.), mCu);
2437 auto* t_RO_PSU_4 =
new TGeoTranslation(
"translation_RO_PSU_4", -5.0, yPSU, zPSU);
2438 t_RO_PSU_4->RegisterYourself();
2439 auto* r_RO_PSU_4 =
new TGeoRotation(
"rotation_RO_PSU_4", signe * 90.0, -signe * (0), 0.0);
2440 r_RO_PSU_4->RegisterYourself();
2441 auto* p_RO_PSU_4 =
new TGeoCombiTrans(*t_RO_PSU_4, *r_RO_PSU_4);
2442 p_RO_PSU_4->RegisterYourself();
2444 auto* t_ConnectorPSU_1 =
new TGeoTranslation(
"translation_PSU_1", 6.9, -signe * (23.5), -70.44 - heigthConnector / 2);
2445 t_ConnectorPSU_1->RegisterYourself();
2446 auto* p_ConnectorPSU_1 =
new TGeoCombiTrans(*t_ConnectorPSU_1, *r_ConnectorRC3_1);
2447 p_ConnectorPSU_1->RegisterYourself();
2448 auto* t_ConnectorPSU_2 =
new TGeoTranslation(
"translation_PSU_2", -6.9, -signe * (23.5), -70.44 - heigthConnector / 2);
2449 t_ConnectorPSU_2->RegisterYourself();
2450 auto* p_ConnectorPSU_2 =
new TGeoCombiTrans(*t_ConnectorPSU_2, *r_ConnectorRC3_1);
2451 p_ConnectorPSU_2->RegisterYourself();
2452 auto* t_ConnectorPSU_3 =
new TGeoTranslation(
"translation_PSU_3", 6.9, -signe * (23.5), -74.77 + heigthConnector / 2);
2453 t_ConnectorPSU_3->RegisterYourself();
2454 auto* p_ConnectorPSU_3 =
new TGeoCombiTrans(*t_ConnectorPSU_3, *r_ConnectorRC3_1);
2455 p_ConnectorPSU_3->RegisterYourself();
2456 auto* t_ConnectorPSU_4 =
new TGeoTranslation(
"translation_PSU_4", -6.9, -signe * (23.5), -74.77 + heigthConnector / 2);
2457 t_ConnectorPSU_4->RegisterYourself();
2458 auto* p_ConnectorPSU_4 =
new TGeoCombiTrans(*t_ConnectorPSU_4, *r_ConnectorRC3_1);
2459 p_ConnectorPSU_4->RegisterYourself();
2461 vRO1->SetLineColor(kGray + 2);
2462 vRO2->SetLineColor(kGray + 2);
2463 vRO3->SetLineColor(kGray + 2);
2464 vRO4->SetLineColor(kGray + 2);
2465 vRO5->SetLineColor(kGray + 2);
2466 vRO6->SetLineColor(kGray + 2);
2467 vRO7->SetLineColor(kGray + 2);
2468 vRO8->SetLineColor(kGray + 2);
2469 vRO9->SetLineColor(kGray + 2);
2470 vRO_D3_1->SetLineColor(kGray + 2);
2471 vRO_D3_2->SetLineColor(kGray + 2);
2472 vRO_D3_3->SetLineColor(kGray + 2);
2473 vRO_D3_4->SetLineColor(kGray + 2);
2474 vRO_D4_1->SetLineColor(kGray + 2);
2475 vRO_D4_2->SetLineColor(kGray + 2);
2476 vRO_D4_3->SetLineColor(kGray + 2);
2477 vRO_D4_4->SetLineColor(kGray + 2);
2478 vRO_D4_5->SetLineColor(kGray + 2);
2479 vRO_D4_6->SetLineColor(kGray + 2);
2480 vRO_PSU_1->SetLineColor(kGray + 2);
2481 vRO_PSU_2->SetLineColor(kGray + 2);
2482 vRO_PSU_3->SetLineColor(kGray + 2);
2483 vRO_PSU_4->SetLineColor(kGray + 2);
2485 HalfConeVolume->AddNode(vRO1, 1, t_RO1);
2486 HalfConeVolume->AddNode(vRO2, 1, t_RO2);
2487 HalfConeVolume->AddNode(vRO3, 1, t_RO3);
2488 HalfConeVolume->AddNode(vRO4, 1, p_RO4);
2489 HalfConeVolume->AddNode(vRO5, 1, p_RO5_1);
2490 HalfConeVolume->AddNode(vRO5, 1, p_RO5_2);
2491 HalfConeVolume->AddNode(vRO6, 1, p_RO6);
2492 HalfConeVolume->AddNode(vRO7, 1, p_RO7);
2493 HalfConeVolume->AddNode(vRO8, 1, p_RO8_1);
2494 HalfConeVolume->AddNode(vRO8, 1, p_RO8_2);
2495 HalfConeVolume->AddNode(vRO9, 1, p_RO9_1);
2496 HalfConeVolume->AddNode(vRO9, 1, p_RO9_2);
2497 HalfConeVolume->AddNode(vRO_D3_1, 1, p_ROD3_1);
2498 HalfConeVolume->AddNode(vRO_D3_2, 1, p_ROD3_2);
2499 HalfConeVolume->AddNode(vRO_D3_3, 1, p_ROD3_3);
2500 HalfConeVolume->AddNode(vRO_D3_4, 1, p_ROD3_4);
2501 HalfConeVolume->AddNode(vConnectorRC, 1, p_ConnectorRC3_1);
2502 HalfConeVolume->AddNode(vConnectorRC, 1, p_ConnectorRC3_2);
2503 HalfConeVolume->AddNode(vConnectorRC, 1, p_ConnectorRC3_3);
2504 HalfConeVolume->AddNode(vConnectorRC, 1, p_ConnectorRC3_4);
2506 HalfConeVolume->AddNode(vRO_D4_1, 1, p_ROD4_1);
2507 HalfConeVolume->AddNode(vRO_D4_2, 1, p_ROD4_2);
2508 HalfConeVolume->AddNode(vRO_D4_3, 1, p_ROD4_3);
2509 HalfConeVolume->AddNode(vRO_D4_4, 1, p_ROD4_4);
2510 HalfConeVolume->AddNode(vRO_D4_5, 1, p_ROD4_5);
2511 HalfConeVolume->AddNode(vRO_D4_6, 1, p_ROD4_6);
2512 HalfConeVolume->AddNode(vConnectorRC, 1, p_ConnectorRC4_1);
2513 HalfConeVolume->AddNode(vConnectorRC, 1, p_ConnectorRC4_2);
2514 HalfConeVolume->AddNode(vConnectorRC, 1, p_ConnectorRC4_3);
2515 HalfConeVolume->AddNode(vConnectorRC, 1, p_ConnectorRC4_4);
2516 HalfConeVolume->AddNode(vConnectorRC, 1, p_ConnectorRC4_5);
2517 HalfConeVolume->AddNode(vConnectorRC, 1, p_ConnectorRC4_6);
2519 HalfConeVolume->AddNode(vRO_PSU_1, 1, p_RO_PSU_1);
2520 HalfConeVolume->AddNode(vRO_PSU_2, 1, p_RO_PSU_2);
2521 HalfConeVolume->AddNode(vRO_PSU_3, 1, p_RO_PSU_3);
2522 HalfConeVolume->AddNode(vRO_PSU_4, 1, p_RO_PSU_4);
2523 HalfConeVolume->AddNode(vConnectorRC, 1, p_ConnectorPSU_1);
2524 HalfConeVolume->AddNode(vConnectorRC, 1, p_ConnectorPSU_2);
2525 HalfConeVolume->AddNode(vConnectorRC, 1, p_ConnectorPSU_3);
2526 HalfConeVolume->AddNode(vConnectorRC, 1, p_ConnectorPSU_4);
2531 auto* mCu = gGeoManager->GetMedium(
"MFT_Cu$");
2535 Double_t xPC0 = 8.0;
2536 Double_t yPC0 = 0.0313;
2537 Double_t zPC0 = 2.0;
2546 TGeoVolume* vPCb0 = gGeoManager->MakeBox(Form(
"vPCb0_S%d",
side), mCu, xPC0 / 2, yPC0 / 2, zPC0 / 2);
2547 auto* r_PC0 =
new TGeoRotation(
"rotation_PC0", 0., 0., 0.);
2548 r_PC0->RegisterYourself();
2549 Double_t XPC0 = signe * 18.5;
2550 Double_t YPC0 = -4. + yPC0 / 2;
2551 Double_t ZPC0 = -72.5;
2552 auto* p_PC0 =
new TGeoCombiTrans(XPC0, YPC0, ZPC0, r_PC0);
2555 Double_t rmaxPC1 = 0.163;
2556 Double_t zPC1 = 5.5;
2557 TGeoVolume* vPCb1_1 = gGeoManager->MakeTube(Form(
"vPCb1_1_S%d",
side), mCu, 0., rmaxPC1, zPC1 / 2);
2558 Double_t XPC1 = XPC0 + signe * (2 * rmaxPC1 - 0.3);
2559 Double_t YPC1 = YPC0;
2560 Double_t ZPC1 = ZPC0 + (zPC0 + zPC1) / 2;
2561 auto* p_PC1_1 =
new TGeoCombiTrans(XPC1, YPC1, ZPC1, r_PC0);
2562 p_PC1_1->RegisterYourself();
2564 Double_t rPC2 = 0.95;
2565 TGeoVolume* vPCb2_1 = gGeoManager->MakeTorus(Form(
"vPCb2_1_S%d",
side), mCu, rPC2, 0., rmaxPC1, 0., 90.);
2566 auto* r_PC2 =
new TGeoRotation(
"rotation_PC2", 90., -90., -90.);
2567 r_PC2->RegisterYourself();
2568 Double_t XPC2 = XPC1;
2569 Double_t YPC2 = YPC1 - rPC2;
2570 Double_t ZPC2 = ZPC1 + zPC1 / 2;
2571 auto* p_PC2_1 =
new TGeoCombiTrans(XPC2, YPC2, ZPC2, r_PC2);
2572 p_PC2_1->RegisterYourself();
2574 Double_t zPC3 = 2.6;
2575 TGeoVolume* vPCb3_1 = gGeoManager->MakeTube(Form(
"vPCb3_S%d",
side), mCu, 0., rmaxPC1, zPC3 / 2);
2576 auto* r_PC3 =
new TGeoRotation(
"rotation_PC3", 0., 90., 0.);
2577 r_PC3->RegisterYourself();
2578 Double_t XPC3 = XPC2;
2579 Double_t YPC3 = YPC2 - zPC3 / 2;
2580 Double_t ZPC3 = ZPC2 + rPC2;
2581 auto* p_PC3_1 =
new TGeoCombiTrans(XPC3, YPC3, ZPC3, r_PC3);
2582 p_PC3_1->RegisterYourself();
2584 Double_t rPC4 = 0.95;
2585 TGeoVolume* vPCb4_1 = gGeoManager->MakeTorus(Form(
"vPCb4_1_H%d",
side), mCu, rPC2, 0., rmaxPC1, 0., 90.);
2586 auto* r_PC4 =
new TGeoRotation(
"rotation_PC4", 90., -90. - signe * 45., 90.);
2587 r_PC4->RegisterYourself();
2588 Double_t XPC4 = XPC3 - signe * rPC4 * TMath::Sin(45. * TMath::Pi() / 180.);
2589 Double_t YPC4 = YPC3 - zPC3 / 2;
2590 Double_t ZPC4 = ZPC3 + rPC4 * TMath::Cos(45. * TMath::Pi() / 180.);
2591 auto* p_PC4_1 =
new TGeoCombiTrans(XPC4, YPC4, ZPC4, r_PC4);
2592 p_PC4_1->RegisterYourself();
2594 Double_t zPC5 = 8.1;
2595 TGeoVolume* vPCb5_1 = gGeoManager->MakeTube(Form(
"vPCb5_S%d",
side), mCu, 0., rmaxPC1, zPC5 / 2);
2596 auto* r_PC5 =
new TGeoRotation(
"rotation_PC5", 90., -signe * 45., 0);
2597 r_PC5->RegisterYourself();
2598 Double_t XPC5 = XPC4 - signe * zPC5 / 2 * TMath::Sin(45. * TMath::Pi() / 180.);
2599 Double_t YPC5 = YPC4 - rPC4;
2600 Double_t ZPC5 = ZPC4 + zPC5 / 2 * TMath::Cos(45. * TMath::Pi() / 180.);
2601 auto* p_PC5_1 =
new TGeoCombiTrans(XPC5, YPC5, ZPC5, r_PC5);
2602 p_PC5_1->RegisterYourself();
2604 Double_t rPC6 = 0.95;
2605 TGeoVolume* vPCb6_1 = gGeoManager->MakeTorus(Form(
"vPCb6_1_H%d",
side), mCu, rPC2, 0.0, rmaxPC1, 45., 45.);
2606 auto* r_PC6 =
new TGeoRotation(
"rotation_PC6", 0., -signe * 90., signe * 90.);
2607 r_PC6->RegisterYourself();
2608 Double_t XPC6 = XPC5 - signe * (zPC5 / 2 * TMath::Sin(45 * TMath::Pi() / 180.) - rPC6 * TMath::Cos(45. * TMath::Pi() / 180.));
2609 Double_t YPC6 = YPC5;
2610 Double_t ZPC6 = ZPC5 + zPC5 / 2 * TMath::Cos(45. * TMath::Pi() / 180.) + rPC6 * TMath::Sin(45. * TMath::Pi() / 180.);
2611 auto* p_PC6_1 =
new TGeoCombiTrans(XPC6, YPC6, ZPC6, r_PC6);
2612 p_PC6_1->RegisterYourself();
2614 Double_t zPC7 = 13.0;
2615 TGeoVolume* vPCb7_1 = gGeoManager->MakeTube(Form(
"vPCb7_1_H%d",
side), mCu, 0., rmaxPC1, zPC7 / 2);
2616 auto* r_PC7 =
new TGeoRotation(
"rotation_PC7", 0., 0., 0.);
2617 r_PC7->RegisterYourself();
2618 Double_t XPC7 = XPC6 - signe * rPC6;
2619 Double_t YPC7 = YPC6;
2620 Double_t ZPC7 = ZPC6 + zPC7 / 2;
2621 auto* p_PC7_1 =
new TGeoCombiTrans(XPC7, YPC7, ZPC7, r_PC7);
2622 p_PC7_1->RegisterYourself();
2626 TGeoVolume* vPCb1_2 = gGeoManager->MakeTube(Form(
"vPCb1_2_S%d",
side), mCu, 0., rmaxPC1, zPC1 / 2);
2627 XPC1 = XPC0 + signe * (8 * rmaxPC1 - 0.3);
2628 auto* p_PC1_2 =
new TGeoCombiTrans(XPC1, YPC1, ZPC1, r_PC0);
2629 p_PC1_2->RegisterYourself();
2631 TGeoVolume* vPCb2_2 = gGeoManager->MakeTorus(Form(
"vPCb2_2_S%d",
side), mCu, rPC2, 0.0, rmaxPC1, 0., 90.);
2633 auto* p_PC2_2 =
new TGeoCombiTrans(XPC2, YPC2, ZPC2, r_PC2);
2634 p_PC2_2->RegisterYourself();
2636 TGeoVolume* vPCb3_2 = gGeoManager->MakeTube(Form(
"vPCb3_2_S%d",
side), mCu, 0., rmaxPC1, zPC3 / 2);
2638 YPC3 = YPC2 - zPC3 / 2;
2640 auto* p_PC3_2 =
new TGeoCombiTrans(XPC3, YPC3, ZPC3, r_PC3);
2641 p_PC3_2->RegisterYourself();
2643 TGeoVolume* vPCb4_2 = gGeoManager->MakeTorus(Form(
"vPCb4_2_S%d",
side), mCu, rPC2, 0., rmaxPC1, 0., 90.);
2644 XPC4 = XPC3 - signe * rPC4 * TMath::Sin(45. * TMath::Pi() / 180.);
2645 YPC4 = YPC3 - zPC3 / 2;
2646 ZPC4 = ZPC3 + rPC4 * TMath::Cos(45. * TMath::Pi() / 180.);
2647 auto* p_PC4_2 =
new TGeoCombiTrans(XPC4, YPC4, ZPC4, r_PC4);
2648 p_PC4_2->RegisterYourself();
2651 TGeoVolume* vPCb5_2 = gGeoManager->MakeTube(Form(
"vPCb5_2_S%d",
side), mCu, 0., rmaxPC1, zPC5 / 2);
2652 XPC5 = XPC4 - signe * zPC5 / 2 * TMath::Sin(45. * TMath::Pi() / 180.);
2654 ZPC5 = ZPC4 + zPC5 / 2 * TMath::Cos(45. * TMath::Pi() / 180.);
2655 auto* p_PC5_2 =
new TGeoCombiTrans(XPC5, YPC5, ZPC5, r_PC5);
2656 p_PC5_2->RegisterYourself();
2658 TGeoVolume* vPCb6_2 = gGeoManager->MakeTorus(Form(
"vPCb6_2_S%d",
side), mCu, rPC2, 0.0, rmaxPC1, 45., 45.);
2659 XPC6 = XPC5 - signe * (zPC5 / 2 * TMath::Sin(45. * TMath::Pi() / 180.) - rPC6 * TMath::Cos(45. * TMath::Pi() / 180.));
2661 ZPC6 = ZPC5 + zPC5 / 2 * TMath::Cos(45. * TMath::Pi() / 180.) + rPC6 * TMath::Sin(45. * TMath::Pi() / 180.);
2662 auto* p_PC6_2 =
new TGeoCombiTrans(XPC6, YPC6, ZPC6, r_PC6);
2663 p_PC6_2->RegisterYourself();
2666 TGeoVolume* vPCb7_2 = gGeoManager->MakeTube(Form(
"vPCb7_2_S%d",
side), mCu, 0., rmaxPC1, zPC7 / 2);
2667 XPC7 = XPC6 - signe * rPC6;
2669 ZPC7 = ZPC6 + zPC7 / 2;
2670 auto* p_PC7_2 =
new TGeoCombiTrans(XPC7, YPC7, ZPC7, r_PC7);
2671 p_PC7_2->RegisterYourself();
2675 TGeoVolume* vPCb1_3 = gGeoManager->MakeTube(Form(
"vPCb1_3_S%d",
side), mCu, 0., rmaxPC1, zPC1 / 2);
2676 XPC1 = XPC0 + signe * (14 * rmaxPC1 - 0.3);
2677 auto* p_PC1_3 =
new TGeoCombiTrans(XPC1, YPC1, ZPC1, r_PC0);
2678 p_PC1_3->RegisterYourself();
2680 TGeoVolume* vPCb2_3 = gGeoManager->MakeTorus(Form(
"vPCb2_3_S%d",
side), mCu, rPC2, 0., rmaxPC1, 0., 90.);
2682 auto* p_PC2_3 =
new TGeoCombiTrans(XPC2, YPC2, ZPC2, r_PC2);
2683 p_PC2_3->RegisterYourself();
2686 TGeoVolume* vPCb3_3 = gGeoManager->MakeTube(Form(
"vPCb3_3_S%d",
side), mCu, 0., rmaxPC1, zPC3 / 2);
2688 YPC3 = YPC2 - zPC3 / 2;
2690 auto* p_PC3_3 =
new TGeoCombiTrans(XPC3, YPC3, ZPC3, r_PC3);
2691 p_PC3_3->RegisterYourself();
2693 TGeoVolume* vPCb4_3 = gGeoManager->MakeTorus(Form(
"vPCb4_3_S%d",
side), mCu, rPC2, 0., rmaxPC1, 0., 90.);
2694 XPC4 = XPC3 - signe * rPC4 * TMath::Sin(45. * TMath::Pi() / 180.);
2695 YPC4 = YPC3 - zPC3 / 2;
2696 ZPC4 = ZPC3 + rPC4 * TMath::Cos(45. * TMath::Pi() / 180.);
2697 auto* p_PC4_3 =
new TGeoCombiTrans(XPC4, YPC4, ZPC4, r_PC4);
2698 p_PC4_3->RegisterYourself();
2701 TGeoVolume* vPCb5_3 = gGeoManager->MakeTube(Form(
"vPCb5_3_S%d",
side), mCu, 0., rmaxPC1, zPC5 / 2);
2702 XPC5 = XPC4 - signe * zPC5 / 2 * TMath::Sin(45. * TMath::Pi() / 180.);
2704 ZPC5 = ZPC4 + zPC5 / 2 * TMath::Cos(45. * TMath::Pi() / 180.);
2705 auto* p_PC5_3 =
new TGeoCombiTrans(XPC5, YPC5, ZPC5, r_PC5);
2706 p_PC5_3->RegisterYourself();
2708 TGeoVolume* vPCb6_3 = gGeoManager->MakeTorus(Form(
"vPCb6_3_S%d",
side), mCu, rPC2, 0.0, rmaxPC1, 45., 45.);
2709 XPC6 = XPC5 - signe * (zPC5 / 2 * TMath::Sin(45. * TMath::Pi() / 180.) - rPC6 * TMath::Cos(45. * TMath::Pi() / 180.));
2711 ZPC6 = ZPC5 + zPC5 / 2 * TMath::Cos(45. * TMath::Pi() / 180.) + rPC6 * TMath::Sin(45. * TMath::Pi() / 180.);
2712 auto* p_PC6_3 =
new TGeoCombiTrans(XPC6, YPC6, ZPC6, r_PC6);
2713 p_PC6_3->RegisterYourself();
2716 TGeoVolume* vPCb7_3 = gGeoManager->MakeTube(Form(
"vPCb7_3_S%d",
side), mCu, 0., rmaxPC1, zPC7 / 2);
2717 XPC7 = XPC6 - signe * rPC6;
2719 ZPC7 = ZPC6 + zPC7 / 2;
2720 auto* p_PC7_3 =
new TGeoCombiTrans(XPC7, YPC7, ZPC7, r_PC7);
2721 p_PC7_3->RegisterYourself();
2724 vPCb0->SetLineColor(kBlue);
2725 vPCb1_1->SetLineColor(kBlue);
2726 vPCb1_2->SetLineColor(kBlue);
2727 vPCb1_3->SetLineColor(kBlue);
2728 vPCb2_1->SetLineColor(kBlue);
2729 vPCb2_2->SetLineColor(kBlue);
2730 vPCb2_3->SetLineColor(kBlue);
2731 vPCb3_1->SetLineColor(kBlue);
2732 vPCb3_2->SetLineColor(kBlue);
2733 vPCb3_3->SetLineColor(kBlue);
2734 vPCb4_1->SetLineColor(kBlue);
2735 vPCb4_2->SetLineColor(kBlue);
2736 vPCb4_3->SetLineColor(kBlue);
2737 vPCb5_1->SetLineColor(kBlue);
2738 vPCb5_2->SetLineColor(kBlue);
2739 vPCb5_3->SetLineColor(kBlue);
2740 vPCb6_1->SetLineColor(kBlue);
2741 vPCb6_2->SetLineColor(kBlue);
2742 vPCb6_3->SetLineColor(kBlue);
2743 vPCb7_1->SetLineColor(kBlue);
2744 vPCb7_2->SetLineColor(kBlue);
2745 vPCb7_3->SetLineColor(kBlue);
2746 HalfConeVolume->AddNode(vPCb0, 1, p_PC0);
2747 HalfConeVolume->AddNode(vPCb1_1, 1, p_PC1_1);
2748 HalfConeVolume->AddNode(vPCb1_2, 1, p_PC1_2);
2749 HalfConeVolume->AddNode(vPCb1_3, 1, p_PC1_3);
2750 HalfConeVolume->AddNode(vPCb2_1, 1, p_PC2_1);
2751 HalfConeVolume->AddNode(vPCb2_2, 1, p_PC2_2);
2752 HalfConeVolume->AddNode(vPCb2_3, 1, p_PC2_3);
2753 HalfConeVolume->AddNode(vPCb3_1, 1, p_PC3_1);
2754 HalfConeVolume->AddNode(vPCb3_2, 1, p_PC3_2);
2755 HalfConeVolume->AddNode(vPCb3_3, 1, p_PC3_3);
2756 HalfConeVolume->AddNode(vPCb4_1, 1, p_PC4_1);
2757 HalfConeVolume->AddNode(vPCb4_2, 1, p_PC4_2);
2758 HalfConeVolume->AddNode(vPCb4_3, 1, p_PC4_3);
2759 HalfConeVolume->AddNode(vPCb5_1, 1, p_PC5_1);
2760 HalfConeVolume->AddNode(vPCb5_2, 1, p_PC5_2);
2761 HalfConeVolume->AddNode(vPCb5_3, 1, p_PC5_3);
2762 HalfConeVolume->AddNode(vPCb6_1, 1, p_PC6_1);
2763 HalfConeVolume->AddNode(vPCb6_2, 1, p_PC6_2);
2764 HalfConeVolume->AddNode(vPCb6_3, 1, p_PC6_3);
2765 HalfConeVolume->AddNode(vPCb7_1, 1, p_PC7_1);
2766 HalfConeVolume->AddNode(vPCb7_2, 1, p_PC7_2);
2767 HalfConeVolume->AddNode(vPCb7_3, 1, p_PC7_3);
2770 TGeoVolume* vPCt0 = gGeoManager->MakeBox(Form(
"vPCt0_S%d",
side), mCu, xPC0 / 2, yPC0 / 2, zPC0 / 2);
2771 p_PC0 =
new TGeoCombiTrans(XPC0, -YPC0, ZPC0, r_PC0);
2775 TGeoVolume* vPCt1_1 = gGeoManager->MakeTube(Form(
"vPCt1_1_S%d",
side), mCu, 0.0, rmaxPC1, zPC1 / 2);
2776 XPC1 = XPC0 + signe * (2 * rmaxPC1 - 0.3);
2777 p_PC1_1 =
new TGeoCombiTrans(XPC1, -YPC1, ZPC1, r_PC0);
2778 p_PC1_1->RegisterYourself();
2780 TGeoVolume* vPCt2_1 = gGeoManager->MakeTorus(Form(
"vPCt2_1_S%d",
side), mCu, rPC2, 0., rmaxPC1, 0., 90.);
2781 r_PC2 =
new TGeoRotation(
"rotation_PC2", 90., 90., 90.);
2782 r_PC2->RegisterYourself();
2785 ZPC2 = ZPC1 + zPC1 / 2;
2786 p_PC2_1 =
new TGeoCombiTrans(XPC2, -YPC2, ZPC2, r_PC2);
2787 p_PC2_1->RegisterYourself();
2790 TGeoVolume* vPCt3_1 = gGeoManager->MakeTube(Form(
"vPCt3_S%d",
side), mCu, 0., rmaxPC1, zPC3 / 2);
2791 r_PC3->RegisterYourself();
2793 YPC3 = YPC2 - zPC3 / 2;
2795 p_PC3_1 =
new TGeoCombiTrans(XPC3, -YPC3, ZPC3, r_PC3);
2796 p_PC3_1->RegisterYourself();
2799 TGeoVolume* vPCt4_1 = gGeoManager->MakeTorus(Form(
"vPCt4_1_H%d",
side), mCu, rPC2, 0., rmaxPC1, 0., 90.);
2800 r_PC4 =
new TGeoRotation(
"rotation_PC4", 90., 90. - signe * 45., 180. + 90.);
2801 r_PC4->RegisterYourself();
2802 XPC4 = XPC3 - signe * rPC4 * TMath::Sin(45. * TMath::Pi() / 180.);
2803 YPC4 = YPC3 - zPC3 / 2;
2804 ZPC4 = ZPC3 + rPC4 * TMath::Cos(45. * TMath::Pi() / 180.);
2805 p_PC4_1 =
new TGeoCombiTrans(XPC4, -YPC4, ZPC4, r_PC4);
2806 p_PC4_1->RegisterYourself();
2809 TGeoVolume* vPCt5_1 = gGeoManager->MakeTube(Form(
"vPCt5_S%d",
side), mCu, 0.0, rmaxPC1, zPC5 / 2);
2810 r_PC5 =
new TGeoRotation(
"rotation_PC5", 90., 180.0 - signe * 45., 180);
2811 r_PC5->RegisterYourself();
2812 XPC5 = XPC4 - signe * zPC5 / 2 * TMath::Sin(45. * TMath::Pi() / 180.);
2814 ZPC5 = ZPC4 + zPC5 / 2 * TMath::Cos(45. * TMath::Pi() / 180.);
2815 p_PC5_1 =
new TGeoCombiTrans(XPC5, -YPC5, ZPC5, r_PC5);
2816 p_PC5_1->RegisterYourself();
2819 TGeoVolume* vPCt6_1 = gGeoManager->MakeTorus(Form(
"vPCt6_1_H%d",
side), mCu, rPC2, 0.0, rmaxPC1, 45., 45.);
2820 XPC6 = XPC5 - signe * (zPC5 / 2 * TMath::Sin(45.0 * TMath::Pi() / 180.) - rPC6 * TMath::Cos(45 * TMath::Pi() / 180.));
2822 ZPC6 = ZPC5 + zPC5 / 2 * TMath::Cos(45. * TMath::Pi() / 180.) + rPC6 * TMath::Sin(45 * TMath::Pi() / 180.);
2823 p_PC6_1 =
new TGeoCombiTrans(XPC6, -YPC6, ZPC6, r_PC6);
2824 p_PC6_1->RegisterYourself();
2827 TGeoVolume* vPCt7_1 = gGeoManager->MakeTube(Form(
"vPCt7_1_H%d",
side), mCu, 0., rmaxPC1, zPC7 / 2);
2828 XPC7 = XPC6 - signe * rPC6;
2830 ZPC7 = ZPC6 + zPC7 / 2;
2831 p_PC7_1 =
new TGeoCombiTrans(XPC7, -YPC7, ZPC7, r_PC7);
2832 p_PC7_1->RegisterYourself();
2836 TGeoVolume* vPCt1_2 = gGeoManager->MakeTube(Form(
"vPCt1_2_S%d",
side), mCu, 0., rmaxPC1, zPC1 / 2);
2837 XPC1 = XPC0 + signe * (8 * rmaxPC1 - 0.3);
2838 p_PC1_2 =
new TGeoCombiTrans(XPC1, -YPC1, ZPC1, r_PC0);
2839 p_PC1_2->RegisterYourself();
2841 TGeoVolume* vPCt2_2 = gGeoManager->MakeTorus(Form(
"TorusPCt2_2_S%d",
side), mCu, rPC2, 0.0, rmaxPC1, 0., 90.);
2843 p_PC2_2 =
new TGeoCombiTrans(XPC2, -YPC2, ZPC2, r_PC2);
2844 p_PC2_2->RegisterYourself();
2846 TGeoVolume* vPCt3_2 = gGeoManager->MakeTube(Form(
"vPCt3_2_S%d",
side), mCu, 0., rmaxPC1, zPC3 / 2);
2848 p_PC3_2 =
new TGeoCombiTrans(XPC3, -YPC3, ZPC3, r_PC3);
2849 p_PC3_2->RegisterYourself();
2851 TGeoVolume* vPCt4_2 = gGeoManager->MakeTorus(Form(
"TorusPCt4_2_S%d",
side), mCu, rPC2, 0.0, rmaxPC1, 0., 90.);
2852 XPC4 = XPC3 - signe * rPC4 * TMath::Sin(45. * TMath::Pi() / 180.);
2853 YPC4 = YPC3 - zPC3 / 2;
2854 ZPC4 = ZPC3 + rPC4 * TMath::Cos(45 * TMath::Pi() / 180.);
2855 p_PC4_2 =
new TGeoCombiTrans(XPC4, -YPC4, ZPC4, r_PC4);
2856 p_PC4_2->RegisterYourself();
2859 TGeoVolume* vPCt5_2 = gGeoManager->MakeTube(Form(
"vPCt5_2_S%d",
side), mCu, 0., rmaxPC1, zPC5 / 2);
2860 XPC5 = XPC4 - signe * zPC5 / 2 * TMath::Sin(45.0 * TMath::Pi() / 180.);
2862 ZPC5 = ZPC4 + zPC5 / 2 * TMath::Cos(45.0 * TMath::Pi() / 180.);
2863 p_PC5_2 =
new TGeoCombiTrans(XPC5, -YPC5, ZPC5, r_PC5);
2864 p_PC5_2->RegisterYourself();
2866 TGeoVolume* vPCt6_2 = gGeoManager->MakeTorus(Form(
"TorusPCt6_2_S%d",
side), mCu, rPC2, 0.0, rmaxPC1, 45., 45.);
2867 XPC6 = XPC5 - signe * (zPC5 / 2 * TMath::Sin(45.0 * TMath::Pi() / 180.) - rPC6 * TMath::Cos(45. * TMath::Pi() / 180.));
2869 ZPC6 = ZPC5 + zPC5 / 2 * TMath::Cos(45. * TMath::Pi() / 180.) + rPC6 * TMath::Sin(45. * TMath::Pi() / 180.);
2870 p_PC6_2 =
new TGeoCombiTrans(XPC6, -YPC6, ZPC6, r_PC6);
2871 p_PC6_2->RegisterYourself();
2874 TGeoVolume* vPCt7_2 = gGeoManager->MakeTube(Form(
"vPCt7_2_S%d",
side), mCu, 0.0, rmaxPC1, zPC7 / 2);
2875 XPC7 = XPC6 - signe * rPC6;
2877 ZPC7 = ZPC6 + zPC7 / 2;
2878 p_PC7_2 =
new TGeoCombiTrans(XPC7, -YPC7, ZPC7, r_PC7);
2879 p_PC7_2->RegisterYourself();
2883 TGeoVolume* vPCt1_3 = gGeoManager->MakeTube(Form(
"vPCt1_3_S%d",
side), mCu, 0., rmaxPC1, zPC1 / 2);
2884 XPC1 = XPC0 + signe * (14 * rmaxPC1 - 0.3);
2885 p_PC1_3 =
new TGeoCombiTrans(XPC1, -YPC1, ZPC1, r_PC0);
2886 p_PC1_3->RegisterYourself();
2889 TGeoVolume* vPCt2_3 = gGeoManager->MakeTorus(Form(
"TorusPCt2_3_S%d",
side), mCu, rPC2, 0., rmaxPC1, 0., 90.);
2891 p_PC2_3 =
new TGeoCombiTrans(XPC2, -YPC2, ZPC2, r_PC2);
2892 p_PC2_3->RegisterYourself();
2894 TGeoVolume* vPCt3_3 = gGeoManager->MakeTube(Form(
"vPCt3_3_S%d",
side), mCu, 0., rmaxPC1, zPC3 / 2);
2896 YPC3 = YPC2 - zPC3 / 2;
2898 p_PC3_3 =
new TGeoCombiTrans(XPC3, -YPC3, ZPC3, r_PC3);
2899 p_PC3_3->RegisterYourself();
2901 TGeoVolume* vPCt4_3 = gGeoManager->MakeTorus(Form(
"TorusPCt4_3_S%d",
side), mCu, rPC2, 0., rmaxPC1, 0., 90.);
2902 XPC4 = XPC3 - signe * rPC4 * TMath::Sin(45. * TMath::Pi() / 180.);
2903 YPC4 = YPC3 - zPC3 / 2;
2904 ZPC4 = ZPC3 + rPC4 * TMath::Cos(45.0 * TMath::Pi() / 180.);
2905 p_PC4_3 =
new TGeoCombiTrans(XPC4, -YPC4, ZPC4, r_PC4);
2906 p_PC4_3->RegisterYourself();
2909 TGeoVolume* vPCt5_3 = gGeoManager->MakeTube(Form(
"vPCt5_3_S%d",
side), mCu, 0., rmaxPC1, zPC5 / 2);
2910 XPC5 = XPC4 - signe * zPC5 / 2 * TMath::Sin(45. * TMath::Pi() / 180.);
2912 ZPC5 = ZPC4 + zPC5 / 2 * TMath::Cos(45 * TMath::Pi() / 180.);
2913 p_PC5_3 =
new TGeoCombiTrans(XPC5, -YPC5, ZPC5, r_PC5);
2914 p_PC5_3->RegisterYourself();
2916 TGeoVolume* vPCt6_3 = gGeoManager->MakeTorus(Form(
"TorusPCt6_3_S%d",
side), mCu, rPC2, 0., rmaxPC1, 45., 45.);
2917 XPC6 = XPC5 - signe * (zPC5 / 2 * TMath::Sin(45.0 * TMath::Pi() / 180.) - rPC6 * TMath::Cos(45. * TMath::Pi() / 180.));
2919 ZPC6 = ZPC5 + zPC5 / 2 * TMath::Cos(45.0 * TMath::Pi() / 180.) + rPC6 * TMath::Sin(45. * TMath::Pi() / 180.);
2920 p_PC6_3 =
new TGeoCombiTrans(XPC6, -YPC6, ZPC6, r_PC6);
2921 p_PC6_3->RegisterYourself();
2924 TGeoVolume* vPCt7_3 = gGeoManager->MakeTube(Form(
"vPCt7_3_S%d",
side), mCu, 0., rmaxPC1, zPC7 / 2);
2925 XPC7 = XPC6 - signe * rPC6;
2927 ZPC7 = ZPC6 + zPC7 / 2;
2928 p_PC7_3 =
new TGeoCombiTrans(XPC7, -YPC7, ZPC7, r_PC7);
2929 p_PC7_3->RegisterYourself();
2932 vPCt0->SetLineColor(kBlue);
2933 vPCt1_1->SetLineColor(kBlue);
2934 vPCt2_1->SetLineColor(kBlue);
2935 vPCt3_1->SetLineColor(kBlue);
2936 vPCt4_1->SetLineColor(kBlue);
2937 vPCt5_1->SetLineColor(kBlue);
2938 vPCt6_1->SetLineColor(kBlue);
2939 vPCt7_1->SetLineColor(kBlue);
2940 vPCt1_2->SetLineColor(kBlue);
2941 vPCt2_2->SetLineColor(kBlue);
2942 vPCt3_2->SetLineColor(kBlue);
2943 vPCt4_2->SetLineColor(kBlue);
2944 vPCt5_2->SetLineColor(kBlue);
2945 vPCt6_2->SetLineColor(kBlue);
2946 vPCt7_2->SetLineColor(kBlue);
2947 vPCt1_3->SetLineColor(kBlue);
2948 vPCt2_3->SetLineColor(kBlue);
2949 vPCt3_3->SetLineColor(kBlue);
2950 vPCt4_3->SetLineColor(kBlue);
2951 vPCt5_3->SetLineColor(kBlue);
2952 vPCt6_3->SetLineColor(kBlue);
2953 vPCt7_3->SetLineColor(kBlue);
2954 HalfConeVolume->AddNode(vPCt0, 1, p_PC0);
2955 HalfConeVolume->AddNode(vPCt1_1, 1, p_PC1_1);
2956 HalfConeVolume->AddNode(vPCt2_1, 1, p_PC2_1);
2957 HalfConeVolume->AddNode(vPCt3_1, 1, p_PC3_1);
2958 HalfConeVolume->AddNode(vPCt4_1, 1, p_PC4_1);
2959 HalfConeVolume->AddNode(vPCt5_1, 1, p_PC5_1);
2960 HalfConeVolume->AddNode(vPCt6_1, 1, p_PC6_1);
2961 HalfConeVolume->AddNode(vPCt7_1, 1, p_PC7_1);
2962 HalfConeVolume->AddNode(vPCt1_2, 1, p_PC1_2);
2963 HalfConeVolume->AddNode(vPCt2_2, 1, p_PC2_2);
2964 HalfConeVolume->AddNode(vPCt3_2, 1, p_PC3_2);
2965 HalfConeVolume->AddNode(vPCt4_2, 1, p_PC4_2);
2966 HalfConeVolume->AddNode(vPCt5_2, 1, p_PC5_2);
2967 HalfConeVolume->AddNode(vPCt6_2, 1, p_PC6_2);
2968 HalfConeVolume->AddNode(vPCt7_2, 1, p_PC7_2);
2969 HalfConeVolume->AddNode(vPCt1_3, 1, p_PC1_3);
2970 HalfConeVolume->AddNode(vPCt2_3, 1, p_PC2_3);
2971 HalfConeVolume->AddNode(vPCt3_3, 1, p_PC3_3);
2972 HalfConeVolume->AddNode(vPCt4_3, 1, p_PC4_3);
2973 HalfConeVolume->AddNode(vPCt5_3, 1, p_PC5_3);
2974 HalfConeVolume->AddNode(vPCt6_3, 1, p_PC6_3);
2975 HalfConeVolume->AddNode(vPCt7_3, 1, p_PC7_3);
2982 Double_t xPC_0 = 1.0;
2983 Double_t yPC_0 = 0.0836;
2984 Double_t zPC_0 = 5.0;
2985 TGeoVolume* vPC_0 = gGeoManager->MakeBox(Form(
"vPC_0_S%d",
side), mCu, xPC_0 / 2, yPC_0 / 2, zPC_0 / 2);
2986 auto* r_PC_0 =
new TGeoRotation(
"rotation_PC_0", -45., 0., 0.);
2987 r_PC_0->RegisterYourself();
2988 Double_t XPC_0 = signe * 19.7;
2989 Double_t YPC_0 = signe * 20.0;
2990 Double_t ZPC_0 = -71.0;
2991 auto* p_PC_0 =
new TGeoCombiTrans(XPC_0, YPC_0, ZPC_0, r_PC_0);
2993 Double_t xPC_1 = 4.8;
2994 Double_t yPC_1 = yPC_0;
2995 Double_t zPC_1 = xPC_0;
2996 TGeoVolume* vPC_1 = gGeoManager->MakeBox(Form(
"vPC_1_S%d",
side), mCu, xPC_1 / 2, yPC_1 / 2, zPC_1 / 2);
2997 auto* r_PC_1 =
new TGeoRotation(
"rotation_PC_1", 45., 90., 0.);
2998 r_PC_1->RegisterYourself();
2999 Double_t XPC_1 = XPC_0 - signe * xPC_1 / 2 * TMath::Cos(45. * TMath::Pi() / 180.);
3000 Double_t YPC_1 = YPC_0 - signe * xPC_1 / 2 * TMath::Sin(45. * TMath::Pi() / 180.);
3001 Double_t ZPC_1 = ZPC_0 + (zPC_0 + yPC_1) / 2;
3002 auto* p_PC_1 =
new TGeoCombiTrans(XPC_1, YPC_1, ZPC_1, r_PC_1);
3004 vPC_0->SetLineColor(kBlue);
3005 vPC_1->SetLineColor(kBlue);
3006 HalfConeVolume->AddNode(vPC_0, 1, p_PC_0);
3007 HalfConeVolume->AddNode(vPC_1, 1, p_PC_1);
3010 TGeoVolume* vPC_P0 = gGeoManager->MakeBox(Form(
"vPC_P0_S%d",
side), mCu, xPC_0 / 2, yPC_0 / 2, zPC_0 / 2);
3011 auto* r_PC_P0 =
new TGeoRotation(
"rotation_PC_P0", 45., 0., 0.);
3012 r_PC_P0->RegisterYourself();
3013 Double_t XPC_P0 = -signe * 19.7;
3014 Double_t YPC_P0 = signe * 20.0;
3015 Double_t ZPC_P0 = -71.0;
3016 auto* p_PC_P0 =
new TGeoCombiTrans(XPC_P0, YPC_P0, ZPC_P0, r_PC_P0);
3018 Double_t xPC_P1 = xPC_0;
3019 Double_t yPC_P1 = yPC_0;
3020 Double_t zPC_P1 = 4.8;
3021 TGeoVolume* vPC_P1 = gGeoManager->MakeBox(Form(
"vPC_P1_S%d",
side), mCu, xPC_P1 / 2, yPC_P1 / 2, zPC_P1 / 2);
3022 auto* r_PC_P1 =
new TGeoRotation(
"rotation_PC_P1", 45., 90., 0.);
3023 r_PC_P1->RegisterYourself();
3024 Double_t XPC_P1 = XPC_P0 + signe * zPC_P1 / 2 * TMath::Cos(45 * TMath::Pi() / 180);
3025 Double_t YPC_P1 = YPC_P0 - signe * zPC_P1 / 2 * TMath::Sin(45 * TMath::Pi() / 180);
3026 Double_t ZPC_P1 = ZPC_P0 + (zPC_0 + yPC_P1) / 2;
3027 auto* p_PC_P1 =
new TGeoCombiTrans(XPC_P1, YPC_P1, ZPC_P1, r_PC_P1);
3029 vPC_P0->SetLineColor(kBlue);
3030 vPC_P1->SetLineColor(kBlue);
3031 HalfConeVolume->AddNode(vPC_P0, 1, p_PC_P0);
3032 HalfConeVolume->AddNode(vPC_P1, 1, p_PC_P1);
3036 TGeoVolume* vPC_2 = gGeoManager->MakeBox(Form(
"vPC_2_S%d",
side), mCu, xPC_0 / 2, yPC_0 / 2, zPC_0 / 2);
3037 auto* r_PC_2 =
new TGeoRotation(
"rotation_PC_2", -39., 0., 0.);
3038 r_PC_2->RegisterYourself();
3039 Double_t XPC_2 = signe * 17.2;
3040 Double_t YPC_2 = signe * 22.0;
3041 Double_t ZPC_2 = -74.0;
3042 auto* p_PC_2 =
new TGeoCombiTrans(XPC_2, YPC_2, ZPC_2, r_PC_2);
3044 Double_t xPC_3 = 4.8;
3045 Double_t yPC_3 = yPC_0;
3046 Double_t zPC_3 = xPC_0;
3047 TGeoVolume* vPC_3 = gGeoManager->MakeBox(Form(
"vPC_3_S%d",
side), mCu, xPC_3 / 2, yPC_3 / 2, zPC_3 / 2);
3048 auto* r_PC_3 =
new TGeoRotation(
"rotation_PC_3", 90. - 39., 90., 0.);
3049 r_PC_3->RegisterYourself();
3050 Double_t XPC_3 = XPC_2 - signe * xPC_3 / 2 * TMath::Cos((90. - 39.) * TMath::Pi() / 180.);
3051 Double_t YPC_3 = YPC_2 - signe * xPC_3 / 2 * TMath::Sin((90. - 39.) * TMath::Pi() / 180.);
3052 Double_t ZPC_3 = ZPC_2 - (zPC_0 + yPC_3) / 2;
3053 auto* p_PC_3 =
new TGeoCombiTrans(XPC_3, YPC_3, ZPC_3, r_PC_3);
3055 vPC_2->SetLineColor(kBlue);
3056 vPC_3->SetLineColor(kBlue);
3057 HalfConeVolume->AddNode(vPC_2, 1, p_PC_2);
3058 HalfConeVolume->AddNode(vPC_3, 1, p_PC_3);
3061 TGeoVolume* vPC_P2 = gGeoManager->MakeBox(Form(
"vPC_P2_S%d",
side), mCu, xPC_0 / 2, yPC_0 / 2, zPC_0 / 2);
3062 auto* r_PC_P2 =
new TGeoRotation(
"rotation_PC_P2", 39., 0., 0.);
3063 r_PC_P2->RegisterYourself();
3064 Double_t XPC_P2 = -signe * 17.2;
3065 Double_t YPC_P2 = signe * 22.0;
3066 Double_t ZPC_P2 = -74.0;
3067 auto* p_PC_P2 =
new TGeoCombiTrans(XPC_P2, YPC_P2, ZPC_P2, r_PC_P2);
3069 Double_t xPC_P3 = xPC_0;
3070 Double_t yPC_P3 = yPC_0;
3071 Double_t zPC_P3 = 4.8;
3072 TGeoVolume* vPC_P3 = gGeoManager->MakeBox(Form(
"vPC_P3_S%d",
side), mCu, xPC_P1 / 2, yPC_P1 / 2, zPC_P1 / 2);
3073 auto* r_PC_P3 =
new TGeoRotation(
"rotation_PC_P3", 39., 90., 0.);
3074 r_PC_P3->RegisterYourself();
3075 Double_t XPC_P3 = XPC_P2 + signe * zPC_P3 / 2 * TMath::Cos((90. - 39.) * TMath::Pi() / 180.);
3076 Double_t YPC_P3 = YPC_P2 - signe * zPC_P3 / 2 * TMath::Sin((90. - 39.) * TMath::Pi() / 180.);
3077 Double_t ZPC_P3 = ZPC_P2 - (zPC_0 + yPC_P3) / 2;
3078 auto* p_PC_P3 =
new TGeoCombiTrans(XPC_P3, YPC_P3, ZPC_P3, r_PC_P3);
3080 vPC_P2->SetLineColor(kBlue);
3081 vPC_P3->SetLineColor(kBlue);
3082 HalfConeVolume->AddNode(vPC_P2, 1, p_PC_P2);
3083 HalfConeVolume->AddNode(vPC_P3, 1, p_PC_P3);
3087 Double_t xPC_PSUb0 = 2.5;
3088 Double_t yPC_PSUb0 = 0.0418;
3089 Double_t zPC_PSUb0 = 0.8;
3091 TGeoVolume* vPC_PSUb0 = gGeoManager->MakeBox(Form(
"vPC_PSUb0_S%d",
side), mCu, xPC_PSUb0 / 2, yPC_PSUb0 / 2, zPC_PSUb0 / 2);
3092 auto* r_PC_PSU =
new TGeoRotation(
"rotation_PC_PSU", -signe * 52., 0., 0.);
3093 r_PC_PSU->RegisterYourself();
3094 Double_t XPC_PSUb0 = -signe * 22.4;
3095 Double_t YPC_PSUb0 = -16.4;
3096 Double_t ZPC_PSUb0 = -72.5 + signe * 1.;
3097 auto* p_PC_PSU =
new TGeoCombiTrans(XPC_PSUb0, YPC_PSUb0, ZPC_PSUb0, r_PC_PSU);
3098 vPC_PSUb0->SetLineColor(kBlue);
3099 HalfConeVolume->AddNode(vPC_PSUb0, 1, p_PC_PSU);
3101 Double_t xPC_PSUb1 = 2.1;
3102 Double_t yPC_PSUb1 = 0.274;
3103 Double_t zPC_PSUb1 = yPC_PSUb1;
3104 TGeoVolume* vPC_PSUb1 = gGeoManager->MakeBox(Form(
"vPC_PSUb1_S%d",
side), mCu, xPC_PSUb1 / 2, yPC_PSUb1 / 2, zPC_PSUb1 / 2);
3105 r_PC_PSU =
new TGeoRotation(
"rotation_PC_PSU", 90. - signe * 52., 90., 0.);
3106 r_PC_PSU->RegisterYourself();
3107 Double_t XPC_PSUb1 = XPC_PSUb0 - signe * xPC_PSUb1 / 2 * TMath::Cos((90. - 52.) * TMath::Pi() / 180.);
3108 Double_t YPC_PSUb1 = YPC_PSUb0 - xPC_PSUb1 / 2 * TMath::Sin((90. - 52.) * TMath::Pi() / 180.);
3109 Double_t ZPC_PSUb1 = ZPC_PSUb0 - zPC_PSUb0 / 2 - yPC_PSUb1 / 2;
3110 p_PC_PSU =
new TGeoCombiTrans(XPC_PSUb1, YPC_PSUb1, ZPC_PSUb1, r_PC_PSU);
3111 vPC_PSUb1->SetLineColor(kBlue);
3112 HalfConeVolume->AddNode(vPC_PSUb1, 1, p_PC_PSU);
3114 Double_t xPC_PSUb2 = yPC_PSUb1;
3115 Double_t yPC_PSUb2 = yPC_PSUb1;
3116 Double_t zPC_PSUb2 = 11.;
3117 TGeoVolume* vPC_PSUb2 = gGeoManager->MakeBox(Form(
"vPC_PSUb0_S%d",
side), mCu, xPC_PSUb2 / 2, yPC_PSUb2 / 2, zPC_PSUb2 / 2);
3118 r_PC_PSU =
new TGeoRotation(
"rotation_PC_PSU", -signe * 52., 0., 0.);
3119 r_PC_PSU->RegisterYourself();
3120 Double_t XPC_PSUb2 = -signe * 24.2;
3121 Double_t YPC_PSUb2 = -17.8;
3122 Double_t ZPC_PSUb2 = ZPC_PSUb0 - zPC_PSUb0 / 2 - zPC_PSUb2 / 2;
3123 p_PC_PSU =
new TGeoCombiTrans(XPC_PSUb2, YPC_PSUb2, ZPC_PSUb2, r_PC_PSU);
3124 vPC_PSUb2->SetLineColor(kBlue);
3125 HalfConeVolume->AddNode(vPC_PSUb2, 1, p_PC_PSU);
3128 TGeoVolume* vPC_PSUt0 = gGeoManager->MakeBox(Form(
"vPC_PSUt0_S%d",
side), mCu, xPC_PSUb0 / 2, yPC_PSUb0 / 2, zPC_PSUb0 / 2);
3129 r_PC_PSU =
new TGeoRotation(
"rotation_PC_PSU", signe * 52., 0., 0.);
3130 r_PC_PSU->RegisterYourself();
3131 Double_t XPC_PSUt0 = -signe * 22.4;
3132 Double_t YPC_PSUt0 = 16.4;
3133 Double_t ZPC_PSUt0 = -72.5 - signe * 1.;
3134 p_PC_PSU =
new TGeoCombiTrans(XPC_PSUt0, YPC_PSUt0, ZPC_PSUt0, r_PC_PSU);
3135 vPC_PSUt0->SetLineColor(kBlue);
3136 HalfConeVolume->AddNode(vPC_PSUt0, 1, p_PC_PSU);
3138 TGeoVolume* vPC_PSUt1 = gGeoManager->MakeBox(Form(
"vPC_PSUt1_S%d",
side), mCu, xPC_PSUb1 / 2, yPC_PSUb1 / 2, zPC_PSUb1 / 2);
3139 r_PC_PSU =
new TGeoRotation(
"rotation_PC_PSU", -(90.0 - signe * 52.0), 90., 0.);
3140 r_PC_PSU->RegisterYourself();
3141 Double_t XPC_PSUt1 = XPC_PSUt0 - signe * xPC_PSUb1 / 2 * TMath::Cos((90. - 52.) * TMath::Pi() / 180);
3142 Double_t YPC_PSUt1 = YPC_PSUt0 + xPC_PSUb1 / 2 * TMath::Sin((90. - 52.) * TMath::Pi() / 180.);
3143 Double_t ZPC_PSUt1 = ZPC_PSUt0 - zPC_PSUb0 / 2 - yPC_PSUb1 / 2;
3144 p_PC_PSU =
new TGeoCombiTrans(XPC_PSUt1, YPC_PSUt1, ZPC_PSUt1, r_PC_PSU);
3145 vPC_PSUt1->SetLineColor(kBlue);
3146 HalfConeVolume->AddNode(vPC_PSUt1, 1, p_PC_PSU);
3148 TGeoVolume* vPC_PSUt2 = gGeoManager->MakeBox(Form(
"vPC_PSUt0_S%d",
side), mCu, xPC_PSUb2 / 2, yPC_PSUb2 / 2, zPC_PSUb2 / 2);
3149 r_PC_PSU =
new TGeoRotation(
"rotation_PC_PSU", signe * 52., 0., 0.);
3150 r_PC_PSU->RegisterYourself();
3151 Double_t XPC_PSUt2 = XPC_PSUb2;
3152 Double_t YPC_PSUt2 = -YPC_PSUb2;
3153 Double_t ZPC_PSUt2 = ZPC_PSUt0 - zPC_PSUb0 / 2 - zPC_PSUb2 / 2;
3154 p_PC_PSU =
new TGeoCombiTrans(XPC_PSUt2, YPC_PSUt2, ZPC_PSUt2, r_PC_PSU);
3155 vPC_PSUt2->SetLineColor(kBlue);
3156 HalfConeVolume->AddNode(vPC_PSUt2, 1, p_PC_PSU);