#include <G4PreCompoundNucleon.hh>
Inheritance diagram for G4PreCompoundNucleon:
Public Member Functions | |
G4PreCompoundNucleon (const G4ParticleDefinition *, G4VCoulombBarrier *aCoulombBarrier) | |
virtual | ~G4PreCompoundNucleon () |
Protected Member Functions | |
virtual G4double | ProbabilityDistributionFunction (G4double eKin, const G4Fragment &aFragment) |
virtual G4double | CrossSection (G4double ekin)=0 |
virtual G4double | GetRj (G4int NumberParticles, G4int NumberCharged)=0 |
virtual G4double | GetAlpha ()=0 |
virtual G4double | GetBeta ()=0 |
G4double | GetOpt0 (G4double ekin) |
Definition at line 41 of file G4PreCompoundNucleon.hh.
G4PreCompoundNucleon::G4PreCompoundNucleon | ( | const G4ParticleDefinition * | , | |
G4VCoulombBarrier * | aCoulombBarrier | |||
) |
Definition at line 48 of file G4PreCompoundNucleon.cc.
00050 : G4PreCompoundFragment(part,aCoulombBarrier) 00051 { 00052 fact = 2*CLHEP::millibarn/(CLHEP::pi2*CLHEP::hbarc*CLHEP::hbarc*CLHEP::hbarc); 00053 }
G4PreCompoundNucleon::~G4PreCompoundNucleon | ( | ) | [virtual] |
Implemented in G4PreCompoundNeutron, and G4PreCompoundProton.
Referenced by ProbabilityDistributionFunction().
virtual G4double G4PreCompoundNucleon::GetAlpha | ( | ) | [protected, pure virtual] |
virtual G4double G4PreCompoundNucleon::GetBeta | ( | ) | [protected, pure virtual] |
Definition at line 82 of file G4PreCompoundNucleon.hh.
References GetAlpha(), GetBeta(), G4PreCompoundParameters::Getr0(), G4INCL::Math::pi, G4VPreCompoundFragment::ResidualA13(), and G4VPreCompoundFragment::theParameters.
Referenced by G4PreCompoundProton::CrossSection(), and G4PreCompoundNeutron::CrossSection().
00083 { 00084 G4double r0 = theParameters->Getr0()*ResidualA13(); 00085 // cross section is now given in mb (r0 is in mm) for the sake of consistency 00086 //with the rest of the options 00087 return 1.e+25*CLHEP::pi*r0*r0*ResidualA13()*GetAlpha()*(1.+GetBeta()/K); 00088 }
virtual G4double G4PreCompoundNucleon::GetRj | ( | G4int | NumberParticles, | |
G4int | NumberCharged | |||
) | [protected, pure virtual] |
Implemented in G4PreCompoundNeutron, and G4PreCompoundProton.
Referenced by ProbabilityDistributionFunction().
G4double G4PreCompoundNucleon::ProbabilityDistributionFunction | ( | G4double | eKin, | |
const G4Fragment & | aFragment | |||
) | [protected, virtual] |
Implements G4PreCompoundFragment.
Definition at line 59 of file G4PreCompoundNucleon.cc.
References CrossSection(), G4cout, G4endl, G4VPreCompoundFragment::g4pow, G4VPreCompoundFragment::GetA(), G4Fragment::GetA_asInt(), G4VPreCompoundFragment::GetBindingEnergy(), G4Fragment::GetExcitationEnergy(), G4PreCompoundParameters::GetLevelDensity(), G4Fragment::GetNumberOfCharged(), G4Fragment::GetNumberOfHoles(), G4Fragment::GetNumberOfParticles(), G4VPreCompoundFragment::GetReducedMass(), G4VPreCompoundFragment::GetRestA(), GetRj(), G4VPreCompoundFragment::GetZ(), G4VPreCompoundFragment::IsItPossible(), G4Pow::powN(), and G4VPreCompoundFragment::theParameters.
00061 { 00062 if ( !IsItPossible(aFragment) ) { return 0.0; } 00063 00064 G4double U = aFragment.GetExcitationEnergy(); 00065 G4int P = aFragment.GetNumberOfParticles(); 00066 G4int H = aFragment.GetNumberOfHoles(); 00067 G4int N = P + H; 00068 00069 G4double g0 = (6.0/pi2)*aFragment.GetA_asInt()*theParameters->GetLevelDensity(); 00070 G4double g1 = (6.0/pi2)*GetRestA()*theParameters->GetLevelDensity(); 00071 00072 G4double A0 = G4double(P*P+H*H+P-3*H)/(4.0*g0); 00073 G4double A1 = (A0 - 0.5*P)/g1; 00074 00075 G4double E0 = U - A0; 00076 if (E0 <= 0.0) { return 0.0; } 00077 00078 G4double E1 = U - eKin - GetBindingEnergy() - A1; 00079 if (E1 <= 0.0) { return 0.0; } 00080 00081 G4double rj = GetRj(P, aFragment.GetNumberOfCharged()); 00082 G4double xs = CrossSection(eKin); 00083 00084 if (rj <0.0 || xs < 0.0) { 00085 std::ostringstream errOs; 00086 G4cout<<"WARNING: NEGATIVE VALUES "<<G4endl; 00087 errOs << "Rj=" << rj <<" xsec(" 00088 <<eKin/MeV<<" MeV)= "<< xs <<" A= "<<GetA()<<" Z= "<<GetZ() 00089 <<G4endl; 00090 throw G4HadronicException(__FILE__, __LINE__, errOs.str()); 00091 } 00092 00093 G4double Probability = fact * GetReducedMass() * rj * xs * eKin * P * (N-1) 00094 * g4pow->powN(g1*E1/(g0*E0),N-2) * g1 / (E0*g0*g0); 00095 00096 /* 00097 G4double Probability = 1.0/pi2*2.0/(hbarc*hbarc*hbarc) * GetReducedMass() 00098 * GetRj(aFragment.GetNumberOfParticles(), aFragment.GetNumberOfCharged()) 00099 * eKin*CrossSection(eKin)*millibarn * P*(N-1.0) * 00100 std::pow(g1*E1/(g0*E0),N-2.0)/E0 * g1/(g0*g0); 00101 */ 00102 00103 return Probability; 00104 }