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

#include <G4CascadeDeexcitation.hh>

Inheritance diagram for G4CascadeDeexcitation:
G4CascadeDeexciteBase G4VCascadeDeexcitation G4VCascadeCollider

Public Member Functions

virtual void collide (G4InuclParticle *bullet, G4InuclParticle *target, G4CollisionOutput &globalOutput)
 
virtual void deExcite (const G4Fragment &fragment, G4CollisionOutput &globalOutput)
 
 G4CascadeDeexcitation ()
 
virtual void setVerboseLevel (G4int verbose)
 
virtual ~G4CascadeDeexcitation ()
 

Protected Member Functions

virtual G4bool explosion (const G4Fragment &target) const
 
virtual G4bool explosion (G4int A, G4int Z, G4double excitation) const
 
void getTargetData (const G4Fragment &target)
 
const G4FragmentmakeFragment (G4int A, G4int Z, G4double EX=0.)
 
const G4FragmentmakeFragment (G4LorentzVector mom, G4int A, G4int Z, G4double EX=0.)
 
virtual void setName (const G4String &name)
 
virtual G4bool validateOutput (const G4Fragment &target, const std::vector< G4InuclElementaryParticle > &particles)
 
virtual G4bool validateOutput (const G4Fragment &target, const std::vector< G4InuclNuclei > &fragments)
 
virtual G4bool validateOutput (const G4Fragment &target, G4CollisionOutput &output)
 

Protected Attributes

G4int A
 
G4Fragment aFragment
 
G4CascadeCheckBalancebalance
 
G4double EEXS
 
G4LorentzVector PEX
 
G4String theName
 
G4int verboseLevel
 
G4int Z
 

Private Member Functions

 G4CascadeDeexcitation (const G4CascadeDeexcitation &)
 
G4CascadeDeexcitationoperator= (const G4CascadeDeexcitation &)
 

Private Attributes

G4CollisionOutput tempOutput
 
G4BigBangertheBigBanger
 
G4EquilibriumEvaporatortheEquilibriumEvaporator
 
G4NonEquilibriumEvaporatortheNonEquilibriumEvaporator
 

Detailed Description

Definition at line 48 of file G4CascadeDeexcitation.hh.

Constructor & Destructor Documentation

◆ G4CascadeDeexcitation() [1/2]

G4CascadeDeexcitation::G4CascadeDeexcitation ( )

◆ ~G4CascadeDeexcitation()

G4CascadeDeexcitation::~G4CascadeDeexcitation ( )
virtual

◆ G4CascadeDeexcitation() [2/2]

G4CascadeDeexcitation::G4CascadeDeexcitation ( const G4CascadeDeexcitation )
private

Member Function Documentation

◆ collide()

void G4VCascadeDeexcitation::collide ( G4InuclParticle bullet,
G4InuclParticle target,
G4CollisionOutput globalOutput 
)
virtualinherited

Implements G4VCascadeCollider.

Definition at line 37 of file G4VCascadeDeexcitation.cc.

39 {
40 if (verboseLevel) {
41 G4cout << " >>> G4VCascadeDeexcitation[" << theName << "]::collide "
42 << " *** SHOULD NOT BE CALLED ***" << G4endl;
43 }
44
45 throw G4HadronicException(__FILE__, __LINE__,
46 "G4VCascadeDeexcitation::collide() invalid, must use ::deExcite(G4Fagment*)");
47}
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout

References G4cout, G4endl, G4VCascadeCollider::theName, and G4VCascadeCollider::verboseLevel.

Referenced by G4InuclEvaporation::BreakItUp().

◆ deExcite()

void G4CascadeDeexcitation::deExcite ( const G4Fragment fragment,
G4CollisionOutput globalOutput 
)
virtual

Implements G4VCascadeDeexcitation.

Definition at line 68 of file G4CascadeDeexcitation.cc.

