755{
756
757
758
759
760
761
762
763 G4double
smallL = 0.01*mm;
764 G4RotationMatrix
rot_dummy(0*deg,0*deg,0*deg);
765 IniParam_mrpc();
769
770
771
772 std::ostringstream name;
773
774
775
776
777
778 G4LogicalVolume* logical_container[4];
779 G4LogicalVolume* logical_gasContainer[4];
780 for(int kk=0; kk<4; kk++)
781 {
782 name.str("");
783 name<<"logical_container_m"<<kk;
784 logical_container[kk] = partProduce->
lg_container((
int)kk/2, name.str());
785
786 name.str("");
787 name<<"logical_gasContainer_m"<<kk;
789 }
790
791
792
793 G4LogicalVolume* logical_containerFrame = partProduce->
lg_containerFrame(
"logical_containerFrame");
794 G4LogicalVolume* logical_upCover = partProduce->
lg_upCover(
"logical_upCover");
795 G4LogicalVolume* logical_lowCover1 = partProduce->
lg_lowCover1(
"logical_lowCover1");
796 G4LogicalVolume* logical_lowCover2 = partProduce->
lg_lowCover2(
"logical_lowCover2");
797 G4LogicalVolume* logical_upFEE = partProduce->
lg_upFEE(
"logical_upFEE");
798 G4LogicalVolume* logical_sideFEE = partProduce->
lg_sideFEE(
"logical_sideFEE");
799 G4LogicalVolume* logical_castingDie = partProduce->
lg_castingDie(
"logical_castingDie");
800 G4LogicalVolume* logical_bareChamber = partProduce->
lg_bareChamber(
"logical_bareChamber");
801 G4LogicalVolume* logical_bracket = partProduce->
lg_bracket(
"logical_bracket");
802 G4LogicalVolume* logical_sideStopBlock = partProduce->
lg_sideStopBlock(
"logical_sideStopBlock");
803 G4LogicalVolume* logical_upStopBlock = partProduce->
lg_upStopBlock(
"logical_upStopBlock");
804
805
806
807 for(int kk=0; kk<4; kk++)
808 {
809
810 name.str("");
811 name<<"physical_containerFrame_m"<<kk;
812 new G4PVPlacement(0, G4ThreeVector(0,0,0), logical_containerFrame, name.str(), logical_container[kk],
false, 0,
checkOverlap);
813
814
815 G4ThreeVector translation_upCover(0, (containerOut_y+upCover_y)/2+
smallL, (upCover_z-containerOut_z)/2-upCover_posz);
816 name.str("");
817 name<<"physical_upCover_m"<<kk;
818 new G4PVPlacement(0, translation_upCover, logical_upCover, name.str(), logical_container[kk],
false, 0,
checkOverlap);
819
820
821 name.str("");
822 name<<"physical_lowCover_m"<<kk;
823 if(kk<2)
824 {
825 G4ThreeVector translation_lowCover(0, -1*(containerOut_y+upCover_y)/2, (lowCover1_z-containerOut_z)/2-lowCover1_posz);
826 new G4PVPlacement(0, translation_lowCover, logical_lowCover1, name.str(), logical_container[kk],
false, 0,
checkOverlap);
827 }
828 else
829 {
830 G4ThreeVector translation_lowCover(0, -1*(containerOut_y+upCover_y)/2, (lowCover2_z-containerOut_z)/2-lowCover2_posz);
831 new G4PVPlacement(0, translation_lowCover, logical_lowCover2, name.str(), logical_container[kk],
false, 0,
checkOverlap);
832 }
833
834
835 G4ThreeVector translation_upFEE(0, containerOut_y/2+upCover_y+upFEE_y/2+
smallL, upCover_z-upFEE_posz-upFEE_z/2-upCover_posz-containerOut_z/2);
836 name.str("");
837 name<<"physical_upFEE_m"<<kk;
838 new G4PVPlacement(0, translation_upFEE, logical_upFEE, name.str(), logical_container[kk],
false, 0,
checkOverlap);
839
840
841 double angle_containerFrameSide = atan((containerOut_xup-containerOut_xdown)/2/containerOut_z) *
rad;
842 double l_containerFrameSide = containerOut_z/
cos(angle_containerFrameSide);
843 double x_sideFEE = (l_containerFrameSide/2-sideFEE_posl)*
sin(angle_containerFrameSide)+(containerOut_xup+containerOut_xdown)/4+sideFEE_x/2*
cos(angle_containerFrameSide);
844 double z_sideFEE = (l_containerFrameSide/2-sideFEE_posl)*
cos(angle_containerFrameSide)-sideFEE_x/2*
sin(angle_containerFrameSide);
845 G4ThreeVector translation_sideFEE_left(-x_sideFEE, 0, z_sideFEE);
846 G4RotationMatrix rot_sideFEE_left;
847 rot_sideFEE_left.rotateY(-angle_containerFrameSide);
848 G4Transform3D transform_sideFEE_left(rot_sideFEE_left, translation_sideFEE_left);
849 name.str("");
850 name<<"physical_sideFEE_left_m"<<kk;
851 new G4PVPlacement(transform_sideFEE_left, logical_sideFEE, name.str(), logical_container[kk],
false, 0,
checkOverlap);
852
853 G4ThreeVector translation_sideFEE_right(x_sideFEE, 0, z_sideFEE);
854 G4RotationMatrix rot_sideFEE_right;
855 rot_sideFEE_right.rotateZ(180*deg);
856 rot_sideFEE_right.rotateY(angle_containerFrameSide);
857 G4Transform3D transform_sideFEE_right(rot_sideFEE_right, translation_sideFEE_right);
858 name.str("");
859 name<<"physical_sideFEE_right_m"<<kk;
860 new G4PVPlacement(transform_sideFEE_right, logical_sideFEE, name.str(), logical_container[kk],
false, 0,
checkOverlap);
861
862
863 G4RotationMatrix rot_castingDie;
864 rot_castingDie.rotateX(-90*deg);
865 G4ThreeVector translation_castingDie_1(0, containerOut_y/2+upCover_y+castingDie_z/2+
smallL, -containerOut_z/2+upCover_posz+castingDie_posz1);
866 G4Transform3D transform_castingDie_1(rot_castingDie, translation_castingDie_1);
867 name.str("");
868 name<<"physical_castingDie_1_m"<<kk;
869 new G4PVPlacement(transform_castingDie_1, logical_castingDie, name.str(), logical_container[kk],
false, 0,
checkOverlap);
870
871 G4ThreeVector translation_castingDie_2(0, containerOut_y/2+upCover_y+castingDie_z/2+
smallL, -containerOut_z/2+upCover_posz+castingDie_posz2);
872 G4Transform3D transform_castingDie_2(rot_castingDie, translation_castingDie_2);
873 name.str("");
874 name<<"physical_castingDie_2_m"<<kk;
875 new G4PVPlacement(transform_castingDie_2, logical_castingDie, name.str(), logical_container[kk],
false, 0,
checkOverlap);
876
877
878 G4ThreeVector translation_gasContainer(0, 0, (container_lowBorder-container_thickness)/2);
879 name.str("");
880 name<<"physical_gasContainer_m"<<kk;
881 new G4PVPlacement(0, translation_gasContainer, logical_gasContainer[kk], name.str(), logical_container[kk],
false, 0,
checkOverlap);
882 }
883
884
885
886
887 double l_chamber = honeyComb_y*2+tape_mrpc_y*2+pcbBoard_y0*2+pcbBoard_y1+mylar_y*4+glass0_y*4+glass1_y*10+gasLayer_y*12;
888 double y_chamber;
889 double z_chamber = (containerIn_z-pcbBoard_z)/2-
smallL;
890 for(int kk=0; kk<4; kk++)
891 {
892 if(kk<2) y_chamber = -(containerIn_y-l_chamber)/2+chamber_in_posy;
893 else y_chamber = -(containerIn_y-l_chamber)/2+chamber_out_posy;
894 G4Transform3D transform_bareChamber;
895 if(kk==0 || kk==2)
896 {
897 transform_bareChamber = G4Transform3D(
rot_dummy, G4ThreeVector(0,y_chamber,z_chamber));
898 }
899 else
900 {
901 G4RotationMatrix rot_bareChamber;
902 rot_bareChamber.rotateZ(180*deg);
903 transform_bareChamber = G4Transform3D(rot_bareChamber, G4ThreeVector(0,y_chamber,z_chamber));
904 }
905 new G4PVPlacement(transform_bareChamber, logical_bareChamber,
"physical_bareChamber", logical_gasContainer[kk],
false, 0,
checkOverlap);
906
907
908 G4double z_bracket = -(containerIn_z-bracket_z)/2+
smallL;
909 new G4PVPlacement(0, G4ThreeVector(-bracket_posx, 0, z_bracket), logical_bracket,
"physical_bracket_0", logical_gasContainer[kk],
false, 0,
checkOverlap);
910 new G4PVPlacement(0, G4ThreeVector(bracket_posx, 0, z_bracket), logical_bracket,
"physical_bracket_1", logical_gasContainer[kk],
false, 0,
checkOverlap);
911
912
913 G4Transform3D transform_sideStopBlock;
914 G4double angle_gasContainerSide = (atan((containerIn_xup-containerIn_xdown)/2/(containerIn_z))) *
rad;
915 G4double x_sideStopBlock = (containerIn_xup+containerIn_xdown)/4+sideStopBlock_posz0*
tan(angle_gasContainerSide)-sideStopBlock_x/2*
cos(angle_gasContainerSide);
916 G4double z_sideStopBlock = sideStopBlock_posz0+sideStopBlock_x/2*
sin(angle_gasContainerSide);
917
918 G4RotationMatrix rot_sideStopBlock;
919 rot_sideStopBlock.rotateY(angle_gasContainerSide);
920 rot_sideStopBlock.rotateZ(180*deg);
921 transform_sideStopBlock = G4Transform3D(rot_sideStopBlock, G4ThreeVector(-x_sideStopBlock, 0, z_sideStopBlock));
922 new G4PVPlacement(transform_sideStopBlock, logical_sideStopBlock,
"physical_sideStopBlock_0", logical_gasContainer[kk],
false, 0,
checkOverlap);
923
924 rot_sideStopBlock = G4RotationMatrix(0,0,0);
925 rot_sideStopBlock.rotateY(angle_gasContainerSide);
926 transform_sideStopBlock = G4Transform3D(rot_sideStopBlock, G4ThreeVector(x_sideStopBlock, 0, z_sideStopBlock));
927 new G4PVPlacement(transform_sideStopBlock, logical_sideStopBlock,
"physical_sideStopBlock_1", logical_gasContainer[kk],
false, 0,
checkOverlap);
928
929 x_sideStopBlock = (containerIn_xup+containerIn_xdown)/4+sideStopBlock_posz1*
tan(angle_gasContainerSide)-sideStopBlock_x/2*
cos(angle_gasContainerSide);
930 z_sideStopBlock = sideStopBlock_posz1+sideStopBlock_x/2*
sin(angle_gasContainerSide);
931 rot_sideStopBlock = G4RotationMatrix(0,0,0);
932 rot_sideStopBlock.rotateY(angle_gasContainerSide);
933 rot_sideStopBlock.rotateZ(180*deg);
934 transform_sideStopBlock = G4Transform3D(rot_sideStopBlock, G4ThreeVector(-x_sideStopBlock, 0, z_sideStopBlock));
935 new G4PVPlacement(transform_sideStopBlock, logical_sideStopBlock,
"physical_sideStopBlock_2", logical_gasContainer[kk],
false, 0,
checkOverlap);
936
937 rot_sideStopBlock = G4RotationMatrix(0,0,0);
938 rot_sideStopBlock.rotateY(angle_gasContainerSide);
939 transform_sideStopBlock = G4Transform3D(rot_sideStopBlock, G4ThreeVector(x_sideStopBlock, 0, z_sideStopBlock));
940 new G4PVPlacement(transform_sideStopBlock, logical_sideStopBlock,
"physical_sideStopBlock_3", logical_gasContainer[kk],
false, 0,
checkOverlap);
941 }
942
943
944
945 G4double x_upStopBlock = containerIn_xup/4;
946 G4double y_upStopBlock = pcbBoard_y1/2.+mylar_y+glass0_y+glass1_y*2.5+gasLayer_y*3;
947 G4double z_upStopBlock = (pcbBoard_z-upStopBlock_z)/2-
smallL;
948 new G4PVPlacement(0, G4ThreeVector(-x_upStopBlock, -y_upStopBlock, z_upStopBlock ), logical_upStopBlock,
"physical_upStopBlock_0", logical_bareChamber,
false,0,
checkOverlap);
949 new G4PVPlacement(0, G4ThreeVector(-x_upStopBlock, y_upStopBlock, z_upStopBlock ), logical_upStopBlock,
"physical_upStopBlock_1", logical_bareChamber,
false,0,
checkOverlap);
950 new G4PVPlacement(0, G4ThreeVector(x_upStopBlock, -y_upStopBlock, z_upStopBlock ), logical_upStopBlock,
"physical_upStopBlock_2", logical_bareChamber,
false,0,
checkOverlap);
951 new G4PVPlacement(0, G4ThreeVector(x_upStopBlock, y_upStopBlock, z_upStopBlock ), logical_upStopBlock,
"physical_upStopBlock_3", logical_bareChamber,
false,0,
checkOverlap);
952
953
954
955 G4LogicalVolume* logical_honeyComb = partProduce->
lg_honeyComb(
"logical_honeyComb");
956 G4double y_honeyComb = (honeyComb_y+pcbBoard_y1)/2+tape_mrpc_y+pcbBoard_y0+mylar_y*2+glass0_y*2+glass1_y*5+gasLayer_y*6;
957 G4double z_honeyComb = (pcbBoard_z-honeyComb_z)/2-honeyComb_posz;
958 new G4PVPlacement(0,G4ThreeVector(0,y_honeyComb,z_honeyComb), logical_honeyComb,
"physical_honeyComb_0",logical_bareChamber,
false,0,
checkOverlap);
959 new G4PVPlacement(0,G4ThreeVector(0,-1*y_honeyComb,z_honeyComb), logical_honeyComb,
"physical_honeyComb_1",logical_bareChamber,
false,1,
checkOverlap);
960
961
962 G4LogicalVolume* logical_tape_mrpc = partProduce->
lg_tape_mrpc(
"logical_tape_mrpc");
963 G4double y_tape_mrpc = (tape_mrpc_y+pcbBoard_y1)/2+pcbBoard_y0+mylar_y*2+glass0_y*2+glass1_y*5+gasLayer_y*6;
964 G4double z_tape_mrpc = (pcbBoard_z-tape_mrpc_z)/2-tape_mrpc_posz;
965 new G4PVPlacement(0,G4ThreeVector(0,y_tape_mrpc,z_tape_mrpc), logical_tape_mrpc,
"physical_tape_mrpc_0",logical_bareChamber,
false,0,
checkOverlap);
966 new G4PVPlacement(0,G4ThreeVector(0,-1*y_tape_mrpc,z_tape_mrpc), logical_tape_mrpc,
"physical_tape_mrpc_1",logical_bareChamber,
false,1,
checkOverlap);
967
968
969 G4LogicalVolume* logical_pcbBoard0 = partProduce->
lg_pcbBoard(0,
"logical_pcbBoard0");
970 G4double y_pcbBoard = (pcbBoard_y0+pcbBoard_y1)/2+mylar_y*2+glass0_y*2+glass1_y*5+gasLayer_y*6;
971 new G4PVPlacement(0,G4ThreeVector(0,y_pcbBoard,0),logical_pcbBoard0,
"physical_pcbBoard0_0",logical_bareChamber,
false,0,
checkOverlap);
972
973
974 G4RotationMatrix* rot_pcbBoard = new G4RotationMatrix();
975 rot_pcbBoard->rotateZ(180*degree);
976 new G4PVPlacement(rot_pcbBoard,G4ThreeVector(0,-1*y_pcbBoard,0),logical_pcbBoard0,
"physical_pcbBoard0_1",logical_bareChamber,
false,1,
checkOverlap);
977
978 G4LogicalVolume* logical_pcbBoard1 = partProduce->
lg_pcbBoard(1,
"logical_pcbBoard1");
979 new G4PVPlacement(0,G4ThreeVector(0,0,0),logical_pcbBoard1,
"physical_pcbBoard1",logical_bareChamber,
false,0,
checkOverlap);
980
981
982 G4AssemblyVolume* logical_strip = partProduce->
lg_strip(
"logical_strip");
983 G4double z_strip = (pcbBoard_z-12*strip_z-11*strip_gap)/2-strip_posz;
984 G4Transform3D transform_strip(
rot_dummy, G4ThreeVector(0, pcbBoard_y0/2.-strip_y/2-
smallL, z_strip));
985 logical_strip->MakeImprint(logical_pcbBoard0, transform_strip);
986 transform_strip = G4Transform3D(
rot_dummy, G4ThreeVector(0,0,z_strip));
987 logical_strip->MakeImprint(logical_pcbBoard1, transform_strip);
988
989
990 G4LogicalVolume* logical_mylar = partProduce->
lg_mylar(
"logical_mylar");
991 G4double y_mylar = (mylar_y+pcbBoard_y1)/2+mylar_y+glass0_y*2+glass1_y*5+gasLayer_y*6;
992 G4double z_mylar = (pcbBoard_z-mylar_z)/2-mylar_posz;
993 new G4PVPlacement(0,G4ThreeVector(0,y_mylar,z_mylar),logical_mylar,
"physical_mylar_0",logical_bareChamber,
false,0,
checkOverlap);
994 new G4PVPlacement(0,G4ThreeVector(0,-y_mylar,z_mylar),logical_mylar,
"physical_mylar_3",logical_bareChamber,
false,3,
checkOverlap);
995
996 y_mylar = (mylar_y+pcbBoard_y1)/2;
997 new G4PVPlacement(0,G4ThreeVector(0,y_mylar,z_mylar),logical_mylar,
"physical_mylar_1",logical_bareChamber,
false,1,
checkOverlap);
998 new G4PVPlacement(0,G4ThreeVector(0,-y_mylar,z_mylar),logical_mylar,
"physical_mylar_2",logical_bareChamber,
false,2,
checkOverlap);
999
1000
1001 G4LogicalVolume* logical_glass0 = partProduce->
lg_glass(0,
"logical_glass0");
1002 G4double y_glass = (glass0_y+pcbBoard_y1)/2.+mylar_y+glass0_y+glass1_y*5+gasLayer_y*6;
1003 G4double z_glass = (pcbBoard_z-glass0_z)/2.-glass0_posz;
1004 new G4PVPlacement(0, G4ThreeVector(0, y_glass, z_glass), logical_glass0,
"physical_glass0_0", logical_bareChamber,
false, 0,
checkOverlap);
1005 new G4PVPlacement(0, G4ThreeVector(0, -y_glass, z_glass), logical_glass0,
"physical_glass0_3", logical_bareChamber,
false, 3,
checkOverlap);
1006 y_glass = pcbBoard_y1/2.+mylar_y+glass0_y/2.;
1007 new G4PVPlacement(0, G4ThreeVector(0, y_glass, z_glass), logical_glass0,
"physical_glass0_1", logical_bareChamber,
false, 1,
checkOverlap);
1008 new G4PVPlacement(0, G4ThreeVector(0, -y_glass, z_glass), logical_glass0,
"physical_glass0_2", logical_bareChamber,
false, 2,
checkOverlap);
1009
1010 G4LogicalVolume* logical_glass1 = partProduce->
lg_glass(1,
"logical_glass1");
1011 z_glass = (pcbBoard_z-glass1_z)/2.-glass1_posz;
1012 for(G4int i=0; i<5; i++)
1013 {
1014 y_glass = pcbBoard_y1/2.+mylar_y+glass0_y+glass1_y*(4.5-i)+gasLayer_y*(5-i);
1015 name.str("");
1016 name<<"physical_glass1_"<<i;
1017 new G4PVPlacement(0, G4ThreeVector(0, y_glass, z_glass), logical_glass1, name.str(), logical_bareChamber,
false, i,
checkOverlap);
1018 name.str("");
1019 name<<"physical_glass1_"<<9-i;
1020 new G4PVPlacement(0, G4ThreeVector(0, -y_glass, z_glass), logical_glass1, name.str(), logical_bareChamber,
false, 9-i,
checkOverlap);
1021 }
1022
1023
1024 logical_gasLayer = partProduce->
lg_gasLayer(
"logical_gasLayer");
1025 G4double y_gasLayer;
1026 G4double z_gasLayer = (pcbBoard_z-gasLayer_z)/2.-gasLayer_posz;
1027 G4VPhysicalVolume* physical_gasLayer[12];
1028 for(G4int i=0; i<6; i++)
1029 {
1030 y_gasLayer = pcbBoard_y1/2.+mylar_y+glass0_y+glass1_y*(5-i)+gasLayer_y*(5.5-i);
1031 name.str("");
1032 name<<"physical_gasLayer_"<<11-i;
1033 physical_gasLayer[i] =
new G4PVPlacement(0, G4ThreeVector(0, -y_gasLayer, z_gasLayer), logical_gasLayer, name.str(), logical_bareChamber,
false, 11-i,
checkOverlap);
1034 }
1035 for(G4int i=6; i<12; i++)
1036 {
1037 y_gasLayer = pcbBoard_y1/2.+mylar_y+glass0_y+glass1_y*(i-6)+gasLayer_y*(-5.5+i);
1038 name.str("");
1039 name<<"physical_gasLayer_"<<11-i;
1040 physical_gasLayer[i] =
new G4PVPlacement(0, G4ThreeVector(0, y_gasLayer, z_gasLayer), logical_gasLayer, name.str(), logical_bareChamber,
false, 11-i,
checkOverlap);
1041 }
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054 const G4int n_module = 36;
1055 G4double angle = 360.0*deg/n_module;
1056 G4double z_layerIn = endcap_length/2-containerOut_y/2-lowCover1_y-layer_posz;
1057 G4double z_layerOut = endcap_length/2-containerOut_y/2-lowCover2_y-layer_posz;
1058
1059
1060
1061
1062 rOffset_east = tofPara->
GetVec(
"rOffset_east");
1063 angle_east = tofPara->
GetVec(
"angle_east");
1064 angleOffset_east = tofPara->
GetVec(
"angleOffset_east");
1065 rOffset_west = tofPara->
GetVec(
"rOffset_west");
1066 angle_west = tofPara->
GetVec(
"angle_west");
1067 angleOffset_west = tofPara->
GetVec(
"angleOffset_west");
1068
1069
1070
1071 for(int i=0; i<n_module; i++)
1072 {
1073 G4double angle_module = startAngle_east+angle_east[i]+i*angle;
1074 G4double r_module = endcap_r+rOffset_east[i];
1075
1076 G4RotationMatrix rot_layerIn_east;
1077 rot_layerIn_east.rotateX(90.*deg);
1078 rot_layerIn_east.rotateZ(90.*deg);
1079 rot_layerIn_east.rotateZ(angle_module+angleOffset_east[i]);
1080
1081 G4ThreeVector translation_layerIn_east = G4ThreeVector(r_module*
cos(angle_module), r_module*
sin(angle_module), -z_layerIn);
1082 G4Transform3D transform_layerIn_east = G4Transform3D(rot_layerIn_east, translation_layerIn_east);
1083
1084
1085 G4RotationMatrix rot_layerOut_east;
1086 rot_layerOut_east.rotateZ(180.*deg);
1087 rot_layerOut_east.rotateX(90.*deg);
1088 rot_layerOut_east.rotateZ(90.*deg);
1089 rot_layerOut_east.rotateZ(angle_module+angleOffset_east[i]);
1090
1091 G4ThreeVector translation_layerOut_east = G4ThreeVector(r_module*
cos(angle_module), r_module*
sin(angle_module), z_layerOut);
1092 G4Transform3D transform_layerOut_east = G4Transform3D(rot_layerOut_east, translation_layerOut_east);
1093
1094 name.str("");
1095 name<<"physical_mrpc_east_"<<i;
1096 if(i%2==0)
1097 {
1098 new G4PVPlacement(transform_layerOut_east, logical_container[3], name.str(), logicalEcTofEast,
false, i,
checkOverlap);
1099 }
1100 else
1101 {
1102 new G4PVPlacement(transform_layerIn_east, logical_container[0], name.str(), logicalEcTofEast,
false, i,
checkOverlap);
1103 }
1104 }
1105
1106
1107 for(int i=0; i<n_module; i++)
1108 {
1109 G4double angle_module = startAngle_west+angle_west[i]+i*angle;
1110 G4double r_module = endcap_r+rOffset_west[i];
1111
1112 G4RotationMatrix rot_layerIn_west;
1113 rot_layerIn_west.rotateZ(180.*deg);
1114 rot_layerIn_west.rotateX(90.*deg);
1115 rot_layerIn_west.rotateZ(90.*deg);
1116 rot_layerIn_west.rotateZ(angle_module+angleOffset_west[i]);
1117
1118 G4ThreeVector translation_layerIn_west = G4ThreeVector(r_module*
cos(angle_module), r_module*
sin(angle_module), z_layerIn);
1119 G4Transform3D transform_layerIn_west = G4Transform3D(rot_layerIn_west, translation_layerIn_west);
1120
1121
1122 G4RotationMatrix rot_layerOut_west;
1123 rot_layerOut_west.rotateX(90.*deg);
1124 rot_layerOut_west.rotateZ(90.*deg);
1125 rot_layerOut_west.rotateZ(angle_module+angleOffset_west[i]);
1126
1127 G4ThreeVector translation_layerOut_west = G4ThreeVector(r_module*
cos(angle_module), r_module*
sin(angle_module), -z_layerOut);
1128 G4Transform3D transform_layerOut_west = G4Transform3D(rot_layerOut_west, translation_layerOut_west);
1129
1130 name.str("");
1131 name<<"physical_mrpc_west_"<<i;
1132 if(i%2==0)
1133 {
1134 new G4PVPlacement(transform_layerOut_west, logical_container[2], name.str(), logicalEcTofWest,
false, i,
checkOverlap);
1135 }
1136 else
1137 {
1138 new G4PVPlacement(transform_layerIn_west, logical_container[1], name.str(), logicalEcTofWest,
false, i,
checkOverlap);
1139 }
1140 }
1141}
G4RotationMatrix rot_dummy(0 *deg, 0 *deg, 0 *deg)
VEC GetVec(std::string key)
G4LogicalVolume * lg_sideFEE(string name="")
G4LogicalVolume * lg_mylar(string name="")
G4LogicalVolume * lg_lowCover1(string name="")
G4LogicalVolume * lg_glass(G4int flag, string name="")
G4LogicalVolume * lg_container(int flag, string name="")
G4LogicalVolume * lg_gasContainer(string name="")
G4LogicalVolume * lg_sideStopBlock(string name="")
G4AssemblyVolume * lg_strip(string name="")
G4LogicalVolume * lg_honeyComb(string name="")
G4LogicalVolume * lg_containerFrame(string name="")
G4LogicalVolume * lg_lowCover2(string name="")
G4LogicalVolume * lg_pcbBoard(G4int flag, string name="")
G4LogicalVolume * lg_bracket(string name="")
G4LogicalVolume * lg_bareChamber(string name="")
G4LogicalVolume * lg_upStopBlock(string name="")
G4LogicalVolume * lg_tape_mrpc(string name="")
G4LogicalVolume * lg_gasLayer(string name="")
G4LogicalVolume * lg_castingDie(string name="")
G4LogicalVolume * lg_upFEE(string name="")
G4LogicalVolume * lg_upCover(string name="")