214 const TString geoDetectorName =
"VacuumPipe_section1";
215 const TString geoDetectorVersion =
"Run8";
216 const TString geoFileName = gPath +
"/geometry/" + geoDetectorName +
"_" + geoDetectorVersion +
".root";
219 FairGeoLoader* geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
220 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
223 TString medFile = gPath +
"/geometry/media.geo";
224 geoFace->setMediaFile(medFile);
225 geoFace->readMedia();
226 FairGeoMedia* geoMedia = geoFace->getMedia();
227 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
234 gGeoMan->SetName(geoDetectorName +
"_geom");
348 VacuumPipe_section1->
AddNode(module_compensator, 0, module_compensator_transform);
349 VacuumPipe_section1->
AddNode(module_profilometer2, 0, module_profilometer2_transform);
350 VacuumPipe_section1->
AddNode(module_sitracker3, 0, module_sitracker3_transform);
351 VacuumPipe_section1->
AddNode(module_BC2, 0, module_BC2_transform);
352 VacuumPipe_section1->
AddNode(module_VC, 0, module_VC_transform);
353 VacuumPipe_section1->
AddNode(module_box7, 0, module_box7_transform);
354 VacuumPipe_section1->
AddNode(module_bellows1, 0, module_bellows1_transform);
355 VacuumPipe_section1->
AddNode(module_box6, 0, module_box6_transform);
356 VacuumPipe_section1->
AddNode(module_box5, 0, module_box5_transform);
357 VacuumPipe_section1->
AddNode(module_bellows2, 0, module_bellows2_transform);
358 VacuumPipe_section1->
AddNode(module_sitracker2, 0, module_sitracker2_transform);
359 VacuumPipe_section1->
AddNode(module_profilometer1, 0, module_profilometer1_transform);
360 VacuumPipe_section1->
AddNode(module_sitracker1, 0, module_sitracker1_transform);
361 VacuumPipe_section1->
AddNode(module_bellows3, 0, module_bellows3_transform);
362 VacuumPipe_section1->
AddNode(module_box4, 0, module_box4_transform);
363 VacuumPipe_section1->
AddNode(module_box3_long, 0, module_box3_long_transform);
364 VacuumPipe_section1->
AddNode(module_box2, 0, module_box2_transform);
365 VacuumPipe_section1->
AddNode(module_BC1, 0, module_BC1_transform);
366 VacuumPipe_section1->
AddNode(module_box1, 0, module_box1_transform);
367 VacuumPipe_section1->
AddNode(module_bellows4, 0, module_bellows4_transform);
369 top->
AddNode(VacuumPipe_section1, 0);
374 gGeoMan->CheckOverlaps(0.0001);
379 TFile* geoFile =
new TFile(geoFileName,
"RECREATE");
395 Double_t flangeRadius1 = 24.0 * 0.5;
399 Double_t flangeRadius2 = 24.0 * 0.5;
405 new TGeoTube(
TString(
"vacTube1S") +=
TString(
"_") + module_name, innerRadius1, outerRadius1, length1 * 0.5);
407 new TGeoTube(
TString(
"vacTube2S") +=
TString(
"_") + module_name, innerRadius2, outerRadius2, length2 * 0.5);
411 new TGeoTube(
TString(
"vacTube2VacuumS") +=
TString(
"_") + module_name, 0.0, innerRadius2, length2_vac * 0.5);
413 flangeRadius1, flangeThickness * 0.5);
415 flangeRadius2, flangeThickness * 0.5);
432 if (vacTubeV_medium) {
435 vacTubeFlange1V->
SetMedium(vacTubeV_medium);
436 vacTubeFlange2V->
SetMedium(vacTubeV_medium);
438 Fatal(
"Main",
"Invalid medium for vacTubeV!");
441 if (vacTubeVacuum_medium) {
442 vacTube1VacuumV->
SetMedium(vacTubeVacuum_medium);
443 vacTube2VacuumV->
SetMedium(vacTubeVacuum_medium);
445 Fatal(
"Main",
"Invalid medium for vacTubeV!");
458 vacTube1V_transf[0]->
SetTranslation(0.0, 0.0, +length1 * 0.5 - (length1 + length2) * 0.5);
462 vacTube2V_transf[0]->
SetTranslation(0.0, 0.0, -length2 * 0.5 + (length1 + length2) * 0.5);
467 0.0, 0.0, -length2 * 0.5 + (length1 + length2) * 0.5 - (length2 - length2_vac) * 0.5);
471 vacTubeFlange1V_transf[0]->
SetTranslation(0.0, 0.0, -(length1 + length2) * 0.5 + flangeThickness * 0.5);
474 vacTubeFlange2V_transf[0]->
SetTranslation(0.0, 0.0, +(length1 + length2) * 0.5 - flangeThickness * 0.5);
476 vacTubeBoxV->
AddNode(vacTube1V, 0, vacTube1V_transf[0]);
477 vacTubeBoxV->
AddNode(vacTube2V, 0, vacTube2V_transf[0]);
478 vacTubeBoxV->
AddNode(vacTube1VacuumV, 0, vacTube1V_transf[0]);
479 vacTubeBoxV->
AddNode(vacTube2VacuumV, 0, vacTubeVacuum2V_transf[0]);
480 vacTubeBoxV->
AddNode(vacTubeFlange1V, 0, vacTubeFlange1V_transf[0]);
481 vacTubeBoxV->
AddNode(vacTubeFlange2V, 0, vacTubeFlange2V_transf[0]);
495 Double_t flangeRadius1 = 24.0 * 0.5;
499 Double_t flangeRadius2 = 18.0 * 0.5;
505 new TGeoTube(
TString(
"vacTubeS") +=
TString(
"_") + module_name, innerRadius1, outerRadius1, length1 * 0.5);
514 new TGeoTube(
TString(
"sideTubeS") +=
TString(
"_") + module_name, innerRadius2, outerRadius2, length2 * 0.5);
519 flangeRadius1, flangeThickness * 0.5);
521 flangeRadius2, flangeThickness * 0.5);
525 vacTubeHole_transf->
RotateY(90.0);
526 vacTubeHole_transf->
SetDx(-length2 * 0.5);
527 vacTubeHole_transf->
SetDy(0.0);
528 vacTubeHole_transf->
SetDz(0.0);
534 TString expression =
"vacTubeS";
535 expression +=
TString(
"_") + module_name;
536 expression +=
"-vacTubeHoleS";
537 expression +=
TString(
"_") + module_name;
538 expression +=
":vacTubeHole_transf";
539 expression +=
TString(
"_") + module_name;
540 vacTubeWithHoleS->
MakeNode(expression);
546 sideTube_transf->
RotateY(90.0);
553 TString expression =
"sideTubeS";
554 expression +=
TString(
"_") + module_name;
555 expression +=
":sideTube_transf";
556 expression +=
TString(
"_") + module_name;
557 expression +=
"-sideTubeCutS";
558 expression +=
TString(
"_") + module_name;
559 sideTubeWithCutS->
MakeNode(expression);
571 TString expression =
"vacTubeVacuumS";
572 expression +=
TString(
"_") + module_name;
573 expression +=
"-vacTubeVacuumGapS";
574 expression +=
TString(
"_") + module_name;
575 expression +=
":vacTubeVacuumGap_transf";
576 expression +=
TString(
"_") + module_name;
577 vacTubeVacuumWithGapS->
MakeNode(expression);
596 TGeoMedium* vacTubeWithHoleV_medium =
nullptr;
597 if (module_name.
Contains(
"Profilometer1"))
599 if (module_name.
Contains(
"Profilometer2"))
601 if (vacTubeWithHoleV_medium) {
602 vacTubeWithHoleV->
SetMedium(vacTubeWithHoleV_medium);
603 sideTubeWithCutV->
SetMedium(vacTubeWithHoleV_medium);
604 vacTubeFlangeV->
SetMedium(vacTubeWithHoleV_medium);
605 sideTubeFlangeV->
SetMedium(vacTubeWithHoleV_medium);
607 Fatal(
"Main",
"Invalid medium for vacTubeWithHoleV!");
622 vacTubeFlangeV_transf[0]->
SetTranslation(0.0, 0.0, -length1 * 0.5 + flangeThickness * 0.5);
625 vacTubeFlangeV_transf[1]->
SetTranslation(0.0, 0.0, +length1 * 0.5 - flangeThickness * 0.5);
630 sideTubeFlangeV_transf[0]->
RotateY(90.0);
631 sideTubeFlangeV_transf[0]->
SetTranslation(-length2 + flangeThickness * 0.5, 0.0, 0.0);
636 vacTubeBoxV->
AddNode(vacTubeFlangeV, 0, vacTubeFlangeV_transf[0]);
637 vacTubeBoxV->
AddNode(vacTubeFlangeV, 1, vacTubeFlangeV_transf[1]);
638 vacTubeBoxV->
AddNode(sideTubeFlangeV, 0, sideTubeFlangeV_transf[0]);
652 Double_t flangeRadius1 = 24.0 * 0.5;
656 Double_t flangeRadius2 = 18.0 * 0.5;
662 new TGeoTube(
TString(
"vacTubeS") +=
TString(
"_") + module_name, innerRadius1, outerRadius1, length1 * 0.5);
671 new TGeoTube(
TString(
"sideTubeS") +=
TString(
"_") + module_name, innerRadius2, outerRadius2, length2 * 0.5);
676 flangeRadius1, flangeThickness * 0.5);
678 flangeRadius2, flangeThickness * 0.5);
682 vacTubeHole_transf->
RotateY(90.0);
683 vacTubeHole_transf->
SetDx(-length2);
684 vacTubeHole_transf->
SetDy(0.0);
685 vacTubeHole_transf->
SetDz(0.0);
691 TString expression =
"vacTubeS";
692 expression +=
TString(
"_") + module_name;
693 expression +=
"-vacTubeHoleS";
694 expression +=
TString(
"_") + module_name;
695 expression +=
":vacTubeHole_transf";
696 expression +=
TString(
"_") + module_name;
697 vacTubeWithHoleS->
MakeNode(expression);
703 sideTube_transf->
RotateY(90.0);
710 TString expression =
"sideTubeS";
711 expression +=
TString(
"_") + module_name;
712 expression +=
":sideTube_transf";
713 expression +=
TString(
"_") + module_name;
714 expression +=
"-sideTubeCutS";
715 expression +=
TString(
"_") + module_name;
716 sideTubeWithCutS->
MakeNode(expression);
728 TString expression =
"vacTubeVacuumS";
729 expression +=
TString(
"_") + module_name;
730 expression +=
"-vacTubeVacuumGapS";
731 expression +=
TString(
"_") + module_name;
732 expression +=
":vacTubeVacuumGap_transf";
733 expression +=
TString(
"_") + module_name;
734 vacTubeVacuumWithGapS->
MakeNode(expression);
753 TGeoMedium* vacTubeWithHoleV_medium =
nullptr;
754 if (module_name.
Contains(
"SiTracker1"))
756 if (module_name.
Contains(
"SiTracker2"))
758 if (module_name.
Contains(
"SiTracker3"))
760 if (vacTubeWithHoleV_medium) {
761 vacTubeWithHoleV->
SetMedium(vacTubeWithHoleV_medium);
762 sideTubeWithCutV->
SetMedium(vacTubeWithHoleV_medium);
763 vacTubeFlangeV->
SetMedium(vacTubeWithHoleV_medium);
764 sideTubeFlangeV->
SetMedium(vacTubeWithHoleV_medium);
766 Fatal(
"Main",
"Invalid medium for vacTubeWithHoleV!");
781 vacTubeFlangeV_transf[0]->
SetTranslation(0.0, 0.0, -length1 * 0.5 + flangeThickness * 0.5);
784 vacTubeFlangeV_transf[1]->
SetTranslation(0.0, 0.0, +length1 * 0.5 - flangeThickness * 0.5);
789 sideTubeFlangeV_transf[0]->
RotateY(90.0);
790 sideTubeFlangeV_transf[0]->
SetTranslation(-length2 + flangeThickness * 0.5, 0.0, 0.0);
795 vacTubeBoxV->
AddNode(vacTubeFlangeV, 0, vacTubeFlangeV_transf[0]);
796 vacTubeBoxV->
AddNode(vacTubeFlangeV, 1, vacTubeFlangeV_transf[1]);
797 vacTubeBoxV->
AddNode(sideTubeFlangeV, 0, sideTubeFlangeV_transf[0]);
811 Double_t flangeRadius1 = 24.0 * 0.5;
815 Double_t flangeRadius2 = 13.0 * 0.5;
821 new TGeoTube(
TString(
"vacTubeS") +=
TString(
"_") + module_name, innerRadius1, outerRadius1, length1 * 0.5);
828 new TGeoTube(
TString(
"sideTubeS") +=
TString(
"_") + module_name, innerRadius2, outerRadius2, length2 * 0.5);
833 flangeRadius1, flangeThickness * 0.5);
835 flangeRadius2, flangeThickness * 0.5);
839 vacTubeHole_transf1->
RotateY(90.0);
840 vacTubeHole_transf1->
SetDx(-length2);
841 vacTubeHole_transf1->
SetDy(0.0);
842 vacTubeHole_transf1->
SetDz(0.0);
847 vacTubeHole_transf2->
RotateY(90.0);
848 vacTubeHole_transf2->
SetDx(+length2);
849 vacTubeHole_transf2->
SetDy(0.0);
850 vacTubeHole_transf2->
SetDz(0.0);
855 vacTubeHole_transf3->
RotateY(90.0);
856 vacTubeHole_transf3->
RotateZ(90.0);
857 vacTubeHole_transf3->
SetDx(0.0);
858 vacTubeHole_transf3->
SetDy(+length2);
859 vacTubeHole_transf3->
SetDz(0.0);
864 vacTubeHole_transf4->
RotateY(90.0);
865 vacTubeHole_transf4->
RotateZ(90.0);
866 vacTubeHole_transf4->
SetDx(0.0);
867 vacTubeHole_transf4->
SetDy(-length2);
868 vacTubeHole_transf4->
SetDz(0.0);
874 TString expression =
"vacTubeS";
875 expression +=
TString(
"_") + module_name;
876 expression +=
"-vacTubeHoleS";
877 expression +=
TString(
"_") + module_name;
878 expression +=
":vacTubeHole_transf1";
879 expression +=
TString(
"_") + module_name;
880 expression +=
"-vacTubeHoleS";
881 expression +=
TString(
"_") + module_name;
882 expression +=
":vacTubeHole_transf2";
883 expression +=
TString(
"_") + module_name;
884 expression +=
"-vacTubeHoleS";
885 expression +=
TString(
"_") + module_name;
886 expression +=
":vacTubeHole_transf3";
887 expression +=
TString(
"_") + module_name;
888 expression +=
"-vacTubeHoleS";
889 expression +=
TString(
"_") + module_name;
890 expression +=
":vacTubeHole_transf4";
891 expression +=
TString(
"_") + module_name;
892 vacTubeWithHoleS->
MakeNode(expression);
898 sideTube_transf->
RotateY(90.0);
905 TString expression =
"sideTubeS";
906 expression +=
TString(
"_") + module_name;
907 expression +=
":sideTube_transf";
908 expression +=
TString(
"_") + module_name;
909 expression +=
"-sideTubeCutS";
910 expression +=
TString(
"_") + module_name;
911 sideTubeWithCutS->
MakeNode(expression);
930 TGeoMedium* vacTubeWithHoleV_medium =
nullptr;
939 if (vacTubeWithHoleV_medium) {
940 vacTubeWithHoleV->
SetMedium(vacTubeWithHoleV_medium);
941 sideTubeWithCutV->
SetMedium(vacTubeWithHoleV_medium);
942 vacTubeFlangeV->
SetMedium(vacTubeWithHoleV_medium);
943 sideTubeFlangeV->
SetMedium(vacTubeWithHoleV_medium);
945 Fatal(
"Main",
"Invalid medium for vacTubeWithHoleV!");
961 sideTubeWithCutV_transf[1]->
RotateZ(180.0);
964 sideTubeWithCutV_transf[2]->
RotateZ(90.0);
967 sideTubeWithCutV_transf[3]->
RotateZ(-90.0);
972 vacTubeFlangeV_transf[0]->
SetTranslation(0.0, 0.0, -length1 * 0.5 + flangeThickness * 0.5);
974 vacTubeFlangeV_transf[1]->
SetTranslation(0.0, 0.0, +length1 * 0.5 - flangeThickness * 0.5);
978 sideTubeFlangeV_transf[0]->
RotateY(90.0);
979 sideTubeFlangeV_transf[0]->
SetTranslation(-length2 + flangeThickness * 0.5, 0.0, 0.0);
981 sideTubeFlangeV_transf[1]->
RotateY(90.0);
982 sideTubeFlangeV_transf[1]->
SetTranslation(+length2 - flangeThickness * 0.5, 0.0, 0.0);
984 sideTubeFlangeV_transf[2]->
RotateY(90.0);
985 sideTubeFlangeV_transf[2]->
SetTranslation(-length2 + flangeThickness * 0.5, 0.0, 0.0);
986 sideTubeFlangeV_transf[2]->
RotateZ(90.0);
988 sideTubeFlangeV_transf[3]->
RotateY(90.0);
989 sideTubeFlangeV_transf[3]->
SetTranslation(-length2 + flangeThickness * 0.5, 0.0, 0.0);
990 sideTubeFlangeV_transf[3]->
RotateZ(-90.0);
995 vacTubeBoxV->
AddNode(sideTubeWithCutV, 0, sideTubeWithCutV_transf[0]);
996 vacTubeBoxV->
AddNode(sideTubeWithCutV, 1, sideTubeWithCutV_transf[1]);
997 vacTubeBoxV->
AddNode(sideTubeWithCutV, 2, sideTubeWithCutV_transf[2]);
998 vacTubeBoxV->
AddNode(sideTubeWithCutV, 3, sideTubeWithCutV_transf[3]);
1000 vacTubeBoxV->
AddNode(vacTubeFlangeV, 0, vacTubeFlangeV_transf[0]);
1001 vacTubeBoxV->
AddNode(vacTubeFlangeV, 1, vacTubeFlangeV_transf[1]);
1003 vacTubeBoxV->
AddNode(sideTubeFlangeV, 0, sideTubeFlangeV_transf[0]);
1004 vacTubeBoxV->
AddNode(sideTubeFlangeV, 1, sideTubeFlangeV_transf[1]);
1005 vacTubeBoxV->
AddNode(sideTubeFlangeV, 2, sideTubeFlangeV_transf[2]);
1006 vacTubeBoxV->
AddNode(sideTubeFlangeV, 3, sideTubeFlangeV_transf[3]);
1022 Double_t flangeRadius = 24.0 * 0.5;
1032 flangeRadius, flangeThickness * 0.5);
1044 if (vacTubeV_medium) {
1046 vacTubeFlangeV->
SetMedium(vacTubeV_medium);
1048 Fatal(
"Main",
"Invalid medium for vacTubeV!");
1064 vacTubeFlangeV_transf[0]->
SetTranslation(0.0, 0.0, -length * 0.5 + flangeThickness * 0.5);
1066 vacTubeFlangeV_transf[1]->
SetTranslation(0.0, 0.0, +length * 0.5 - flangeThickness * 0.5);
1068 vacTubeBoxV->
AddNode(vacTubeV, 0, vacTubeV_transf[0]);
1069 vacTubeBoxV->
AddNode(vacTubeVacuumV, 0, vacTubeV_transf[0]);
1070 vacTubeBoxV->
AddNode(vacTubeFlangeV, 0, vacTubeFlangeV_transf[0]);
1071 vacTubeBoxV->
AddNode(vacTubeFlangeV, 1, vacTubeFlangeV_transf[1]);
1084 Double_t flangeRadius = 24.0 * 0.5;
1094 flangeRadius, flangeThickness * 0.5);
1106 if (vacTubeV_medium) {
1108 vacTubeFlangeV->
SetMedium(vacTubeV_medium);
1110 Fatal(
"Main",
"Invalid medium for vacTubeV!");
1126 vacTubeFlangeV_transf[0]->
SetTranslation(0.0, 0.0, -length * 0.5 + flangeThickness * 0.5);
1128 vacTubeFlangeV_transf[1]->
SetTranslation(0.0, 0.0, +length * 0.5 - flangeThickness * 0.5);
1130 vacTubeBoxV->
AddNode(vacTubeV, 0, vacTubeV_transf[0]);
1131 vacTubeBoxV->
AddNode(vacTubeVacuumV, 0, vacTubeV_transf[0]);
1132 vacTubeBoxV->
AddNode(vacTubeFlangeV, 0, vacTubeFlangeV_transf[0]);
1133 vacTubeBoxV->
AddNode(vacTubeFlangeV, 1, vacTubeFlangeV_transf[1]);