23 #include "G4LogicalVolume.hh"
24 #include "G4ThreeVector.hh"
25 #include "G4RotationMatrix.hh"
35 G4cout << G4endl <<
"###### Calling QweakSimMainMagnet::QweakSimMainMagnet() " << G4endl << G4endl;
567 G4cout << G4endl <<
"###### Leaving QweakSimMainMagnet::QweakSimMainMagnet " << G4endl << G4endl;
576 G4cout << G4endl <<
"###### Calling QweakSimMainMagnet::ConstructComponent() " << G4endl << G4endl;
579 G4ThreeVector positionSingleCoilContainer = G4ThreeVector(0,0,0);
582 G4cout << G4endl <<
"###### QweakSimMainMagnet: Define MainMagnet_MasterContainer_Solid " << G4endl << G4endl;
586 G4double Offset_SingleCoilWithinMasterContainer =
589 G4Box* SingleCoil_Plate_Solid =
new G4Box(
"SingleCoil_Plate_Solid",
597 "SingleCoil_Plate_Logical",
606 G4double SingleCoil_UpperPlate_CenterPositionInR = +1.0*RadialOffset_Plate - Offset_SingleCoilWithinMasterContainer +
SingleCoil_CenterPositionInR;
607 G4double SingleCoil_LowerPlate_CenterPositionInR = -1.0*RadialOffset_Plate - Offset_SingleCoilWithinMasterContainer +
SingleCoil_CenterPositionInR;
611 G4cout << G4endl <<
"###### QweakSimMainMagnet: Define SingleCoil C Shape Solid" << G4endl << G4endl;
613 G4Tubs* SingleCoil_Wing_Solid =
new G4Tubs(
"SingleCoil_Wing_Solid",
623 "SingleCoil_Wing_Log",
629 G4double SingleCoil_Wings_CenterPositionInR = SingleCoil_CenterPositionInR - Offset_SingleCoilWithinMasterContainer;
635 for (G4int n=0; n<8; n++) {
655 "SingleCoil_UpperPlate_Physical",
665 "SingleCoil_LowerPlate_Physical",
694 "SingleCoil_LeftWing_Physical",
703 "SingleCoil_RightWing_Physical",
718 G4cout << G4endl <<
"###### QweakSimMainMagnet: Define Lintels." << G4endl << G4endl;
720 G4Box* Lintel_Solid =
new G4Box(
"Lintel_Solid",
733 for (G4int n=0; n<8; n++) {
757 G4Colour copper ( 184/255., 115/255., 51/255.);
758 G4Colour mangenta (237/255.,173/255.,255/255.);
769 G4cout << G4endl <<
"###### Leaving QweakSimMainMagnet::ConstructComponent() " << G4endl << G4endl;
776 G4cout << G4endl <<
"###### Calling QweakSimMainMagnet::DestroyComponent() " << G4endl << G4endl;
778 G4cout << G4endl <<
"###### Leaving QweakSimMainMagnet::DestroyComponent() " << G4endl << G4endl;
786 G4cout << G4endl <<
"###### Calling QweakSimMainMagnet::SetCenterPositionInZ() " << G4endl << G4endl;
790 G4cout << G4endl <<
"###### Leaving QweakSimMainMagnet::SetCenterPositionInZ() " << G4endl << G4endl;
797 G4Tubs* UpstreamSpider_Solid =
new G4Tubs(
"UpstreamSpider_Solid",
806 G4double UpstreamSpider_SubtractionTube_MinDiameter = 0.0*cm;
807 G4double UpstreamSpider_SubtractionTube_MaxDiameter = 4.0*2.56*cm;
808 G4double UpstreamSpider_SubtractionTubeLeft_Thickness = 2.01*2.56*cm;
809 G4double UpstreamSpider_SubtractionTubeRight_Thickness = 2.02*2.56*cm;
811 G4Tubs* UpstreamSpider_SubtractionTubeLeft_Solid =
new G4Tubs(
"UpstreamSpider_SubtractionTubeLeft_Solid",
812 0.5*UpstreamSpider_SubtractionTube_MinDiameter,
813 0.5*UpstreamSpider_SubtractionTube_MaxDiameter,
814 0.5*UpstreamSpider_SubtractionTubeLeft_Thickness,
819 G4Tubs* UpstreamSpider_SubtractionTubeRight_Solid =
new G4Tubs(
"UpstreamSpider_SubtractionTubeRight_Solid",
820 0.5*UpstreamSpider_SubtractionTube_MinDiameter,
821 0.5*UpstreamSpider_SubtractionTube_MaxDiameter,
822 0.5*UpstreamSpider_SubtractionTubeRight_Thickness,
829 G4double UpstreamSpider_SubtractionBox_FullLengthInX = 4.76*2.56*cm;
830 G4double UpstreamSpider_SubtractionBox_FullLengthInY = 4.00*2.56*cm;
831 G4double UpstreamSpider_SubtractionBox_FullLengthInZ = 2.00*2.56*cm;
834 G4Box* UpstreamSpider_SubtractionBox_Solid =
new G4Box(
" UpstreamSpider_SubtractionBox_Solid",
835 0.5*UpstreamSpider_SubtractionBox_FullLengthInX,
836 0.5*UpstreamSpider_SubtractionBox_FullLengthInY,
837 0.5*UpstreamSpider_SubtractionBox_FullLengthInZ);
849 G4ThreeVector position_LeftBottomTube = G4ThreeVector( -0.5*UpstreamSpider_SubtractionBox_FullLengthInX,
850 -0.5*UpstreamSpider_SubtractionBox_FullLengthInY + 0.5*UpstreamSpider_SubtractionTube_MaxDiameter,
853 G4ThreeVector position_RightBottomTube = G4ThreeVector( 0.5*UpstreamSpider_SubtractionBox_FullLengthInX,
854 -0.5*UpstreamSpider_SubtractionBox_FullLengthInY + 0.5*UpstreamSpider_SubtractionTube_MaxDiameter,
857 G4ThreeVector position_CutoutUnion = G4ThreeVector(0.0*cm , 0.0*cm, 0.0*cm);
862 UpstreamSpider_SubtractionBox_Solid,
863 UpstreamSpider_SubtractionTubeLeft_Solid,
865 position_LeftBottomTube);
869 UpstreamSpider_SubtractionTubeRight_Solid,
871 position_RightBottomTube);
873 G4double OctantCutOut_Box_RadialDistance = 15.50*2.56*cm + 0.5*UpstreamSpider_SubtractionBox_FullLengthInY;
877 G4double Angle_Octant1;
878 G4ThreeVector Translation_Octant1;
879 G4RotationMatrix Rotation_Octant1_Left;
880 G4RotationMatrix Rotation_Octant1_Right;
882 Angle_Octant1 = 90.0*degree;
883 Translation_Octant1.setX(cos(Angle_Octant1)*OctantCutOut_Box_RadialDistance);
884 Translation_Octant1.setY(sin(Angle_Octant1)*OctantCutOut_Box_RadialDistance);
885 Translation_Octant1.setZ(0.0*cm);
887 Rotation_Octant1_Left.rotateZ(Angle_Octant1 -90.0*degree);
888 Rotation_Octant1_Right.rotateZ(Angle_Octant1 +90.0*degree);
890 G4Transform3D Transform3D_Octant1_Left(Rotation_Octant1_Left,Translation_Octant1);
891 G4Transform3D Transform3D_Octant1_Right(Rotation_Octant1_Right,Translation_Octant1);
894 G4double Angle_Octant2;
895 G4ThreeVector Translation_Octant2;
896 G4RotationMatrix Rotation_Octant2_Left;
897 G4RotationMatrix Rotation_Octant2_Right;
899 Angle_Octant2 = 45.0*degree;
900 Translation_Octant2.setX(cos(Angle_Octant2)*OctantCutOut_Box_RadialDistance);
901 Translation_Octant2.setY(sin(Angle_Octant2)*OctantCutOut_Box_RadialDistance);
902 Translation_Octant2.setZ(0.0*cm);
904 Rotation_Octant2_Left.rotateZ(Angle_Octant2 -90.0*degree);
905 Rotation_Octant2_Right.rotateZ(Angle_Octant2 +90.0*degree);
907 G4Transform3D Transform3D_Octant2_Left(Rotation_Octant2_Left,Translation_Octant2);
908 G4Transform3D Transform3D_Octant2_Right(Rotation_Octant2_Right,Translation_Octant2);
911 G4double Angle_Octant3;
912 G4ThreeVector Translation_Octant3;
913 G4RotationMatrix Rotation_Octant3_Left;
914 G4RotationMatrix Rotation_Octant3_Right;
916 Angle_Octant3 = 0.0*degree;
917 Translation_Octant3.setX(cos(Angle_Octant3)*OctantCutOut_Box_RadialDistance);
918 Translation_Octant3.setY(sin(Angle_Octant3)*OctantCutOut_Box_RadialDistance);
919 Translation_Octant3.setZ(0.0*cm);
921 Rotation_Octant3_Left.rotateZ(Angle_Octant3 -90.0*degree);
922 Rotation_Octant3_Right.rotateZ(Angle_Octant3 +90.0*degree);
924 G4Transform3D Transform3D_Octant3_Left(Rotation_Octant3_Left,Translation_Octant3);
925 G4Transform3D Transform3D_Octant3_Right(Rotation_Octant3_Right,Translation_Octant3);
928 G4double Angle_Octant4;
929 G4ThreeVector Translation_Octant4;
930 G4RotationMatrix Rotation_Octant4_Left;
931 G4RotationMatrix Rotation_Octant4_Right;
933 Angle_Octant4 = 315.0*degree;
934 Translation_Octant4.setX(cos(Angle_Octant4)*OctantCutOut_Box_RadialDistance);
935 Translation_Octant4.setY(sin(Angle_Octant4)*OctantCutOut_Box_RadialDistance);
936 Translation_Octant4.setZ(0.0*cm);
938 Rotation_Octant4_Left.rotateZ(Angle_Octant4 -90.0*degree);
939 Rotation_Octant4_Right.rotateZ(Angle_Octant4 +90.0*degree);
941 G4Transform3D Transform3D_Octant4_Left(Rotation_Octant4_Left,Translation_Octant4);
942 G4Transform3D Transform3D_Octant4_Right(Rotation_Octant4_Right,Translation_Octant4);
945 G4double Angle_Octant5;
946 G4ThreeVector Translation_Octant5;
947 G4RotationMatrix Rotation_Octant5_Left;
948 G4RotationMatrix Rotation_Octant5_Right;
950 Angle_Octant5 = 270.0*degree;
951 Translation_Octant5.setX(cos(Angle_Octant5)*OctantCutOut_Box_RadialDistance);
952 Translation_Octant5.setY(sin(Angle_Octant5)*OctantCutOut_Box_RadialDistance);
953 Translation_Octant5.setZ(0.0*cm);
955 Rotation_Octant5_Left.rotateZ(Angle_Octant5 -90.0*degree);
956 Rotation_Octant5_Right.rotateZ(Angle_Octant5 +90.0*degree);
958 G4Transform3D Transform3D_Octant5_Left(Rotation_Octant5_Left,Translation_Octant5);
959 G4Transform3D Transform3D_Octant5_Right(Rotation_Octant5_Right,Translation_Octant5);
962 G4double Angle_Octant6;
963 G4ThreeVector Translation_Octant6;
964 G4RotationMatrix Rotation_Octant6_Left;
965 G4RotationMatrix Rotation_Octant6_Right;
967 Angle_Octant6 = 225.0*degree;
968 Translation_Octant6.setX(cos(Angle_Octant6)*OctantCutOut_Box_RadialDistance);
969 Translation_Octant6.setY(sin(Angle_Octant6)*OctantCutOut_Box_RadialDistance);
970 Translation_Octant6.setZ(0.0*cm);
972 Rotation_Octant6_Left.rotateZ(Angle_Octant6 -90.0*degree);
973 Rotation_Octant6_Right.rotateZ(Angle_Octant6 +90.0*degree);
975 G4Transform3D Transform3D_Octant6_Left(Rotation_Octant6_Left,Translation_Octant6);
976 G4Transform3D Transform3D_Octant6_Right(Rotation_Octant6_Right,Translation_Octant6);
979 G4double Angle_Octant7;
980 G4ThreeVector Translation_Octant7;
981 G4RotationMatrix Rotation_Octant7_Left;
982 G4RotationMatrix Rotation_Octant7_Right;
984 Angle_Octant7 = 180.0*degree;
985 Translation_Octant7.setX(cos(Angle_Octant7)*OctantCutOut_Box_RadialDistance);
986 Translation_Octant7.setY(sin(Angle_Octant7)*OctantCutOut_Box_RadialDistance);
987 Translation_Octant7.setZ(0.0*cm);
989 Rotation_Octant7_Left.rotateZ(Angle_Octant7 -90.0*degree);
990 Rotation_Octant7_Right.rotateZ(Angle_Octant7 +90.0*degree);
992 G4Transform3D Transform3D_Octant7_Left(Rotation_Octant7_Left,Translation_Octant7);
993 G4Transform3D Transform3D_Octant7_Right(Rotation_Octant7_Right,Translation_Octant7);
996 G4double Angle_Octant8;
997 G4ThreeVector Translation_Octant8;
998 G4RotationMatrix Rotation_Octant8_Left;
999 G4RotationMatrix Rotation_Octant8_Right;
1001 Angle_Octant8 = 135.0*degree;
1002 Translation_Octant8.setX(cos(Angle_Octant8)*OctantCutOut_Box_RadialDistance);
1003 Translation_Octant8.setY(sin(Angle_Octant8)*OctantCutOut_Box_RadialDistance);
1004 Translation_Octant8.setZ(0.0*cm);
1006 Rotation_Octant8_Left.rotateZ(Angle_Octant8 -90.0*degree);
1007 Rotation_Octant8_Right.rotateZ(Angle_Octant8 +90.0*degree);
1010 G4Transform3D Transform3D_Octant8_Left(Rotation_Octant8_Left,Translation_Octant8);
1011 G4Transform3D Transform3D_Octant8_Right(Rotation_Octant8_Right,Translation_Octant8);
1017 UpstreamSpider_Solid,
1020 Transform3D_Octant1_Right );
1027 Transform3D_Octant2_Right );
1034 Transform3D_Octant3_Right );
1041 Transform3D_Octant4_Right);
1047 Transform3D_Octant5_Right );
1053 Transform3D_Octant6_Right );
1059 Transform3D_Octant7_Right );
1065 Transform3D_Octant8_Right );
1113 "UpstreamSpider_Log",
1118 G4ThreeVector position_UpstreamSpider = G4ThreeVector(0.0,
1124 position_UpstreamSpider,
1125 "UpstreamSpider_Physical",
1132 G4Colour aluminium ( 169/255., 172/255., 182/255.);
1152 G4ThreeVector positionClampPlate = G4ThreeVector(0,0,0);
1155 G4cout << G4endl <<
"###### QweakSimMainMagnet: Define MainMagnet_ClampPlate_Solid " << G4endl << G4endl;
1158 G4Box* SingleCoil_ClampPlate_Solid =
new G4Box(
"MM_SingleCoil_ClampPlate_Solid",
1165 G4cout << G4endl <<
"###### QweakSimMainMagnet: Define SingleCoil_ClampPlate_Logical " << G4endl << G4endl;
1169 "MM_SingleCoil_ClampPlate_Logical",
1174 G4ThreeVector* leftcenter =
new G4ThreeVector();
1175 G4ThreeVector* rightcenter =
new G4ThreeVector();
1181 for (G4int n=0; n<8; n++) {
1195 leftcenter->setZ(0.0*cm);
1199 rightcenter->setZ(0.0*cm);
1225 "MainMagnet_LeftClampPlate_Physical",
1234 "MainMagnet_RightClampPlate_Physical",
1245 G4Colour blue (0.,0.,1.);
1246 G4Colour aluminium ( 169/255., 172/255., 182/255.);
1247 G4Colour copper ( 184/255., 115/255., 51/255.);
1262 G4cout << G4endl <<
"###### QweakSimMainMagnet: Define MainMagnet_MiniClampPlate_Solid " << G4endl << G4endl;
1265 G4Box* SingleCoil_MiniClampPlate_Solid =
new G4Box(
"MM_SingleCoil_MiniClampPlate_Solid",
1271 G4Box* Chamfer_Solid =
new G4Box(
"Chamfer_Solid",
1288 SingleCoil_MiniClampPlate_Solid,
1290 Transform_Chamfer1);
1305 Transform_Chamfer2);
1308 G4cout << G4endl <<
"###### QweakSimMainMagnet: Define SingleCoil_RightMiniClampPlate_Logical " << G4endl << G4endl;
1312 "MM_SingleCoil_RightMiniClampPlate_Logical",
1334 SingleCoil_MiniClampPlate_Solid,
1336 Transform_Chamfer3);
1348 Transform_Chamfer4);
1350 G4cout << G4endl <<
"###### QweakSimMainMagnet: Define SingleCoil_RightMiniClampPlate_Logical " << G4endl << G4endl;
1354 "MM_SingleCoil_MiniClampPlate_Logical",
1360 G4ThreeVector* leftcenter =
new G4ThreeVector();
1361 G4ThreeVector* rightcenter =
new G4ThreeVector();
1367 for (G4int n=0; n<8; n++) {
1381 leftcenter->setZ(0.0*cm);
1385 rightcenter->setZ(0.0*cm);
1411 "MainMagnet_LeftMiniClampPlate_Physical",
1420 "MainMagnet_RightMiniClampPlate_Physical",
1431 G4Colour aluminium ( 169/255., 172/255., 182/255.);
1447 G4cout << G4endl <<
"###### QweakSimMainMagnet: Define MainMagnet_MiniClampPlate_Solid " << G4endl << G4endl;
1450 G4Box* SingleCoil_FramePlate_Solid =
new G4Box(
"MM_SingleCoil_FramePlate_Solid",
1464 G4Box* Subtraction_CenterBox_Solid =
new G4Box(
"Subtraction_CenterBox_Solid",
1478 SingleCoil_FramePlate_Solid,
1479 Subtraction_CenterBox_Solid,
1480 Transform_CenterBox);
1490 G4Tubs* Subtraction_UpstreamCylinder_Solid =
new G4Tubs(
"Subtraction_UpstreamCylinder_Solid",
1511 Subtraction_UpstreamCylinder_Solid,
1512 Transform_UpstreamCylinder);
1519 G4Tubs* Subtraction_DownstreamCylinder_Solid =
new G4Tubs(
"Subtraction_DownstreamCylinder_Solid",
1536 Subtraction_DownstreamCylinder_Solid,
1537 Transform_DownstreamCylinder);
1545 G4Box* Subtraction_DownstreamBox_Solid =
new G4Box(
"Subtraction_DownstreamBox_Solid",
1558 Subtraction_DownstreamBox_Solid,
1559 Transform_DownstreamBox);
1573 "MM_SingleCoil_FramePlate_Logical",
1582 for (G4int n=0; n<8; n++) {
1597 "MainMagnet_FramePlate_Physical",
1606 G4Colour aluminium ( 169/255., 172/255., 182/255.);
1607 G4Colour copper ( 184/255., 115/255., 51/255.);
1608 G4Color green_yellow ( 173/255., 255/255., 47/255.);
1624 G4cout << G4endl <<
"###### QweakSimMainMagnet: Define MainMagnet_MountingBlock_Solid " << G4endl << G4endl;
1627 G4Box* SingleCoil_RadialMountingBlock_Solid =
new G4Box(
"MM_SingleCoil_RadialMountingBlock_Solid",
1633 G4cout << G4endl <<
"###### QweakSimMainMagnet: Define SingleCoil_RadialMountingBlock_Logical " << G4endl << G4endl;
1637 "MM_SingleCoil_RadialMountingBlock_Logical",
1644 G4ThreeVector* leftcenter =
new G4ThreeVector();
1645 G4ThreeVector* rightcenter =
new G4ThreeVector();
1648 for (G4int n=0; n<8; n++) {
1662 leftcenter->setZ(0.0*cm);
1666 rightcenter->setZ(0.0*cm);
1702 "MainMagnet_LeftRadialMountingBlock_Upstream_Physical",
1711 "MainMagnet_RightRadialMountingBlock_Upstream_Physical",
1720 "MainMagnet_LeftRadialMountingBlock_Downstream_Physical",
1729 "MainMagnet_RightRadialMountingBlock_Downstream_Physical",
1739 G4Colour aluminium ( 169/255., 172/255., 182/255.);
1752 G4cout << G4endl <<
"###### QweakSimMainMagnet: Define MainMagnet_DownstreamSupportBox_Solid " << G4endl << G4endl;
1782 G4Box* DownstreamHorizontalDoubleTBeam_Solid =
new G4Box(
"DownstreamHorizontalDoubleTBeam_Solid",
1787 G4Box* Subtract_DownstreamHorizontalDoubleTBeam_Solid =
new G4Box(
"SubtractDownstreamHorizontalDoubleTBeam_Solid",
1793 std::vector< G4ThreeVector > LocalTranslation_HorizontalDoubleTBeam_Subtract;
1794 LocalTranslation_HorizontalDoubleTBeam_Subtract.clear();
1795 LocalTranslation_HorizontalDoubleTBeam_Subtract.resize(2);
1798 LocalTranslation_HorizontalDoubleTBeam_Subtract[0].setX(0.0*cm);
1800 LocalTranslation_HorizontalDoubleTBeam_Subtract[0].setZ(0.0*cm);
1803 LocalTranslation_HorizontalDoubleTBeam_Subtract[1].setX(0.0*cm);
1805 LocalTranslation_HorizontalDoubleTBeam_Subtract[1].setZ(0.0*cm);
1808 G4RotationMatrix LocalRotation_Subtraction;
1810 G4Transform3D Transform3D_TopSubtraction (LocalRotation_Subtraction, LocalTranslation_HorizontalDoubleTBeam_Subtract[0] );
1811 G4Transform3D Transform3D_BottomSubtraction (LocalRotation_Subtraction, LocalTranslation_HorizontalDoubleTBeam_Subtract[1] );
1815 DownstreamHorizontalDoubleTBeam_Solid,
1816 Subtract_DownstreamHorizontalDoubleTBeam_Solid,
1817 Transform3D_TopSubtraction);
1822 Subtract_DownstreamHorizontalDoubleTBeam_Solid,
1823 Transform3D_BottomSubtraction);
1829 "SupportFrame_DownstreamHorizontalDoubleTBeam_Logical",
1860 G4cout << G4endl <<
"###### QweakSimMainManet: Define SupportFrame_DownstreamHorizontalDoubleTBeam_Physical" << G4endl << G4endl;
1864 "SupportFrame_DownstreamHorizontalDoubleTBeam_TopOuter_Physical",
1874 "SupportFrame_DownstreamHorizontalDoubleTBeam_TopInner_Physical",
1883 "SupportFrame_DownstreamHorizontalDoubleTBeam_BottomInner_Physical",
1892 "SupportFrame_DownstreamHorizontalDoubleTBeam_BottomOuter_Physical",
1914 G4Box* DownstreamVerticalDoubleTBeam_Solid =
new G4Box(
"DownstreamVerticalDoubleTBeam_Solid",
1919 G4Box* Subtract_DownstreamVerticalDoubleTBeam_Solid =
new G4Box(
"SubtractDownstreamVerticalDoubleTBeam_Solid",
1925 std::vector< G4ThreeVector > LocalTranslation_VerticalDoubleTBeam_Subtract;
1926 LocalTranslation_VerticalDoubleTBeam_Subtract.clear();
1927 LocalTranslation_VerticalDoubleTBeam_Subtract.resize(2);
1931 LocalTranslation_VerticalDoubleTBeam_Subtract[0].setY(0.0*cm);
1932 LocalTranslation_VerticalDoubleTBeam_Subtract[0].setZ(0.0*cm);
1936 LocalTranslation_VerticalDoubleTBeam_Subtract[1].setY(0.0*cm);
1937 LocalTranslation_VerticalDoubleTBeam_Subtract[1].setZ(0.0*cm);
1940 G4RotationMatrix LocalRotation_VerticalSubtraction;
1942 G4Transform3D Transform3D_LeftSubtraction (LocalRotation_VerticalSubtraction, LocalTranslation_VerticalDoubleTBeam_Subtract[0] );
1943 G4Transform3D Transform3D_RightSubtraction (LocalRotation_VerticalSubtraction, LocalTranslation_VerticalDoubleTBeam_Subtract[1] );
1947 DownstreamVerticalDoubleTBeam_Solid,
1948 Subtract_DownstreamVerticalDoubleTBeam_Solid,
1949 Transform3D_LeftSubtraction);
1954 Subtract_DownstreamVerticalDoubleTBeam_Solid,
1955 Transform3D_RightSubtraction);
1961 "SupportFrame_DownstreamVerticalDoubleTBeam_Logical",
1992 G4cout << G4endl <<
"###### QweakSimMainManet: Define SupportFrame_DownstreamVerticalDoubleTBeam_Physical" << G4endl << G4endl;
1996 "SupportFrame_DownstreamVerticalDoubleTBeam_TopOuter_Physical",
2006 "SupportFrame_DownstreamVerticalDoubleTBeam_TopInner_Physical",
2015 "SupportFrame_DownstreamVerticalDoubleTBeam_BottomInner_Physical",
2024 "SupportFrame_DownstreamVerticalDoubleTBeam_BottomOuter_Physical",
2043 G4Box* Downstream45DegDoubleTBeam_Solid =
new G4Box(
"Downstream45DegHorizontalDoubleTBeam_Solid",
2048 G4Box* Subtract_Downstream45DegDoubleTBeam_Solid =
new G4Box(
"SubtractDownstream45DegDoubleTBeam_Solid",
2054 std::vector< G4ThreeVector > LocalTranslation_45DegDoubleTBeam_Subtract;
2055 LocalTranslation_45DegDoubleTBeam_Subtract.clear();
2056 LocalTranslation_45DegDoubleTBeam_Subtract.resize(2);
2059 LocalTranslation_45DegDoubleTBeam_Subtract[0].setX( 0.0*cm);
2061 LocalTranslation_45DegDoubleTBeam_Subtract[0].setZ( 0.0*cm);
2064 LocalTranslation_45DegDoubleTBeam_Subtract[1].setX( 0.0*cm);
2066 LocalTranslation_45DegDoubleTBeam_Subtract[1].setZ( 0.0*cm);
2069 G4RotationMatrix LocalRotation_45DegSubtraction;
2071 G4Transform3D Transform3D_45DegTopSubtraction (LocalRotation_45DegSubtraction, LocalTranslation_45DegDoubleTBeam_Subtract[0] );
2072 G4Transform3D Transform3D_45DegBottomSubtraction (LocalRotation_45DegSubtraction, LocalTranslation_45DegDoubleTBeam_Subtract[1] );
2076 Downstream45DegDoubleTBeam_Solid,
2077 Subtract_Downstream45DegDoubleTBeam_Solid,
2078 Transform3D_45DegTopSubtraction);
2083 Subtract_Downstream45DegDoubleTBeam_Solid,
2084 Transform3D_45DegBottomSubtraction);
2089 G4Box* Subtract_Downstream45DegDoubleTBeam_Chamfer_Solid =
new G4Box(
"Subtract_Downstream45DegDoubleTBeam_Chamfer_Solid",
2096 std::vector< G4ThreeVector > LocalTranslation_45DegDoubleTBeam_SubtractChamfer;
2097 LocalTranslation_45DegDoubleTBeam_SubtractChamfer.clear();
2098 LocalTranslation_45DegDoubleTBeam_SubtractChamfer.resize(2);
2102 LocalTranslation_45DegDoubleTBeam_SubtractChamfer[0].setY( 0.0*cm);
2103 LocalTranslation_45DegDoubleTBeam_SubtractChamfer[0].setZ( 0.0*cm);
2107 LocalTranslation_45DegDoubleTBeam_SubtractChamfer[1].setY( 0.0*cm);
2108 LocalTranslation_45DegDoubleTBeam_SubtractChamfer[1].setZ( 0.0*cm);
2111 G4RotationMatrix LocalRotation_45DegSubtraction_LeftChamfer;
2112 LocalRotation_45DegSubtraction_LeftChamfer.rotateZ(-45.0*degree);
2114 G4RotationMatrix LocalRotation_45DegSubtraction_RightChamfer;
2115 LocalRotation_45DegSubtraction_RightChamfer.rotateZ(45*degree);
2118 G4Transform3D Transform3D_45DegLeftSubtractionChamfer (LocalRotation_45DegSubtraction_LeftChamfer , LocalTranslation_45DegDoubleTBeam_SubtractChamfer[0] );
2119 G4Transform3D Transform3D_45DegRightSubtractionChamfer (LocalRotation_45DegSubtraction_RightChamfer , LocalTranslation_45DegDoubleTBeam_SubtractChamfer[1] );
2124 Subtract_Downstream45DegDoubleTBeam_Chamfer_Solid,
2125 Transform3D_45DegLeftSubtractionChamfer);
2130 Subtract_Downstream45DegDoubleTBeam_Chamfer_Solid,
2131 Transform3D_45DegRightSubtractionChamfer);
2139 "SupportFrame_Downstream45DegDoubleTBeam_Logical",
2150 for (G4int n=0; n<4; n++) {
2165 "SupportFrame_Downstream45DegDoubleTBeam",
2178 G4cout << G4endl <<
"###### QweakSimMainMagnet: Setting Attributes for downstream support frame" << G4endl << G4endl;
2180 G4Colour blue (0.,0.,1.);
2196 G4cout << G4endl <<
"###### Leaving QweakSimMainMagnet::Construct_SupportFrame() " << G4endl << G4endl;
2205 G4cout << G4endl <<
"###### QweakSimMainMagnet: Define MainMagnet_DownstreamSpider_RadialSlabs_Solids " << G4endl << G4endl;
2207 G4Tubs* DownstreamSpider_Solid =
new G4Tubs(
"DowmstreamSpider_Solid",
2219 "DownstreamSpider_Log",
2224 G4ThreeVector position_DownstreamSpider = G4ThreeVector(0.0,
2230 position_DownstreamSpider,
2231 "DownstreamSpider_Physical",
2243 G4Box* DownstreamSpider_RadialSlab_Solid =
new G4Box(
"DownstreamSpider_RadialSlab_Solid",
2251 "DownstreamSpider_RadialSlab_Logical",
2257 for (G4int n=0; n<8; n++) {
2270 "DownstreamSpider_RadialSlab_Physical",
2282 G4Colour aluminium ( 169/255., 172/255., 182/255.);
2283 G4Color khaki3 ( 205/255., 198/255., 115/255.);
G4Material * SingleCoil_MiniClampPlate_Material
G4double Subtraction_DownstreamBox_FullLength_X
G4RotationMatrix Rotation_SubtractionCylinder
std::vector< G4RotationMatrix * > Rotation_Lintel
std::vector< G4VPhysicalVolume * > SingleCoil_RightClampPlate_Physical
G4double SingleCoil_MasterContainer_FullLength_Y
void Construct_UpstreamSpider(G4VPhysicalVolume *MotherVolume)
G4double MainMagnet_MasterContainer_FullLength_X
G4VPhysicalVolume * MainMagnet_MasterContainer_Physical
G4double DownstreamSpider_PhiAngleStart
G4ThreeVector Position_Chamfer4
G4double SupportFrame_Downstream45DegDoubleTBeam_FullLength_X
G4RotationMatrix Rotation_Chamfer4
G4double DownstreamSpider_DiameterMax
G4double Chamfer_FullLength_Y
G4double RadialMountingBlock_FullLength_Y
std::vector< G4VPhysicalVolume * > SingleCoil_FramePlate_Physical
std::vector< G4VPhysicalVolume * > SupportFrame_DownstreamHorizontalDoubleTBeam_Physical
G4double Lintel_FullLength_X
G4double SingleCoil_MasterContainer_FullLength_Z
std::vector< G4ThreeVector > Translation_Lintel
G4double MiniClampPlate_CenterPositionInR
G4double SupportFrame_Downstream45DegDoubleTBeam_FullLength_Y
G4Material * UpstreamSpider_Material
std::vector< G4double > Angle_MiniClampPlate
G4LogicalVolume * SingleCoil_Wing_Logical
std::vector< G4double > Angle_Lintel
std::vector< G4ThreeVector > Translation_SingleCoil_LowerPlate
G4Material * SupportFrame_Material
G4VPhysicalVolume * UpstreamSpider_Physical
std::vector< G4VPhysicalVolume * > Lintel_Physical
G4RotationMatrix Rotation_Chamfer2
std::vector< G4VPhysicalVolume * > SupportFrame_DownstreamVerticalDoubleTBeam_Physical
G4ThreeVector Position_DownstreamBox
static QweakSimMaterial * GetInstance()
G4Material * Lintel_Material
G4double SingleCoil_Wing_PhiAngleStart
std::vector< G4ThreeVector > Translation_RightRadialMountingBlock_Downstream
G4ThreeVector Position_CenterBox
G4VisAttributes * DownstreamSpider_RadialSlab_VisAtt
G4LogicalVolume * UpstreamSpider_LowThetaCutoutFinal_Logical
G4double SupportFrame_DownstreamVerticalDoubleTBeam_FullLength_Y
G4Material * SingleCoil_Material
std::vector< G4ThreeVector > Translation_SingleCoil_UpperPlate
void SetCenterPositionInZ(G4double myCenterPositionInZ)
std::vector< G4ThreeVector > Translation_RightMiniClampPlate
G4double RadialMountingBlock_UpstreamPositionInZ
G4double UpstreamSpider_FullThickness
G4LogicalVolume * UpstreamSpider_LowThetaCutoutLeft_Logical
G4LogicalVolume * UpstreamSpider_Tube_Subtraction_Logical
G4VPhysicalVolume * UpstreamSpider_LowThetaCutoutRight_Physical
std::vector< G4RotationMatrix * > Rotation_DownstreamSpider_RadialSlab
G4LogicalVolume * SingleCoil_RightMiniClampPlate_Logical
G4double ClampPlate_FullLength_Z
G4double UpstreamSpider_PhiAngleStart
std::vector< G4double > Angle_DownstreamSpider_RadialSlab
std::vector< G4RotationMatrix * > Rotation_FramePlate
std::vector< G4RotationMatrix * > Rotation_DoubleTBeam45Deg
G4double SingleCoil_MasterContainer_FullLength_X
G4LogicalVolume * UpstreamSpider_LowThetaCutoutRight_Logical
G4double DownstreamSpider_RadialSlab_FullLength_Y
std::vector< G4VPhysicalVolume * > SingleCoil_UpperPlate_Physical
G4LogicalVolume * DownstreamSpider_RadialSlab_Logical
G4double SingleCoil_Plate_FullLength_Y
void Construct_CoilFrames(G4VPhysicalVolume *MotherVolume)
G4double MiniClampPlate_FullLength_Z
G4VisAttributes * UpstreamSpider_VisAtt
std::vector< G4ThreeVector > Translation_DownstreamVerticalDoubleTBeam
std::vector< G4VPhysicalVolume * > SingleCoil_RightWing_Physical
std::vector< G4ThreeVector > Translation_SingleCoil
static const G4bool pSurfChk
G4double SingleCoil_Plate_FullLength_Z
std::vector< G4RotationMatrix * > Rotation_SingleCoil_RightWing
G4double UpstreamSpider_DiameterMax
G4double Chamfer_FullLength_Z
G4double MainMagnet_MasterContainer_FullLength_Y
G4double DownstreamSpider_DiameterMin
G4Material * SingleCoil_RadialMountingBlock_Material
std::vector< G4ThreeVector > Translation_Downstream45DegDoubleTBeam
std::vector< G4VPhysicalVolume * > SingleCoil_RightRadialMountingBlock_Upstream_Physical
G4double MiniClampPlate_FullLength_X
G4double RadialMountingBlock_DownstreamPositionInZ
G4double RadialMountingBlock_FullLength_X
G4double DownstreamSpider_RadialSlab_CenterPositionInR
G4double CoilFramePlate_FullLength_Z
std::vector< G4ThreeVector > Translation_LeftMiniClampPlate
G4double Lintel_FullLength_Z
G4double Subtraction_CenterBox_FullLength_Y
G4double SupportFrame_DownstreamVerticalDoubleTBeam_FullLength_X
std::vector< G4ThreeVector > Translation_SingleCoil_LeftWing
G4double SupportFrame_Downstream45DegDoubleTBeamSlab_Thickness
void Construct_SupportFrame(G4VPhysicalVolume *MotherVolume)
std::vector< G4double > Angle_ClampPlate
std::vector< G4VPhysicalVolume * > SingleCoil_RightRadialMountingBlock_Downstream_Physical
void Construct_ClampPlates(G4VPhysicalVolume *MotherVolume)
G4VPVParameterisation * MM_SingleCoilParam
G4double Subtraction_DownstreamBox_FullLength_Y
G4double CoilFramePlate_FullLength_X
G4VisAttributes * SupportFrame_DownstreamVerticalDoubleTBeam_VisAtt
G4double SupportFrame_DownstreamHorizontalDoubleTBeam_FullLength_Z
G4double SupportFrame_DownstreamHorizontalDoubleTBeam_FullLength_X
G4LogicalVolume * SingleCoil_LeftMiniClampPlate_Logical
G4double SupportFrame_DownstreamVerticalDoubleTBeam_FullLength_Z
G4double SupportFrame_DownstreamDoubleTBeamRib_Thickness
std::vector< G4UnionSolid * > MyUpstreamSpider_LowThetaCutout_Solid
std::vector< G4VPhysicalVolume * > DownstreamSpider_RadialSlab_Physical
G4double Lintel_FullLength_Y
G4VPhysicalVolume * DownstreamSpider_Physical
G4double Subtraction_CenterBox_FullLength_X
G4double SingleCoil_Wing_DiameterMax
std::vector< G4RotationMatrix * > Rotation_MiniClampPlate
G4VisAttributes * SupportFrame_DownstreamHorizontalDoubleTBeam_VisAtt
G4VisAttributes * SingleCoil_RadialMountingBlock_VisAtt
std::vector< G4ThreeVector > Translation_RightRadialMountingBlock_Upstream
G4LogicalVolume * MainMagnet_MasterContainer_Logical
G4double RadialMountingBlock_CenterPositionInR
G4double Subtraction_DownstreamBox_FullLength_Z
std::vector< G4SubtractionSolid * > FramePlateTemp_Solid
std::vector< G4VPhysicalVolume * > SingleCoil_LeftRadialMountingBlock_Downstream_Physical
G4VisAttributes * SingleCoil_FramePlate_VisAtt
G4double DownstreamSpider_FullThickness
G4double SingleCoil_FullThickness
G4double DownstreamSpider_RadialSlab_FullLength_X
G4LogicalVolume * SingleCoil_FramePlate_Logical
G4LogicalVolume * SingleCoil_ClampPlate_Logical
G4VPhysicalVolume * UpstreamSpider_LowThetaCutoutFinal_Physical
std::vector< G4VPhysicalVolume * > SingleCoil_LeftWing_Physical
G4VPhysicalVolume * UpstreamSpider_LowThetaCutoutLeft_Physical
G4double Lintel_Tilt_Angle
G4Material * SingleCoil_FramePlate_Material
G4double DownstreamSpider_PhiDeltaAngle
G4LogicalVolume * UpstreamSpider_Box_Union_Logical
G4VisAttributes * SupportFrame_Downstream45DegDoubleTBeam_VisAtt
G4Material * GetMaterial(G4String material)
G4double MiniClampPlate_FullLength_Y
G4double CoilFramePlate_CenterPositionInR
G4double DownstreamSpider_RadialSlab_CenterPositionInZ
G4double MiniClampPlate_CenterPositionInZ
std::vector< G4RotationMatrix * > Rotation_SingleCoil_LeftWing
G4double Subtraction_CenterBox_FullLength_Z
std::vector< G4SubtractionSolid * > SupportFrameSubtraction_TempSolid
G4VisAttributes * SingleCoil_MiniClampPlate_VisAtt
G4double Chamfer_FullLength_X
G4double SupportFrame_DownstreamDoubleTBeamSlab_Thickness
G4LogicalVolume * Lintel_Logical
std::vector< G4ThreeVector > Translation_LeftClampPlate
G4LogicalVolume * SingleCoil_Plate_Logical
G4ThreeVector Position_Chamfer1
G4LogicalVolume * SupportFrame_Downstream45DegDoubleTBeam_Logical
std::vector< G4ThreeVector > Translation_DownstreamHorizontalDoubleTBeam
std::vector< G4RotationMatrix * > Rotation_RadialMountingBlock
std::vector< G4UnionSolid * > SupportFrameUnion_TempSolid
std::vector< G4ThreeVector > Translation_FramePlate
std::vector< G4UnionSolid * > MyUpstreamSpider_StrutsUnion_Solid
std::vector< G4ThreeVector > Translation_LeftRadialMountingBlock_Upstream
QweakSimMaterial * pMaterial
G4LogicalVolume * SupportFrame_DownstreamHorizontalDoubleTBeam_Logical
G4ThreeVector Position_Chamfer2
void Construct_DownstreamSpider(G4VPhysicalVolume *MotherVolume)
G4RotationMatrix Rotation_Chamfer3
G4double UpstreamSpider_PhiDeltaAngle
G4double UpstreamSpider_CenterPositionInZ
G4double ClampPlate_FullLength_Y
std::vector< G4ThreeVector > Translation_LeftRadialMountingBlock_Downstream
std::vector< G4ThreeVector > Translation_DownstreamSpider_RadialSlab
G4LogicalVolume * SingleCoil_MasterContainer_Logical
G4ThreeVector Position_UpstreamCylinder
G4double SingleCoil_Wing_DiameterMin
std::vector< G4SubtractionSolid * > MiniClampPlateTemp_Solid
G4double SingleCoil_MinimalRadialDistance
std::vector< G4VPhysicalVolume * > SingleCoil_LowerPlate_Physical
std::vector< G4RotationMatrix * > Rotation_SingleCoil
G4double SingleCoil_Wing_PhiDeltaAngle
G4double UpstreamSpider_DiameterMin
std::vector< G4SubtractionSolid * > MyUpstreamSpider_Solid
G4double CoilFramePlate_CenterPositionInZ
std::vector< G4VPhysicalVolume * > SingleCoil_RightMiniClampPlate_Physical
G4double DoubleTBeam45Deg_CenterPositionInR
G4LogicalVolume * SupportFrame_DownstreamVerticalDoubleTBeam_Logical
std::vector< G4ThreeVector > Translation_RightClampPlate
G4double RadialMountingBlock_FullLength_Z
G4ThreeVector Position_Chamfer3
std::vector< G4SubtractionSolid * > DownstreamSpider_TempSubtractionSolid
G4double Lintel_CenterPositionInR
G4VisAttributes * DownstreamSpider_VisAtt
G4LogicalVolume * UpstreamSpider_Box_Subtraction_Logical
G4VisAttributes * SingleCoil_VisAtt
G4double CoilFramePlate_FullLength_Y
std::vector< G4double > Angle_DoubleTBeam45Deg
G4double MainMagnet_MasterContainer_FullLength_Z
G4RotationMatrix Rotation_Chamfer1
G4double DownstreamSpider_CenterPositionInZ
G4double DownstreamSpider_RadialSlab_FullLength_Z
std::vector< G4double > Angle_FramePlate
G4double ClampPlate_CenterPositionInR
std::vector< G4double > Angle_SingleCoil
void Construct_RadialMountingBlocks(G4VPhysicalVolume *MotherVolume)
G4double SupportFrame_Downstream45DegDoubleTBeamRib_Thickness
G4double SupportFrame_DownstreamHorizontalDoubleTBeam_FullLength_Y
G4LogicalVolume * SingleCoil_RadialMountingBlock_Logical
G4VisAttributes * SingleCoil_ClampPlate_VisAtt
G4RotationMatrix Rotation_SubtractionBox
G4double MainMagnet_CenterPositionInZ
std::vector< G4VPhysicalVolume * > SingleCoil_LeftMiniClampPlate_Physical
G4double SingleCoil_Plate_FullLength_X
void ConstructComponent(G4VPhysicalVolume *MotherVolume)
G4VisAttributes * Lintel_VisAtt
std::vector< G4double > Angle_RadialMountingBlock
G4double SupportFrame_Downstream45DegDoubleTBeam_FullLength_Z
void Construct_UpStreamMiniClampPlates(G4VPhysicalVolume *MotherVolume)
G4double Subtraction_Cylinder_Diameter
std::vector< G4VPhysicalVolume * > SingleCoil_LeftClampPlate_Physical
std::vector< G4VPhysicalVolume * > SupportFrame_Downstream45DegDoubleTBeam_Physical
G4double SingleCoil_CenterPositionInR
G4LogicalVolume * DownstreamSpider_Logical
G4Material * MainMagnet_MasterContainer_Material
G4double Subtraction_Cylinder_Height
G4double positionInZ_DownstreamDoubleTBeam
G4LogicalVolume * UpstreamSpider_Logical
G4ThreeVector Position_DownstreamCylinder
G4double ClampPlate_FullLength_X
G4Material * SingleCoil_ClampPlate_Material
G4double positionInZ_Downstream45DegDoubleTBeam
std::vector< G4ThreeVector > Translation_SingleCoil_RightWing
G4Material * SingleCoil_MasterContainer_Material
std::vector< G4RotationMatrix * > Rotation_ClampPlate
std::vector< G4VPhysicalVolume * > SingleCoil_LeftRadialMountingBlock_Upstream_Physical