#include <G4GNASHTransitions.hh>
Inheritance diagram for G4GNASHTransitions:
Public Member Functions | |
G4GNASHTransitions () | |
virtual | ~G4GNASHTransitions () |
virtual G4double | CalculateProbability (const G4Fragment &aFragment) |
virtual void | PerformTransition (G4Fragment &aFragment) |
Definition at line 34 of file G4GNASHTransitions.hh.
G4GNASHTransitions::G4GNASHTransitions | ( | ) |
G4GNASHTransitions::~G4GNASHTransitions | ( | ) | [virtual] |
G4double G4GNASHTransitions::CalculateProbability | ( | const G4Fragment & | aFragment | ) | [virtual] |
Implements G4VPreCompoundTransitions.
Definition at line 43 of file G4GNASHTransitions.cc.
References G4Fragment::GetA(), G4PreCompoundParameters::GetAddress(), G4Fragment::GetExcitationEnergy(), G4PreCompoundParameters::GetLevelDensity(), G4Fragment::GetNumberOfHoles(), and G4Fragment::GetNumberOfParticles().
00044 { 00045 const G4double k = 135.0 * MeV*MeV*MeV; 00046 G4double E = aFragment.GetExcitationEnergy(); 00047 G4double P = aFragment.GetNumberOfParticles(); 00048 G4double H = aFragment.GetNumberOfHoles(); 00049 G4double N = P + H; 00050 G4double A = aFragment.GetA(); 00051 00052 G4double theMatrixElement(k*N/(A*A*A*E)); 00053 G4double x = E/N; 00054 if ( x < 2.0*MeV ) theMatrixElement *= x/std::sqrt(14.0*MeV*MeV); 00055 else if ( x < 7.0*MeV ) x *= std::sqrt(x/7.0*MeV); 00056 else if ( x < 15.0*MeV ) ; 00057 else x *= std::sqrt(15.0*MeV/x); 00058 00059 // gg = (6.0/pi2)*a*A 00060 G4double gg = (6.0/pi2)*G4PreCompoundParameters::GetAddress()->GetLevelDensity()*A; 00061 00062 G4double Epauli = ((P+1.0)*(P+1.0) + (H+1.0)*(H+1.0) + (P+1.0) - 3.0*(H-1.0))/4.0; 00063 00064 G4double Probability = gg*gg*gg *(E-Epauli)*(E-Epauli); 00065 Probability /= 2.0*(N+1.0)*h_Planck; 00066 Probability *= theMatrixElement; 00067 00068 return Probability; 00069 }
void G4GNASHTransitions::PerformTransition | ( | G4Fragment & | aFragment | ) | [virtual] |
Implements G4VPreCompoundTransitions.
Definition at line 71 of file G4GNASHTransitions.cc.
References G4UniformRand, G4Fragment::GetA(), G4Fragment::GetNumberOfCharged(), G4Fragment::GetNumberOfHoles(), G4Fragment::GetNumberOfParticles(), G4Fragment::GetZ(), G4Fragment::SetNumberOfCharged(), G4Fragment::SetNumberOfHoles(), and G4Fragment::SetNumberOfParticles().
00072 { 00073 result.SetNumberOfParticles(result.GetNumberOfParticles()+1); 00074 result.SetNumberOfHoles(result.GetNumberOfHoles()+1); 00075 if (G4UniformRand() <= result.GetZ()/result.GetA()) 00076 { 00077 result.SetNumberOfCharged(result.GetNumberOfCharged()+1); 00078 } 00079 00080 if (result.GetNumberOfParticles() < result.GetNumberOfCharged()) 00081 { 00082 result.SetNumberOfCharged(result.GetNumberOfParticles()); 00083 } 00084 }