Geant4-11
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
G4HETCNeutron Class Reference

#include <G4HETCNeutron.hh>

Inheritance diagram for G4HETCNeutron:
G4HETCFragment G4VPreCompoundFragment

Public Member Functions

G4double CalcEmissionProbability (const G4Fragment &aFragment)
 
 G4HETCNeutron ()
 
G4int GetA () const
 
G4double GetBindingEnergy () const
 
G4double GetEmissionProbability () const
 
G4double GetEnergyThreshold () const
 
const G4LorentzVectorGetMomentum () const
 
G4double GetNuclearMass () const
 
G4ReactionProductGetReactionProduct () const
 
G4int GetRestA () const
 
G4double GetRestNuclearMass () const
 
G4int GetRestZ () const
 
G4int GetZ () const
 
void Initialize (const G4Fragment &aFragment)
 
G4bool IsItPossible (const G4Fragment &aFragment) const
 
G4bool operator!= (const G4VPreCompoundFragment &right) const =delete
 
G4bool operator== (const G4VPreCompoundFragment &right) const =delete
 
virtual G4double SampleKineticEnergy (const G4Fragment &aFragment)
 
void SetMomentum (const G4LorentzVector &value)
 
void SetOPTxs (G4int)
 
void UseSICB (G4bool)
 
 ~G4HETCNeutron ()
 

Protected Member Functions

G4double BetaRand (G4int N, G4int L) const
 
virtual G4double GetAlpha () const
 
virtual G4double GetBeta () const
 
virtual G4double GetSpinFactor () const
 
virtual G4double K (const G4Fragment &aFragment)
 

Protected Attributes

G4NuclearLevelDatafNucData
 
G4Powg4calc
 
G4int OPTxs
 
G4int theA
 
G4double theBindingEnergy
 
G4double theCoulombBarrier
 
G4double theEmissionProbability
 
G4int theFragA
 
G4int theFragZ
 
G4double theMass
 
G4double theMaxKinEnergy
 
G4double theMinKinEnergy
 
G4DeexPrecoParameterstheParameters
 
G4double theReducedMass
 
G4int theResA
 
G4double theResA13
 
G4double theResMass
 
G4int theResZ
 
G4int theZ
 
G4bool useSICB
 

Private Member Functions

 G4HETCNeutron (const G4HETCNeutron &right)
 
G4double IntegrateEmissionProbability (G4double &Low, G4double &Up, const G4Fragment &aFragment)
 
G4bool operator!= (const G4HETCNeutron &right) const
 
const G4HETCNeutronoperator= (const G4HETCNeutron &right)
 
G4bool operator== (const G4HETCNeutron &right) const
 

Private Attributes

const G4ParticleDefinitionparticle
 
G4double r2norm
 
G4VCoulombBarriertheCoulombBarrierPtr
 
G4LorentzVector theMomentum
 
G4NeutronCoulombBarrier theNeutronCoulombBarrier
 

Detailed Description

Definition at line 40 of file G4HETCNeutron.hh.

Constructor & Destructor Documentation

◆ G4HETCNeutron() [1/2]

G4HETCNeutron::G4HETCNeutron ( )

Definition at line 39 of file G4HETCNeutron.cc.

41{}
G4NeutronCoulombBarrier theNeutronCoulombBarrier
static G4Neutron * Neutron()
Definition: G4Neutron.cc:103

◆ ~G4HETCNeutron()

G4HETCNeutron::~G4HETCNeutron ( )

Definition at line 43 of file G4HETCNeutron.cc.

44{}

◆ G4HETCNeutron() [2/2]

G4HETCNeutron::G4HETCNeutron ( const G4HETCNeutron right)
private

Member Function Documentation

◆ BetaRand()

G4double G4HETCFragment::BetaRand ( G4int  N,
G4int  L 
) const
inlineprotectedinherited

Definition at line 78 of file G4HETCFragment.hh.

79{
82
83 return Y1/(Y1+Y2);
84}
static constexpr double L
Definition: G4SIunits.hh:104
double G4double
Definition: G4Types.hh:83
ThreeVector shoot(const G4int Ap, const G4int Af)

References L, and G4INCL::DeJongSpin::shoot().

