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);
555 double cm = 1, mm = 0.1 * cm, um = 0.001 * mm;
557 TGeoVolume* hmp =
new TGeoVolumeAssembly(Form(
"Hmp%i", number));
561 TGeoMedium* al = matmgr.getTGeoMedium(
"HMP_Al");
562 TGeoMedium* ch4 = matmgr.getTGeoMedium(
"HMP_CH4");
563 TGeoMedium* roha = matmgr.getTGeoMedium(
"HMP_Roha");
564 TGeoMedium* neoc = matmgr.getTGeoMedium(
"HMP_Neo");
565 TGeoMedium* c6f14 = matmgr.getTGeoMedium(
"HMP_C6F14");
566 TGeoMedium* sio2 = matmgr.getTGeoMedium(
"HMP_SiO2");
567 TGeoMedium* cu = matmgr.getTGeoMedium(
"HMP_Cu");
568 TGeoMedium*
w = matmgr.getTGeoMedium(
"HMP_W");
569 TGeoMedium* csi = matmgr.getTGeoMedium(
"HMP_CsI");
570 TGeoMedium* ar = matmgr.getTGeoMedium(
"HMP_Ar");
572 TGeoRotation* rot =
new TGeoRotation(
"HwireRot");
574 TGeoVolume* sbo = gGeoManager->MakeBox(
"Hsbo", ch4, 1419 * mm / 2, 1378.00 * mm / 2, 50.5 * mm / 2);
575 TGeoVolume* cov = gGeoManager->MakeBox(
"Hcov", al, 1419 * mm / 2, 1378.00 * mm / 2, 0.5 * mm / 2);
576 TGeoVolume* hon = gGeoManager->MakeBox(
"Hhon", roha, 1359 * mm / 2, 1318.00 * mm / 2, 49.5 * mm / 2);
577 TGeoVolume* rad = gGeoManager->MakeBox(
"Hrad", c6f14, 1330 * mm / 2, 413.00 * mm / 2, 24.0 * mm / 2);
578 TGeoVolume* neo = gGeoManager->MakeBox(
"Hneo", neoc, 1330 * mm / 2, 413.00 * mm / 2, 4.0 * mm / 2);
579 TGeoVolume* win = gGeoManager->MakeBox(
"Hwin", sio2, 1330 * mm / 2, 413.00 * mm / 2, 5.0 * mm / 2);
580 TGeoVolume* si1 = gGeoManager->MakeBox(
"Hsi1", sio2, 1330 * mm / 2, 5.00 * mm / 2, 15.0 * mm / 2);
581 TGeoVolume* si2 = gGeoManager->MakeBox(
"Hsi2", neoc, 10 * mm / 2, 403.00 * mm / 2, 15.0 * mm / 2);
582 TGeoVolume* spa = gGeoManager->MakeTube(
"Hspa", sio2, 0 * mm, 5.00 * mm, 15.0 * mm / 2);
583 TGeoVolume* fr4 = gGeoManager->MakeBox(
"Hfr4", ch4, 1407 * mm / 2, 1366.00 * mm / 2, 15.0 * mm / 2);
584 TGeoVolume* f4a = gGeoManager->MakeBox(
"Hf4a", al, 1407 * mm / 2, 1366.00 * mm / 2, 10.0 * mm / 2);
585 TGeoVolume* f4i = gGeoManager->MakeBox(
"Hf4i", ch4, 1323 * mm / 2, 1296.00 * mm / 2, 10.0 * mm / 2);
586 TGeoVolume*
col = gGeoManager->MakeTube(
"Hcol", cu, 0 * mm, 100.00 * um, 1323.0 * mm / 2);
587 TGeoVolume* sec = gGeoManager->MakeBox(
"Hsec", ch4, 648 * mm / 2, 411.00 * mm / 2,
590 double cellx = 8.04 * mm, celly = 8.4 * mm;
591 int nPadX = 80, nPadY = 48;
592 TGeoVolume* gap = gGeoManager->MakeBox(
"Hgap", ch4, cellx * nPadX / 2, celly * nPadY / 2,
594 TGeoVolume*
row = gap->Divide(
"Hrow", 2, nPadY, 0, 0);
595 TGeoVolume* cel =
row->Divide(Form(
"Hcel%i", number), 1, nPadX, 0, 0);
596 mSensitiveVolumes.emplace_back(cel);
598 TGeoVolume* cat = gGeoManager->MakeTube(
"Hcat", cu, 0.00 * mm, 50.00 * um, cellx / 2);
599 TGeoVolume* ano = gGeoManager->MakeTube(
"Hano",
w, 0.00 * mm, 20.00 * um, cellx / 2);
600 TGeoVolume* pad = gGeoManager->MakeBox(Form(
"Hpad%i", number), csi, 7.54 * mm / 2, 7.90 * mm / 2,
602 mSensitiveVolumes.emplace_back(pad);
604 TGeoVolume* fr1 = gGeoManager->MakeBox(
"Hfr1", al, 1463 * mm / 2, 1422.00 * mm / 2,
606 TGeoVolume* fr1up = gGeoManager->MakeBox(
"Hfr1up", ch4, (1426.00 - 37.00) * mm / 2, (1385.00 - 37.00) * mm / 2,
609 TGeoVolume* fr1upcard = gGeoManager->MakeBox(
"Hfr1upcard", ch4, 662. * mm / 2., 425. * mm / 2.,
612 TGeoVolume* fr1perUpBig = gGeoManager->MakeBox(
"Hfr1perUpBig", ch4, 1389 * mm / 2, 35 * mm / 2, 10 * mm / 2);
613 TGeoVolume* fr1perUpSma =
614 gGeoManager->MakeBox(
"Hfr1perUpSma", ch4, 35 * mm / 2, (1385 - 37 - 2 * 35) * mm / 2, 10 * mm / 2);
615 TGeoVolume* fr1perDowBig = gGeoManager->MakeBox(
"Hfr1perDowBig", ch4, 1389 * mm / 2, 46 * mm / 2, 2.3 * mm / 2);
616 TGeoVolume* fr1perDowSma =
617 gGeoManager->MakeBox(
"Hfr1perDowSma", ch4, 46 * mm / 2, (1385 - 37 - 2 * 46) * mm / 2, 2.3 * mm / 2);
619 TGeoVolume* ppf = gGeoManager->MakeBox(
"Hppf", al, 648 * mm / 2, 411.00 * mm / 2, 38.3 * mm / 2);
620 TGeoVolume* lar = gGeoManager->MakeBox(
"Hlar", ar, 181 * mm / 2, 89.25 * mm / 2, 38.3 * mm / 2);
621 TGeoVolume* smo = gGeoManager->MakeBox(
"Hsmo", ar, 114 * mm / 2, 89.25 * mm / 2, 38.3 * mm / 2);
623 TGeoVolume* cufoil = gGeoManager->MakeBox(
"Hcufoil", csi, 662. * mm / 2., 425. * mm / 2.,
625 TGeoVolume* rect = gGeoManager->MakeBox(
"Hrect", ch4, 48 * mm / 2, 19 * mm / 2., 1 * mm / 2.);
627 TGeoVolume* fr3 = gGeoManager->MakeBox(
"Hfr3", al, 1463 * mm / 2, 1422 * mm / 2, 34 * mm / 2);
628 TGeoVolume* fr3up = gGeoManager->MakeBox(
"Hfr3up", ch4, 1323 * mm / 2, 1282 * mm / 2, 20 * mm / 2);
629 TGeoVolume* fr3down = gGeoManager->MakeBox(
"Hfr3down", ch4, 1437 * mm / 2, 1370 * mm / 2, 14 * mm / 2);
631 TGeoVolume* proxgap1 = gGeoManager->MakeBox(
"Hproxgap1", ch4, 1407 * mm / 2, 1366.00 * mm / 2,
632 (9. - 7.5) * mm / 2.);
633 TGeoVolume* proxgap2 = gGeoManager->MakeBox(
"Hproxgap2", ch4, 1407 * mm / 2, 1366.00 * mm / 2,
634 (81.7 - 6.2 - 34. - 9. - 7.5) * mm / 2.);
669 hmp->AddNode(sbo, 1,
new TGeoTranslation(0 * mm, 0 * mm, -73.75 * mm));
670 sbo->AddNode(hon, 1,
new TGeoTranslation(0 * mm, 0 * mm, 0 * mm));
671 sbo->AddNode(cov, 1,
new TGeoTranslation(0 * mm, 0 * mm, +25 * mm));
672 sbo->AddNode(cov, 2,
new TGeoTranslation(0 * mm, 0 * mm, -25 * mm));
673 hmp->AddNode(rad, 2,
new TGeoTranslation(0 * mm, +434 * mm, -12.00 * mm));
674 hmp->AddNode(rad, 1,
new TGeoTranslation(0 * mm, 0 * mm, -12.00 * mm));
675 hmp->AddNode(rad, 0,
new TGeoTranslation(0 * mm, -434 * mm, -12.00 * mm));
676 rad->AddNode(neo, 1,
new TGeoTranslation(0 * mm, 0 * mm, -10.0 * mm));
677 rad->AddNode(win, 1,
new TGeoTranslation(0 * mm, 0 * mm, 9.5 * mm));
678 rad->AddNode(si1, 1,
new TGeoTranslation(0 * mm, -204 * mm, -0.5 * mm));
679 rad->AddNode(si1, 2,
new TGeoTranslation(0 * mm, +204 * mm, -0.5 * mm));
680 rad->AddNode(si2, 1,
new TGeoTranslation(-660 * mm, 0 * mm, -0.5 * mm));
681 rad->AddNode(si2, 2,
new TGeoTranslation(+660 * mm, 0 * mm, -0.5 * mm));
682 for (Int_t
i = 0;
i < 3;
i++) {
683 for (Int_t
j = 0;
j < 10;
j++) {
684 rad->AddNode(spa, 10 *
i +
j,
685 new TGeoTranslation(-1330 * mm / 2 + 116 * mm +
j * 122 * mm, (
i - 1) * 105 * mm, -0.5 * mm));
688 hmp->AddNode(fr4, 1,
new TGeoTranslation(0 * mm, 0 * mm, 9.00 * mm));
689 for (
int i = 1;
i <= 322;
i++) {
690 fr4->AddNode(
col,
i,
new TGeoCombiTrans(0 * mm, -1296 / 2 * mm +
i * 4 * mm, -5 * mm, rot));
692 fr4->AddNode(f4a, 1,
new TGeoTranslation(0 * mm, 0 * mm, 2.5 * mm));
693 f4a->AddNode(f4i, 1,
new TGeoTranslation(0 * mm, 0 * mm, 0 * mm));
694 hmp->AddNode(sec, 4,
new TGeoTranslation(-335 * mm, +433 * mm, 78.6 * mm));
695 hmp->AddNode(sec, 5,
new TGeoTranslation(+335 * mm, +433 * mm, 78.6 * mm));
696 hmp->AddNode(sec, 2,
new TGeoTranslation(-335 * mm, 0 * mm, 78.6 * mm));
697 hmp->AddNode(sec, 3,
new TGeoTranslation(+335 * mm, 0 * mm, 78.6 * mm));
698 hmp->AddNode(sec, 0,
new TGeoTranslation(-335 * mm, -433 * mm, 78.6 * mm));
699 hmp->AddNode(sec, 1,
new TGeoTranslation(+335 * mm, -433 * mm, 78.6 * mm));
700 sec->AddNode(gap, 1,
new TGeoTranslation(0, 0, 0. * mm));
701 cel->AddNode(cat, 1,
new TGeoCombiTrans(0, 3.15 * mm, -2.70 * mm, rot));
702 cel->AddNode(ano, 1,
new TGeoCombiTrans(0, 2.00 * mm, -0.29 * mm, rot));
703 cel->AddNode(cat, 2,
new TGeoCombiTrans(0, 1.05 * mm, -2.70 * mm, rot));
704 cel->AddNode(cat, 3,
new TGeoCombiTrans(0, -1.05 * mm, -2.70 * mm, rot));
705 cel->AddNode(ano, 2,
new TGeoCombiTrans(0, -2.00 * mm, -0.29 * mm, rot));
706 cel->AddNode(cat, 4,
new TGeoCombiTrans(0, -3.15 * mm, -2.70 * mm, rot));
707 cel->AddNode(pad, 1,
new TGeoTranslation(0, 0.00 * mm, 2.25 * mm));
709 hmp->AddNode(fr1, 1,
new TGeoTranslation(0., 0., (80. + 1.7) * mm + 58.3 * mm / 2.));
710 fr1->AddNode(fr1up, 1,
new TGeoTranslation(0., 0., (58.3 * mm - 20.00 * mm) / 2.));
712 fr1->AddNode(fr1perUpBig, 0,
713 new TGeoTranslation(0., (1385 - 37 - 35) * mm / 2., (58.3 * mm - 20.00 * 2 * mm - 10.0 * mm) / 2.));
714 fr1->AddNode(fr1perUpSma, 0,
715 new TGeoTranslation((1426 - 37 - 35) * mm / 2., 0., (58.3 * mm - 20.00 * 2 * mm - 10.0 * mm) / 2.));
716 fr1->AddNode(fr1perUpBig, 1,
717 new TGeoTranslation(0., -(1385 - 37 - 35) * mm / 2., (58.3 * mm - 20.00 * 2 * mm - 10.0 * mm) / 2.));
718 fr1->AddNode(fr1perUpSma, 1,
719 new TGeoTranslation(-(1426 - 37 - 35) * mm / 2., 0., (58.3 * mm - 20.00 * 2 * mm - 10.0 * mm) / 2.));
721 fr1->AddNode(fr1perDowBig, 0,
new TGeoTranslation(0., (1385 - 37) * mm / 2., (-58.3 * mm + 2.3 * mm) / 2.));
722 fr1->AddNode(fr1perDowSma, 0,
new TGeoTranslation((1426 - 37) * mm / 2., 0., (-58.3 * mm + 2.3 * mm) / 2.));
723 fr1->AddNode(fr1perDowBig, 1,
new TGeoTranslation(0., -(1385 - 37) * mm / 2., (-58.3 * mm + 2.3 * mm) / 2.));
724 fr1->AddNode(fr1perDowSma, 1,
new TGeoTranslation(-(1426 - 37) * mm / 2., 0., (-58.3 * mm + 2.3 * mm) / 2.));
726 fr1->AddNode(ppf, 4,
new TGeoTranslation(-335 * mm, 433 * mm, (-58.3 + 38.3) * mm / 2.));
727 fr1->AddNode(ppf, 5,
new TGeoTranslation(335 * mm, 433 * mm, (-58.3 + 38.3) * mm / 2.));
728 fr1->AddNode(ppf, 2,
new TGeoTranslation(-335 * mm, 0., (-58.3 + 38.3) * mm / 2.));
729 fr1->AddNode(ppf, 3,
new TGeoTranslation(335 * mm, 0., (-58.3 + 38.3) * mm / 2.));
730 fr1->AddNode(ppf, 0,
new TGeoTranslation(-335 * mm, -433 * mm, (-58.3 + 38.3) * mm / 2.));
731 fr1->AddNode(ppf, 1,
new TGeoTranslation(335 * mm, -433 * mm, (-58.3 + 38.3) * mm / 2.));
733 Double_t offsetx = 16. * mm, offsety = 34. * mm / 2., interdistx = 48 * mm + offsetx + 0.6666 * mm,
734 interdisty = 19. * mm + 2. * offsety;
739 TGeoVolume* gassipl2 = gGeoManager->MakeBox(
"Hgassipl2", csi, 32. * mm / 2, 3. * mm / 2., 1. * mm / 2.);
740 TGeoVolume* gassipl3 =
741 gGeoManager->MakeBox(
"Hgassipl3", csi, 60. * mm / 2, 3. * mm / 2., 19. * mm / 2.);
742 TGeoVolume* gassipl4 = gGeoManager->MakeBox(
743 "Hgassipl4", csi, 60. * mm / 2, 3. * mm / 2.,
745 TGeoVolume* busext = gGeoManager->MakeTubs(
"Hbusext", csi, 29 * mm, 30 * mm, 40 * mm / 2., 0., 180);
746 TGeoVolume* ext =
new TGeoVolumeAssembly(
"Hext");
748 rect->AddNode(gassipl2, 1,
new TGeoTranslation(0., 0., 0));
750 for (Int_t hor = 0; hor < 10; hor++) {
751 for (Int_t vert = 0; vert < 8; vert++) {
752 cufoil->AddNode(rect, hor + vert * 10,
753 new TGeoTranslation(offsetx + 48. * mm / 2 + hor * interdistx - 662. * mm / 2,
754 offsety + 19. * mm / 2 + vert * interdisty - 425. * mm / 2., 0.));
755 fr1upcard->AddNode(gassipl3, 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 ext->AddNode(gassipl4, 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(busext, 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 + 3. * mm / 2., 0));
767 fr1up->AddNode(cufoil, 4,
new TGeoTranslation(-335 * mm, 433 * mm, -20.0 * mm / 2 + 1. * mm / 2));
768 fr1up->AddNode(cufoil, 5,
new TGeoTranslation(335 * mm, 433 * mm, -20.0 * mm / 2 + 1. * mm / 2));
769 fr1up->AddNode(cufoil, 2,
new TGeoTranslation(-335 * mm, 0, -20.0 * mm / 2 + 1. * mm / 2));
770 fr1up->AddNode(cufoil, 3,
new TGeoTranslation(335 * mm, 0, -20.0 * mm / 2 + 1. * mm / 2));
771 fr1up->AddNode(cufoil, 0,
new TGeoTranslation(-335 * mm, -433 * mm, -20.0 * mm / 2 + 1. * mm / 2));
772 fr1up->AddNode(cufoil, 1,
new TGeoTranslation(335 * mm, -433 * mm, -20.0 * mm / 2 + 1. * mm / 2));
774 fr1up->AddNode(fr1upcard, 4,
new TGeoTranslation(-335 * mm, 433 * mm, 1. * mm / 2.));
775 fr1up->AddNode(fr1upcard, 5,
new TGeoTranslation(335 * mm, 433 * mm, 1. * mm / 2.));
776 fr1up->AddNode(fr1upcard, 2,
new TGeoTranslation(-335 * mm, 0, 1. * mm / 2.));
777 fr1up->AddNode(fr1upcard, 3,
new TGeoTranslation(335 * mm, 0, 1. * mm / 2.));
778 fr1up->AddNode(fr1upcard, 0,
new TGeoTranslation(-335 * mm, -433 * mm, 1. * mm / 2));
779 fr1up->AddNode(fr1upcard, 1,
new TGeoTranslation(335 * mm, -433 * mm, 1. * mm / 2.));
781 hmp->AddNode(ext, 4,
new TGeoTranslation(-335 * mm, +433 * mm, (80. + 1.7) * mm + 58.3 * mm + 91 * mm / 2.));
782 hmp->AddNode(ext, 5,
new TGeoTranslation(+335 * mm, +433 * mm, (80. + 1.7) * mm + 58.3 * mm + 91 * mm / 2.));
783 hmp->AddNode(ext, 2,
new TGeoTranslation(-335 * mm, 0 * mm, (80. + 1.7) * mm + 58.3 * mm + 91 * mm / 2.));
784 hmp->AddNode(ext, 3,
new TGeoTranslation(+335 * mm, 0 * mm, (80. + 1.7) * mm + 58.3 * mm + 91 * mm / 2.));
785 hmp->AddNode(ext, 0,
new TGeoTranslation(-335 * mm, -433 * mm, (80. + 1.7) * mm + 58.3 * mm + 91 * mm / 2.));
786 hmp->AddNode(ext, 1,
new TGeoTranslation(+335 * mm, -433 * mm, (80. + 1.7) * mm + 58.3 * mm + 91 * mm / 2.));
788 hmp->AddNode(proxgap1, 0,
new TGeoTranslation(0., 0., (9. - 7.5) * mm / 2.));
791 hmp->AddNode(proxgap2, 0,
792 new TGeoTranslation(0., 0., (9 + 7.5 + 34) * mm + (81.7 - 6.2 - 34. - 9. - 7.5) * mm / 2.));
831 ppf->AddNode(lar, 0,
new TGeoTranslation(-224.5 * mm, -151.875 * mm, 0. * mm));
832 ppf->AddNode(lar, 1,
new TGeoTranslation(-224.5 * mm, -50.625 * mm, 0. * mm));
833 ppf->AddNode(lar, 2,
new TGeoTranslation(-224.5 * mm, +50.625 * mm, 0. * mm));
834 ppf->AddNode(lar, 3,
new TGeoTranslation(-224.5 * mm, +151.875 * mm, 0. * mm));
835 ppf->AddNode(lar, 4,
new TGeoTranslation(+224.5 * mm, -151.875 * mm, 0. * mm));
836 ppf->AddNode(lar, 5,
new TGeoTranslation(+224.5 * mm, -50.625 * mm, 0. * mm));
837 ppf->AddNode(lar, 6,
new TGeoTranslation(+224.5 * mm, +50.625 * mm, 0. * mm));
838 ppf->AddNode(lar, 7,
new TGeoTranslation(+224.5 * mm, +151.875 * mm, 0. * mm));
839 ppf->AddNode(smo, 0,
new TGeoTranslation(-65.0 * mm, -151.875 * mm, 0. * mm));
840 ppf->AddNode(smo, 1,
new TGeoTranslation(-65.0 * mm, -50.625 * mm, 0. * mm));
841 ppf->AddNode(smo, 2,
new TGeoTranslation(-65.0 * mm, +50.625 * mm, 0. * mm));
842 ppf->AddNode(smo, 3,
new TGeoTranslation(-65.0 * mm, +151.875 * mm, 0. * mm));
843 ppf->AddNode(smo, 4,
new TGeoTranslation(+65.0 * mm, -151.875 * mm, 0. * mm));
844 ppf->AddNode(smo, 5,
new TGeoTranslation(+65.0 * mm, -50.625 * mm, 0. * mm));
845 ppf->AddNode(smo, 6,
new TGeoTranslation(+65.0 * mm, +50.625 * mm, 0. * mm));
846 ppf->AddNode(smo, 7,
new TGeoTranslation(+65.0 * mm, +151.875 * mm, 0. * mm));
849 hmp->AddNode(fr3, 1,
new TGeoTranslation(0., 0., (9. + 7.5) * mm + 34. * mm / 2));
850 fr3->AddNode(fr3up, 1,
new TGeoTranslation(0., 0., 7 * mm));
851 fr3->AddNode(fr3down, 1,
new TGeoTranslation(0., 0., -10 * mm));
867 Double_t
params[10] = {0.5, 10., 24., -1, 5.2, 1.5, 3.5, 8.5, 3.8, 0.};
868 TGeoMedium* med = gGeoManager->GetMedium(
"HMP_Al");
869 TGeoVolume* cradle =
new TGeoVolumeAssembly(
"Hcradle");
872 Double_t baselong[7] = {
873 6037 * mm - 2 * 100 * mm, 6037 * mm - 2 * 100 * mm, 60 * mm, 0., 100 * mm, 10 * mm, 10 * mm};
875 lbase->SetLineColor(kGray);
877 Double_t baseshort[7] = {
878 1288. * mm + 2 * 100 * mm, 1288. * mm + 2 * 100 * mm, 60 * mm, 0., 100 * mm, 10 * mm, 10 * mm};
880 sbase->SetLineColor(kGray);
884 Double_t
height = 30. * mm;
885 Double_t tubeh = 50. * mm;
886 Double_t heightred = 5. * mm;
887 Double_t zred = 5. * mm;
888 Double_t oneshift = tubeh / TMath::Tan(TMath::DegToRad() * 20.) + (1458. - 35) * mm / 2 - (1607 - 35) * mm / 2;
889 Double_t linclined[7] = {
890 1458. * mm -
params[6] - 0.5, 1607. * mm -
params[6] - 0.5, tubeh, oneshift,
height, heightred, zred};
892 inclin->SetLineColor(kGray);
893 Double_t lhorizontal[7] = {
896 horiz->SetLineColor(kGray);
899 Double_t fourshift = tubeh / TMath::Tan(TMath::DegToRad() * 55.);
900 Double_t lfour[7] = {592 * mm, 592 * mm, tubeh, fourshift,
height, heightred, zred};
902 four->SetLineColor(kGray);
904 Double_t fiveshift = tubeh / TMath::Tan(TMath::DegToRad() * 75);
905 Double_t lfive[7] = {500. * mm, 500. * mm, tubeh, fiveshift,
height, heightred, zred};
907 five->SetLineColor(kGray);
909 Double_t sixshift = tubeh / TMath::Tan(TMath::DegToRad() * 55) + 459 * mm / 2 - 480 * mm / 2;
910 Double_t lsix[7] = {456 * mm, 477 * mm, tubeh, sixshift,
height, heightred, zred};
912 six->SetLineColor(kGray);
914 Double_t sevenshift = tubeh / TMath::Tan(TMath::DegToRad() * 50) + 472 * mm / 2 - 429. * mm / 2;
915 Double_t lseven[7] = {429 * mm, 472 * mm, tubeh, sevenshift,
height, heightred, zred};
917 seven->SetLineColor(kGray);
919 Double_t eightshift = tubeh / TMath::Tan(TMath::DegToRad() * 30) + 244. * mm / 2 - 200. * mm / 2 - 3;
920 Double_t leight[7] = {200. * mm, 244. * mm, tubeh, eightshift,
height, heightred, zred};
922 eight->SetLineColor(kGray);
924 Double_t nineshift = -tubeh / TMath::Tan(TMath::DegToRad() * 71) + 83. * mm / 2 - 66. * mm / 2;
925 Double_t lnine[7] = {59.5 * mm, 76.5 * mm, tubeh, nineshift,
height, heightred, zred};
927 nine->SetLineColor(kGray);
929 Double_t tenshift = (-tubeh / TMath::Tan(TMath::DegToRad() * 60) - 221. * mm / 2 + 195. * mm / 2);
930 Double_t lten[7] = {195. * mm, 221. * mm, tubeh, tenshift,
height, heightred, zred};
932 ten->SetLineColor(kGray);
934 Double_t elevenshift = (-tubeh / TMath::Tan(TMath::DegToRad() * 70) - 338. * mm / 2 + 315. * mm / 2);
935 Double_t leleven[7] = {308. * mm, 331. * mm, tubeh, elevenshift,
height, heightred, zred};
937 eleven->SetLineColor(kGray);
939 Double_t twelveshift = (-tubeh / TMath::Tan(TMath::DegToRad() * 60) - 538. * mm / 2 + 508. * mm / 2);
940 Double_t ltwelve[7] = {507. * mm, 537. * mm, tubeh, twelveshift,
height, heightred, zred};
942 twelve->SetLineColor(kGray);
944 Double_t thirteenshift = tubeh / TMath::Tan(TMath::DegToRad() * 43);
945 Double_t lthirteen[7] = {708. * mm, 708. * mm, tubeh, thirteenshift,
height, heightred, zred};
947 thirteen->SetLineColor(kGray);
950 TGeoVolume* vbox =
new TGeoVolumeAssembly(
"Hvbox");
951 vbox->SetLineColor(kViolet);
952 Double_t
width = 50. * mm;
954 TGeoVolume* vboxlast =
new TGeoVolumeAssembly(
"Hvboxlast");
955 vboxlast->SetLineColor(kViolet);
957 Double_t barheight = 100. * mm;
958 Double_t lAfourteen[7] = {1488. * mm, 1488. * mm, barheight, 0,
width, heightred, zred};
960 afourteen->SetLineColor(kGray);
962 Double_t lBfourteen[7] = {387 * mm, 387. * mm, barheight, 0,
width, heightred, zred};
964 bfourteen->SetLineColor(kGray);
966 Double_t lCfourteen[7] = {1288. * mm, 1288. * mm, barheight, 0,
width, heightred, zred};
968 cfourteen->SetLineColor(kGray);
970 Double_t oblshift = 50. * mm / TMath::Tan(TMath::DegToRad() * 35);
971 Double_t lDfourteen[7] = {603. * mm, 603. * mm, 50. * mm, oblshift,
width, heightred, zred};
973 dfourteen->SetLineColor(kGray);
975 Double_t lDfourteenlast[7] = {667. * mm, 667. * mm, 50. * mm, oblshift,
width, heightred, zred};
976 TGeoVolume* dfourteenlast =
CradleBaseVolume(med, lDfourteenlast,
"bar14incllast");
977 dfourteenlast->SetLineColor(kGray);
979 vbox->AddNode(afourteen, 1,
new TGeoTranslation(0., 487. * mm / 2 - 100. * mm / 2, 0.));
980 TGeoRotation* vinrot =
new TGeoRotation(
"vertbar");
982 vbox->AddNode(bfourteen, 1,
new TGeoCombiTrans(1488 * mm / 2 - 100. * mm / 2, -100. * mm / 2, 0., vinrot));
983 vbox->AddNode(bfourteen, 2,
new TGeoCombiTrans(-1488 * mm / 2 + 100. * mm / 2, -100. * mm / 2, 0., vinrot));
984 TGeoRotation* rotboxbar =
new TGeoRotation(
"rotboxbar");
985 rotboxbar->RotateZ(-35);
986 TGeoRotation* arotboxbar =
new TGeoRotation(
"arotboxbar");
987 arotboxbar->RotateZ(-35);
988 arotboxbar->RotateY(180);
989 vbox->AddNode(dfourteen, 1,
new TGeoCombiTrans(-1488 * mm / 4, -1, 0.4, rotboxbar));
990 vbox->AddNode(dfourteen, 2,
new TGeoCombiTrans(+1488 * mm / 4, -1, 0.4, arotboxbar));
992 vboxlast->AddNode(afourteen, 1,
new TGeoTranslation(0., 487. * mm / 2 - 100. * mm / 2, 0.));
993 vboxlast->AddNode(bfourteen, 1,
new TGeoCombiTrans(1488 * mm / 2 - 100. * mm / 2, -100. * mm / 2, 0., vinrot));
994 vboxlast->AddNode(bfourteen, 2,
new TGeoCombiTrans(-1488 * mm / 2 + 100. * mm / 2, -100. * mm / 2, 0., vinrot));
995 vboxlast->AddNode(dfourteenlast, 1,
new TGeoCombiTrans(-1488 * mm / 4 + 1.7, -3., 0., rotboxbar));
996 vboxlast->AddNode(dfourteenlast, 2,
new TGeoCombiTrans(+1488 * mm / 4 - 1.7, -3., 0., arotboxbar));
1001 TGeoRotation* rotl =
new TGeoRotation(
"Clongbase");
1003 cradle->AddNode(lbase, 0,
new TGeoCombiTrans(0 * mm, (1488 - 100) * mm / 2, -(597 - 60) * mm / 2, rotl));
1004 cradle->AddNode(lbase, 1,
new TGeoCombiTrans(0 * mm, -(1488 - 100) * mm / 2, -(597 - 60) * mm / 2, rotl));
1006 TGeoRotation* rots =
new TGeoRotation(
"Cshortbase");
1009 cradle->AddNode(sbase, 1,
new TGeoCombiTrans((6037 - 100) * mm / 2, 0., -(597 - 60) * mm / 2, rots));
1010 cradle->AddNode(sbase, 2,
new TGeoCombiTrans(-(6037 - 100) * mm / 2, 0., -(597 - 60) * mm / 2, rots));
1013 Double_t origtrastruct = (6037 - 2 * 60) * mm / 2 - 2288 * mm;
1015 TGeoRotation* rot1 =
new TGeoRotation(
"inclrot");
1018 TGeoRotation* rot2 =
new TGeoRotation(
"horizrot");
1020 Double_t dx = (1607 - 35) * mm * TMath::Cos(TMath::DegToRad() * 20) / 2 -
1021 tubeh / 2 * TMath::Sin(TMath::DegToRad() * 20) +
params[5];
1023 cradle->AddNode(inclin, 1,
new TGeoCombiTrans(origtrastruct + (2288 + 60) * mm - dx, 729 * mm,
params[0] + 0.4,
1025 cradle->AddNode(horiz, 1,
new TGeoCombiTrans(origtrastruct, 729 * mm, 597 * mm / 2 - tubeh / 2,
1027 TGeoRotation* rot1mirror =
new TGeoRotation(
"inclmirrot");
1028 rot1mirror->RotateX(90);
1029 rot1mirror->RotateY(200);
1030 rot1mirror->RotateZ(180);
1031 cradle->AddNode(inclin, 2,
new TGeoCombiTrans(origtrastruct - 2345 * mm + dx, 729 * mm,
params[0] + 0.4,
1033 cradle->AddNode(inclin, 3,
new TGeoCombiTrans(origtrastruct + (2288 + 60) * mm - dx, -729 * mm,
params[0] + 0.4,
1035 cradle->AddNode(horiz, 2,
new TGeoCombiTrans(origtrastruct, -729 * mm, 597 * mm / 2 - tubeh / 2,
1037 cradle->AddNode(inclin, 4,
new TGeoCombiTrans(origtrastruct - 2345 * mm + dx, -729 * mm,
params[0] + 0.4,
1040 Double_t tan1 = (2 * TMath::Tan(TMath::DegToRad() * 55));
1043 TGeoRotation* rot4 =
new TGeoRotation(
"4rot");
1047 TGeoRotation* rot4a =
new TGeoRotation(
"4arot");
1048 rot4a->RotateX(-90);
1049 rot4a->RotateY(-55);
1050 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));
1052 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));
1054 TGeoRotation* rot5 =
new TGeoRotation(
"5rot");
1058 TGeoRotation* rot5a =
new TGeoRotation(
"5arot");
1059 rot5a->RotateX(-90);
1060 rot5a->RotateY(-75);
1063 new TGeoCombiTrans(origtrastruct + (486 + (597 - 50 - 60) / (2 * TMath::Tan(TMath::DegToRad() * 75))) * mm +
1064 tubeh / (2 * TMath::Sin(TMath::DegToRad() * 75)),
1065 -729 * mm, 0, rot5));
1068 new TGeoCombiTrans(origtrastruct - (486 + (597 - 50 - 60) / (2 * TMath::Tan(TMath::DegToRad() * 75))) * mm -
1069 tubeh / (2 * TMath::Sin(TMath::DegToRad() * 75)),
1070 -729 * mm, 0, rot5a));
1071 cradle->AddNode(six, 1,
1072 new TGeoCombiTrans(origtrastruct + 808 * mm + (480 * mm / 2) * TMath::Cos(TMath::DegToRad() * 55) +
1073 tubeh / (2 * TMath::Sin(TMath::DegToRad() * 55)) + 2.,
1074 -729 * mm, -
params[4] - 0.5, rot4a));
1075 cradle->AddNode(six, 2,
1076 new TGeoCombiTrans(origtrastruct - 808 * mm - (480 * mm / 2) * TMath::Cos(TMath::DegToRad() * 55) -
1077 tubeh / (2 * TMath::Sin(TMath::DegToRad() * 55)) - 2.,
1078 -729 * mm, -
params[4] - 0.5, rot4));
1080 TGeoRotation* rot7 =
new TGeoRotation(
"7rot");
1084 TGeoRotation* rot7a =
new TGeoRotation(
"7arot");
1085 rot7a->RotateX(-90);
1086 rot7a->RotateY(130);
1089 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));
1091 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));
1092 TGeoRotation* rot8 =
new TGeoRotation(
"8rot");
1095 TGeoRotation* rot8a =
new TGeoRotation(
"8arot");
1096 rot8a->RotateX(-90);
1097 rot8a->RotateY(-25);
1098 rot8a->RotateZ(180);
1100 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));
1102 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));
1103 TGeoRotation* rot9 =
new TGeoRotation(
"9rot");
1106 TGeoRotation* rot9a =
new TGeoRotation(
"9arot");
1107 rot9a->RotateX(-90);
1108 rot9a->RotateY(-90);
1109 rot9a->RotateZ(180);
1110 cradle->AddNode(nine, 1,
new TGeoCombiTrans(origtrastruct + 1960 * mm + 2.5 + 3., -729. * mm, -20., rot9));
1111 cradle->AddNode(nine, 2,
new TGeoCombiTrans(origtrastruct - 1960 * mm - 2.5 - 3., -729. * mm, -20., rot9a));
1113 TGeoRotation* rot10 =
new TGeoRotation(
"10rot");
1114 rot10->RotateX(-90);
1115 rot10->RotateY(-120);
1116 TGeoRotation* rot10a =
new TGeoRotation(
"10arot");
1117 rot10a->RotateX(-90);
1118 rot10a->RotateY(-120);
1119 rot10a->RotateZ(180);
1122 ten, 1,
new TGeoCombiTrans(origtrastruct + 1738 * mm + tubeh / (2 * TMath::Sin(TMath::DegToRad() * 60)) - 2, +729. * mm, -13., rot10));
1124 ten, 2,
new TGeoCombiTrans(origtrastruct - 1738 * mm - tubeh / (2 * TMath::Sin(TMath::DegToRad() * 60)) + 2, +729. * mm, -13., rot10a));
1126 TGeoRotation* rot11 =
new TGeoRotation(
"11rot");
1127 rot11->RotateX(-90);
1129 TGeoRotation* rot11a =
new TGeoRotation(
"11arot");
1130 rot11a->RotateX(-90);
1131 rot11a->RotateY(50);
1132 rot11a->RotateZ(180);
1133 cradle->AddNode(eleven, 1,
new TGeoCombiTrans(origtrastruct - 1738 * mm - tubeh / (2 * TMath::Sin(TMath::DegToRad() * 60)) + 352. * mm, +729. * mm, -12.7, rot11));
1134 cradle->AddNode(eleven, 2,
new TGeoCombiTrans(origtrastruct + 1738 * mm + tubeh / (2 * TMath::Sin(TMath::DegToRad() * 60)) - 352. * mm, +729. * mm, -12.7, rot11a));
1136 TGeoRotation* rot12 =
new TGeoRotation(
"12rot");
1137 rot12->RotateX(-90);
1138 rot12->RotateY(-120);
1139 TGeoRotation* rot12a =
new TGeoRotation(
"12arot");
1140 rot12a->RotateX(-90);
1141 rot12a->RotateY(-120);
1142 rot12a->RotateZ(180);
1143 cradle->AddNode(twelve, 1,
new TGeoCombiTrans(origtrastruct + 1065 * mm, +729. * mm, 1., rot12));
1144 cradle->AddNode(twelve, 2,
new TGeoCombiTrans(origtrastruct - 1065 * mm, +729. * mm, 1., rot12a));
1146 TGeoRotation* rot13 =
new TGeoRotation(
"13rot");
1147 rot13->RotateX(-90);
1148 rot13->RotateY(-43);
1149 rot13->RotateZ(180);
1150 TGeoRotation* rot13a =
new TGeoRotation(
"13arot");
1151 rot13a->RotateX(-90);
1152 rot13a->RotateY(-43);
1153 cradle->AddNode(thirteen, 1,
new TGeoCombiTrans(origtrastruct + 572 * mm - 18., +729. * mm, -1.5, rot13));
1154 cradle->AddNode(thirteen, 2,
new TGeoCombiTrans(origtrastruct - 572 * mm + 18., +729. * mm, -1.5, rot13a));
1157 TGeoRotation* vrot =
new TGeoRotation(
"vertbox");
1160 cradle->AddNode(vboxlast, 1,
new TGeoCombiTrans(-6037 * mm / 2 + 50. * mm / 2, 0., 0.5,
1163 cradle->AddNode(vbox, 2,
new TGeoCombiTrans(-6037 * mm / 2 + 50. * mm / 2 + 990. * mm, 0., 0.5, vrot));
1164 cradle->AddNode(cfourteen, 2,
new TGeoCombiTrans(-6037 * mm / 2 + 50. * mm / 2 + 990. * mm, 0., -477. * mm / 2 - 20. * mm / 2, vrot));
1167 vbox, 3,
new TGeoCombiTrans(origtrastruct - (1641.36 * mm +
params[7]) / 2. + 50. * mm / 2. + 3, 0., 0.5, vrot));
1168 cradle->AddNode(cfourteen, 3,
1169 new TGeoCombiTrans(origtrastruct - (1641.36 * mm +
params[7]) / 2. + 50. * mm / 2. + 3, 0.,
1170 -477. * mm / 2 - 20. * mm / 2, vrot));
1173 vbox, 4,
new TGeoCombiTrans(origtrastruct + (1641.36 * mm +
params[7]) / 2. - 50. * mm / 2. - 3, 0., 0.5, vrot));
1174 cradle->AddNode(cfourteen, 4,
1175 new TGeoCombiTrans(origtrastruct + (1641.36 * mm +
params[7]) / 2. - 50. * mm / 2. - 3, 0.,
1176 -477. * mm / 2 - 20. * mm / 2, vrot));