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

#include <G4NeutronEvaporationChannel.hh>

Inheritance diagram for G4NeutronEvaporationChannel:
G4EvaporationChannel G4VEvaporationChannel

Public Member Functions

virtual G4bool BreakUpChain (G4FragmentVector *theResult, G4Fragment *theNucleus)
 
G4FragmentVectorBreakUpFragment (G4Fragment *theNucleus)
 
virtual void Dump () const
 
G4FragmentEmittedFragment (G4Fragment *theNucleus) override
 
 G4NeutronEvaporationChannel ()
 
G4double GetEmissionProbability (G4Fragment *fragment) override
 
virtual G4double GetLifeTime (G4Fragment *theNucleus)
 
void Initialise () override
 
virtual void RDMForced (G4bool)
 
virtual void SetICM (G4bool)
 
void SetOPTxs (G4int opt)
 
void UseSICB (G4bool use)
 
 ~G4NeutronEvaporationChannel () override
 

Protected Attributes

G4int OPTxs
 
G4bool useSICB
 

Private Member Functions

 G4NeutronEvaporationChannel (const G4NeutronEvaporationChannel &right)
 
G4bool operator!= (const G4NeutronEvaporationChannel &right) const
 
const G4NeutronEvaporationChanneloperator= (const G4NeutronEvaporationChannel &right)
 
G4bool operator== (const G4NeutronEvaporationChannel &right) const
 

Private Attributes

G4double evapMass
 
G4double evapMass2
 
G4double mass
 
G4NeutronEvaporationProbability pr
 
G4int resA
 
G4double resMass
 
G4int resZ
 
G4int secID
 
G4int theA
 
G4CoulombBarriertheCoulombBarrier
 
G4NuclearLevelDatatheLevelData
 
G4EvaporationProbabilitytheProbability
 
G4int theZ
 

Detailed Description

Definition at line 38 of file G4NeutronEvaporationChannel.hh.

Constructor & Destructor Documentation

◆ G4NeutronEvaporationChannel() [1/2]

G4NeutronEvaporationChannel::G4NeutronEvaporationChannel ( )
explicit

Definition at line 34 of file G4NeutronEvaporationChannel.cc.

36{}
G4EvaporationChannel(G4int A, G4int Z, G4EvaporationProbability *)
G4NeutronEvaporationProbability pr

◆ ~G4NeutronEvaporationChannel()

G4NeutronEvaporationChannel::~G4NeutronEvaporationChannel ( )
override

Definition at line 38 of file G4NeutronEvaporationChannel.cc.

39{}

◆ G4NeutronEvaporationChannel() [2/2]

G4NeutronEvaporationChannel::G4NeutronEvaporationChannel ( const G4NeutronEvaporationChannel right)
private

Member Function Documentation

◆ BreakUpChain()

G4bool G4VEvaporationChannel::BreakUpChain ( G4FragmentVector theResult,
G4Fragment theNucleus 
)
virtualinherited

Reimplemented in G4UnstableFragmentBreakUp, and G4PhotonEvaporation.

Definition at line 66 of file G4VEvaporationChannel.cc.

67{
68 return false;
69}

Referenced by G4VEvaporationChannel::BreakUpFragment().

◆ BreakUpFragment()

G4FragmentVector * G4VEvaporationChannel::BreakUpFragment ( G4Fragment theNucleus)
inlineinherited

Definition at line 106 of file G4VEvaporationChannel.hh.

107{
108 G4FragmentVector* results = new G4FragmentVector();
109 BreakUpChain(results, theNucleus);
110 return results;
111}
std::vector< G4Fragment * > G4FragmentVector
Definition: G4Fragment.hh:64
virtual G4bool BreakUpChain(G4FragmentVector *theResult, G4Fragment *theNucleus)

References G4VEvaporationChannel::BreakUpChain().

Referenced by G4NeutronRadCapture::ApplyYourself().

◆ Dump()

void G4VEvaporationChannel::Dump ( ) const
virtualinherited

Reimplemented in G4GEMChannel, and G4GEMChannelVI.

Definition at line 71 of file G4VEvaporationChannel.cc.

72{}

◆ EmittedFragment()

G4Fragment * G4EvaporationChannel::EmittedFragment ( G4Fragment theNucleus)
overridevirtualinherited

Reimplemented from G4VEvaporationChannel.

Definition at line 156 of file G4EvaporationChannel.cc.

