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

#include <G4PreCompoundDeexcitation.hh>

Inheritance diagram for G4PreCompoundDeexcitation:
G4CascadeDeexciteBase G4VCascadeDeexcitation G4VCascadeCollider

Public Member Functions

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

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

 G4PreCompoundDeexcitation (const G4PreCompoundDeexcitation &)
 
G4PreCompoundDeexcitationoperator= (const G4PreCompoundDeexcitation &)
 

Private Attributes

G4VPreCompoundModeltheDeExcitation
 
G4ExcitationHandlertheExcitationHandler
 

Detailed Description

Definition at line 50 of file G4PreCompoundDeexcitation.hh.

Constructor & Destructor Documentation

◆ G4PreCompoundDeexcitation() [1/2]

G4PreCompoundDeexcitation::G4PreCompoundDeexcitation ( )

Definition at line 60 of file G4PreCompoundDeexcitation.cc.

61 : G4CascadeDeexciteBase("G4PreCompoundDeexcitation"),
63 // Access common instance of PreCompound instead of creating new one
66
67 // If not found, or cast fails, create a local instance
68 theDeExcitation = static_cast<G4PreCompoundModel*>(p);
69 if (!theDeExcitation) {
72 }
73}
G4CascadeDeexciteBase(const char *name)
G4HadronicInteraction * FindModel(const G4String &name)
static G4HadronicInteractionRegistry * Instance()
G4VPreCompoundModel * theDeExcitation
G4ExcitationHandler * theExcitationHandler

References G4HadronicInteractionRegistry::FindModel(), G4HadronicInteractionRegistry::Instance(), theDeExcitation, and theExcitationHandler.

◆ ~G4PreCompoundDeexcitation()

G4PreCompoundDeexcitation::~G4PreCompoundDeexcitation ( )
virtual

Definition at line 75 of file G4PreCompoundDeexcitation.cc.

75 {
76 // Per V.I. -- do not delete locally; handled in hadronic registry
77 //delete theExcitationHandler;
78 //delete theDeExcitation;
79}

◆ G4PreCompoundDeexcitation() [2/2]

G4PreCompoundDeexcitation::G4PreCompoundDeexcitation ( const G4PreCompoundDeexcitation )
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 G4PreCompoundDeexcitation::deExcite ( const G4Fragment fragment,
G4CollisionOutput globalOutput 
)
virtual

Implements G4VCascadeDeexcitation.

Definition at line 90 of file G4PreCompoundDeexcitation.cc.

91 {
92 if (verboseLevel)
93 G4cout << " >>> G4PreCompoundDeexcitation::deExcite" << G4endl;
94
95 if (verboseLevel > 1)
96 G4cout << fragment << G4endl;
97
98 G4ReactionProductVector* precompoundProducts = 0;
99
100 if (explosion(fragment) && theExcitationHandler) {
101 // FIXME: in principle, the explosion(...) stuff should also
102 // handle properly the case of Z=0 (neutron blob)
103 if (verboseLevel) G4cout << " calling BreakItUp" << G4endl;
104 precompoundProducts = theExcitationHandler->BreakItUp(fragment);
105
106 } else {
107 if (verboseLevel) G4cout << " calling DeExcite" << G4endl;
108 // NOTE: DeExcite() interface takes a *non-const* reference
109 // Make a non-const copy of original G4Fragment; otherwise it may be
110 // changed by DeExcite()
111 G4Fragment originalFragment(fragment);
112 precompoundProducts =
113 theDeExcitation->DeExcite(originalFragment);
114 }
115
116 // Transfer output of de-excitation back into Bertini objects
117 if (precompoundProducts) {
118 if (verboseLevel>1) {
119 G4cout << " Got " << precompoundProducts->size()
120 << " secondaries back from PreCompound:" << G4endl;
121 }
122
123 globalOutput.setVerboseLevel(verboseLevel); // For debugging
124 globalOutput.addOutgoingParticles(precompoundProducts);
125 globalOutput.setVerboseLevel(0);
126
127 for ( size_t i = 0; i < precompoundProducts->size(); i++ ) {
128 if ( (*precompoundProducts)[ i ] ) {
129 delete (*precompoundProducts)[ i ];
130 (*precompoundProducts)[ i ] = 0;
131 }
132 }
133 precompoundProducts->clear();
134 delete precompoundProducts;
135 }
136}
std::vector< G4ReactionProduct * > G4ReactionProductVector
virtual G4bool explosion(const G4Fragment &target) const
void setVerboseLevel(G4int verbose)
void addOutgoingParticles(const std::vector< G4InuclElementaryParticle > &particles)
G4ReactionProductVector * BreakItUp(const G4Fragment &theInitialState)
virtual G4ReactionProductVector * DeExcite(G4Fragment &aFragment)=0

References G4CollisionOutput::addOutgoingParticles(), G4ExcitationHandler::BreakItUp(), G4VPreCompoundModel::DeExcite(), G4CascadeDeexciteBase::explosion(), G4cout, G4endl, G4CollisionOutput::setVerboseLevel(), theDeExcitation, theExcitationHandler, 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 G4CascadeDeexcitation::deExcite(), 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=()

G4PreCompoundDeexcitation & G4PreCompoundDeexcitation::operator= ( const G4PreCompoundDeexcitation )
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 G4PreCompoundDeexcitation::setVerboseLevel ( G4int  verbose)
virtual

Reimplemented from G4CascadeDeexciteBase.

Definition at line 81 of file G4PreCompoundDeexcitation.cc.

81 {
84 // NOTE: G4ExcitationHandler doesn't have verbosity
85}
virtual void setVerboseLevel(G4int verbose=0)
void SetVerboseLevel(G4int value)

References G4HadronicInteraction::SetVerboseLevel(), G4CascadeDeexciteBase::setVerboseLevel(), and theDeExcitation.

◆ 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

◆ theDeExcitation

G4VPreCompoundModel* G4PreCompoundDeexcitation::theDeExcitation
private

◆ theExcitationHandler

G4ExcitationHandler* G4PreCompoundDeexcitation::theExcitationHandler
private

Definition at line 63 of file G4PreCompoundDeexcitation.hh.

Referenced by deExcite(), and G4PreCompoundDeexcitation().

◆ theName

G4String G4VCascadeCollider::theName
protectedinherited

◆ 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(), G4CascadeDeexcitation::deExcite(), G4InuclCollider::deexcite(), 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: