#include <G4EvaporationProbability.hh>
Inheritance diagram for G4EvaporationProbability:
Public Member Functions | |
G4EvaporationProbability (G4int anA, G4int aZ, G4double aGamma, G4VCoulombBarrier *aCoulombBarrier) | |
virtual | ~G4EvaporationProbability () |
G4int | GetZ (void) const |
G4int | GetA (void) const |
G4double | ProbabilityDistributionFunction (const G4Fragment &aFragment, G4double K) |
G4double | EmissionProbability (const G4Fragment &fragment, G4double anEnergy) |
Protected Member Functions | |
G4EvaporationProbability () | |
virtual G4double | CrossSection (const G4Fragment &fragment, G4double K)=0 |
virtual G4double | CalcAlphaParam (const G4Fragment &fragment)=0 |
virtual G4double | CalcBetaParam (const G4Fragment &fragment)=0 |
Definition at line 44 of file G4EvaporationProbability.hh.
G4EvaporationProbability::G4EvaporationProbability | ( | G4int | anA, | |
G4int | aZ, | |||
G4double | aGamma, | |||
G4VCoulombBarrier * | aCoulombBarrier | |||
) |
Definition at line 49 of file G4EvaporationProbability.cc.
00052 : theA(anA), 00053 theZ(aZ), 00054 Gamma(aGamma), 00055 theCoulombBarrierptr(aCoulombBarrier) 00056 {}
G4EvaporationProbability::~G4EvaporationProbability | ( | ) | [virtual] |
G4EvaporationProbability::G4EvaporationProbability | ( | ) | [protected] |
virtual G4double G4EvaporationProbability::CalcAlphaParam | ( | const G4Fragment & | fragment | ) | [protected, pure virtual] |
virtual G4double G4EvaporationProbability::CalcBetaParam | ( | const G4Fragment & | fragment | ) | [protected, pure virtual] |
virtual G4double G4EvaporationProbability::CrossSection | ( | const G4Fragment & | fragment, | |
G4double | K | |||
) | [protected, pure virtual] |
Referenced by ProbabilityDistributionFunction().
G4double G4EvaporationProbability::EmissionProbability | ( | const G4Fragment & | fragment, | |
G4double | anEnergy | |||
) | [virtual] |
Implements G4VEmissionProbability.
Definition at line 69 of file G4EvaporationProbability.cc.
References G4Fragment::GetExcitationEnergy().
00071 { 00072 G4double probability = 0.0; 00073 00074 if (anEnergy > 0.0 && fragment.GetExcitationEnergy() > 0.0) { 00075 probability = CalculateProbability(fragment, anEnergy); 00076 00077 } 00078 return probability; 00079 }
G4int G4EvaporationProbability::GetA | ( | void | ) | const [inline] |
G4int G4EvaporationProbability::GetZ | ( | void | ) | const [inline] |
G4double G4EvaporationProbability::ProbabilityDistributionFunction | ( | const G4Fragment & | aFragment, | |
G4double | K | |||
) |
Definition at line 210 of file G4EvaporationProbability.cc.
References G4Fragment::ComputeGroundStateMass(), CrossSection(), G4VEmissionProbability::fPairCorr, G4Fragment::GetA_asInt(), G4Fragment::GetExcitationEnergy(), G4Fragment::GetGroundStateMass(), G4PairingCorrection::GetPairingCorrection(), G4Fragment::GetZ_asInt(), G4EvaporationLevelDensityParameter::LevelDensityParameter(), G4INCL::Math::pi, and G4VEmissionProbability::theEvapLDPptr.
00212 { 00213 G4int ResidualA = fragment.GetA_asInt() - theA; 00214 G4int ResidualZ = fragment.GetZ_asInt() - theZ; 00215 G4double U = fragment.GetExcitationEnergy(); 00216 //G4cout << "### G4EvaporationProbability::ProbabilityDistributionFunction" << G4endl; 00217 //G4cout << "FragZ= " << fragment.GetZ_asInt() << " FragA= " << fragment.GetA_asInt() 00218 // << " Z= " << theZ << " A= " << theA << G4endl; 00219 //G4cout << "PC " << fPairCorr << " DP " << theEvapLDPptr << G4endl; 00220 00221 // if(K <= theCoulombBarrierptr->GetCoulombBarrier(ResidualA,ResidualZ,U)) return 0.0; 00222 00223 G4double delta1 = fPairCorr->GetPairingCorrection(ResidualA,ResidualZ); 00224 00225 G4double delta0 = fPairCorr->GetPairingCorrection(fragment.GetA_asInt(), 00226 fragment.GetZ_asInt()); 00227 00228 00229 G4double ParticleMass = fragment.ComputeGroundStateMass(theZ,theA); 00230 G4double ResidualMass = fragment.ComputeGroundStateMass(ResidualZ,ResidualA); 00231 00232 G4double theSeparationEnergy = ParticleMass + ResidualMass 00233 - fragment.GetGroundStateMass(); 00234 00235 G4double a0 = theEvapLDPptr->LevelDensityParameter(fragment.GetA_asInt(), 00236 fragment.GetZ_asInt(), 00237 U - delta0); 00238 00239 G4double a1 = theEvapLDPptr->LevelDensityParameter(ResidualA, ResidualZ, 00240 U - theSeparationEnergy - delta1); 00241 00242 00243 G4double E0 = U - delta0; 00244 00245 G4double E1 = U - theSeparationEnergy - delta1 - K; 00246 00247 if (E1<0.) { return 0.; } 00248 00249 //JMQ 14/02/09 BUG fixed: hbarc should be in the denominator instead of hbar_Planck 00250 //Without 1/hbar_Panck remains as a width 00251 00252 //G4double Prob=Gamma*ParticleMass/((pi*hbarc)*(pi*hbarc)*std::exp(2*std::sqrt(a0*E0))) 00253 // *K*CrossSection(fragment,K)*std::exp(2*std::sqrt(a1*E1))*millibarn; 00254 00255 static const G4double pcoeff = millibarn/((pi*hbarc)*(pi*hbarc)); 00256 00257 // Fixed numerical problem 00258 G4double Prob = pcoeff*Gamma*ParticleMass*std::exp(2*(std::sqrt(a1*E1) - std::sqrt(a0*E0))) 00259 *K*CrossSection(fragment,K); 00260 00261 return Prob; 00262 }