69 {
70 if (verboseLevel) {
71 G4cout << " >>> G4CascadeDeexcitation::deExcite" << G4endl;
72 }
73
74 if (verboseLevel > 1) G4cout << fragment << G4endl;
75
76 // Check if fragment should be broken up
77 if (explosion(fragment)) {
78 if (verboseLevel > 1) G4cout << " big bang after cascade " << G4endl;
79
80 // Add result of explosion directly to output and exit
81 theBigBanger->deExcite(fragment, globalOutput);
82 return;
83 }
84
85 // Fragment is unstable nucleus
88
89 if (verboseLevel > 1) {
90 G4cout << " After NonEquilibriumEvaporator " << G4endl;
92 }
93
94 // Copy evaporated particles (not nuclear fragment) to output
96
97 // Use nuclear fragment left from non-equilibrium for next step
98 // NOTE: Must make a copy before reset occurs below
100
103
104 if (verboseLevel > 1) {
105 G4cout << " After EquilibriumEvaporator " << G4endl;
107 }
108
109 globalOutput.add(tempOutput); // Evaporated particles and nucleus
110}
virtual void deExcite(const G4Fragment &target, G4CollisionOutput &output)
Definition: G4BigBanger.cc:68
G4CollisionOutput tempOutput
virtual G4bool explosion(const G4Fragment &target) const
void printCollisionOutput(std::ostream &os=G4cout) const
const std::vector< G4InuclElementaryParticle > & getOutgoingParticles() const
const G4Fragment & getRecoilFragment(G4int index=0) const
void add(const G4CollisionOutput &right)
void addOutgoingParticles(const std::vector< G4InuclElementaryParticle > &particles)
virtual void deExcite(const G4Fragment &target, G4CollisionOutput &output)
virtual void deExcite(const G4Fragment &target, G4CollisionOutput &output)

References G4CollisionOutput::add(), G4CollisionOutput::addOutgoingParticles(), G4BigBanger::deExcite(), G4EquilibriumEvaporator::deExcite(), G4NonEquilibriumEvaporator::deExcite(), G4CascadeDeexciteBase::explosion(), G4cout, G4endl, G4CollisionOutput::getOutgoingParticles(), G4CollisionOutput::getRecoilFragment(), G4CollisionOutput::printCollisionOutput(), G4CollisionOutput::reset(), tempOutput, theBigBanger, theEquilibriumEvaporator, theNonEquilibriumEvaporator, and G4VCascadeCollider::verboseLevel.

◆ explosion() [1/2]

G4bool G4CascadeDeexciteBase::explosion ( const G4Fragment target) const
protectedvirtualinherited

Reimplemented in G4EquilibriumEvaporator.

Definition at line 109 of file G4CascadeDeexciteBase.cc.

109 {
110 return explosion(fragment.GetA_asInt(), fragment.GetZ_asInt(),
111 fragment.GetExcitationEnergy()); // in MeV
112}

References G4CascadeDeexciteBase::explosion(), G4Fragment::GetA_asInt(), G4Fragment::GetExcitationEnergy(), and G4Fragment::GetZ_asInt().

Referenced by deExcite(), G4PreCompoundDeexcitation::deExcite(), G4CascadeDeexciteBase::explosion(), and G4EquilibriumEvaporator::explosion().

◆ explosion() [2/2]

G4bool G4CascadeDeexciteBase::explosion ( G4int  A,
G4int  Z,
G4double  excitation 
) const
protectedvirtualinherited

Reimplemented in G4EquilibriumEvaporator.

Definition at line 114 of file G4CascadeDeexciteBase.cc.

115 {
116 if (verboseLevel) G4cout << " >>> " << theName << "::explosion ?" << G4endl;
117
118 const G4int a_cut = 20;
119 const G4double be_cut = 3.0;
120
121 // Neutron balls, or small fragments with high excitations can explode
122 return ((fragA <= a_cut || fragZ==0) &&
123 (excitation >= be_cut * bindingEnergy(fragA,fragZ))
124 );
125}
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
G4double bindingEnergy(G4int A, G4int Z)

References G4InuclSpecialFunctions::bindingEnergy(), G4cout, G4endl, G4VCascadeCollider::theName, and G4VCascadeCollider::verboseLevel.

◆ getTargetData()

void G4CascadeDeexciteBase::getTargetData ( const G4Fragment target)
protectedinherited

◆ makeFragment() [1/2]

