G4CascadeColliderBase Class Reference

#include <G4CascadeColliderBase.hh>

Inheritance diagram for G4CascadeColliderBase:

G4VCascadeCollider G4BigBanger G4ElementaryParticleCollider G4EquilibriumEvaporator G4EvaporationInuclCollider G4Fissioner G4IntraNucleiCascader G4InuclCollider G4NonEquilibriumEvaporator G4VCascadeDeexcitation

Public Member Functions

 G4CascadeColliderBase (const char *name, G4int verbose=0)
virtual ~G4CascadeColliderBase ()
virtual void rescatter (G4InuclParticle *, G4KineticTrackVector *, G4V3DNucleus *, G4CollisionOutput &)
virtual void setVerboseLevel (G4int verbose=0)
virtual void setConservationChecks (G4bool doBalance=true)

Protected Member Functions

virtual G4bool useEPCollider (G4InuclParticle *bullet, G4InuclParticle *target) const
virtual G4bool explosion (G4InuclNuclei *target) const
virtual G4bool explosion (G4Fragment *target) const
virtual G4bool explosion (G4int A, G4int Z, G4double excitation) const
virtual G4bool inelasticInteractionPossible (G4InuclParticle *bullet, G4InuclParticle *target, G4double ekin) const
virtual G4bool validateOutput (G4InuclParticle *bullet, G4InuclParticle *target, G4CollisionOutput &output)
virtual G4bool validateOutput (G4InuclParticle *bullet, G4InuclParticle *target, const std::vector< G4InuclElementaryParticle > &particles)
virtual G4bool validateOutput (G4InuclParticle *bullet, G4InuclParticle *target, const std::vector< G4InuclNuclei > &fragments)

Protected Attributes

G4InteractionCase interCase
G4bool doConservationChecks
G4CascadeCheckBalancebalance

Detailed Description

Definition at line 58 of file G4CascadeColliderBase.hh.


Constructor & Destructor Documentation

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 }


Member Function Documentation

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.

00067                                                               { ; }

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 }


Field Documentation

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().


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:51:35 2013 for Geant4 by  doxygen 1.4.7