252 auto rot1 =
new TGeoRotation(
"rot1", 90., 90., 90., 180., 0., 0.);
253 auto rot4 =
new TGeoRotation(
"rot4", 90., 315., 90., 45., 0., 0.);
257 const float kHzFrameThickness = 1.59 / 2;
258 const float kHzOuterFrameEpoxy = 1.19 / 2;
259 const float kHzOuterFrameInox = 0.1 / 2;
260 const float kHzFoam2 = 2.083 / 2;
263 const float kHzTopAnodeSteel1 = 0.185 / 2;
264 const float kHzTopAnodeSteel2 = 0.51 / 2;
265 const float kHzAnodeFR4 = 0.08 / 2;
266 const float kHzTopEarthFaceCu = 0.364 / 2;
267 const float kHzTopEarthProfileCu = 1.1 / 2;
268 const float kHzTopPositionerSteel = 1.45 / 2;
269 const float kHzTopGasSupportAl = 0.85 / 2;
272 const float kHzVerticalCradleAl = 0.8 / 2;
273 const float kHzLateralSightAl = 0.975 / 2;
274 const float kHzLateralPosnInoxFace = 2.125 / 2;
275 const float kHzLatPosInoxProfM = 6.4 / 2;
276 const float kHzLatPosInoxProfNF = 1.45 / 2;
277 const float kHzLateralPosnAl = 0.5 / 2;
278 const float kHzVertEarthFaceCu = 0.367 / 2;
279 const float kHzVertBarSteel = 0.198 / 2;
280 const float kHzVertEarthProfCu = 1.1 / 2;
285 const float kHxInVFrame = 1.85 / 2;
286 const float kHyInVFrame = 73.95 / 2;
287 const float kHzInVFrame = kHzFrameThickness;
290 const float kHxV1mm = 0.75 / 2;
291 const float kHyV1mm = 1.85 / 2;
292 const float kHzV1mm = kHzFrameThickness;
318 const float kHxTFA = 34.1433 / 2;
319 const float kHyTFA = 7.75 / 2;
320 const float kHzTFAE = kHzOuterFrameEpoxy;
321 const float kHzTFAI = kHzOuterFrameInox;
324 const float kH1FAA = 8.7 / 2;
325 const float kTl1FAB = 4.35 / 2;
326 const float kTl1FAA = 7.75 / 2;
329 const float kHxTA1 = 16.2 / 2;
330 const float kHyTA1 = 3.5 / 2;
331 const float kHzTA11 = kHzTopAnodeSteel1;
332 const float kHzTA12 = kHzAnodeFR4;
335 const float kHzTA21 = kHzTopAnodeSteel2;
336 const float kHzTA22 = kHzAnodeFR4;
337 const float kHTA2 = 7.268 / 2;
338 const float kBlTA2 = 2.03 / 2;
339 const float kTlTA2 = 3.5 / 2;
340 const float kAlpTA2 = 5.78;
343 const float kHzTA3 = kHzAnodeFR4;
344 const float kHTA3 = 7.268 / 2;
345 const float kBlTA3 = 0.;
346 const float kTlTA3 = 2.03 / 2;
347 const float kAlpTA3 = 7.95;
350 const float kHzTEF = kHzTopEarthFaceCu;
351 const float kHTEF = 1.2 / 2;
352 const float kBlTEF = 21.323 / 2;
353 const float kTlTEF = 17.963 / 2;
354 const float kAlpTEF = -54.46;
357 const float kHzTEP = kHzTopEarthProfileCu;
358 const float kHTEP = 0.2;
359 const float kBlTEP = 31.766 / 2;
360 const float kTlTEP = 30.535 / 2;
361 const float kAlpTEP = -56.98;
364 const float kHzTP = kHzTopPositionerSteel;
365 const float kHTP = 1.5;
366 const float kBlTP = 7.023 / 2;
367 const float kTlTP = 7.314 / 2;
368 const float kAlpTP = 2.78;
371 const float kHxTGS = 8.5 / 2;
372 const float kHyTGS = 1.5;
373 const float kHzTGS = kHzTopGasSupportAl;
376 const float kH1OETF = 7.196 / 2;
377 const float kTl1OETF1 = 3.996 / 2;
378 const float kTl1OETF2 = 3.75 / 2;
379 const float kTl1OETF3 = 3.01 / 2;
380 const float kTl1OETF4 = 1.77 / 2;
391 const float kHxOutVFrame = 1.85 / 2;
392 const float kHyOutVFrame = 46.23 / 2;
393 const float kHzOutVFrame = kHzFrameThickness;
396 const float kHzOCTF = kHzFrameThickness;
397 const float kHOCTF = 1.85 / 2;
398 const float kBlOCTF = 0.;
399 const float kTlOCTF = 3.66 / 2;
400 const float kAlpOCTF = 44.67;
403 const float kHzVFC = kHzVertEarthFaceCu;
404 const float kHVFC = 0.6;
405 const float kBlVFC = 46.11 / 2;
406 const float kTlVFC = 48.236 / 2;
407 const float kAlpVFC = 41.54;
410 const float kHzVES = kHzVertBarSteel;
411 const float kHVES = 0.6;
412 const float kBlVES = 30.486 / 2;
413 const float kTlVES = 32.777 / 2;
414 const float kAlpVES = 43.67;
417 const float kHzVPC = kHzVertEarthProfCu;
418 const float kHVPC = 0.2;
419 const float kBlVPC = 29.287 / 2;
420 const float kTlVPC = 30.091 / 2;
421 const float kAlpVPC = 45.14;
424 const float kHxSLP = 1.4;
425 const float kHySLP = 2.5;
426 const float kHzSLP = kHzLateralPosnAl;
429 const float kHxLPF = 2.6;
430 const float kHyLPF = 1.5;
431 const float kHzLPF = kHzLateralPosnInoxFace;
434 const float kHxLPP = 0.425 / 2;
435 const float kHyLPP = 1.5;
436 const float kHzLPP = kHzLatPosInoxProfM;
437 const float kHzLPNF = kHzLatPosInoxProfNF;
440 const float kH1VC1 = 10.25 / 2;
441 const float kBl1VC1 = 3.7 / 2;
442 const float kBl1VC2 = 6.266 / 2;
443 const float kBl1VC3 = 7.75 / 2;
446 const float kHzVC4 = kHzVerticalCradleAl;
447 const float kHVC4 = 10.27 / 2;
448 const float kBlVC4 = 8.273 / 2;
449 const float kTlVC4 = 7.75 / 2;
450 const float kAlpVC4 = -1.46;
453 const float kHzVSS = kHzLateralSightAl;
454 const float kHVSS = 2.5;
455 const float kBlVSS = 7.747 / 2;
456 const float kTlVSS = 7.188 / 2;
457 const float kAlpVSS = -3.2;
460 const float kVSInRad = 0.6;
461 const float kVSOutRad = 1.3;
462 const float kVSLen = kHzFrameThickness;
465 const float kHxInHFrame = 75.8 / 2;
466 const float kHyInHFrame = 1.85 / 2;
467 const float kHzInHFrame = kHzFrameThickness;
470 const float kHxH1mm = 1.85 / 2;
471 const float kHyH1mm = 0.75 / 2;
472 const float kHzH1mm = kHzFrameThickness;
475 const float kIAF = 15.7;
476 const float kOAF = 17.55;
477 const float kHzAF = kHzFrameThickness;
478 const float kAFphi1 = 0.;
479 const float kAFphi2 = 90.;
482 const float kSCRUHMI = 0.;
483 const float kSCRUHMA = 0.69 / 2;
484 const float kSCRUHLE = 0.2;
486 const float kSCRUMMI = 0.;
487 const float kSCRUMMA = 0.39 / 2;
488 const float kSCRUMLE = kHzFrameThickness;
490 const float kSCRUNMI = 0.;
491 const float kSCRUNMA = 0.78 / 2;
492 const float kSCRUNLE = 0.4;
506 new TGeoVolume(
"SQ00",
new TGeoBBox(kHxInVFrame, kHyInVFrame, kHzInVFrame), kEpoxyMed);
509 new TGeoVolume(
"SQ01",
new TGeoBBox(kHxV1mm, kHyV1mm, kHzV1mm), kEpoxyMed);
514 new TGeoVolume(
"SQ02",
new TGeoBBox(kHxTFA, kHyTFA, kHzTFAE), kEpoxyMed);
517 new TGeoVolume(
"SQ03",
new TGeoBBox(kHxTFA, kHyTFA, kHzTFAI), kInoxMed);
520 double dx, dx0, dx1, dx2, dx3, dy, dy1, dy2, dy3, dy4;
521 double vx[16], vy[16];
542 for (
int i = 0;
i < nv;
i++) {
547 TGeoXtru* xtruS5 =
new TGeoXtru(nz);
548 xtruS5->DefinePolygon(nv, vx, vy);
549 xtruS5->DefineSection(0, -kHzOuterFrameEpoxy, 0., 0., 1.);
550 xtruS5->DefineSection(1, kHzOuterFrameEpoxy, 0., 0., 1.);
551 new TGeoVolume(
"SQ04toSQ06", xtruS5, kEpoxyMed);
553 TGeoXtru* xtruS6 =
new TGeoXtru(nz);
554 xtruS6->DefinePolygon(nv, vx, vy);
555 xtruS6->DefineSection(0, -kHzOuterFrameInox, 0., 0., 1.);
556 xtruS6->DefineSection(1, kHzOuterFrameInox, 0., 0., 1.);
557 new TGeoVolume(
"SQ05toSQ07", xtruS6, kInoxMed);
560 new TGeoVolume(
"SQ08",
new TGeoBBox(kHxTA1, kHyTA1, kHzTA11), kInoxMed);
563 new TGeoVolume(
"SQ09",
new TGeoBBox(kHxTA1, kHyTA1, kHzTA12), kFR4Med);
577 gGeoManager->Volume(
"SQ10",
"TRAP", kInoxMed->GetId(), par, npar);
581 gGeoManager->Volume(
"SQ11",
"TRAP", kFR4Med->GetId(), par, npar);
593 gGeoManager->Volume(
"SQ12",
"TRAP", kFR4Med->GetId(), par, npar);
605 gGeoManager->Volume(
"SQ13",
"TRAP", kCopperMed->GetId(), par, npar);
617 gGeoManager->Volume(
"SQ14",
"TRAP", kCopperMed->GetId(), par, npar);
632 gGeoManager->Volume(
"SQ16",
"TRAP", kInoxMed->GetId(), par, npar);
678 for (
int i = 0;
i < nv;
i++) {
682 TGeoXtru* xtruS1 =
new TGeoXtru(nz);
683 xtruS1->DefinePolygon(nv, vx, vy);
684 xtruS1->DefineSection(0, -kHzOuterFrameEpoxy, 0., 0., 1.);
685 xtruS1->DefineSection(1, kHzOuterFrameEpoxy, 0., 0., 1.);
686 new TGeoVolume(
"SQ17to23", xtruS1, kEpoxyMed);
688 TGeoXtru* xtruS2 =
new TGeoXtru(nz);
689 xtruS2->DefinePolygon(nv, vx, vy);
690 xtruS2->DefineSection(0, -kHzOuterFrameInox, 0., 0., 1.);
691 xtruS2->DefineSection(1, kHzOuterFrameInox, 0., 0., 1.);
692 new TGeoVolume(
"SQ18to24", xtruS2, kInoxMed);
697 new TGeoVolume(
"SQ25",
new TGeoBBox(kHxOutVFrame, kHyOutVFrame, kHzOutVFrame), kEpoxyMed);
709 gGeoManager->Volume(
"SQ26",
"TRAP", kEpoxyMed->GetId(), par, npar);
721 gGeoManager->Volume(
"SQ27",
"TRAP", kCopperMed->GetId(), par, npar);
733 gGeoManager->Volume(
"SQ28",
"TRAP", kInoxMed->GetId(), par, npar);
745 gGeoManager->Volume(
"SQ29",
"TRAP", kCopperMed->GetId(), par, npar);
748 new TGeoVolume(
"SQ30",
new TGeoBBox(kHxSLP, kHySLP, kHzSLP), kAluMed);
751 new TGeoVolume(
"SQ31",
new TGeoBBox(kHxLPF, kHyLPF, kHzLPF), kInoxMed);
754 new TGeoVolume(
"SQ32",
new TGeoBBox(kHxLPP, kHyLPP, kHzLPP), kInoxMed);
756 new TGeoVolume(
"SQ33",
new TGeoBBox(kHxLPP, kHyLPP, kHzLPNF), kInoxMed);
784 for (
int i = 0;
i < nv;
i++) {
789 TGeoXtru* xtruS3 =
new TGeoXtru(nz);
790 xtruS3->DefinePolygon(nv, vx, vy);
791 xtruS3->DefineSection(0, -kHzVerticalCradleAl, 0., 0., 1.);
792 xtruS3->DefineSection(1, kHzVerticalCradleAl, 0., 0., 1.);
793 new TGeoVolume(
"SQ34to36", xtruS3, kAluMed);
819 for (
int i = 0;
i < nv;
i++) {
824 TGeoXtru* xtruS4 =
new TGeoXtru(nz);
825 xtruS4->DefinePolygon(nv, vx, vy);
826 xtruS4->DefineSection(0, -kHzVerticalCradleAl, 0., 0., 1.);
827 xtruS4->DefineSection(1, kHzVerticalCradleAl, 0., 0., 1.);
828 new TGeoVolume(
"SQ34to37", xtruS4, kAluMed);
840 gGeoManager->Volume(
"SQ37",
"TRAP", kAluMed->GetId(), par, npar);
852 gGeoManager->Volume(
"SQ38",
"TRAP", kAluMed->GetId(), par, npar);
855 new TGeoVolume(
"SQ39",
new TGeoTube(kVSInRad, kVSOutRad, kVSLen), kEpoxyMed);
858 new TGeoVolume(
"SQ40",
new TGeoBBox(kHxInHFrame, kHyInHFrame, kHzInHFrame), kEpoxyMed);
861 new TGeoVolume(
"SQ41",
new TGeoBBox(kHxH1mm, kHyH1mm, kHzH1mm), kEpoxyMed);
864 new TGeoVolume(
"SQ42",
new TGeoTubeSeg(kIAF, kOAF, kHzAF, kAFphi1, kAFphi2), kEpoxyMed);
868 new TGeoVolume(
"SQ43",
new TGeoTube(kSCRUHMI, kSCRUHMA, kSCRUHLE), kInoxMed);
871 new TGeoVolume(
"SQ44",
new TGeoTube(kSCRUMMI, kSCRUMMA, kSCRUMLE), kInoxMed);
874 new TGeoVolume(
"SQ45",
new TGeoTube(kSCRUNMI, kSCRUNMA, kSCRUNLE), kInoxMed);
880 float x = kHxInVFrame;
881 float y = 2 * (kHyInHFrame + kHyH1mm) + kIAF + kHyInVFrame;
883 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ00"), 1,
new TGeoTranslation(
x,
y,
z));
886 const float kMidVXPos =
x;
887 const float kMidVYPos =
y;
888 const float kMidVZPos =
z;
891 x = 2 * kHxInVFrame + kHxV1mm;
892 y = 2 * (kHyInHFrame + kHyH1mm) + kIAF + kHyV1mm;
893 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ01"), 1,
new TGeoTranslation(
x,
y,
z));
897 y = 2 * (kHyInHFrame + kHyH1mm + kHyInVFrame) + kIAF + kHyTFA;
898 z = kHzOuterFrameInox;
899 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ02"), 1,
new TGeoTranslation(
x,
y, -
z));
900 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ03"), 1,
new TGeoTranslation(
x,
y,
z));
903 x += kHxTFA + 2 * kH1FAA;
904 z = kHzOuterFrameInox;
905 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ04toSQ06"), 1,
new TGeoTranslation(
x,
y, -
z));
906 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ05toSQ07"), 1,
new TGeoTranslation(
x,
y,
z));
912 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ08"), 1,
new TGeoTranslation(
x,
y,
z));
913 z = kHzTopAnodeSteel1;
914 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ09"), 1,
new TGeoTranslation(
x,
y,
z));
922 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ10"), 1,
new TGeoCombiTrans(
x,
y,
z, rot1));
923 z = kHzTopAnodeSteel2;
924 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ11"), 1,
new TGeoCombiTrans(
x,
y,
z, rot1));
930 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ12"), 1,
new TGeoCombiTrans(
x,
y,
z, rot1));
935 z = kHzOuterFrameEpoxy + kHzOuterFrameInox + kHzTopEarthFaceCu;
936 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ13"), 1,
new TGeoTranslation(
x,
y,
z));
937 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ13"), 2,
new TGeoTranslation(
x,
y, -
z));
942 z = kHzTopEarthProfileCu;
943 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ14"), 1,
new TGeoTranslation(
x,
y,
z));
944 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ14"), 2,
new TGeoTranslation(
x,
y, -
z));
949 z = kHzOuterFrameEpoxy + kHzOuterFrameInox + kHzTopGasSupportAl;
950 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ15"), 1,
new TGeoTranslation(
x,
y,
z));
951 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ15"), 2,
new TGeoTranslation(
x,
y, -
z));
956 z = kHzOuterFrameEpoxy + kHzOuterFrameInox + 2 * kHzTopGasSupportAl + kHzTopPositionerSteel;
957 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ16"), 1,
new TGeoTranslation(
x,
y,
z));
958 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ16"), 2,
new TGeoTranslation(
x,
y, -
z));
961 z = -kHzOuterFrameInox;
962 float xCenterAll = 70.5, yCenterAll = 70.35;
963 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ17to23"), 1,
new TGeoCombiTrans(xCenterAll, yCenterAll,
z, rot4));
965 z = kHzOuterFrameEpoxy;
966 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ18to24"), 1,
new TGeoCombiTrans(xCenterAll, yCenterAll,
z, rot4));
969 x = 2 * (kHxInVFrame + kHxInHFrame + kHxV1mm) + kIAF - kHxOutVFrame;
970 y = 2 * kHyInHFrame + kHyOutVFrame;
972 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ25"), 1,
new TGeoTranslation(
x,
y,
z));
975 const float kMidOVXPos =
x;
976 const float kMidOVYPos =
y;
977 const float kMidOVZPos =
z;
980 y += kHyOutVFrame + (kBlOCTF + kTlOCTF) / 2;
983 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ26"), 1,
new TGeoCombiTrans(
x,
y,
z, rot1));
988 z = kHzFrameThickness + 2 * kHzFoam2 + kHzVertEarthFaceCu;
989 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ27"), 1,
new TGeoCombiTrans(
x,
y,
z, rot1));
990 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ27"), 2,
new TGeoCombiTrans(
x,
y, -
z, rot1));
995 z = kHzFrameThickness + 2 * kHzFoam2 + kHzVertBarSteel;
996 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ28"), 1,
new TGeoCombiTrans(
x,
y,
z, rot1));
997 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ28"), 2,
new TGeoCombiTrans(
x,
y, -
z, rot1));
1002 z = kHzFrameThickness;
1003 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ29"), 1,
new TGeoCombiTrans(
x,
y,
z, rot1));
1004 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ29"), 2,
new TGeoCombiTrans(
x,
y, -
z, rot1));
1010 Flayer->AddNode(gGeoManager->GetVolume(
"SQ30"), 1,
new TGeoTranslation(
x,
y,
z));
1011 Nlayer->AddNode(gGeoManager->GetVolume(
"SQ30"), 2,
new TGeoTranslation(
x,
y, -
z));
1018 z = 2 * kHzLateralPosnAl + kHzLateralPosnInoxFace -
kMotherThick2;
1019 Flayer->AddNode(gGeoManager->GetVolume(
"SQ31"), 1,
new TGeoTranslation(
x,
y,
z));
1020 Nlayer->AddNode(gGeoManager->GetVolume(
"SQ31"), 2,
new TGeoTranslation(
x,
y, -
z));
1026 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ32"), 1,
new TGeoTranslation(
x,
y,
z));
1031 Nlayer->AddNode(gGeoManager->GetVolume(
"SQ33"), 1,
new TGeoTranslation(
x,
y,
z));
1032 Flayer->AddNode(gGeoManager->GetVolume(
"SQ33"), 2,
new TGeoTranslation(
x,
y, -
z));
1035 const float kVertCradleX = 97.29;
1036 const float kVertCradleXshift = 1.39311;
1037 const float kVertCradleY = 23.02;
1042 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ34to37"), 2,
new TGeoTranslation(
x,
y,
z));
1047 Nlayer->AddNode(gGeoManager->GetVolume(
"SQ34to36"), 1,
new TGeoTranslation(
x,
y,
z));
1048 Flayer->AddNode(gGeoManager->GetVolume(
"SQ34to36"), 3,
new TGeoTranslation(
x,
y, -
z));
1054 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ37"), 1,
new TGeoTranslation(
x,
y,
z));
1055 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ37"), 3,
new TGeoTranslation(
x,
y, -
z));
1062 Nlayer->AddNode(gGeoManager->GetVolume(
"SQ38"), 1,
new TGeoTranslation(
x,
y,
z));
1063 Flayer->AddNode(gGeoManager->GetVolume(
"SQ38"), 2,
new TGeoTranslation(
x,
y, -
z));
1069 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ39"), 1,
new TGeoTranslation(
x,
y,
z));
1072 x = 2 * (kHxInVFrame + kHxV1mm) + kIAF + kHxInHFrame;
1074 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ40"), 1,
new TGeoTranslation(
x,
y,
z));
1077 const float kMidHXPos =
x;
1078 const float kMidHYPos =
y;
1079 const float kMidHZPos =
z;
1082 x = 2 * (kHxInVFrame + kHxV1mm) + kIAF + kHxH1mm;
1083 y = 2 * kHyInHFrame + kHyH1mm;
1084 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ41"), 1,
new TGeoTranslation(
x,
y,
z));
1087 x = 2 * (kHxInVFrame + kHxV1mm);
1088 y = 2 * (kHyInHFrame + kHyH1mm);
1089 Mlayer->AddNode(gGeoManager->GetVolume(
"SQ42"), 1,
new TGeoTranslation(
x,
y,
z));
1092 const float kMidArcXPos =
x;
1093 const float kMidArcYPos =
y;
1094 const float kMidArcZPos =
z;
1097 const int kNScrews = 64;
1099 float scruX[kNScrews], scruY[kNScrews];
1101 auto vol43 = gGeoManager->GetVolume(
"SQ43"), vol44 = gGeoManager->GetVolume(
"SQ44"), vol45 = gGeoManager->GetVolume(
"SQ45");
1103 const float kSpecScrewPos = -2.23;
1106 const int kNScrewsIH = 14;
1107 const float kOffX = 5.;
1111 scruY[0] = kSpecScrewPos;
1113 for (
int i = 1;
i < kNScrewsIH;
i++) {
1114 scruX[
i] = scruX[
i - 1] + kOffX;
1115 scruY[
i] = scruY[0];
1120 for (
int i = 0;
i < kNScrewsIH;
i++) {
1123 Mlayer->AddNode(vol43,
i + 1,
new TGeoTranslation(
x,
y,
z - kHzInHFrame - kSCRUHLE));
1125 gGeoManager->GetVolume(
"SQ40")->AddNode(vol44,
i + 1,
new TGeoTranslation(
x - kMidHXPos,
y - kMidHYPos,
z - kMidHZPos));
1128 Mlayer->AddNode(vol45,
i + 1,
new TGeoTranslation(
x,
y,
z + kHzInHFrame + kSCRUNLE));
1133 scruY[63] = kSpecScrewPos;
1138 Mlayer->AddNode(vol43, kNScrews,
new TGeoTranslation(
x,
y,
z - kHzInHFrame - kSCRUHLE));
1141 gGeoManager->GetVolume(
"SQ40")->AddNode(vol44, kNScrews,
new TGeoTranslation(
x - kMidHXPos,
y - kMidHYPos,
z - kMidHZPos));
1144 Mlayer->AddNode(vol45, kNScrews,
new TGeoTranslation(
x,
y,
z + kHzInHFrame + kSCRUNLE));
1147 const float kOffY = 5.;
1148 int firstScrew = 58, lastScrew = 44;
1151 scruX[firstScrew - 1] = kSpecScrewPos;
1152 scruY[firstScrew - 1] = 16.3;
1154 scruX[firstScrew - 2] = kSpecScrewPos;
1155 scruY[firstScrew - 2] = 21.07;
1157 for (
int i = firstScrew - 3;
i > lastScrew - 2;
i--) {
1158 scruX[
i] = scruX[firstScrew - 2];
1159 scruY[
i] = scruY[
i + 1] + kOffY;
1163 for (
int i = lastScrew;
i <= firstScrew;
i++) {
1167 Mlayer->AddNode(vol43,
i,
new TGeoTranslation(
x,
y,
z - kHzInHFrame - kSCRUHLE));
1170 gGeoManager->GetVolume(
"SQ00")->AddNode(vol44,
i,
new TGeoTranslation(
x - kMidVXPos,
y - kMidVYPos,
z - kMidVZPos));
1173 Mlayer->AddNode(vol45,
i,
new TGeoTranslation(
x,
y,
z + kHzInHFrame + kSCRUNLE));
1182 scruX[firstScrew - 1] = 90.9;
1183 scruY[firstScrew - 1] = kSpecScrewPos;
1186 for (
int i = firstScrew;
i < lastScrew;
i++) {
1187 scruX[
i] = scruX[firstScrew - 1];
1188 scruY[
i] = scruY[
i - 1] + kOffY;
1192 for (
int i = 1 + firstScrew;
i < lastScrew;
i++) {
1196 Mlayer->AddNode(vol43,
i,
new TGeoTranslation(
x,
y,
z - kHzInHFrame - kSCRUHLE));
1198 gGeoManager->GetVolume(
"SQ25")->AddNode(vol44,
i,
new TGeoTranslation(
x - kMidOVXPos,
y - kMidOVYPos,
z - kMidOVZPos));
1201 Mlayer->AddNode(vol45,
i,
new TGeoTranslation(
x,
y,
z + kHzInHFrame + kSCRUNLE));
1210 gGeoManager->GetVolume(
"SQ40")->AddNode(vol44, firstScrew,
new TGeoTranslation(
x,
y,
z));
1220 scruY[60] = scruX[60];
1221 scruX[59] = scruY[61];
1222 scruY[59] = scruX[61];
1223 scruX[58] = scruY[62];
1224 scruY[58] = scruX[62];
1227 for (
int i = firstScrew;
i < firstScrew + 5;
i++) {
1231 Mlayer->AddNode(vol43,
i + 1,
new TGeoTranslation(
x,
y,
z - kHzInHFrame - kSCRUHLE));
1234 gGeoManager->GetVolume(
"SQ42")->AddNode(vol44,
i + 1,
new TGeoTranslation(
x - kMidArcXPos,
y - kMidArcYPos,
z - kMidArcZPos));
1237 Mlayer->AddNode(vol45,
i + 1,
new TGeoTranslation(
x,
y,
z + kHzInHFrame + kSCRUNLE));