Referenced by G4HETCChargedFragment::SampleKineticEnergy(), and SampleKineticEnergy().

◆ CalcEmissionProbability()

G4double G4HETCFragment::CalcEmissionProbability ( const G4Fragment aFragment)
virtualinherited

Implements G4VPreCompoundFragment.

Definition at line 50 of file G4HETCFragment.cc.

52{
53 if (GetEnergyThreshold() <= 0.0)
54 {
56 return 0.0;
57 }
58 // Coulomb barrier is the lower limit
59 // of integration over kinetic energy
62
64}
G4double IntegrateEmissionProbability(G4double &Low, G4double &Up, const G4Fragment &aFragment)
G4double GetEnergyThreshold() const

References G4VPreCompoundFragment::GetEnergyThreshold(), G4HETCFragment::IntegrateEmissionProbability(), G4VPreCompoundFragment::theCoulombBarrier, G4VPreCompoundFragment::theEmissionProbability, and G4VPreCompoundFragment::theMaxKinEnergy.

◆ GetA()

G4int G4VPreCompoundFragment::GetA ( ) const
inlineinherited

◆ GetAlpha()

G4double G4HETCNeutron::GetAlpha ( ) const
protectedvirtual

Implements G4HETCFragment.

Definition at line 46 of file G4HETCNeutron.cc.

47{
48 return 0.76+2.2/theResA13;
49}

References G4VPreCompoundFragment::theResA13.

Referenced by GetBeta().

◆ GetBeta()

G4double G4HETCNeutron::GetBeta ( ) const
protectedvirtual

Implements G4HETCFragment.

Definition at line 51 of file G4HETCNeutron.cc.

52{
53 return (2.12/(theResA13*theResA13)-0.05)*MeV/GetAlpha();
54}
static constexpr double MeV
Definition: G4SIunits.hh:200
virtual G4double GetAlpha() const

References GetAlpha(), MeV, and G4VPreCompoundFragment::theResA13.

Referenced by SampleKineticEnergy().

◆ GetBindingEnergy()

G4double G4VPreCompoundFragment::GetBindingEnergy ( ) const
inlineinherited

◆ GetEmissionProbability()

G4double G4VPreCompoundFragment::GetEmissionProbability ( ) const
inlineinherited

◆ GetEnergyThreshold()

G4double G4VPreCompoundFragment::GetEnergyThreshold ( ) const
inlineinherited

◆ GetMomentum()

const G4LorentzVector & G4VPreCompoundFragment::GetMomentum ( ) const
inlineinherited

◆ GetNuclearMass()

G4double G4VPreCompoundFragment::GetNuclearMass ( ) const
inlineinherited

◆ GetReactionProduct()

G4ReactionProduct * G4VPreCompoundFragment::GetReactionProduct ( ) const
inlineinherited

◆ GetRestA()

G4int G4VPreCompoundFragment::GetRestA ( ) const
inlineinherited

◆ GetRestNuclearMass()

G4double G4VPreCompoundFragment::GetRestNuclearMass ( ) const
inlineinherited

◆ GetRestZ()

G4int G4VPreCompoundFragment::GetRestZ ( ) const
inlineinherited

◆ GetSpinFactor()

G4double G4HETCNeutron::GetSpinFactor ( ) const
protectedvirtual

Implements G4HETCFragment.

Definition at line 56 of file G4HETCNeutron.cc.

57{
58 // (2s+1)
59 return 2.0;
60}

◆ GetZ()

G4int G4VPreCompoundFragment::GetZ ( ) const
inlineinherited

◆ Initialize()

void G4VPreCompoundFragment::Initialize ( const G4Fragment aFragment)
inherited

Definition at line 79 of file G4VPreCompoundFragment.cc.

