G4PreCompoundIon Class Reference

#include <G4PreCompoundIon.hh>

Inheritance diagram for G4PreCompoundIon:

G4PreCompoundFragment G4VPreCompoundFragment G4PreCompoundAlpha G4PreCompoundDeuteron G4PreCompoundHe3 G4PreCompoundTriton

Public Member Functions

 G4PreCompoundIon (const G4ParticleDefinition *, G4VCoulombBarrier *aCoulombBarrier)
virtual ~G4PreCompoundIon ()

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 FactorialFactor (G4int N, G4int P)=0
virtual G4double CoalescenceFactor (G4int A)=0
virtual G4double GetAlpha ()=0
G4double GetBeta ()
G4double GetOpt0 (G4double ekin)

Detailed Description

Definition at line 42 of file G4PreCompoundIon.hh.


Constructor & Destructor Documentation

G4PreCompoundIon::G4PreCompoundIon ( const G4ParticleDefinition ,
G4VCoulombBarrier aCoulombBarrier 
)

Definition at line 47 of file G4PreCompoundIon.cc.

References G4PreCompoundParameters::Getr0(), G4INCL::Math::pi, and G4VPreCompoundFragment::theParameters.

00049   : G4PreCompoundFragment(part,aCoulombBarrier)
00050 {
00051   G4double r0 = theParameters->Getr0();
00052   fact = 0.75*CLHEP::millibarn/(CLHEP::pi*r0*r0*r0);
00053 }

G4PreCompoundIon::~G4PreCompoundIon (  )  [virtual]

Definition at line 55 of file G4PreCompoundIon.cc.

00056 {}


Member Function Documentation

virtual G4double G4PreCompoundIon::CoalescenceFactor ( G4int  A  )  [protected, pure virtual]

Implemented in G4PreCompoundAlpha, G4PreCompoundDeuteron, G4PreCompoundHe3, and G4PreCompoundTriton.

Referenced by ProbabilityDistributionFunction().

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

Implemented in G4PreCompoundAlpha, G4PreCompoundDeuteron, G4PreCompoundHe3, and G4PreCompoundTriton.

Referenced by ProbabilityDistributionFunction().

virtual G4double G4PreCompoundIon::FactorialFactor ( G4int  N,
G4int  P 
) [protected, pure virtual]

Implemented in G4PreCompoundAlpha, G4PreCompoundDeuteron, G4PreCompoundHe3, and G4PreCompoundTriton.

Referenced by ProbabilityDistributionFunction().

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

Implemented in G4PreCompoundAlpha, G4PreCompoundDeuteron, G4PreCompoundHe3, and G4PreCompoundTriton.

Referenced by GetOpt0().

G4double G4PreCompoundIon::GetBeta (  )  [inline, protected]

Definition at line 86 of file G4PreCompoundIon.hh.

References G4VPreCompoundFragment::GetCoulombBarrier().

Referenced by GetOpt0().

00087 {
00088   return -GetCoulombBarrier();
00089 }

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

Definition at line 92 of file G4PreCompoundIon.hh.

References GetAlpha(), GetBeta(), G4PreCompoundParameters::Getr0(), G4INCL::Math::pi, G4VPreCompoundFragment::ResidualA13(), and G4VPreCompoundFragment::theParameters.

Referenced by G4PreCompoundTriton::CrossSection(), G4PreCompoundHe3::CrossSection(), G4PreCompoundDeuteron::CrossSection(), and G4PreCompoundAlpha::CrossSection().

00093 {
00094   G4double r0 = theParameters->Getr0()*ResidualA13();
00095   // cross section is now given in mb (r0 is in mm) for the sake of consistency
00096   //with the rest of the options
00097   return 1.e+25*CLHEP::pi*r0*r0*ResidualA13()*GetAlpha()*(1.+GetBeta()/K);
00098 }

virtual G4double G4PreCompoundIon::GetRj ( G4int  NumberParticles,
G4int  NumberCharged 
) [protected, pure virtual]

Implemented in G4PreCompoundAlpha, G4PreCompoundDeuteron, G4PreCompoundHe3, and G4PreCompoundTriton.

Referenced by ProbabilityDistributionFunction().

G4double G4PreCompoundIon::ProbabilityDistributionFunction ( G4double  eKin,
const G4Fragment aFragment 
) [protected, virtual]

Implements G4PreCompoundFragment.

Definition at line 59 of file G4PreCompoundIon.cc.

References CoalescenceFactor(), CrossSection(), FactorialFactor(), G4VPreCompoundFragment::g4pow, G4VPreCompoundFragment::GetA(), G4Fragment::GetA_asInt(), G4VPreCompoundFragment::GetBindingEnergy(), G4Fragment::GetExcitationEnergy(), G4PreCompoundParameters::GetLevelDensity(), G4VPreCompoundFragment::GetMaximalKineticEnergy(), G4Fragment::GetNumberOfCharged(), G4Fragment::GetNumberOfHoles(), G4Fragment::GetNumberOfParticles(), G4VPreCompoundFragment::GetReducedMass(), G4VPreCompoundFragment::GetRestA(), GetRj(), G4VPreCompoundFragment::IsItPossible(), G4Pow::powN(), and G4VPreCompoundFragment::theParameters.

00061 {
00062   if ( !IsItPossible(aFragment) ) { return 0.0; }
00063   G4double efinal = eKin + GetBindingEnergy();
00064   //G4cout << "Efinal= " << efinal << " Ekin= " << eKin << G4endl;
00065   if(efinal <= 0.0 ) { return 0.0; } 
00066 
00067   G4double U = aFragment.GetExcitationEnergy();
00068   G4int P = aFragment.GetNumberOfParticles();
00069   G4int H = aFragment.GetNumberOfHoles();
00070   G4int A = GetA();
00071   G4int N = P + H;
00072 
00073   G4double g0 = (6.0/pi2)*aFragment.GetA_asInt()*theParameters->GetLevelDensity();
00074   G4double g1 = (6.0/pi2)*GetRestA()*theParameters->GetLevelDensity();
00075 
00076   //JMQ 06/02/209  This is  THE BUG that was killing cluster emission
00077   // G4double gj = (6.0/pi2)*GetA() *
00078   //   G4PreCompoundParameters::GetAddress()->GetLevelDensity();
00079 
00080   G4double gj = g1;
00081 
00082   G4double A0 = G4double(P*P+H*H+P-3*H)/(4.0*g0);
00083   G4double A1 = std::max(0.0,(A0*g0 + A*(A-2*P-1)*0.25)/g1); 
00084 
00085   G4double E0 = U - A0;
00086   //G4cout << "E0= " << E0 << G4endl;
00087   if (E0 <= 0.0) { return 0.0; }
00088 
00089   G4double E1 = (std::max(0.0,GetMaximalKineticEnergy() - eKin - A1)); 
00090 
00091   G4double Aj = A*(A+1)/(4.0*gj); 
00092   G4double Ej = std::max(0.0,efinal - Aj); 
00093 
00094   G4double rj = GetRj(P, aFragment.GetNumberOfCharged());
00095   G4double xs = CrossSection(eKin);
00096 
00097   //G4cout << "rj= " << rj << " xs= " << xs << G4endl;
00098 
00099   // JMQ 10/02/09 reshaping of the formula (unnecessary std::pow elimitated)
00100   /*
00101   G4double r0 = theParameters->Getr0();
00102   G4double pA = (3.0/4.0) * std::sqrt(std::max(0.0, 2.0/(GetReducedMass()*
00103                 (eKin+GetBindingEnergy()))))/(pi * r0 * r0 *r0* GetRestA())* 
00104                 eKin*CrossSection(eKin)*millibarn* 
00105                 CoalescenceFactor(aFragment.GetA_asInt()) * FactorialFactor(N,P)* 
00106        GetRj(aFragment.GetNumberOfParticles(), aFragment.GetNumberOfCharged());
00107 
00108   G4double pB = std::pow((g1*E1)/(g0*E0),N-GetA()-1.0)*(g1/g0);
00109   G4double pC = std::pow((gj*Ej)/(g0*E0),GetA()-1.0)*(gj/g0)/E0; 
00110   pA *= pB * pC;
00111   */
00112   
00113   G4double pA = fact*eKin*xs*rj 
00114     * CoalescenceFactor(aFragment.GetA_asInt()) * FactorialFactor(N,P)
00115     * std::sqrt(2.0/(GetReducedMass()*efinal)) 
00116     * g4pow->powN(g1*E1/(g0*E0), N-A-1)
00117     * g4pow->powN(gj*Ej/(g0*E0), A-1)*gj*g1/(g0*g0*E0*GetRestA()); 
00118    
00119   return pA;
00120 }


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