00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef G4NuclearDecayChannel_h
00027 #define G4NuclearDecayChannel_h 1
00028
00029 #include "globals.hh"
00030 #include "G4VDecayChannel.hh"
00031 #include "G4Ions.hh"
00032 #include "G4IonTable.hh"
00033 #include "G4DynamicParticle.hh"
00034 #include "G4ParticleTable.hh"
00035 #include "G4GeneralPhaseSpaceDecay.hh"
00036 #include "G4RadioactiveDecayMode.hh"
00037
00038 #include <CLHEP/Random/RandGeneral.h>
00039
00041
00042 class G4NuclearDecayChannel : public G4GeneralPhaseSpaceDecay
00043 {
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 public:
00054
00055 G4NuclearDecayChannel(const G4RadioactiveDecayMode&, G4int Verbose) :
00056 G4GeneralPhaseSpaceDecay(Verbose) {;}
00057
00058
00059 G4NuclearDecayChannel(const G4RadioactiveDecayMode& theMode, G4int Verbose,
00060 const G4ParticleDefinition* theParentNucleus,
00061 G4double theBR, G4double theQtransition, G4int A,
00062 G4int Z, G4double theDaughterExcitation);
00063
00064
00065 G4NuclearDecayChannel(const G4RadioactiveDecayMode& theMode, G4int Verbose,
00066 const G4ParticleDefinition* theParentNucleus,
00067 G4double theBR, G4double theQtransition, G4int A,
00068 G4int Z, G4double theDaughterExcitation,
00069 const G4String theDaughterName1);
00070
00071
00072 G4NuclearDecayChannel(const G4RadioactiveDecayMode& theMode, G4int Verbose,
00073 const G4ParticleDefinition* theParentNucleus,
00074 G4double theBR, G4double ,
00075 G4bool , CLHEP::RandGeneral* randBeta,
00076 G4double theQtransition, G4int A, G4int Z,
00077 G4double theDaughterExcitation,
00078 const G4String theDaughterName1,
00079 const G4String theDaughterName2);
00080
00081
00082
00083 ~G4NuclearDecayChannel(){;}
00084
00085
00086
00087 G4DecayProducts* DecayIt(G4double theParentMass);
00088
00089
00090 void SetHLThreshold(G4double hl) {halflifethreshold = hl;}
00091
00092
00093 void SetICM(G4bool icm) {applyICM = icm;}
00094
00095
00096 void SetARM (G4bool arm) {applyARM = arm;}
00097
00098
00099 inline G4RadioactiveDecayMode GetDecayMode () {return decayMode;}
00100
00101
00102 inline G4double GetDaughterExcitation () {return daughterExcitation;}
00103
00104
00105 inline G4ParticleDefinition* GetDaughterNucleus () {return daughterNucleus;}
00106
00107
00108 private:
00109 G4NuclearDecayChannel(const G4String& theName, const G4String& theParentName,
00110 G4double theBR, G4int theNumberOfDaughters,
00111 const G4String theDaughterName1,
00112 const G4String theDaughterName2,
00113 const G4String theDaughterName3,
00114 const G4String theDaughterName4);
00115
00116 G4NuclearDecayChannel(const G4String& theParentName,
00117 G4double theBR, G4int theNumberOfDaughters,
00118 const G4String& theDaughterName1,
00119 const G4String& theDaughterName2 = "",
00120 const G4String& theDaughterName3 = "");
00121
00122 G4NuclearDecayChannel(const G4String& theParentName,
00123 G4double theParentMass, G4double theBR,
00124 G4int theNumberOfDaughters,
00125 const G4String& theDaughterName1,
00126 const G4String& theDaughterName2 = "",
00127 const G4String& theDaughterName3 = "");
00128
00129 void FillDaughterNucleus(G4int index, G4int A, G4int Z,
00130 G4double theDaughterExcitation);
00131
00132 G4DecayProducts* BetaDecayIt();
00133
00134
00135 protected:
00136 G4RadioactiveDecayMode decayMode;
00137 static const G4double pTolerance;
00138 static const G4double levelTolerance;
00139 G4double daughterExcitation;
00140 G4int daughterA;
00141 G4int daughterZ;
00142 G4ParticleDefinition *daughterNucleus;
00143 G4DynamicParticle* dynamicDaughter;
00144 G4double Qtransition;
00145 G4double halflifethreshold;
00146 G4bool applyICM;
00147 G4bool applyARM;
00148 CLHEP::RandGeneral* RandomEnergy;
00149 };
00150 #endif
00151
00152