80{
81 theFragA = aFragment.GetA_asInt();
82 theFragZ = aFragment.GetZ_asInt();
85
87 if ((theResA < theResZ) || (theResA < theA) || (theResZ < theZ)) {
88 return;
89 }
90
93 GetCoulombBarrier(theResA,theResZ,aFragment.GetExcitationEnergy());
94
96
97 // Calculate masses
100
101 // Compute Binding Energies for fragments
102 // needed to separate a fragment from the nucleus
104
105 // Compute Maximal Kinetic Energy which can be carried by fragments
106 // after separation - the true assimptotic value
107 G4double Ecm = aFragment.GetMomentum().m();
108 G4double twoEcm = Ecm + Ecm;
110 /twoEcm - theMass,0.0);
111 theMinKinEnergy = (elim == 0.0) ? 0.0 :
112 std::max(((theMass+elim)*(twoEcm-theMass-elim) +
113 theMass*theMass)/twoEcm - theMass,0.0);
114}
G4double GetGroundStateMass() const
Definition: G4Fragment.hh:304
G4double GetExcitationEnergy() const
Definition: G4Fragment.hh:299
const G4LorentzVector & GetMomentum() const
Definition: G4Fragment.hh:323
G4int GetZ_asInt() const
Definition: G4Fragment.hh:276
G4int GetA_asInt() const
Definition: G4Fragment.hh:271
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4double Z13(G4int Z) const
Definition: G4Pow.hh:123
G4VCoulombBarrier * theCoulombBarrierPtr
T max(const T t1, const T t2)
brief Return the largest of the two arguments

References G4VPreCompoundFragment::g4calc, G4Fragment::GetA_asInt(), G4Fragment::GetExcitationEnergy(), G4Fragment::GetGroundStateMass(), G4Fragment::GetMomentum(), G4NucleiProperties::GetNuclearMass(), G4Fragment::GetZ_asInt(), CLHEP::HepLorentzVector::m(), G4INCL::Math::max(), G4VPreCompoundFragment::OPTxs, G4VPreCompoundFragment::theA, G4VPreCompoundFragment::theBindingEnergy, G4VPreCompoundFragment::theCoulombBarrier, G4VPreCompoundFragment::theCoulombBarrierPtr, G4VPreCompoundFragment::theFragA, G4VPreCompoundFragment::theFragZ, G4VPreCompoundFragment::theMass, G4VPreCompoundFragment::theMaxKinEnergy, G4VPreCompoundFragment::theMinKinEnergy, G4VPreCompoundFragment::theReducedMass, G4VPreCompoundFragment::theResA, G4VPreCompoundFragment::theResA13, G4VPreCompoundFragment::theResMass, G4VPreCompoundFragment::theResZ, G4VPreCompoundFragment::theZ, and G4Pow::Z13().

◆ IntegrateEmissionProbability()

G4double G4HETCFragment::IntegrateEmissionProbability ( G4double Low,
G4double Up,
const G4Fragment aFragment 
)
privateinherited

Definition at line 66 of file G4HETCFragment.cc.

69{
70 G4double U = aFragment.GetExcitationEnergy();
71
72 G4int P = aFragment.GetNumberOfParticles();
73 G4int H = aFragment.GetNumberOfHoles();
74 G4int N = P + H;
75 G4int Pb = P - theA;
76 G4int Nb = Pb + H;
77 if (Nb <= 0.0) { return 0.0; }
78
81
82 G4double A = G4double(P*P+H*H+P-3*H)/(4.0*ga);
83 G4double Ab = G4double(Pb*Pb+H*H+Pb-3*H)/(4.0*gb);
84 U = std::max(U-A,0.0);
85 if (U <= 0.0) { return 0.0; }
86
87 G4int Pf = P;
88 G4int Hf = H;
89 G4int Nf = N-1;
90 for (G4int i = 1; i < theA; ++i)
91 {
92 Pf *= (P-i);
93 Hf *= (H-i);
94 Nf *= (N-1-i);
95 }
96
97 G4double X = std::max(Up - Ab + GetBeta(),0.0);
98 G4double Y = std::max(Up - Ab - Low, 0.0);
99
101 *g4calc->Z23(theResA)*Pf*Hf*Nf*K(aFragment)*(X/Nb - Y/(Nb+1))
102 *U*g4calc->powN(gb*Y,Nb)/g4calc->powN(ga*U,N);
103
104 return Probability;
105}
G4double Y(G4double density)
static constexpr double pi2
Definition: G4SIunits.hh:58
int G4int
Definition: G4Types.hh:85
const G4double A[17]
G4int GetNumberOfParticles() const
Definition: G4Fragment.hh:361
G4int GetNumberOfHoles() const
Definition: G4Fragment.hh:381
virtual G4double GetSpinFactor() const =0
virtual G4double K(const G4Fragment &aFragment)=0
virtual G4double GetAlpha() const =0
virtual G4double GetBeta() const =0
G4double GetLevelDensity(G4int Z, G4int A, G4double U)
G4double powN(G4double x, G4int n) const
Definition: G4Pow.cc:166
G4double Z23(G4int Z) const
Definition: G4Pow.hh:125
G4NuclearLevelData * fNucData
const G4double Pf
Fermi momentum [MeV/c].
static double P[]