const G4Fragment & G4CascadeDeexciteBase::makeFragment ( G4int  A,
G4int  Z,
G4double  EX = 0. 
)
protectedinherited

Definition at line 81 of file G4CascadeDeexciteBase.cc.

81 {
82 return makeFragment(zero, fragA, fragZ, EX);
83}
const G4Fragment & makeFragment(G4LorentzVector mom, G4int A, G4int Z, G4double EX=0.)
static const G4LorentzVector zero(0., 0., 0., 0.)

References G4CascadeDeexciteBase::makeFragment(), and anonymous_namespace{G4CascadeDeexciteBase.cc}::zero.

◆ makeFragment() [2/2]

const G4Fragment & G4CascadeDeexciteBase::makeFragment ( G4LorentzVector  mom,
G4int  A,
G4int  Z,
G4double  EX = 0. 
)
protectedinherited

Definition at line 86 of file G4CascadeDeexciteBase.cc.

87 {
88 if (verboseLevel>2) {
89 G4cout << " >>> " << theName << "::makeFragment " << mom << " " << fragA
90 << " " << fragZ << " " << EX << G4endl;
91 }
92
93 // Adjust four-momentum so that mass is nucleus + excitation
94 G4double mass =
95 G4InuclNuclei::getNucleiMass(fragA,fragZ) + EX/GeV;
96 mom.setVectM(mom.vect(), mass);
97
98 // Overwrite previous fragment contents, zeroing out excitons
99 aFragment.SetZandA_asInt(fragZ, fragA);
100 aFragment.SetMomentum(mom*GeV); // Bertini uses GeV!
103
104 return aFragment;
105}
void setVectM(const Hep3Vector &spatial, double mass)
Hep3Vector vect() const
void SetNumberOfHoles(G4int valueTot, G4int valueP=0)
Definition: G4Fragment.hh:391
void SetMomentum(const G4LorentzVector &value)
Definition: G4Fragment.hh:328
void SetNumberOfExcitedParticle(G4int valueTot, G4int valueP)
Definition: G4Fragment.hh:372
void SetZandA_asInt(G4int Znew, G4int Anew)
Definition: G4Fragment.hh:281
G4double getNucleiMass() const

References G4CascadeDeexciteBase::aFragment, G4cout, G4endl, G4InuclNuclei::getNucleiMass(), GeV, G4Fragment::SetMomentum(), G4Fragment::SetNumberOfExcitedParticle(), G4Fragment::SetNumberOfHoles(), CLHEP::HepLorentzVector::setVectM(), G4Fragment::SetZandA_asInt(), G4VCascadeCollider::theName, CLHEP::HepLorentzVector::vect(), and G4VCascadeCollider::verboseLevel.

Referenced by G4EquilibriumEvaporator::deExcite(), G4Fissioner::deExcite(), G4NonEquilibriumEvaporator::deExcite(), and G4CascadeDeexciteBase::makeFragment().

◆ operator=()

G4CascadeDeexcitation & G4CascadeDeexcitation::operator= ( const G4CascadeDeexcitation )
private

◆ setName()

virtual void G4VCascadeCollider::setName ( const G4String name)
inlineprotectedvirtualinherited

Definition at line 55 of file G4VCascadeCollider.hh.

55{ theName = name; }
const char * name(G4int ptype)

References G4InuclParticleNames::name(), and G4VCascadeCollider::theName.

Referenced by G4CascadeCheckBalance::setOwner().

◆ setVerboseLevel()

void G4CascadeDeexcitation::setVerboseLevel ( G4int  verbose)
virtual

◆ validateOutput() [1/3]

G4bool G4CascadeDeexciteBase::validateOutput ( const G4Fragment target,
const std::vector< G4InuclElementaryParticle > &  particles 
)
protectedvirtualinherited

Definition at line 142 of file G4CascadeDeexciteBase.cc.

143 {
144 if (!balance) return true; // Skip checks unless requested
145
146 if (verboseLevel > 1)
147 G4cout << " >>> " << theName << "::validateOutput" << G4endl;
148
150 balance->collide(target, particles);
151 return balance->okay(); // Returns false if violations
152}
void collide(G4InuclParticle *bullet, G4InuclParticle *target, G4CollisionOutput &output)
G4CascadeCheckBalance * balance
virtual void setVerboseLevel(G4int verbose=0)

