G4PreCompoundNucleon Class Reference

#include <G4PreCompoundNucleon.hh>

Inheritance diagram for G4PreCompoundNucleon:

G4PreCompoundFragment G4VPreCompoundFragment G4PreCompoundNeutron G4PreCompoundProton

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)

Detailed Description

Definition at line 41 of file G4PreCompoundNucleon.hh.


Constructor & Destructor Documentation

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]

Definition at line 55 of file G4PreCompoundNucleon.cc.

00056 {}


Member Function Documentation

virtual G4double G4PreCompoundNucleon::CrossSection ( G4double  ekin  )  [protected, pure virtual]

Implemented in G4PreCompoundNeutron, and G4PreCompoundProton.

Referenced by ProbabilityDistributionFunction().

virtual G4double G4PreCompoundNucleon::GetAlpha (  )  [protected, pure virtual]

Implemented in G4PreCompoundNeutron, and G4PreCompoundProton.

Referenced by GetOpt0().

virtual G4double G4PreCompoundNucleon::GetBeta (  )  [protected, pure virtual]

Implemented in G4PreCompoundNeutron, and G4PreCompoundProton.

Referenced by GetOpt0().

G4double G4PreCompoundNucleon::GetOpt0 ( G4double  ekin  )  [inline, protected]

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 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:58 2013 for Geant4 by  doxygen 1.4.7