157{
158 G4double ekin;
159 // assumed, that TotalProbability(...) was already called
160 // if value iz zero no possiblity to sample final state
161 if(resA <= 4 || theProbability->GetProbability() == 0.0) {
162 ekin = 0.5*(mass*mass - resMass*resMass + evapMass2)/mass - evapMass;
163 } else {
165 }
166 ekin = std::max(ekin, 0.0);
167 G4LorentzVector lv0 = theNucleus->GetMomentum();
168 G4LorentzVector lv(std::sqrt(ekin*(ekin + 2.0*evapMass))*G4RandomDirection(),
169 ekin + evapMass);
170 lv.boost(lv0.boostVector());
171
172 G4Fragment* evFragment = new G4Fragment(theA, theZ, lv);
173 if(evFragment != nullptr) { evFragment->SetCreatorModelID(secID); }
174 lv0 -= lv;
175 theNucleus->SetZandA_asInt(resZ, resA);
176 theNucleus->SetMomentum(lv0);
177 theNucleus->SetCreatorModelID(secID);
178
179 //G4cout << "Residual: Z= " << resZ << " A= " << resA << " Eex= "
180 // << theNucleus->GetExcitationEnergy() << G4endl;
181 return evFragment;
182}
G4ThreeVector G4RandomDirection()
double G4double
Definition: G4Types.hh:83
Hep3Vector boostVector() const
G4EvaporationProbability * theProbability
const G4LorentzVector & GetMomentum() const
Definition: G4Fragment.hh:323
void SetCreatorModelID(G4int value)
Definition: G4Fragment.hh:428
void SetMomentum(const G4LorentzVector &value)
Definition: G4Fragment.hh:328
void SetZandA_asInt(G4int Znew, G4int Anew)
Definition: G4Fragment.hh:281
T max(const T t1, const T t2)
brief Return the largest of the two arguments

References CLHEP::HepLorentzVector::boost(), CLHEP::HepLorentzVector::boostVector(), G4EvaporationChannel::evapMass, G4EvaporationChannel::evapMass2, G4RandomDirection(), G4Fragment::GetMomentum(), G4EvaporationChannel::mass, G4INCL::Math::max(), G4EvaporationChannel::resA, G4EvaporationChannel::resMass, G4EvaporationChannel::resZ, G4VEmissionProbability::SampleEnergy(), G4EvaporationChannel::secID, G4Fragment::SetCreatorModelID(), G4Fragment::SetMomentum(), G4Fragment::SetZandA_asInt(), G4EvaporationChannel::theA, G4EvaporationChannel::theProbability, and G4EvaporationChannel::theZ.

◆ GetEmissionProbability()

G4double G4EvaporationChannel::GetEmissionProbability ( G4Fragment fragment)
overridevirtualinherited

Implements G4VEvaporationChannel.

Definition at line 84 of file G4EvaporationChannel.cc.

85{
87 G4int fragA = fragment->GetA_asInt();
88 G4int fragZ = fragment->GetZ_asInt();
89 resA = fragA - theA;
90 resZ = fragZ - theZ;
91
92 // Only channels which are physically allowed are taken into account
93 if(resA < theA || resA < resZ || resZ < 0 || (resA == theA && resZ < theZ)
94 || ((resA > 1) && (resA == resZ || resZ == 0)))
95 { return 0.0; }
96
97 G4double exEnergy = fragment->GetExcitationEnergy();
98 G4double delta0 = theLevelData->GetPairingCorrection(fragZ,fragA);
99 /*
100 G4cout << "G4EvaporationChannel::Initialize Z= "<<theZ<<" A= "<<theA
101 << " FragZ= " << fragZ << " FragA= " << fragA
102 << " exEnergy= " << exEnergy << " d0= " << delta0 << G4endl;
103 */
104 if(exEnergy < delta0) { return 0.0; }
105
106 G4double fragMass = fragment->GetGroundStateMass();
107 mass = fragMass + exEnergy;
108
110 G4double bCoulomb = 0.0;
111 G4double elim = 0.0;
112 if(theZ > 0) {
113 bCoulomb = theCoulombBarrier->GetCoulombBarrier(resA,resZ,exEnergy);
114
115 // for OPTxs >0 penetration under the barrier is taken into account
116 const G4double dCB = 3.5*CLHEP::MeV;
117 elim = (0 != OPTxs) ?
118 std::max(bCoulomb*0.5, bCoulomb - dCB*theZ) : bCoulomb;
119 }
120 /*
121 G4cout << "exEnergy= " << exEnergy << " Ec= " << bCoulomb
122 << " d0= " << delta0
123 << " Free= " << mass - resMass - evapMass
124 << G4endl;
125 */
126 if(mass <= resMass + evapMass + elim) { return 0.0; }
127
128 G4double twoMass = mass + mass;
129 G4double ekinmax =
130 ((mass-resMass)*(mass+resMass) + evapMass2)/twoMass - evapMass;
131 G4double ekinmin = 0.0;
132 if(elim > 0.0) {
133 G4double resM = std::max(mass - evapMass - elim, resMass);
134 ekinmin =
135 std::max(((mass-resM)*(mass+resM) + evapMass2)/twoMass - evapMass,0.0);
136 }
137 /*
138 G4cout << "Emin= " <<ekinmin<<" Emax= "<<ekinmax
139 << " mass= " << mass << " resM= " << resMass
140 << " evapM= " << evapMass << G4endl;
141 */
142 if(ekinmax <= ekinmin) { return 0.0; }
143
146 ekinmax, bCoulomb,
147 exEnergy - delta0);
148 /*
149 G4cout<<"G4EvaporationChannel: prob= "<< prob << " Z= " << theZ
150 << " A= " << theA << " E1= " << ekinmin << " E2= " << ekinmax
151 << G4endl;
152 */
153 return prob;
154}
static const G4double ekinmin
int G4int
Definition: G4Types.hh:85
G4double GetCoulombBarrier(G4int ARes, G4int ZRes, G4double U) const
G4NuclearLevelData * theLevelData
G4CoulombBarrier * theCoulombBarrier
virtual G4double TotalProbability(const G4Fragment &fragment, G4double minKinEnergy, G4double maxKinEnergy, G4double CB, G4double exEnergy)
G4double GetGroundStateMass() const
Definition: G4Fragment.hh:304
G4double GetExcitationEnergy() const
Definition: G4Fragment.hh:299
G4int GetZ_asInt() const
Definition: G4Fragment.hh:276
G4int GetA_asInt() const
Definition: G4Fragment.hh:271
G4PairingCorrection * GetPairingCorrection()
static G4double GetNuclearMass(const G4double A, const G4double Z)
void SetDecayKinematics(G4int Z, G4int A, G4double rmass, G4double fmass)
static constexpr double MeV