References A, G4VPreCompoundFragment::fNucData, G4VPreCompoundFragment::g4calc, G4HETCFragment::GetAlpha(), G4HETCFragment::GetBeta(), G4Fragment::GetExcitationEnergy(), G4NuclearLevelData::GetLevelDensity(), G4Fragment::GetNumberOfHoles(), G4Fragment::GetNumberOfParticles(), G4HETCFragment::GetSpinFactor(), G4HETCFragment::K(), G4INCL::Math::max(), P, G4INCL::PhysicalConstants::Pf, pi2, G4Pow::powN(), G4HETCFragment::r2norm, G4VPreCompoundFragment::theA, G4VPreCompoundFragment::theFragA, G4VPreCompoundFragment::theFragZ, G4VPreCompoundFragment::theReducedMass, G4VPreCompoundFragment::theResA, G4VPreCompoundFragment::theResZ, Y(), and G4Pow::Z23().

Referenced by G4HETCFragment::CalcEmissionProbability().

◆ IsItPossible()

G4bool G4VPreCompoundFragment::IsItPossible ( const G4Fragment aFragment) const
inlineinherited

◆ K()

G4double G4HETCNeutron::K ( const G4Fragment aFragment)
protectedvirtual

Implements G4HETCFragment.

Definition at line 62 of file G4HETCNeutron.cc.

63{
64 // Number of protons in emitted fragment
65 G4int Pa = theZ;
66 // Number of neutrons in emitted fragment
67 G4int Na = theA - Pa;
68
70
71 G4int P = aFragment.GetNumberOfParticles();
72 G4int H = aFragment.GetNumberOfHoles();
73
74 G4double result = 0.0;
75 if (P > 0)
76 {
77 result = (H + Na/(1.0-r))/P;
78 }
79
80 return std::max(0.0,result);
81}

References G4Fragment::GetNumberOfHoles(), G4Fragment::GetNumberOfParticles(), G4INCL::Math::max(), P, G4VPreCompoundFragment::theA, G4VPreCompoundFragment::theResA, G4VPreCompoundFragment::theResZ, and G4VPreCompoundFragment::theZ.

◆ operator!=() [1/2]

G4bool G4HETCNeutron::operator!= ( const G4HETCNeutron right) const
private

◆ operator!=() [2/2]

G4bool G4VPreCompoundFragment::operator!= ( const G4VPreCompoundFragment right) const
deleteinherited

◆ operator=()

const G4HETCNeutron & G4HETCNeutron::operator= ( const G4HETCNeutron right)
private

◆ operator==() [1/2]

G4bool G4HETCNeutron::operator== ( const G4HETCNeutron right) const
private

◆ operator==() [2/2]

G4bool G4VPreCompoundFragment::operator== ( const G4VPreCompoundFragment right) const
deleteinherited

◆ SampleKineticEnergy()

G4double G4HETCNeutron::SampleKineticEnergy ( const G4Fragment aFragment)
virtual

Implements G4VPreCompoundFragment.

Definition at line 83 of file G4HETCNeutron.cc.

84{
85 G4int H = aFragment.GetNumberOfHoles();
86 G4int Pb = aFragment.GetNumberOfParticles();
87 G4int Nb = Pb + H;
88 G4double U = aFragment.GetExcitationEnergy();
90
91 G4double Ab = std::max(0.0,G4double(Pb*Pb+H*H+Pb-3*H)/(4.0*g0));
93
94 G4double cut = GetBeta() / (GetBeta()+Emax/G4double(Nb+1));
95 G4double x(0.0);
96 if (G4UniformRand() <= cut)
97 {
98 x = BetaRand(Nb,1);
99 }
100 else
101 {
102 x = BetaRand(Nb,2);
103 }
104
105 return Emax * (1.0 - x);
106}
static const G4double Emax
#define G4UniformRand()
Definition: Randomize.hh:52
G4double BetaRand(G4int N, G4int L) const
virtual G4double GetBeta() const

