365 const TString geoDetectorName =
"Silicon";
366 const TString geoDetectorVersion =
"Run8_3stations_detailed";
367 const TString geoFileName = gPath +
"/geometry/" + geoDetectorName +
"_" + geoDetectorVersion +
".root";
370 FairGeoLoader* geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
371 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
374 TString medFile = gPath +
"/geometry/media.geo";
375 geoFace->setMediaFile(medFile);
376 geoFace->readMedia();
377 FairGeoMedia* geoMedia = geoFace->getMedia();
378 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
389 gGeoMan->SetName(geoDetectorName +
"_geom");
413 for (
Int_t imodule = 0; imodule < NModules; ++imodule) {
425 modTransforms[imodule]->
RotateY(180.0);
432 modTransforms[imodule]->
RotateX(180.0);
469 station->
AddNode(modules[imodule], 0, modTransforms[imodule]);
470 station->
AddNode(moduleFrames[imodule], 0, modFrameTransform);
479 Double_t faceShild_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 8.6;
484 faceShildS->
SetName(
"faceShildS");
486 Double_t x_pos[8] = {faceShild_XSize * 0.5,
487 faceShild_XSize * 0.5,
488 -faceShild_XSize * 0.5,
489 -faceShild_XSize * 0.5,
494 Double_t y_pos[8] = {-faceShild_YSize * 0.5,
495 faceShild_YSize * 0.5,
496 faceShild_YSize * 0.5,
497 -faceShild_YSize * 0.5,
498 -faceShild_YSize * 0.5,
501 -faceShild_YSize * 0.5};
502 ((
TGeoXtru*)faceShildS)->DefinePolygon(8, x_pos, y_pos);
503 ((
TGeoXtru*)faceShildS)->DefineSection(0, -faceShild_ZSize * 0.5);
504 ((
TGeoXtru*)faceShildS)->DefineSection(1, +faceShild_ZSize * 0.5);
511 if (faceShildV_medium) {
512 faceShildV->
SetMedium(faceShildV_medium);
514 Fatal(
"Main",
"Invalid medium for faceShildV!");
523 faceShild_transf[0]->
SetDy(+faceShild_YSize * 0.5 - 0.95);
524 faceShild_transf[0]->
SetDz(+0.695 - 1.35
525 - faceShild_ZSize * 0.5 + 4.31 );
528 faceShild_transf[1]->
SetDy(+faceShild_YSize * 0.5 - 0.95);
529 faceShild_transf[1]->
SetDz(+0.695 + 1.35
530 + faceShild_ZSize * 0.5 + 4.31 );
533 faceShild_transf[2]->
RotateX(180.0);
534 faceShild_transf[2]->
SetDy(-faceShild_YSize * 0.5 + 0.95);
535 faceShild_transf[2]->
SetDz(+0.695 - 1.35
536 - faceShild_ZSize * 0.5 );
539 faceShild_transf[3]->
RotateX(180.0);
540 faceShild_transf[3]->
SetDy(-faceShild_YSize * 0.5 + 0.95);
541 faceShild_transf[3]->
SetDz(+0.695 + 1.35
542 + faceShild_ZSize * 0.5 );
544 frames->
AddNode(faceShildV, 0, faceShild_transf[0]);
545 frames->
AddNode(faceShildV, 1, faceShild_transf[1]);
546 frames->
AddNode(faceShildV, 2, faceShild_transf[2]);
547 frames->
AddNode(faceShildV, 3, faceShild_transf[3]);
556 new TGeoBBox(
"sideShieldS", sideShild_XSize * 0.5, sideShild_YSize * 0.5, sideShild_ZSize * 0.5);
563 if (sideShieldV_medium) {
564 sideShieldV->
SetMedium(sideShieldV_medium);
566 Fatal(
"Main",
"Invalid medium for sideShieldV!");
575 sideShild_transf[0]->
SetDx(+(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
576 sideShild_transf[0]->
SetDy(+faceShild_YSize * 0.5 - 0.95 + (sideShild_YSize - faceShild_YSize) * 0.5);
577 sideShild_transf[0]->
SetDz(+0.695 + 4.31 );
580 sideShild_transf[1]->
SetDx(-(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
581 sideShild_transf[1]->
SetDy(+faceShild_YSize * 0.5 - 0.95 + (sideShild_YSize - faceShild_YSize) * 0.5);
582 sideShild_transf[1]->
SetDz(+0.695 + 4.31 );
585 sideShild_transf[2]->
SetDx(+(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
586 sideShild_transf[2]->
SetDy(-faceShild_YSize * 0.5 + 0.95 - (sideShild_YSize - faceShild_YSize) * 0.5);
587 sideShild_transf[2]->
SetDz(+0.695 );
590 sideShild_transf[3]->
SetDx(-(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
591 sideShild_transf[3]->
SetDy(-faceShild_YSize * 0.5 + 0.95 - (sideShild_YSize - faceShild_YSize) * 0.5);
592 sideShild_transf[3]->
SetDz(+0.695 );
594 frames->
AddNode(sideShieldV, 0, sideShild_transf[0]);
595 frames->
AddNode(sideShieldV, 1, sideShild_transf[1]);
596 frames->
AddNode(sideShieldV, 2, sideShild_transf[2]);
597 frames->
AddNode(sideShieldV, 3, sideShild_transf[3]);
601 Double_t horizShild_XSize = faceShild_XSize * 0.5 - sideShild_XSize - 2.75 ;
606 new TGeoBBox(
"horizShieldS", horizShild_XSize * 0.5, horizShild_YSize * 0.5, horizShild_ZSize * 0.5);
613 if (horizShieldV_medium) {
614 horizShieldV->
SetMedium(horizShieldV_medium);
616 Fatal(
"Main",
"Invalid medium for horizShieldV!");
625 horizShild_transf[0]->
SetDx(+(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
626 horizShild_transf[0]->
SetDy(+(-0.95 + horizShild_YSize * 0.5));
627 horizShild_transf[0]->
SetDz(+0.695 + 4.31 );
630 horizShild_transf[1]->
SetDx(-(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
631 horizShild_transf[1]->
SetDy(+(-0.95 + horizShild_YSize * 0.5));
632 horizShild_transf[1]->
SetDz(+0.695 + 4.31 );
635 horizShild_transf[2]->
SetDx(+(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
636 horizShild_transf[2]->
SetDy(-(-0.95 + horizShild_YSize * 0.5));
637 horizShild_transf[2]->
SetDz(+0.695 );
640 horizShild_transf[3]->
SetDx(-(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
641 horizShild_transf[3]->
SetDy(-(-0.95 + horizShild_YSize * 0.5));
642 horizShild_transf[3]->
SetDz(+0.695 );
644 frames->
AddNode(horizShieldV, 0, horizShild_transf[0]);
645 frames->
AddNode(horizShieldV, 1, horizShild_transf[1]);
646 frames->
AddNode(horizShieldV, 2, horizShild_transf[2]);
647 frames->
AddNode(horizShieldV, 3, horizShild_transf[3]);
651 Double_t plankShild_XSize = faceShild_XSize;
656 new TGeoBBox(
"plankShieldS", plankShild_XSize * 0.5, plankShild_YSize * 0.5, plankShild_ZSize * 0.5);
663 if (plankShieldV_medium) {
664 plankShieldV->
SetMedium(plankShieldV_medium);
666 Fatal(
"Main",
"Invalid medium for plankShieldV!");
675 plankShild_transf[0]->
SetDx(0.0);
676 plankShild_transf[0]->
SetDy(+(-0.95 + faceShild_YSize) - 0.05);
677 plankShild_transf[0]->
SetDz(+0.695
678 - (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5)
682 plankShild_transf[1]->
SetDx(0.0);
683 plankShild_transf[1]->
SetDy(+(-0.95 + faceShild_YSize) - 0.05);
684 plankShild_transf[1]->
SetDz(+0.695
685 + (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5)
689 plankShild_transf[2]->
SetDx(0.0);
690 plankShild_transf[2]->
SetDy(-(-0.95 + faceShild_YSize) + 0.05);
691 plankShild_transf[2]->
SetDz(+0.695
692 - (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5));
695 plankShild_transf[3]->
SetDx(0.0);
696 plankShild_transf[3]->
SetDy(-(-0.95 + faceShild_YSize) + 0.05);
697 plankShild_transf[3]->
SetDz(+0.695
698 + (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5));
700 frames->
AddNode(plankShieldV, 0, plankShild_transf[0]);
701 frames->
AddNode(plankShieldV, 1, plankShild_transf[1]);
702 frames->
AddNode(plankShieldV, 2, plankShild_transf[2]);
703 frames->
AddNode(plankShieldV, 3, plankShild_transf[3]);
707 Double_t baseRailMainPart_XSize = faceShild_XSize + 3.4 * 2 ;
708 Double_t baseRailMainPart_YSize = 5.0;
709 Double_t baseRailMainPart_ZSize = 0.7;
711 cout <<
"baseRailMainPart_XSize = " << baseRailMainPart_XSize <<
"\n";
713 Double_t baseRailUpperPart_XSize = baseRailMainPart_XSize;
714 Double_t baseRailUpperPart_YSize = 1.0;
715 Double_t baseRailUpperPart_ZSize = 0.3;
717 Double_t baseRailLowerPart_XSize = baseRailMainPart_XSize - 8.8 ;
718 Double_t baseRailLowerPart_YSize = 0.7;
719 Double_t baseRailLowerPart_ZSize = 0.3;
723 baseRailMainPart_XSize * 0.5, baseRailMainPart_YSize * 0.5, baseRailMainPart_ZSize * 0.5);
726 baseRailUpperPart_XSize * 0.5, baseRailUpperPart_YSize * 0.5, baseRailUpperPart_ZSize * 0.5);
729 baseRailLowerPart_XSize * 0.5, baseRailLowerPart_YSize * 0.5, baseRailLowerPart_ZSize * 0.5);
733 baseRailUpperPart_pos->
SetDx(0.0);
734 baseRailUpperPart_pos->
SetDy(+(baseRailMainPart_YSize * 0.5 + baseRailUpperPart_YSize * 0.5));
735 baseRailUpperPart_pos->
SetDz(baseRailMainPart_ZSize * 0.5 - baseRailUpperPart_ZSize * 0.5);
740 baseRailLowerPart_pos->
SetDx(0.0);
741 baseRailLowerPart_pos->
SetDy(-(baseRailMainPart_YSize * 0.5 + baseRailLowerPart_YSize * 0.5));
742 baseRailLowerPart_pos->
SetDz(baseRailMainPart_ZSize * 0.5 - baseRailLowerPart_ZSize * 0.5);
748 TString expression =
"baseRailMainPartS";
750 expression +=
"+baseRailUpperPartS";
752 expression +=
":baseRailUpperPart_pos";
754 expression +=
"+baseRailLowerPartS";
756 expression +=
":baseRailLowerPart_pos";
766 if (baseRailV_medium) {
769 Fatal(
"Main",
"Invalid medium for baseRailV!");
778 baseRail_transf[0]->
RotateY(180.0);
779 baseRail_transf[0]->
SetDx(0.1);
780 baseRail_transf[0]->
SetDy(+(14.5 + baseRailMainPart_YSize * 0.5));
781 baseRail_transf[0]->
SetDz(+0.695
782 + (1.35 + faceShild_ZSize + baseRailMainPart_ZSize * 0.5
783 - baseRailLowerPart_ZSize)
788 baseRail_transf[1]->
SetDx(0.0);
789 baseRail_transf[1]->
SetDy(-(14.5 + baseRailMainPart_YSize * 0.5));
790 baseRail_transf[1]->
SetDz(+0.695
791 - (1.35 + faceShild_ZSize + baseRailMainPart_ZSize * 0.5
792 - baseRailLowerPart_ZSize));
794 frames->
AddNode(baseRailV, 0, baseRail_transf[0]);
795 frames->
AddNode(baseRailV, 1, baseRail_transf[1]);
799 Double_t backRailMainPart_XSize = faceShild_XSize + -0.3 * 2 ;
800 Double_t backRailMainPart_YSize = 3.0;
801 Double_t backRailMainPart_ZSize = 0.9;
803 Double_t backRailLowerPart_XSize = backRailMainPart_XSize - 1.4;
804 Double_t backRailLowerPart_YSize = 0.7;
805 Double_t backRailLowerPart_ZSize = 0.6;
807 Double_t backRailSidePart_XSize = 1.2;
808 Double_t backRailSidePart_YSize = 3.0;
809 Double_t backRailSidePart_ZSize = 1.62;
813 backRailMainPart_XSize * 0.5, backRailMainPart_YSize * 0.5, backRailMainPart_ZSize * 0.5);
816 backRailLowerPart_XSize * 0.5, backRailLowerPart_YSize * 0.5, backRailLowerPart_ZSize * 0.5);
819 backRailSidePart_XSize * 0.5, backRailSidePart_YSize * 0.5, backRailSidePart_ZSize * 0.5);
823 backRailLowerPart_pos->
SetDx(0.0);
824 backRailLowerPart_pos->
SetDy(-(backRailMainPart_YSize * 0.5 + backRailLowerPart_YSize * 0.5));
825 backRailLowerPart_pos->
SetDz(backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize * 0.5);
830 backRailSidePart1_pos->
SetDx(+(backRailMainPart_XSize * 0.5 - backRailSidePart_XSize * 0.5));
831 backRailSidePart1_pos->
SetDy(0.0);
832 backRailSidePart1_pos->
SetDz(backRailMainPart_ZSize * 0.5 + backRailSidePart_ZSize * 0.5);
837 backRailSidePart2_pos->
SetDx(-(backRailMainPart_XSize * 0.5 - backRailSidePart_XSize * 0.5));
838 backRailSidePart2_pos->
SetDy(0.0);
839 backRailSidePart2_pos->
SetDz(backRailMainPart_ZSize * 0.5 + backRailSidePart_ZSize * 0.5);
845 TString expression =
"backRailMainPartS";
847 expression +=
"+backRailLowerPartS";
849 expression +=
":backRailLowerPart_pos";
851 expression +=
"+backRailSidePartS";
853 expression +=
":backRailSidePart1_pos";
855 expression +=
"+backRailSidePartS";
857 expression +=
":backRailSidePart2_pos";
867 if (backRailV_medium) {
870 Fatal(
"Main",
"Invalid medium for backRailV!");
879 backRail_transf[0]->
SetDx(0.0);
880 backRail_transf[0]->
SetDy(+(14.5 + backRailMainPart_YSize * 0.5));
881 backRail_transf[0]->
SetDz(+0.695
882 - (1.35 + faceShild_ZSize
883 + (backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize))
887 backRail_transf[1]->
RotateX(180.0);
888 backRail_transf[1]->
SetDx(0.0);
889 backRail_transf[1]->
SetDy(-(14.5 + backRailMainPart_YSize * 0.5));
890 backRail_transf[1]->
SetDz(+0.695
891 + (1.35 + faceShild_ZSize
892 + (backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize)));
894 frames->
AddNode(backRailV, 0, backRail_transf[0]);
895 frames->
AddNode(backRailV, 1, backRail_transf[1]);
899 Double_t holdBackRail_XSize = backRailMainPart_XSize;
904 holdBackRailS->
SetName(
"holdBackRailS");
907 +0.0 , +0.1 , +holdBackRail_ZSize , +holdBackRail_ZSize , +0.0
910 -holdBackRail_YSize ,
911 -holdBackRail_YSize ,
912 -holdBackRail_YSize * 0.5 ,
916 ((
TGeoXtru*)holdBackRailS)->DefinePolygon(5, x_pos, y_pos);
917 ((
TGeoXtru*)holdBackRailS)->DefineSection(0, -holdBackRail_XSize * 0.5);
918 ((
TGeoXtru*)holdBackRailS)->DefineSection(1, +holdBackRail_XSize * 0.5);
926 if (holdBackRailV_medium) {
927 holdBackRailV->
SetMedium(holdBackRailV_medium);
929 Fatal(
"Main",
"Invalid medium for holdBackRailV!");
938 holdBackRail_transf[0]->
RotateY(90.0);
939 holdBackRail_transf[0]->
SetDx(0.0);
940 holdBackRail_transf[0]->
SetDy(+(14.5 + backRailMainPart_YSize));
941 holdBackRail_transf[0]->
SetDz(
942 +0.695 - (1.35 + faceShild_ZSize + plankShild_ZSize)
946 holdBackRail_transf[1]->
RotateY(90.0);
947 holdBackRail_transf[1]->
RotateX(180.0);
948 holdBackRail_transf[1]->
SetDx(0.0);
949 holdBackRail_transf[1]->
SetDy(-(14.5 + backRailMainPart_YSize));
950 holdBackRail_transf[1]->
SetDz(
951 +0.695 + (1.35 + faceShild_ZSize + plankShild_ZSize));
953 frames->
AddNode(holdBackRailV, 0, holdBackRail_transf[0]);
954 frames->
AddNode(holdBackRailV, 1, holdBackRail_transf[1]);
958 Double_t backPlane_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 3.95 * 2 ;
963 new TGeoBBox(
"backPlaneS", backPlane_XSize * 0.5, backPlane_YSize * 0.5, backPlane_ZSize * 0.5);
969 if (backPlaneV_medium) {
970 backPlaneV->
SetMedium(backPlaneV_medium);
972 Fatal(
"Main",
"Invalid medium for backPlaneV!");
981 backPlane_transf[0]->
SetDx(0.0);
982 backPlane_transf[0]->
SetDy(+(16.75 + backPlane_YSize * 0.5));
983 backPlane_transf[0]->
SetDz(+0.695
984 - (1.35 + faceShild_ZSize + plankShild_ZSize
985 + holdBackRail_ZSize + backPlane_ZSize * 0.5)
989 backPlane_transf[1]->
SetDx(0.0);
990 backPlane_transf[1]->
SetDy(-(16.75 + backPlane_YSize * 0.5));
991 backPlane_transf[1]->
SetDz(+0.695
992 + (1.35 + faceShild_ZSize + plankShild_ZSize
993 + holdBackRail_ZSize + backPlane_ZSize * 0.5));
995 frames->
AddNode(backPlaneV, 0, backPlane_transf[0]);
996 frames->
AddNode(backPlaneV, 1, backPlane_transf[1]);
1000 Double_t frontPlane_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 1.8 * 2 ;
1005 new TGeoBBox(
"frontPlaneS", frontPlane_XSize * 0.5, frontPlane_YSize * 0.5, frontPlane_ZSize * 0.5);
1012 if (frontPlaneV_medium) {
1013 frontPlaneV->
SetMedium(frontPlaneV_medium);
1015 Fatal(
"Main",
"Invalid medium for frontPlaneV!");
1024 frontPlane_transf[0]->
SetDx(0.0);
1025 frontPlane_transf[0]->
SetDy(+(19.7 + frontPlane_YSize * 0.5));
1026 frontPlane_transf[0]->
SetDz(
1028 + (1.35 + faceShild_ZSize + plankShild_ZSize + frontPlane_ZSize * 0.5)
1032 frontPlane_transf[1]->
SetDx(0.0);
1033 frontPlane_transf[1]->
SetDy(-(19.7 + frontPlane_YSize * 0.5));
1034 frontPlane_transf[1]->
SetDz(
1036 - (1.35 + faceShild_ZSize + plankShild_ZSize + frontPlane_ZSize * 0.5));
1038 frames->
AddNode(frontPlaneV, 0, frontPlane_transf[0]);
1039 frames->
AddNode(frontPlaneV, 1, frontPlane_transf[1]);
1043 Double_t frontPlaneWithWindow_XSize =
1044 (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 4.0 * 2 ;
1045 Double_t frontPlaneWithWindow_YSize = 18.3;
1046 Double_t frontPlaneWithWindow_ZSize = 0.3;
1048 Double_t frontPlaneWindow_XSize = frontPlaneWithWindow_XSize - 3.0 * 2 ;
1049 Double_t frontPlaneWindow_YSize = 8.6;
1053 frontPlaneWithWindow_XSize * 0.5, frontPlaneWithWindow_YSize * 0.5, frontPlaneWithWindow_ZSize * 0.5);
1055 frontPlaneWindow_XSize * 0.5, frontPlaneWindow_YSize * 0.5,
1056 (frontPlaneWithWindow_ZSize + 0.001) * 0.5);
1060 frontPlaneWindow_pos->
SetDx(0.0);
1061 frontPlaneWindow_pos->
SetDy(-2.85 );
1062 frontPlaneWindow_pos->
SetDz(0.0);
1068 TString expression =
"frontPlaneWithWindowBlankS";
1070 expression +=
"-frontPlaneWindowS";
1072 expression +=
":frontPlaneWindow_pos";
1074 frontPlaneWithWindowS->
MakeNode(expression);
1083 if (frontPlaneWithWindowV_medium) {
1084 frontPlaneWithWindowV->
SetMedium(frontPlaneWithWindowV_medium);
1086 Fatal(
"Main",
"Invalid medium for frontPlaneWithWindowV!");
1095 frontPlaneWithWindow_transf[0]->
SetDx(0.0);
1096 frontPlaneWithWindow_transf[0]->
SetDy(+(19.5 + frontPlaneWithWindow_YSize * 0.5));
1097 frontPlaneWithWindow_transf[0]->
SetDz(
1099 + (1.35 + faceShild_ZSize + frontPlaneWithWindow_ZSize * 0.5)
1103 frontPlaneWithWindow_transf[1]->
RotateX(180.0);
1104 frontPlaneWithWindow_transf[1]->
SetDx(0.0);
1105 frontPlaneWithWindow_transf[1]->
SetDy(-(19.5 + frontPlaneWithWindow_YSize * 0.5));
1106 frontPlaneWithWindow_transf[1]->
SetDz(
1108 - (1.35 + faceShild_ZSize + frontPlaneWithWindow_ZSize * 0.5));
1110 frames->
AddNode(frontPlaneWithWindowV, 0, frontPlaneWithWindow_transf[0]);
1111 frames->
AddNode(frontPlaneWithWindowV, 1, frontPlaneWithWindow_transf[1]);
1115 Double_t pcb_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 4.865 ;
1119 TGeoShape* pcbS =
new TGeoBBox(
"pcbS", frontPlane_XSize * 0.5, frontPlane_YSize * 0.5, frontPlane_ZSize * 0.5);
1128 Fatal(
"Main",
"Invalid medium for pcbV!");
1137 pcb_transf[0]->
SetDx(0.0);
1138 pcb_transf[0]->
SetDy(+(26.5 + pcb_YSize * 0.5));
1139 pcb_transf[0]->
SetDz(+0.695 + 4.31 );
1142 pcb_transf[1]->
SetDx(0.0);
1143 pcb_transf[1]->
SetDy(-(26.5 + pcb_YSize * 0.5));
1144 pcb_transf[1]->
SetDz(+0.695 );
1146 frames->
AddNode(pcbV, 0, pcb_transf[0]);
1147 frames->
AddNode(pcbV, 1, pcb_transf[1]);
1151 Double_t upperSideShield_XSize = 4.4;
1152 Double_t upperSideShield_YSize = 12.3;
1153 Double_t upperSideShield_ZSize = 0.8;
1155 Double_t upperSideShieldCut_XSize = 0.9;
1156 Double_t upperSideShieldCut_YSize = 2.4;
1158 Double_t upperSideShieldWindow_XSize = 3.0;
1159 Double_t upperSideShieldWindow_YSize = 7.0;
1165 +upperSideShield_XSize * 0.5 ,
1166 +upperSideShield_XSize * 0.5 ,
1167 -upperSideShield_XSize * 0.5 ,
1168 -upperSideShield_XSize * 0.5 ,
1169 -upperSideShield_XSize * 0.5 + upperSideShieldCut_XSize ,
1170 -upperSideShield_XSize * 0.5 + upperSideShieldCut_XSize
1174 -upperSideShield_YSize * 0.5 ,
1175 +upperSideShield_YSize * 0.5 ,
1176 +upperSideShield_YSize * 0.5 ,
1177 -upperSideShield_YSize * 0.5 + upperSideShieldCut_YSize ,
1178 -upperSideShield_YSize * 0.5 + upperSideShieldCut_YSize ,
1179 -upperSideShield_YSize * 0.5
1182 ((
TGeoXtru*)upperSideShieldBlankS)->DefinePolygon(6, x_pos, y_pos);
1183 ((
TGeoXtru*)upperSideShieldBlankS)->DefineSection(0, -upperSideShield_ZSize * 0.5);
1184 ((
TGeoXtru*)upperSideShieldBlankS)->DefineSection(1, +upperSideShield_ZSize * 0.5);
1188 TString(
"upperSideShieldWindowS") +=
TString(
"_") + station->
GetName(), upperSideShieldWindow_XSize * 0.5,
1189 upperSideShieldWindow_YSize * 0.5, (upperSideShield_ZSize + 0.001) * 0.5);
1193 upperSideShieldWindow_pos->
SetDx(0.0);
1194 upperSideShieldWindow_pos->
SetDy(+1.65 );
1195 upperSideShieldWindow_pos->
SetDz(0.0);
1201 TString expression =
"upperSideShieldBlankS";
1203 expression +=
"-upperSideShieldWindowS";
1205 expression +=
":upperSideShieldWindow_pos";
1207 upperSideShieldWithWindowS->
MakeNode(expression);
1212 upperSideShieldWithWindowS);
1216 if (upperSideShieldV_medium) {
1217 upperSideShieldV->
SetMedium(upperSideShieldV_medium);
1219 Fatal(
"Main",
"Invalid medium for upperSideShieldV!");
1228 upperSideShield_transf[0]->
RotateY(90.0);
1229 upperSideShield_transf[0]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
1230 upperSideShield_transf[0]->
SetDy(+(17.6 + upperSideShield_YSize * 0.5));
1231 upperSideShield_transf[0]->
SetDz(+0.695 - 0.65 + 4.31 );
1234 upperSideShield_transf[1]->
RotateY(90.0);
1235 upperSideShield_transf[1]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
1236 upperSideShield_transf[1]->
SetDy(+(17.6 + upperSideShield_YSize * 0.5));
1237 upperSideShield_transf[1]->
SetDz(+0.695 - 0.65 + 4.31 );
1240 upperSideShield_transf[2]->
RotateY(-90.0);
1241 upperSideShield_transf[2]->
ReflectY(
true);
1242 upperSideShield_transf[2]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
1243 upperSideShield_transf[2]->
SetDy(-(17.6 + upperSideShield_YSize * 0.5));
1244 upperSideShield_transf[2]->
SetDz(+0.695 + 0.65 );
1247 upperSideShield_transf[3]->
RotateY(-90.0);
1248 upperSideShield_transf[3]->
ReflectY(
true);
1249 upperSideShield_transf[3]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
1250 upperSideShield_transf[3]->
SetDy(-(17.6 + upperSideShield_YSize * 0.5));
1251 upperSideShield_transf[3]->
SetDz(+0.695 + 0.65 );
1253 frames->
AddNode(upperSideShieldV, 0, upperSideShield_transf[0]);
1254 frames->
AddNode(upperSideShieldV, 1, upperSideShield_transf[1]);
1255 frames->
AddNode(upperSideShieldV, 2, upperSideShield_transf[2]);
1256 frames->
AddNode(upperSideShieldV, 3, upperSideShield_transf[3]);
1260 Double_t upperSideShieldCover_XSize = 4.4;
1261 Double_t upperSideShieldCover_YSize = 8.5;
1262 Double_t upperSideShieldCover_ZSize = 0.15;
1265 new TGeoBBox(
"upperSideShieldCoverS", upperSideShieldCover_XSize * 0.5, upperSideShieldCover_YSize * 0.5,
1266 upperSideShieldCover_ZSize * 0.5);
1273 if (upperSideShieldCoverV_medium) {
1274 upperSideShieldCoverV->
SetMedium(upperSideShieldCoverV_medium);
1276 Fatal(
"Main",
"Invalid medium for upperSideShieldCoverV!");
1285 upperSideShieldCover_transf[0]->
RotateY(90.0);
1286 upperSideShieldCover_transf[0]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
1287 upperSideShieldCover_transf[0]->
SetDy(+(20.7 + upperSideShieldCover_YSize * 0.5));
1288 upperSideShieldCover_transf[0]->
SetDz(
1289 +0.695 - 0.65 + 4.31 );
1292 upperSideShieldCover_transf[1]->
RotateY(90.0);
1293 upperSideShieldCover_transf[1]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
1294 upperSideShieldCover_transf[1]->
SetDy(+(20.7 + upperSideShieldCover_YSize * 0.5));
1295 upperSideShieldCover_transf[1]->
SetDz(
1296 +0.695 - 0.65 + 4.31 );
1299 upperSideShieldCover_transf[2]->
RotateY(90.0);
1300 upperSideShieldCover_transf[2]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
1301 upperSideShieldCover_transf[2]->
SetDy(-(20.7 + upperSideShieldCover_YSize * 0.5));
1302 upperSideShieldCover_transf[2]->
SetDz(+0.695 + 0.65 );
1305 upperSideShieldCover_transf[3]->
RotateY(90.0);
1306 upperSideShieldCover_transf[3]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
1307 upperSideShieldCover_transf[3]->
SetDy(-(20.7 + upperSideShieldCover_YSize * 0.5));
1308 upperSideShieldCover_transf[3]->
SetDz(+0.695 + 0.65 );
1310 frames->
AddNode(upperSideShieldCoverV, 0, upperSideShieldCover_transf[0]);
1311 frames->
AddNode(upperSideShieldCoverV, 1, upperSideShieldCover_transf[1]);
1312 frames->
AddNode(upperSideShieldCoverV, 2, upperSideShieldCover_transf[2]);
1313 frames->
AddNode(upperSideShieldCoverV, 3, upperSideShieldCover_transf[3]);
1324 SILICON->AddNode(station, 0, station_transform);
1332 gGeoMan->CheckOverlaps(0.0001);
1336 TFile* geoFile =
new TFile(geoFileName,
"RECREATE");