Geant4-11
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions
G4CascadeColliderBase Class Referenceabstract

#include <G4CascadeColliderBase.hh>

Inheritance diagram for G4CascadeColliderBase:
G4VCascadeCollider G4ElementaryParticleCollider G4IntraNucleiCascader G4InuclCollider G4LightTargetCollider

Public Member Functions

virtual void collide (G4InuclParticle *bullet, G4InuclParticle *target, G4CollisionOutput &output)=0
 
 G4CascadeColliderBase (const G4String &name, G4int verbose=0)
 
virtual void rescatter (G4InuclParticle *, G4KineticTrackVector *, G4V3DNucleus *, G4CollisionOutput &)
 
virtual void setVerboseLevel (G4int verbose=0)
 
virtual ~G4CascadeColliderBase ()
 

Protected Member Functions

virtual G4bool inelasticInteractionPossible (G4InuclParticle *bullet, G4InuclParticle *target, G4double ekin) const
 
virtual void setName (const G4String &name)
 
virtual G4bool useEPCollider (G4InuclParticle *bullet, G4InuclParticle *target) const
 
virtual G4bool validateOutput (const G4Fragment &fragment, G4CollisionOutput &output)
 
virtual G4bool validateOutput (G4InuclParticle *bullet, G4InuclParticle *target, const std::vector< G4InuclElementaryParticle > &particles)
 
virtual G4bool validateOutput (G4InuclParticle *bullet, G4InuclParticle *target, G4CollisionOutput &output)
 

Protected Attributes

G4CascadeCheckBalancebalance
 
G4InteractionCase interCase
 
G4String theName
 
G4int verboseLevel
 

Private Member Functions

 G4CascadeColliderBase (const G4CascadeColliderBase &)
 
G4CascadeColliderBaseoperator= (const G4CascadeColliderBase &)
 

Detailed Description

Definition at line 62 of file G4CascadeColliderBase.hh.

Constructor & Destructor Documentation

◆ G4CascadeColliderBase() [1/2]

G4CascadeColliderBase::G4CascadeColliderBase ( const G4String name,
G4int  verbose = 0 
)

◆ ~G4CascadeColliderBase()

G4CascadeColliderBase::~G4CascadeColliderBase ( )
virtual

Definition at line 63 of file G4CascadeColliderBase.cc.

63 {
64 delete balance;
65}

References balance.

◆ G4CascadeColliderBase() [2/2]

G4CascadeColliderBase::G4CascadeColliderBase ( const G4CascadeColliderBase )
private

Member Function Documentation

◆ collide()

virtual void G4VCascadeCollider::collide ( G4InuclParticle bullet,
G4InuclParticle target,
G4CollisionOutput output 
)
pure virtualinherited

◆ inelasticInteractionPossible()

G4bool G4CascadeColliderBase::inelasticInteractionPossible ( G4InuclParticle bullet,
G4InuclParticle target,
G4double  ekin 
) const
protectedvirtual

Definition at line 85 of file G4CascadeColliderBase.cc.

87 {
88 if (verboseLevel) {
89 G4cout << " >>> " << theName << "::inelasticInteractionPossible" << G4endl;
90 }
91
92 // If hadron-hadron collision, defer to ElementaryParticleCollider
93 if (useEPCollider(bullet, target)) return true;
94
95 // See which one of the two (or both) is a nucleus, get properties
96 // FIXME: Should set a = baryon() for both, but that's not in base
97 G4InuclNuclei* nuclei_bullet = dynamic_cast<G4InuclNuclei*>(bullet);
98 G4double ab = nuclei_bullet ? nuclei_bullet->getA() : 1; // FIXME
99 G4double zb = nuclei_bullet ? nuclei_bullet->getZ() : bullet->getCharge();
100
101 G4InuclNuclei* nuclei_target = dynamic_cast<G4InuclNuclei*>(target);
102 G4double at = nuclei_target ? nuclei_target->getA() : 1; // FIXME
103 G4double zt = nuclei_target ? nuclei_target->getZ() : target->getCharge();
104
105 // VCOL (Coulomb barrier) used for testing if elastic collision necessary
106 const G4double coeff = 0.001 * 1.2;
107
108 G4double VCOL = coeff * zt * zb / (G4cbrt(at) + G4cbrt(ab));
109
110 G4bool possible = true; // Force inelastic; should be (ekin >= VCOL)
111
112 if (verboseLevel > 3) {
113 G4cout << " VCOL: " << VCOL << " ekin: " << ekin << " inelastic possible: "
114 << possible << G4endl;
115 }
116
117 return possible;
118}
static const G4double ab
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
virtual G4bool useEPCollider(G4InuclParticle *bullet, G4InuclParticle *target) const
G4int getZ() const
G4int getA() const
G4double getCharge() const

