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 //---------------------------------------------------------------------------// 00032 // Begin description of class here 00037 // End class description 00038 // 00043 // 00044 // --------------------------------------------------------------------------// 00063 // --------------------------------------------------------------------------// 00064 00065 #ifndef _MJGEOMETRYDETECTORCONSTRUCTION_HH 00066 #define _MJGEOMETRYDETECTORCONSTRUCTION_HH 00067 00068 //---------------------------------------------------------------------------// 00069 00070 // GEANT4 headers 00071 #include "G4VUserDetectorConstruction.hh" 00072 00073 // MJ headers 00074 #include "geometry/MJGeometryShield.hh" 00075 #include "geometry/MJGeometryDetector.hh" 00076 00077 // Forward declarations 00078 class G4Box; 00079 class G4LogicalVolume; 00080 class G4VPhysicalVolume; 00081 class MJMaterial; 00082 class MJGeometryDetectorMessenger; 00083 class MJGerdaLocalMaterialTable; 00084 00085 //---------------------------------------------------------------------------// 00086 00087 class MJGeometryDetectorConstruction : public G4VUserDetectorConstruction { 00088 public: 00089 00090 //default constructor 00091 MJGeometryDetectorConstruction(); 00092 00093 00094 //destructor 00095 ~MJGeometryDetectorConstruction(); 00096 00097 //public interface 00098 public: 00099 G4VPhysicalVolume* Construct(); 00100 void BuildAllMaterialsInDatabase(); 00101 G4VPhysicalVolume* ConstructDetector(); 00102 00103 inline MJGeometryShield *GetShield() { return theShield; }; 00104 inline MJGeometryDetector *GetDetector() {return theDetector;}; 00105 00106 inline void SetDatabaseFlag(G4bool xflag) {fUseDatabase = xflag;} 00107 inline G4bool GetDatabaseFlag() {return fUseDatabase;} 00108 00109 void SetDetector( G4String ); 00110 00111 00112 //protected members 00113 protected: 00114 00115 00116 //private members 00117 private: 00118 00119 // Added by RH, 7/4/2004 00120 MJMaterial **fMJMaterials; // Pointer to array of pointers to materials 00121 G4int fNumberOfMaterials; 00122 00123 G4Box *solidWorld; 00124 G4LogicalVolume *logicWorld; 00125 G4VPhysicalVolume *physiWorld; 00126 00127 MJGeometryShield *theShield; 00128 G4VPhysicalVolume *theShieldPhysical; 00129 00130 MJGeometryDetector *theDetector; 00131 G4VPhysicalVolume *theDetectorPhysical; 00132 00133 // Messenger 00134 MJGeometryDetectorMessenger* detectorMessenger; 00135 00136 // Added by L. Pandola in order to skip DataBase 00137 private: 00138 G4bool fUseDatabase; 00139 MJGerdaLocalMaterialTable* localTable; 00140 00141 }; 00142 #endif