References G4CascadeDeexciteBase::balance, G4CascadeCheckBalance::collide(), G4cout, G4endl, G4CascadeCheckBalance::okay(), G4VCascadeCollider::setVerboseLevel(), G4VCascadeCollider::theName, and G4VCascadeCollider::verboseLevel.

◆ validateOutput() [2/3]

G4bool G4CascadeDeexciteBase::validateOutput ( const G4Fragment target,
const std::vector< G4InuclNuclei > &  fragments 
)
protectedvirtualinherited

Definition at line 154 of file G4CascadeDeexciteBase.cc.

155 {
156 if (!balance) return true; // Skip checks unless requested
157
158 if (verboseLevel > 1)
159 G4cout << " >>> " << theName << "::validateOutput" << G4endl;
160
162 balance->collide(target, fragments);
163 return balance->okay(); // Returns false if violations
164}

References G4CascadeDeexciteBase::balance, G4CascadeCheckBalance::collide(), G4cout, G4endl, G4CascadeCheckBalance::okay(), G4VCascadeCollider::setVerboseLevel(), G4VCascadeCollider::theName, and G4VCascadeCollider::verboseLevel.

◆ validateOutput() [3/3]

G4bool G4CascadeDeexciteBase::validateOutput ( const G4Fragment target,
G4CollisionOutput output 
)
protectedvirtualinherited

Definition at line 130 of file G4CascadeDeexciteBase.cc.

131 {
132 if (!balance) return true; // Skip checks unless requested
133
134 if (verboseLevel > 1)
135 G4cout << " >>> " << theName << "::validateOutput" << G4endl;
136
138 balance->collide(target, output);
139 return balance->okay(); // Returns false if violations
140}

References G4CascadeDeexciteBase::balance, G4CascadeCheckBalance::collide(), G4cout, G4endl, G4CascadeCheckBalance::okay(), G4VCascadeCollider::setVerboseLevel(), G4VCascadeCollider::theName, and G4VCascadeCollider::verboseLevel.

Referenced by G4BigBanger::deExcite(), G4EquilibriumEvaporator::deExcite(), and G4NonEquilibriumEvaporator::deExcite().

Field Documentation

◆ A

G4int G4CascadeDeexciteBase::A
protectedinherited

◆ aFragment

G4Fragment G4CascadeDeexciteBase::aFragment
protectedinherited

Definition at line 82 of file G4CascadeDeexciteBase.hh.

Referenced by G4CascadeDeexciteBase::makeFragment().

◆ balance

G4CascadeCheckBalance* G4CascadeDeexciteBase::balance
protectedinherited

◆ EEXS

G4double G4CascadeDeexciteBase::EEXS
protectedinherited

◆ PEX

G4LorentzVector G4CascadeDeexciteBase::PEX
protectedinherited

◆ tempOutput

G4CollisionOutput G4CascadeDeexcitation::tempOutput
private

Definition at line 64 of file G4CascadeDeexcitation.hh.

Referenced by deExcite().

◆ theBigBanger

G4BigBanger* G4CascadeDeexcitation::theBigBanger
private

Definition at line 60 of file G4CascadeDeexcitation.hh.

Referenced by deExcite(), setVerboseLevel(), and ~G4CascadeDeexcitation().

◆ theEquilibriumEvaporator

G4EquilibriumEvaporator* G4CascadeDeexcitation::theEquilibriumEvaporator
private

Definition at line 62 of file G4CascadeDeexcitation.hh.

Referenced by deExcite(), setVerboseLevel(), and ~G4CascadeDeexcitation().

◆ theName

G4String G4VCascadeCollider::theName
protectedinherited

◆ theNonEquilibriumEvaporator

G4NonEquilibriumEvaporator* G4CascadeDeexcitation::theNonEquilibriumEvaporator
private

Definition at line 61 of file G4CascadeDeexcitation.hh.

Referenced by deExcite(), setVerboseLevel(), and ~G4CascadeDeexcitation().

