Geant4-11
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes
G4INCL::ProjectileRemnant Class Reference

#include <G4INCLProjectileRemnant.hh>

Inheritance diagram for G4INCL::ProjectileRemnant:
G4INCL::Cluster G4INCL::Particle

Public Types

typedef std::map< long, G4doubleEnergyLevelMap
 
typedef std::vector< G4doubleEnergyLevels
 

Public Member Functions

ParticleList addAllDynamicalSpectators (ParticleList const &pL)
 Add back all dynamical spectators to the projectile remnant. More...
 
ParticleList addDynamicalSpectators (ParticleList pL)
 Add back dynamical spectators to the projectile remnant. More...
 
ParticleList addMostDynamicalSpectators (ParticleList pL)
 Add back dynamical spectators to the projectile remnant. More...
 
void addParticle (Particle *const p)
 
void addParticles (ParticleList const &pL)
 Add a list of particles to the cluster. More...
 
G4double adjustEnergyFromMomentum ()
 Recompute the energy to match the momentum. More...
 
const ThreeVectoradjustMomentumFromEnergy ()
 Rescale the momentum to match the total energy. More...
 
void boost (const ThreeVector &aBoostVector)
 Boost the cluster with the indicated velocity. More...
 
ThreeVector boostVector () const
 
void clearEnergyLevels ()
 Clear the stored energy levels. More...
 
void clearParticles ()
 
void clearStoredComponents ()
 Clear the stored projectile components. More...
 
G4double computeExcitationEnergyExcept (const long exceptID) const
 Compute the excitation energy when a nucleon is removed. More...
 
G4double computeExcitationEnergyWith (const ParticleList &pL) const
 Compute the excitation energy if some nucleons are put back. More...
 
void deleteParticles ()
 
void deleteStoredComponents ()
 Clear the stored projectile components and delete the particles. More...
 
std::string dump () const
 
void freezeInternalMotion ()
 Freeze the internal motion of the particles. More...
 
void freezePropagation ()
 Freeze particle propagation. More...
 
G4int getA () const
 Returns the baryon number. More...
 
G4INCL::ThreeVector getAngularMomentum () const
 Get the total angular momentum (orbital + spin) More...
 
G4double getBeta () const
 
std::vector< G4intgetBiasCollisionVector () const
 Get the vector list of biased vertices on the particle path. More...
 
G4double getCosRPAngle () const
 Get the cosine of the angle between position and momentum. More...
 
G4double getEmissionQValueCorrection (const G4int AParent, const G4int ZParent) const
 Computes correction on the emission Q-value. More...
 
G4double getEmissionQValueCorrection (const G4int AParent, const G4int ZParent, const G4int SParent) const
 Computes correction on the emission Q-value for hypernuclei. More...
 
G4double getEmissionTime ()
 
G4double getEnergy () const
 
G4double getExcitationEnergy () const
 Get the excitation energy of the cluster. More...
 
G4double getFrozenEnergy () const
 Get the frozen particle momentum. More...
 
ThreeVector getFrozenMomentum () const
 Get the frozen particle momentum. More...
 
EnergyLevels const & getGroundStateEnergies () const
 
G4double getHelicity ()
 
long getID () const
 
G4double getINCLMass () const
 Get the INCL particle mass. More...
 
G4double getInvariantMass () const
 Get the the particle invariant mass. More...
 
G4double getKineticEnergy () const
 Get the particle kinetic energy. More...
 
ThreeVector getLongitudinalPosition () const
 Longitudinal component of the position w.r.t. the momentum. More...
 
G4double getMass () const
 Get the cached particle mass. More...
 
const G4INCL::ThreeVectorgetMomentum () const
 
G4int getNumberOfCollisions () const
 Return the number of collisions undergone by the particle. More...
 
G4int getNumberOfDecays () const
 Return the number of decays undergone by the particle. More...
 
G4int getNumberOfKaon () const
 Number of Kaon inside de nucleus. More...
 
G4int getNumberStoredComponents () const
 Get the number of the stored components. More...
 
ParticipantType getParticipantType () const
 
G4double getParticleBias () const
 Get the particle bias. More...
 
ParticleList getParticleList () const
 Returns the list of particles that make up the cluster. More...
 
ParticleList const & getParticles () const
 
const G4INCL::ThreeVectorgetPosition () const
 
G4double getPotentialEnergy () const
 Get the particle potential energy. More...
 
ThreeVector getPropagationVelocity () const
 Get the propagation velocity of the particle. More...
 
G4double getRealMass () const
 Get the real particle mass. More...
 
G4double getReflectionMomentum () const
 Return the reflection momentum. More...
 
G4int getS () const
 Returns the strangeness number. More...
 
ParticleSpecies getSpecies () const
 Get the particle species. More...
 
ThreeVector const & getSpin () const
 Get the spin of the nucleus. More...
 
virtual G4double getTableMass () const
 Get the real particle mass. More...
 
G4double getTransferQValueCorrection (const G4int AFrom, const G4int ZFrom, const G4int ATo, const G4int ZTo) const
 Computes correction on the transfer Q-value. More...
 
G4double getTransferQValueCorrection (const G4int AFrom, const G4int ZFrom, const G4int SFrom, const G4int ATo, const G4int ZTo, const G4int STo) const
 Computes correction on the transfer Q-value for hypernuclei. More...
 
ThreeVector getTransversePosition () const
 Transverse component of the position w.r.t. the momentum. More...
 
G4INCL::ParticleType getType () const
 
G4int getZ () const
 Returns the charge number. More...
 
void incrementNumberOfCollisions ()
 Increment the number of collisions undergone by the particle. More...
 
void incrementNumberOfDecays ()
 Increment the number of decays undergone by the particle. More...
 
virtual void initializeParticles ()
 Initialise the NuclearDensity pointer and sample the particles. More...
 
void internalBoostToCM ()
 Boost to the CM of the component particles. More...
 
G4bool isAntiKaon () const
 Is this an antiKaon? More...
 
G4bool isBaryon () const
 Is this a Baryon? More...
 
G4bool isCluster () const
 
G4bool isDelta () const
 Is it a Delta? More...
 
G4bool isEta () const
 Is this an eta? More...
 
G4bool isEtaPrime () const
 Is this an etaprime? More...
 
G4bool isHyperon () const
 Is this an Hyperon? More...
 
G4bool isKaon () const
 Is this a Kaon? More...
 
G4bool isLambda () const
 Is this a Lambda? More...
 
G4bool isMeson () const
 Is this a Meson? More...
 
G4bool isNucleon () const
 
G4bool isNucleonorLambda () const
 Is this a Nucleon or a Lambda? More...
 
G4bool isOmega () const
 Is this an omega? More...
 
G4bool isOutOfWell () const
 Check if the particle is out of its potential well. More...
 
G4bool isParticipant () const
 
G4bool isPhoton () const
 Is this a photon? More...
 
G4bool isPion () const
 Is this a pion? More...
 
G4bool isProjectileSpectator () const
 
G4bool isResonance () const
 Is it a resonance? More...
 
G4bool isSigma () const
 Is this a Sigma? More...
 
G4bool isStrange () const
 Is this an Strange? More...
 
G4bool isTargetSpectator () const
 
void lorentzContract (const ThreeVector &aBoostVector, const ThreeVector &refPos)
 Lorentz-contract the particle position around some center. More...
 
virtual void makeParticipant ()
 Make all the components participants, too. More...
 
virtual void makeProjectileSpectator ()
 Make all the components projectile spectators, too. More...
 
virtual void makeTargetSpectator ()
 Make all the components target spectators, too. More...
 
std::string print () const
 
 ProjectileRemnant (ParticleSpecies const &species, const G4double kineticEnergy)
 
void propagate (G4double step)
 
void putParticlesOffShell ()
 Put the cluster components off shell. More...
 
void removeParticle (Particle *const p)
 Remove a particle from the cluster components. More...
 
void removeParticle (Particle *const p, const G4double theProjectileCorrection)
 Remove a nucleon from the projectile remnant. More...
 
void reset ()
 Reset the projectile remnant to the state at the beginning of the cascade. More...
 
virtual void rotateMomentum (const G4double angle, const ThreeVector &axis)
 Rotate momentum of all the particles. More...
 
virtual void rotatePosition (const G4double angle, const ThreeVector &axis)
 Rotate position of all the particles. More...
 
virtual void rotatePositionAndMomentum (const G4double angle, const ThreeVector &axis)
 Rotate the particle position and momentum. More...
 
void rpCorrelate ()
 Make the particle follow a strict r-p correlation. More...
 
void rpDecorrelate ()
 Make the particle not follow a strict r-p correlation. More...
 
void setA (const G4int A)
 Set the mass number of the cluster. More...
 
void setBiasCollisionVector (std::vector< G4int > BiasCollisionVector)
 Set the vector list of biased vertices on the particle path. More...
 
void setEmissionTime (G4double t)
 
void setEnergy (G4double energy)
 
void setExcitationEnergy (const G4double e)
 Set the excitation energy of the cluster. More...
 
void setFrozenEnergy (const G4double energy)
 Set the frozen particle momentum. More...
 
void setFrozenMomentum (const ThreeVector &momentum)
 Set the frozen particle momentum. More...
 
void setHelicity (G4double h)
 
void setINCLMass ()
 Set the mass of the Particle to its table mass. More...
 
void setMass (G4double mass)
 
virtual void setMomentum (const G4INCL::ThreeVector &momentum)
 
void setNumberOfCollisions (G4int n)
 Set the number of collisions undergone by the particle. More...
 
void setNumberOfDecays (G4int n)
 Set the number of decays undergone by the particle. More...
 
void setNumberOfKaon (const G4int NK)
 
void setOutOfWell ()
 Mark the particle as out of its potential well. More...
 
void setParticipantType (ParticipantType const p)
 
void setParticleBias (G4double ParticleBias)
 Set the particle bias. More...
 
void setPosition (const ThreeVector &position)
 Set the position of the cluster. More...
 
void setPotentialEnergy (G4double v)
 Set the particle potential energy. More...
 
void setRealMass ()
 Set the mass of the Particle to its real mass. More...
 
void setS (const G4int S)
 Set the strangess number of the cluster. More...
 
void setSpin (const ThreeVector &j)
 Set the spin of the nucleus. More...
 
void setTableMass ()
 Set the mass of the Particle to its table mass. More...
 
void setType (ParticleType t)
 
void setUncorrelatedMomentum (const G4double p)
 Set the uncorrelated momentum. More...
 
void setZ (const G4int Z)
 Set the charge number of the cluster. More...
 
void storeComponents ()
 Store the projectile components. More...
 
void storeEnergyLevels ()
 Store the energy levels. More...
 
void swap (Cluster &rhs)
 Helper method for the assignment operator. More...
 
void thawPropagation ()
 Unfreeze particle propagation. More...
 
void updateClusterParameters ()
 Set total cluster mass, energy, size, etc. from the particles. More...
 
 ~ProjectileRemnant ()
 

Static Public Member Functions

static void FillINCLBiasVector (G4double newBias)
 
static G4double getBiasFromVector (std::vector< G4int > VectorBias)
 
static G4double getTotalBias ()
 General bias vector function. More...
 
static std::vector< G4intMergeVectorBias (Particle const *const p1, Particle const *const p2)
 
static std::vector< G4intMergeVectorBias (std::vector< G4int > p1, Particle const *const p2)
 
static void setINCLBiasVector (std::vector< G4double > NewVector)
 

Static Public Attributes

static std::vector< G4doubleINCLBiasVector
 Time ordered vector of all bias applied. More...
 
static G4ThreadLocal G4int nextBiasedCollisionID = 0
 

Protected Member Functions

void swap (Particle &rhs)
 Helper method for the assignment operator. More...
 

Protected Attributes

long ID
 
G4int nCollisions
 
G4int nDecays
 
ParticleList particles
 
G4bool rpCorrelated
 
G4int theA
 
G4double theEnergy
 
G4double theExcitationEnergy
 
G4double theFrozenEnergy
 
G4INCL::ThreeVector theFrozenMomentum
 
G4INCL::ThreeVector theMomentum
 
G4int theNKaon
 The number of Kaons inside the nucleus (update during the cascade) More...
 
ParticipantType theParticipantType
 
G4double theParticleBias
 
ParticleSamplertheParticleSampler
 
G4INCL::ThreeVector thePosition
 
G4double thePotentialEnergy
 
G4doublethePropagationEnergy
 
G4INCL::ThreeVectorthePropagationMomentum
 
G4int theS
 
ThreeVector theSpin
 
G4INCL::ParticleType theType
 
G4int theZ
 
G4double uncorrelatedMomentum
 

Private Member Functions

G4bool addDynamicalSpectator (Particle *const p)
 Add back a nucleon to the projectile remnant. More...
 
G4double computeDynamicalPotential ()
 Compute the dynamical cluster potential. More...
 
G4double computeExcitationEnergy (const EnergyLevels &levels) const
 Compute the excitation energy for a given configuration. More...
 
EnergyLevels getPresentEnergyLevelsExcept (const long exceptID) const
 
EnergyLevels getPresentEnergyLevelsWith (const ParticleList &pL) const
 
ParticleList getStoredComponents () const
 
ThreeVector const & getStoredMomentum (Particle const *const p) const
 Return the stored momentum of a given projectile component. More...
 
ParticleList shuffleStoredComponents ()
 Shuffle the list of stored projectile components. More...
 

Private Attributes

G4double emissionTime
 
G4bool outOfWell
 
std::map< long, Particle * > storedComponents
 Return the stored energy of a given projectile component. More...
 
std::vector< G4inttheBiasCollisionVector
 Time ordered vector of all biased vertices on the particle path. More...
 
EnergyLevels theGroundStateEnergies
 Ground-state energies for any number of nucleons. More...
 
G4double theHelicity
 
EnergyLevelMap theInitialEnergyLevels
 Initial energy levels of the projectile. More...
 
G4double theMass
 

Static Private Attributes

static G4ThreadLocal long nextID = 1
 

Detailed Description

Definition at line 58 of file G4INCLProjectileRemnant.hh.

Member Typedef Documentation

◆ EnergyLevelMap

Definition at line 63 of file G4INCLProjectileRemnant.hh.

◆ EnergyLevels

Definition at line 62 of file G4INCLProjectileRemnant.hh.

Constructor & Destructor Documentation

◆ ProjectileRemnant()

G4INCL::ProjectileRemnant::ProjectileRemnant ( ParticleSpecies const &  species,
const G4double  kineticEnergy 
)
inline

Definition at line 65 of file G4INCLProjectileRemnant.hh.

66 : Cluster(species.theZ, species.theA, species.theS) {
67
68 // Use the table mass
70
71 // Set the kinematics
72 const G4double projectileMass = getMass();
73 const G4double energy = kineticEnergy + projectileMass;
74 const G4double momentumZ = std::sqrt(energy*energy - projectileMass*projectileMass);
75
76 // Initialise the particles
80
81 // Store the energy levels of the ProjectileRemnant (used to compute its
82 // excitation energy)
84
85 // Boost the whole thing
86 const ThreeVector aBoostVector = ThreeVector(0.0, 0.0, momentumZ / energy);
87 boost(-aBoostVector);
88
89 // Freeze the internal motion of the particles
91
92 // Set as projectile spectator
94 }
double G4double
Definition: G4Types.hh:83
void boost(const ThreeVector &aBoostVector)
Boost the cluster with the indicated velocity.
void internalBoostToCM()
Boost to the CM of the component particles.
virtual void makeProjectileSpectator()
Make all the components projectile spectators, too.
virtual void initializeParticles()
Initialise the NuclearDensity pointer and sample the particles.
Cluster(const G4int Z, const G4int A, const G4int S, const G4bool createParticleSampler=true)
Standard Cluster constructor.
void freezeInternalMotion()
Freeze the internal motion of the particles.
void putParticlesOffShell()
Put the cluster components off shell.
G4double getMass() const
Get the cached particle mass.
void setTableMass()
Set the mass of the Particle to its table mass.
void storeEnergyLevels()
Store the energy levels.
G4double energy(const ThreeVector &p, const G4double m)

References G4INCL::Cluster::boost(), G4INCL::KinematicsUtils::energy(), G4INCL::Cluster::freezeInternalMotion(), G4INCL::Particle::getMass(), G4INCL::Cluster::initializeParticles(), G4INCL::Cluster::internalBoostToCM(), G4INCL::Cluster::makeProjectileSpectator(), G4INCL::Cluster::putParticlesOffShell(), G4INCL::Particle::setTableMass(), and storeEnergyLevels().

◆ ~ProjectileRemnant()

G4INCL::ProjectileRemnant::~ProjectileRemnant ( )
inline

Definition at line 96 of file G4INCLProjectileRemnant.hh.

96 {
98 // The ProjectileRemnant owns its particles
101 }
void clearEnergyLevels()
Clear the stored energy levels.
void deleteStoredComponents()
Clear the stored projectile components and delete the particles.

References clearEnergyLevels(), G4INCL::Cluster::deleteParticles(), and deleteStoredComponents().

Member Function Documentation

◆ addAllDynamicalSpectators()

ParticleList G4INCL::ProjectileRemnant::addAllDynamicalSpectators ( ParticleList const &  pL)

Add back all dynamical spectators to the projectile remnant.

Return a list of rejected dynamical spectators.

Definition at line 145 of file G4INCLProjectileRemnant.cc.

145 {
146 // Put all the spectators in the projectile
147 ThreeVector theNewMomentum = theMomentum;
148 G4double theNewEnergy = theEnergy;
149 G4int theNewA = theA;
150 G4int theNewZ = theZ;
151 G4int theNewS = theS;
152 for(ParticleIter p=pL.begin(), e=pL.end(); p!=e; ++p) {
153// assert((*p)->isNucleonorLambda());
154 // Add the initial (off-shell) momentum and energy to the projectile remnant
155 theNewMomentum += getStoredMomentum(*p);
156 theNewEnergy += (*p)->getEnergy();
157 theNewA += (*p)->getA();
158 theNewZ += (*p)->getZ();
159 theNewS += (*p)->getS();
160 }
161
162 // Check that the excitation energy of the new projectile remnant is non-negative
163 const G4double theNewMass = ParticleTable::getTableMass(theNewA,theNewZ,theNewS);
164 const G4double theNewExcitationEnergy = computeExcitationEnergyWith(pL);
165 const G4double theNewEffectiveMass = theNewMass + theNewExcitationEnergy;
166
167 // If this condition is satisfied, there is no solution. Fall back on the
168 // "most" method
169 if(theNewEnergy<theNewEffectiveMass) {
170 INCL_WARN("Could not add all the dynamical spectators back into the projectile remnant."
171 << " Falling back to the \"most\" method." << '\n');
173 }
174
175 // Add all the participants to the projectile remnant
176 for(ParticleIter p=pL.begin(), e=pL.end(); p!=e; ++p) {
177 particles.push_back(*p);
178 }
179
180 // Rescale the momentum of the projectile remnant so that sqrt(s) has the
181 // correct value
182 const G4double scalingFactorSquared = (theNewEnergy*theNewEnergy-theNewEffectiveMass*theNewEffectiveMass)/theNewMomentum.mag2();
183 const G4double scalingFactor = std::sqrt(scalingFactorSquared);
184 INCL_DEBUG("Scaling factor for the projectile-remnant momentum = " << scalingFactor << '\n');
185
186 theA = theNewA;
187 theZ = theNewZ;
188 theS = theNewS;
189 theMomentum = theNewMomentum * scalingFactor;
190 theEnergy = theNewEnergy;
191
192 return ParticleList();
193 }
#define INCL_WARN(x)
#define INCL_DEBUG(x)
int G4int
Definition: G4Types.hh:85
ParticleList particles
G4INCL::ThreeVector theMomentum
G4double computeExcitationEnergyWith(const ParticleList &pL) const
Compute the excitation energy if some nucleons are put back.
ParticleList addMostDynamicalSpectators(ParticleList pL)
Add back dynamical spectators to the projectile remnant.
ThreeVector const & getStoredMomentum(Particle const *const p) const
Return the stored momentum of a given projectile component.
G4ThreadLocal NuclearMassFn getTableMass
Static pointer to the mass function for nuclei.
ParticleList::const_iterator ParticleIter

References addMostDynamicalSpectators(), computeExcitationEnergyWith(), getStoredMomentum(), G4INCL::ParticleTable::getTableMass, INCL_DEBUG, INCL_WARN, G4INCL::ThreeVector::mag2(), G4INCL::Cluster::particles, G4INCL::Particle::theA, G4INCL::Particle::theEnergy, G4INCL::Particle::theMomentum, G4INCL::Particle::theS, and G4INCL::Particle::theZ.

Referenced by G4INCL::INCL::makeProjectileRemnant().

◆ addDynamicalSpectator()

G4bool G4INCL::ProjectileRemnant::addDynamicalSpectator ( Particle *const  p)
private

Add back a nucleon to the projectile remnant.

Try to add a dynamical spectator back to the projectile remnant. Refuse to do so if this leads to a negative projectile excitation energy. Return true on success, false on failure.

Definition at line 296 of file G4INCLProjectileRemnant.cc.

296 {
297// assert(p->isNucleon());
298
299 // Add the initial (off-shell) momentum and energy to the projectile remnant
300 ThreeVector const &oldMomentum = getStoredMomentum(p);
301 const ThreeVector theNewMomentum = theMomentum + oldMomentum;
302 const G4double oldEnergy = p->getEnergy();
303 const G4double theNewEnergy = theEnergy + oldEnergy;
304
305 // Check that the excitation energy of the new projectile remnant is non-negative
306 const G4double theNewMass = ParticleTable::getTableMass(theA+p->getA(),theZ+p->getZ(),theS+p->getS());
307 const G4double theNewInvariantMassSquared = theNewEnergy*theNewEnergy-theNewMomentum.mag2();
308
309 if(theNewInvariantMassSquared<0.)
310 return false;
311
312 const G4double theNewInvariantMass = std::sqrt(theNewInvariantMassSquared);
313
314 if(theNewInvariantMass-theNewMass<-1.e-5)
315 return false; // negative excitation energy here
316
317 // Add the spectator to the projectile remnant
318 theA += p->getA();
319 theZ += p->getZ();
320 theMomentum = theNewMomentum;
321 theEnergy = theNewEnergy;
322 particles.push_back(p);
323 return true;
324 }

References G4INCL::Particle::getA(), G4INCL::Particle::getEnergy(), G4INCL::Particle::getS(), getStoredMomentum(), G4INCL::ParticleTable::getTableMass, G4INCL::Particle::getZ(), G4INCL::ThreeVector::mag2(), G4INCL::Cluster::particles, G4INCL::Particle::theA, G4INCL::Particle::theEnergy, G4INCL::Particle::theMomentum, G4INCL::Particle::theS, and G4INCL::Particle::theZ.

Referenced by addDynamicalSpectators().

◆ addDynamicalSpectators()

ParticleList G4INCL::ProjectileRemnant::addDynamicalSpectators ( ParticleList  pL)

Add back dynamical spectators to the projectile remnant.

Try to add the dynamical spectators back to the projectile remnant. Refuse to do so if this leads to a negative projectile excitation energy.

Return a list of rejected dynamical spectators.

Definition at line 122 of file G4INCLProjectileRemnant.cc.

122 {
123 // Try as hard as possible to add back all the dynamical spectators.
124 // Don't add spectators that lead to negative excitation energies, but
125 // iterate over the spectators as many times as possible, until
126 // absolutely sure that all of them were rejected.
127 unsigned int accepted;
128 unsigned long loopCounter = 0;
129 const unsigned long maxLoopCounter = 10000000;
130 do {
131 accepted = 0;
132 ParticleList toBeAdded = pL;
133 for(ParticleIter p=toBeAdded.begin(), e=toBeAdded.end(); p!=e; ++p) {
134 G4bool isAccepted = addDynamicalSpectator(*p);
135 if(isAccepted) {
136 pL.remove(*p);
137 accepted++;
138 }
139 }
140 ++loopCounter;
141 } while(loopCounter<maxLoopCounter && accepted > 0); /* Loop checking, 10.07.2015, D.Mancusi */
142 return pL;
143 }
bool G4bool
Definition: G4Types.hh:86
G4bool addDynamicalSpectator(Particle *const p)
Add back a nucleon to the projectile remnant.

References addDynamicalSpectator(), and G4INCL::UnorderedVector< T >::remove().

◆ addMostDynamicalSpectators()

ParticleList G4INCL::ProjectileRemnant::addMostDynamicalSpectators ( ParticleList  pL)

Add back dynamical spectators to the projectile remnant.

Try as hard as possible to add back all the dynamical spectators. Don't add spectators that lead to negative excitation energies. Start by adding all of them, and repeatedly remove the most troublesome one until the excitation energy becomes non-negative.

Return a list of rejected dynamical spectators.

Definition at line 195 of file G4INCLProjectileRemnant.cc.

195 {
196 // Try as hard as possible to add back all the dynamical spectators.
197 // Don't add spectators that lead to negative excitation energies. Start by
198 // adding all of them, and repeatedly remove the most troublesome one until
199 // the excitation energy becomes non-negative.
200
201 // Put all the spectators in the projectile
202 ThreeVector theNewMomentum = theMomentum;
203 G4double theNewEnergy = theEnergy;
204 G4int theNewA = theA;
205 G4int theNewZ = theZ;
206 G4int theNewS = theS;
207 for(ParticleIter p=pL.begin(), e=pL.end(); p!=e; ++p) {
208// assert((*p)->isNucleonorLambda());
209 // Add the initial (off-shell) momentum and energy to the projectile remnant
210 theNewMomentum += getStoredMomentum(*p);
211 theNewEnergy += (*p)->getEnergy();
212 theNewA += (*p)->getA();
213 theNewZ += (*p)->getZ();
214 theNewS += (*p)->getS();
215 }
216
217 // Check that the excitation energy of the new projectile remnant is non-negative
218 const G4double theNewMass = ParticleTable::getTableMass(theNewA,theNewZ,theNewS);
219 const G4double theNewInvariantMassSquared = theNewEnergy*theNewEnergy-theNewMomentum.mag2();
220
221 G4bool positiveExcitationEnergy = false;
222 if(theNewInvariantMassSquared>=0.) {
223 const G4double theNewInvariantMass = std::sqrt(theNewInvariantMassSquared);
224 positiveExcitationEnergy = (theNewInvariantMass-theNewMass>-1.e-5);
225 }
226
227 // Keep removing nucleons from the projectile remnant until we achieve a
228 // non-negative excitation energy.
229 ParticleList rejected;
230 while(!positiveExcitationEnergy && !pL.empty()) { /* Loop checking, 10.07.2015, D.Mancusi */
231 G4double maxExcitationEnergy = -1.E30;
232 ParticleMutableIter best = pL.end();
233 ThreeVector bestMomentum;
234 G4double bestEnergy = -1.;
235 G4int bestA = -1, bestZ = -1, bestS = 0;
236 for(ParticleList::iterator p=pL.begin(), e=pL.end(); p!=e; ++p) {
237 // Subtract the initial (off-shell) momentum and energy from the new
238 // projectile remnant
239 const ThreeVector theNewerMomentum = theNewMomentum - getStoredMomentum(*p);
240 const G4double theNewerEnergy = theNewEnergy - (*p)->getEnergy();
241 const G4int theNewerA = theNewA - (*p)->getA();
242 const G4int theNewerZ = theNewZ - (*p)->getZ();
243 const G4int theNewerS = theNewS - (*p)->getS();
244
245 const G4double theNewerMass = ParticleTable::getTableMass(theNewerA,theNewerZ,theNewerS);
246 const G4double theNewerInvariantMassSquared = theNewerEnergy*theNewerEnergy-theNewerMomentum.mag2();
247
248 if(theNewerInvariantMassSquared>=-1.e-5) {
249 const G4double theNewerInvariantMass = std::sqrt(std::max(0.,theNewerInvariantMassSquared));
250 const G4double theNewerExcitationEnergy = ((theNewerA>1) ? theNewerInvariantMass-theNewerMass : 0.);
251 // Pick the nucleon that maximises the excitation energy of the
252 // ProjectileRemnant
253 if(theNewerExcitationEnergy>maxExcitationEnergy) {
254 best = p;
255 maxExcitationEnergy = theNewerExcitationEnergy;
256 bestMomentum = theNewerMomentum;
257 bestEnergy = theNewerEnergy;
258 bestA = theNewerA;
259 bestZ = theNewerZ;
260 bestS = theNewerS;
261 }
262 }
263 }
264
265 // If we couldn't even calculate the excitation energy, fail miserably
266 if(best==pL.end())
267 return pL;
268
269 rejected.push_back(*best);
270 pL.erase(best);
271 theNewMomentum = bestMomentum;
272 theNewEnergy = bestEnergy;
273 theNewA = bestA;
274 theNewZ = bestZ;
275 theNewS = bestS;
276
277 if(maxExcitationEnergy>0.) {
278 // Stop here
279 positiveExcitationEnergy = true;
280 }
281 }
282
283 // Add the accepted participants to the projectile remnant
284 for(ParticleIter p=pL.begin(), e=pL.end(); p!=e; ++p) {
285 particles.push_back(*p);
286 }
287 theA = theNewA;
288 theZ = theNewZ;
289 theS = theNewS;
290 theMomentum = theNewMomentum;
291 theEnergy = theNewEnergy;
292
293 return rejected;
294 }
T max(const T t1, const T t2)
brief Return the largest of the two arguments
ParticleList::iterator ParticleMutableIter

References getStoredMomentum(), G4INCL::ParticleTable::getTableMass, G4INCL::ThreeVector::mag2(), G4INCL::Math::max(), G4INCL::Cluster::particles, G4INCL::Particle::theA, G4INCL::Particle::theEnergy, G4INCL::Particle::theMomentum, G4INCL::Particle::theS, and G4INCL::Particle::theZ.

Referenced by addAllDynamicalSpectators().

◆ addParticle()

void G4INCL::Cluster::addParticle ( Particle *const  p)
inlineinherited

Add one particle to the cluster. This updates the cluster mass, energy, size, etc.

Definition at line 178 of file G4INCLCluster.hh.

178 {
179 particles.push_back(p);
180 theEnergy += p->getEnergy();
181 thePotentialEnergy += p->getPotentialEnergy();
182 theMomentum += p->getMomentum();
183 thePosition += p->getPosition();
184 theA += p->getA();
185 theZ += p->getZ();
186 theS += p->getS();
187 nCollisions += p->getNumberOfCollisions();
188 }
G4double thePotentialEnergy
G4INCL::ThreeVector thePosition

References G4INCL::Particle::getA(), G4INCL::Particle::getEnergy(), G4INCL::Particle::getMomentum(), G4INCL::Particle::getNumberOfCollisions(), G4INCL::Particle::getPosition(), G4INCL::Particle::getPotentialEnergy(), G4INCL::Particle::getS(), G4INCL::Particle::getZ(), G4INCL::Particle::nCollisions, G4INCL::Cluster::particles, G4INCL::Particle::theA, G4INCL::Particle::theEnergy, G4INCL::Particle::theMomentum, G4INCL::Particle::thePosition, G4INCL::Particle::thePotentialEnergy, G4INCL::Particle::theS, and G4INCL::Particle::theZ.

Referenced by G4INCL::Cluster::Cluster(), and reset().

◆ addParticles()

void G4INCL::Cluster::addParticles ( ParticleList const &  pL)
inlineinherited

Add a list of particles to the cluster.

Definition at line 213 of file G4INCLCluster.hh.

213 {
214 particles = pL;
216 }
void updateClusterParameters()
Set total cluster mass, energy, size, etc. from the particles.

References G4INCL::Cluster::particles, and G4INCL::Cluster::updateClusterParameters().

◆ adjustEnergyFromMomentum()

G4double G4INCL::Particle::adjustEnergyFromMomentum ( )
inherited

Recompute the energy to match the momentum.

Definition at line 155 of file G4INCLParticle.cc.

155 {
156 theEnergy = std::sqrt(theMomentum.mag2() + theMass*theMass);
157 return theEnergy;
158 }
G4double mag2() const

References G4INCL::ThreeVector::mag2(), G4INCL::Particle::theEnergy, G4INCL::Particle::theMass, and G4INCL::Particle::theMomentum.

Referenced by G4INCL::Nucleus::computeOneNucleonRecoilKinematics(), G4INCL::Nucleus::computeRecoilKinematics(), G4INCL::Nucleus::decayOutgoingPionResonances(), G4INCL::Nucleus::decayOutgoingSigmaZero(), G4INCL::DeltaDecayChannel::fillFinalState(), G4INCL::NKbElasticChannel::fillFinalState(), G4INCL::NKbToLpiChannel::fillFinalState(), G4INCL::NKbToNKbChannel::fillFinalState(), G4INCL::NKbToSpiChannel::fillFinalState(), G4INCL::NKElasticChannel::fillFinalState(), G4INCL::NKToNKChannel::fillFinalState(), G4INCL::NSToNSChannel::fillFinalState(), G4INCL::PionResonanceDecayChannel::fillFinalState(), G4INCL::RecombinationChannel::fillFinalState(), G4INCL::SigmaZeroDecayChannel::fillFinalState(), G4INCL::StrangeAbsorbtionChannel::fillFinalState(), G4INCL::PhaseSpaceKopylov::generate(), G4INCL::PhaseSpaceRauboldLynch::generateEvent(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::phaseSpaceDecay(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::threeBodyDecay(), and G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::twoBodyDecay().

◆ adjustMomentumFromEnergy()

const ThreeVector & G4INCL::Particle::adjustMomentumFromEnergy ( )
inherited

◆ boost()

void G4INCL::Cluster::boost ( const ThreeVector aBoostVector)
inlineinherited

Boost the cluster with the indicated velocity.

The Cluster is boosted as a whole, just like any Particle object; moreover, the internal components (particles list) are also boosted, according to Alain Boudard's off-shell recipe.

Parameters
aBoostVectorthe velocity to boost to [c]

Definition at line 344 of file G4INCLCluster.hh.

344 {
345 Particle::boost(aBoostVector);
346 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
347 (*p)->boost(aBoostVector);
348 // Apply Lorentz contraction to the particle position
349 (*p)->lorentzContract(aBoostVector,thePosition);
350 (*p)->rpCorrelate();
351 }
352
353 INCL_DEBUG("Cluster was boosted with (bx,by,bz)=("
354 << aBoostVector.getX() << ", " << aBoostVector.getY() << ", " << aBoostVector.getZ() << "):"
355 << '\n' << print());
356
357 }
std::string print() const
void boost(const ThreeVector &aBoostVector)

References G4INCL::Particle::boost(), G4INCL::ThreeVector::getX(), G4INCL::ThreeVector::getY(), G4INCL::ThreeVector::getZ(), INCL_DEBUG, G4INCL::Cluster::particles, G4INCL::Cluster::print(), and G4INCL::Particle::thePosition.

Referenced by ProjectileRemnant(), G4INCL::INCL::RecoilCMFunctor::RecoilCMFunctor(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::threeBodyDecay(), and G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::twoBodyDecay().

◆ boostVector()

ThreeVector G4INCL::Particle::boostVector ( ) const
inlineinherited

◆ clearEnergyLevels()

void G4INCL::ProjectileRemnant::clearEnergyLevels ( )
inline

Clear the stored energy levels.

Definition at line 153 of file G4INCLProjectileRemnant.hh.

153 {
156 }
EnergyLevelMap theInitialEnergyLevels
Initial energy levels of the projectile.
EnergyLevels theGroundStateEnergies
Ground-state energies for any number of nucleons.

References theGroundStateEnergies, and theInitialEnergyLevels.

Referenced by ~ProjectileRemnant().

◆ clearParticles()

void G4INCL::Cluster::clearParticles ( )
inlineinherited

Definition at line 143 of file G4INCLCluster.hh.

143{ particles.clear(); }

References G4INCL::Cluster::particles.

Referenced by G4INCL::Cluster::deleteParticles().

◆ clearStoredComponents()

void G4INCL::ProjectileRemnant::clearStoredComponents ( )
inline

Clear the stored projectile components.

Definition at line 148 of file G4INCLProjectileRemnant.hh.

148 {
149 storedComponents.clear();
150 }
std::map< long, Particle * > storedComponents
Return the stored energy of a given projectile component.

References storedComponents.

Referenced by deleteStoredComponents().

◆ computeDynamicalPotential()

G4double G4INCL::Cluster::computeDynamicalPotential ( )
inlineprivateinherited

Compute the dynamical cluster potential.

Alain Boudard's boost prescription for low-energy beams requires to define a "dynamical potential" that allows us to conserve momentum and energy when boosting the projectile cluster.

Definition at line 439 of file G4INCLCluster.hh.

439 {
440 G4double theDynamicalPotential = 0.0;
441 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
442 theDynamicalPotential += (*p)->getEnergy();
443 }
444 theDynamicalPotential -= getTableMass();
445 theDynamicalPotential /= theA;
446
447 return theDynamicalPotential;
448 }
virtual G4double getTableMass() const
Get the real particle mass.

References G4INCL::Cluster::getTableMass(), G4INCL::Cluster::particles, and G4INCL::Particle::theA.

Referenced by G4INCL::Cluster::putParticlesOffShell().

◆ computeExcitationEnergy()

G4double G4INCL::ProjectileRemnant::computeExcitationEnergy ( const EnergyLevels levels) const
private

Compute the excitation energy for a given configuration.

The function that does the real job of calculating the excitation energy for a given configuration of energy levels.

Parameters
levelsa configuration of energy levels
Returns
the excitation energy

Definition at line 336 of file G4INCLProjectileRemnant.cc.

336 {
337 // The ground-state energy is the sum of the A smallest initial projectile
338 // energies.
339 // For the last nucleon, return 0 so that the algorithm will just put it on
340 // shell.
341 const unsigned theNewA = levels.size();
342// assert(theNewA>0);
343 if(theNewA==1)
344 return 0.;
345
346 const G4double groundState = theGroundStateEnergies.at(theNewA-1);
347
348 // Compute the sum of the presently occupied energy levels
349 const G4double excitedState = std::accumulate(
350 levels.begin(),
351 levels.end(),
352 0.);
353
354 return excitedState-groundState;
355 }

References theGroundStateEnergies.

Referenced by computeExcitationEnergyExcept(), and computeExcitationEnergyWith().

◆ computeExcitationEnergyExcept()

G4double G4INCL::ProjectileRemnant::computeExcitationEnergyExcept ( const long  exceptID) const

Compute the excitation energy when a nucleon is removed.

Compute the excitation energy of the projectile-like remnant as the difference between the initial and the present configuration. This follows the algorithm proposed by A. Boudard in INCL4.2-HI, as implemented in Geant4.

Returns
the excitation energy

Definition at line 326 of file G4INCLProjectileRemnant.cc.

326 {
327 const EnergyLevels theEnergyLevels = getPresentEnergyLevelsExcept(exceptID);
328 return computeExcitationEnergy(theEnergyLevels);
329 }
std::vector< G4double > EnergyLevels
G4double computeExcitationEnergy(const EnergyLevels &levels) const
Compute the excitation energy for a given configuration.
EnergyLevels getPresentEnergyLevelsExcept(const long exceptID) const

References computeExcitationEnergy(), and getPresentEnergyLevelsExcept().

Referenced by G4INCL::ParticleEntryChannel::fillFinalState().

◆ computeExcitationEnergyWith()

G4double G4INCL::ProjectileRemnant::computeExcitationEnergyWith ( const ParticleList pL) const

Compute the excitation energy if some nucleons are put back.

Returns
the excitation energy

Definition at line 331 of file G4INCLProjectileRemnant.cc.

331 {
332 const EnergyLevels theEnergyLevels = getPresentEnergyLevelsWith(pL);
333 return computeExcitationEnergy(theEnergyLevels);
334 }
EnergyLevels getPresentEnergyLevelsWith(const ParticleList &pL) const

References computeExcitationEnergy(), and getPresentEnergyLevelsWith().

Referenced by addAllDynamicalSpectators().

◆ deleteParticles()

void G4INCL::Cluster::deleteParticles ( )
inlineinherited

Definition at line 136 of file G4INCLCluster.hh.

136 {
137 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
138 delete (*p);
139 }
141 }