References G4HETCFragment::BetaRand(), Emax, G4VPreCompoundFragment::fNucData, G4UniformRand, GetBeta(), G4Fragment::GetExcitationEnergy(), G4NuclearLevelData::GetLevelDensity(), G4Fragment::GetNumberOfHoles(), G4Fragment::GetNumberOfParticles(), G4INCL::Math::max(), pi2, G4VPreCompoundFragment::theFragA, G4VPreCompoundFragment::theFragZ, and G4VPreCompoundFragment::theMaxKinEnergy.

◆ SetMomentum()

void G4VPreCompoundFragment::SetMomentum ( const G4LorentzVector value)
inlineinherited

◆ SetOPTxs()

void G4VPreCompoundFragment::SetOPTxs ( G4int  )
inlineinherited

◆ UseSICB()

void G4VPreCompoundFragment::UseSICB ( G4bool  )
inlineinherited

Field Documentation

◆ fNucData

G4NuclearLevelData* G4VPreCompoundFragment::fNucData
protectedinherited

◆ g4calc

G4Pow* G4VPreCompoundFragment::g4calc
protectedinherited

◆ OPTxs

G4int G4VPreCompoundFragment::OPTxs
protectedinherited

◆ particle

const G4ParticleDefinition* G4VPreCompoundFragment::particle
privateinherited

◆ r2norm

G4double G4HETCFragment::r2norm
privateinherited

◆ theA

G4int G4VPreCompoundFragment::theA
protectedinherited

◆ theBindingEnergy

G4double G4VPreCompoundFragment::theBindingEnergy
protectedinherited

◆ theCoulombBarrier

G4double G4VPreCompoundFragment::theCoulombBarrier
protectedinherited

◆ theCoulombBarrierPtr

G4VCoulombBarrier* G4VPreCompoundFragment::theCoulombBarrierPtr
privateinherited

Definition at line 132 of file G4VPreCompoundFragment.hh.

Referenced by G4VPreCompoundFragment::Initialize().

◆ theEmissionProbability

G4double G4VPreCompoundFragment::theEmissionProbability
protectedinherited

◆ theFragA

G4int G4VPreCompoundFragment::theFragA
protectedinherited

◆ theFragZ

G4int G4VPreCompoundFragment::theFragZ
protectedinherited

◆ theMass

G4double G4VPreCompoundFragment::theMass
protectedinherited

◆ theMaxKinEnergy

G4double G4VPreCompoundFragment::theMaxKinEnergy
protectedinherited

◆ theMinKinEnergy

G4double G4VPreCompoundFragment::theMinKinEnergy
protectedinherited

◆ theMomentum

G4LorentzVector G4VPreCompoundFragment::theMomentum
privateinherited

Definition at line 134 of file G4VPreCompoundFragment.hh.

◆ theNeutronCoulombBarrier

G4NeutronCoulombBarrier G4HETCNeutron::theNeutronCoulombBarrier
private

Definition at line 68 of file G4HETCNeutron.hh.

◆ theParameters

G4DeexPrecoParameters* G4VPreCompoundFragment::theParameters
protectedinherited

◆ theReducedMass

G4double G4VPreCompoundFragment::theReducedMass
protectedinherited

◆ theResA

G4int G4VPreCompoundFragment::theResA
protectedinherited

◆ theResA13

G4double G4VPreCompoundFragment::theResA13
protectedinherited

◆ theResMass

G4double G4VPreCompoundFragment::theResMass
protectedinherited

Definition at line 153 of file G4VPreCompoundFragment.hh.

Referenced by G4VPreCompoundFragment::Initialize().

◆ theResZ

G4int G4VPreCompoundFragment::theResZ
protectedinherited

◆ theZ

G4int G4VPreCompoundFragment::theZ
protectedinherited

◆ useSICB

G4bool G4VPreCompoundFragment::useSICB
protectedinherited

Definition at line 163 of file G4VPreCompoundFragment.hh.


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