◆ verboseLevel

G4int G4VCascadeCollider::verboseLevel
protectedinherited

Definition at line 53 of file G4VCascadeCollider.hh.

Referenced by G4CascadeCheckBalance::baryonOkay(), G4CascadeCheckBalance::chargeOkay(), G4IntraNucleiCascader::collide(), G4InuclCollider::collide(), G4LightTargetCollider::collide(), G4VCascadeDeexcitation::collide(), G4CascadeCheckBalance::collide(), G4CascadeRecoilMaker::collide(), G4ElementaryParticleCollider::collide(), G4IntraNucleiCascader::copySecondaries(), G4IntraNucleiCascader::copyWoundedNucleus(), G4IntraNucleiCascader::decayTrappedParticle(), deExcite(), G4InuclCollider::deexcite(), G4PreCompoundDeexcitation::deExcite(), G4BigBanger::deExcite(), G4EquilibriumEvaporator::deExcite(), G4EvaporationInuclCollider::deExcite(), G4Fissioner::deExcite(), G4NonEquilibriumEvaporator::deExcite(), G4CascadeCheckBalance::ekinOkay(), G4CascadeCheckBalance::energyOkay(), G4EquilibriumEvaporator::explosion(), G4CascadeDeexciteBase::explosion(), G4CascadeRecoilMaker::fillRecoil(), G4IntraNucleiCascader::finalize(), G4IntraNucleiCascader::finishCascade(), G4VCascadeCollider::G4VCascadeCollider(), G4BigBanger::generateBangInSCM(), G4IntraNucleiCascader::generateCascade(), G4BigBanger::generateMomentumModules(), G4ElementaryParticleCollider::generateMultiplicity(), G4ElementaryParticleCollider::generateSCMfinalState(), G4ElementaryParticleCollider::generateSCMmuonAbsorption(), G4ElementaryParticleCollider::generateSCMpionAbsorption(), G4ElementaryParticleCollider::generateSCMpionNAbsorption(), G4BigBanger::generateX(), G4EquilibriumEvaporator::getAF(), G4Fissioner::getC2(), G4EquilibriumEvaporator::getE0(), G4NonEquilibriumEvaporator::getE0(), G4NonEquilibriumEvaporator::getMatrixElement(), G4NonEquilibriumEvaporator::getParLev(), G4EquilibriumEvaporator::getPARLEVDEN(), G4EquilibriumEvaporator::getQF(), G4Fissioner::getZopt(), G4CascadeRecoilMaker::goodNucleus(), G4EquilibriumEvaporator::goodRemnant(), G4CascadeColliderBase::inelasticInteractionPossible(), G4IntraNucleiCascader::initialize(), G4CascadeDeexciteBase::makeFragment(), G4CascadeRecoilMaker::makeRecoilFragment(), G4CascadeRecoilMaker::makeRecoilNuclei(), G4BigBanger::maxProbability(), G4CascadeCheckBalance::momentumOkay(), G4IntraNucleiCascader::newCascade(), G4InuclCollider::photonuclearOkay(), G4ElementaryParticleCollider::pionNucleonAbsorption(), G4Fissioner::potentialMinimization(), G4IntraNucleiCascader::preloadCascade(), G4IntraNucleiCascader::processSecondary(), G4IntraNucleiCascader::processTrappedParticle(), G4IntraNucleiCascader::releaseSecondary(), G4IntraNucleiCascader::rescatter(), G4InuclCollider::rescatter(), G4IntraNucleiCascader::setupCascade(), G4InuclCollider::setVerboseLevel(), G4LightTargetCollider::setVerboseLevel(), G4VCascadeCollider::setVerboseLevel(), G4CascadeCheckBalance::strangeOkay(), G4InuclCollider::useCascadeDeexcitation(), G4InuclCollider::usePreCompoundDeexcitation(), G4CascadeDeexciteBase::validateOutput(), G4CascadeColliderBase::validateOutput(), G4CascadeRecoilMaker::wholeEvent(), and G4BigBanger::xProbability().

◆ Z

G4int G4CascadeDeexciteBase::Z
protectedinherited

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