Geant4
10.02.p02
|
Standard INCL4 particle propagation and avatar prediction. More...
#include <G4INCLStandardPropagationModel.hh>
Public Member Functions | |
StandardPropagationModel (LocalEnergyType localEnergyType, LocalEnergyType localEnergyDeltaType, const G4double hTime=0.0) | |
virtual | ~StandardPropagationModel () |
G4double | getCurrentTime () |
Returns the current global time of the system. More... | |
void | setNucleus (G4INCL::Nucleus *nucleus) |
Set the nucleus for this propagation model. More... | |
G4INCL::Nucleus * | getNucleus () |
Get the nucleus. More... | |
G4double | shoot (ParticleSpecies const &projectileSpecies, const G4double kineticEnergy, const G4double impactParameter, const G4double phi) |
G4double | shootParticle (ParticleType const t, const G4double kineticEnergy, const G4double impactParameter, const G4double phi) |
G4double | shootComposite (ParticleSpecies const &s, const G4double kineticEnergy, const G4double impactParameter, const G4double phi) |
void | setStoppingTime (G4double) |
Set the stopping time of the simulation. More... | |
G4double | getStoppingTime () |
Get the current stopping time. More... | |
void | registerAvatar (G4INCL::IAvatar *anAvatar) |
Add an avatar to the storage. More... | |
IAvatar * | generateBinaryCollisionAvatar (Particle *const p1, Particle *const p2) |
Generate a two-particle avatar. More... | |
G4double | getReflectionTime (G4INCL::Particle const *const aParticle) |
Get the reflection time. More... | |
G4double | getTime (G4INCL::Particle const *const particleA, G4INCL::Particle const *const particleB, G4double *minDistOfApproach) const |
Get the predicted time of the collision between two particles. More... | |
void | generateUpdatedCollisions (const ParticleList &updatedParticles, const ParticleList &particles) |
Generate and register collisions between a list of updated particles and all the other particles. More... | |
void | generateCollisions (const ParticleList &particles) |
Generate and register collisions among particles in a list, except between those in another list. More... | |
void | generateCollisions (const ParticleList &particles, const ParticleList &except) |
Generate and register collisions among particles in a list, except between those in another list. More... | |
void | generateDecays (const ParticleList &particles) |
Generate decays for particles that can decay. More... | |
void | updateAvatars (const ParticleList &particles) |
Update all avatars related to a particle. More... | |
void | generateAllAvatars () |
(Re)Generate all possible avatars. More... | |
G4INCL::IAvatar * | propagate (FinalState const *const fs) |
Propagate all particles and return the first avatar. More... | |
Public Member Functions inherited from G4INCL::IPropagationModel | |
IPropagationModel () | |
virtual | ~IPropagationModel () |
Additional Inherited Members |
Standard INCL4 particle propagation and avatar prediction.
This class implements the standard INCL4 avatar prediction and particle propagation logic. The main idea is to predict all collisions between particles and their reflections from the potential wall. After this we select the avatar with the smallest time, propagate all particles to their positions at that time and return the avatar to the INCL kernel
The particle trajectories in this propagation model are straight lines and all particles are assumed to move with constant velocity.
Definition at line 69 of file G4INCLStandardPropagationModel.hh.
G4INCL::StandardPropagationModel::StandardPropagationModel | ( | LocalEnergyType | localEnergyType, |
LocalEnergyType | localEnergyDeltaType, | ||
const G4double | hTime = 0.0 |
||
) |
Definition at line 63 of file G4INCLStandardPropagationModel.cc.
|
virtual |
Definition at line 72 of file G4INCLStandardPropagationModel.cc.
References theNucleus.
void G4INCL::StandardPropagationModel::generateAllAvatars | ( | ) |
(Re)Generate all possible avatars.
Definition at line 435 of file G4INCLStandardPropagationModel.cc.
References generateCollisions(), generateDecays(), G4INCL::Store::getParticles(), getReflectionTime(), G4INCL::Nucleus::getStore(), maximumTime, registerAvatar(), and theNucleus.
Referenced by shootComposite(), and shootParticle().
IAvatar * G4INCL::StandardPropagationModel::generateBinaryCollisionAvatar | ( | Particle *const | p1, |
Particle *const | p2 | ||
) |
Generate a two-particle avatar.
Generate a two-particle avatar, if all the appropriate conditions are met.
Definition at line 263 of file G4INCLStandardPropagationModel.cc.
References G4INCL::AlwaysLocalEnergy, backupParticle1, backupParticle2, currentTime, G4INCL::FirstCollisionLocalEnergy, G4INCL::Book::getAcceptedCollisions(), G4INCL::Store::getBook(), G4INCL::BinaryCollisionAvatar::getCutNNSquared(), G4INCL::Particle::getParticipantType(), G4INCL::Particle::getPosition(), G4INCL::Nucleus::getStore(), G4INCL::Nucleus::getSurfaceRadius(), getTime(), hadronizationTime, G4INCL::Particle::isNucleon(), G4INCL::Particle::isParticipant(), G4INCL::Particle::isPion(), G4INCL::Particle::isResonance(), G4INCL::ThreeVector::mag(), maximumTime, G4INCL::Particle::propagate(), G4INCL::KinematicsUtils::squareTotalEnergyInCM(), G4INCL::Math::tenPi, theLocalEnergyDeltaType, theLocalEnergyType, theNucleus, G4INCL::CrossSections::total(), and G4INCL::KinematicsUtils::transformToLocalEnergyFrame().
Referenced by generateCollisions(), and generateUpdatedCollisions().
void G4INCL::StandardPropagationModel::generateCollisions | ( | const ParticleList & | particles | ) |
Generate and register collisions among particles in a list, except between those in another list.
This method generates all possible collisions among the particles. Each collision is generated only once.
particles | list of particles |
Definition at line 395 of file G4INCLStandardPropagationModel.cc.
References generateBinaryCollisionAvatar(), and registerAvatar().
Referenced by generateAllAvatars().
void G4INCL::StandardPropagationModel::generateCollisions | ( | const ParticleList & | particles, |
const ParticleList & | except | ||
) |
Generate and register collisions among particles in a list, except between those in another list.
This method generates all possible collisions among the particles. Each collision is generated only once. The collision is NOT generated if BOTH collision partners belong to the except list.
You should pass an empty list as the except parameter if you want to generate all possible collisions among particles.
particles | list of particles |
except | list of excluded particles |
Definition at line 405 of file G4INCLStandardPropagationModel.cc.
References G4INCL::UnorderedVector< T >::contains(), generateBinaryCollisionAvatar(), and registerAvatar().
void G4INCL::StandardPropagationModel::generateDecays | ( | const ParticleList & | particles | ) |
Generate decays for particles that can decay.
The list of particles given as an argument is allowed to contain also stable particles.
particles | list of particles to (possibly) generate decays for |
Definition at line 463 of file G4INCLStandardPropagationModel.cc.
References G4INCL::DeltaDecayChannel::computeDecayTime(), currentTime, maximumTime, registerAvatar(), and theNucleus.
Referenced by generateAllAvatars(), and propagate().
void G4INCL::StandardPropagationModel::generateUpdatedCollisions | ( | const ParticleList & | updatedParticles, |
const ParticleList & | particles | ||
) |
Generate and register collisions between a list of updated particles and all the other particles.
This method does not generate collisions among the particles in updatedParticles; in other words, it generates a collision between one of the updatedParticles and one of the particles ONLY IF the latter does not belong to updatedParticles.
If you intend to generate all possible collisions among particles in a list, use generateCollisions().
updatedParticles | list of updated particles |
particles | list of particles |
Definition at line 376 of file G4INCLStandardPropagationModel.cc.
References G4INCL::UnorderedVector< T >::contains(), generateBinaryCollisionAvatar(), and registerAvatar().
Referenced by updateAvatars().
|
virtual |
Returns the current global time of the system.
Implements G4INCL::IPropagationModel.
Definition at line 249 of file G4INCLStandardPropagationModel.cc.
References currentTime.
|
virtual |
Get the nucleus.
Implements G4INCL::IPropagationModel.
Definition at line 77 of file G4INCLStandardPropagationModel.cc.
References theNucleus.
G4double G4INCL::StandardPropagationModel::getReflectionTime | ( | G4INCL::Particle const *const | aParticle | ) |
Get the reflection time.
Returns the reflection time of a particle on the potential wall.
aParticle | pointer to the particle |
Definition at line 339 of file G4INCLStandardPropagationModel.cc.
References currentTime, G4INCL::Intersection::exists, G4INCL::IntersectionFactory::getLaterTrajectoryIntersection(), G4INCL::Particle::getPosition(), G4INCL::Particle::getPropagationVelocity(), G4INCL::Nucleus::getSurfaceRadius(), INCL_ERROR, G4INCL::Particle::print(), theNucleus, and G4INCL::Intersection::time.
Referenced by generateAllAvatars(), and updateAvatars().
|
virtual |
Get the current stopping time.
Implements G4INCL::IPropagationModel.
Definition at line 240 of file G4INCLStandardPropagationModel.cc.
References maximumTime.
G4double G4INCL::StandardPropagationModel::getTime | ( | G4INCL::Particle const *const | particleA, |
G4INCL::Particle const *const | particleB, | ||
G4double * | minDistOfApproach | ||
) | const |
Get the predicted time of the collision between two particles.
Definition at line 356 of file G4INCLStandardPropagationModel.cc.
References currentTime, G4INCL::ThreeVector::dot(), G4INCL::Particle::getPosition(), G4INCL::Particle::getPropagationVelocity(), and G4INCL::ThreeVector::mag2().
Referenced by generateBinaryCollisionAvatar().
|
virtual |
Propagate all particles and return the first avatar.
Implements G4INCL::IPropagationModel.
Definition at line 475 of file G4INCLStandardPropagationModel.cc.
References G4INCL::Store::clearAvatars(), currentTime, G4INCL::Store::findSmallestTime(), generateDecays(), G4INCL::Store::getBook(), G4INCL::FinalState::getCreatedParticles(), G4INCL::FinalState::getEnteringParticles(), G4INCL::FinalState::getModifiedParticles(), G4INCL::Nucleus::getStore(), G4INCL::IAvatar::getTime(), G4INCL::FinalState::getValidity(), INCL_ERROR, G4INCL::PauliBlockedFS, G4INCL::Book::setCurrentTime(), theNucleus, G4INCL::Store::timeStep(), and updateAvatars().
void G4INCL::StandardPropagationModel::registerAvatar | ( | G4INCL::IAvatar * | anAvatar | ) |
Add an avatar to the storage.
Definition at line 258 of file G4INCLStandardPropagationModel.cc.
References G4INCL::Store::add(), G4INCL::Nucleus::getStore(), and theNucleus.
Referenced by generateAllAvatars(), generateCollisions(), generateDecays(), generateUpdatedCollisions(), and updateAvatars().
|
virtual |
Set the nucleus for this propagation model.
Implements G4INCL::IPropagationModel.
Definition at line 253 of file G4INCLStandardPropagationModel.cc.
References theNucleus.
|
virtual |
Set the stopping time of the simulation.
Implements G4INCL::IPropagationModel.
Definition at line 244 of file G4INCLStandardPropagationModel.cc.
References maximumTime.
|
virtual |
Implements G4INCL::IPropagationModel.
Definition at line 82 of file G4INCLStandardPropagationModel.cc.
References G4INCL::Composite, shootComposite(), shootParticle(), and G4INCL::ParticleSpecies::theType.
|
virtual |
Implements G4INCL::IPropagationModel.
Definition at line 166 of file G4INCLStandardPropagationModel.cc.
References G4INCL::Store::addParticleEntryAvatars(), G4INCL::Particle::boostVector(), G4INCL::CoulombDistortion::bringToSurface(), currentTime, firstAvatar, generateAllAvatars(), G4INCL::Particle::getA(), G4INCL::Cluster::getAngularMomentum(), G4INCL::Particle::getEnergy(), G4INCL::ParticleTable::getLargestNuclearRadius(), G4INCL::Particle::getMomentum(), G4INCL::Nucleus::getStore(), G4INCL::ParticleTable::getTableMass, G4INCL::Particle::getTransversePosition(), G4INCL::Nucleus::getUniverseRadius(), G4INCL::Particle::getZ(), INCL_DEBUG, G4INCL::ThreeVector::mag(), G4INCL::CoulombDistortion::maxImpactParameter(), maximumTime, position, G4INCL::Nucleus::setIncomingAngularMomentum(), G4INCL::Nucleus::setIncomingMomentum(), G4INCL::Nucleus::setInitialEnergy(), G4INCL::Nucleus::setNucleusNucleusCollision(), G4INCL::Cluster::setPosition(), G4INCL::Nucleus::setProjectileRemnant(), G4INCL::ProjectileRemnant::storeComponents(), and theNucleus.
Referenced by shoot().
|
virtual |
Implements G4INCL::IPropagationModel.
Definition at line 89 of file G4INCLStandardPropagationModel.cc.
References G4INCL::Store::addParticleEntryAvatar(), G4INCL::Particle::adjustMomentumFromEnergy(), G4INCL::Particle::boostVector(), G4INCL::CoulombDistortion::bringToSurface(), currentTime, G4INCL::KinematicsUtils::energy(), firstAvatar, generateAllAvatars(), G4INCL::Particle::getA(), G4INCL::Particle::getAngularMomentum(), G4INCL::Particle::getEnergy(), G4INCL::Particle::getKineticEnergy(), G4INCL::Particle::getMass(), G4INCL::Particle::getMomentum(), G4INCL::Particle::getSpecies(), G4INCL::Nucleus::getStore(), G4INCL::ParticleTable::getTableMass, G4INCL::ParticleTable::getTableParticleMass, G4INCL::Particle::getTransversePosition(), G4INCL::Nucleus::getUniverseRadius(), G4INCL::Particle::getZ(), INCL_DEBUG, G4INCL::Particle::isPion(), G4INCL::ThreeVector::mag(), G4INCL::Particle::makeProjectileSpectator(), G4INCL::CoulombDistortion::maxImpactParameter(), maximumTime, position, G4INCL::Particle::setEnergy(), G4INCL::Particle::setINCLMass(), G4INCL::Nucleus::setIncomingAngularMomentum(), G4INCL::Nucleus::setIncomingMomentum(), G4INCL::Nucleus::setInitialEnergy(), G4INCL::Nucleus::setParticleNucleusCollision(), G4INCL::Particle::setPosition(), and theNucleus.
Referenced by shoot().
void G4INCL::StandardPropagationModel::updateAvatars | ( | const ParticleList & | particles | ) |
Update all avatars related to a particle.
Definition at line 425 of file G4INCLStandardPropagationModel.cc.
References generateUpdatedCollisions(), G4INCL::Store::getParticles(), getReflectionTime(), G4INCL::Nucleus::getStore(), maximumTime, registerAvatar(), and theNucleus.
Referenced by propagate().
|
private |
Definition at line 200 of file G4INCLStandardPropagationModel.hh.
Referenced by generateBinaryCollisionAvatar().
|
private |
Definition at line 200 of file G4INCLStandardPropagationModel.hh.
Referenced by generateBinaryCollisionAvatar().
|
private |
Definition at line 196 of file G4INCLStandardPropagationModel.hh.
Referenced by generateBinaryCollisionAvatar(), generateDecays(), getCurrentTime(), getReflectionTime(), getTime(), propagate(), shootComposite(), and shootParticle().
|
private |
Definition at line 198 of file G4INCLStandardPropagationModel.hh.
Referenced by shootComposite(), and shootParticle().
|
private |
Definition at line 197 of file G4INCLStandardPropagationModel.hh.
Referenced by generateBinaryCollisionAvatar().
|
private |
Definition at line 195 of file G4INCLStandardPropagationModel.hh.
Referenced by generateAllAvatars(), generateBinaryCollisionAvatar(), generateDecays(), getStoppingTime(), setStoppingTime(), shootComposite(), shootParticle(), and updateAvatars().
|
private |
Definition at line 199 of file G4INCLStandardPropagationModel.hh.
Referenced by generateBinaryCollisionAvatar().
|
private |
Definition at line 199 of file G4INCLStandardPropagationModel.hh.
Referenced by generateBinaryCollisionAvatar().
|
private |
Definition at line 194 of file G4INCLStandardPropagationModel.hh.
Referenced by generateAllAvatars(), generateBinaryCollisionAvatar(), generateDecays(), getNucleus(), getReflectionTime(), propagate(), registerAvatar(), setNucleus(), shootComposite(), shootParticle(), updateAvatars(), and ~StandardPropagationModel().