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 00038 // End class description 00039 // 00044 // 00045 // --------------------------------------------------------------------------// 00056 // --------------------------------------------------------------------------// 00057 00058 #ifndef _MJGENERATORPNNL_HH 00059 #define _MJGENERATORPNNL_HH 00060 00061 //---------------------------------------------------------------------------// 00062 00063 #include "globals.hh" 00064 #include "G4ThreeVector.hh" 00065 00066 #include "generators/MJGeneratorPNNLDecayChain.hh" 00067 #include "generators/MJGeneratorPNNLRadioisotope.hh" 00068 #include "generators/MJVGenerator.hh" 00069 00070 class G4Event; 00071 class G4ParticleGun; 00072 class MJPrimaryGeneratorMessenger; 00073 00074 //---------------------------------------------------------------------------// 00075 00076 class MJGeneratorPNNL : public MJVGenerator 00077 { 00078 public: 00079 00080 //default constructor 00081 MJGeneratorPNNL(); 00082 00083 //copy constructor 00084 MJGeneratorPNNL(const MJGeneratorPNNL &); 00085 00086 //destructor 00087 ~MJGeneratorPNNL(); 00088 00089 //public interface 00090 void BeginOfRunAction(const G4Run *run); 00091 void EndOfRunAction(const G4Run *run); 00092 void GeneratePrimaryVertex(G4Event *event); 00093 void SetParticlePosition(G4ThreeVector vec) {SetPosition(vec);} 00094 // Histogram1D* GetHist_Egen() { return pHist_EgammaGen; }; 00095 void SetPNNLSourceAge(G4double source_age) 00096 {fPNNL_source_age = source_age;} 00097 void SetPNNLDecayChainFile(G4String DecayChain_file) 00098 {fPNNL_DecayChain_file = DecayChain_file;} 00099 void SetPosition(G4ThreeVector pos) { fPosition = pos; } 00100 00101 //protected members 00102 protected: 00103 00104 00105 //private members 00106 private: 00107 void pick_point_in_circle(G4double R, G4double &x, G4double &y); 00108 00109 G4ParticleGun* fParticleGun; 00110 G4int num_events; 00111 G4int igen_flag; 00112 G4int idirection_flag; 00113 G4double E_gamma; 00114 G4double RADIUS_DETECTOR; 00115 G4double ZPOS_DETECTOR; 00116 00117 MJGeneratorPNNLRadioisotope* f_pRadioIsotope; 00118 MJGeneratorPNNLDecayChain* f_pPNNLDecayChain; 00119 00120 G4int hist_cascade[3]; 00121 G4int hist_isotope[10]; 00122 00123 G4bool fFirstCall; 00124 G4bool fUsePNNLGen; 00125 G4String fPNNL_DecayChain_file; 00126 G4double fPNNL_source_age; 00127 00128 G4ThreeVector fPosition; 00129 }; 00130 #endif