468 float aAir[4] = {12, 14, 16, 36}, zAir[4] = {6, 7, 8, 18}, wAir[4] = {0.000124, 0.755267, 0.231781, 0.012827},
471 float aC6F14[2] = {12.01, 18.99}, zC6F14[2] = {6, 9}, wC6F14[2] = {6, 14}, dC6F14 = 1.68;
473 float aSiO2[2] = {28.09, 15.99}, zSiO2[2] = {14, 8}, wSiO2[2] = {1, 2}, dSiO2 = 2.64;
475 float aCH4[2] = {12.01, 1.01}, zCH4[2] = {6, 1}, wCH4[2] = {1, 4}, dCH4 = 7.17e-4;
478 float aRoha = 12.01, zRoha = 6, dRoha = 0.10, radRoha = 18.80,
479 absRoha = 86.3 / dRoha;
480 float aCu = 63.55, zCu = 29, dCu = 8.96, radCu = 1.43, absCu = 134.9 / dCu;
481 float aW = 183.84, zW = 74, dW = 19.30, radW = 0.35, absW = 185.0 / dW;
482 float aAl = 26.98, zAl = 13, dAl = 2.70, radAl = 8.90, absAl = 106.4 / dAl;
483 float aAr = 39.94, zAr = 18, dAr = 1.396e-3, radAr = 14.0, absAr = 117.2 / dAr;
486 int unsens = 0, sens = 1;
491 float tmaxfd = -10.0;
495 float stmin = -0.001;
501 float aG10[4] = {28.09, 12.01, 1.01, 16.00};
502 float zG10[4] = {14., 6., 1., 8.};
503 float wG10[4] = {0.129060, 0.515016, 0.061873, 0.294050};
507 Mixture(++matId,
"Air", aAir, zAir, dAir, nAir, wAir);
508 Medium(kAir,
"Air", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
510 Mixture(++matId,
"C6F14", aC6F14, zC6F14, dC6F14, nC6F14, wC6F14);
511 Medium(kC6F14,
"C6F14", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
513 Mixture(++matId,
"SiO2", aSiO2, zSiO2, dSiO2, nSiO2, wSiO2);
514 Medium(kSiO2,
"SiO2", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
516 Mixture(++matId,
"CH4", aCH4, zCH4, dCH4, nCH4, wCH4);
517 Medium(kCH4,
"CH4", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
519 Mixture(++matId,
"CsI+PCB", aG10, zG10, dG10, nG10, wG10);
520 Medium(kCsI,
"CsI", matId, sens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
522 Mixture(++matId,
"Neo", aSiO2, zSiO2, dSiO2, nSiO2, wSiO2);
523 Medium(kNeo,
"Neo", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
525 Material(++matId,
"Roha", aRoha, zRoha, dRoha, radRoha, absRoha);
526 Medium(kRoha,
"Roha", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
528 Material(++matId,
"Cu", aCu, zCu, dCu, radCu, absCu);
529 Medium(kCu,
"Cu", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
531 Material(++matId,
"W", aW, zW, dW, radW, absW);
532 Medium(kW,
"W", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
534 Material(++matId,
"Al", aAl, zAl, dAl, radAl, absAl);
535 Medium(kAl,
"Al", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
537 Material(++matId,
"Ar", aAr, zAr, dAr, radAr, absAr);
538 Medium(kAr,
"Ar", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
558 double cm = 1, mm = 0.1 * cm, um = 0.001 * mm;
560 TGeoVolume* hmp =
new TGeoVolumeAssembly(Form(
"Hmp%i", number));
564 TGeoMedium* al = matmgr.getTGeoMedium(
"HMP_Al");
565 TGeoMedium* ch4 = matmgr.getTGeoMedium(
"HMP_CH4");
566 TGeoMedium* roha = matmgr.getTGeoMedium(
"HMP_Roha");
567 TGeoMedium* neoc = matmgr.getTGeoMedium(
"HMP_Neo");
568 TGeoMedium* c6f14 = matmgr.getTGeoMedium(
"HMP_C6F14");
569 TGeoMedium* sio2 = matmgr.getTGeoMedium(
"HMP_SiO2");
570 TGeoMedium* cu = matmgr.getTGeoMedium(
"HMP_Cu");
571 TGeoMedium*
w = matmgr.getTGeoMedium(
"HMP_W");
572 TGeoMedium* csi = matmgr.getTGeoMedium(
"HMP_CsI");
573 TGeoMedium* ar = matmgr.getTGeoMedium(
"HMP_Ar");
575 TGeoRotation* rot =
new TGeoRotation(
"HwireRot");
577 TGeoVolume* sbo = gGeoManager->MakeBox(
"Hsbo", ch4, 1419 * mm / 2, 1378.00 * mm / 2, 50.5 * mm / 2);
578 TGeoVolume* cov = gGeoManager->MakeBox(
"Hcov", al, 1419 * mm / 2, 1378.00 * mm / 2, 0.5 * mm / 2);
579 TGeoVolume* hon = gGeoManager->MakeBox(
"Hhon", roha, 1359 * mm / 2, 1318.00 * mm / 2, 49.5 * mm / 2);
580 TGeoVolume* rad = gGeoManager->MakeBox(
"Hrad", c6f14, 1330 * mm / 2, 413.00 * mm / 2, 24.0 * mm / 2);
581 TGeoVolume* neo = gGeoManager->MakeBox(
"Hneo", neoc, 1330 * mm / 2, 413.00 * mm / 2, 4.0 * mm / 2);
582 TGeoVolume* win = gGeoManager->MakeBox(
"Hwin", sio2, 1330 * mm / 2, 413.00 * mm / 2, 5.0 * mm / 2);
583 TGeoVolume* si1 = gGeoManager->MakeBox(
"Hsi1", sio2, 1330 * mm / 2, 5.00 * mm / 2, 15.0 * mm / 2);
584 TGeoVolume* si2 = gGeoManager->MakeBox(
"Hsi2", neoc, 10 * mm / 2, 403.00 * mm / 2, 15.0 * mm / 2);
585 TGeoVolume* spa = gGeoManager->MakeTube(
"Hspa", sio2, 0 * mm, 5.00 * mm, 15.0 * mm / 2);
586 TGeoVolume* fr4 = gGeoManager->MakeBox(
"Hfr4", ch4, 1407 * mm / 2, 1366.00 * mm / 2, 15.0 * mm / 2);
587 TGeoVolume* f4a = gGeoManager->MakeBox(
"Hf4a", al, 1407 * mm / 2, 1366.00 * mm / 2, 10.0 * mm / 2);
588 TGeoVolume* f4i = gGeoManager->MakeBox(
"Hf4i", ch4, 1323 * mm / 2, 1296.00 * mm / 2, 10.0 * mm / 2);
589 TGeoVolume*
col = gGeoManager->MakeTube(
"Hcol", cu, 0 * mm, 100.00 * um, 1323.0 * mm / 2);
590 TGeoVolume* sec = gGeoManager->MakeBox(
"Hsec", ch4, 648 * mm / 2, 411.00 * mm / 2,
593 double cellx = 8.04 * mm, celly = 8.4 * mm;
594 int nPadX = 80, nPadY = 48;
595 TGeoVolume* gap = gGeoManager->MakeBox(
"Hgap", ch4, cellx * nPadX / 2, celly * nPadY / 2,
597 TGeoVolume*
row = gap->Divide(
"Hrow", 2, nPadY, 0, 0);
598 TGeoVolume* cel =
row->Divide(Form(
"Hcel%i", number), 1, nPadX, 0, 0);
599 mSensitiveVolumes.emplace_back(cel);
601 TGeoVolume* cat = gGeoManager->MakeTube(
"Hcat", cu, 0.00 * mm, 50.00 * um, cellx / 2);
602 TGeoVolume* ano = gGeoManager->MakeTube(
"Hano",
w, 0.00 * mm, 20.00 * um, cellx / 2);
603 TGeoVolume* pad = gGeoManager->MakeBox(Form(
"Hpad%i", number), csi, 7.54 * mm / 2, 7.90 * mm / 2,
605 mSensitiveVolumes.emplace_back(pad);
607 TGeoVolume* fr1 = gGeoManager->MakeBox(
"Hfr1", al, 1463 * mm / 2, 1422.00 * mm / 2,
609 TGeoVolume* fr1up = gGeoManager->MakeBox(
"Hfr1up", ch4, (1426.00 - 37.00) * mm / 2, (1385.00 - 37.00) * mm / 2,
612 TGeoVolume* fr1upcard = gGeoManager->MakeBox(
"Hfr1upcard", ch4, 662. * mm / 2., 425. * mm / 2.,
615 TGeoVolume* fr1perUpBig = gGeoManager->MakeBox(
"Hfr1perUpBig", ch4, 1389 * mm / 2, 35 * mm / 2, 10 * mm / 2);
616 TGeoVolume* fr1perUpSma =
617 gGeoManager->MakeBox(
"Hfr1perUpSma", ch4, 35 * mm / 2, (1385 - 37 - 2 * 35) * mm / 2, 10 * mm / 2);
618 TGeoVolume* fr1perDowBig = gGeoManager->MakeBox(
"Hfr1perDowBig", ch4, 1389 * mm / 2, 46 * mm / 2, 2.3 * mm / 2);
619 TGeoVolume* fr1perDowSma =
620 gGeoManager->MakeBox(
"Hfr1perDowSma", ch4, 46 * mm / 2, (1385 - 37 - 2 * 46) * mm / 2, 2.3 * mm / 2);
622 TGeoVolume* ppf = gGeoManager->MakeBox(
"Hppf", al, 648 * mm / 2, 411.00 * mm / 2, 38.3 * mm / 2);
623 TGeoVolume* lar = gGeoManager->MakeBox(
"Hlar", ar, 181 * mm / 2, 89.25 * mm / 2, 38.3 * mm / 2);
624 TGeoVolume* smo = gGeoManager->MakeBox(
"Hsmo", ar, 114 * mm / 2, 89.25 * mm / 2, 38.3 * mm / 2);
626 TGeoVolume* cufoil = gGeoManager->MakeBox(
"Hcufoil", csi, 662. * mm / 2., 425. * mm / 2.,
628 TGeoVolume* rect = gGeoManager->MakeBox(
"Hrect", ch4, 48 * mm / 2, 19 * mm / 2., 1 * mm / 2.);
630 TGeoVolume* fr3 = gGeoManager->MakeBox(
"Hfr3", al, 1463 * mm / 2, 1422 * mm / 2, 34 * mm / 2);
631 TGeoVolume* fr3up = gGeoManager->MakeBox(
"Hfr3up", ch4, 1323 * mm / 2, 1282 * mm / 2, 20 * mm / 2);
632 TGeoVolume* fr3down = gGeoManager->MakeBox(
"Hfr3down", ch4, 1437 * mm / 2, 1370 * mm / 2, 14 * mm / 2);
634 TGeoVolume* proxgap1 = gGeoManager->MakeBox(
"Hproxgap1", ch4, 1407 * mm / 2, 1366.00 * mm / 2,
635 (9. - 7.5) * mm / 2.);
636 TGeoVolume* proxgap2 = gGeoManager->MakeBox(
"Hproxgap2", ch4, 1407 * mm / 2, 1366.00 * mm / 2,
637 (81.7 - 6.2 - 34. - 9. - 7.5) * mm / 2.);
672 hmp->AddNode(sbo, 1,
new TGeoTranslation(0 * mm, 0 * mm, -73.75 * mm));
673 sbo->AddNode(hon, 1,
new TGeoTranslation(0 * mm, 0 * mm, 0 * mm));
674 sbo->AddNode(cov, 1,
new TGeoTranslation(0 * mm, 0 * mm, +25 * mm));
675 sbo->AddNode(cov, 2,
new TGeoTranslation(0 * mm, 0 * mm, -25 * mm));
676 hmp->AddNode(rad, 2,
new TGeoTranslation(0 * mm, +434 * mm, -12.00 * mm));
677 hmp->AddNode(rad, 1,
new TGeoTranslation(0 * mm, 0 * mm, -12.00 * mm));
678 hmp->AddNode(rad, 0,
new TGeoTranslation(0 * mm, -434 * mm, -12.00 * mm));
679 rad->AddNode(neo, 1,
new TGeoTranslation(0 * mm, 0 * mm, -10.0 * mm));
680 rad->AddNode(win, 1,
new TGeoTranslation(0 * mm, 0 * mm, 9.5 * mm));
681 rad->AddNode(si1, 1,
new TGeoTranslation(0 * mm, -204 * mm, -0.5 * mm));
682 rad->AddNode(si1, 2,
new TGeoTranslation(0 * mm, +204 * mm, -0.5 * mm));
683 rad->AddNode(si2, 1,
new TGeoTranslation(-660 * mm, 0 * mm, -0.5 * mm));
684 rad->AddNode(si2, 2,
new TGeoTranslation(+660 * mm, 0 * mm, -0.5 * mm));
685 for (Int_t
i = 0;
i < 3;
i++) {
686 for (Int_t
j = 0;
j < 10;
j++) {
687 rad->AddNode(spa, 10 *
i +
j,
688 new TGeoTranslation(-1330 * mm / 2 + 116 * mm +
j * 122 * mm, (
i - 1) * 105 * mm, -0.5 * mm));
691 hmp->AddNode(fr4, 1,
new TGeoTranslation(0 * mm, 0 * mm, 9.00 * mm));
692 for (
int i = 1;
i <= 322;
i++) {
693 fr4->AddNode(
col,
i,
new TGeoCombiTrans(0 * mm, -1296 / 2 * mm +
i * 4 * mm, -5 * mm, rot));
695 fr4->AddNode(f4a, 1,
new TGeoTranslation(0 * mm, 0 * mm, 2.5 * mm));
696 f4a->AddNode(f4i, 1,
new TGeoTranslation(0 * mm, 0 * mm, 0 * mm));
697 hmp->AddNode(sec, 4,
new TGeoTranslation(-335 * mm, +433 * mm, 78.6 * mm));
698 hmp->AddNode(sec, 5,
new TGeoTranslation(+335 * mm, +433 * mm, 78.6 * mm));
699 hmp->AddNode(sec, 2,
new TGeoTranslation(-335 * mm, 0 * mm, 78.6 * mm));
700 hmp->AddNode(sec, 3,
new TGeoTranslation(+335 * mm, 0 * mm, 78.6 * mm));
701 hmp->AddNode(sec, 0,
new TGeoTranslation(-335 * mm, -433 * mm, 78.6 * mm));
702 hmp->AddNode(sec, 1,
new TGeoTranslation(+335 * mm, -433 * mm, 78.6 * mm));
703 sec->AddNode(gap, 1,
new TGeoTranslation(0, 0, 0. * mm));
704 cel->AddNode(cat, 1,
new TGeoCombiTrans(0, 3.15 * mm, -2.70 * mm, rot));
705 cel->AddNode(ano, 1,
new TGeoCombiTrans(0, 2.00 * mm, -0.29 * mm, rot));
706 cel->AddNode(cat, 2,
new TGeoCombiTrans(0, 1.05 * mm, -2.70 * mm, rot));
707 cel->AddNode(cat, 3,
new TGeoCombiTrans(0, -1.05 * mm, -2.70 * mm, rot));
708 cel->AddNode(ano, 2,
new TGeoCombiTrans(0, -2.00 * mm, -0.29 * mm, rot));
709 cel->AddNode(cat, 4,
new TGeoCombiTrans(0, -3.15 * mm, -2.70 * mm, rot));
710 cel->AddNode(pad, 1,
new TGeoTranslation(0, 0.00 * mm, 2.25 * mm));
712 hmp->AddNode(fr1, 1,
new TGeoTranslation(0., 0., (80. + 1.7) * mm + 58.3 * mm / 2.));
713 fr1->AddNode(fr1up, 1,
new TGeoTranslation(0., 0., (58.3 * mm - 20.00 * mm) / 2.));
715 fr1->AddNode(fr1perUpBig, 0,
716 new TGeoTranslation(0., (1385 - 37 - 35) * mm / 2., (58.3 * mm - 20.00 * 2 * mm - 10.0 * mm) / 2.));
717 fr1->AddNode(fr1perUpSma, 0,
718 new TGeoTranslation((1426 - 37 - 35) * mm / 2., 0., (58.3 * mm - 20.00 * 2 * mm - 10.0 * mm) / 2.));
719 fr1->AddNode(fr1perUpBig, 1,
720 new TGeoTranslation(0., -(1385 - 37 - 35) * mm / 2., (58.3 * mm - 20.00 * 2 * mm - 10.0 * mm) / 2.));
721 fr1->AddNode(fr1perUpSma, 1,
722 new TGeoTranslation(-(1426 - 37 - 35) * mm / 2., 0., (58.3 * mm - 20.00 * 2 * mm - 10.0 * mm) / 2.));
724 fr1->AddNode(fr1perDowBig, 0,
new TGeoTranslation(0., (1385 - 37) * mm / 2., (-58.3 * mm + 2.3 * mm) / 2.));
725 fr1->AddNode(fr1perDowSma, 0,
new TGeoTranslation((1426 - 37) * mm / 2., 0., (-58.3 * mm + 2.3 * mm) / 2.));
726 fr1->AddNode(fr1perDowBig, 1,
new TGeoTranslation(0., -(1385 - 37) * mm / 2., (-58.3 * mm + 2.3 * mm) / 2.));
727 fr1->AddNode(fr1perDowSma, 1,
new TGeoTranslation(-(1426 - 37) * mm / 2., 0., (-58.3 * mm + 2.3 * mm) / 2.));
729 fr1->AddNode(ppf, 4,
new TGeoTranslation(-335 * mm, 433 * mm, (-58.3 + 38.3) * mm / 2.));
730 fr1->AddNode(ppf, 5,
new TGeoTranslation(335 * mm, 433 * mm, (-58.3 + 38.3) * mm / 2.));
731 fr1->AddNode(ppf, 2,
new TGeoTranslation(-335 * mm, 0., (-58.3 + 38.3) * mm / 2.));
732 fr1->AddNode(ppf, 3,
new TGeoTranslation(335 * mm, 0., (-58.3 + 38.3) * mm / 2.));
733 fr1->AddNode(ppf, 0,
new TGeoTranslation(-335 * mm, -433 * mm, (-58.3 + 38.3) * mm / 2.));
734 fr1->AddNode(ppf, 1,
new TGeoTranslation(335 * mm, -433 * mm, (-58.3 + 38.3) * mm / 2.));
736 Double_t offsetx = 16. * mm, offsety = 34. * mm / 2., interdistx = 48 * mm + offsetx + 0.6666 * mm,
737 interdisty = 19. * mm + 2. * offsety;
742 TGeoVolume* gassipl2 = gGeoManager->MakeBox(
"Hgassipl2", csi, 32. * mm / 2, 3. * mm / 2., 1. * mm / 2.);
743 TGeoVolume* gassipl3 =
744 gGeoManager->MakeBox(
"Hgassipl3", csi, 60. * mm / 2, 3. * mm / 2., 19. * mm / 2.);
745 TGeoVolume* gassipl4 = gGeoManager->MakeBox(
746 "Hgassipl4", csi, 60. * mm / 2, 3. * mm / 2.,
748 TGeoVolume* busext = gGeoManager->MakeTubs(
"Hbusext", csi, 29 * mm, 30 * mm, 40 * mm / 2., 0., 180);
749 TGeoVolume* ext =
new TGeoVolumeAssembly(
"Hext");
751 rect->AddNode(gassipl2, 1,
new TGeoTranslation(0., 0., 0));
753 for (Int_t hor = 0; hor < 10; hor++) {
754 for (Int_t vert = 0; vert < 8; vert++) {
755 cufoil->AddNode(rect, hor + vert * 10,
756 new TGeoTranslation(offsetx + 48. * mm / 2 + hor * interdistx - 662. * mm / 2,
757 offsety + 19. * mm / 2 + vert * interdisty - 425. * mm / 2., 0.));
758 fr1upcard->AddNode(gassipl3, hor + vert * 10,
759 new TGeoTranslation(offsetx + 48. * mm / 2 + hor * interdistx - 662. * mm / 2,
760 offsety + 19. * mm / 2 + vert * interdisty - 425. * mm / 2., 0.));
761 ext->AddNode(gassipl4, hor + vert * 10,
762 new TGeoTranslation(offsetx + 48. * mm / 2 + hor * interdistx - 662. * mm / 2,
763 offsety + 19. * mm / 2 + vert * interdisty - 425. * mm / 2., 0));
764 ext->AddNode(busext, hor + vert * 10,
765 new TGeoTranslation(offsetx + 48. * mm / 2 + hor * interdistx - 662. * mm / 2,
766 offsety + 19. * mm / 2 + vert * interdisty - 425. * mm / 2 + 3. * mm / 2., 0));
770 fr1up->AddNode(cufoil, 4,
new TGeoTranslation(-335 * mm, 433 * mm, -20.0 * mm / 2 + 1. * mm / 2));
771 fr1up->AddNode(cufoil, 5,
new TGeoTranslation(335 * mm, 433 * mm, -20.0 * mm / 2 + 1. * mm / 2));
772 fr1up->AddNode(cufoil, 2,
new TGeoTranslation(-335 * mm, 0, -20.0 * mm / 2 + 1. * mm / 2));
773 fr1up->AddNode(cufoil, 3,
new TGeoTranslation(335 * mm, 0, -20.0 * mm / 2 + 1. * mm / 2));
774 fr1up->AddNode(cufoil, 0,
new TGeoTranslation(-335 * mm, -433 * mm, -20.0 * mm / 2 + 1. * mm / 2));
775 fr1up->AddNode(cufoil, 1,
new TGeoTranslation(335 * mm, -433 * mm, -20.0 * mm / 2 + 1. * mm / 2));
777 fr1up->AddNode(fr1upcard, 4,
new TGeoTranslation(-335 * mm, 433 * mm, 1. * mm / 2.));
778 fr1up->AddNode(fr1upcard, 5,
new TGeoTranslation(335 * mm, 433 * mm, 1. * mm / 2.));
779 fr1up->AddNode(fr1upcard, 2,
new TGeoTranslation(-335 * mm, 0, 1. * mm / 2.));
780 fr1up->AddNode(fr1upcard, 3,
new TGeoTranslation(335 * mm, 0, 1. * mm / 2.));
781 fr1up->AddNode(fr1upcard, 0,
new TGeoTranslation(-335 * mm, -433 * mm, 1. * mm / 2));
782 fr1up->AddNode(fr1upcard, 1,
new TGeoTranslation(335 * mm, -433 * mm, 1. * mm / 2.));
784 hmp->AddNode(ext, 4,
new TGeoTranslation(-335 * mm, +433 * mm, (80. + 1.7) * mm + 58.3 * mm + 91 * mm / 2.));
785 hmp->AddNode(ext, 5,
new TGeoTranslation(+335 * mm, +433 * mm, (80. + 1.7) * mm + 58.3 * mm + 91 * mm / 2.));
786 hmp->AddNode(ext, 2,
new TGeoTranslation(-335 * mm, 0 * mm, (80. + 1.7) * mm + 58.3 * mm + 91 * mm / 2.));
787 hmp->AddNode(ext, 3,
new TGeoTranslation(+335 * mm, 0 * mm, (80. + 1.7) * mm + 58.3 * mm + 91 * mm / 2.));
788 hmp->AddNode(ext, 0,
new TGeoTranslation(-335 * mm, -433 * mm, (80. + 1.7) * mm + 58.3 * mm + 91 * mm / 2.));
789 hmp->AddNode(ext, 1,
new TGeoTranslation(+335 * mm, -433 * mm, (80. + 1.7) * mm + 58.3 * mm + 91 * mm / 2.));
791 hmp->AddNode(proxgap1, 0,
new TGeoTranslation(0., 0., (9. - 7.5) * mm / 2.));
794 hmp->AddNode(proxgap2, 0,
795 new TGeoTranslation(0., 0., (9 + 7.5 + 34) * mm + (81.7 - 6.2 - 34. - 9. - 7.5) * mm / 2.));
834 ppf->AddNode(lar, 0,
new TGeoTranslation(-224.5 * mm, -151.875 * mm, 0. * mm));
835 ppf->AddNode(lar, 1,
new TGeoTranslation(-224.5 * mm, -50.625 * mm, 0. * mm));
836 ppf->AddNode(lar, 2,
new TGeoTranslation(-224.5 * mm, +50.625 * mm, 0. * mm));
837 ppf->AddNode(lar, 3,
new TGeoTranslation(-224.5 * mm, +151.875 * mm, 0. * mm));
838 ppf->AddNode(lar, 4,
new TGeoTranslation(+224.5 * mm, -151.875 * mm, 0. * mm));
839 ppf->AddNode(lar, 5,
new TGeoTranslation(+224.5 * mm, -50.625 * mm, 0. * mm));
840 ppf->AddNode(lar, 6,
new TGeoTranslation(+224.5 * mm, +50.625 * mm, 0. * mm));
841 ppf->AddNode(lar, 7,
new TGeoTranslation(+224.5 * mm, +151.875 * mm, 0. * mm));
842 ppf->AddNode(smo, 0,
new TGeoTranslation(-65.0 * mm, -151.875 * mm, 0. * mm));
843 ppf->AddNode(smo, 1,
new TGeoTranslation(-65.0 * mm, -50.625 * mm, 0. * mm));
844 ppf->AddNode(smo, 2,
new TGeoTranslation(-65.0 * mm, +50.625 * mm, 0. * mm));
845 ppf->AddNode(smo, 3,
new TGeoTranslation(-65.0 * mm, +151.875 * mm, 0. * mm));
846 ppf->AddNode(smo, 4,
new TGeoTranslation(+65.0 * mm, -151.875 * mm, 0. * mm));
847 ppf->AddNode(smo, 5,
new TGeoTranslation(+65.0 * mm, -50.625 * mm, 0. * mm));
848 ppf->AddNode(smo, 6,
new TGeoTranslation(+65.0 * mm, +50.625 * mm, 0. * mm));
849 ppf->AddNode(smo, 7,
new TGeoTranslation(+65.0 * mm, +151.875 * mm, 0. * mm));
852 hmp->AddNode(fr3, 1,
new TGeoTranslation(0., 0., (9. + 7.5) * mm + 34. * mm / 2));
853 fr3->AddNode(fr3up, 1,
new TGeoTranslation(0., 0., 7 * mm));
854 fr3->AddNode(fr3down, 1,
new TGeoTranslation(0., 0., -10 * mm));
870 Double_t
params[10] = {0.5, 10., 24., -1, 5.2, 1.5, 3.5, 8.5, 3.8, 0.};
871 TGeoMedium* med = gGeoManager->GetMedium(
"HMP_Al");
872 TGeoVolume* cradle =
new TGeoVolumeAssembly(
"Hcradle");
875 Double_t baselong[7] = {
876 6037 * mm - 2 * 100 * mm, 6037 * mm - 2 * 100 * mm, 60 * mm, 0., 100 * mm, 10 * mm, 10 * mm};
878 lbase->SetLineColor(kGray);
880 Double_t baseshort[7] = {
881 1288. * mm + 2 * 100 * mm, 1288. * mm + 2 * 100 * mm, 60 * mm, 0., 100 * mm, 10 * mm, 10 * mm};
883 sbase->SetLineColor(kGray);
887 Double_t
height = 30. * mm;
888 Double_t tubeh = 50. * mm;
889 Double_t heightred = 5. * mm;
890 Double_t zred = 5. * mm;
891 Double_t oneshift = tubeh / TMath::Tan(TMath::DegToRad() * 20.) + (1458. - 35) * mm / 2 - (1607 - 35) * mm / 2;
892 Double_t linclined[7] = {
893 1458. * mm -
params[6] - 0.5, 1607. * mm -
params[6] - 0.5, tubeh, oneshift,
height, heightred, zred};
895 inclin->SetLineColor(kGray);
896 Double_t lhorizontal[7] = {
899 horiz->SetLineColor(kGray);
902 Double_t fourshift = tubeh / TMath::Tan(TMath::DegToRad() * 55.);
903 Double_t lfour[7] = {592 * mm, 592 * mm, tubeh, fourshift,
height, heightred, zred};
905 four->SetLineColor(kGray);
907 Double_t fiveshift = tubeh / TMath::Tan(TMath::DegToRad() * 75);
908 Double_t lfive[7] = {500. * mm, 500. * mm, tubeh, fiveshift,
height, heightred, zred};
910 five->SetLineColor(kGray);
912 Double_t sixshift = tubeh / TMath::Tan(TMath::DegToRad() * 55) + 459 * mm / 2 - 480 * mm / 2;
913 Double_t lsix[7] = {456 * mm, 477 * mm, tubeh, sixshift,
height, heightred, zred};
915 six->SetLineColor(kGray);
917 Double_t sevenshift = tubeh / TMath::Tan(TMath::DegToRad() * 50) + 472 * mm / 2 - 429. * mm / 2;
918 Double_t lseven[7] = {429 * mm, 472 * mm, tubeh, sevenshift,
height, heightred, zred};
920 seven->SetLineColor(kGray);
922 Double_t eightshift = tubeh / TMath::Tan(TMath::DegToRad() * 30) + 244. * mm / 2 - 200. * mm / 2 - 3;
923 Double_t leight[7] = {200. * mm, 244. * mm, tubeh, eightshift,
height, heightred, zred};
925 eight->SetLineColor(kGray);
927 Double_t nineshift = -tubeh / TMath::Tan(TMath::DegToRad() * 71) + 83. * mm / 2 - 66. * mm / 2;
928 Double_t lnine[7] = {59.5 * mm, 76.5 * mm, tubeh, nineshift,
height, heightred, zred};
930 nine->SetLineColor(kGray);
932 Double_t tenshift = (-tubeh / TMath::Tan(TMath::DegToRad() * 60) - 221. * mm / 2 + 195. * mm / 2);
933 Double_t lten[7] = {195. * mm, 221. * mm, tubeh, tenshift,
height, heightred, zred};
935 ten->SetLineColor(kGray);
937 Double_t elevenshift = (-tubeh / TMath::Tan(TMath::DegToRad() * 70) - 338. * mm / 2 + 315. * mm / 2);
938 Double_t leleven[7] = {308. * mm, 331. * mm, tubeh, elevenshift,
height, heightred, zred};
940 eleven->SetLineColor(kGray);
942 Double_t twelveshift = (-tubeh / TMath::Tan(TMath::DegToRad() * 60) - 538. * mm / 2 + 508. * mm / 2);
943 Double_t ltwelve[7] = {507. * mm, 537. * mm, tubeh, twelveshift,
height, heightred, zred};
945 twelve->SetLineColor(kGray);
947 Double_t thirteenshift = tubeh / TMath::Tan(TMath::DegToRad() * 43);
948 Double_t lthirteen[7] = {708. * mm, 708. * mm, tubeh, thirteenshift,
height, heightred, zred};
950 thirteen->SetLineColor(kGray);
953 TGeoVolume* vbox =
new TGeoVolumeAssembly(
"Hvbox");
954 vbox->SetLineColor(kViolet);
955 Double_t
width = 50. * mm;
957 TGeoVolume* vboxlast =
new TGeoVolumeAssembly(
"Hvboxlast");
958 vboxlast->SetLineColor(kViolet);
960 Double_t barheight = 100. * mm;
961 Double_t lAfourteen[7] = {1488. * mm, 1488. * mm, barheight, 0,
width, heightred, zred};
963 afourteen->SetLineColor(kGray);
965 Double_t lBfourteen[7] = {387 * mm, 387. * mm, barheight, 0,
width, heightred, zred};
967 bfourteen->SetLineColor(kGray);
969 Double_t lCfourteen[7] = {1288. * mm, 1288. * mm, barheight, 0,
width, heightred, zred};
971 cfourteen->SetLineColor(kGray);
973 Double_t oblshift = 50. * mm / TMath::Tan(TMath::DegToRad() * 35);
974 Double_t lDfourteen[7] = {603. * mm, 603. * mm, 50. * mm, oblshift,
width, heightred, zred};
976 dfourteen->SetLineColor(kGray);
978 Double_t lDfourteenlast[7] = {667. * mm, 667. * mm, 50. * mm, oblshift,
width, heightred, zred};
979 TGeoVolume* dfourteenlast =
CradleBaseVolume(med, lDfourteenlast,
"bar14incllast");
980 dfourteenlast->SetLineColor(kGray);
982 vbox->AddNode(afourteen, 1,
new TGeoTranslation(0., 487. * mm / 2 - 100. * mm / 2, 0.));
983 TGeoRotation* vinrot =
new TGeoRotation(
"vertbar");
985 vbox->AddNode(bfourteen, 1,
new TGeoCombiTrans(1488 * mm / 2 - 100. * mm / 2, -100. * mm / 2, 0., vinrot));
986 vbox->AddNode(bfourteen, 2,
new TGeoCombiTrans(-1488 * mm / 2 + 100. * mm / 2, -100. * mm / 2, 0., vinrot));
987 TGeoRotation* rotboxbar =
new TGeoRotation(
"rotboxbar");
988 rotboxbar->RotateZ(-35);
989 TGeoRotation* arotboxbar =
new TGeoRotation(
"arotboxbar");
990 arotboxbar->RotateZ(-35);
991 arotboxbar->RotateY(180);
992 vbox->AddNode(dfourteen, 1,
new TGeoCombiTrans(-1488 * mm / 4, -1, 0.4, rotboxbar));
993 vbox->AddNode(dfourteen, 2,
new TGeoCombiTrans(+1488 * mm / 4, -1, 0.4, arotboxbar));
995 vboxlast->AddNode(afourteen, 1,
new TGeoTranslation(0., 487. * mm / 2 - 100. * mm / 2, 0.));
996 vboxlast->AddNode(bfourteen, 1,
new TGeoCombiTrans(1488 * mm / 2 - 100. * mm / 2, -100. * mm / 2, 0., vinrot));
997 vboxlast->AddNode(bfourteen, 2,
new TGeoCombiTrans(-1488 * mm / 2 + 100. * mm / 2, -100. * mm / 2, 0., vinrot));
998 vboxlast->AddNode(dfourteenlast, 1,
new TGeoCombiTrans(-1488 * mm / 4 + 1.7, -3., 0., rotboxbar));
999 vboxlast->AddNode(dfourteenlast, 2,
new TGeoCombiTrans(+1488 * mm / 4 - 1.7, -3., 0., arotboxbar));
1004 TGeoRotation* rotl =
new TGeoRotation(
"Clongbase");
1006 cradle->AddNode(lbase, 0,
new TGeoCombiTrans(0 * mm, (1488 - 100) * mm / 2, -(597 - 60) * mm / 2, rotl));
1007 cradle->AddNode(lbase, 1,
new TGeoCombiTrans(0 * mm, -(1488 - 100) * mm / 2, -(597 - 60) * mm / 2, rotl));
1009 TGeoRotation* rots =
new TGeoRotation(
"Cshortbase");
1012 cradle->AddNode(sbase, 1,
new TGeoCombiTrans((6037 - 100) * mm / 2, 0., -(597 - 60) * mm / 2, rots));
1013 cradle->AddNode(sbase, 2,
new TGeoCombiTrans(-(6037 - 100) * mm / 2, 0., -(597 - 60) * mm / 2, rots));
1016 Double_t origtrastruct = (6037 - 2 * 60) * mm / 2 - 2288 * mm;
1018 TGeoRotation* rot1 =
new TGeoRotation(
"inclrot");
1021 TGeoRotation* rot2 =
new TGeoRotation(
"horizrot");
1023 Double_t dx = (1607 - 35) * mm * TMath::Cos(TMath::DegToRad() * 20) / 2 -
1024 tubeh / 2 * TMath::Sin(TMath::DegToRad() * 20) +
params[5];
1026 cradle->AddNode(inclin, 1,
new TGeoCombiTrans(origtrastruct + (2288 + 60) * mm - dx, 729 * mm,
params[0] + 0.4,
1028 cradle->AddNode(horiz, 1,
new TGeoCombiTrans(origtrastruct, 729 * mm, 597 * mm / 2 - tubeh / 2,
1030 TGeoRotation* rot1mirror =
new TGeoRotation(
"inclmirrot");
1031 rot1mirror->RotateX(90);
1032 rot1mirror->RotateY(200);
1033 rot1mirror->RotateZ(180);
1034 cradle->AddNode(inclin, 2,
new TGeoCombiTrans(origtrastruct - 2345 * mm + dx, 729 * mm,
params[0] + 0.4,
1036 cradle->AddNode(inclin, 3,
new TGeoCombiTrans(origtrastruct + (2288 + 60) * mm - dx, -729 * mm,
params[0] + 0.4,
1038 cradle->AddNode(horiz, 2,
new TGeoCombiTrans(origtrastruct, -729 * mm, 597 * mm / 2 - tubeh / 2,
1040 cradle->AddNode(inclin, 4,
new TGeoCombiTrans(origtrastruct - 2345 * mm + dx, -729 * mm,
params[0] + 0.4,
1043 Double_t tan1 = (2 * TMath::Tan(TMath::DegToRad() * 55));
1046 TGeoRotation* rot4 =
new TGeoRotation(
"4rot");
1050 TGeoRotation* rot4a =
new TGeoRotation(
"4arot");
1051 rot4a->RotateX(-90);
1052 rot4a->RotateY(-55);
1053 cradle->AddNode(four, 1,
new TGeoCombiTrans(origtrastruct - (39 + (597 - 50 - 60) / tan1) * mm - tubeh / (2 * TMath::Sin(TMath::DegToRad() * 55)), -729 * mm,
params[3], rot4));
1055 cradle->AddNode(four, 2,
new TGeoCombiTrans(origtrastruct + (39 + (597 - 50 - 60) / tan1) * mm + tubeh / (2 * TMath::Sin(TMath::DegToRad() * 55)), -729 * mm,
params[3], rot4a));
1057 TGeoRotation* rot5 =
new TGeoRotation(
"5rot");
1061 TGeoRotation* rot5a =
new TGeoRotation(
"5arot");
1062 rot5a->RotateX(-90);
1063 rot5a->RotateY(-75);
1066 new TGeoCombiTrans(origtrastruct + (486 + (597 - 50 - 60) / (2 * TMath::Tan(TMath::DegToRad() * 75))) * mm +
1067 tubeh / (2 * TMath::Sin(TMath::DegToRad() * 75)),
1068 -729 * mm, 0, rot5));
1071 new TGeoCombiTrans(origtrastruct - (486 + (597 - 50 - 60) / (2 * TMath::Tan(TMath::DegToRad() * 75))) * mm -
1072 tubeh / (2 * TMath::Sin(TMath::DegToRad() * 75)),
1073 -729 * mm, 0, rot5a));
1074 cradle->AddNode(six, 1,
1075 new TGeoCombiTrans(origtrastruct + 808 * mm + (480 * mm / 2) * TMath::Cos(TMath::DegToRad() * 55) +
1076 tubeh / (2 * TMath::Sin(TMath::DegToRad() * 55)) + 2.,
1077 -729 * mm, -
params[4] - 0.5, rot4a));
1078 cradle->AddNode(six, 2,
1079 new TGeoCombiTrans(origtrastruct - 808 * mm - (480 * mm / 2) * TMath::Cos(TMath::DegToRad() * 55) -
1080 tubeh / (2 * TMath::Sin(TMath::DegToRad() * 55)) - 2.,
1081 -729 * mm, -
params[4] - 0.5, rot4));
1083 TGeoRotation* rot7 =
new TGeoRotation(
"7rot");
1087 TGeoRotation* rot7a =
new TGeoRotation(
"7arot");
1088 rot7a->RotateX(-90);
1089 rot7a->RotateY(130);
1092 seven, 1,
new TGeoCombiTrans(origtrastruct + 1478 * mm - (472 * mm / 2) * TMath::Cos(TMath::DegToRad() * 50) + tubeh / (2 * TMath::Sin(TMath::DegToRad() * 50)), -729 * mm, -
params[8], rot7));
1094 seven, 2,
new TGeoCombiTrans(origtrastruct - 1478 * mm + (472 * mm / 2) * TMath::Cos(TMath::DegToRad() * 50) - tubeh / (2 * TMath::Sin(TMath::DegToRad() * 50)), -729 * mm, -
params[8], rot7a));
1095 TGeoRotation* rot8 =
new TGeoRotation(
"8rot");
1098 TGeoRotation* rot8a =
new TGeoRotation(
"8arot");
1099 rot8a->RotateX(-90);
1100 rot8a->RotateY(-25);
1101 rot8a->RotateZ(180);
1103 eight, 1,
new TGeoCombiTrans(origtrastruct + 1640 * mm + (244 * mm / 2) * TMath::Cos(TMath::DegToRad() * 30) + tubeh / (2 * TMath::Sin(TMath::DegToRad() * 30)), -729 * mm, -20.5, rot8));
1105 eight, 2,
new TGeoCombiTrans(origtrastruct - 1640 * mm - (244 * mm / 2) * TMath::Cos(TMath::DegToRad() * 30) - tubeh / (2 * TMath::Sin(TMath::DegToRad() * 30)), -729 * mm, -20.5, rot8a));
1106 TGeoRotation* rot9 =
new TGeoRotation(
"9rot");
1109 TGeoRotation* rot9a =
new TGeoRotation(
"9arot");
1110 rot9a->RotateX(-90);
1111 rot9a->RotateY(-90);
1112 rot9a->RotateZ(180);
1113 cradle->AddNode(nine, 1,
new TGeoCombiTrans(origtrastruct + 1960 * mm + 2.5 + 3., -729. * mm, -20., rot9));
1114 cradle->AddNode(nine, 2,
new TGeoCombiTrans(origtrastruct - 1960 * mm - 2.5 - 3., -729. * mm, -20., rot9a));
1116 TGeoRotation* rot10 =
new TGeoRotation(
"10rot");
1117 rot10->RotateX(-90);
1118 rot10->RotateY(-120);
1119 TGeoRotation* rot10a =
new TGeoRotation(
"10arot");
1120 rot10a->RotateX(-90);
1121 rot10a->RotateY(-120);
1122 rot10a->RotateZ(180);
1125 ten, 1,
new TGeoCombiTrans(origtrastruct + 1738 * mm + tubeh / (2 * TMath::Sin(TMath::DegToRad() * 60)) - 2, +729. * mm, -13., rot10));
1127 ten, 2,
new TGeoCombiTrans(origtrastruct - 1738 * mm - tubeh / (2 * TMath::Sin(TMath::DegToRad() * 60)) + 2, +729. * mm, -13., rot10a));
1129 TGeoRotation* rot11 =
new TGeoRotation(
"11rot");
1130 rot11->RotateX(-90);
1132 TGeoRotation* rot11a =
new TGeoRotation(
"11arot");
1133 rot11a->RotateX(-90);
1134 rot11a->RotateY(50);
1135 rot11a->RotateZ(180);
1136 cradle->AddNode(eleven, 1,
new TGeoCombiTrans(origtrastruct - 1738 * mm - tubeh / (2 * TMath::Sin(TMath::DegToRad() * 60)) + 352. * mm, +729. * mm, -12.7, rot11));
1137 cradle->AddNode(eleven, 2,
new TGeoCombiTrans(origtrastruct + 1738 * mm + tubeh / (2 * TMath::Sin(TMath::DegToRad() * 60)) - 352. * mm, +729. * mm, -12.7, rot11a));
1139 TGeoRotation* rot12 =
new TGeoRotation(
"12rot");
1140 rot12->RotateX(-90);
1141 rot12->RotateY(-120);
1142 TGeoRotation* rot12a =
new TGeoRotation(
"12arot");
1143 rot12a->RotateX(-90);
1144 rot12a->RotateY(-120);
1145 rot12a->RotateZ(180);
1146 cradle->AddNode(twelve, 1,
new TGeoCombiTrans(origtrastruct + 1065 * mm, +729. * mm, 1., rot12));
1147 cradle->AddNode(twelve, 2,
new TGeoCombiTrans(origtrastruct - 1065 * mm, +729. * mm, 1., rot12a));
1149 TGeoRotation* rot13 =
new TGeoRotation(
"13rot");
1150 rot13->RotateX(-90);
1151 rot13->RotateY(-43);
1152 rot13->RotateZ(180);
1153 TGeoRotation* rot13a =
new TGeoRotation(
"13arot");
1154 rot13a->RotateX(-90);
1155 rot13a->RotateY(-43);
1156 cradle->AddNode(thirteen, 1,
new TGeoCombiTrans(origtrastruct + 572 * mm - 18., +729. * mm, -1.5, rot13));
1157 cradle->AddNode(thirteen, 2,
new TGeoCombiTrans(origtrastruct - 572 * mm + 18., +729. * mm, -1.5, rot13a));
1160 TGeoRotation* vrot =
new TGeoRotation(
"vertbox");
1163 cradle->AddNode(vboxlast, 1,
new TGeoCombiTrans(-6037 * mm / 2 + 50. * mm / 2, 0., 0.5,
1166 cradle->AddNode(vbox, 2,
new TGeoCombiTrans(-6037 * mm / 2 + 50. * mm / 2 + 990. * mm, 0., 0.5, vrot));
1167 cradle->AddNode(cfourteen, 2,
new TGeoCombiTrans(-6037 * mm / 2 + 50. * mm / 2 + 990. * mm, 0., -477. * mm / 2 - 20. * mm / 2, vrot));
1170 vbox, 3,
new TGeoCombiTrans(origtrastruct - (1641.36 * mm +
params[7]) / 2. + 50. * mm / 2. + 3, 0., 0.5, vrot));
1171 cradle->AddNode(cfourteen, 3,
1172 new TGeoCombiTrans(origtrastruct - (1641.36 * mm +
params[7]) / 2. + 50. * mm / 2. + 3, 0.,
1173 -477. * mm / 2 - 20. * mm / 2, vrot));
1176 vbox, 4,
new TGeoCombiTrans(origtrastruct + (1641.36 * mm +
params[7]) / 2. - 50. * mm / 2. - 3, 0., 0.5, vrot));
1177 cradle->AddNode(cfourteen, 4,
1178 new TGeoCombiTrans(origtrastruct + (1641.36 * mm +
params[7]) / 2. - 50. * mm / 2. - 3, 0.,
1179 -477. * mm / 2 - 20. * mm / 2, vrot));