#include <G4CascadeColliderBase.hh>
Inheritance diagram for G4CascadeColliderBase:
Definition at line 58 of file G4CascadeColliderBase.hh.
G4CascadeColliderBase::G4CascadeColliderBase | ( | const char * | name, | |
G4int | verbose = 0 | |||
) |
Definition at line 53 of file G4CascadeColliderBase.cc.
00054 : G4VCascadeCollider(name, verbose), 00055 #ifdef G4CASCADE_CHECK_ECONS 00056 doConservationChecks(true), 00057 #else 00058 doConservationChecks(false), 00059 #endif 00060 balance(new G4CascadeCheckBalance(0.001, 0.001, name)) {}
G4CascadeColliderBase::~G4CascadeColliderBase | ( | ) | [virtual] |
Definition at line 62 of file G4CascadeColliderBase.cc.
References balance.
00062 { 00063 delete balance; 00064 }
G4bool G4CascadeColliderBase::explosion | ( | G4int | A, | |
G4int | Z, | |||
G4double | excitation | |||
) | const [protected, virtual] |
Definition at line 94 of file G4CascadeColliderBase.cc.
References G4InuclSpecialFunctions::bindingEnergy(), G4cout, G4endl, G4VCascadeCollider::theName, and G4VCascadeCollider::verboseLevel.
00095 { 00096 if (verboseLevel) G4cout << " >>> " << theName << "::explosion ?" << G4endl; 00097 00098 const G4int a_cut = 20; 00099 const G4double be_cut = 3.0; 00100 00101 // Neutron balls, or small fragments with high excitations can explode 00102 return ((A <= a_cut || Z==0) && 00103 (excitation >= be_cut * bindingEnergy(A,Z)) 00104 ); 00105 }
G4bool G4CascadeColliderBase::explosion | ( | G4Fragment * | target | ) | const [protected, virtual] |
Definition at line 88 of file G4CascadeColliderBase.cc.
References explosion(), G4Fragment::GetA_asInt(), G4Fragment::GetExcitationEnergy(), and G4Fragment::GetZ_asInt().
00088 { 00089 return fragment && explosion(fragment->GetA_asInt(), fragment->GetZ_asInt(), 00090 fragment->GetExcitationEnergy()); // in MeV 00091 }
G4bool G4CascadeColliderBase::explosion | ( | G4InuclNuclei * | target | ) | const [protected, virtual] |
Definition at line 83 of file G4CascadeColliderBase.cc.
References G4InuclNuclei::getA(), G4InuclNuclei::getExitationEnergy(), and G4InuclNuclei::getZ().
Referenced by G4CascadeDeexcitation::collide(), G4PreCompoundDeexcitation::deExcite(), and explosion().
00083 { 00084 return target && explosion(target->getA(), target->getZ(), 00085 target->getExitationEnergy()); // in MeV 00086 }
G4bool G4CascadeColliderBase::inelasticInteractionPossible | ( | G4InuclParticle * | bullet, | |
G4InuclParticle * | target, | |||
G4double | ekin | |||
) | const [protected, virtual] |
Definition at line 111 of file G4CascadeColliderBase.cc.
References G4InuclSpecialFunctions::G4cbrt(), G4cout, G4endl, G4InuclNuclei::getA(), G4InuclParticle::getCharge(), G4InuclNuclei::getZ(), G4VCascadeCollider::theName, useEPCollider(), and G4VCascadeCollider::verboseLevel.
Referenced by G4InuclCollider::collide().
00113 { 00114 if (verboseLevel) { 00115 G4cout << " >>> " << theName << "::inelasticInteractionPossible" << G4endl; 00116 } 00117 00118 // If hadron-hadron collision, defer to ElementaryParticleCollider 00119 if (useEPCollider(bullet, target)) return true; 00120 00121 // See which one of the two (or both) is a nucleus, get properties 00122 // FIXME: Should set a = baryon() for both, but that's not in base 00123 G4InuclNuclei* nuclei_bullet = dynamic_cast<G4InuclNuclei*>(bullet); 00124 G4double ab = nuclei_bullet ? nuclei_bullet->getA() : 1; // FIXME 00125 G4double zb = nuclei_bullet ? nuclei_bullet->getZ() : bullet->getCharge(); 00126 00127 G4InuclNuclei* nuclei_target = dynamic_cast<G4InuclNuclei*>(target); 00128 G4double at = nuclei_target ? nuclei_target->getA() : 1; // FIXME 00129 G4double zt = nuclei_target ? nuclei_target->getZ() : target->getCharge(); 00130 00131 // VCOL (Coulomb barrier) used for testing if elastic collision necessary 00132 const G4double coeff = 0.001 * 1.2; 00133 00134 G4double VCOL = coeff * zt * zb / (G4cbrt(at) + G4cbrt(ab)); 00135 00136 G4bool possible = true; // Force inelastic; should be (ekin >= VCOL) 00137 00138 if (verboseLevel > 3) { 00139 G4cout << " VCOL: " << VCOL << " ekin: " << ekin << " inelastic possible: " 00140 << possible << G4endl; 00141 } 00142 00143 return possible; 00144 }
virtual void G4CascadeColliderBase::rescatter | ( | G4InuclParticle * | , | |
G4KineticTrackVector * | , | |||
G4V3DNucleus * | , | |||
G4CollisionOutput & | ||||
) | [inline, virtual] |
Reimplemented in G4IntraNucleiCascader, and G4InuclCollider.
Definition at line 64 of file G4CascadeColliderBase.hh.
virtual void G4CascadeColliderBase::setConservationChecks | ( | G4bool | doBalance = true |
) | [inline, virtual] |
Definition at line 71 of file G4CascadeColliderBase.hh.
References doConservationChecks.
Referenced by G4EquilibriumEvaporator::collide().
00071 { 00072 doConservationChecks = doBalance; 00073 }
void G4CascadeColliderBase::setVerboseLevel | ( | G4int | verbose = 0 |
) | [virtual] |
Reimplemented from G4VCascadeCollider.
Reimplemented in G4IntraNucleiCascader, and G4InuclCollider.
Definition at line 66 of file G4CascadeColliderBase.cc.
References balance, and G4VCascadeCollider::setVerboseLevel().
Referenced by G4EquilibriumEvaporator::collide(), G4CascadeDeexcitation::collide(), G4InuclCollider::setVerboseLevel(), G4IntraNucleiCascader::setVerboseLevel(), G4InuclCollider::useCascadeDeexcitation(), and G4InuclCollider::usePreCompoundDeexcitation().
00066 { 00067 G4VCascadeCollider::setVerboseLevel(verbose); 00068 balance->setVerboseLevel(verbose); 00069 }
G4bool G4CascadeColliderBase::useEPCollider | ( | G4InuclParticle * | bullet, | |
G4InuclParticle * | target | |||
) | const [protected, virtual] |
Definition at line 74 of file G4CascadeColliderBase.cc.
Referenced by G4InuclCollider::collide(), G4ElementaryParticleCollider::collide(), and inelasticInteractionPossible().
00075 { 00076 return (dynamic_cast<G4InuclElementaryParticle*>(bullet) && 00077 dynamic_cast<G4InuclElementaryParticle*>(target)); 00078 }
G4bool G4CascadeColliderBase::validateOutput | ( | G4InuclParticle * | bullet, | |
G4InuclParticle * | target, | |||
const std::vector< G4InuclNuclei > & | fragments | |||
) | [protected, virtual] |
Definition at line 178 of file G4CascadeColliderBase.cc.
References balance, G4CascadeCheckBalance::collide(), doConservationChecks, G4cout, G4endl, G4CascadeCheckBalance::okay(), G4VCascadeCollider::setVerboseLevel(), G4VCascadeCollider::theName, and G4VCascadeCollider::verboseLevel.
00180 { 00181 if (!doConservationChecks) return true; // Skip checks if requested 00182 00183 if (verboseLevel > 1) 00184 G4cout << " >>> " << theName << "::validateOutput" << G4endl; 00185 00186 balance->setVerboseLevel(verboseLevel); 00187 balance->collide(bullet, target, fragments); 00188 return balance->okay(); // Returns false if violations 00189 }
G4bool G4CascadeColliderBase::validateOutput | ( | G4InuclParticle * | bullet, | |
G4InuclParticle * | target, | |||
const std::vector< G4InuclElementaryParticle > & | particles | |||
) | [protected, virtual] |
Definition at line 165 of file G4CascadeColliderBase.cc.
References balance, G4CascadeCheckBalance::collide(), doConservationChecks, G4cout, G4endl, G4CascadeCheckBalance::okay(), G4VCascadeCollider::setVerboseLevel(), G4VCascadeCollider::theName, and G4VCascadeCollider::verboseLevel.
00167 { 00168 if (!doConservationChecks) return true; // Skip checks if requested 00169 00170 if (verboseLevel > 1) 00171 G4cout << " >>> " << theName << "::validateOutput" << G4endl; 00172 00173 balance->setVerboseLevel(verboseLevel); 00174 balance->collide(bullet, target, particles); 00175 return balance->okay(); // Returns false if violations 00176 }
G4bool G4CascadeColliderBase::validateOutput | ( | G4InuclParticle * | bullet, | |
G4InuclParticle * | target, | |||
G4CollisionOutput & | output | |||
) | [protected, virtual] |
Definition at line 149 of file G4CascadeColliderBase.cc.
References balance, G4CascadeCheckBalance::collide(), doConservationChecks, G4cout, G4endl, G4CascadeCheckBalance::okay(), G4CollisionOutput::printCollisionOutput(), G4VCascadeCollider::setVerboseLevel(), G4VCascadeCollider::theName, and G4VCascadeCollider::verboseLevel.
Referenced by G4PreCompoundDeexcitation::collide(), G4NonEquilibriumEvaporator::collide(), G4Fissioner::collide(), G4EquilibriumEvaporator::collide(), G4ElementaryParticleCollider::collide(), G4BigBanger::collide(), and G4InuclCollider::deexcite().
00151 { 00152 if (!doConservationChecks) return true; // Skip checks if requested 00153 00154 if (verboseLevel > 1) 00155 G4cout << " >>> " << theName << "::validateOutput" << G4endl; 00156 00157 // Show final state particles 00158 if (verboseLevel > 2) output.printCollisionOutput(); 00159 00160 balance->setVerboseLevel(verboseLevel); 00161 balance->collide(bullet, target, output); 00162 return balance->okay(); // Returns false if violations 00163 }
G4CascadeCheckBalance* G4CascadeColliderBase::balance [protected] |
Definition at line 78 of file G4CascadeColliderBase.hh.
Referenced by setVerboseLevel(), validateOutput(), and ~G4CascadeColliderBase().
G4bool G4CascadeColliderBase::doConservationChecks [protected] |
Definition at line 77 of file G4CascadeColliderBase.hh.
Referenced by G4EquilibriumEvaporator::collide(), setConservationChecks(), and validateOutput().
G4InteractionCase G4CascadeColliderBase::interCase [protected] |
Definition at line 76 of file G4CascadeColliderBase.hh.
Referenced by G4InuclCollider::collide(), G4ElementaryParticleCollider::collide(), G4IntraNucleiCascader::finishCascade(), G4IntraNucleiCascader::generateCascade(), G4IntraNucleiCascader::initialize(), G4IntraNucleiCascader::newCascade(), and G4IntraNucleiCascader::setupCascade().