#include <G4PromptPhotonEvaporation.hh>
Inheritance diagram for G4PromptPhotonEvaporation:
Public Member Functions | |
G4PromptPhotonEvaporation () | |
virtual | ~G4PromptPhotonEvaporation () |
virtual G4double | GetEmissionProbability (G4Fragment *theNucleus) |
virtual G4Fragment * | EmittedFragment (G4Fragment *theNucleus) |
virtual G4FragmentVector * | BreakUpFragment (G4Fragment *theNucleus) |
virtual G4FragmentVector * | BreakUp (const G4Fragment &theNucleus) |
void | SetVerboseLevel (G4int verbose) |
void | SetICM (G4bool) |
void | RDMForced (G4bool) |
void | SetMaxHalfLife (G4double) |
Definition at line 55 of file G4PromptPhotonEvaporation.hh.
G4PromptPhotonEvaporation::G4PromptPhotonEvaporation | ( | ) |
Definition at line 64 of file G4PromptPhotonEvaporation.cc.
References G4NuclearLevelStore::GetInstance().
00065 :fVerbose(0), fICM(true), fRDM(false), fMaxHalfTime(DBL_MAX), 00066 fEmissionProbability(0.0),levelManager(0),nucleus(0) 00067 { 00068 fNuclearLevelStore = G4NuclearLevelStore::GetInstance(); 00069 theA = theZ = 0; 00070 fEnergyFermi = fExcEnergyMax = gammaE = 0.0; 00071 }
G4PromptPhotonEvaporation::~G4PromptPhotonEvaporation | ( | ) | [virtual] |
G4FragmentVector * G4PromptPhotonEvaporation::BreakUp | ( | const G4Fragment & | theNucleus | ) | [virtual] |
Implements G4VEvaporationChannel.
Definition at line 171 of file G4PromptPhotonEvaporation.cc.
References BreakUpFragment().
00172 { 00173 //G4cout << "G4PromptPhotonEvaporation::BreakUp" << G4endl; 00174 G4Fragment* initialState = new G4Fragment(theNucleus); 00175 G4FragmentVector* v = BreakUpFragment(initialState); 00176 v->push_back(initialState); 00177 return v; 00178 }
G4FragmentVector * G4PromptPhotonEvaporation::BreakUpFragment | ( | G4Fragment * | theNucleus | ) | [virtual] |
Reimplemented from G4VEvaporationChannel.
Definition at line 157 of file G4PromptPhotonEvaporation.cc.
References EmittedFragment().
Referenced by BreakUp().
00158 { 00159 //G4cout << "G4PromptPhotonEvaporation::BreakUpFragment" << G4endl; 00160 G4FragmentVector* v = new G4FragmentVector(); 00161 G4Fragment* gamma = 0; 00162 do { 00163 gamma = EmittedFragment(theNucleus); 00164 if(gamma) { v->push_back(gamma); } 00165 } while(gamma); 00166 00167 return v; 00168 }
G4Fragment * G4PromptPhotonEvaporation::EmittedFragment | ( | G4Fragment * | theNucleus | ) | [virtual] |
Reimplemented from G4VEvaporationChannel.
Definition at line 111 of file G4PromptPhotonEvaporation.cc.
References GetEmissionProbability(), and G4Fragment::GetExcitationEnergy().
Referenced by BreakUpFragment().
00112 { 00113 //G4cout << "G4PromptPhotonEvaporation::EmittedFragment" << G4endl; 00114 00115 G4Fragment* gamma = 0; 00116 if(theNucleus->GetExcitationEnergy() <= keV) { return gamma; } 00117 if(GetEmissionProbability(theNucleus) <= 0.0){ return gamma; } 00118 00119 //G4cout << "G4PromptPhotonEvaporation::EmittedFragment" << G4endl; 00120 /* 00121 G4Fragment* gamma = _contDeexcitation->GenerateGamma(); 00122 if(gamma) { 00123 if (_verbose > 0) { 00124 G4cout << "G4PromptPhotonEvaporation::EmittedFragment continium deex: " 00125 << gamma << G4endl; 00126 G4cout << " Residual: " << nucleus << G4endl; 00127 } 00128 return gamma; 00129 } 00130 } 00131 00132 // Do one photon emission by the discrete deexcitation 00133 _discrDeexcitation->SetNucleus(_nucleus); 00134 _discrDeexcitation->Initialize(); 00135 00136 if(_discrDeexcitation->CanDoTransition()) { 00137 G4Fragment* gamma = _discrDeexcitation->GenerateGamma(); 00138 if(gamma) { 00139 if (_verbose > 0) { 00140 G4cout << "G4PromptPhotonEvaporation::EmittedFragment discrete deex: " 00141 << gamma << G4endl; 00142 G4cout << " Residual: " << nucleus << G4endl; 00143 } 00144 return gamma; 00145 } 00146 } 00147 00148 if (_verbose > 0) { 00149 G4cout << "G4PromptPhotonEvaporation unable emit gamma: " 00150 << nucleus << G4endl; 00151 } 00152 */ 00153 return gamma; 00154 }
G4double G4PromptPhotonEvaporation::GetEmissionProbability | ( | G4Fragment * | theNucleus | ) | [virtual] |
Implements G4VEvaporationChannel.
Definition at line 78 of file G4PromptPhotonEvaporation.cc.
References G4Fragment::GetA_asInt(), G4Fragment::GetExcitationEnergy(), G4Fragment::GetGroundStateMass(), G4NuclearLevelStore::GetManager(), G4NucleiProperties::GetNuclearMass(), and G4Fragment::GetZ_asInt().
Referenced by EmittedFragment().
00079 { 00080 fEmissionProbability = 0.0; 00081 nucleus = theNucleus; 00082 G4double ex = nucleus->GetExcitationEnergy(); 00083 00084 if(nucleus->GetZ_asInt() != theZ || nucleus->GetA_asInt() != theA) { 00085 G4int Z = nucleus->GetZ_asInt(); 00086 G4int A = nucleus->GetA_asInt(); 00087 fExcEnergyMax = -1.0; 00088 if(1 < A && ex > keV) { 00089 fEnergyFermi = G4NucleiProperties::GetNuclearMass(A-1, Z) 00090 + neutron_mass_c2 - nucleus->GetGroundStateMass(); 00091 fExcEnergyMax = fEnergyFermi + 15*MeV; 00092 } 00093 if(ex < fExcEnergyMax) { 00094 00095 theZ = Z; 00096 theA = A; 00097 levelManager = fNuclearLevelStore->GetManager(Z,A); 00098 00099 // continium transition 00100 if(ex >= fEnergyFermi) { 00101 00102 // discrete transition 00103 } else { 00104 } 00105 } 00106 } 00107 return fEmissionProbability; 00108 }
void G4PromptPhotonEvaporation::RDMForced | ( | G4bool | ) | [inline] |
void G4PromptPhotonEvaporation::SetICM | ( | G4bool | ) | [inline] |
void G4PromptPhotonEvaporation::SetMaxHalfLife | ( | G4double | ) | [inline] |
void G4PromptPhotonEvaporation::SetVerboseLevel | ( | G4int | verbose | ) | [inline] |