References ab, G4InuclSpecialFunctions::G4cbrt(), G4cout, G4endl, G4InuclNuclei::getA(), G4InuclParticle::getCharge(), G4InuclNuclei::getZ(), G4VCascadeCollider::theName, useEPCollider(), and G4VCascadeCollider::verboseLevel.

Referenced by G4InuclCollider::collide().

◆ operator=()

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

◆ rescatter()

virtual void G4CascadeColliderBase::rescatter ( G4InuclParticle ,
G4KineticTrackVector ,
G4V3DNucleus ,
G4CollisionOutput  
)
inlinevirtual

Reimplemented in G4IntraNucleiCascader, and G4InuclCollider.

Definition at line 68 of file G4CascadeColliderBase.hh.

71 { ; }

◆ setName()

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

◆ setVerboseLevel()

void G4CascadeColliderBase::setVerboseLevel ( G4int  verbose = 0)
virtual

◆ useEPCollider()

G4bool G4CascadeColliderBase::useEPCollider ( G4InuclParticle bullet,
G4InuclParticle target 
) const
protectedvirtual

◆ validateOutput() [1/3]

G4bool G4CascadeColliderBase::validateOutput ( const G4Fragment fragment,
G4CollisionOutput output 
)
protectedvirtual

Definition at line 139 of file G4CascadeColliderBase.cc.

140 {
141 if (!balance) return true; // Skip checks unless requested
142
143 if (verboseLevel > 1)
144 G4cout << " >>> " << theName << "::validateOutput" << G4endl;
145
147 balance->collide(fragment, output);
148 return balance->okay(); // Returns false if violations
149}
void collide(G4InuclParticle *bullet, G4InuclParticle *target, G4CollisionOutput &output)

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

◆ validateOutput() [2/3]

G4bool G4CascadeColliderBase::validateOutput ( G4InuclParticle bullet,
G4InuclParticle target,
const std::vector< G4InuclElementaryParticle > &  particles 
)
protectedvirtual

Definition at line 151 of file G4CascadeColliderBase.cc.

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

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

◆ validateOutput() [3/3]

G4bool G4CascadeColliderBase::validateOutput ( G4InuclParticle bullet,
G4InuclParticle target,
G4CollisionOutput output 
)
protectedvirtual

Definition at line 123 of file G4CascadeColliderBase.cc.

125 {
126 if (!balance) return true; // Skip checks unless requested
127
128 if (verboseLevel > 1)
129 G4cout << " >>> " << theName << "::validateOutput" << G4endl;
130
131 // Show final state particles
132 if (verboseLevel > 2) output.printCollisionOutput();
133
135 balance->collide(bullet, target, output);
136 return balance->okay(); // Returns false if violations
137}
void printCollisionOutput(std::ostream &os=G4cout) const

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

Referenced by G4ElementaryParticleCollider::collide(), and G4InuclCollider::deexcite().

Field Documentation

◆ balance

G4CascadeCheckBalance* G4CascadeColliderBase::balance
protected

◆ interCase

G4InteractionCase G4CascadeColliderBase::interCase
protected

◆ 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(), 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(), 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(), validateOutput(), G4CascadeRecoilMaker::wholeEvent(), and G4BigBanger::xProbability().


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