References ekinmin, G4EvaporationChannel::evapMass, G4EvaporationChannel::evapMass2, G4Fragment::GetA_asInt(), G4CoulombBarrier::GetCoulombBarrier(), G4Fragment::GetExcitationEnergy(), G4Fragment::GetGroundStateMass(), G4NucleiProperties::GetNuclearMass(), G4NuclearLevelData::GetPairingCorrection(), G4Fragment::GetZ_asInt(), G4EvaporationChannel::mass, G4INCL::Math::max(), CLHEP::MeV, G4VEvaporationChannel::OPTxs, G4EvaporationChannel::resA, G4VEmissionProbability::ResetProbability(), G4EvaporationChannel::resMass, G4EvaporationChannel::resZ, G4VEmissionProbability::SetDecayKinematics(), G4EvaporationChannel::theA, G4EvaporationChannel::theCoulombBarrier, G4EvaporationChannel::theLevelData, G4EvaporationChannel::theProbability, G4EvaporationChannel::theZ, and G4EvaporationProbability::TotalProbability().

◆ GetLifeTime()

G4double G4VEvaporationChannel::GetLifeTime ( G4Fragment theNucleus)
virtualinherited

Definition at line 50 of file G4VEvaporationChannel.cc.

51{
52 return 0.0;
53}

◆ Initialise()

void G4EvaporationChannel::Initialise ( )
overridevirtualinherited

◆ operator!=()

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

◆ operator=()

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

◆ operator==()

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

◆ RDMForced()

void G4VEvaporationChannel::RDMForced ( G4bool  )
virtualinherited

Reimplemented in G4PhotonEvaporation.

Definition at line 58 of file G4VEvaporationChannel.cc.

59{}

◆ SetICM()

void G4VEvaporationChannel::SetICM ( G4bool  )
virtualinherited

Reimplemented in G4PhotonEvaporation.

Definition at line 55 of file G4VEvaporationChannel.cc.

56{}

Referenced by G4NeutronRadCapture::InitialiseModel().

◆ SetOPTxs()

void G4VEvaporationChannel::SetOPTxs ( G4int  opt)
inlineinherited

Definition at line 113 of file G4VEvaporationChannel.hh.

114{}

◆ UseSICB()

void G4VEvaporationChannel::UseSICB ( G4bool  use)
inlineinherited

Definition at line 116 of file G4VEvaporationChannel.hh.

117{}

Field Documentation

◆ evapMass

G4double G4EvaporationChannel::evapMass
privateinherited

◆ evapMass2

G4double G4EvaporationChannel::evapMass2
privateinherited

◆ mass

G4double G4EvaporationChannel::mass
privateinherited

◆ OPTxs

G4int G4VEvaporationChannel::OPTxs
protectedinherited

◆ pr

G4NeutronEvaporationProbability G4NeutronEvaporationChannel::pr
private

Definition at line 55 of file G4NeutronEvaporationChannel.hh.

◆ resA

G4int G4EvaporationChannel::resA
privateinherited

◆ resMass

G4double G4EvaporationChannel::resMass
privateinherited

◆ resZ

G4int G4EvaporationChannel::resZ
privateinherited

◆ secID

G4int G4EvaporationChannel::secID
privateinherited

◆ theA

G4int G4EvaporationChannel::theA
privateinherited

◆ theCoulombBarrier

G4CoulombBarrier* G4EvaporationChannel::theCoulombBarrier
privateinherited

◆ theLevelData

G4NuclearLevelData* G4EvaporationChannel::theLevelData
privateinherited

◆ theProbability

G4EvaporationProbability* G4EvaporationChannel::theProbability
privateinherited

◆ theZ

G4int G4EvaporationChannel::theZ
privateinherited

◆ useSICB

G4bool G4VEvaporationChannel::useSICB
protectedinherited

Definition at line 94 of file G4VEvaporationChannel.hh.


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