Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions
G4PreCompoundIon Class Referenceabstract

#include <G4PreCompoundIon.hh>

Inheritance diagram for G4PreCompoundIon:
G4PreCompoundFragment G4VPreCompoundFragment G4PreCompoundAlpha G4PreCompoundDeuteron G4PreCompoundHe3 G4PreCompoundTriton

Public Member Functions

 G4PreCompoundIon (const G4ParticleDefinition *, G4VCoulombBarrier *aCoulombBarrier)
 
virtual ~G4PreCompoundIon ()
 
- Public Member Functions inherited from G4PreCompoundFragment
 G4PreCompoundFragment (const G4ParticleDefinition *, G4VCoulombBarrier *aCoulombBarrier)
 
virtual ~G4PreCompoundFragment ()
 
G4double CalcEmissionProbability (const G4Fragment &aFragment)
 
G4double GetKineticEnergy (const G4Fragment &aFragment)
 
- Public Member Functions inherited from G4VPreCompoundFragment
 G4VPreCompoundFragment (const G4ParticleDefinition *, G4VCoulombBarrier *aCoulombBarrier)
 
virtual ~G4VPreCompoundFragment ()
 
void Initialize (const G4Fragment &aFragment)
 
G4ReactionProductGetReactionProduct () const
 
G4int GetA () const
 
G4int GetZ () const
 
G4int GetRestA () const
 
G4int GetRestZ () const
 
G4double ResidualA13 () const
 
G4double GetCoulombBarrier () const
 
G4double GetBindingEnergy () const
 
G4double GetMaximalKineticEnergy () const
 
G4double GetEnergyThreshold () const
 
G4double GetEmissionProbability () const
 
G4double GetNuclearMass () const
 
G4double GetRestNuclearMass () const
 
G4double GetReducedMass () const
 
const G4LorentzVectorGetMomentum () const
 
void SetMomentum (const G4LorentzVector &value)
 
const G4String GetName () const
 
void SetOPTxs (G4int)
 
void UseSICB (G4bool)
 

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)
 
- Protected Member Functions inherited from G4VPreCompoundFragment
G4bool IsItPossible (const G4Fragment &aFragment) const
 

Additional Inherited Members

- Protected Attributes inherited from G4VPreCompoundFragment
G4PreCompoundParameterstheParameters
 
G4Powg4pow
 
G4double theEmissionProbability
 
G4double theCoulombBarrier
 
G4int OPTxs
 
G4bool useSICB
 

Detailed Description

Definition at line 42 of file G4PreCompoundIon.hh.

Constructor & Destructor Documentation

G4PreCompoundIon::G4PreCompoundIon ( const G4ParticleDefinition part,
G4VCoulombBarrier aCoulombBarrier 
)

Definition at line 47 of file G4PreCompoundIon.cc.

References G4PreCompoundParameters::Getr0(), and G4VPreCompoundFragment::theParameters.

49  : G4PreCompoundFragment(part,aCoulombBarrier)
50 {
52  fact = 0.75*CLHEP::millibarn/(CLHEP::pi*r0*r0*r0);
53 }
G4PreCompoundParameters * theParameters
double G4double
Definition: G4Types.hh:76
G4PreCompoundIon::~G4PreCompoundIon ( )
virtual

Definition at line 55 of file G4PreCompoundIon.cc.

56 {}

Member Function Documentation

virtual G4double G4PreCompoundIon::CoalescenceFactor ( G4int  A)
protectedpure virtual
virtual G4double G4PreCompoundIon::CrossSection ( G4double  ekin)
protectedpure virtual
virtual G4double G4PreCompoundIon::FactorialFactor ( G4int  N,
G4int  P 
)
protectedpure virtual
virtual G4double G4PreCompoundIon::GetAlpha ( )
protectedpure virtual
G4double G4PreCompoundIon::GetBeta ( )
inlineprotected

Definition at line 86 of file G4PreCompoundIon.hh.

References G4VPreCompoundFragment::GetCoulombBarrier().

Referenced by GetOpt0().

87 {
88  return -GetCoulombBarrier();
89 }
G4double GetCoulombBarrier() const
G4double G4PreCompoundIon::GetOpt0 ( G4double  ekin)
inlineprotected

Definition at line 92 of file G4PreCompoundIon.hh.

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

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

93 {
95  // cross section is now given in mb (r0 is in mm) for the sake of consistency
96  //with the rest of the options
97  return 1.e+25*CLHEP::pi*r0*r0*ResidualA13()*GetAlpha()*(1.+GetBeta()/K);
98 }
G4double ResidualA13() const
G4PreCompoundParameters * theParameters
virtual G4double GetAlpha()=0
double G4double
Definition: G4Types.hh:76
virtual G4double G4PreCompoundIon::GetRj ( G4int  NumberParticles,
G4int  NumberCharged 
)
protectedpure virtual
G4double G4PreCompoundIon::ProbabilityDistributionFunction ( G4double  eKin,
const G4Fragment aFragment 
)
protectedvirtual

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(), G4INCL::Math::max(), N, python.hepunit::pi2, G4Pow::powN(), and G4VPreCompoundFragment::theParameters.

