#include <G4PreCompoundIon.hh>
Inheritance diagram for G4PreCompoundIon:

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) |
Definition at line 42 of file G4PreCompoundIon.hh.
| 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] |
Implemented in G4PreCompoundAlpha, G4PreCompoundDeuteron, G4PreCompoundHe3, and G4PreCompoundTriton.
Referenced by ProbabilityDistributionFunction().
Implemented in G4PreCompoundAlpha, G4PreCompoundDeuteron, G4PreCompoundHe3, and G4PreCompoundTriton.
Referenced by ProbabilityDistributionFunction().
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 }
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 }
1.4.7