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