00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00034
00035
00063
00064
00065
00066 #include "G4Element.hh"
00067 #include "G4Material.hh"
00068 #include "G4Box.hh"
00069 #include "G4Tubs.hh"
00070 #include "G4Sphere.hh"
00071 #include "G4SubtractionSolid.hh"
00072 #include "G4LogicalVolume.hh"
00073 #include "G4ThreeVector.hh"
00074 #include "G4PVPlacement.hh"
00075 #include "G4PVParameterised.hh"
00076 #include "globals.hh"
00077 #include "G4UnitsTable.hh"
00078 #include "G4Transform3D.hh"
00079 #include "G4RotationMatrix.hh"
00080 #include "G4SDManager.hh"
00081 #include "G4VisAttributes.hh"
00082 #include "G4Colour.hh"
00083
00084
00085 #include "io/MJLogger.hh"
00086
00087
00088
00089 #include "gerdageometry/MaGeGeometryShielding.hh"
00090
00091
00092
00093
00094
00095
00096 MaGeGeometryShielding::MaGeGeometryShielding()
00097 {
00098
00099
00100 LiquidN2Radius =2.0*m;
00101
00102
00103 LiquidN2InnerRadius = 0.0*cm;
00104 LiquidN2OuterRadius = 194.0*cm;
00105 LiquidN2Height = 500.0*cm;
00106
00107 CuTubeInnerRadius = 195.0*cm;
00108 CuTubeOuterRadius = 198.0*cm;
00109 CuTubeHeight = 500.0*cm;
00110
00111 CuUpperPlateInnerRadius = 49.5*cm;
00112 CuUpperPlateOuterRadius = 198.0*cm;
00113 CuUpperPlateHeight = 3.0*cm;
00114
00115 CuLowerPlateInnerRadius = 0.0*cm;
00116 CuLowerPlateOuterRadius = 198.0*cm;
00117 CuLowerPlateHeight = 3.0*cm;
00118
00119 LeadUpperPlateInnerRadius = 49.5*cm;
00120 LeadUpperPlateOuterRadius = 198.0*cm;
00121 LeadUpperPlateHeight = 3.0*cm;
00122
00123 LeadLowerPlateInnerRadius = 0.0*cm;
00124 LeadLowerPlateOuterRadius = 198.0*cm;
00125 LeadLowerPlateHeight = 3.0*cm;
00126
00127 WaterInnerRadius = 0.0*cm;
00128 WaterOuterRadius = 500.0*cm;
00129 WaterHeight = 900.0*cm;
00130
00131 }
00132
00133 MaGeGeometryShielding::~MaGeGeometryShielding()
00134 {
00135 }
00136
00137 void MaGeGeometryShielding::ConstructShielding()
00138 {
00139
00140 G4Material* vacuum = G4Material::GetMaterial("Vacuum");
00141
00142
00143
00144
00145
00146 G4double startAngleOfTheTube = 0.*deg;
00147 G4double spanningAngleOfTheTube = 360.*deg;
00148
00149
00150 G4Material* water=G4Material::GetMaterial("water");
00151 G4Tubs* Water_Tube= new G4Tubs("water_tube",
00152 WaterInnerRadius,
00153 WaterOuterRadius,
00154 WaterHeight*0.5,
00155 startAngleOfTheTube,
00156 spanningAngleOfTheTube);
00157 theWaterTubeLogical = new G4LogicalVolume(
00158 Water_Tube,water,
00159 "thewatertubelogical",0,0,0);
00160
00161 G4Material* copper=G4Material::GetMaterial("MetalCopper");
00162 G4Tubs* Copper_Tube= new G4Tubs("copper_tube",
00163 CuTubeInnerRadius,
00164 CuTubeOuterRadius,
00165 CuTubeHeight*0.5,
00166 startAngleOfTheTube,
00167 spanningAngleOfTheTube);
00168 theCopperTubeLogical = new G4LogicalVolume(
00169 Copper_Tube,copper,
00170 "thecoppertubelogical",0,0,0);
00171 theCopperTubePhysical=
00172 new G4PVPlacement(0,G4ThreeVector(),
00173 theCopperTubeLogical,"thecoppertubephysical",
00174 theWaterTubeLogical,false,0);
00175
00176 G4Tubs* CopperUpper_Tube= new G4Tubs("copperupper_tube",
00177 CuUpperPlateInnerRadius,
00178 CuUpperPlateOuterRadius,
00179 CuUpperPlateHeight*0.5,
00180 startAngleOfTheTube,
00181 spanningAngleOfTheTube);
00182 theCopperUpperPlateLogical = new G4LogicalVolume(
00183 CopperUpper_Tube,copper,
00184 "thecopperuppertubelogical",0,0,0);
00185 G4double xx=0.0;
00186 G4double yy=0.0;
00187 G4double zz=(CuTubeHeight+CuUpperPlateHeight)/2.0;
00188 theCopperUpperPlatePhysical=
00189 new G4PVPlacement(0,G4ThreeVector(xx,yy,zz),
00190 theCopperUpperPlateLogical,"thecopperupperplatephysical",
00191 theWaterTubeLogical,false,0);
00192
00193 G4Tubs* CopperLower_Tube= new G4Tubs("copperlower_tube",
00194 CuLowerPlateInnerRadius,
00195 CuLowerPlateOuterRadius,
00196 CuLowerPlateHeight*0.5,
00197 startAngleOfTheTube,
00198 spanningAngleOfTheTube);
00199 theCopperLowerPlateLogical = new G4LogicalVolume(
00200 CopperLower_Tube,copper,
00201 "thecopperlowertubelogical",0,0,0);
00202 xx=0.0;
00203 yy=0.0;
00204 zz=0.0-(CuTubeHeight+CuLowerPlateHeight)/2.0;
00205 theCopperLowerPlatePhysical=
00206 new G4PVPlacement(0,G4ThreeVector(xx,yy,zz),
00207 theCopperLowerPlateLogical,"thecopperlowerplatephysical",
00208 theWaterTubeLogical,false,0);
00209
00210 G4Material* lead=G4Material::GetMaterial("MetalLead");
00211 G4Tubs* LeadUpper_Tube= new G4Tubs("leadupper_tube",
00212 LeadUpperPlateInnerRadius,
00213 LeadUpperPlateOuterRadius,
00214 LeadUpperPlateHeight*0.5,
00215 startAngleOfTheTube,
00216 spanningAngleOfTheTube);
00217 theLeadUpperPlateLogical = new G4LogicalVolume(
00218 LeadUpper_Tube,copper,
00219 "theleaduppertubelogical",0,0,0);
00220 xx=0.0;
00221 yy=0.0;
00222 zz=(CuTubeHeight+LeadUpperPlateHeight)/2.0+CuUpperPlateHeight;
00223 theLeadUpperPlatePhysical=
00224 new G4PVPlacement(0,G4ThreeVector(xx,yy,zz),
00225 theLeadUpperPlateLogical,"theleadupperplatephysical",
00226 theWaterTubeLogical,false,0);
00227
00228 G4Tubs* LeadLower_Tube= new G4Tubs("leadlower_tube",
00229 LeadLowerPlateInnerRadius,
00230 LeadLowerPlateOuterRadius,
00231 LeadLowerPlateHeight*0.5,
00232 startAngleOfTheTube,
00233 spanningAngleOfTheTube);
00234 theLeadLowerPlateLogical = new G4LogicalVolume(
00235 LeadLower_Tube,copper,
00236 "theleadlowertubelogical",0,0,0);
00237 xx=0.0;
00238 yy=0.0;
00239 zz=0.0-(CuTubeHeight+LeadLowerPlateHeight)/2.0-CuLowerPlateHeight;
00240 theLeadLowerPlatePhysical=
00241 new G4PVPlacement(0,G4ThreeVector(xx,yy,zz),
00242 theLeadLowerPlateLogical,"theleadlowerplatephysical",
00243 theWaterTubeLogical,false,0);
00244
00245 G4Material* liquidnitrogen=G4Material::GetMaterial("LiquidNitrogen");
00246 G4Tubs* LiquidN2_Tube = new G4Tubs("liquidn2_tube",
00247 LiquidN2InnerRadius,
00248 LiquidN2OuterRadius,
00249 LiquidN2Height*0.5,
00250 startAngleOfTheTube,
00251 spanningAngleOfTheTube);
00252 theLiquidN2TubeLogical = new G4LogicalVolume(
00253 LiquidN2_Tube,liquidnitrogen,
00254 "theliquidn2tubelogical",0,0,0);
00255 theLiquidN2TubePhysical =
00256 new G4PVPlacement(0,G4ThreeVector(),
00257 theLiquidN2TubeLogical,"theliquidn2tubephysical",
00258 theWaterTubeLogical,false,0);
00259
00260
00261
00262
00263
00264
00265 G4Colour lgrey (.85, .85, .85) ;
00266
00267
00268
00269
00270
00271 G4Colour orange (.75, .55, 0.0) ;
00272 G4Colour lblue (0.0, 0.0, .75) ;
00273
00274
00275 G4Colour brown (0.7, 0.4, 0.1) ;
00276
00277
00278 G4VisAttributes* WaterVisAtt = new G4VisAttributes(lblue);
00279 WaterVisAtt->SetVisibility(true);
00280 theWaterTubeLogical->SetVisAttributes(WaterVisAtt);
00281
00282 G4VisAttributes* CuVisAtt = new G4VisAttributes(orange);
00283 CuVisAtt->SetVisibility(true);
00284 theCopperTubeLogical->SetVisAttributes(CuVisAtt);
00285 theCopperUpperPlateLogical->SetVisAttributes(CuVisAtt);
00286 theCopperLowerPlateLogical->SetVisAttributes(CuVisAtt);
00287
00288 G4VisAttributes* LeadVisAtt = new G4VisAttributes(brown);
00289 LeadVisAtt->SetVisibility(true);
00290 theLeadUpperPlateLogical->SetVisAttributes(LeadVisAtt);
00291 theLeadLowerPlateLogical->SetVisAttributes(LeadVisAtt);
00292
00293 G4VisAttributes* LN2VisAtt = new G4VisAttributes(lgrey);
00294 LN2VisAtt->SetVisibility(true);
00295 theLiquidN2TubeLogical->SetVisAttributes(LN2VisAtt);
00296
00297 }