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 00039 // End class description 00040 // 00045 // 00046 // --------------------------------------------------------------------------// 00056 // --------------------------------------------------------------------------// 00057 00058 #ifndef _MJGEOM_HH 00059 #define _MJGEOM_HH 00060 00061 //---------------------------------------------------------------------------// 00062 00063 #include <string> //Language level Headers 00064 #include <vector> 00065 00066 using namespace std; 00067 //---------------------------------------------------------------------------// 00068 #include "database/MJDatabaseMaterial.hh" 00069 00070 class MJDatabaseMEGACrystal; 00071 class MJDatabaseSEGACrystal; 00072 class MJDatabaseElement; 00073 class MJDatabaseIsotope; 00074 class MJDatabaseCloverCrystal; 00075 class MJDatabaseCloverDetector; 00076 class MJDatabaseSimple800g; 00077 class MJDatabaseClover4x50x80DetCalib; 00078 00079 class MJDatabase 00080 { 00081 //public members 00082 public: 00083 //default constructor 00084 MJDatabase(); 00085 00086 //copy constructor 00087 MJDatabase(const MJDatabase &); 00088 00089 //destructor 00090 virtual ~MJDatabase(); 00091 00092 static MJDatabaseMEGACrystal* GetMegaCrystal(string ); 00093 static MJDatabaseMEGACrystal* GetMegaCrystal(int); 00094 static MJDatabaseSEGACrystal* GetSegaCrystal(string ); 00095 static MJDatabaseSEGACrystal* GetSegaCrystal(int); 00096 static MJDatabaseElement * GetElement(string); 00097 static MJDatabaseIsotope * GetIsotope(string); 00098 static MJDatabaseMaterial * GetMaterial(string); 00099 static MJDatabaseCloverCrystal* GetCloverCrystal(string ); 00100 static MJDatabaseCloverCrystal* GetCloverCrystal(int ); 00101 static MJDatabaseCloverDetector* GetCloverDetector(string); 00102 static MJDatabaseCloverDetector* GetCloverDetector(int); 00103 00104 //get a vector of material names 00105 static vector<string> GetMaterialNames(); 00106 00107 //get a vector of materials 00108 static vector<MJDatabaseMaterial> GetAllMaterials(); 00109 00110 //simplest 800g crystal 00111 static MJDatabaseSimple800g* GetSimple800g(string); 00112 00113 //calibration parameters for canbera 4x50x80 00114 static MJDatabaseClover4x50x80DetCalib* 00115 GetClover4x50x80Calib(string, string bt="-infinity", string et="infinity"); 00116 00117 //protected members 00118 protected: 00119 virtual MJDatabaseMEGACrystal* MJDatabaseMegaPsqlImpl(string)=0; 00120 virtual MJDatabaseMEGACrystal* MJDatabaseMegaPsqlImpl(int)=0; 00121 virtual MJDatabaseSEGACrystal* MJDatabaseSegaPsqlImpl(string)=0; 00122 virtual MJDatabaseSEGACrystal* MJDatabaseSegaPsqlImpl(int)=0; 00123 virtual MJDatabaseElement* MJDatabaseElementPsqlImpl(string)=0; 00124 virtual MJDatabaseIsotope* MJDatabaseIsotopePsqlImpl(string)=0; 00125 virtual MJDatabaseMaterial* MJDatabaseMaterialPsqlImpl(string)=0; 00126 virtual MJDatabaseCloverCrystal* MJDatabaseCloverPsqlImpl(string)=0; 00127 virtual MJDatabaseCloverCrystal* MJDatabaseCloverPsqlImpl(int)=0; 00128 virtual MJDatabaseCloverDetector* MJDatabaseCloverDetectorPsqlImpl(string)=0; 00129 virtual MJDatabaseCloverDetector* MJDatabaseCloverDetectorPsqlImpl(int)=0; 00130 00131 virtual MJDatabaseSimple800g* MJDatabaseSimple800gPsqlImpl(string)=0; 00132 virtual MJDatabaseClover4x50x80DetCalib* 00133 MJDatabaseClover4x50x80CalibPsqlImpl(string, string, string)=0; 00134 virtual vector<MJDatabaseMaterial> MJDatabaseAllMaterialsPsqlImpl()=0; 00135 virtual vector<string> MJDatabaseMaterialNamesPsqlImpl()=0; 00136 00137 //private members 00138 private: 00139 }; 00140 // 00141 #endif