219 const TString geoDetectorName =
"VacuumPipe_section1";
220 const TString geoDetectorVersion =
"Run9";
221 const TString geoFileName = gPath +
"/geometry/" + geoDetectorName +
"_" + geoDetectorVersion +
".root";
224 FairGeoLoader* geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
225 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
228 TString medFile = gPath +
"/geometry/media.geo";
229 geoFace->setMediaFile(medFile);
230 geoFace->readMedia();
231 FairGeoMedia* geoMedia = geoFace->getMedia();
232 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
239 gGeoMan->SetName(geoDetectorName +
"_geom");
363 VacuumPipe_section1->
AddNode(module_compensator, 0, module_compensator_transform);
364 VacuumPipe_section1->
AddNode(module_BC2, 0, module_BC2_transform);
365 VacuumPipe_section1->
AddNode(module_sitracker3, 0, module_sitracker3_transform);
366 VacuumPipe_section1->
AddNode(module_profilometer2, 0, module_profilometer2_transform);
367 VacuumPipe_section1->
AddNode(module_VC, 0, module_VC_transform);
368 VacuumPipe_section1->
AddNode(module_box8, 0, module_box8_transform);
369 VacuumPipe_section1->
AddNode(module_bellows1, 0, module_bellows1_transform);
370 VacuumPipe_section1->
AddNode(module_sitracker2, 0, module_sitracker2_transform);
371 VacuumPipe_section1->
AddNode(module_box7, 0, module_box7_transform);
372 VacuumPipe_section1->
AddNode(module_bellows2, 0, module_bellows2_transform);
373 VacuumPipe_section1->
AddNode(module_box6, 0, module_box6_transform);
374 VacuumPipe_section1->
AddNode(module_prof2, 0, module_prof2_transform);
375 VacuumPipe_section1->
AddNode(module_sitracker1, 0, module_sitracker1_transform);
376 VacuumPipe_section1->
AddNode(module_profilometer1, 0, module_profilometer1_transform);
377 VacuumPipe_section1->
AddNode(module_bellows3, 0, module_bellows3_transform);
378 VacuumPipe_section1->
AddNode(module_box5, 0, module_box5_transform);
379 VacuumPipe_section1->
AddNode(module_box4, 0, module_box4_transform);
380 VacuumPipe_section1->
AddNode(module_box3, 0, module_box3_transform);
381 VacuumPipe_section1->
AddNode(module_box2, 0, module_box2_transform);
382 VacuumPipe_section1->
AddNode(module_BC1, 0, module_BC1_transform);
383 VacuumPipe_section1->
AddNode(module_box1, 0, module_box1_transform);
384 VacuumPipe_section1->
AddNode(module_bellows4, 0, module_bellows4_transform);
386 top->
AddNode(VacuumPipe_section1, 0);
391 gGeoMan->CheckOverlaps(0.0001);
396 TFile* geoFile =
new TFile(geoFileName,
"RECREATE");
412 Double_t flangeRadius1 = 24.0 * 0.5;
416 Double_t flangeRadius2 = 24.0 * 0.5;
422 new TGeoTube(
TString(
"vacTube1S") +=
TString(
"_") + module_name, innerRadius1, outerRadius1, length1 * 0.5);
424 new TGeoTube(
TString(
"vacTube2S") +=
TString(
"_") + module_name, innerRadius2, outerRadius2, length2 * 0.5);
428 new TGeoTube(
TString(
"vacTube2VacuumS") +=
TString(
"_") + module_name, 0.0, innerRadius2, length2_vac * 0.5);
430 flangeRadius1, flangeThickness * 0.5);
432 flangeRadius2, flangeThickness * 0.5);
449 if (vacTubeV_medium) {
452 vacTubeFlange1V->
SetMedium(vacTubeV_medium);
453 vacTubeFlange2V->
SetMedium(vacTubeV_medium);
455 Fatal(
"Main",
"Invalid medium for vacTubeV!");
458 if (vacTubeVacuum_medium) {
459 vacTube1VacuumV->
SetMedium(vacTubeVacuum_medium);
460 vacTube2VacuumV->
SetMedium(vacTubeVacuum_medium);
462 Fatal(
"Main",
"Invalid medium for vacTubeV!");
475 vacTube1V_transf[0]->
SetTranslation(0.0, 0.0, +length1 * 0.5 - (length1 + length2) * 0.5);
479 vacTube2V_transf[0]->
SetTranslation(0.0, 0.0, -length2 * 0.5 + (length1 + length2) * 0.5);
484 0.0, 0.0, -length2 * 0.5 + (length1 + length2) * 0.5 - (length2 - length2_vac) * 0.5);
488 vacTubeFlange1V_transf[0]->
SetTranslation(0.0, 0.0, -(length1 + length2) * 0.5 + flangeThickness * 0.5);
491 vacTubeFlange2V_transf[0]->
SetTranslation(0.0, 0.0, +(length1 + length2) * 0.5 - flangeThickness * 0.5);
493 vacTubeBoxV->
AddNode(vacTube1V, 0, vacTube1V_transf[0]);
494 vacTubeBoxV->
AddNode(vacTube2V, 0, vacTube2V_transf[0]);
495 vacTubeBoxV->
AddNode(vacTube1VacuumV, 0, vacTube1V_transf[0]);
496 vacTubeBoxV->
AddNode(vacTube2VacuumV, 0, vacTubeVacuum2V_transf[0]);
497 vacTubeBoxV->
AddNode(vacTubeFlange1V, 0, vacTubeFlange1V_transf[0]);
498 vacTubeBoxV->
AddNode(vacTubeFlange2V, 0, vacTubeFlange2V_transf[0]);
512 Double_t flangeRadius1 = 24.0 * 0.5;
516 Double_t flangeRadius2 = 18.0 * 0.5;
521 if (module_name.
Contains(
"Profilometer2"))
522 vacuumGapZShift = +0.241;
526 new TGeoTube(
TString(
"vacTubeS") +=
TString(
"_") + module_name, innerRadius1, outerRadius1, length1 * 0.5);
535 new TGeoTube(
TString(
"sideTubeS") +=
TString(
"_") + module_name, innerRadius2, outerRadius2, length2 * 0.5);
540 flangeRadius1, flangeThickness * 0.5);
542 flangeRadius2, flangeThickness * 0.5);
546 vacTubeHole_transf->
RotateY(90.0);
547 vacTubeHole_transf->
SetDx(-length2 * 0.5);
548 vacTubeHole_transf->
SetDy(0.0);
549 vacTubeHole_transf->
SetDz(0.0);
555 TString expression =
"vacTubeS";
556 expression +=
TString(
"_") + module_name;
557 expression +=
"-vacTubeHoleS";
558 expression +=
TString(
"_") + module_name;
559 expression +=
":vacTubeHole_transf";
560 expression +=
TString(
"_") + module_name;
561 vacTubeWithHoleS->
MakeNode(expression);
567 sideTube_transf->
RotateY(90.0);
574 TString expression =
"sideTubeS";
575 expression +=
TString(
"_") + module_name;
576 expression +=
":sideTube_transf";
577 expression +=
TString(
"_") + module_name;
578 expression +=
"-sideTubeCutS";
579 expression +=
TString(
"_") + module_name;
580 sideTubeWithCutS->
MakeNode(expression);
586 vacTubeVacuumGap_transf->
SetTranslation(0.0, 0.0, +0.018 * 0.5 + vacuumGapZShift);
592 TString expression =
"vacTubeVacuumS";
593 expression +=
TString(
"_") + module_name;
594 expression +=
"-vacTubeVacuumGapS";
595 expression +=
TString(
"_") + module_name;
596 expression +=
":vacTubeVacuumGap_transf";
597 expression +=
TString(
"_") + module_name;
598 vacTubeVacuumWithGapS->
MakeNode(expression);
617 TGeoMedium* vacTubeWithHoleV_medium =
nullptr;
618 if (module_name.
Contains(
"Profilometer1"))
620 if (module_name.
Contains(
"Profilometer2"))
622 if (vacTubeWithHoleV_medium) {
623 vacTubeWithHoleV->
SetMedium(vacTubeWithHoleV_medium);
624 sideTubeWithCutV->
SetMedium(vacTubeWithHoleV_medium);
625 vacTubeFlangeV->
SetMedium(vacTubeWithHoleV_medium);
626 sideTubeFlangeV->
SetMedium(vacTubeWithHoleV_medium);
628 Fatal(
"Main",
"Invalid medium for vacTubeWithHoleV!");
643 vacTubeFlangeV_transf[0]->
SetTranslation(0.0, 0.0, -length1 * 0.5 + flangeThickness * 0.5);
646 vacTubeFlangeV_transf[1]->
SetTranslation(0.0, 0.0, +length1 * 0.5 - flangeThickness * 0.5);
651 sideTubeFlangeV_transf[0]->
RotateY(90.0);
652 sideTubeFlangeV_transf[0]->
SetTranslation(-length2 + flangeThickness * 0.5, 0.0, 0.0);
657 vacTubeBoxV->
AddNode(vacTubeFlangeV, 0, vacTubeFlangeV_transf[0]);
658 vacTubeBoxV->
AddNode(vacTubeFlangeV, 1, vacTubeFlangeV_transf[1]);
659 vacTubeBoxV->
AddNode(sideTubeFlangeV, 0, sideTubeFlangeV_transf[0]);
673 Double_t flangeRadius1 = 24.0 * 0.5;
677 Double_t flangeRadius2 = 18.0 * 0.5;
683 new TGeoTube(
TString(
"vacTubeS") +=
TString(
"_") + module_name, innerRadius1, outerRadius1, length1 * 0.5);
692 new TGeoTube(
TString(
"sideTubeS") +=
TString(
"_") + module_name, innerRadius2, outerRadius2, length2 * 0.5);
697 flangeRadius1, flangeThickness * 0.5);
699 flangeRadius2, flangeThickness * 0.5);
703 vacTubeHole_transf->
RotateY(90.0);
704 vacTubeHole_transf->
SetDx(-length2);
705 vacTubeHole_transf->
SetDy(0.0);
706 vacTubeHole_transf->
SetDz(0.0);
712 TString expression =
"vacTubeS";
713 expression +=
TString(
"_") + module_name;
714 expression +=
"-vacTubeHoleS";
715 expression +=
TString(
"_") + module_name;
716 expression +=
":vacTubeHole_transf";
717 expression +=
TString(
"_") + module_name;
718 vacTubeWithHoleS->
MakeNode(expression);
724 sideTube_transf->
RotateY(90.0);
731 TString expression =
"sideTubeS";
732 expression +=
TString(
"_") + module_name;
733 expression +=
":sideTube_transf";
734 expression +=
TString(
"_") + module_name;
735 expression +=
"-sideTubeCutS";
736 expression +=
TString(
"_") + module_name;
737 sideTubeWithCutS->
MakeNode(expression);
749 TString expression =
"vacTubeVacuumS";
750 expression +=
TString(
"_") + module_name;
751 expression +=
"-vacTubeVacuumGapS";
752 expression +=
TString(
"_") + module_name;
753 expression +=
":vacTubeVacuumGap_transf";
754 expression +=
TString(
"_") + module_name;
755 vacTubeVacuumWithGapS->
MakeNode(expression);
774 TGeoMedium* vacTubeWithHoleV_medium =
nullptr;
775 if (module_name.
Contains(
"SiTracker1"))
777 if (module_name.
Contains(
"SiTracker2"))
779 if (module_name.
Contains(
"SiTracker3"))
783 if (vacTubeWithHoleV_medium) {
784 vacTubeWithHoleV->
SetMedium(vacTubeWithHoleV_medium);
785 sideTubeWithCutV->
SetMedium(vacTubeWithHoleV_medium);
786 vacTubeFlangeV->
SetMedium(vacTubeWithHoleV_medium);
787 sideTubeFlangeV->
SetMedium(vacTubeWithHoleV_medium);
789 Fatal(
"Main",
"Invalid medium for vacTubeWithHoleV!");
804 vacTubeFlangeV_transf[0]->
SetTranslation(0.0, 0.0, -length1 * 0.5 + flangeThickness * 0.5);
807 vacTubeFlangeV_transf[1]->
SetTranslation(0.0, 0.0, +length1 * 0.5 - flangeThickness * 0.5);
812 sideTubeFlangeV_transf[0]->
RotateY(90.0);
813 sideTubeFlangeV_transf[0]->
SetTranslation(-length2 + flangeThickness * 0.5, 0.0, 0.0);
818 vacTubeBoxV->
AddNode(vacTubeFlangeV, 0, vacTubeFlangeV_transf[0]);
819 vacTubeBoxV->
AddNode(vacTubeFlangeV, 1, vacTubeFlangeV_transf[1]);
820 vacTubeBoxV->
AddNode(sideTubeFlangeV, 0, sideTubeFlangeV_transf[0]);
834 Double_t flangeRadius1 = 24.0 * 0.5;
838 Double_t flangeRadius2 = 13.0 * 0.5;
844 new TGeoTube(
TString(
"vacTubeS") +=
TString(
"_") + module_name, innerRadius1, outerRadius1, length1 * 0.5);
851 new TGeoTube(
TString(
"sideTubeS") +=
TString(
"_") + module_name, innerRadius2, outerRadius2, length2 * 0.5);
856 flangeRadius1, flangeThickness * 0.5);
858 flangeRadius2, flangeThickness * 0.5);
862 vacTubeHole_transf1->
RotateY(90.0);
863 vacTubeHole_transf1->
SetDx(-length2);
864 vacTubeHole_transf1->
SetDy(0.0);
865 vacTubeHole_transf1->
SetDz(0.0);
870 vacTubeHole_transf2->
RotateY(90.0);
871 vacTubeHole_transf2->
SetDx(+length2);
872 vacTubeHole_transf2->
SetDy(0.0);
873 vacTubeHole_transf2->
SetDz(0.0);
878 vacTubeHole_transf3->
RotateY(90.0);
879 vacTubeHole_transf3->
RotateZ(90.0);
880 vacTubeHole_transf3->
SetDx(0.0);
881 vacTubeHole_transf3->
SetDy(+length2);
882 vacTubeHole_transf3->
SetDz(0.0);
887 vacTubeHole_transf4->
RotateY(90.0);
888 vacTubeHole_transf4->
RotateZ(90.0);
889 vacTubeHole_transf4->
SetDx(0.0);
890 vacTubeHole_transf4->
SetDy(-length2);
891 vacTubeHole_transf4->
SetDz(0.0);
897 TString expression =
"vacTubeS";
898 expression +=
TString(
"_") + module_name;
899 expression +=
"-vacTubeHoleS";
900 expression +=
TString(
"_") + module_name;
901 expression +=
":vacTubeHole_transf1";
902 expression +=
TString(
"_") + module_name;
903 expression +=
"-vacTubeHoleS";
904 expression +=
TString(
"_") + module_name;
905 expression +=
":vacTubeHole_transf2";
906 expression +=
TString(
"_") + module_name;
907 expression +=
"-vacTubeHoleS";
908 expression +=
TString(
"_") + module_name;
909 expression +=
":vacTubeHole_transf3";
910 expression +=
TString(
"_") + module_name;
911 expression +=
"-vacTubeHoleS";
912 expression +=
TString(
"_") + module_name;
913 expression +=
":vacTubeHole_transf4";
914 expression +=
TString(
"_") + module_name;
915 vacTubeWithHoleS->
MakeNode(expression);
921 sideTube_transf->
RotateY(90.0);
928 TString expression =
"sideTubeS";
929 expression +=
TString(
"_") + module_name;
930 expression +=
":sideTube_transf";
931 expression +=
TString(
"_") + module_name;
932 expression +=
"-sideTubeCutS";
933 expression +=
TString(
"_") + module_name;
934 sideTubeWithCutS->
MakeNode(expression);
953 TGeoMedium* vacTubeWithHoleV_medium =
nullptr;
962 if (vacTubeWithHoleV_medium) {
963 vacTubeWithHoleV->
SetMedium(vacTubeWithHoleV_medium);
964 sideTubeWithCutV->
SetMedium(vacTubeWithHoleV_medium);
965 vacTubeFlangeV->
SetMedium(vacTubeWithHoleV_medium);
966 sideTubeFlangeV->
SetMedium(vacTubeWithHoleV_medium);
968 Fatal(
"Main",
"Invalid medium for vacTubeWithHoleV!");
984 sideTubeWithCutV_transf[1]->
RotateZ(180.0);
987 sideTubeWithCutV_transf[2]->
RotateZ(90.0);
990 sideTubeWithCutV_transf[3]->
RotateZ(-90.0);
995 vacTubeFlangeV_transf[0]->
SetTranslation(0.0, 0.0, -length1 * 0.5 + flangeThickness * 0.5);
997 vacTubeFlangeV_transf[1]->
SetTranslation(0.0, 0.0, +length1 * 0.5 - flangeThickness * 0.5);
1001 sideTubeFlangeV_transf[0]->
RotateY(90.0);
1002 sideTubeFlangeV_transf[0]->
SetTranslation(-length2 + flangeThickness * 0.5, 0.0, 0.0);
1004 sideTubeFlangeV_transf[1]->
RotateY(90.0);
1005 sideTubeFlangeV_transf[1]->
SetTranslation(+length2 - flangeThickness * 0.5, 0.0, 0.0);
1007 sideTubeFlangeV_transf[2]->
RotateY(90.0);
1008 sideTubeFlangeV_transf[2]->
SetTranslation(-length2 + flangeThickness * 0.5, 0.0, 0.0);
1009 sideTubeFlangeV_transf[2]->
RotateZ(90.0);
1011 sideTubeFlangeV_transf[3]->
RotateY(90.0);
1012 sideTubeFlangeV_transf[3]->
SetTranslation(-length2 + flangeThickness * 0.5, 0.0, 0.0);
1013 sideTubeFlangeV_transf[3]->
RotateZ(-90.0);
1018 vacTubeBoxV->
AddNode(sideTubeWithCutV, 0, sideTubeWithCutV_transf[0]);
1019 vacTubeBoxV->
AddNode(sideTubeWithCutV, 1, sideTubeWithCutV_transf[1]);
1020 vacTubeBoxV->
AddNode(sideTubeWithCutV, 2, sideTubeWithCutV_transf[2]);
1021 vacTubeBoxV->
AddNode(sideTubeWithCutV, 3, sideTubeWithCutV_transf[3]);
1023 vacTubeBoxV->
AddNode(vacTubeFlangeV, 0, vacTubeFlangeV_transf[0]);
1024 vacTubeBoxV->
AddNode(vacTubeFlangeV, 1, vacTubeFlangeV_transf[1]);
1026 vacTubeBoxV->
AddNode(sideTubeFlangeV, 0, sideTubeFlangeV_transf[0]);
1027 vacTubeBoxV->
AddNode(sideTubeFlangeV, 1, sideTubeFlangeV_transf[1]);
1028 vacTubeBoxV->
AddNode(sideTubeFlangeV, 2, sideTubeFlangeV_transf[2]);
1029 vacTubeBoxV->
AddNode(sideTubeFlangeV, 3, sideTubeFlangeV_transf[3]);
1041 Double_t flangeRadius = 24.0 * 0.5;
1051 flangeRadius, flangeThickness * 0.5);
1063 if (vacTubeV_medium) {
1065 vacTubeFlangeV->
SetMedium(vacTubeV_medium);
1067 Fatal(
"Main",
"Invalid medium for vacTubeV!");
1083 vacTubeFlangeV_transf[0]->
SetTranslation(0.0, 0.0, -length * 0.5 + flangeThickness * 0.5);
1085 vacTubeFlangeV_transf[1]->
SetTranslation(0.0, 0.0, +length * 0.5 - flangeThickness * 0.5);
1087 vacTubeBoxV->
AddNode(vacTubeV, 0, vacTubeV_transf[0]);
1088 vacTubeBoxV->
AddNode(vacTubeVacuumV, 0, vacTubeV_transf[0]);
1089 vacTubeBoxV->
AddNode(vacTubeFlangeV, 0, vacTubeFlangeV_transf[0]);
1090 vacTubeBoxV->
AddNode(vacTubeFlangeV, 1, vacTubeFlangeV_transf[1]);
1103 Double_t flangeRadius = 24.0 * 0.5;
1113 flangeRadius, flangeThickness * 0.5);
1125 if (vacTubeV_medium) {
1127 vacTubeFlangeV->
SetMedium(vacTubeV_medium);
1129 Fatal(
"Main",
"Invalid medium for vacTubeV!");
1145 vacTubeFlangeV_transf[0]->
SetTranslation(0.0, 0.0, -length * 0.5 + flangeThickness * 0.5);
1147 vacTubeFlangeV_transf[1]->
SetTranslation(0.0, 0.0, +length * 0.5 - flangeThickness * 0.5);
1149 vacTubeBoxV->
AddNode(vacTubeV, 0, vacTubeV_transf[0]);
1150 vacTubeBoxV->
AddNode(vacTubeVacuumV, 0, vacTubeV_transf[0]);
1151 vacTubeBoxV->
AddNode(vacTubeFlangeV, 0, vacTubeFlangeV_transf[0]);
1152 vacTubeBoxV->
AddNode(vacTubeFlangeV, 1, vacTubeFlangeV_transf[1]);