Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Class Members | File Members

MaGeGeometryShielding.cc

Go to the documentation of this file.
00001 //---------------------------------------------------------------------------//
00002 //bb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nu//
00003 //                                                                           //
00004 //                         MAJORANA Simulation                               //
00005 //                                                                           //
00006 //      This code implementation is the intellectual property of the         //
00007 //      MAJORANA Collaboration. It is based on Geant4, an intellectual       //
00008 //      property of the RD44 GEANT4 collaboration.                           //
00009 //                                                                           //
00010 //                        *********************                              //
00011 //                                                                           //
00012 //    Neither the authors of this software system, nor their employing       //
00013 //    institutes, nor the agencies providing financial support for this      //
00014 //    work  make  any representation or  warranty, express or implied,       //
00015 //    regarding this software system or assume any liability for its use.    //
00016 //    By copying, distributing or modifying the Program (or any work based   //
00017 //    on on the Program) you indicate your acceptance of this statement,     //
00018 //    and all its terms.                                                     //
00019 //                                                                           //
00020 //bb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nu//
00021 //---------------------------------------------------------------------------//
00022 //                                                          
00023 // $Id: MaGeGeometryShielding.cc,v 1.1 2004/11/17 17:38:35 xliu Exp $ 
00024 //      
00025 // CLASS IMPLEMENTATION:  @CLASS_NAME@.cc
00026 //
00027 //---------------------------------------------------------------------------//
00034 // 
00035 //---------------------------------------------------------------------------//
00063 //---------------------------------------------------------------------------//
00064 //
00065 // G4 includes
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 // MJ include
00085 #include "io/MJLogger.hh"
00086 
00087 // Gerda include
00088 
00089 #include "gerdageometry/MaGeGeometryShielding.hh"
00090 
00091 //---------------------------------------------------------------------------//
00092 
00093 
00094 //---------------------------------------------------------------------------//
00095 
00096 MaGeGeometryShielding::MaGeGeometryShielding() 
00097 {
00098 
00099 
00100     LiquidN2Radius            =2.0*m;
00101 //    WorldVolumeRadius         =2.6*m;
00102 
00103     LiquidN2InnerRadius  = 0.0*cm;
00104     LiquidN2OuterRadius  = 194.0*cm;
00105     LiquidN2Height       = 500.0*cm;   // this is not half height
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 // ---- define volumes ---- //
00144 //
00145 
00146     G4double startAngleOfTheTube = 0.*deg;
00147     G4double spanningAngleOfTheTube = 360.*deg;
00148 
00149 // ---- water tub ---- //
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 // ---- copper tube ---- //
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 // ---- copper upper plate ---- //
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 // ---- copper lower plate ---- //
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 // ---- lead upper plate ---- //
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 // ---- lead lower plate ---- //
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 // ---- LN2 tube ---- //
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 //---------- visualization attributes ------------------//
00261 //
00262   // make colours
00263 //  G4Colour  white   (1.0, 1.0, 1.0) ;
00264 //  G4Colour  grey    (0.5, 0.5, 0.5) ;
00265   G4Colour  lgrey   (.85, .85, .85) ;
00266 //  G4Colour  red     (1.0, 0.0, 0.0) ;
00267 //  G4Colour  blue    (0.0, 0.0, 1.0) ;
00268 //  G4Colour  cyan    (0.0, 1.0, 1.0) ;
00269 //  G4Colour  magenta (1.0, 0.0, 1.0) ; 
00270 //  G4Colour  yellow  (1.0, 1.0, 0.0) ;
00271   G4Colour  orange  (.75, .55, 0.0) ;
00272   G4Colour  lblue   (0.0, 0.0, .75) ;
00273 //  G4Colour  lgreen  (0.0, .75, 0.0) ;
00274 //  G4Colour  green   (0.0, 1.0, 0.0) ;
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 }

Generated on Mon Nov 29 16:58:52 2004 for Majorana Simulation by  doxygen 1.3.9.1