References G4INCL::Cluster::clearParticles(), and G4INCL::Cluster::particles.

Referenced by G4INCL::Store::clearOutgoing(), G4INCL::Nucleus::decayOutgoingClusters(), reset(), and ~ProjectileRemnant().

◆ deleteStoredComponents()

void G4INCL::ProjectileRemnant::deleteStoredComponents ( )
inline

Clear the stored projectile components and delete the particles.

Definition at line 141 of file G4INCLProjectileRemnant.hh.

141 {
142 for(std::map<long,Particle*>::const_iterator p=storedComponents.begin(), e=storedComponents.end(); p!=e; ++p)
143 delete p->second;
145 }
void clearStoredComponents()
Clear the stored projectile components.

References clearStoredComponents(), and storedComponents.

Referenced by ~ProjectileRemnant().

◆ dump()

std::string G4INCL::Particle::dump ( ) const
inlineinherited

Definition at line 968 of file G4INCLParticle.hh.

968 {
969 std::stringstream ss;
970 ss << "(particle " << ID << " ";
972 ss << '\n'
973 << thePosition.dump()
974 << '\n'
975 << theMomentum.dump()
976 << '\n'
977 << theEnergy << ")" << '\n';
978 return ss.str();
979 };
G4INCL::ParticleType theType
std::string dump() const
std::string getName(const ParticleType t)
Get the native INCL name of the particle.

References G4INCL::ThreeVector::dump(), G4INCL::ParticleTable::getName(), G4INCL::Particle::ID, G4INCL::Particle::theEnergy, G4INCL::Particle::theMomentum, G4INCL::Particle::thePosition, and G4INCL::Particle::theType.

Referenced by G4INCL::BinaryCollisionAvatar::dump(), G4INCL::DecayAvatar::dump(), G4INCL::ParticleEntryAvatar::dump(), and G4INCL::SurfaceAvatar::dump().

◆ FillINCLBiasVector()

void G4INCL::Particle::FillINCLBiasVector ( G4double  newBias)
staticinherited

Definition at line 202 of file G4INCLParticle.cc.

202 {
203// assert(G4int(Particle::INCLBiasVector.size())==nextBiasedCollisionID);
204 //assert(G4int(Particle::INCLBiasVector.Size())==nextBiasedCollisionID);
205// assert(std::fabs(newBias - 1.) > 1E-6);
206 Particle::INCLBiasVector.push_back(newBias);
207 //Particle::INCLBiasVector.Push_back(newBias);
209 }
static std::vector< G4double > INCLBiasVector
Time ordered vector of all bias applied.
static G4ThreadLocal G4int nextBiasedCollisionID

References G4INCL::Particle::INCLBiasVector, and G4INCL::Particle::nextBiasedCollisionID.

Referenced by G4INCL::InteractionAvatar::postInteraction().

◆ freezeInternalMotion()

void G4INCL::Cluster::freezeInternalMotion ( )
inlineinherited

Freeze the internal motion of the particles.

Each particle is assigned a frozen momentum four-vector determined by the collective cluster velocity. This is used for propagation, but not for dynamics. Normal propagation is restored by calling the Particle::thawPropagation() method, which should be done in InteractionAvatar::postInteraction.

Definition at line 367 of file G4INCLCluster.hh.

367 {
368 const ThreeVector &normMomentum = theMomentum / getMass();
369 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
370 const G4double pMass = (*p)->getMass();
371 const ThreeVector frozenMomentum = normMomentum * pMass;
372 const G4double frozenEnergy = std::sqrt(frozenMomentum.mag2()+pMass*pMass);
373 (*p)->setFrozenMomentum(frozenMomentum);
374 (*p)->setFrozenEnergy(frozenEnergy);
375 (*p)->freezePropagation();
376 }
377 }

References G4INCL::Particle::getMass(), G4INCL::ThreeVector::mag2(), G4INCL::Cluster::particles, and G4INCL::Particle::theMomentum.

Referenced by ProjectileRemnant().

◆ freezePropagation()

void G4INCL::Particle::freezePropagation ( )
inlineinherited

Freeze particle propagation.

Make the particle use theFrozenMomentum and theFrozenEnergy for propagation. The normal state can be restored by calling the thawPropagation() method.

Definition at line 908 of file G4INCLParticle.hh.

908 {
911 }
G4INCL::ThreeVector * thePropagationMomentum
G4double * thePropagationEnergy
G4INCL::ThreeVector theFrozenMomentum

References G4INCL::Particle::theFrozenEnergy, G4INCL::Particle::theFrozenMomentum, G4INCL::Particle::thePropagationEnergy, and G4INCL::Particle::thePropagationMomentum.

◆ getA()

G4int G4INCL::Particle::getA ( ) const
inlineinherited

Returns the baryon number.

Definition at line 393 of file G4INCLParticle.hh.

393{ return theA; }

References G4INCL::Particle::theA.