61 {
62  if ( !IsItPossible(aFragment) ) { return 0.0; }
63  G4double efinal = eKin + GetBindingEnergy();
64  //G4cout << "Efinal= " << efinal << " Ekin= " << eKin << G4endl;
65  if(efinal <= 0.0 ) { return 0.0; }
66 
67  G4double U = aFragment.GetExcitationEnergy();
68  G4int P = aFragment.GetNumberOfParticles();
69  G4int H = aFragment.GetNumberOfHoles();
70  G4int A = GetA();
71  G4int N = P + H;
72 
73  G4double g0 = (6.0/pi2)*aFragment.GetA_asInt()*theParameters->GetLevelDensity();
75 
76  //JMQ 06/02/209 This is THE BUG that was killing cluster emission
77  // G4double gj = (6.0/pi2)*GetA() *
78  // G4PreCompoundParameters::GetAddress()->GetLevelDensity();
79 
80  G4double gj = g1;
81 
82  G4double A0 = G4double(P*P+H*H+P-3*H)/(4.0*g0);
83  G4double A1 = std::max(0.0,(A0*g0 + A*(A-2*P-1)*0.25)/g1);
84 
85  G4double E0 = U - A0;
86  //G4cout << "E0= " << E0 << G4endl;
87  if (E0 <= 0.0) { return 0.0; }
88 
89  G4double E1 = (std::max(0.0,GetMaximalKineticEnergy() - eKin - A1));
90 
91  G4double Aj = A*(A+1)/(4.0*gj);
92  G4double Ej = std::max(0.0,efinal - Aj);
93 
94  G4double rj = GetRj(P, aFragment.GetNumberOfCharged());
95  G4double xs = CrossSection(eKin);
96 
97  //G4cout << "rj= " << rj << " xs= " << xs << G4endl;
98 
99  // JMQ 10/02/09 reshaping of the formula (unnecessary std::pow elimitated)
100  /*
101  G4double r0 = theParameters->Getr0();
102  G4double pA = (3.0/4.0) * std::sqrt(std::max(0.0, 2.0/(GetReducedMass()*
103  (eKin+GetBindingEnergy()))))/(pi * r0 * r0 *r0* GetRestA())*
104  eKin*CrossSection(eKin)*millibarn*
105  CoalescenceFactor(aFragment.GetA_asInt()) * FactorialFactor(N,P)*
106  GetRj(aFragment.GetNumberOfParticles(), aFragment.GetNumberOfCharged());
107 
108  G4double pB = std::pow((g1*E1)/(g0*E0),N-GetA()-1.0)*(g1/g0);
109  G4double pC = std::pow((gj*Ej)/(g0*E0),GetA()-1.0)*(gj/g0)/E0;
110  pA *= pB * pC;
111  */
112 
113  G4double pA = fact*eKin*xs*rj
114  * CoalescenceFactor(aFragment.GetA_asInt()) * FactorialFactor(N,P)
115  * std::sqrt(2.0/(GetReducedMass()*efinal))
116  * g4pow->powN(g1*E1/(g0*E0), N-A-1)
117  * g4pow->powN(gj*Ej/(g0*E0), A-1)*gj*g1/(g0*g0*E0*GetRestA());
118 
119  return pA;
120 }
virtual G4double CrossSection(G4double ekin)=0
G4double powN(G4double x, G4int n) const
Definition: G4Pow.cc:125
G4double GetMaximalKineticEnergy() const
G4double GetReducedMass() const
G4int GetA() const
G4int GetNumberOfParticles() const
Definition: G4Fragment.hh:325
G4bool IsItPossible(const G4Fragment &aFragment) const
int G4int
Definition: G4Types.hh:78
G4double GetBindingEnergy() const
G4int GetNumberOfHoles() const
Definition: G4Fragment.hh:345
G4int GetA_asInt() const
Definition: G4Fragment.hh:238
virtual G4double FactorialFactor(G4int N, G4int P)=0
virtual G4double CoalescenceFactor(G4int A)=0
virtual G4double GetRj(G4int NumberParticles, G4int NumberCharged)=0
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4int GetRestA() const
G4PreCompoundParameters * theParameters
**D E S C R I P T I O N
double G4double
Definition: G4Types.hh:76
G4int GetNumberOfCharged() const
Definition: G4Fragment.hh:330
G4double GetExcitationEnergy() const
Definition: G4Fragment.hh:255

The documentation for this class was generated from the following files: