00001 // This code implementation is the intellectual property of 00002 // the RD44 GEANT4 collaboration. 00003 // 00004 // By copying, distributing or modifying the Program (or any work 00005 // based on the Program) you indicate your acceptance of this statement, 00006 // and all its terms. 00007 // 00008 // $Id: MJGeneratorPNNLDecayChain.hh,v 1.2 2004/11/09 13:42:39 xliu Exp $ 00009 // GEANT4 tag $Name: $ 00010 // 00011 // File: MJGeneratorPNNLDecayChain.hh 00012 // Description: Determines relative freqency of radioisotope decays and 00013 // stores radioisotope objects in PNNL radiactive decay model 00014 // Version: 1.0 00015 // Created: 2004-05-08 00016 // Author: David Jordan 00017 // mail: david.jordan@pnl.gov 00018 // phone: 509-376-0115 00019 00020 #ifndef MJGeneratorPNNLDecayChain_h 00021 #define MJGeneratorPNNLDecayChain_h 1 00022 00023 #include "generators/MJGeneratorPNNLRadioisotope.hh" 00024 #include "generators/MJGeneratorPNNLLookup.hh" 00025 #include "globals.hh" 00026 00027 class MJGeneratorPNNLDecayChain 00028 { 00029 public: 00030 MJGeneratorPNNLDecayChain(); 00031 MJGeneratorPNNLDecayChain(G4String decay_chain_filename, 00032 G4double source_age); 00033 MJGeneratorPNNLDecayChain(const MJGeneratorPNNLDecayChain& DecayChain); 00034 ~MJGeneratorPNNLDecayChain(); 00035 void operator=(const MJGeneratorPNNLDecayChain& DecayChain); 00036 00037 void SetDecayChainFilename(G4String decay_chain_filename) { 00038 fDecayChain_filename = decay_chain_filename; }; 00039 void SetSourceAge(G4double source_age) {fSource_age = source_age;}; 00040 00041 G4String GetDecayChainFilename() const {return fDecayChain_filename; }; 00042 G4double GetSourceAge() const {return fSource_age/kYear; }; 00043 G4int GetIndexOfLastIsotopeSampled() const 00044 {return fLastIsotopeSampled;}; 00045 00046 MJGeneratorPNNLCascadeEvent DoCascadeEvent(); 00047 void DoInitializeGenerator(); 00048 void DoPrintRadioisotopeList() const; 00049 00050 private: 00051 G4String fDecayChain_filename; 00052 G4int fNum_RadioIsotopes; 00053 G4double* fActivity_list; 00054 G4double* f_pT_half_list; 00055 char* f_pT_half_units_list; 00056 G4double* f_pLamda_list; 00057 G4String* fRadioIsotope_label_list; 00058 G4double fSource_age; 00059 G4int fLastIsotopeSampled; 00060 00061 MJGeneratorPNNLRadioisotope** fRadioIsotope_list; 00062 MJGeneratorPNNLLookup* f_pRadioIsotopeSelector; 00063 00064 void CalculateActivityList(); 00065 00066 const static G4int kSecond; 00067 const static G4int kMinute; 00068 const static G4int kHour; 00069 const static G4int kDay; 00070 const static G4int kYear; 00071 }; 00072 00073 #endif 00074 00075