Referenced by addDynamicalSpectator(), G4INCL::Cluster::addParticle(), G4INCL::ClusteringModelIntercomparison::clusterCanEscape(), G4INCL::Nucleus::computeOneNucleonRecoilKinematics(), G4INCL::INCL::continueCascade(), G4INCL::ClusterDecay::decay(), G4INCL::Nucleus::emitInsideLambda(), G4INCL::Nucleus::emitInsideStrangeParticles(), G4INCL::Nucleus::fillEventInfo(), G4INCL::ParticleEntryChannel::fillFinalState(), G4INCL::TransmissionChannel::fillFinalState(), G4INCL::Nucleus::finalizeProjectileRemnant(), G4INCL::ClusteringModelIntercomparison::findClusterStartingFrom(), G4INCL::PauliStandard::getBlockingProbability(), G4INCL::ClusteringModelIntercomparison::getCluster(), G4INCL::Nucleus::getConservationBalance(), G4INCL::SurfaceAvatar::getTransmissionProbability(), G4INCL::NuclearDensity::getTransmissionRadius(), G4INCL::TransmissionChannel::initializeKineticEnergyOutside(), G4INCL::Nucleus::insertParticle(), G4INCL::ClusterDecay::isStable(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::phaseSpaceDecay(), G4INCL::INCL::postCascade(), G4INCL::INCL::preCascade(), G4INCL::INCL::RecoilCMFunctor::RecoilCMFunctor(), G4INCL::INCL::RecoilFunctor::RecoilFunctor(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::recursiveDecay(), removeParticle(), G4INCL::INCL::RecoilCMFunctor::scaleParticleCMMomenta(), G4INCL::INCL::RecoilFunctor::scaleParticleEnergies(), G4INCL::InteractionAvatar::ViolationEMomentumFunctor::scaleParticleMomenta(), G4INCL::StandardPropagationModel::shootComposite(), G4INCL::StandardPropagationModel::shootParticle(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::threeBodyDecay(), and G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::twoBodyDecay().

◆ getAngularMomentum()

G4INCL::ThreeVector G4INCL::Cluster::getAngularMomentum ( ) const
inlinevirtualinherited

Get the total angular momentum (orbital + spin)

Reimplemented from G4INCL::Particle.

Definition at line 428 of file G4INCLCluster.hh.

428 {
430 }
ThreeVector const & getSpin() const
Get the spin of the nucleus.
virtual G4INCL::ThreeVector getAngularMomentum() const

References G4INCL::Particle::getAngularMomentum(), and G4INCL::Cluster::getSpin().

Referenced by G4INCL::Nucleus::computeRecoilKinematics(), G4INCL::INCL::makeCompoundNucleus(), and G4INCL::StandardPropagationModel::shootComposite().

◆ getBeta()

G4double G4INCL::Particle::getBeta ( ) const
inlineinherited

Definition at line 401 of file G4INCLParticle.hh.

401 {
402 const G4double P = theMomentum.mag();
403 return P/theEnergy;
404 }
G4double mag() const
static double P[]

References G4INCL::ThreeVector::mag(), P, G4INCL::Particle::theEnergy, and G4INCL::Particle::theMomentum.

◆ getBiasCollisionVector()

std::vector< G4int > G4INCL::Particle::getBiasCollisionVector ( ) const
inlineinherited

Get the vector list of biased vertices on the particle path.

Definition at line 1038 of file G4INCLParticle.hh.

1038{ return theBiasCollisionVector; }
std::vector< G4int > theBiasCollisionVector
Time ordered vector of all biased vertices on the particle path.

References G4INCL::Particle::theBiasCollisionVector.

Referenced by G4INCL::ClusterDecay::decay(), G4INCL::Nucleus::decayMe(), G4INCL::Nucleus::decayOutgoingClusters(), G4INCL::Nucleus::decayOutgoingPionResonances(), G4INCL::Nucleus::decayOutgoingSigmaZero(), and G4INCL::Particle::MergeVectorBias().

◆ getBiasFromVector()

G4double G4INCL::Particle::getBiasFromVector ( std::vector< G4int VectorBias)
staticinherited

Definition at line 211 of file G4INCLParticle.cc.

211 {
212 if(VectorBias.empty()) return 1.;
213
214 G4double ParticleBias = 1.;
215
216 for(G4int i=0; i<G4int(VectorBias.size()); i++){
217 ParticleBias *= Particle::INCLBiasVector[G4int(VectorBias[i])];
218 }
219
220 return ParticleBias;
221 }

References G4INCL::Particle::INCLBiasVector.

Referenced by G4INCL::BinaryCollisionAvatar::getChannel(), G4INCL::ParticleList::getParticleListBias(), and G4INCL::Particle::setBiasCollisionVector().

◆ getCosRPAngle()

G4double G4INCL::Particle::getCosRPAngle ( ) const
inlineinherited

Get the cosine of the angle between position and momentum.

Definition at line 1014 of file G4INCLParticle.hh.

1014 {
1016 if(norm>0.)
1017 return thePosition.dot(*thePropagationMomentum) / std::sqrt(norm);
1018 else
1019 return 1.;
1020 }
G4double dot(const ThreeVector &v) const

References G4INCL::ThreeVector::dot(), G4INCL::ThreeVector::mag2(), G4INCL::Particle::thePosition, and G4INCL::Particle::thePropagationMomentum.

Referenced by G4INCL::SurfaceAvatar::initializeRefractionVariables(), and G4INCL::ParticleEntryChannel::particleEnters().

◆ getEmissionQValueCorrection() [1/2]

G4double G4INCL::Particle::getEmissionQValueCorrection ( const G4int  AParent,
const G4int  ZParent 
) const
inlineinherited

Computes correction on the emission Q-value.

Computes the correction that must be applied to INCL particles in order to obtain the correct Q-value for particle emission from a given nucleus. For absorption, the correction is obviously equal to minus the value returned by this function.

Parameters
AParentthe mass number of the emitting nucleus
ZParentthe charge number of the emitting nucleus
Returns
the correction

Definition at line 602 of file G4INCLParticle.hh.

602 {
603 const G4int SParent = 0;
604 const G4int ADaughter = AParent - theA;
605 const G4int ZDaughter = ZParent - theZ;
606 const G4int SDaughter = 0;
607
608 // Note the minus sign here
609 G4double theQValue;
610 if(isCluster())
611 theQValue = -ParticleTable::getTableQValue(theA, theZ, theS, ADaughter, ZDaughter, SDaughter);
612 else {
613 const G4double massTableParent = ParticleTable::getTableMass(AParent,ZParent,SParent);
614 const G4double massTableDaughter = ParticleTable::getTableMass(ADaughter,ZDaughter,SDaughter);
615 const G4double massTableParticle = getTableMass();
616 theQValue = massTableParent - massTableDaughter - massTableParticle;
617 }
618
619 const G4double massINCLParent = ParticleTable::getINCLMass(AParent,ZParent,SParent);
620 const G4double massINCLDaughter = ParticleTable::getINCLMass(ADaughter,ZDaughter,SDaughter);
621 const G4double massINCLParticle = getINCLMass();
622
623 // The rhs corresponds to the INCL Q-value
624 return theQValue - (massINCLParent-massINCLDaughter-massINCLParticle);
625 }
G4bool isCluster() const
G4double getINCLMass() const
Get the INCL particle mass.
virtual G4double getTableMass() const
Get the tabulated particle mass.
G4double getTableQValue(const G4int A1, const G4int Z1, const G4int S1, const G4int A2, const G4int Z2, const G4int S2)
Get Q-value (in MeV/c^2)
G4double getINCLMass(const G4int A, const G4int Z, const G4int S)
Get INCL nuclear mass (in MeV/c^2)

References G4INCL::Particle::getINCLMass(), G4INCL::ParticleTable::getINCLMass(), G4INCL::Particle::getTableMass(), G4INCL::ParticleTable::getTableMass, G4INCL::ParticleTable::getTableQValue(), G4INCL::Particle::isCluster(), G4INCL::Particle::theA, G4INCL::Particle::theS, and G4INCL::Particle::theZ.

Referenced by G4INCL::Nucleus::emitInsideKaon(), G4INCL::Nucleus::emitInsideLambda(), G4INCL::Nucleus::emitInsidePions(), G4INCL::Nucleus::emitInsideStrangeParticles(), G4INCL::ParticleEntryChannel::fillFinalState(), G4INCL::TransmissionChannel::fillFinalState(), G4INCL::SurfaceAvatar::getTransmissionProbability(), and G4INCL::TransmissionChannel::initializeKineticEnergyOutside().

◆ getEmissionQValueCorrection() [2/2]

G4double G4INCL::Particle::getEmissionQValueCorrection ( const G4int  AParent,
const G4int  ZParent,
const G4int  SParent 
) const
inlineinherited

Computes correction on the emission Q-value for hypernuclei.

Computes the correction that must be applied to INCL particles in order to obtain the correct Q-value for particle emission from a given nucleus. For absorption, the correction is obviously equal to minus the value returned by this function.

Parameters
AParentthe mass number of the emitting nucleus
ZParentthe charge number of the emitting nucleus
SParentthe strangess number of the emitting nucleus
Returns
the correction

Definition at line 678 of file G4INCLParticle.hh.

678 {
679 const G4int ADaughter = AParent - theA;
680 const G4int ZDaughter = ZParent - theZ;
681 const G4int SDaughter = SParent - theS;
682
683 // Note the minus sign here
684 G4double theQValue;
685 if(isCluster())
686 theQValue = -ParticleTable::getTableQValue(theA, theZ, theS, ADaughter, ZDaughter, SDaughter);
687 else {
688 const G4double massTableParent = ParticleTable::getTableMass(AParent,ZParent,SParent);
689 const G4double massTableDaughter = ParticleTable::getTableMass(ADaughter,ZDaughter,SDaughter);
690 const G4double massTableParticle = getTableMass();
691 theQValue = massTableParent - massTableDaughter - massTableParticle;
692 }
693
694 const G4double massINCLParent = ParticleTable::getINCLMass(AParent,ZParent,SParent);
695 const G4double massINCLDaughter = ParticleTable::getINCLMass(ADaughter,ZDaughter,SDaughter);
696 const G4double massINCLParticle = getINCLMass();
697
698 // The rhs corresponds to the INCL Q-value
699 return theQValue - (massINCLParent-massINCLDaughter-massINCLParticle);
700 }

References G4INCL::Particle::getINCLMass(), G4INCL::ParticleTable::getINCLMass(), G4INCL::Particle::getTableMass(), G4INCL::ParticleTable::getTableMass, G4INCL::ParticleTable::getTableQValue(), G4INCL::Particle::isCluster(), G4INCL::Particle::theA, G4INCL::Particle::theS, and G4INCL::Particle::theZ.

◆ getEmissionTime()

G4double G4INCL::Particle::getEmissionTime ( )
inlineinherited

◆ getEnergy()

G4double G4INCL::Particle::getEnergy ( ) const
inlineinherited

◆ getExcitationEnergy()

G4double G4INCL::Cluster::getExcitationEnergy ( ) const
inlineinherited

◆ getFrozenEnergy()

G4double G4INCL::Particle::getFrozenEnergy ( ) const
inlineinherited

Get the frozen particle momentum.

Definition at line 897 of file G4INCLParticle.hh.

897{ return theFrozenEnergy; }

References G4INCL::Particle::theFrozenEnergy.

◆ getFrozenMomentum()

ThreeVector G4INCL::Particle::getFrozenMomentum ( ) const
inlineinherited

Get the frozen particle momentum.

Definition at line 894 of file G4INCLParticle.hh.

894{ return theFrozenMomentum; }

References G4INCL::Particle::theFrozenMomentum.

◆ getGroundStateEnergies()

EnergyLevels const & G4INCL::ProjectileRemnant::getGroundStateEnergies ( ) const
inline

Definition at line 207 of file G4INCLProjectileRemnant.hh.

207 {
209 }

References theGroundStateEnergies.

◆ getHelicity()

G4double G4INCL::Particle::getHelicity ( )
inlineinherited

Definition at line 826 of file G4INCLParticle.hh.

826{ return theHelicity; };

References G4INCL::Particle::theHelicity.

Referenced by G4INCL::DeltaDecayChannel::sampleAngles().

◆ getID()

long G4INCL::Particle::getID ( ) const
inlineinherited

◆ getINCLMass()

G4double G4INCL::Particle::getINCLMass ( ) const
inlineinherited

Get the INCL particle mass.

Definition at line 454 of file G4INCLParticle.hh.

454 {
455 switch(theType) {
456 case Proton:
457 case Neutron:
458 case PiPlus:
459 case PiMinus:
460 case PiZero:
461 case Lambda:
462 case SigmaPlus:
463 case SigmaZero:
464 case SigmaMinus:
465 case KPlus:
466 case KZero:
467 case KZeroBar:
468 case KShort:
469 case KLong:
470 case KMinus:
471 case Eta:
472 case Omega:
473 case EtaPrime:
474 case Photon:
476 break;
477
478 case DeltaPlusPlus:
479 case DeltaPlus:
480 case DeltaZero:
481 case DeltaMinus:
482 return theMass;
483 break;
484
485 case Composite:
487 break;
488
489 default:
490 INCL_ERROR("Particle::getINCLMass: Unknown particle type." << '\n');
491 return 0.0;
492 break;
493 }
494 }

References G4INCL::Composite, G4INCL::DeltaMinus, G4INCL::DeltaPlus, G4INCL::DeltaPlusPlus, G4INCL::DeltaZero, G4INCL::Eta, G4INCL::EtaPrime, G4INCL::ParticleTable::getINCLMass(), INCL_ERROR, G4INCL::KLong, G4INCL::KMinus, G4INCL::KPlus, G4INCL::KShort, G4INCL::KZero, G4INCL::KZeroBar, G4INCL::Lambda, G4INCL::Neutron, G4INCL::Omega, G4INCL::Photon, G4INCL::PiMinus, G4INCL::PiPlus, G4INCL::PiZero, G4INCL::Proton, G4INCL::SigmaMinus, G4INCL::SigmaPlus, G4INCL::SigmaZero, G4INCL::Particle::theA, G4INCL::Particle::theMass, G4INCL::Particle::theS, G4INCL::Particle::theType, and G4INCL::Particle::theZ.

Referenced by G4INCL::ParticleEntryChannel::fillFinalState(), G4INCL::Particle::getEmissionQValueCorrection(), and G4INCL::Particle::setINCLMass().

◆ getInvariantMass()

G4double G4INCL::Particle::getInvariantMass ( ) const
inlineinherited

Get the the particle invariant mass.

Uses the relativistic invariant

\[ m = \sqrt{E^2 - {\vec p}^2}\]

Definition at line 748 of file G4INCLParticle.hh.

748 {
749 const G4double mass = std::pow(theEnergy, 2) - theMomentum.dot(theMomentum);
750 if(mass < 0.0) {
751 INCL_ERROR("E*E - p*p is negative." << '\n');
752 return 0.0;
753 } else {
754 return std::sqrt(mass);
755 }
756 };

References G4INCL::ThreeVector::dot(), INCL_ERROR, G4INCL::Particle::theEnergy, and G4INCL::Particle::theMomentum.

Referenced by G4INCL::Nucleus::finalizeProjectileRemnant(), and G4INCL::Particle::Particle().

◆ getKineticEnergy()

G4double G4INCL::Particle::getKineticEnergy ( ) const
inlineinherited

◆ getLongitudinalPosition()

ThreeVector G4INCL::Particle::getLongitudinalPosition ( ) const
inlineinherited

◆ getMass()

G4double G4INCL::Particle::getMass ( ) const
inlineinherited

Get the cached particle mass.

Definition at line 451 of file G4INCLParticle.hh.

451{ return theMass; }

References G4INCL::Particle::theMass.

Referenced by G4INCL::DeltaDecayChannel::computeDecayTime(), G4INCL::PionResonanceDecayChannel::computeDecayTime(), G4INCL::SigmaZeroDecayChannel::computeDecayTime(), G4INCL::Nucleus::computeOneNucleonRecoilKinematics(), G4INCL::Nucleus::emitInsideKaon(), G4INCL::Nucleus::emitInsideLambda(), G4INCL::Nucleus::emitInsidePions(), G4INCL::Nucleus::emitInsideStrangeParticles(), G4INCL::InteractionAvatar::enforceEnergyConservation(), G4INCL::CrossSectionsMultiPionsAndResonances::etaNToPiN(), G4INCL::DeltaDecayChannel::fillFinalState(), G4INCL::EtaNElasticChannel::fillFinalState(), G4INCL::EtaNToPiNChannel::fillFinalState(), G4INCL::NSToNLChannel::fillFinalState(), G4INCL::NSToNSChannel::fillFinalState(), G4INCL::OmegaNElasticChannel::fillFinalState(), G4INCL::OmegaNToPiNChannel::fillFinalState(), G4INCL::PionResonanceDecayChannel::fillFinalState(), G4INCL::RecombinationChannel::fillFinalState(), G4INCL::SigmaZeroDecayChannel::fillFinalState(), G4INCL::TransmissionChannel::fillFinalState(), G4INCL::Cluster::freezeInternalMotion(), G4INCL::PhaseSpaceKopylov::generate(), G4INCL::NuclearPotential::INuclearPotential::getFermiMomentum(), G4INCL::KinematicsUtils::getLocalEnergy(), G4INCL::SurfaceAvatar::getTransmissionProbability(), G4INCL::PhaseSpaceRauboldLynch::initialize(), G4INCL::TransmissionChannel::initializeKineticEnergyOutside(), G4INCL::CrossSections::interactionDistanceKbarN(), G4INCL::CrossSections::interactionDistanceKN(), G4INCL::CrossSections::interactionDistanceNN(), G4INCL::CrossSections::interactionDistancePiN(), G4INCL::CrossSections::interactionDistanceYN(), G4INCL::Cluster::internalBoostToCM(), G4INCL::KinematicsUtils::momentumInCM(), G4INCL::KinematicsUtils::momentumInLab(), G4INCL::CrossSectionsINCL46::NDeltaToNN(), G4INCL::CrossSectionsMultiPions::NDeltaToNN(), G4INCL::CrossSectionsStrangeness::NNToNLK2pi(), G4INCL::CrossSectionsStrangeness::NNToNLKpi(), G4INCL::CrossSectionsStrangeness::NNToNSK2pi(), G4INCL::CrossSectionsStrangeness::NNToNSKpi(), G4INCL::CrossSectionsMultiPionsAndResonances::omegaNToPiN(), G4INCL::ParticleEntryChannel::particleEnters(), G4INCL::TransmissionChannel::particleLeaves(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::phaseSpaceDecay(), G4INCL::CrossSectionsMultiPionsAndResonances::piMinuspToEtaN(), G4INCL::CrossSectionsMultiPionsAndResonances::piMinuspToOmegaN(), G4INCL::Cluster::print(), ProjectileRemnant(), G4INCL::StandardPropagationModel::shootParticle(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::threeBodyDecay(), and G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::twoBodyDecay().

◆ getMomentum()

const G4INCL::ThreeVector & G4INCL::Particle::getMomentum ( ) const
inlineinherited

Get the momentum vector.

Definition at line 794 of file G4INCLParticle.hh.

795 {
796 return theMomentum;
797 };

References G4INCL::Particle::theMomentum.

Referenced by G4INCL::Cluster::addParticle(), G4INCL::anonymous_namespace{G4INCLPhaseSpaceGenerator.cc}::bias(), G4INCL::ClusteringModelIntercomparison::clusterCanEscape(), G4INCL::SigmaZeroDecayChannel::computeDecayTime(), G4INCL::Nucleus::computeOneNucleonRecoilKinematics(), G4INCL::Nucleus::computeRecoilKinematics(), G4INCL::CoulombNonRelativistic::coulombDeviation(), G4INCL::Nucleus::decayOutgoingPionResonances(), G4INCL::Nucleus::decayOutgoingSigmaZero(), G4INCL::Nucleus::fillEventInfo(), G4INCL::DeltaProductionChannel::fillFinalState(), G4INCL::ElasticChannel::fillFinalState(), G4INCL::NDeltaEtaProductionChannel::fillFinalState(), G4INCL::NDeltaOmegaProductionChannel::fillFinalState(), G4INCL::NNToNSKpiChannel::fillFinalState(), G4INCL::NpiToLK2piChannel::fillFinalState(), G4INCL::NpiToLKpiChannel::fillFinalState(), G4INCL::NpiToNKKbChannel::fillFinalState(), G4INCL::NpiToSK2piChannel::fillFinalState(), G4INCL::NpiToSKpiChannel::fillFinalState(), G4INCL::ParticleEntryChannel::fillFinalState(), G4INCL::ReflectionChannel::fillFinalState(), G4INCL::StrangeAbsorbtionChannel::fillFinalState(), G4INCL::PhaseSpaceGenerator::generateBiased(), G4INCL::PauliStandard::getBlockingProbability(), G4INCL::ClusteringModelIntercomparison::getCluster(), G4INCL::Nucleus::getConservationBalance(), G4INCL::KinematicsUtils::getLocalEnergy(), getStoredMomentum(), G4INCL::SurfaceAvatar::getTransmissionProbability(), G4INCL::NKbElasticChannel::KaonMomentum(), G4INCL::NKbToLpiChannel::KaonMomentum(), G4INCL::NKbToNKbChannel::KaonMomentum(), G4INCL::NKbToSpiChannel::KaonMomentum(), G4INCL::KinematicsUtils::makeBoostVector(), G4INCL::INCL::makeCompoundNucleus(), G4INCL::KinematicsUtils::momentumInCM(), G4INCL::ParticleEntryChannel::particleEnters(), G4INCL::TransmissionChannel::particleLeaves(), G4INCL::BinaryCollisionAvatar::postInteraction(), G4INCL::InteractionAvatar::preInteraction(), G4INCL::INCL::RecoilCMFunctor::RecoilCMFunctor(), G4INCL::INCL::RecoilFunctor::RecoilFunctor(), removeParticle(), G4INCL::ParticleSampler::sampleParticlesIntoList(), G4INCL::StandardPropagationModel::shootComposite(), G4INCL::StandardPropagationModel::shootParticle(), and G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::twoBodyDecay().

◆ getNumberOfCollisions()

G4int G4INCL::Particle::getNumberOfCollisions ( ) const
inlineinherited

Return the number of collisions undergone by the particle.

Definition at line 834 of file G4INCLParticle.hh.

834{ return nCollisions; }

References G4INCL::Particle::nCollisions.

Referenced by G4INCL::Cluster::addParticle().

◆ getNumberOfDecays()

G4int G4INCL::Particle::getNumberOfDecays ( ) const
inlineinherited

Return the number of decays undergone by the particle.

Definition at line 843 of file G4INCLParticle.hh.

843{ return nDecays; }

References G4INCL::Particle::nDecays.

◆ getNumberOfKaon()

G4int G4INCL::Particle::getNumberOfKaon ( ) const
inlineinherited

Number of Kaon inside de nucleus.

Put in the Particle class in order to calculate the "correct" mass of composit particle.

Definition at line 1053 of file G4INCLParticle.hh.

1053{ return theNKaon; };
G4int theNKaon
The number of Kaons inside the nucleus (update during the cascade)

References G4INCL::Particle::theNKaon.

Referenced by G4INCL::ParticleEntryChannel::fillFinalState(), G4INCL::SurfaceAvatar::getChannel(), and G4INCL::BinaryCollisionAvatar::postInteraction().

◆ getNumberStoredComponents()

G4int G4INCL::ProjectileRemnant::getNumberStoredComponents ( ) const
inline

Get the number of the stored components.

Definition at line 184 of file G4INCLProjectileRemnant.hh.

184 {
185 return storedComponents.size();
186 }

References storedComponents.

◆ getParticipantType()

ParticipantType G4INCL::Particle::getParticipantType ( ) const
inlineinherited

Definition at line 310 of file G4INCLParticle.hh.

310 {
311 return theParticipantType;
312 }
ParticipantType theParticipantType

References G4INCL::Particle::theParticipantType.

Referenced by G4INCL::StandardPropagationModel::generateBinaryCollisionAvatar().

◆ getParticleBias()

G4double G4INCL::Particle::getParticleBias ( ) const
inlineinherited

Get the particle bias.

Definition at line 1032 of file G4INCLParticle.hh.

1032{ return theParticleBias; };

References G4INCL::Particle::theParticleBias.

◆ getParticleList()

ParticleList G4INCL::Cluster::getParticleList ( ) const
inlineinherited

Returns the list of particles that make up the cluster.

Definition at line 219 of file G4INCLCluster.hh.

219{ return particles; }

References G4INCL::Cluster::particles.

◆ getParticles()

ParticleList const & G4INCL::Cluster::getParticles ( ) const
inlineinherited

◆ getPosition()

const G4INCL::ThreeVector & G4INCL::Particle::getPosition ( ) const
inlineinherited

Set the position vector.

Definition at line 816 of file G4INCLParticle.hh.

817 {
818 return thePosition;
819 };

References G4INCL::Particle::thePosition.

Referenced by G4INCL::Cluster::addParticle(), G4INCL::InteractionAvatar::bringParticleInside(), G4INCL::CoulombNone::bringToSurface(), G4INCL::ClusteringModelIntercomparison::clusterCanEscape(), G4INCL::DeltaDecayChannel::fillFinalState(), G4INCL::EtaNToPiPiNChannel::fillFinalState(), G4INCL::NDeltaEtaProductionChannel::fillFinalState(), G4INCL::NDeltaOmegaProductionChannel::fillFinalState(), G4INCL::NDeltaToDeltaSKChannel::fillFinalState(), G4INCL::NDeltaToNLKChannel::fillFinalState(), G4INCL::NDeltaToNNKKbChannel::fillFinalState(), G4INCL::NDeltaToNSKChannel::fillFinalState(), G4INCL::NKbToNKb2piChannel::fillFinalState(), G4INCL::NKToNK2piChannel::fillFinalState(), G4INCL::NNEtaToMultiPionsChannel::fillFinalState(), G4INCL::NNOmegaToMultiPionsChannel::fillFinalState(), G4INCL::NNToMissingStrangenessChannel::fillFinalState(), G4INCL::NNToMultiPionsChannel::fillFinalState(), G4INCL::NNToNLK2piChannel::fillFinalState(), G4INCL::NNToNLKChannel::fillFinalState(), G4INCL::NNToNLKpiChannel::fillFinalState(), G4INCL::NNToNNEtaChannel::fillFinalState(), G4INCL::NNToNNKKbChannel::fillFinalState(), G4INCL::NNToNNOmegaChannel::fillFinalState(), G4INCL::NNToNSK2piChannel::fillFinalState(), G4INCL::NNToNSKChannel::fillFinalState(), G4INCL::NNToNSKpiChannel::fillFinalState(), G4INCL::NpiToMissingStrangenessChannel::fillFinalState(), G4INCL::OmegaNToPiPiNChannel::fillFinalState(), G4INCL::PionResonanceDecayChannel::fillFinalState(), G4INCL::ReflectionChannel::fillFinalState(), G4INCL::SigmaZeroDecayChannel::fillFinalState(), G4INCL::StandardPropagationModel::generateBinaryCollisionAvatar(), G4INCL::PauliStandard::getBlockingProbability(), G4INCL::BinaryCollisionAvatar::getChannel(), G4INCL::ClusteringModelIntercomparison::getCluster(), G4INCL::KinematicsUtils::getLocalEnergy(), G4INCL::StandardPropagationModel::getReflectionTime(), G4INCL::StandardPropagationModel::getTime(), G4INCL::ParticleEntryChannel::particleEnters(), G4INCL::TransmissionChannel::particleLeaves(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::phaseSpaceDecay(), G4INCL::BinaryCollisionAvatar::postInteraction(), G4INCL::ParticleSampler::sampleParticlesIntoList(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::threeBodyDecay(), and G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::twoBodyDecay().

◆ getPotentialEnergy()

G4double G4INCL::Particle::getPotentialEnergy ( ) const
inlineinherited

◆ getPresentEnergyLevelsExcept()

ProjectileRemnant::EnergyLevels G4INCL::ProjectileRemnant::getPresentEnergyLevelsExcept ( const long  exceptID) const
private

Definition at line 357 of file G4INCLProjectileRemnant.cc.

357 {
358 EnergyLevels theEnergyLevels;
359 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
360 if((*p)->getID()!=exceptID) {
361 EnergyLevelMap::const_iterator i = theInitialEnergyLevels.find((*p)->getID());
362// assert(i!=theInitialEnergyLevels.end());
363 theEnergyLevels.push_back(i->second);
364 }
365 }
366// assert(theEnergyLevels.size()==particles.size()-1);
367 return theEnergyLevels;
368 }

References G4INCL::Cluster::particles, and theInitialEnergyLevels.

Referenced by computeExcitationEnergyExcept().

◆ getPresentEnergyLevelsWith()

ProjectileRemnant::EnergyLevels G4INCL::ProjectileRemnant::getPresentEnergyLevelsWith ( const ParticleList pL) const
private

Definition at line 370 of file G4INCLProjectileRemnant.cc.

370 {
371 EnergyLevels theEnergyLevels;
372 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
373 EnergyLevelMap::const_iterator i = theInitialEnergyLevels.find((*p)->getID());
374// assert(i!=theInitialEnergyLevels.end());
375 theEnergyLevels.push_back(i->second);
376 }
377 for(ParticleIter p=pL.begin(), e=pL.end(); p!=e; ++p) {
378 EnergyLevelMap::const_iterator i = theInitialEnergyLevels.find((*p)->getID());
379// assert(i!=theInitialEnergyLevels.end());
380 theEnergyLevels.push_back(i->second);
381 }
382
383// assert(theEnergyLevels.size()==particles.size()+pL.size());
384 return theEnergyLevels;
385 }

References G4INCL::Cluster::particles, and theInitialEnergyLevels.

Referenced by computeExcitationEnergyWith().

◆ getPropagationVelocity()

ThreeVector G4INCL::Particle::getPropagationVelocity ( ) const
inlineinherited

Get the propagation velocity of the particle.

Definition at line 900 of file G4INCLParticle.hh.

900{ return (*thePropagationMomentum)/(*thePropagationEnergy); }

References G4INCL::Particle::thePropagationMomentum.

Referenced by G4INCL::CoulombNone::bringToSurface(), G4INCL::StandardPropagationModel::getReflectionTime(), and G4INCL::StandardPropagationModel::getTime().

◆ getRealMass()

G4double G4INCL::Particle::getRealMass ( ) const
inlineinherited

Get the real particle mass.

Definition at line 540 of file G4INCLParticle.hh.

540 {
541 switch(theType) {
542 case Proton:
543 case Neutron:
544 case PiPlus:
545 case PiMinus:
546 case PiZero:
547 case Lambda:
548 case SigmaPlus:
549 case SigmaZero:
550 case SigmaMinus:
551 case KPlus:
552 case KZero:
553 case KZeroBar:
554 case KShort:
555 case KLong:
556 case KMinus:
557 case Eta:
558 case Omega:
559 case EtaPrime:
560 case Photon:
562 break;
563
564 case DeltaPlusPlus:
565 case DeltaPlus:
566 case DeltaZero:
567 case DeltaMinus:
568 return theMass;
569 break;
570
571 case Composite:
573 break;
574
575 default:
576 INCL_ERROR("Particle::getRealMass: Unknown particle type." << '\n');
577 return 0.0;
578 break;
579 }
580 }
G4double getRealMass(const G4INCL::ParticleType t)
Get particle mass (in MeV/c^2)

References G4INCL::Composite, G4INCL::DeltaMinus, G4INCL::DeltaPlus, G4INCL::DeltaPlusPlus, G4INCL::DeltaZero, G4INCL::Eta, G4INCL::EtaPrime, G4INCL::ParticleTable::getRealMass(), INCL_ERROR, G4INCL::KLong, G4INCL::KMinus, G4INCL::KPlus, G4INCL::KShort, G4INCL::KZero, G4INCL::KZeroBar, G4INCL::Lambda, G4INCL::Neutron, G4INCL::Omega, G4INCL::Photon, G4INCL::PiMinus, G4INCL::PiPlus, G4INCL::PiZero, G4INCL::Proton, G4INCL::SigmaMinus, G4INCL::SigmaPlus, G4INCL::SigmaZero, G4INCL::Particle::theA, G4INCL::Particle::theMass, G4INCL::Particle::theS, G4INCL::Particle::theType, and G4INCL::Particle::theZ.

Referenced by G4INCL::Cluster::getTableMass(), and G4INCL::Particle::setRealMass().

◆ getReflectionMomentum()

G4double G4INCL::Particle::getReflectionMomentum ( ) const
inlineinherited

Return the reflection momentum.

The reflection momentum is used by calls to getSurfaceRadius to compute the radius of the sphere where the nucleon moves. It is necessary to introduce fuzzy r-p correlations.

Definition at line 997 of file G4INCLParticle.hh.

997 {
998 if(rpCorrelated)
999 return theMomentum.mag();
1000 else
1001 return uncorrelatedMomentum;
1002 }
G4double uncorrelatedMomentum

References G4INCL::ThreeVector::mag(), G4INCL::Particle::rpCorrelated, G4INCL::Particle::theMomentum, and G4INCL::Particle::uncorrelatedMomentum.

Referenced by G4INCL::KinematicsUtils::getLocalEnergy(), and G4INCL::Nucleus::getSurfaceRadius().

◆ getS()

G4int G4INCL::Particle::getS ( ) const
inlineinherited

◆ getSpecies()

ParticleSpecies G4INCL::Cluster::getSpecies ( ) const
inlinevirtualinherited

Get the particle species.

Reimplemented from G4INCL::Particle.

Definition at line 132 of file G4INCLCluster.hh.

132 {
133 return ParticleSpecies(theA, theZ, theS);
134 }

References G4INCL::Particle::theA, G4INCL::Particle::theS, and G4INCL::Particle::theZ.

◆ getSpin()

ThreeVector const & G4INCL::Cluster::getSpin ( ) const
inlineinherited

Get the spin of the nucleus.

Definition at line 422 of file G4INCLCluster.hh.

422{ return theSpin; }
ThreeVector theSpin

References G4INCL::Cluster::theSpin.

Referenced by G4INCL::Nucleus::fillEventInfo(), and G4INCL::Cluster::getAngularMomentum().

◆ getStoredComponents()

ParticleList G4INCL::ProjectileRemnant::getStoredComponents ( ) const
inlineprivate

Definition at line 234 of file G4INCLProjectileRemnant.hh.

234 {
235 ParticleList pL;
236 for(std::map<long,Particle*>::const_iterator p=storedComponents.begin(), e=storedComponents.end(); p!=e; ++p)
237 pL.push_back(p->second);
238 return pL;
239 }

References storedComponents.

Referenced by shuffleStoredComponents().

◆ getStoredMomentum()

ThreeVector const & G4INCL::ProjectileRemnant::getStoredMomentum ( Particle const *const  p) const
inlineprivate

Return the stored momentum of a given projectile component.

Definition at line 242 of file G4INCLProjectileRemnant.hh.

242 {
243 std::map<long,Particle*>::const_iterator i = storedComponents.find(p->getID());
244 if(i==storedComponents.end()) {
245 INCL_ERROR("Couldn't find particle " << p->getID() << " in the list of projectile components" << '\n');
246 return p->getMomentum();
247 } else {
248 return i->second->getMomentum();
249 }
250 }

References G4INCL::Particle::getID(), G4INCL::Particle::getMomentum(), INCL_ERROR, and storedComponents.

Referenced by addAllDynamicalSpectators(), addDynamicalSpectator(), and addMostDynamicalSpectators().

◆ getTableMass()

virtual G4double G4INCL::Cluster::getTableMass ( ) const
inlinevirtualinherited

Get the real particle mass.

Overloads the Particle method.

Reimplemented from G4INCL::Particle.

Definition at line 164 of file G4INCLCluster.hh.

164{ return getRealMass(); }
G4double getRealMass() const
Get the real particle mass.

References G4INCL::Particle::getRealMass().

Referenced by G4INCL::Cluster::computeDynamicalPotential(), and G4INCL::Nucleus::useFusionKinematics().

◆ getTotalBias()

G4double G4INCL::Particle::getTotalBias ( )
staticinherited

◆ getTransferQValueCorrection() [1/2]

G4double G4INCL::Particle::getTransferQValueCorrection ( const G4int  AFrom,
const G4int  ZFrom,
const G4int  ATo,
const G4int  ZTo 
) const
inlineinherited

Computes correction on the transfer Q-value.

Computes the correction that must be applied to INCL particles in order to obtain the correct Q-value for particle transfer from a given nucleus to another.

Assumes that the receving nucleus is INCL's target nucleus, with the INCL separation energy.

Parameters
AFromthe mass number of the donating nucleus
ZFromthe charge number of the donating nucleus
ATothe mass number of the receiving nucleus
ZTothe charge number of the receiving nucleus
Returns
the correction

Definition at line 642 of file G4INCLParticle.hh.

642 {
643 const G4int SFrom = 0;
644 const G4int STo = 0;
645 const G4int AFromDaughter = AFrom - theA;
646 const G4int ZFromDaughter = ZFrom - theZ;
647 const G4int SFromDaughter = 0;
648 const G4int AToDaughter = ATo + theA;
649 const G4int ZToDaughter = ZTo + theZ;
650 const G4int SToDaughter = 0;
651 const G4double theQValue = ParticleTable::getTableQValue(AToDaughter,ZToDaughter,SToDaughter,AFromDaughter,ZFromDaughter,SFromDaughter,AFrom,ZFrom,SFrom);
652
653 const G4double massINCLTo = ParticleTable::getINCLMass(ATo,ZTo,STo);
654 const G4double massINCLToDaughter = ParticleTable::getINCLMass(AToDaughter,ZToDaughter,SToDaughter);
655 /* Note that here we have to use the table mass in the INCL Q-value. We
656 * cannot use theMass, because at this stage the particle is probably
657 * still off-shell; and we cannot use getINCLMass(), because it leads to
658 * violations of global energy conservation.
659 */
660 const G4double massINCLParticle = getTableMass();
661
662 // The rhs corresponds to the INCL Q-value for particle absorption
663 return theQValue - (massINCLToDaughter-massINCLTo-massINCLParticle);
664 }

References G4INCL::ParticleTable::getINCLMass(), G4INCL::Particle::getTableMass(), G4INCL::ParticleTable::getTableQValue(), G4INCL::Particle::theA, and G4INCL::Particle::theZ.

◆ getTransferQValueCorrection() [2/2]

G4double G4INCL::Particle::getTransferQValueCorrection ( const G4int  AFrom,
const G4int  ZFrom,
const G4int  SFrom,
const G4int  ATo,
const G4int  ZTo,
const G4int  STo 
) const
inlineinherited

Computes correction on the transfer Q-value for hypernuclei.

Computes the correction that must be applied to INCL particles in order to obtain the correct Q-value for particle transfer from a given nucleus to another.

Assumes that the receving nucleus is INCL's target nucleus, with the INCL separation energy.

Parameters
AFromthe mass number of the donating nucleus
ZFromthe charge number of the donating nucleus
SFromthe strangess number of the donating nucleus
ATothe mass number of the receiving nucleus
ZTothe charge number of the receiving nucleus
STothe strangess number of the receiving nucleus
Returns
the correction

Definition at line 719 of file G4INCLParticle.hh.

719 {
720 const G4int AFromDaughter = AFrom - theA;
721 const G4int ZFromDaughter = ZFrom - theZ;
722 const G4int SFromDaughter = SFrom - theS;
723 const G4int AToDaughter = ATo + theA;
724 const G4int ZToDaughter = ZTo + theZ;
725 const G4int SToDaughter = STo + theS;
726 const G4double theQValue = ParticleTable::getTableQValue(AToDaughter,ZToDaughter,SFromDaughter,AFromDaughter,ZFromDaughter,SToDaughter,AFrom,ZFrom,SFrom);
727
728 const G4double massINCLTo = ParticleTable::getINCLMass(ATo,ZTo,STo);
729 const G4double massINCLToDaughter = ParticleTable::getINCLMass(AToDaughter,ZToDaughter,SToDaughter);
730 /* Note that here we have to use the table mass in the INCL Q-value. We
731 * cannot use theMass, because at this stage the particle is probably
732 * still off-shell; and we cannot use getINCLMass(), because it leads to
733 * violations of global energy conservation.
734 */
735 const G4double massINCLParticle = getTableMass();
736
737 // The rhs corresponds to the INCL Q-value for particle absorption
738 return theQValue - (massINCLToDaughter-massINCLTo-massINCLParticle);
739 }

References G4INCL::ParticleTable::getINCLMass(), G4INCL::Particle::getTableMass(), G4INCL::ParticleTable::getTableQValue(), G4INCL::Particle::theA, G4INCL::Particle::theS, and G4INCL::Particle::theZ.

◆ getTransversePosition()

ThreeVector G4INCL::Particle::getTransversePosition ( ) const
inlineinherited

Transverse component of the position w.r.t. the momentum.

Definition at line 868 of file G4INCLParticle.hh.

868 {
870 }
ThreeVector getLongitudinalPosition() const
Longitudinal component of the position w.r.t. the momentum.

References G4INCL::Particle::getLongitudinalPosition(), and G4INCL::Particle::thePosition.

Referenced by G4INCL::CoulombNonRelativistic::coulombDeviation(), G4INCL::StandardPropagationModel::shootComposite(), and G4INCL::StandardPropagationModel::shootParticle().

◆ getType()

G4INCL::ParticleType G4INCL::Particle::getType ( ) const
inlineinherited

Get the particle type.

See also
G4INCL::ParticleType

Definition at line 178 of file G4INCLParticle.hh.

178 {
179 return theType;
180 };

References G4INCL::Particle::theType.

Referenced by G4INCL::PionResonanceDecayChannel::computeDecayTime(), G4INCL::NuclearPotential::INuclearPotential::computeKaonPotentialEnergy(), G4INCL::NuclearPotential::INuclearPotential::computePionPotentialEnergy(), G4INCL::NuclearPotential::INuclearPotential::computePionResonancePotentialEnergy(), G4INCL::NuclearPotential::NuclearPotentialConstant::computePotentialEnergy(), G4INCL::NuclearPotential::NuclearPotentialIsospin::computePotentialEnergy(), G4INCL::CrossSectionsINCL46::elasticNNLegacy(), G4INCL::DeltaDecayChannel::fillFinalState(), G4INCL::DeltaProductionChannel::fillFinalState(), G4INCL::ElasticChannel::fillFinalState(), G4INCL::NDeltaEtaProductionChannel::fillFinalState(), G4INCL::NDeltaOmegaProductionChannel::fillFinalState(), G4INCL::NDeltaToDeltaLKChannel::fillFinalState(), G4INCL::NDeltaToDeltaSKChannel::fillFinalState(), G4INCL::NDeltaToNLKChannel::fillFinalState(), G4INCL::NDeltaToNNKKbChannel::fillFinalState(), G4INCL::NDeltaToNSKChannel::fillFinalState(), G4INCL::NKbToL2piChannel::fillFinalState(), G4INCL::NKbToLpiChannel::fillFinalState(), G4INCL::NKbToNKb2piChannel::fillFinalState(), G4INCL::NKbToNKbChannel::fillFinalState(), G4INCL::NKbToNKbpiChannel::fillFinalState(), G4INCL::NKbToS2piChannel::fillFinalState(), G4INCL::NKbToSpiChannel::fillFinalState(), G4INCL::NKToNK2piChannel::fillFinalState(), G4INCL::NKToNKChannel::fillFinalState(), G4INCL::NKToNKpiChannel::fillFinalState(), G4INCL::NNEtaToMultiPionsChannel::fillFinalState(), G4INCL::NNOmegaToMultiPionsChannel::fillFinalState(), G4INCL::NNToMissingStrangenessChannel::fillFinalState(), G4INCL::NNToMultiPionsChannel::fillFinalState(), G4INCL::NNToNLK2piChannel::fillFinalState(), G4INCL::NNToNLKChannel::fillFinalState(), G4INCL::NNToNLKpiChannel::fillFinalState(), G4INCL::NNToNNEtaChannel::fillFinalState(), G4INCL::NNToNNKKbChannel::fillFinalState(), G4INCL::NNToNNOmegaChannel::fillFinalState(), G4INCL::NNToNSK2piChannel::fillFinalState(), G4INCL::NNToNSKChannel::fillFinalState(), G4INCL::NNToNSKpiChannel::fillFinalState(), G4INCL::NpiToMissingStrangenessChannel::fillFinalState(), G4INCL::NSToNLChannel::fillFinalState(), G4INCL::NSToNSChannel::fillFinalState(), G4INCL::PionResonanceDecayChannel::fillFinalState(), G4INCL::RecombinationChannel::fillFinalState(), G4INCL::PauliStandard::getBlockingProbability(), G4INCL::DecayAvatar::getChannel(), G4INCL::NuclearPotential::INuclearPotential::getFermiEnergy(), G4INCL::NuclearPotential::INuclearPotential::getFermiMomentum(), G4INCL::KinematicsUtils::getLocalEnergy(), G4INCL::NuclearPotential::INuclearPotential::getSeparationEnergy(), G4INCL::Nucleus::getSurfaceRadius(), G4INCL::NuclearDensity::getTransmissionRadius(), G4INCL::Nucleus::insertParticle(), G4INCL::ParticleConfig::isPair(), G4INCL::CrossSectionsStrangeness::NDeltaToDeltaLK(), G4INCL::CrossSectionsStrangeness::NDeltaToDeltaSK(), G4INCL::CrossSectionsStrangeness::NDeltaToNLK(), G4INCL::CrossSectionsINCL46::NDeltaToNN(), G4INCL::CrossSectionsMultiPions::NDeltaToNN(), G4INCL::CrossSectionsStrangeness::NDeltaToNNKKb(), G4INCL::CrossSectionsStrangeness::NDeltaToNSK(), G4INCL::CrossSectionsStrangeness::NKbToL2pi(), G4INCL::CrossSectionsStrangeness::NKbToLpi(), G4INCL::CrossSectionsStrangeness::NKbToNKb(), G4INCL::CrossSectionsStrangeness::NKbToNKb2pi(), G4INCL::CrossSectionsStrangeness::NKbToNKbpi(), G4INCL::CrossSectionsStrangeness::NKbToS2pi(), G4INCL::CrossSectionsStrangeness::NKbToSpi(), G4INCL::CrossSectionsStrangeness::NKToNK(), G4INCL::CrossSectionsStrangeness::NKToNK2pi(), G4INCL::CrossSectionsStrangeness::NKToNKpi(), G4INCL::CrossSectionsMultiPions::NNElastic(), G4INCL::CrossSectionsMultiPions::NNOnePi(), G4INCL::CrossSectionsMultiPions::NNOnePiOrDelta(), G4INCL::CrossSectionsMultiPions::NNThreePi(), G4INCL::CrossSectionsStrangeness::NNToMissingStrangeness(), G4INCL::CrossSectionsINCL46::NNToNDelta(), G4INCL::CrossSectionsMultiPions::NNToNDelta(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNDeltaEta(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNDeltaOmega(), G4INCL::CrossSectionsStrangeness::NNToNLK(), G4INCL::CrossSectionsStrangeness::NNToNLK2pi(), G4INCL::CrossSectionsStrangeness::NNToNLKpi(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEta(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEtaExclu(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEtaFourPi(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEtaOnePi(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEtaOnePiOrDelta(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEtaThreePi(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEtaTwoPi(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEtaxPi(), G4INCL::CrossSectionsStrangeness::NNToNNKKb(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmega(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmegaExclu(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmegaFourPi(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmegaOnePi(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmegaOnePiOrDelta(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmegaThreePi(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmegaTwoPi(), G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmegaxPi(), G4INCL::CrossSectionsStrangeness::NNToNSK(), G4INCL::CrossSectionsStrangeness::NNToNSK2pi(), G4INCL::CrossSectionsStrangeness::NNToNSKpi(), G4INCL::CrossSectionsMultiPions::NNTot(), G4INCL::CrossSectionsMultiPions::NNTwoPi(), G4INCL::CrossSectionsStrangeness::NpiToLK(), G4INCL::CrossSectionsStrangeness::NpiToLK2pi(), G4INCL::CrossSectionsStrangeness::NpiToLKpi(), G4INCL::CrossSectionsStrangeness::NpiToNKKb(), G4INCL::CrossSectionsStrangeness::NpiToSK(), G4INCL::CrossSectionsStrangeness::NpiToSK2pi(), G4INCL::CrossSectionsStrangeness::NpiToSKpi(), G4INCL::CrossSectionsStrangeness::NSToNL(), G4INCL::CrossSectionsStrangeness::NSToNS(), G4INCL::CrossSectionsStrangeness::p_pimToSzKz(), G4INCL::CrossSectionsINCL46::piNToDelta(), G4INCL::CrossSectionsMultiPions::piNToDelta(), G4INCL::CrossSectionsMultiPionsAndResonances::piNToEtaN(), G4INCL::CrossSectionsMultiPionsAndResonances::piNToOmegaN(), and G4INCL::CrossSectionsMultiPions::piNTot().

◆ getZ()

G4int G4INCL::Particle::getZ ( ) const
inlineinherited

Returns the charge number.

Definition at line 396 of file G4INCLParticle.hh.

396{ return theZ; }

References G4INCL::Particle::theZ.

Referenced by addDynamicalSpectator(), G4INCL::Cluster::addParticle(), G4INCL::CoulombNonRelativistic::bringToSurface(), G4INCL::Nucleus::computeOneNucleonRecoilKinematics(), G4INCL::ClusterDecay::decay(), G4INCL::CoulombNonRelativistic::distortOut(), G4INCL::Nucleus::emitInsideKaon(), G4INCL::Nucleus::emitInsidePions(), G4INCL::Nucleus::emitInsideStrangeParticles(), G4INCL::Nucleus::fillEventInfo(), G4INCL::ParticleEntryChannel::fillFinalState(), G4INCL::TransmissionChannel::fillFinalState(), G4INCL::Nucleus::finalizeProjectileRemnant(), G4INCL::ClusteringModelIntercomparison::findClusterStartingFrom(), G4INCL::PauliStandard::getBlockingProbability(), G4INCL::ClusteringModelIntercomparison::getCluster(), G4INCL::Nucleus::getConservationBalance(), G4INCL::Nucleus::getTransmissionBarrier(), G4INCL::SurfaceAvatar::getTransmissionProbability(), G4INCL::NuclearDensity::getTransmissionRadius(), G4INCL::TransmissionChannel::initializeKineticEnergyOutside(), G4INCL::Nucleus::insertParticle(), G4INCL::ClusterDecay::isStable(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::phaseSpaceDecay(), G4INCL::INCL::preCascade(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::recursiveDecay(), removeParticle(), G4INCL::INCL::RecoilCMFunctor::scaleParticleCMMomenta(), G4INCL::INCL::RecoilFunctor::scaleParticleEnergies(), G4INCL::StandardPropagationModel::shootComposite(), G4INCL::StandardPropagationModel::shootParticle(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::threeBodyDecay(), and G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::twoBodyDecay().

◆ incrementNumberOfCollisions()

void G4INCL::Particle::incrementNumberOfCollisions ( )
inlineinherited

Increment the number of collisions undergone by the particle.

Definition at line 840 of file G4INCLParticle.hh.

840{ nCollisions++; }

References G4INCL::Particle::nCollisions.

◆ incrementNumberOfDecays()

void G4INCL::Particle::incrementNumberOfDecays ( )
inlineinherited

Increment the number of decays undergone by the particle.

Definition at line 849 of file G4INCLParticle.hh.

849{ nDecays++; }

References G4INCL::Particle::nDecays.

◆ initializeParticles()

void G4INCL::Cluster::initializeParticles ( )
virtualinherited

Initialise the NuclearDensity pointer and sample the particles.

Reimplemented in G4INCL::Nucleus.

Definition at line 43 of file G4INCLCluster.cc.

43 {
44// assert(theA>=2);
45 const ThreeVector oldPosition = thePosition;
47#if !defined(NDEBUG) && !defined(INCLXX_IN_GEANT4_MODE)
48 const G4int theMassNumber = theA;
49 const G4int theChargeNumber = theZ;
50#endif
52 thePosition = oldPosition;
53// assert(theMassNumber==theA && theChargeNumber==theZ);
54 INCL_DEBUG("Cluster initialized:" << '\n' << print());
55 }
ParticleSampler * theParticleSampler
void sampleParticlesIntoList(ThreeVector const &position, ParticleList &theList)

References INCL_DEBUG, G4INCL::Cluster::particles, G4INCL::Cluster::print(), G4INCL::ParticleSampler::sampleParticlesIntoList(), G4INCL::Particle::theA, G4INCL::Cluster::theParticleSampler, G4INCL::Particle::thePosition, G4INCL::Particle::theZ, and G4INCL::Cluster::updateClusterParameters().

Referenced by G4INCL::Nucleus::initializeParticles(), and ProjectileRemnant().

◆ internalBoostToCM()

void G4INCL::Cluster::internalBoostToCM ( )
inlineinherited

Boost to the CM of the component particles.

The position of all particles in the particles list is shifted so that their centre of mass is in the origin and their total momentum is zero.

Definition at line 254 of file G4INCLCluster.hh.

254 {
255
256 // First compute the current CM position and total momentum
257 ThreeVector theCMPosition, theTotalMomentum;
258// G4double theTotalEnergy = 0.0;
259 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
260 theCMPosition += (*p)->getPosition();
261 theTotalMomentum += (*p)->getMomentum();
262// theTotalEnergy += (*p)->getEnergy();
263 }
264 theCMPosition /= theA;
265// assert((unsigned int)theA==particles.size());
266
267 // Now determine the CM velocity of the particles
268 // commented out because currently unused, see below
269 // ThreeVector betaCM = theTotalMomentum / theTotalEnergy;
270
271 // The new particle positions and momenta are scaled by a factor of
272 // \f$\sqrt{A/(A-1)}\f$, so that the resulting density distributions in
273 // the CM have the same variance as the one we started with.
274 const G4double rescaling = std::sqrt(((G4double)theA)/((G4double)(theA-1)));
275
276 // Loop again to boost and reposition
277 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
278 // \bug{We should do the following, but the Fortran version actually
279 // does not!
280 // (*p)->boost(betaCM);
281 // Here is what the Fortran version does:}
282 (*p)->setMomentum(((*p)->getMomentum()-theTotalMomentum/theA)*rescaling);
283
284 // Set the CM position of the particles
285 (*p)->setPosition(((*p)->getPosition()-theCMPosition)*rescaling);
286 }
287
288 // Set the global cluster kinematic variables
289 thePosition.setX(0.0);
290 thePosition.setY(0.0);
291 thePosition.setZ(0.0);
292 theMomentum.setX(0.0);
293 theMomentum.setY(0.0);
294 theMomentum.setZ(0.0);
295 theEnergy = getMass();
296
297 INCL_DEBUG("Cluster boosted to internal CM:" << '\n' << print());
298
299 }
void setY(G4double ay)
Set the y coordinate.
void setZ(G4double az)
Set the z coordinate.
void setX(G4double ax)
Set the x coordinate.

References G4INCL::Particle::getMass(), INCL_DEBUG, G4INCL::Cluster::particles, G4INCL::Cluster::print(), G4INCL::ThreeVector::setX(), G4INCL::ThreeVector::setY(), G4INCL::ThreeVector::setZ(), G4INCL::Particle::theA, G4INCL::Particle::theEnergy, G4INCL::Particle::theMomentum, and G4INCL::Particle::thePosition.

Referenced by ProjectileRemnant().

◆ isAntiKaon()

G4bool G4INCL::Particle::isAntiKaon ( ) const
inlineinherited

◆ isBaryon()

G4bool G4INCL::Particle::isBaryon ( ) const
inlineinherited

Is this a Baryon?

Definition at line 387 of file G4INCLParticle.hh.

387{ return (isNucleon() || isResonance() || isHyperon()); }
G4bool isResonance() const
Is it a resonance?
G4bool isHyperon() const
Is this an Hyperon?
G4bool isNucleon() const

References G4INCL::Particle::isHyperon(), G4INCL::Particle::isNucleon(), and G4INCL::Particle::isResonance().

Referenced by G4INCL::CDPP::processOneParticle().

◆ isCluster()

G4bool G4INCL::Particle::isCluster ( ) const
inlineinherited

◆ isDelta()

G4bool G4INCL::Particle::isDelta ( ) const
inlineinherited

◆ isEta()

G4bool G4INCL::Particle::isEta ( ) const
inlineinherited

◆ isEtaPrime()

G4bool G4INCL::Particle::isEtaPrime ( ) const
inlineinherited

◆ isHyperon()

G4bool G4INCL::Particle::isHyperon ( ) const
inlineinherited

Is this an Hyperon?

Definition at line 381 of file G4INCLParticle.hh.

381{ return (isLambda() || isSigma()); }
G4bool isLambda() const
Is this a Lambda?
G4bool isSigma() const
Is this a Sigma?

References G4INCL::Particle::isLambda(), and G4INCL::Particle::isSigma().

Referenced by G4INCL::CrossSectionsStrangeness::elastic(), G4INCL::Particle::isBaryon(), G4INCL::Particle::isStrange(), and G4INCL::CrossSectionsStrangeness::NYelastic().

◆ isKaon()

G4bool G4INCL::Particle::isKaon ( ) const
inlineinherited

◆ isLambda()

G4bool G4INCL::Particle::isLambda ( ) const
inlineinherited

◆ isMeson()

G4bool G4INCL::Particle::isMeson ( ) const
inlineinherited

◆ isNucleon()

G4bool G4INCL::Particle::isNucleon ( ) const
inlineinherited

Is this a nucleon?

Definition at line 303 of file G4INCLParticle.hh.

303 {
305 return true;
306 else
307 return false;
308 };

References G4INCL::Neutron, G4INCL::Proton, and G4INCL::Particle::theType.

Referenced by G4INCL::NuclearPotential::NuclearPotentialEnergyIsospin::computePotentialEnergy(), G4INCL::NuclearPotential::NuclearPotentialEnergyIsospinSmooth::computePotentialEnergy(), G4INCL::CrossSectionsINCL46::elastic(), G4INCL::CrossSectionsMultiPions::elastic(), G4INCL::CrossSectionsMultiPionsAndResonances::elastic(), G4INCL::CrossSectionsStrangeness::elastic(), G4INCL::CrossSectionsTruncatedMultiPions::elastic(), G4INCL::CrossSectionsINCL46::elasticNNLegacy(), G4INCL::EtaNElasticChannel::fillFinalState(), G4INCL::EtaNToPiNChannel::fillFinalState(), G4INCL::EtaNToPiPiNChannel::fillFinalState(), G4INCL::NDeltaToNNKKbChannel::fillFinalState(), G4INCL::NKbElasticChannel::fillFinalState(), G4INCL::NKbToL2piChannel::fillFinalState(), G4INCL::NKbToLpiChannel::fillFinalState(), G4INCL::NKbToNKb2piChannel::fillFinalState(), G4INCL::NKbToNKbChannel::fillFinalState(), G4INCL::NKbToNKbpiChannel::fillFinalState(), G4INCL::NKbToS2piChannel::fillFinalState(), G4INCL::NKbToSpiChannel::fillFinalState(), G4INCL::NKElasticChannel::fillFinalState(), G4INCL::NKToNK2piChannel::fillFinalState(), G4INCL::NKToNKChannel::fillFinalState(), G4INCL::NKToNKpiChannel::fillFinalState(), G4INCL::NLToNSChannel::fillFinalState(), G4INCL::NpiToLK2piChannel::fillFinalState(), G4INCL::NpiToLKChannel::fillFinalState(), G4INCL::NpiToLKpiChannel::fillFinalState(), G4INCL::NpiToNKKbChannel::fillFinalState(), G4INCL::NpiToSK2piChannel::fillFinalState(), G4INCL::NpiToSKChannel::fillFinalState(), G4INCL::NpiToSKpiChannel::fillFinalState(), G4INCL::NSToNLChannel::fillFinalState(), G4INCL::NSToNSChannel::fillFinalState(), G4INCL::NYElasticChannel::fillFinalState(), G4INCL::OmegaNElasticChannel::fillFinalState(), G4INCL::OmegaNToPiNChannel::fillFinalState(), G4INCL::OmegaNToPiPiNChannel::fillFinalState(), G4INCL::PiNElasticChannel::fillFinalState(), G4INCL::PiNToDeltaChannel::fillFinalState(), G4INCL::PiNToEtaChannel::fillFinalState(), G4INCL::PiNToMultiPionsChannel::fillFinalState(), G4INCL::PiNToOmegaChannel::fillFinalState(), G4INCL::StrangeAbsorbtionChannel::fillFinalState(), G4INCL::StandardPropagationModel::generateBinaryCollisionAvatar(), G4INCL::BinaryCollisionAvatar::getChannel(), G4INCL::DecayAvatar::getChannel(), G4INCL::Nucleus::getSurfaceRadius(), G4INCL::Nucleus::insertParticle(), G4INCL::Particle::isBaryon(), G4INCL::Particle::isNucleonorLambda(), G4INCL::CrossSectionsMultiPions::NNElastic(), G4INCL::CrossSectionsMultiPions::NNTot(), G4INCL::CrossSectionsMultiPions::piMinuspIne(), G4INCL::CrossSectionsMultiPions::piMinuspOnePi(), G4INCL::CrossSectionsMultiPions::piMinuspTwoPi(), G4INCL::CrossSectionsMultiPions::piNIne(), G4INCL::CrossSectionsMultiPions::piNOnePi(), G4INCL::CrossSectionsINCL46::piNToDelta(), G4INCL::CrossSectionsMultiPions::piNToxPiN(), G4INCL::CrossSectionsMultiPions::piNTwoPi(), G4INCL::CrossSectionsMultiPions::piPluspIne(), G4INCL::CrossSectionsMultiPions::piPluspOnePi(), G4INCL::CrossSectionsMultiPions::piPluspTwoPi(), G4INCL::CrossSectionsINCL46::total(), G4INCL::CrossSectionsMultiPions::total(), G4INCL::CrossSectionsMultiPionsAndResonances::total(), and G4INCL::CrossSectionsStrangeness::total().

◆ isNucleonorLambda()

G4bool G4INCL::Particle::isNucleonorLambda ( ) const
inlineinherited

Is this a Nucleon or a Lambda?

Definition at line 378 of file G4INCLParticle.hh.

378{ return (isNucleon() || isLambda()); }

References G4INCL::Particle::isLambda(), and G4INCL::Particle::isNucleon().

Referenced by G4INCL::ParticleEntryChannel::fillFinalState(), and G4INCL::SurfaceAvatar::getChannel().

◆ isOmega()

G4bool G4INCL::Particle::isOmega ( ) const
inlineinherited

◆ isOutOfWell()

G4bool G4INCL::Particle::isOutOfWell ( ) const
inlineinherited

◆ isParticipant()

G4bool G4INCL::Particle::isParticipant ( ) const
inlineinherited

◆ isPhoton()

G4bool G4INCL::Particle::isPhoton ( ) const
inlineinherited

Is this a photon?

Definition at line 355 of file G4INCLParticle.hh.

355{ return (theType == Photon); }

References G4INCL::Photon, and G4INCL::Particle::theType.

◆ isPion()

G4bool G4INCL::Particle::isPion ( ) const
inlineinherited

◆ isProjectileSpectator()

G4bool G4INCL::Particle::isProjectileSpectator ( ) const
inlineinherited

◆ isResonance()

G4bool G4INCL::Particle::isResonance ( ) const
inlineinherited

◆ isSigma()

G4bool G4INCL::Particle::isSigma ( ) const
inlineinherited

◆ isStrange()

G4bool G4INCL::Particle::isStrange ( ) const
inlineinherited

Is this an Strange?

Definition at line 390 of file G4INCLParticle.hh.

390{ return (isKaon() || isAntiKaon() || isHyperon()); }

References G4INCL::Particle::isAntiKaon(), G4INCL::Particle::isHyperon(), and G4INCL::Particle::isKaon().

◆ isTargetSpectator()

G4bool G4INCL::Particle::isTargetSpectator ( ) const
inlineinherited

◆ lorentzContract()

void G4INCL::Particle::lorentzContract ( const ThreeVector aBoostVector,
const ThreeVector refPos 
)
inlineinherited

Lorentz-contract the particle position around some center.

Apply Lorentz contraction to the position component along the direction of the boost vector.

Parameters
aBoostVectorthe boost vector (velocity) [c]
refPosthe reference position

Definition at line 440 of file G4INCLParticle.hh.

440 {
441 const G4double beta2 = aBoostVector.mag2();
442 const G4double gamma = 1.0 / std::sqrt(1.0 - beta2);
443 const ThreeVector theRelativePosition = thePosition - refPos;
444 const ThreeVector transversePosition = theRelativePosition - aBoostVector * (theRelativePosition.dot(aBoostVector) / aBoostVector.mag2());
445 const ThreeVector longitudinalPosition = theRelativePosition - transversePosition;
446
447 thePosition = refPos + transversePosition + longitudinalPosition / gamma;
448 }

References G4INCL::ThreeVector::dot(), G4INCL::ThreeVector::mag2(), and G4INCL::Particle::thePosition.

◆ makeParticipant()

virtual void G4INCL::Cluster::makeParticipant ( )
inlinevirtualinherited

Make all the components participants, too.

Reimplemented from G4INCL::Particle.

Definition at line 414 of file G4INCLCluster.hh.

414 {
416 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
417 (*p)->makeParticipant();
418 }
419 }
virtual void makeParticipant()

References G4INCL::Particle::makeParticipant(), and G4INCL::Cluster::particles.

◆ makeProjectileSpectator()

virtual void G4INCL::Cluster::makeProjectileSpectator ( )
inlinevirtualinherited

Make all the components projectile spectators, too.

Reimplemented from G4INCL::Particle.

Definition at line 398 of file G4INCLCluster.hh.

398 {
400 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
401 (*p)->makeProjectileSpectator();
402 }
403 }
virtual void makeProjectileSpectator()

References G4INCL::Particle::makeProjectileSpectator(), and G4INCL::Cluster::particles.

Referenced by ProjectileRemnant().

◆ makeTargetSpectator()

virtual void G4INCL::Cluster::makeTargetSpectator ( )
inlinevirtualinherited

Make all the components target spectators, too.

Reimplemented from G4INCL::Particle.

Definition at line 406 of file G4INCLCluster.hh.

406 {
408 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
409 (*p)->makeTargetSpectator();
410 }
411 }
virtual void makeTargetSpectator()

References G4INCL::Particle::makeTargetSpectator(), and G4INCL::Cluster::particles.

◆ MergeVectorBias() [1/2]

std::vector< G4int > G4INCL::Particle::MergeVectorBias ( Particle const *const  p1,
Particle const *const  p2 
)
staticinherited

Definition at line 223 of file G4INCLParticle.cc.

223 {
224 std::vector<G4int> MergedVectorBias;
225 std::vector<G4int> VectorBias1 = p1->getBiasCollisionVector();
226 std::vector<G4int> VectorBias2 = p2->getBiasCollisionVector();
227 G4int i = 0;
228 G4int j = 0;
229 if(VectorBias1.size()==0 && VectorBias2.size()==0) return MergedVectorBias;
230 else if(VectorBias1.size()==0) return VectorBias2;
231 else if(VectorBias2.size()==0) return VectorBias1;
232
233 while(i < G4int(VectorBias1.size()) || j < G4int(VectorBias2.size())){
234 if(VectorBias1[i]==VectorBias2[j]){
235 MergedVectorBias.push_back(VectorBias1[i]);
236 i++;
237 j++;
238 if(i == G4int(VectorBias1.size())){
239 for(;j<G4int(VectorBias2.size());j++) MergedVectorBias.push_back(VectorBias2[j]);
240 }
241 else if(j == G4int(VectorBias2.size())){
242 for(;i<G4int(VectorBias1.size());i++) MergedVectorBias.push_back(VectorBias1[i]);
243 }
244 } else if(VectorBias1[i]<VectorBias2[j]){
245 MergedVectorBias.push_back(VectorBias1[i]);
246 i++;
247 if(i == G4int(VectorBias1.size())){
248 for(;j<G4int(VectorBias2.size());j++) MergedVectorBias.push_back(VectorBias2[j]);
249 }
250 }
251 else {
252 MergedVectorBias.push_back(VectorBias2[j]);
253 j++;
254 if(j == G4int(VectorBias2.size())){
255 for(;i<G4int(VectorBias1.size());i++) MergedVectorBias.push_back(VectorBias1[i]);
256 }
257 }
258 }
259 return MergedVectorBias;
260 }

References G4INCL::Particle::getBiasCollisionVector().

Referenced by G4INCL::BinaryCollisionAvatar::getChannel(), G4INCL::ParticleList::getParticleListBias(), and G4INCL::ParticleList::getParticleListBiasVector().

◆ MergeVectorBias() [2/2]

std::vector< G4int > G4INCL::Particle::MergeVectorBias ( std::vector< G4int p1,
Particle const *const  p2 
)
staticinherited

Definition at line 262 of file G4INCLParticle.cc.

262 {
263 std::vector<G4int> MergedVectorBias;
264 std::vector<G4int> VectorBias = p2->getBiasCollisionVector();
265 G4int i = 0;
266 G4int j = 0;
267 if(p1.size()==0 && VectorBias.size()==0) return MergedVectorBias;
268 else if(p1.size()==0) return VectorBias;
269 else if(VectorBias.size()==0) return p1;
270
271 while(i < G4int(p1.size()) || j < G4int(VectorBias.size())){
272 if(p1[i]==VectorBias[j]){
273 MergedVectorBias.push_back(p1[i]);
274 i++;
275 j++;
276 if(i == G4int(p1.size())){
277 for(;j<G4int(VectorBias.size());j++) MergedVectorBias.push_back(VectorBias[j]);
278 }
279 else if(j == G4int(VectorBias.size())){
280 for(;i<G4int(p1.size());i++) MergedVectorBias.push_back(p1[i]);
281 }
282 } else if(p1[i]<VectorBias[j]){
283 MergedVectorBias.push_back(p1[i]);
284 i++;
285 if(i == G4int(p1.size())){
286 for(;j<G4int(VectorBias.size());j++) MergedVectorBias.push_back(VectorBias[j]);
287 }
288 }
289 else {
290 MergedVectorBias.push_back(VectorBias[j]);
291 j++;
292 if(j == G4int(VectorBias.size())){
293 for(;i<G4int(p1.size());i++) MergedVectorBias.push_back(p1[i]);
294 }
295 }
296 }
297 return MergedVectorBias;
298 }

References G4INCL::Particle::getBiasCollisionVector().

◆ print()

std::string G4INCL::Cluster::print ( ) const
inlineinherited

Definition at line 221 of file G4INCLCluster.hh.

221 {
222 std::stringstream ss;
223 ss << "Cluster (ID = " << ID << ") type = ";
225 ss << '\n'
226 << " A = " << theA << '\n'
227 << " Z = " << theZ << '\n'
228 << " S = " << theS << '\n'
229 << " mass = " << getMass() << '\n'
230 << " energy = " << theEnergy << '\n'
231 << " momentum = "
232 << theMomentum.print()
233 << '\n'
234 << " position = "
235 << thePosition.print()
236 << '\n'
237 << "Contains the following particles:"
238 << '\n';
239 for(ParticleIter i=particles.begin(), e=particles.end(); i!=e; ++i)
240 ss << (*i)->print();
241 ss << '\n';
242 return ss.str();
243 }
std::string print() const

References G4INCL::Particle::getMass(), G4INCL::ParticleTable::getName(), G4INCL::Particle::ID, G4INCL::Cluster::particles, G4INCL::ThreeVector::print(), G4INCL::Particle::theA, G4INCL::Particle::theEnergy, G4INCL::Particle::theMomentum, G4INCL::Particle::thePosition, G4INCL::Particle::theS, G4INCL::Particle::theType, and G4INCL::Particle::theZ.

Referenced by G4INCL::Cluster::boost(), G4INCL::SurfaceAvatar::getChannel(), G4INCL::Cluster::initializeParticles(), G4INCL::Cluster::internalBoostToCM(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::phaseSpaceDecay(), G4INCL::Cluster::putParticlesOffShell(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::recursiveDecay(), removeParticle(), reset(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::threeBodyDecay(), and G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::twoBodyDecay().

◆ propagate()

void G4INCL::Particle::propagate ( G4double  step)
inlineinherited

Definition at line 829 of file G4INCLParticle.hh.

829 {
830 thePosition += ((*thePropagationMomentum)*(step/(*thePropagationEnergy)));
831 };

References G4INCL::Particle::thePosition.

Referenced by G4INCL::StandardPropagationModel::generateBinaryCollisionAvatar().

◆ putParticlesOffShell()

void G4INCL::Cluster::putParticlesOffShell ( )
inlineinherited

Put the cluster components off shell.

The Cluster components are put off shell in such a way that their total energy equals the cluster mass.

Definition at line 306 of file G4INCLCluster.hh.

306 {
307 // Compute the dynamical potential
308 const G4double theDynamicalPotential = computeDynamicalPotential();
309 INCL_DEBUG("The dynamical potential is " << theDynamicalPotential << " MeV" << '\n');
310
311 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
312 const G4double energy = (*p)->getEnergy() - theDynamicalPotential;
313 const ThreeVector &momentum = (*p)->getMomentum();
314 // Here particles are put off-shell so that we can satisfy the energy-
315 // and momentum-conservation laws
316 (*p)->setEnergy(energy);
317 (*p)->setMass(std::sqrt(energy*energy - momentum.mag2()));
318 }
319 INCL_DEBUG("Cluster components are now off shell:" << '\n'
320 << print());
321 }
G4double computeDynamicalPotential()
Compute the dynamical cluster potential.

References G4INCL::Cluster::computeDynamicalPotential(), G4INCL::KinematicsUtils::energy(), INCL_DEBUG, G4INCL::ThreeVector::mag2(), G4INCL::Cluster::particles, and G4INCL::Cluster::print().

Referenced by ProjectileRemnant().

◆ removeParticle() [1/2]

void G4INCL::Cluster::removeParticle ( Particle *const  p)
inlineinherited

Remove a particle from the cluster components.

Definition at line 172 of file G4INCLCluster.hh.

172{ particles.remove(p); }

References G4INCL::Cluster::particles, and G4INCL::UnorderedVector< T >::remove().

Referenced by removeParticle().

◆ removeParticle() [2/2]

void G4INCL::ProjectileRemnant::removeParticle ( Particle *const  p,
const G4double  theProjectileCorrection 
)

Remove a nucleon from the projectile remnant.

Parameters
pparticle to be removed
theProjectileCorrectioncorrection to be given to the projectile total energy

Definition at line 76 of file G4INCLProjectileRemnant.cc.

76 {
77// assert(p->isNucleon() || p->isLambda());
78
79 INCL_DEBUG("The following Particle is about to be removed from the ProjectileRemnant:"
80 << '\n' << p->print()
81 << "theProjectileCorrection=" << theProjectileCorrection << '\n');
82 // Update A, Z, S, momentum, and energy of the projectile remnant
83 theA -= p->getA();
84 theZ -= p->getZ();
85 theS -= p->getS();
86
87 ThreeVector const &oldMomentum = p->getMomentum();
88 const G4double oldEnergy = p->getEnergy();
90
91#if !defined(NDEBUG) && !defined(INCLXX_IN_GEANT4_MODE)
92 ThreeVector theTotalMomentum;
93 G4double theTotalEnergy = 0.;
94 const G4double theThreshold = 0.1;
95#endif
96
97 if(getA()>0) { // if there are any particles left
98// assert((unsigned int)getA()==particles.size());
99
100 const G4double theProjectileCorrectionPerNucleon = theProjectileCorrection / particles.size();
101
102 // Update the kinematics of the components
103 for(ParticleIter i=particles.begin(), e=particles.end(); i!=e; ++i) {
104 (*i)->setEnergy((*i)->getEnergy() + theProjectileCorrectionPerNucleon);
105 (*i)->setMass((*i)->getInvariantMass());
106#if !defined(NDEBUG) && !defined(INCLXX_IN_GEANT4_MODE)
107 theTotalMomentum += (*i)->getMomentum();
108 theTotalEnergy += (*i)->getEnergy();
109#endif
110 }
111 }
112
113 theMomentum -= oldMomentum;
114 theEnergy -= oldEnergy - theProjectileCorrection;
115
116// assert(std::abs((theTotalMomentum-theMomentum).mag())<theThreshold);
117// assert(std::abs(theTotalEnergy-theEnergy)<theThreshold);
118 INCL_DEBUG("After Particle removal, the ProjectileRemnant looks like this:"
119 << '\n' << print());
120 }
void removeParticle(Particle *const p)
Remove a particle from the cluster components.
G4int getA() const
Returns the baryon number.

References G4INCL::Particle::getA(), G4INCL::Particle::getEnergy(), G4INCL::Particle::getMomentum(), G4INCL::Particle::getS(), G4INCL::Particle::getZ(), INCL_DEBUG, G4INCL::Cluster::particles, G4INCL::Cluster::print(), G4INCL::Particle::print(), G4INCL::Cluster::removeParticle(), G4INCL::Particle::theA, G4INCL::Particle::theEnergy, G4INCL::Particle::theMomentum, G4INCL::Particle::theS, and G4INCL::Particle::theZ.

Referenced by G4INCL::ParticleEntryChannel::fillFinalState().

◆ reset()

void G4INCL::ProjectileRemnant::reset ( )

Reset the projectile remnant to the state at the beginning of the cascade.

Definition at line 51 of file G4INCLProjectileRemnant.cc.

51 {
53 thePosition = ThreeVector();
54 theMomentum = ThreeVector();
55 theEnergy = 0.0;
57 theA = 0;
58 theZ = 0;
59 nCollisions = 0;
60
61 for(std::map<long, Particle*>::const_iterator i=storedComponents.begin(); i!=storedComponents.end(); ++i) {
62 Particle *p = new Particle(*(i->second));
63 EnergyLevelMap::iterator energyIter = theInitialEnergyLevels.find(i->first);
64// assert(energyIter!=theInitialEnergyLevels.end());
65 const G4double energyLevel = energyIter->second;
66 theInitialEnergyLevels.erase(energyIter);
67 theInitialEnergyLevels[p->getID()] = energyLevel;
68 addParticle(p);
69 }
70 if(theA>0)
73 INCL_DEBUG("ProjectileRemnant object was reset:" << '\n' << print());
74 }
void addParticle(Particle *const p)

References G4INCL::Cluster::addParticle(), G4INCL::Cluster::deleteParticles(), G4INCL::Particle::getID(), INCL_DEBUG, G4INCL::Particle::nCollisions, G4INCL::Particle::Particle(), G4INCL::Cluster::print(), G4INCL::Particle::setTableMass(), storedComponents, G4INCL::Particle::theA, G4INCL::Particle::theEnergy, theInitialEnergyLevels, G4INCL::Particle::theMomentum, G4INCL::Particle::thePosition, G4INCL::Particle::thePotentialEnergy, and G4INCL::Particle::theZ.

Referenced by G4INCL::INCL::makeCompoundNucleus().

◆ rotateMomentum()

void G4INCL::Cluster::rotateMomentum ( const G4double  angle,
const ThreeVector axis 
)
virtualinherited

Rotate momentum of all the particles.

This includes the cluster components. Overloads Particle::rotateMomentum().

Parameters
anglethe rotation angle
axisa unit vector representing the rotation axis

Reimplemented from G4INCL::Particle.

Definition at line 64 of file G4INCLCluster.cc.

64 {
66 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
67 (*p)->rotateMomentum(angle, axis);
68 }
69 }
static const G4double angle[DIMMOTT]
virtual void rotateMomentum(const G4double angle, const ThreeVector &axis)
Rotate the particle momentum.

References angle, G4INCL::Cluster::particles, and G4INCL::Particle::rotateMomentum().

◆ rotatePosition()

void G4INCL::Cluster::rotatePosition ( const G4double  angle,
const ThreeVector axis 
)
virtualinherited

Rotate position of all the particles.

This includes the cluster components. Overloads Particle::rotateMomentum().

Parameters
anglethe rotation angle
axisa unit vector representing the rotation axis

Reimplemented from G4INCL::Particle.

Definition at line 57 of file G4INCLCluster.cc.

57 {
59 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
60 (*p)->rotatePosition(angle, axis);
61 }
62 }
virtual void rotatePosition(const G4double angle, const ThreeVector &axis)
Rotate the particle position.

References angle, G4INCL::Cluster::particles, and G4INCL::Particle::rotatePosition().

◆ rotatePositionAndMomentum()

virtual void G4INCL::Particle::rotatePositionAndMomentum ( const G4double  angle,
const ThreeVector axis 
)
inlinevirtualinherited

Rotate the particle position and momentum.

Parameters
anglethe rotation angle
axisa unit vector representing the rotation axis

Definition at line 929 of file G4INCLParticle.hh.

929 {
930 rotatePosition(angle, axis);
931 rotateMomentum(angle, axis);
932 }

References angle, G4INCL::Particle::rotateMomentum(), and G4INCL::Particle::rotatePosition().

Referenced by G4INCL::CoulombNonRelativistic::coulombDeviation().

◆ rpCorrelate()

void G4INCL::Particle::rpCorrelate ( )
inlineinherited

Make the particle follow a strict r-p correlation.

Definition at line 1008 of file G4INCLParticle.hh.

1008{ rpCorrelated = true; }

References G4INCL::Particle::rpCorrelated.

Referenced by G4INCL::InteractionAvatar::bringParticleInside(), G4INCL::ParticleEntryAvatar::postInteraction(), and G4INCL::SurfaceAvatar::postInteraction().

◆ rpDecorrelate()

void G4INCL::Particle::rpDecorrelate ( )
inlineinherited

Make the particle not follow a strict r-p correlation.

Definition at line 1011 of file G4INCLParticle.hh.

1011{ rpCorrelated = false; }

References G4INCL::Particle::rpCorrelated.

◆ setA()

void G4INCL::Cluster::setA ( const G4int  A)
inlineinherited

◆ setBiasCollisionVector()

void G4INCL::Particle::setBiasCollisionVector ( std::vector< G4int BiasCollisionVector)
inlineinherited

Set the vector list of biased vertices on the particle path.

Definition at line 1041 of file G4INCLParticle.hh.

1041 {
1042 this->theBiasCollisionVector = BiasCollisionVector;
1043 this->setParticleBias(Particle::getBiasFromVector(BiasCollisionVector));
1044 }
void setParticleBias(G4double ParticleBias)
Set the particle bias.
static G4double getBiasFromVector(std::vector< G4int > VectorBias)

References G4INCL::Particle::getBiasFromVector(), G4INCL::Particle::setParticleBias(), and G4INCL::Particle::theBiasCollisionVector.

Referenced by G4INCL::Nucleus::decayOutgoingPionResonances(), G4INCL::Nucleus::decayOutgoingSigmaZero(), and G4INCL::SurfaceAvatar::postInteraction().

◆ setEmissionTime()

void G4INCL::Particle::setEmissionTime ( G4double  t)
inlineinherited

◆ setEnergy()

void G4INCL::Particle::setEnergy ( G4double  energy)
inlineinherited

◆ setExcitationEnergy()

void G4INCL::Cluster::setExcitationEnergy ( const G4double  e)
inlineinherited

◆ setFrozenEnergy()

void G4INCL::Particle::setFrozenEnergy ( const G4double  energy)
inlineinherited

Set the frozen particle momentum.

Definition at line 891 of file G4INCLParticle.hh.

References G4INCL::KinematicsUtils::energy(), and G4INCL::Particle::theFrozenEnergy.

◆ setFrozenMomentum()

void G4INCL::Particle::setFrozenMomentum ( const ThreeVector momentum)
inlineinherited

Set the frozen particle momentum.

Definition at line 888 of file G4INCLParticle.hh.

888{ theFrozenMomentum = momentum; }

References G4INCL::Particle::theFrozenMomentum.

◆ setHelicity()

void G4INCL::Particle::setHelicity ( G4double  h)
inlineinherited

◆ setINCLBiasVector()

void G4INCL::Particle::setINCLBiasVector ( std::vector< G4double NewVector)
staticinherited

Definition at line 306 of file G4INCLParticle.cc.

306 {
307 Particle::INCLBiasVector = NewVector;
308 }

References G4INCL::Particle::INCLBiasVector.

◆ setINCLMass()

void G4INCL::Particle::setINCLMass ( )
inlineinherited

◆ setMass()

void G4INCL::Particle::setMass ( G4double  mass)
inlineinherited

◆ setMomentum()

virtual void G4INCL::Particle::setMomentum ( const G4INCL::ThreeVector momentum)
inlinevirtualinherited

Set the momentum vector.

Definition at line 808 of file G4INCLParticle.hh.

809 {
810 this->theMomentum = momentum;
811 };

References G4INCL::Particle::theMomentum.

Referenced by G4INCL::Nucleus::computeOneNucleonRecoilKinematics(), G4INCL::Nucleus::decayOutgoingPionResonances(), G4INCL::Nucleus::decayOutgoingSigmaZero(), G4INCL::DeltaDecayChannel::fillFinalState(), G4INCL::DeltaProductionChannel::fillFinalState(), G4INCL::ElasticChannel::fillFinalState(), G4INCL::EtaNElasticChannel::fillFinalState(), G4INCL::EtaNToPiNChannel::fillFinalState(), G4INCL::NKbElasticChannel::fillFinalState(), G4INCL::NKbToLpiChannel::fillFinalState(), G4INCL::NKbToNKbChannel::fillFinalState(), G4INCL::NKbToSpiChannel::fillFinalState(), G4INCL::NKElasticChannel::fillFinalState(), G4INCL::NKToNKChannel::fillFinalState(), G4INCL::NSToNLChannel::fillFinalState(), G4INCL::NSToNSChannel::fillFinalState(), G4INCL::OmegaNElasticChannel::fillFinalState(), G4INCL::OmegaNToPiNChannel::fillFinalState(), G4INCL::PionResonanceDecayChannel::fillFinalState(), G4INCL::RecombinationChannel::fillFinalState(), G4INCL::ReflectionChannel::fillFinalState(), G4INCL::SigmaZeroDecayChannel::fillFinalState(), G4INCL::StrangeAbsorbtionChannel::fillFinalState(), G4INCL::PhaseSpaceKopylov::generate(), G4INCL::PhaseSpaceRauboldLynch::generateEvent(), G4INCL::INCL::makeCompoundNucleus(), G4INCL::ParticleEntryChannel::particleEnters(), G4INCL::TransmissionChannel::particleLeaves(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::phaseSpaceDecay(), G4INCL::INCL::RecoilCMFunctor::scaleParticleCMMomenta(), G4INCL::INCL::RecoilFunctor::scaleParticleEnergies(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::threeBodyDecay(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::twoBodyDecay(), and G4INCL::Nucleus::useFusionKinematics().

◆ setNumberOfCollisions()

void G4INCL::Particle::setNumberOfCollisions ( G4int  n)
inlineinherited

Set the number of collisions undergone by the particle.

Definition at line 837 of file G4INCLParticle.hh.

References CLHEP::detail::n, and G4INCL::Particle::nCollisions.

◆ setNumberOfDecays()

void G4INCL::Particle::setNumberOfDecays ( G4int  n)
inlineinherited

◆ setNumberOfKaon()

void G4INCL::Particle::setNumberOfKaon ( const G4int  NK)
inlineinherited

◆ setOutOfWell()

void G4INCL::Particle::setOutOfWell ( )
inlineinherited

Mark the particle as out of its potential well.

This flag is used to control pions created outside their potential well in delta decay. The pion potential checks it and returns zero if it is true (necessary in order to correctly enforce energy conservation). The Nucleus::applyFinalState() method uses it to determine whether new avatars should be generated for the particle.

Definition at line 859 of file G4INCLParticle.hh.

859{ outOfWell = true; }

References G4INCL::Particle::outOfWell.

◆ setParticipantType()

void G4INCL::Particle::setParticipantType ( ParticipantType const  p)
inlineinherited

Definition at line 314 of file G4INCLParticle.hh.

314 {
316 }

References G4INCL::Particle::theParticipantType.

◆ setParticleBias()

void G4INCL::Particle::setParticleBias ( G4double  ParticleBias)
inlineinherited

Set the particle bias.

Definition at line 1035 of file G4INCLParticle.hh.

1035{ this->theParticleBias = ParticleBias; }

References G4INCL::Particle::theParticleBias.

Referenced by G4INCL::Particle::setBiasCollisionVector().

◆ setPosition()

void G4INCL::Cluster::setPosition ( const ThreeVector position)
inlinevirtualinherited

Set the position of the cluster.

This overloads the Particle method to take into account that the positions of the cluster members must be updated as well.

Reimplemented from G4INCL::Particle.

Definition at line 328 of file G4INCLCluster.hh.

328 {
329 ThreeVector shift(position-thePosition);
331 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
332 (*p)->setPosition((*p)->getPosition()+shift);
333 }
334 }
virtual void setPosition(const G4INCL::ThreeVector &position)

References G4INCL::Cluster::particles, G4INCL::Particle::setPosition(), and G4INCL::Particle::thePosition.

Referenced by G4INCL::StandardPropagationModel::shootComposite().

◆ setPotentialEnergy()

void G4INCL::Particle::setPotentialEnergy ( G4double  v)
inlineinherited

◆ setRealMass()

void G4INCL::Particle::setRealMass ( )
inlineinherited

◆ setS()

void G4INCL::Cluster::setS ( const G4int  S)
inlineinherited

◆ setSpin()

void G4INCL::Cluster::setSpin ( const ThreeVector j)
inlineinherited

◆ setTableMass()

void G4INCL::Particle::setTableMass ( )
inlineinherited

◆ setType()

void G4INCL::Particle::setType ( ParticleType  t)
inlineinherited

Definition at line 187 of file G4INCLParticle.hh.

187 {
188 theType = t;
189 switch(theType)
190 {
191 case DeltaPlusPlus:
192 theA = 1;
193 theZ = 2;
194 theS = 0;
195 break;
196 case Proton:
197 case DeltaPlus:
198 theA = 1;
199 theZ = 1;
200 theS = 0;
201 break;
202 case Neutron:
203 case DeltaZero:
204 theA = 1;
205 theZ = 0;
206 theS = 0;
207 break;
208 case DeltaMinus:
209 theA = 1;
210 theZ = -1;
211 theS = 0;
212 break;
213 case PiPlus:
214 theA = 0;
215 theZ = 1;
216 theS = 0;
217 break;
218 case PiZero:
219 case Eta:
220 case Omega:
221 case EtaPrime:
222 case Photon:
223 theA = 0;
224 theZ = 0;
225 theS = 0;
226 break;
227 case PiMinus:
228 theA = 0;
229 theZ = -1;
230 theS = 0;
231 break;
232 case Lambda:
233 theA = 1;
234 theZ = 0;
235 theS = -1;
236 break;
237 case SigmaPlus:
238 theA = 1;
239 theZ = 1;
240 theS = -1;
241 break;
242 case SigmaZero:
243 theA = 1;
244 theZ = 0;
245 theS = -1;
246 break;
247 case SigmaMinus:
248 theA = 1;
249 theZ = -1;
250 theS = -1;
251 break;
252 case KPlus:
253 theA = 0;
254 theZ = 1;
255 theS = 1;
256 break;
257 case KZero:
258 theA = 0;
259 theZ = 0;
260 theS = 1;
261 break;
262 case KZeroBar:
263 theA = 0;
264 theZ = 0;
265 theS = -1;
266 break;
267 case KShort:
268 theA = 0;
269 theZ = 0;
270// theS should not be defined
271 break;
272 case KLong:
273 theA = 0;
274 theZ = 0;
275// theS should not be defined
276 break;
277 case KMinus:
278 theA = 0;
279 theZ = -1;
280 theS = -1;
281 break;
282 case Composite:
283 // INCL_ERROR("Trying to set particle type to Composite! Construct a Cluster object instead" << '\n');
284 theA = 0;
285 theZ = 0;
286 theS = 0;
287 break;
288 case UnknownParticle:
289 theA = 0;
290 theZ = 0;
291 theS = 0;
292 INCL_ERROR("Trying to set particle type to Unknown!" << '\n');
293 break;
294 }
295
296 if( !isResonance() && t!=Composite )
297 setINCLMass();
298 }
void setINCLMass()
Set the mass of the Particle to its table mass.

References G4INCL::Composite, G4INCL::DeltaMinus, G4INCL::DeltaPlus, G4INCL::DeltaPlusPlus, G4INCL::DeltaZero, G4INCL::Eta, G4INCL::EtaPrime, INCL_ERROR, G4INCL::Particle::isResonance(), G4INCL::KLong, G4INCL::KMinus, G4INCL::KPlus, G4INCL::KShort, G4INCL::KZero, G4INCL::KZeroBar, G4INCL::Lambda, G4INCL::Neutron, G4INCL::Omega, G4INCL::Photon, G4INCL::PiMinus, G4INCL::PiPlus, G4INCL::PiZero, G4INCL::Proton, G4INCL::Particle::setINCLMass(), G4INCL::SigmaMinus, G4INCL::SigmaPlus, G4INCL::SigmaZero, G4INCL::Particle::theA, G4INCL::Particle::theS, G4INCL::Particle::theType, G4INCL::Particle::theZ, and G4INCL::UnknownParticle.

Referenced by G4INCL::Cluster::Cluster(), G4INCL::ClusterDecay::decay(), G4INCL::DeltaDecayChannel::fillFinalState(), G4INCL::DeltaProductionChannel::fillFinalState(), G4INCL::ElasticChannel::fillFinalState(), G4INCL::EtaNToPiNChannel::fillFinalState(), G4INCL::EtaNToPiPiNChannel::fillFinalState(), G4INCL::NDeltaEtaProductionChannel::fillFinalState(), G4INCL::NDeltaOmegaProductionChannel::fillFinalState(), G4INCL::NDeltaToDeltaLKChannel::fillFinalState(), G4INCL::NDeltaToDeltaSKChannel::fillFinalState(), G4INCL::NDeltaToNLKChannel::fillFinalState(), G4INCL::NDeltaToNNKKbChannel::fillFinalState(), G4INCL::NDeltaToNSKChannel::fillFinalState(), G4INCL::NeutralKaonDecayChannel::fillFinalState(), G4INCL::NKbToL2piChannel::fillFinalState(), G4INCL::NKbToLpiChannel::fillFinalState(), G4INCL::NKbToNKb2piChannel::fillFinalState(), G4INCL::NKbToNKbChannel::fillFinalState(), G4INCL::NKbToNKbpiChannel::fillFinalState(), G4INCL::NKbToS2piChannel::fillFinalState(), G4INCL::NKbToSpiChannel::fillFinalState(), G4INCL::NKToNK2piChannel::fillFinalState(), G4INCL::NKToNKChannel::fillFinalState(), G4INCL::NKToNKpiChannel::fillFinalState(), G4INCL::NNEtaToMultiPionsChannel::fillFinalState(), G4INCL::NNOmegaToMultiPionsChannel::fillFinalState(), G4INCL::NNToMissingStrangenessChannel::fillFinalState(), G4INCL::NNToMultiPionsChannel::fillFinalState(), G4INCL::NNToNLK2piChannel::fillFinalState(), G4INCL::NNToNLKChannel::fillFinalState(), G4INCL::NNToNLKpiChannel::fillFinalState(), G4INCL::NNToNNEtaChannel::fillFinalState(), G4INCL::NNToNNKKbChannel::fillFinalState(), G4INCL::NNToNNOmegaChannel::fillFinalState(), G4INCL::NNToNSK2piChannel::fillFinalState(), G4INCL::NNToNSKChannel::fillFinalState(), G4INCL::NNToNSKpiChannel::fillFinalState(), G4INCL::NpiToMissingStrangenessChannel::fillFinalState(), G4INCL::NSToNLChannel::fillFinalState(), G4INCL::NSToNSChannel::fillFinalState(), G4INCL::OmegaNToPiNChannel::fillFinalState(), G4INCL::OmegaNToPiPiNChannel::fillFinalState(), G4INCL::PiNToMultiPionsChannel::fillFinalState(), G4INCL::PionResonanceDecayChannel::fillFinalState(), G4INCL::RecombinationChannel::fillFinalState(), G4INCL::SigmaZeroDecayChannel::fillFinalState(), G4INCL::StrangeAbsorbtionChannel::fillFinalState(), and G4INCL::Particle::Particle().

◆ setUncorrelatedMomentum()

void G4INCL::Particle::setUncorrelatedMomentum ( const G4double  p)
inlineinherited

◆ setZ()

void G4INCL::Cluster::setZ ( const G4int  Z)
inlineinherited

◆ shuffleStoredComponents()

ParticleList G4INCL::ProjectileRemnant::shuffleStoredComponents ( )
inlineprivate

Shuffle the list of stored projectile components.

Definition at line 228 of file G4INCLProjectileRemnant.hh.

228 {
229 ParticleList pL = getStoredComponents();
230 std::shuffle(pL.begin(), pL.end(), Random::getAdapter());
231 return pL;
232 }
ParticleList getStoredComponents() const
Adapter const & getAdapter()

References G4INCL::Random::getAdapter(), and getStoredComponents().

◆ storeComponents()

void G4INCL::ProjectileRemnant::storeComponents ( )
inline

Store the projectile components.

Definition at line 176 of file G4INCLProjectileRemnant.hh.

176 {
177 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
178 // Store the particles (needed for forced CN)
179 storedComponents[(*p)->getID()]=new Particle(**p);
180 }
181 }

References G4INCL::Particle::Particle(), G4INCL::Cluster::particles, and storedComponents.

Referenced by G4INCL::StandardPropagationModel::shootComposite().

◆ storeEnergyLevels()

void G4INCL::ProjectileRemnant::storeEnergyLevels ( )
inline

Store the energy levels.

Definition at line 189 of file G4INCLProjectileRemnant.hh.

189 {
190 EnergyLevels energies;
191
192 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
193 const G4double theCMEnergy = (*p)->getEnergy();
194 // Store the CM energy in the EnergyLevels map
195 theInitialEnergyLevels[(*p)->getID()] = theCMEnergy;
196 energies.push_back(theCMEnergy);
197 }
198
199 std::sort(energies.begin(), energies.end());
200// assert(energies.size()==(unsigned int)theA);
201 theGroundStateEnergies.resize(energies.size());
202 // Compute the partial sums of the CM energies -- they are our reference
203 // ground-state energies for any number of nucleons
204 std::partial_sum(energies.begin(), energies.end(), theGroundStateEnergies.begin());
205 }

References G4INCL::Cluster::particles, theGroundStateEnergies, and theInitialEnergyLevels.

Referenced by ProjectileRemnant().

◆ swap() [1/2]

void G4INCL::Cluster::swap ( Cluster rhs)
inlineinherited

Helper method for the assignment operator.

Definition at line 122 of file G4INCLCluster.hh.

122 {
123 Particle::swap(rhs);
124 std::swap(theExcitationEnergy, rhs.theExcitationEnergy);
125 std::swap(theSpin, rhs.theSpin);
126 // std::swap is overloaded by std::list and guaranteed to operate in
127 // constant time
128 std::swap(particles, rhs.particles);
129 std::swap(theParticleSampler, rhs.theParticleSampler);
130 }
void swap(Particle &rhs)
Helper method for the assignment operator.

References G4INCL::Cluster::particles, G4INCL::Particle::swap(), G4INCL::Cluster::theExcitationEnergy, G4INCL::Cluster::theParticleSampler, and G4INCL::Cluster::theSpin.

Referenced by G4INCL::Cluster::operator=().

◆ swap() [2/2]

void G4INCL::Particle::swap ( Particle rhs)
inlineprotectedinherited

Helper method for the assignment operator.

Definition at line 125 of file G4INCLParticle.hh.

125 {
126 std::swap(theZ, rhs.theZ);
127 std::swap(theA, rhs.theA);
128 std::swap(theS, rhs.theS);
129 std::swap(theParticipantType, rhs.theParticipantType);
130 std::swap(theType, rhs.theType);
131 if(rhs.thePropagationEnergy == &(rhs.theFrozenEnergy))
133 else
135 std::swap(theEnergy, rhs.theEnergy);
136 std::swap(theFrozenEnergy, rhs.theFrozenEnergy);
137 if(rhs.thePropagationMomentum == &(rhs.theFrozenMomentum))
139 else
141 std::swap(theMomentum, rhs.theMomentum);
142 std::swap(theFrozenMomentum, rhs.theFrozenMomentum);
143 std::swap(thePosition, rhs.thePosition);
144 std::swap(nCollisions, rhs.nCollisions);
145 std::swap(nDecays, rhs.nDecays);
146 std::swap(thePotentialEnergy, rhs.thePotentialEnergy);
147 // ID intentionally not swapped
148
149 std::swap(theHelicity, rhs.theHelicity);
150 std::swap(emissionTime, rhs.emissionTime);
151 std::swap(outOfWell, rhs.outOfWell);
152
153 std::swap(theMass, rhs.theMass);
154 std::swap(rpCorrelated, rhs.rpCorrelated);
155 std::swap(uncorrelatedMomentum, rhs.uncorrelatedMomentum);
156
157 std::swap(theParticleBias, rhs.theParticleBias);
158 std::swap(theBiasCollisionVector, rhs.theBiasCollisionVector);
159
160 }

References G4INCL::Particle::emissionTime, G4INCL::Particle::nCollisions, G4INCL::Particle::nDecays, G4INCL::Particle::outOfWell, G4INCL::Particle::rpCorrelated, G4INCL::Particle::theA, G4INCL::Particle::theBiasCollisionVector, G4INCL::Particle::theEnergy, G4INCL::Particle::theFrozenEnergy, G4INCL::Particle::theFrozenMomentum, G4INCL::Particle::theHelicity, G4INCL::Particle::theMass, G4INCL::Particle::theMomentum, G4INCL::Particle::theParticipantType, G4INCL::Particle::theParticleBias, G4INCL::Particle::thePosition, G4INCL::Particle::thePotentialEnergy, G4INCL::Particle::thePropagationEnergy, G4INCL::Particle::thePropagationMomentum, G4INCL::Particle::theS, G4INCL::Particle::theType, G4INCL::Particle::theZ, and G4INCL::Particle::uncorrelatedMomentum.

Referenced by G4INCL::Particle::operator=(), and G4INCL::Cluster::swap().

◆ thawPropagation()

void G4INCL::Particle::thawPropagation ( )
inlineinherited

Unfreeze particle propagation.

Make the particle use theMomentum and theEnergy for propagation. Call this method to restore the normal propagation if the freezePropagation() method has been called.

Definition at line 919 of file G4INCLParticle.hh.

References G4INCL::Particle::theEnergy, G4INCL::Particle::theMomentum, G4INCL::Particle::thePropagationEnergy, and G4INCL::Particle::thePropagationMomentum.

Referenced by G4INCL::ReflectionChannel::fillFinalState().

◆ updateClusterParameters()

void G4INCL::Cluster::updateClusterParameters ( )
inlineinherited

Set total cluster mass, energy, size, etc. from the particles.

Definition at line 191 of file G4INCLCluster.hh.

191 {
192 theEnergy = 0.;
194 theMomentum = ThreeVector();
195 thePosition = ThreeVector();
196 theA = 0;
197 theZ = 0;
198 theS = 0;
199 nCollisions = 0;
200 for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
201 theEnergy += (*p)->getEnergy();
202 thePotentialEnergy += (*p)->getPotentialEnergy();
203 theMomentum += (*p)->getMomentum();
204 thePosition += (*p)->getPosition();
205 theA += (*p)->getA();
206 theZ += (*p)->getZ();
207 theS += (*p)->getS();
208 nCollisions += (*p)->getNumberOfCollisions();
209 }
210 }

References G4INCL::Particle::nCollisions, G4INCL::Cluster::particles, G4INCL::Particle::theA, G4INCL::Particle::theEnergy, G4INCL::Particle::theMomentum, G4INCL::Particle::thePosition, G4INCL::Particle::thePotentialEnergy, G4INCL::Particle::theS, and G4INCL::Particle::theZ.

Referenced by G4INCL::Cluster::addParticles(), and G4INCL::Cluster::initializeParticles().

Field Documentation

◆ emissionTime

G4double G4INCL::Particle::emissionTime
privateinherited

◆ ID

long G4INCL::Particle::ID
protectedinherited

◆ INCLBiasVector

std::vector< G4double > G4INCL::Particle::INCLBiasVector
staticinherited

Time ordered vector of all bias applied.

/!\ Caution /!\ methods Assotiated to G4VectorCache<T> are: Push_back(…), operator[], Begin(), End(), Clear(), Size() and Pop_back()

Definition at line 1071 of file G4INCLParticle.hh.

Referenced by G4INCL::Particle::FillINCLBiasVector(), G4INCL::Particle::getBiasFromVector(), G4INCL::Particle::getTotalBias(), G4INCL::INCL::processEvent(), and G4INCL::Particle::setINCLBiasVector().

◆ nCollisions

G4int G4INCL::Particle::nCollisions
protectedinherited

◆ nDecays

G4int G4INCL::Particle::nDecays
protectedinherited

◆ nextBiasedCollisionID

G4ThreadLocal G4int G4INCL::Particle::nextBiasedCollisionID = 0
staticinherited

◆ nextID

G4ThreadLocal long G4INCL::Particle::nextID = 1
staticprivateinherited

Definition at line 1111 of file G4INCLParticle.hh.

Referenced by G4INCL::Particle::Particle().

◆ outOfWell

G4bool G4INCL::Particle::outOfWell
privateinherited

◆ particles

ParticleList G4INCL::Cluster::particles
protectedinherited

◆ rpCorrelated

G4bool G4INCL::Particle::rpCorrelated
protectedinherited

◆ storedComponents

std::map<long, Particle*> G4INCL::ProjectileRemnant::storedComponents
private

Return the stored energy of a given projectile component.

Stored projectile components

These particles are owned by the ProjectileRemnant.

Definition at line 275 of file G4INCLProjectileRemnant.hh.

Referenced by clearStoredComponents(), deleteStoredComponents(), getNumberStoredComponents(), getStoredComponents(), getStoredMomentum(), reset(), and storeComponents().

◆ theA

G4int G4INCL::Particle::theA
protectedinherited

◆ theBiasCollisionVector

std::vector<G4int> G4INCL::Particle::theBiasCollisionVector
privateinherited

Time ordered vector of all biased vertices on the particle path.

Definition at line 1108 of file G4INCLParticle.hh.

Referenced by G4INCL::Particle::getBiasCollisionVector(), G4INCL::Particle::Particle(), G4INCL::Particle::setBiasCollisionVector(), and G4INCL::Particle::swap().

◆ theEnergy

G4double G4INCL::Particle::theEnergy
protectedinherited

◆ theExcitationEnergy

G4double G4INCL::Cluster::theExcitationEnergy
protectedinherited

◆ theFrozenEnergy

G4double G4INCL::Particle::theFrozenEnergy
protectedinherited

◆ theFrozenMomentum

G4INCL::ThreeVector G4INCL::Particle::theFrozenMomentum
protectedinherited

◆ theGroundStateEnergies

EnergyLevels G4INCL::ProjectileRemnant::theGroundStateEnergies
private

Ground-state energies for any number of nucleons.

Definition at line 281 of file G4INCLProjectileRemnant.hh.

Referenced by clearEnergyLevels(), computeExcitationEnergy(), getGroundStateEnergies(), and storeEnergyLevels().

◆ theHelicity

G4double G4INCL::Particle::theHelicity
privateinherited

◆ theInitialEnergyLevels

EnergyLevelMap G4INCL::ProjectileRemnant::theInitialEnergyLevels
private

Initial energy levels of the projectile.

Definition at line 278 of file G4INCLProjectileRemnant.hh.

Referenced by clearEnergyLevels(), getPresentEnergyLevelsExcept(), getPresentEnergyLevelsWith(), reset(), and storeEnergyLevels().

◆ theMass

G4double G4INCL::Particle::theMass
privateinherited

◆ theMomentum

G4INCL::ThreeVector G4INCL::Particle::theMomentum
protectedinherited

◆ theNKaon

G4int G4INCL::Particle::theNKaon
protectedinherited

The number of Kaons inside the nucleus (update during the cascade)

Definition at line 1100 of file G4INCLParticle.hh.

Referenced by G4INCL::Nucleus::emitInsideKaon(), G4INCL::Particle::getNumberOfKaon(), and G4INCL::Particle::setNumberOfKaon().

◆ theParticipantType

ParticipantType G4INCL::Particle::theParticipantType
protectedinherited

◆ theParticleBias

G4double G4INCL::Particle::theParticleBias
protectedinherited

◆ theParticleSampler

ParticleSampler* G4INCL::Cluster::theParticleSampler
protectedinherited

◆ thePosition

G4INCL::ThreeVector G4INCL::Particle::thePosition
protectedinherited

◆ thePotentialEnergy

G4double G4INCL::Particle::thePotentialEnergy
protectedinherited

◆ thePropagationEnergy

G4double* G4INCL::Particle::thePropagationEnergy
protectedinherited

◆ thePropagationMomentum

G4INCL::ThreeVector* G4INCL::Particle::thePropagationMomentum
protectedinherited

◆ theS

G4int G4INCL::Particle::theS
protectedinherited

◆ theSpin

ThreeVector G4INCL::Cluster::theSpin
protectedinherited

◆ theType

G4INCL::ParticleType G4INCL::Particle::theType
protectedinherited

◆ theZ

G4int G4INCL::Particle::theZ
protectedinherited

◆ uncorrelatedMomentum

G4double G4INCL::Particle::uncorrelatedMomentum
protectedinherited

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