Geant4-11
Data Structures | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes
G4INCL::Nucleus Class Reference

#include <G4INCLNucleus.hh>

Inheritance diagram for G4INCL::Nucleus:
G4INCL::Cluster G4INCL::Particle

Data Structures

struct  ConservationBalance
 Struct for conservation laws. More...
 

Public Member Functions

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 applyFinalState (FinalState *)
 
void boost (const ThreeVector &aBoostVector)
 Boost the cluster with the indicated velocity. More...
 
ThreeVector boostVector () const
 
void clearParticles ()
 
ThreeVector computeCenterOfMass () const
 Compute the current center-of-mass position. More...
 
G4double computeExcitationEnergy () const
 Compute the current excitation energy. More...
 
void computeRecoilKinematics ()
 Compute the recoil momentum and spin of the nucleus. More...
 
G4double computeSeparationEnergyBalance () const
 Outgoing - incoming separation energies. More...
 
G4double computeTotalEnergy () const
 Compute the current total energy. More...
 
G4bool containsAntiKaon ()
 Returns true if the nucleus contains any anti Kaons. More...
 
G4bool containsDeltas ()
 Returns true if the nucleus contains any deltas. More...
 
G4bool containsEtas ()
 Returns true if the nucleus contains any etas. More...
 
G4bool containsKaon ()
 Returns true if the nucleus contains any Kaons. More...
 
G4bool containsLambda ()
 Returns true if the nucleus contains any Lambda. More...
 
G4bool containsOmegas ()
 Returns true if the nucleus contains any omegas. More...
 
G4bool containsSigma ()
 Returns true if the nucleus contains any Sigma. More...
 
G4bool decayInsideDeltas ()
 Force the decay of deltas inside the nucleus. More...
 
G4bool decayInsideStrangeParticles ()
 Force the transformation of strange particles into a Lambda;. More...
 
G4bool decayMe ()
 Force the phase-space decay of the Nucleus. More...
 
G4bool decayOutgoingClusters ()
 Force the decay of unstable outgoing clusters. More...
 
G4bool decayOutgoingDeltas ()
 Force the decay of outgoing deltas. More...
 
G4bool decayOutgoingNeutralKaon ()
 Force the transformation of outgoing Neutral Kaon into propation eigenstate. More...
 
G4bool decayOutgoingPionResonances (G4double timeThreshold)
 Force the decay of outgoing PionResonances (eta/omega). More...
 
G4bool decayOutgoingSigmaZero (G4double timeThreshold)
 Force the decay of outgoing Neutral Sigma. More...
 
void deleteParticles ()
 
void deleteProjectileRemnant ()
 Delete the projectile remnant. More...
 
std::string dump () const
 
G4bool emitInsideKaon ()
 Force emission of all Kaon inside the nucleus. More...
 
G4int emitInsideLambda ()
 Force emission of all Lambda (desexitation code with strangeness not implanted yet) More...
 
void emitInsidePions ()
 Force emission of all pions inside the nucleus. More...
 
void emitInsideStrangeParticles ()
 Force emission of all strange particles inside the nucleus. More...
 
void fillEventInfo (EventInfo *eventInfo)
 
void finalizeProjectileRemnant (const G4double emissionTime)
 Finalise the projectile remnant. More...
 
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...
 
ConservationBalance getConservationBalance (EventInfo const &theEventInfo, const G4bool afterRecoil) const
 Compute charge, mass, energy and momentum balance. More...
 
G4double getCosRPAngle () const
 Get the cosine of the angle between position and momentum. More...
 
NuclearDensity const * getDensity () const
 Getter for theDensity. 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 nucleus. More...
 
G4double getFrozenEnergy () const
 Get the frozen particle momentum. More...
 
ThreeVector getFrozenMomentum () const
 Get the frozen particle momentum. More...
 
G4double getHelicity ()
 
long getID () const
 
G4double getINCLMass () const
 Get the INCL particle mass. More...
 
const ThreeVectorgetIncomingAngularMomentum () const
 Get the incoming angular-momentum vector. More...
 
const ThreeVectorgetIncomingMomentum () const
 Get the incoming momentum vector. More...
 
G4int getInitialA () const
 
G4double getInitialEnergy () const
 Get the initial energy. More...
 
G4double getInitialInternalEnergy () const
 
G4int getInitialS () const
 
G4int getInitialZ () const
 
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 getNumberOfEnteringKaons () const
 
G4int getNumberOfEnteringNeutrons () const
 
G4int getNumberOfEnteringPions () const
 
G4int getNumberOfEnteringProtons () const
 
G4int getNumberOfKaon () const
 Number of Kaon inside de nucleus. 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
 
NuclearPotential::INuclearPotential const * getPotential () const
 Getter for thePotential. More...
 
G4double getPotentialEnergy () const
 Get the particle potential energy. More...
 
ProjectileRemnantgetProjectileRemnant () const
 Get the projectile remnant. 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...
 
StoregetStore () const
 
G4double getSurfaceRadius (Particle const *const particle) const
 Get the maximum allowed radius for a given particle. 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...
 
G4double getTransmissionBarrier (Particle const *const p)
 Get the transmission barrier. More...
 
ThreeVector getTransversePosition () const
 Transverse component of the position w.r.t. the momentum. More...
 
G4bool getTryCompoundNucleus ()
 
G4INCL::ParticleType getType () const
 
G4double getUniverseRadius () const
 Getter for theUniverseRadius. More...
 
G4int getZ () const
 Returns the charge number. More...
 
G4bool hasRemnant () const
 Does the nucleus give a cascade remnant? 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...
 
void initializeParticles ()
 
void insertParticle (Particle *p)
 Insert a new particle (e.g. a projectile) in the nucleus. 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 isEventTransparent () const
 Is the event transparent? 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 isNucleusNucleusCollision () const
 Is it a nucleus-nucleus collision? 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...
 
 Nucleus (const Nucleus &rhs)
 Dummy copy constructor to silence Coverity warning. More...
 
 Nucleus (G4int mass, G4int charge, G4int strangess, Config const *const conf, const G4double universeRadius=-1.)
 
Nucleusoperator= (const Nucleus &rhs)
 Dummy assignment operator to silence Coverity warning. More...
 
std::string print ()
 
std::string print () const
 
void propagate (G4double step)
 
void propagateParticles (G4double step)
 
void putParticlesOffShell ()
 Put the cluster components off shell. More...
 
void removeParticle (Particle *const p)
 Remove a particle from the cluster components. 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 setDensity (NuclearDensity const *const d)
 Setter for theDensity. 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 setIncomingAngularMomentum (const ThreeVector &j)
 Set the incoming angular-momentum vector. More...
 
void setIncomingMomentum (const ThreeVector &p)
 Set the incoming momentum vector. More...
 
void setInitialEnergy (const G4double e)
 Set the initial energy. More...
 
void setMass (G4double mass)
 
virtual void setMomentum (const G4INCL::ThreeVector &momentum)
 
void setNucleusNucleusCollision ()
 Set a nucleus-nucleus collision. More...
 
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 setParticleNucleusCollision ()
 Set a particle-nucleus collision. More...
 
void setPosition (const ThreeVector &position)
 Set the position of the cluster. More...
 
void setPotentialEnergy (G4double v)
 Set the particle potential energy. More...
 
void setProjectileRemnant (ProjectileRemnant *const c)
 Set the projectile remnant. 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 setStore (Store *str)
 
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 setUniverseRadius (const G4double universeRadius)
 Setter for theUniverseRadius. More...
 
void setZ (const G4int Z)
 Set the charge number of the cluster. 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...
 
void updatePotentialEnergy (Particle *p) const
 Update the particle potential energy. More...
 
void useFusionKinematics ()
 Adjust the kinematics for complete-fusion events. More...
 
virtual ~Nucleus ()
 

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

G4double computeDynamicalPotential ()
 Compute the dynamical cluster potential. More...
 
void computeOneNucleonRecoilKinematics ()
 Compute the recoil kinematics for a 1-nucleon remnant. More...
 

Private Attributes

G4double emissionTime
 
ThreeVector incomingAngularMomentum
 
ThreeVector incomingMomentum
 
ThreeVector initialCenterOfMass
 
G4double initialEnergy
 
G4double initialInternalEnergy
 
G4bool isNucleusNucleus
 true if running a nucleus-nucleus collision More...
 
G4bool outOfWell
 
G4int projectileA
 The mass number of the projectile. More...
 
G4int projectileS
 The strangeness number of the projectile. More...
 
G4int projectileZ
 The charge number of the projectile. More...
 
G4bool remnant
 
std::vector< G4inttheBiasCollisionVector
 Time ordered vector of all biased vertices on the particle path. More...
 
NuclearDensity const * theDensity
 Pointer to the NuclearDensity object. More...
 
G4double theHelicity
 
G4int theInitialA
 
G4int theInitialS
 
G4int theInitialZ
 
G4double theMass
 
G4int theNkaonminusInitial
 
G4int theNkaonplusInitial
 The number of entering kaons. More...
 
G4int theNnInitial
 The number of entering neutrons. More...
 
G4int theNpInitial
 The number of entering protons. More...
 
G4int theNpionminusInitial
 
G4int theNpionplusInitial
 The number of entering pions. More...
 
NuclearPotential::INuclearPotential const * thePotential
 Pointer to the NuclearPotential object. More...
 
ProjectileRemnanttheProjectileRemnant
 Pointer to the quasi-projectile. More...
 
StoretheStore
 
G4double theUniverseRadius
 The radius of the universe. More...
 
G4bool tryCN
 

Static Private Attributes

static G4ThreadLocal long nextID = 1
 

Detailed Description

Definition at line 65 of file G4INCLNucleus.hh.

Constructor & Destructor Documentation

◆ Nucleus() [1/2]

G4INCL::Nucleus::Nucleus ( G4int  mass,
G4int  charge,
G4int  strangess,
Config const *const  conf,
const G4double  universeRadius = -1. 
)

Definition at line 68 of file G4INCLNucleus.cc.

69 : Cluster(charge,mass,strangess,true),
70 theInitialZ(charge), theInitialA(mass), theInitialS(strangess),
75 incomingAngularMomentum(0.,0.,0.), incomingMomentum(0.,0.,0.),
76 initialCenterOfMass(0.,0.,0.),
77 remnant(true),
78 initialEnergy(0.),
79 tryCN(false),
80 theUniverseRadius(universeRadius),
81 isNucleusNucleus(false),
83 theDensity(NULL),
84 thePotential(NULL)
85 {
86 PotentialType potentialType;
87 G4bool pionPotential;
88 if(conf) {
89 potentialType = conf->getPotentialType();
90 pionPotential = conf->getPionPotential();
91 } else { // By default we don't use energy dependent
92 // potential. This is convenient for some tests.
93 potentialType = IsospinPotential;
94 pionPotential = true;
95 }
96
97 thePotential = NuclearPotential::createPotential(potentialType, theA, theZ, pionPotential);
98
101
103
106
109 theStore = new Store(conf);
110 }
bool G4bool
Definition: G4Types.hh:86
ParticleSampler * theParticleSampler
Cluster(const G4int Z, const G4int A, const G4int S, const G4bool createParticleSampler=true)
Standard Cluster constructor.
G4double getMaximumRadius() const
G4double getSeparationEnergy(const Particle *const p) const
Return the separation energy for a particle.
G4int theNkaonplusInitial
The number of entering kaons.
ThreeVector incomingAngularMomentum
G4int theNpionplusInitial
The number of entering pions.
G4int theNnInitial
The number of entering neutrons.
NuclearDensity const * theDensity
Pointer to the NuclearDensity object.
G4bool isNucleusNucleus
true if running a nucleus-nucleus collision
ProjectileRemnant * theProjectileRemnant
Pointer to the quasi-projectile.
G4int theNpionminusInitial
G4double initialEnergy
G4int theNkaonminusInitial
ThreeVector initialCenterOfMass
G4int theNpInitial
The number of entering protons.
ThreeVector incomingMomentum
NuclearPotential::INuclearPotential const * thePotential
Pointer to the NuclearPotential object.
G4double initialInternalEnergy
G4double theUniverseRadius
The radius of the universe.
void setPotential(NuclearPotential::INuclearPotential const *const p)
Setter for thePotential.
void setDensity(NuclearDensity const *const d)
Setter for theDensity.
NuclearDensity const * createDensity(const G4int A, const G4int Z, const G4int S)
INuclearPotential const * createPotential(const PotentialType type, const G4int theA, const G4int theZ, const G4bool pionPotential)
Create an INuclearPotential object.
void setNeutronSeparationEnergy(const G4double s)
Setter for protonSeparationEnergy.
void setProtonSeparationEnergy(const G4double s)
Setter for protonSeparationEnergy.

References G4INCL::NuclearDensityFactory::createDensity(), G4INCL::NuclearPotential::createPotential(), G4INCL::NuclearDensity::getMaximumRadius(), G4INCL::Config::getPionPotential(), G4INCL::Config::getPotentialType(), G4INCL::NuclearPotential::INuclearPotential::getSeparationEnergy(), G4INCL::IsospinPotential, G4INCL::Neutron, G4INCL::Proton, G4INCL::ParticleSampler::setDensity(), G4INCL::ParticleTable::setNeutronSeparationEnergy(), G4INCL::ParticleSampler::setPotential(), G4INCL::ParticleTable::setProtonSeparationEnergy(), G4INCL::Particle::theA, theDensity, G4INCL::Cluster::theParticleSampler, thePotential, G4INCL::Particle::theS, theStore, theUniverseRadius, and G4INCL::Particle::theZ.

◆ ~Nucleus()

G4INCL::Nucleus::~Nucleus ( )
virtual

Definition at line 112 of file G4INCLNucleus.cc.

112 {
113 delete theStore;
115 /* We don't delete the potential and the density here any more -- Factories
116 * are caching them
117 delete thePotential;
118 delete theDensity;*/
119 }
void deleteProjectileRemnant()
Delete the projectile remnant.

References deleteProjectileRemnant(), and theStore.

◆ Nucleus() [2/2]

G4INCL::Nucleus::Nucleus ( const Nucleus rhs)

Dummy copy constructor to silence Coverity warning.

Member Function Documentation

◆ 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 }
ParticleList particles
G4INCL::ThreeVector theMomentum
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 G4INCL::ProjectileRemnant::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 computeOneNucleonRecoilKinematics(), computeRecoilKinematics(), decayOutgoingPionResonances(), 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

◆ applyFinalState()

void G4INCL::Nucleus::applyFinalState ( FinalState finalstate)

Apply reaction final state information to the nucleus.

Definition at line 136 of file G4INCLNucleus.cc.

136 {
137 if(!finalstate) // do nothing if no final state was returned
138 return;
139
140 G4double totalEnergy = 0.0;
141
142 FinalStateValidity const validity = finalstate->getValidity();
143 if(validity == ValidFS) {
144
145 ParticleList const &created = finalstate->getCreatedParticles();
146 for(ParticleIter iter=created.begin(), e=created.end(); iter!=e; ++iter) {
147 theStore->add((*iter));
148 if(!(*iter)->isOutOfWell()) {
149 totalEnergy += (*iter)->getEnergy() - (*iter)->getPotentialEnergy();
150 }
151 }
152
153 ParticleList const &deleted = finalstate->getDestroyedParticles();
154 for(ParticleIter iter=deleted.begin(), e=deleted.end(); iter!=e; ++iter) {
156 }
157
158 ParticleList const &modified = finalstate->getModifiedParticles();
159 for(ParticleIter iter=modified.begin(), e=modified.end(); iter!=e; ++iter) {
161 totalEnergy += (*iter)->getEnergy() - (*iter)->getPotentialEnergy();
162 }
163
164 ParticleList const &out = finalstate->getOutgoingParticles();
165 for(ParticleIter iter=out.begin(), e=out.end(); iter!=e; ++iter) {
166 if((*iter)->isCluster()) {
167 Cluster *clusterOut = dynamic_cast<Cluster*>((*iter));
168// assert(clusterOut);
169#ifdef INCLXX_IN_GEANT4_MODE
170 if(!clusterOut)
171 continue;
172#endif
173 ParticleList const &components = clusterOut->getParticles();
174 for(ParticleIter in=components.begin(), end=components.end(); in!=end; ++in)
176 } else {
178 }
179 totalEnergy += (*iter)->getEnergy(); // No potential here because the particle is gone
180 theA -= (*iter)->getA();
181 theZ -= (*iter)->getZ();
182 theS -= (*iter)->getS();
183 theStore->addToOutgoing(*iter);
184 (*iter)->setEmissionTime(theStore->getBook().getCurrentTime());
185 }
186
187 ParticleList const &entering = finalstate->getEnteringParticles();
188 for(ParticleIter iter=entering.begin(), e=entering.end(); iter!=e; ++iter) {
189 insertParticle(*iter);
190 totalEnergy += (*iter)->getEnergy() - (*iter)->getPotentialEnergy();
191 }
192
193 // actually perform the removal of the scheduled avatars
195 } else if(validity == ParticleBelowFermiFS || validity == ParticleBelowZeroFS) {
196 INCL_DEBUG("A Particle is entering below the Fermi sea:" << '\n' << finalstate->print() << '\n');
197 tryCN = true;
198 ParticleList const &entering = finalstate->getEnteringParticles();
199 for(ParticleIter iter=entering.begin(), e=entering.end(); iter!=e; ++iter) {
200 insertParticle(*iter);
201 }
202 }
203
204 if(validity==ValidFS &&
205 std::abs(totalEnergy - finalstate->getTotalEnergyBeforeInteraction()) > 0.1) {
206 INCL_ERROR("Energy nonconservation! Energy at the beginning of the event = "
207 << finalstate->getTotalEnergyBeforeInteraction()
208 <<" and after interaction = "
209 << totalEnergy << '\n'
210 << finalstate->print());
211 }
212 }
#define INCL_DEBUG(x)
G4double getCurrentTime() const
Definition: G4INCLBook.hh:98
void insertParticle(Particle *p)
Insert a new particle (e.g. a projectile) in the nucleus.
void addToOutgoing(Particle *p)
add the particle to the outgoing particle list.
Definition: G4INCLStore.hh:190
void add(Particle *p)
Definition: G4INCLStore.cc:58
Book & getBook()
Definition: G4INCLStore.hh:259
void particleHasBeenDestroyed(Particle *const)
Definition: G4INCLStore.cc:181
void particleHasBeenUpdated(Particle *const)
Notify the Store about a particle update.
Definition: G4INCLStore.cc:127
void removeScheduledAvatars()
Remove avatars that have been scheduled.
Definition: G4INCLStore.cc:134
void particleHasBeenEjected(Particle *const)
Definition: G4INCLStore.cc:175
ParticleList::const_iterator ParticleIter
@ ParticleBelowZeroFS
@ ParticleBelowFermiFS

References G4INCL::Store::add(), G4INCL::Store::addToOutgoing(), G4INCL::Store::getBook(), G4INCL::FinalState::getCreatedParticles(), G4INCL::Book::getCurrentTime(), G4INCL::FinalState::getDestroyedParticles(), G4INCL::FinalState::getEnteringParticles(), G4INCL::FinalState::getModifiedParticles(), G4INCL::FinalState::getOutgoingParticles(), G4INCL::Cluster::getParticles(), G4INCL::FinalState::getTotalEnergyBeforeInteraction(), G4INCL::FinalState::getValidity(), INCL_DEBUG, INCL_ERROR, insertParticle(), G4INCL::ParticleBelowFermiFS, G4INCL::ParticleBelowZeroFS, G4INCL::Store::particleHasBeenDestroyed(), G4INCL::Store::particleHasBeenEjected(), G4INCL::Store::particleHasBeenUpdated(), G4INCL::FinalState::print(), G4INCL::Store::removeScheduledAvatars(), G4INCL::Particle::theA, G4INCL::Particle::theS, theStore, G4INCL::Particle::theZ, tryCN, and G4INCL::ValidFS.

Referenced by G4INCL::INCL::cascade(), decayInsideDeltas(), decayInsideStrangeParticles(), and G4INCL::INCL::makeCompoundNucleus().

◆ 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 G4INCL::ProjectileRemnant::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

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

◆ computeCenterOfMass()

ThreeVector G4INCL::Nucleus::computeCenterOfMass ( ) const

Compute the current center-of-mass position.

Returns
the center-of-mass position vector [fm].

Definition at line 268 of file G4INCLNucleus.cc.

268 {
269 ThreeVector cm(0.,0.,0.);
270 G4double totalMass = 0.0;
271 ParticleList const &inside = theStore->getParticles();
272 for(ParticleIter p=inside.begin(), e=inside.end(); p!=e; ++p) {
273 const G4double mass = (*p)->getMass();
274 cm += (*p)->getPosition() * mass;
275 totalMass += mass;
276 }
277 cm /= totalMass;
278 return cm;
279 }
static constexpr double cm
Definition: G4SIunits.hh:99
ParticleList const & getParticles() const
Definition: G4INCLStore.hh:253

References cm, G4INCL::Store::getParticles(), and theStore.

Referenced by computeRecoilKinematics().

◆ 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::Nucleus::computeExcitationEnergy ( ) const

Compute the current excitation energy.

Returns
the excitation energy [MeV]

Definition at line 281 of file G4INCLNucleus.cc.

281 {
282 const G4double totalEnergy = computeTotalEnergy();
283 const G4double separationEnergies = computeSeparationEnergyBalance();
284
285 return totalEnergy - initialInternalEnergy - separationEnergies;
286 }
G4double computeSeparationEnergyBalance() const
Outgoing - incoming separation energies.
G4double computeTotalEnergy() const
Compute the current total energy.

References computeSeparationEnergyBalance(), computeTotalEnergy(), and initialInternalEnergy.

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

◆ computeOneNucleonRecoilKinematics()

void G4INCL::Nucleus::computeOneNucleonRecoilKinematics ( )
private

Compute the recoil kinematics for a 1-nucleon remnant.

Puts the remnant nucleon on mass shell and tries to enforce approximate energy conservation by modifying the masses of the outgoing particles.

Definition at line 853 of file G4INCLNucleus.cc.

853 {
854 // We should be here only if the nucleus contains only one nucleon
855// assert(theStore->getParticles().size()==1);
856
857 // No excitation energy!
859
860 // Move the nucleon to the outgoing list
861 Particle *remN = theStore->getParticles().front();
862 theA -= remN->getA();
863 theZ -= remN->getZ();
864 theS -= remN->getS();
866 theStore->addToOutgoing(remN);
867 remN->setEmissionTime(theStore->getBook().getCurrentTime());
868
869 // Treat the special case of a remaining delta
870 if(remN->isDelta()) {
871 IAvatar *decay = new DecayAvatar(remN, 0.0, NULL);
872 FinalState *fs = decay->getFinalState();
873 // Eject the pion
874 ParticleList const &created = fs->getCreatedParticles();
875 for(ParticleIter j=created.begin(), e=created.end(); j!=e; ++j)
877 delete fs;
878 delete decay;
879 }
880
881 // Do different things depending on how many outgoing particles we have
882 ParticleList const &outgoing = theStore->getOutgoingParticles();
883 if(outgoing.size() == 2) {
884
885 INCL_DEBUG("Two particles in the outgoing channel, applying exact two-body kinematics" << '\n');
886
887 // Can apply exact 2-body kinematics here. Keep the CM emission angle of
888 // the first particle.
889 Particle *p1 = outgoing.front(), *p2 = outgoing.back();
890 const ThreeVector aBoostVector = incomingMomentum / initialEnergy;
891 // Boost to the initial CM
892 p1->boost(aBoostVector);
893 const G4double sqrts = std::sqrt(initialEnergy*initialEnergy - incomingMomentum.mag2());
894 const G4double pcm = KinematicsUtils::momentumInCM(sqrts, p1->getMass(), p2->getMass());
895 const G4double scale = pcm/(p1->getMomentum().mag());
896 // Reset the momenta
897 p1->setMomentum(p1->getMomentum()*scale);
898 p2->setMomentum(-p1->getMomentum());
899 p1->adjustEnergyFromMomentum();
900 p2->adjustEnergyFromMomentum();
901 // Unboost
902 p1->boost(-aBoostVector);
903 p2->boost(-aBoostVector);
904
905 } else {
906
907 INCL_DEBUG("Trying to adjust final-state momenta to achieve energy and momentum conservation" << '\n');
908
909 const G4int maxIterations=8;
910 G4double totalEnergy, energyScale;
911 G4double val=1.E+100, oldVal=1.E+100, oldOldVal=1.E+100, oldOldOldVal;
912 ThreeVector totalMomentum, deltaP;
913 std::vector<ThreeVector> minMomenta; // use it to store the particle momenta that minimize the merit function
914
915 // Reserve the vector size
916 minMomenta.reserve(outgoing.size());
917
918 // Compute the initial total momentum
919 totalMomentum.setX(0.0);
920 totalMomentum.setY(0.0);
921 totalMomentum.setZ(0.0);
922 for(ParticleIter i=outgoing.begin(), e=outgoing.end(); i!=e; ++i)
923 totalMomentum += (*i)->getMomentum();
924
925 // Compute the initial total energy
926 totalEnergy = 0.0;
927 for(ParticleIter i=outgoing.begin(), e=outgoing.end(); i!=e; ++i)
928 totalEnergy += (*i)->getEnergy();
929
930 // Iterative algorithm starts here:
931 for(G4int iterations=0; iterations < maxIterations; ++iterations) {
932
933 // Save the old merit-function values
934 oldOldOldVal = oldOldVal;
935 oldOldVal = oldVal;
936 oldVal = val;
937
938 if(iterations%2 == 0) {
939 INCL_DEBUG("Momentum step" << '\n');
940 // Momentum step: modify all the particle momenta
941 deltaP = incomingMomentum - totalMomentum;
942 G4double pOldTot = 0.0;
943 for(ParticleIter i=outgoing.begin(), e=outgoing.end(); i!=e; ++i)
944 pOldTot += (*i)->getMomentum().mag();
945 for(ParticleIter i=outgoing.begin(), e=outgoing.end(); i!=e; ++i) {
946 const ThreeVector mom = (*i)->getMomentum();
947 (*i)->setMomentum(mom + deltaP*mom.mag()/pOldTot);
948 (*i)->adjustEnergyFromMomentum();
949 }
950 } else {
951 INCL_DEBUG("Energy step" << '\n');
952 // Energy step: modify all the particle momenta
953 energyScale = initialEnergy/totalEnergy;
954 for(ParticleIter i=outgoing.begin(), e=outgoing.end(); i!=e; ++i) {
955 const ThreeVector mom = (*i)->getMomentum();
956 G4double pScale = ((*i)->getEnergy()*energyScale - std::pow((*i)->getMass(),2))/mom.mag2();
957 if(pScale>0) {
958 (*i)->setEnergy((*i)->getEnergy()*energyScale);
959 (*i)->adjustMomentumFromEnergy();
960 }
961 }
962 }
963
964 // Compute the current total momentum and energy
965 totalMomentum.setX(0.0);
966 totalMomentum.setY(0.0);
967 totalMomentum.setZ(0.0);
968 totalEnergy = 0.0;
969 for(ParticleIter i=outgoing.begin(), e=outgoing.end(); i!=e; ++i) {
970 totalMomentum += (*i)->getMomentum();
971 totalEnergy += (*i)->getEnergy();
972 }
973
974 // Merit factor
975 val = std::pow(totalEnergy - initialEnergy,2) +
976 0.25*(totalMomentum - incomingMomentum).mag2();
977 INCL_DEBUG("Merit function: val=" << val << ", oldVal=" << oldVal << ", oldOldVal=" << oldOldVal << ", oldOldOldVal=" << oldOldOldVal << '\n');
978
979 // Store the minimum
980 if(val < oldVal) {
981 INCL_DEBUG("New minimum found, storing the particle momenta" << '\n');
982 minMomenta.clear();
983 for(ParticleIter i=outgoing.begin(), e=outgoing.end(); i!=e; ++i)
984 minMomenta.push_back((*i)->getMomentum());
985 }
986
987 // Stop the algorithm if the search diverges
988 if(val > oldOldVal && oldVal > oldOldOldVal) {
989 INCL_DEBUG("Search is diverging, breaking out of the iteration loop: val=" << val << ", oldVal=" << oldVal << ", oldOldVal=" << oldOldVal << ", oldOldOldVal=" << oldOldOldVal << '\n');
990 break;
991 }
992 }
993
994 // We should have made at least one successful iteration here
995// assert(minMomenta.size()==outgoing.size());
996
997 // Apply the optimal momenta
998 INCL_DEBUG("Applying the solution" << '\n');
999 std::vector<ThreeVector>::const_iterator v = minMomenta.begin();
1000 for(ParticleIter i=outgoing.begin(), e=outgoing.end(); i!=e; ++i, ++v) {
1001 (*i)->setMomentum(*v);
1002 (*i)->adjustEnergyFromMomentum();
1003 INCL_DATABLOCK((*i)->print());
1004 }
1005
1006 }
1007
1008 }
#define INCL_DATABLOCK(x)
int G4int
Definition: G4Types.hh:85
G4double theExcitationEnergy
ParticleList const & getOutgoingParticles() const
Definition: G4INCLStore.hh:223
G4double mag() const
ParticleList decay(Cluster *const c)
Carries out a cluster decay.
G4double momentumInCM(Particle const *const p1, Particle const *const p2)
gives the momentum in the CM frame of two particles.
const G4int maxIterations
Maximum number of iterations for convergence.

References G4INCL::Store::addToOutgoing(), G4INCL::Particle::adjustEnergyFromMomentum(), G4INCL::Particle::boost(), G4INCL::ClusterDecay::decay(), G4INCL::Particle::getA(), G4INCL::Store::getBook(), G4INCL::FinalState::getCreatedParticles(), G4INCL::Book::getCurrentTime(), G4INCL::Particle::getMass(), G4INCL::Particle::getMomentum(), G4INCL::Store::getOutgoingParticles(), G4INCL::Store::getParticles(), G4INCL::Particle::getS(), G4INCL::Particle::getZ(), INCL_DATABLOCK, INCL_DEBUG, incomingMomentum, initialEnergy, G4INCL::Particle::isDelta(), G4INCL::ThreeVector::mag(), G4INCL::ThreeVector::mag2(), G4INCL::RootFinder::anonymous_namespace{G4INCLRootFinder.cc}::maxIterations, G4INCL::KinematicsUtils::momentumInCM(), G4INCL::Store::particleHasBeenEjected(), G4INCL::Particle::setEmissionTime(), G4INCL::Particle::setMomentum(), G4INCL::ThreeVector::setX(), G4INCL::ThreeVector::setY(), G4INCL::ThreeVector::setZ(), G4INCL::Particle::theA, G4INCL::Cluster::theExcitationEnergy, G4INCL::Particle::theS, theStore, and G4INCL::Particle::theZ.

Referenced by computeRecoilKinematics().

◆ computeRecoilKinematics()

void G4INCL::Nucleus::computeRecoilKinematics ( )

Compute the recoil momentum and spin of the nucleus.

Definition at line 235 of file G4INCLNucleus.cc.

235 {
236 // If the remnant consists of only one nucleon, we need to apply a special
237 // procedure to put it on mass shell.
238 if(theA==1) {
241 remnant=false;
242 return;
243 }
244
245 // Compute the recoil momentum and angular momentum
248
249 ParticleList const &outgoing = theStore->getOutgoingParticles();
250 for(ParticleIter p=outgoing.begin(), e=outgoing.end(); p!=e; ++p) {
251 theMomentum -= (*p)->getMomentum();
252 theSpin -= (*p)->getAngularMomentum();
253 }
257 }
258
259 // Subtract orbital angular momentum
262
265 remnant=true;
266 }
G4INCL::ThreeVector getAngularMomentum() const
Get the total angular momentum (orbital + spin)
ThreeVector theSpin
void emitInsidePions()
Force emission of all pions inside the nucleus.
ThreeVector computeCenterOfMass() const
Compute the current center-of-mass position.
void computeOneNucleonRecoilKinematics()
Compute the recoil kinematics for a 1-nucleon remnant.
void setMass(G4double mass)
G4double adjustEnergyFromMomentum()
Recompute the energy to match the momentum.
const G4INCL::ThreeVector & getMomentum() const
G4ThreadLocal NuclearMassFn getTableMass
Static pointer to the mass function for nuclei.

References G4INCL::Particle::adjustEnergyFromMomentum(), computeCenterOfMass(), computeOneNucleonRecoilKinematics(), emitInsidePions(), G4INCL::Cluster::getAngularMomentum(), G4INCL::Particle::getMomentum(), G4INCL::Store::getOutgoingParticles(), G4INCL::ParticleTable::getTableMass, incomingAngularMomentum, incomingMomentum, initialCenterOfMass, remnant, G4INCL::Particle::setMass(), G4INCL::Particle::theA, G4INCL::Cluster::theExcitationEnergy, G4INCL::Particle::theMomentum, G4INCL::Particle::thePosition, theProjectileRemnant, G4INCL::Particle::theS, G4INCL::Cluster::theSpin, theStore, and G4INCL::Particle::theZ.

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

◆ computeSeparationEnergyBalance()

G4double G4INCL::Nucleus::computeSeparationEnergyBalance ( ) const
inline

Outgoing - incoming separation energies.

Used by CDPP.

Definition at line 128 of file G4INCLNucleus.hh.

128 {
129 G4double S = 0.0;
130 ParticleList const &outgoing = theStore->getOutgoingParticles();
131 for(ParticleIter i=outgoing.begin(), e=outgoing.end(); i!=e; ++i) {
132 const ParticleType t = (*i)->getType();
133 switch(t) {
134 case Proton:
135 case Neutron:
136 case DeltaPlusPlus:
137 case DeltaPlus:
138 case DeltaZero:
139 case DeltaMinus:
140 case Lambda:
141 case PiPlus:
142 case PiMinus:
143 case KPlus:
144 case KMinus:
145 case KZero:
146 case KZeroBar:
147 case KShort:
148 case KLong:
149 case SigmaPlus:
150 case SigmaZero:
151 case SigmaMinus:
153 break;
154 case Composite:
155 S += (*i)->getZ() * thePotential->getSeparationEnergy(Proton)
156 + ((*i)->getA() + (*i)->getS() - (*i)->getZ()) * thePotential->getSeparationEnergy(Neutron)
157 - (*i)->getS() * thePotential->getSeparationEnergy(Lambda);
158 break;
159 default:
160 break;
161 }
162 }
163
170 return S;
171 }
G4double S(G4double temp)

References G4INCL::Composite, G4INCL::DeltaMinus, G4INCL::DeltaPlus, G4INCL::DeltaPlusPlus, G4INCL::DeltaZero, G4INCL::Store::getOutgoingParticles(), G4INCL::NuclearPotential::INuclearPotential::getSeparationEnergy(), G4INCL::KLong, G4INCL::KMinus, G4INCL::KPlus, G4INCL::KShort, G4INCL::KZero, G4INCL::KZeroBar, G4INCL::Lambda, G4INCL::Neutron, G4INCL::PiMinus, G4INCL::PiPlus, G4INCL::Proton, S(), G4INCL::SigmaMinus, G4INCL::SigmaPlus, G4INCL::SigmaZero, theNkaonminusInitial, theNkaonplusInitial, theNnInitial, theNpInitial, theNpionminusInitial, theNpionplusInitial, thePotential, and theStore.

Referenced by computeExcitationEnergy(), and G4INCL::CDPP::isBlocked().

◆ computeTotalEnergy()

G4double G4INCL::Nucleus::computeTotalEnergy ( ) const

Compute the current total energy.

Returns
the total energy [MeV]

Definition at line 218 of file G4INCLNucleus.cc.

218 {
219 G4double totalEnergy = 0.0;
220 ParticleList const &inside = theStore->getParticles();
221 for(ParticleIter p=inside.begin(), e=inside.end(); p!=e; ++p) {
222 if((*p)->isNucleon()) // Ugly: we should calculate everything using total energies!
223 totalEnergy += (*p)->getKineticEnergy() - (*p)->getPotentialEnergy();
224 else if((*p)->isResonance())
225 totalEnergy += (*p)->getEnergy() - (*p)->getPotentialEnergy() - ParticleTable::effectiveNucleonMass;
226 else if((*p)->isHyperon())
227 totalEnergy += (*p)->getEnergy() - (*p)->getPotentialEnergy() - ParticleTable::getRealMass((*p)->getType());
228 else
229 totalEnergy += (*p)->getEnergy() - (*p)->getPotentialEnergy();
230 }
231
232 return totalEnergy;
233 }
G4double getRealMass(const G4INCL::ParticleType t)
Get particle mass (in MeV/c^2)
const G4double effectiveNucleonMass

References G4INCL::ParticleTable::effectiveNucleonMass, G4INCL::Store::getParticles(), G4INCL::ParticleTable::getRealMass(), and theStore.

Referenced by computeExcitationEnergy(), and initializeParticles().

◆ containsAntiKaon()

G4bool G4INCL::Nucleus::containsAntiKaon ( )
inline

Returns true if the nucleus contains any anti Kaons.

Definition at line 295 of file G4INCLNucleus.hh.

295 {
296 ParticleList const &inside = theStore->getParticles();
297 for(ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i)
298 if((*i)->isAntiKaon()) return true;
299 return false;
300 }

References G4INCL::Store::getParticles(), and theStore.

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

◆ containsDeltas()

G4bool G4INCL::Nucleus::containsDeltas ( )
inline

Returns true if the nucleus contains any deltas.

Definition at line 287 of file G4INCLNucleus.hh.

287 {
288 ParticleList const &inside = theStore->getParticles();
289 for(ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i)
290 if((*i)->isDelta()) return true;
291 return false;
292 }

References G4INCL::Store::getParticles(), and theStore.

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

◆ containsEtas()

G4bool G4INCL::Nucleus::containsEtas ( )
inline

Returns true if the nucleus contains any etas.

Definition at line 327 of file G4INCLNucleus.hh.

327 {
328 ParticleList const &inside = theStore->getParticles();
329 for(ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i)
330 if((*i)->isEta()) return true;
331 return false;
332 }

References G4INCL::Store::getParticles(), and theStore.

◆ containsKaon()

G4bool G4INCL::Nucleus::containsKaon ( )
inline

Returns true if the nucleus contains any Kaons.

Definition at line 319 of file G4INCLNucleus.hh.

319 {
320 ParticleList const &inside = theStore->getParticles();
321 for(ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i)
322 if((*i)->isKaon()) return true;
323 return false;
324 }

References G4INCL::Store::getParticles(), and theStore.

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

◆ containsLambda()

G4bool G4INCL::Nucleus::containsLambda ( )
inline

Returns true if the nucleus contains any Lambda.

Definition at line 303 of file G4INCLNucleus.hh.

303 {
304 ParticleList const &inside = theStore->getParticles();
305 for(ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i)
306 if((*i)->isLambda()) return true;
307 return false;
308 }

References G4INCL::Store::getParticles(), and theStore.

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

◆ containsOmegas()

G4bool G4INCL::Nucleus::containsOmegas ( )
inline

Returns true if the nucleus contains any omegas.

Definition at line 335 of file G4INCLNucleus.hh.

335 {
336 ParticleList const &inside = theStore->getParticles();
337 for(ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i)
338 if((*i)->isOmega()) return true;
339 return false;
340 }

References G4INCL::Store::getParticles(), and theStore.

◆ containsSigma()

G4bool G4INCL::Nucleus::containsSigma ( )
inline

Returns true if the nucleus contains any Sigma.

Definition at line 311 of file G4INCLNucleus.hh.

311 {
312 ParticleList const &inside = theStore->getParticles();
313 for(ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i)
314 if((*i)->isSigma()) return true;
315 return false;
316 }

References G4INCL::Store::getParticles(), and theStore.

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

◆ decayInsideDeltas()

G4bool G4INCL::Nucleus::decayInsideDeltas ( )

Force the decay of deltas inside the nucleus.

Returns
true if any delta was forced to decay.

Definition at line 361 of file G4INCLNucleus.cc.

361 {
362 /* If there is a pion potential, do nothing (deltas will be counted as
363 * excitation energy).
364 * If, however, the remnant is unphysical (Z<0 or Z>A), force the deltas to
365 * decay and get rid of all the pions. In case you're wondering, you can
366 * end up with Z<0 or Z>A if the remnant contains more pi- than protons or
367 * more pi+ than neutrons, respectively.
368 */
369 const G4bool unphysicalRemnant = (theZ<0 || theZ>theA);
370 if(thePotential->hasPionPotential() && !unphysicalRemnant)
371 return false;
372
373 // Build a list of deltas (avoid modifying the list you are iterating on).
374 ParticleList const &inside = theStore->getParticles();
375 ParticleList deltas;
376 for(ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i)
377 if((*i)->isDelta()) deltas.push_back((*i));
378
379 // Loop over the deltas, make them decay
380 for(ParticleIter i=deltas.begin(), e=deltas.end(); i!=e; ++i) {
381 INCL_DEBUG("Decay inside delta particle:" << '\n'
382 << (*i)->print() << '\n');
383 // Create a forced-decay avatar. Note the last boolean parameter. Note
384 // also that if the remnant is unphysical we more or less explicitly give
385 // up energy conservation and CDPP by passing a NULL pointer for the
386 // nucleus.
387 IAvatar *decay;
388 if(unphysicalRemnant) {
389 INCL_WARN("Forcing delta decay inside an unphysical remnant (A=" << theA
390 << ", Z=" << theZ << "). Might lead to energy-violation warnings."
391 << '\n');
392 decay = new DecayAvatar((*i), 0.0, NULL, true);
393 } else
394 decay = new DecayAvatar((*i), 0.0, this, true);
395 FinalState *fs = decay->getFinalState();
396
397 // The pion can be ejected only if we managed to satisfy energy
398 // conservation and if pion emission does not lead to negative excitation
399 // energies.
400 if(fs->getValidity()==ValidFS) {
401 // Apply the final state to the nucleus
402 applyFinalState(fs);
403 }
404 delete fs;
405 delete decay;
406 }
407
408 // If the remnant is unphysical, emit all the pions
409 if(unphysicalRemnant) {
410 INCL_DEBUG("Remnant is unphysical: Z=" << theZ << ", A=" << theA << ", emitting all the pions" << '\n');
412 }
413
414 return true;
415 }
#define INCL_WARN(x)
G4bool hasPionPotential() const
Do we have a pion potential?
void applyFinalState(FinalState *)

References applyFinalState(), G4INCL::ClusterDecay::decay(), emitInsidePions(), G4INCL::Store::getParticles(), G4INCL::FinalState::getValidity(), G4INCL::NuclearPotential::INuclearPotential::hasPionPotential(), INCL_DEBUG, INCL_WARN, G4INCL::Particle::theA, thePotential, theStore, G4INCL::Particle::theZ, and G4INCL::ValidFS.

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

◆ decayInsideStrangeParticles()

G4bool G4INCL::Nucleus::decayInsideStrangeParticles ( )

Force the transformation of strange particles into a Lambda;.

Returns
true if any strange particles was forced to absorb.

Definition at line 417 of file G4INCLNucleus.cc.

417 {
418
419 /* Transform each strange particles into a lambda
420 * Every Kaon (KPlus and KZero) are emited
421 */
422 const G4bool unphysicalRemnant = (theZ<0 || theZ>theA);
423 if(unphysicalRemnant){
425 INCL_WARN("Remnant is unphysical: Z=" << theZ << ", A=" << theA << ", too much strange particles? -> all emit" << '\n');
426 return false;
427 }
428
429 /* Build a list of particles with a strangeness == -1 except Lambda,
430 * and two other one for proton and neutron
431 */
432 ParticleList const &inside = theStore->getParticles();
433 ParticleList stranges;
434 ParticleList protons;
435 ParticleList neutrons;
436 for(ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i){
437 if((*i)->isSigma() || (*i)->isAntiKaon()) stranges.push_back((*i));
438 else if((*i)->isNucleon() && (*i)->getZ() == 1) protons.push_back((*i));
439 else if((*i)->isNucleon() && (*i)->getZ() == 0) neutrons.push_back((*i));
440 }
441
442 if((stranges.size() > protons.size()) || (stranges.size() > neutrons.size())){
443 INCL_WARN("Remnant is unphysical: Nproton=" << protons.size() << ", Nneutron=" << neutrons.size() << ", Strange particles : " << stranges.size() << '\n');
445 return false;
446 }
447
448 // Loop over the strange particles, make them absorbe
449 ParticleIter protonIter = protons.begin();
450 ParticleIter neutronIter = neutrons.begin();
451 for(ParticleIter i=stranges.begin(), e=stranges.end(); i!=e; ++i) {
452 INCL_DEBUG("Absorbe inside strange particles:" << '\n'
453 << (*i)->print() << '\n');
454 IAvatar *decay;
455 if((*i)->getType() == SigmaMinus){
456 decay = new DecayAvatar((*protonIter), (*i), 0.0, this, true);
457 ++protonIter;
458 }
459 else if((*i)->getType() == SigmaPlus){
460 decay = new DecayAvatar((*neutronIter), (*i), 0.0, this, true);
461 ++neutronIter;
462 }
463 else if(Random::shoot()*(protons.size() + neutrons.size()) < protons.size()){
464 decay = new DecayAvatar((*protonIter), (*i), 0.0, this, true);
465 ++protonIter;
466 }
467 else {
468 decay = new DecayAvatar((*neutronIter), (*i), 0.0, this, true);
469 ++neutronIter;
470 }
471 FinalState *fs = decay->getFinalState();
472 applyFinalState(fs);
473 delete fs;
474 delete decay;
475 }
476
477 return true;
478 }
void emitInsideStrangeParticles()
Force emission of all strange particles inside the nucleus.
G4double shoot()
Definition: G4INCLRandom.cc:93

References applyFinalState(), G4INCL::ClusterDecay::decay(), emitInsideStrangeParticles(), G4INCL::Store::getParticles(), INCL_DEBUG, INCL_WARN, G4INCL::Random::shoot(), G4INCL::SigmaMinus, G4INCL::SigmaPlus, G4INCL::Particle::theA, theStore, and G4INCL::Particle::theZ.

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

◆ decayMe()

G4bool G4INCL::Nucleus::decayMe ( )

Force the phase-space decay of the Nucleus.

Only applied if Z==0 or N==0.

Returns
true if the nucleus was forced to decay.

Definition at line 656 of file G4INCLNucleus.cc.

656 {
657 // Do the phase-space decay only if Z=0 or N=0
658 if(theA<=1 || (theZ!=0 && (theA+theS)!=theZ))
659 return false;
660
661 ParticleList decayProducts = ClusterDecay::decay(this);
662 for(ParticleIter j=decayProducts.begin(), e=decayProducts.end(); j!=e; ++j){
663 (*j)->setBiasCollisionVector(this->getBiasCollisionVector());
665 }
666
667 return true;
668 }
std::vector< G4int > getBiasCollisionVector() const
Get the vector list of biased vertices on the particle path.

References G4INCL::Store::addToOutgoing(), G4INCL::ClusterDecay::decay(), G4INCL::Particle::getBiasCollisionVector(), G4INCL::Particle::theA, G4INCL::Particle::theS, theStore, and G4INCL::Particle::theZ.

Referenced by G4INCL::INCL::makeCompoundNucleus(), and G4INCL::INCL::postCascade().

◆ decayOutgoingClusters()

G4bool G4INCL::Nucleus::decayOutgoingClusters ( )

Force the decay of unstable outgoing clusters.

Returns
true if any cluster was forced to decay.

Definition at line 631 of file G4INCLNucleus.cc.

631 {
632 ParticleList const &out = theStore->getOutgoingParticles();
633 ParticleList clusters;
634 for(ParticleIter i=out.begin(), e=out.end(); i!=e; ++i) {
635 if((*i)->isCluster()) clusters.push_back((*i));
636 }
637 if(clusters.empty()) return false;
638
639 for(ParticleIter i=clusters.begin(), e=clusters.end(); i!=e; ++i) {
640 Cluster *cluster = dynamic_cast<Cluster*>(*i); // Can't avoid using a cast here
641// assert(cluster);
642#ifdef INCLXX_IN_GEANT4_MODE
643 if(!cluster)
644 continue;
645#endif
646 cluster->deleteParticles(); // Don't need them
647 ParticleList decayProducts = ClusterDecay::decay(cluster);
648 for(ParticleIter j=decayProducts.begin(), end=decayProducts.end(); j!=end; ++j){
649 (*j)->setBiasCollisionVector(cluster->getBiasCollisionVector());
651 }
652 }
653 return true;
654 }

References G4INCL::Store::addToOutgoing(), G4INCL::ClusterDecay::decay(), G4INCL::Cluster::deleteParticles(), G4INCL::Particle::getBiasCollisionVector(), G4INCL::Store::getOutgoingParticles(), and theStore.

Referenced by G4INCL::INCL::makeCompoundNucleus(), and G4INCL::INCL::postCascade().

◆ decayOutgoingDeltas()

G4bool G4INCL::Nucleus::decayOutgoingDeltas ( )

Force the decay of outgoing deltas.

Returns
true if any delta was forced to decay.

Definition at line 308 of file G4INCLNucleus.cc.

308 {
309 ParticleList const &out = theStore->getOutgoingParticles();
310 ParticleList deltas;
311 for(ParticleIter i=out.begin(), e=out.end(); i!=e; ++i) {
312 if((*i)->isDelta()) deltas.push_back((*i));
313 }
314 if(deltas.empty()) return false;
315
316 for(ParticleIter i=deltas.begin(), e=deltas.end(); i!=e; ++i) {
317 INCL_DEBUG("Decay outgoing delta particle:" << '\n'
318 << (*i)->print() << '\n');
319 const ThreeVector beta = -(*i)->boostVector();
320 const G4double deltaMass = (*i)->getMass();
321
322 // Set the delta momentum to zero and sample the decay in the CM frame.
323 // This makes life simpler if we are using real particle masses.
324 (*i)->setMomentum(ThreeVector());
325 (*i)->setEnergy((*i)->getMass());
326
327 // Use a DecayAvatar
328 IAvatar *decay = new DecayAvatar((*i), 0.0, NULL);
329 FinalState *fs = decay->getFinalState();
330 Particle * const pion = fs->getCreatedParticles().front();
331 Particle * const nucleon = fs->getModifiedParticles().front();
332
333 // Adjust the decay momentum if we are using the real masses
334 const G4double decayMomentum = KinematicsUtils::momentumInCM(deltaMass,
335 nucleon->getTableMass(),
336 pion->getTableMass());
337 ThreeVector newMomentum = pion->getMomentum();
338 newMomentum *= decayMomentum / newMomentum.mag();
339
340 pion->setTableMass();
341 pion->setMomentum(newMomentum);
342 pion->adjustEnergyFromMomentum();
343 pion->setEmissionTime(nucleon->getEmissionTime());
344 pion->boost(beta);
345 pion->setBiasCollisionVector(nucleon->getBiasCollisionVector());
346
347 nucleon->setTableMass();
348 nucleon->setMomentum(-newMomentum);
349 nucleon->adjustEnergyFromMomentum();
350 nucleon->boost(beta);
351
353
354 delete fs;
355 delete decay;
356 }
357
358 return true;
359 }
G4bool pion(G4int ityp)
G4bool nucleon(G4int ityp)

References G4INCL::Store::addToOutgoing(), anonymous_namespace{G4PionRadiativeDecayChannel.cc}::beta, G4INCL::ClusterDecay::decay(), G4INCL::FinalState::getCreatedParticles(), G4INCL::FinalState::getModifiedParticles(), G4INCL::Store::getOutgoingParticles(), INCL_DEBUG, G4INCL::ThreeVector::mag(), G4INCL::KinematicsUtils::momentumInCM(), G4InuclParticleNames::nucleon(), G4InuclParticleNames::pion(), and theStore.

Referenced by G4INCL::INCL::makeCompoundNucleus(), and G4INCL::INCL::postCascade().

◆ decayOutgoingNeutralKaon()

G4bool G4INCL::Nucleus::decayOutgoingNeutralKaon ( )

Force the transformation of outgoing Neutral Kaon into propation eigenstate.

Returns
true if any kaon was forced to decay.

Definition at line 608 of file G4INCLNucleus.cc.

608 {
609 ParticleList const &out = theStore->getOutgoingParticles();
610 ParticleList neutralkaon;
611 for(ParticleIter i=out.begin(), e=out.end(); i!=e; ++i) {
612 if((*i)->getType() == KZero || (*i)->getType() == KZeroBar) neutralkaon.push_back((*i));
613 }
614 if(neutralkaon.empty()) return false;
615
616 for(ParticleIter i=neutralkaon.begin(), e=neutralkaon.end(); i!=e; ++i) {
617 INCL_DEBUG("Transform outgoing neutral kaon:" << '\n'
618 << (*i)->print() << '\n');
619
620 // Use a DecayAvatar
621 IAvatar *decay = new DecayAvatar((*i), 0.0, NULL);
622 FinalState *fs = decay->getFinalState();
623
624 delete fs;
625 delete decay;
626 }
627
628 return true;
629 }

References G4INCL::ClusterDecay::decay(), G4INCL::Store::getOutgoingParticles(), INCL_DEBUG, G4INCL::KZero, G4INCL::KZeroBar, and theStore.

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

◆ decayOutgoingPionResonances()

G4bool G4INCL::Nucleus::decayOutgoingPionResonances ( G4double  timeThreshold)

Force the decay of outgoing PionResonances (eta/omega).

Returns
true if any eta was forced to decay.

Definition at line 480 of file G4INCLNucleus.cc.

480 {
481 ParticleList const &out = theStore->getOutgoingParticles();
482 ParticleList pionResonances;
483 for(ParticleIter i=out.begin(), e=out.end(); i!=e; ++i) {
484// if((*i)->isEta() || (*i)->isOmega()) pionResonances.push_back((*i));
485 if(((*i)->isEta() && timeThreshold > ParticleTable::getWidth(Eta)) || ((*i)->isOmega() && timeThreshold > ParticleTable::getWidth(Omega))) pionResonances.push_back((*i));
486 }
487 if(pionResonances.empty()) return false;
488
489 for(ParticleIter i=pionResonances.begin(), e=pionResonances.end(); i!=e; ++i) {
490 INCL_DEBUG("Decay outgoing pionResonances particle:" << '\n'
491 << (*i)->print() << '\n');
492 const ThreeVector beta = -(*i)->boostVector();
493 const G4double pionResonanceMass = (*i)->getMass();
494
495 // Set the pionResonance momentum to zero and sample the decay in the CM frame.
496 // This makes life simpler if we are using real particle masses.
497 (*i)->setMomentum(ThreeVector());
498 (*i)->setEnergy((*i)->getMass());
499
500 // Use a DecayAvatar
501 IAvatar *decay = new DecayAvatar((*i), 0.0, NULL);
502 FinalState *fs = decay->getFinalState();
503
504 Particle * const theModifiedParticle = fs->getModifiedParticles().front();
505 ParticleList const &created = fs->getCreatedParticles();
506 Particle * const theCreatedParticle1 = created.front();
507
508 if (created.size() == 1) {
509
510 // Adjust the decay momentum if we are using the real masses
511 const G4double decayMomentum = KinematicsUtils::momentumInCM(pionResonanceMass,theModifiedParticle->getTableMass(),theCreatedParticle1->getTableMass());
512 ThreeVector newMomentum = theCreatedParticle1->getMomentum();
513 newMomentum *= decayMomentum / newMomentum.mag();
514
515 theCreatedParticle1->setTableMass();
516 theCreatedParticle1->setMomentum(newMomentum);
517 theCreatedParticle1->adjustEnergyFromMomentum();
518 //theCreatedParticle1->setEmissionTime(nucleon->getEmissionTime());
519 theCreatedParticle1->boost(beta);
520 theCreatedParticle1->setBiasCollisionVector(theModifiedParticle->getBiasCollisionVector());
521
522 theModifiedParticle->setTableMass();
523 theModifiedParticle->setMomentum(-newMomentum);
524 theModifiedParticle->adjustEnergyFromMomentum();
525 theModifiedParticle->boost(beta);
526
527 theStore->addToOutgoing(theCreatedParticle1);
528 }
529 else if (created.size() == 2) {
530 Particle * const theCreatedParticle2 = created.back();
531
532 theCreatedParticle1->boost(beta);
533 theCreatedParticle1->setBiasCollisionVector(theModifiedParticle->getBiasCollisionVector());
534 theCreatedParticle2->boost(beta);
535 theCreatedParticle2->setBiasCollisionVector(theModifiedParticle->getBiasCollisionVector());
536 theModifiedParticle->boost(beta);
537
538 theStore->addToOutgoing(theCreatedParticle1);
539 theStore->addToOutgoing(theCreatedParticle2);
540 }
541 else {
542 INCL_ERROR("Wrong number (< 2) of created particles during the decay of a pion resonance");
543 }
544 delete fs;
545 delete decay;
546 }
547
548 return true;
549 }
G4double getWidth(const ParticleType t)
Get particle width (in s)

References G4INCL::Store::addToOutgoing(), G4INCL::Particle::adjustEnergyFromMomentum(), anonymous_namespace{G4PionRadiativeDecayChannel.cc}::beta, G4INCL::Particle::boost(), G4INCL::ClusterDecay::decay(), G4INCL::Eta, G4INCL::Particle::getBiasCollisionVector(), G4INCL::FinalState::getCreatedParticles(), G4INCL::FinalState::getModifiedParticles(), G4INCL::Particle::getMomentum(), G4INCL::Store::getOutgoingParticles(), G4INCL::Particle::getTableMass(), G4INCL::ParticleTable::getWidth(), INCL_DEBUG, INCL_ERROR, G4INCL::ThreeVector::mag(), G4INCL::KinematicsUtils::momentumInCM(), G4INCL::Omega, G4INCL::Particle::setBiasCollisionVector(), G4INCL::Particle::setMomentum(), G4INCL::Particle::setTableMass(), and theStore.

Referenced by G4INCL::INCL::makeCompoundNucleus(), and G4INCL::INCL::postCascade().

◆ decayOutgoingSigmaZero()

G4bool G4INCL::Nucleus::decayOutgoingSigmaZero ( G4double  timeThreshold)

Force the decay of outgoing Neutral Sigma.

Returns
true if any Sigma was forced to decay.

Definition at line 551 of file G4INCLNucleus.cc.

551 {
552 ParticleList const &out = theStore->getOutgoingParticles();
553 ParticleList neutralsigma;
554 for(ParticleIter i=out.begin(), e=out.end(); i!=e; ++i) {
555 if((*i)->getType() == SigmaZero && timeThreshold > ParticleTable::getWidth(SigmaZero)) neutralsigma.push_back((*i));
556 }
557 if(neutralsigma.empty()) return false;
558
559 for(ParticleIter i=neutralsigma.begin(), e=neutralsigma.end(); i!=e; ++i) {
560 INCL_DEBUG("Decay outgoing neutral sigma:" << '\n'
561 << (*i)->print() << '\n');
562 const ThreeVector beta = -(*i)->boostVector();
563 const G4double neutralsigmaMass = (*i)->getMass();
564
565 // Set the neutral sigma momentum to zero and sample the decay in the CM frame.
566 // This makes life simpler if we are using real particle masses.
567 (*i)->setMomentum(ThreeVector());
568 (*i)->setEnergy((*i)->getMass());
569
570 // Use a DecayAvatar
571 IAvatar *decay = new DecayAvatar((*i), 0.0, NULL);
572 FinalState *fs = decay->getFinalState();
573
574 Particle * const theModifiedParticle = fs->getModifiedParticles().front();
575 ParticleList const &created = fs->getCreatedParticles();
576 Particle * const theCreatedParticle = created.front();
577
578 if (created.size() == 1) {
579
580 // Adjust the decay momentum if we are using the real masses
581 const G4double decayMomentum = KinematicsUtils::momentumInCM(neutralsigmaMass,theModifiedParticle->getTableMass(),theCreatedParticle->getTableMass());
582 ThreeVector newMomentum = theCreatedParticle->getMomentum();
583 newMomentum *= decayMomentum / newMomentum.mag();
584
585 theCreatedParticle->setTableMass();
586 theCreatedParticle->setMomentum(newMomentum);
587 theCreatedParticle->adjustEnergyFromMomentum();
588 theCreatedParticle->boost(beta);
589 theCreatedParticle->setBiasCollisionVector(theModifiedParticle->getBiasCollisionVector());
590
591 theModifiedParticle->setTableMass();
592 theModifiedParticle->setMomentum(-newMomentum);
593 theModifiedParticle->adjustEnergyFromMomentum();
594 theModifiedParticle->boost(beta);
595
596 theStore->addToOutgoing(theCreatedParticle);
597 }
598 else {
599 INCL_ERROR("Wrong number (!= 1) of created particles during the decay of a sigma zero");
600 }
601 delete fs;
602 delete decay;
603 }
604
605 return true;
606 }

References G4INCL::Store::addToOutgoing(), G4INCL::Particle::adjustEnergyFromMomentum(), anonymous_namespace{G4PionRadiativeDecayChannel.cc}::beta, G4INCL::Particle::boost(), G4INCL::ClusterDecay::decay(), G4INCL::Particle::getBiasCollisionVector(), G4INCL::FinalState::getCreatedParticles(), G4INCL::FinalState::getModifiedParticles(), G4INCL::Particle::getMomentum(), G4INCL::Store::getOutgoingParticles(), G4INCL::Particle::getTableMass(), G4INCL::ParticleTable::getWidth(), INCL_DEBUG, INCL_ERROR, G4INCL::ThreeVector::mag(), G4INCL::KinematicsUtils::momentumInCM(), G4INCL::Particle::setBiasCollisionVector(), G4INCL::Particle::setMomentum(), G4INCL::Particle::setTableMass(), G4INCL::SigmaZero, and theStore.

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

◆ deleteParticles()

void G4INCL::Cluster::deleteParticles ( )
inlineinherited

◆ deleteProjectileRemnant()

void G4INCL::Nucleus::deleteProjectileRemnant ( )
inline

Delete the projectile remnant.

Definition at line 442 of file G4INCLNucleus.hh.

442 {
445 }

References theProjectileRemnant.

Referenced by ~Nucleus().

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

◆ emitInsideKaon()

G4bool G4INCL::Nucleus::emitInsideKaon ( )

Force emission of all Kaon inside the nucleus.

Definition at line 796 of file G4INCLNucleus.cc.

796 {
797 /* Forcing emissions of all Kaon (not antiKaons) in the nucleus.
798 * This probably violates energy conservation
799 * (although the computation of the recoil kinematics
800 * might sweep this under the carpet).
801 */
802 INCL_DEBUG("Forcing emissions of all Kaon in the nucleus." << '\n');
803
804 // Emit the Kaon with this kinetic energy (not supposed to append
805 const G4double tinyEnergy = 0.1; // MeV
806
807 // Push out the emitted kaon
808 ParticleList const &inside = theStore->getParticles();
809 ParticleList toEject;
810 for(ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i) {
811 if((*i)->isKaon()) {
812 Particle * const theKaon = *i;
813 INCL_DEBUG("Forcing emission of the following particle: "
814 << theKaon->print() << '\n');
815 theKaon->setEmissionTime(theStore->getBook().getCurrentTime());
816 // Correction for real masses
817 const G4double theQValueCorrection = theKaon->getEmissionQValueCorrection(theA,theZ,theS);
818 const G4double kineticEnergyOutside = theKaon->getKineticEnergy() - theKaon->getPotentialEnergy() + theQValueCorrection;
819 theKaon->setTableMass();
820 if(kineticEnergyOutside > 0.0)
821 theKaon->setEnergy(theKaon->getMass()+kineticEnergyOutside);
822 else
823 theKaon->setEnergy(theKaon->getMass()+tinyEnergy);
824 theKaon->adjustMomentumFromEnergy();
825 theKaon->setPotentialEnergy(0.);
826 theZ -= theKaon->getZ();
827 theS -= theKaon->getS();
828 toEject.push_back(theKaon);
829 }
830 }
831 for(ParticleIter i=toEject.begin(), e=toEject.end(); i!=e; ++i) {
834 (*i)->setParticleBias(Particle::getTotalBias());
835 }
836 theNKaon -= 1;
837 return toEject.size() != 0;
838 }
G4int theNKaon
The number of Kaons inside the nucleus (update during the cascade)
static G4double getTotalBias()
General bias vector function.

References G4INCL::Store::addToOutgoing(), G4INCL::Particle::adjustMomentumFromEnergy(), G4INCL::Store::getBook(), G4INCL::Book::getCurrentTime(), G4INCL::Particle::getEmissionQValueCorrection(), G4INCL::Particle::getKineticEnergy(), G4INCL::Particle::getMass(), G4INCL::Store::getParticles(), G4INCL::Particle::getPotentialEnergy(), G4INCL::Particle::getS(), G4INCL::Particle::getTotalBias(), G4INCL::Particle::getZ(), INCL_DEBUG, G4INCL::Store::particleHasBeenEjected(), G4INCL::Particle::print(), G4INCL::Particle::setEmissionTime(), G4INCL::Particle::setEnergy(), G4INCL::Particle::setPotentialEnergy(), G4INCL::Particle::setTableMass(), G4INCL::Particle::theA, G4INCL::Particle::theNKaon, G4INCL::Particle::theS, theStore, and G4INCL::Particle::theZ.

Referenced by G4INCL::INCL::makeCompoundNucleus(), and G4INCL::INCL::postCascade().

◆ emitInsideLambda()

G4int G4INCL::Nucleus::emitInsideLambda ( )

Force emission of all Lambda (desexitation code with strangeness not implanted yet)

Definition at line 753 of file G4INCLNucleus.cc.

753 {
754 /* Forcing emissions of all Lambda in the nucleus.
755 * This probably violates energy conservation
756 * (although the computation of the recoil kinematics
757 * might sweep this under the carpet).
758 */
759 INCL_DEBUG("Forcing emissions of all Lambda in the nucleus." << '\n');
760
761 // Emit the Lambda with this kinetic energy
762 const G4double tinyEnergy = 0.1; // MeV
763
764 // Push out the emitted Lambda
765 ParticleList const &inside = theStore->getParticles();
766 ParticleList toEject;
767 for(ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i) {
768 if((*i)->isLambda()) {
769 Particle * const theLambda = *i;
770 INCL_DEBUG("Forcing emission of the following particle: "
771 << theLambda->print() << '\n');
772 theLambda->setEmissionTime(theStore->getBook().getCurrentTime());
773 // Correction for real masses
774 const G4double theQValueCorrection = theLambda->getEmissionQValueCorrection(theA,theZ,theS); // Does it work for strange particles? Should be check
775 const G4double kineticEnergyOutside = theLambda->getKineticEnergy() - theLambda->getPotentialEnergy() + theQValueCorrection;
776 theLambda->setTableMass();
777 if(kineticEnergyOutside > 0.0)
778 theLambda->setEnergy(theLambda->getMass()+kineticEnergyOutside);
779 else
780 theLambda->setEnergy(theLambda->getMass()+tinyEnergy);
781 theLambda->adjustMomentumFromEnergy();
782 theLambda->setPotentialEnergy(0.);
783 theA -= theLambda->getA();
784 theS -= theLambda->getS();
785 toEject.push_back(theLambda);
786 }
787 }
788 for(ParticleIter i=toEject.begin(), e=toEject.end(); i!=e; ++i) {
791 (*i)->setParticleBias(Particle::getTotalBias());
792 }
793 return toEject.size();
794 }

References G4INCL::Store::addToOutgoing(), G4INCL::Particle::adjustMomentumFromEnergy(), G4INCL::Particle::getA(), G4INCL::Store::getBook(), G4INCL::Book::getCurrentTime(), G4INCL::Particle::getEmissionQValueCorrection(), G4INCL::Particle::getKineticEnergy(), G4INCL::Particle::getMass(), G4INCL::Store::getParticles(), G4INCL::Particle::getPotentialEnergy(), G4INCL::Particle::getS(), G4INCL::Particle::getTotalBias(), INCL_DEBUG, G4INCL::Store::particleHasBeenEjected(), G4INCL::Particle::print(), G4INCL::Particle::setEmissionTime(), G4INCL::Particle::setEnergy(), G4INCL::Particle::setPotentialEnergy(), G4INCL::Particle::setTableMass(), G4INCL::Particle::theA, G4INCL::Particle::theS, theStore, and G4INCL::Particle::theZ.

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

◆ emitInsidePions()

void G4INCL::Nucleus::emitInsidePions ( )

Force emission of all pions inside the nucleus.

Definition at line 670 of file G4INCLNucleus.cc.

670 {
671 /* Forcing emissions of all pions in the nucleus. This probably violates
672 * energy conservation (although the computation of the recoil kinematics
673 * might sweep this under the carpet).
674 */
675 INCL_WARN("Forcing emissions of all pions in the nucleus." << '\n');
676
677 // Emit the pions with this kinetic energy
678 const G4double tinyPionEnergy = 0.1; // MeV
679
680 // Push out the emitted pions
681 ParticleList const &inside = theStore->getParticles();
682 ParticleList toEject;
683 for(ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i) {
684 if((*i)->isPion()) {
685 Particle * const thePion = *i;
686 INCL_DEBUG("Forcing emission of the following particle: "
687 << thePion->print() << '\n');
688 thePion->setEmissionTime(theStore->getBook().getCurrentTime());
689 // Correction for real masses
690 const G4double theQValueCorrection = thePion->getEmissionQValueCorrection(theA,theZ,theS);
691 const G4double kineticEnergyOutside = thePion->getKineticEnergy() - thePion->getPotentialEnergy() + theQValueCorrection;
692 thePion->setTableMass();
693 if(kineticEnergyOutside > 0.0)
694 thePion->setEnergy(thePion->getMass()+kineticEnergyOutside);
695 else
696 thePion->setEnergy(thePion->getMass()+tinyPionEnergy);
697 thePion->adjustMomentumFromEnergy();
698 thePion->setPotentialEnergy(0.);
699 theZ -= thePion->getZ();
700 toEject.push_back(thePion);
701 }
702 }
703 for(ParticleIter i=toEject.begin(), e=toEject.end(); i!=e; ++i) {
706 (*i)->setParticleBias(Particle::getTotalBias());
707 }
708 }

References G4INCL::Store::addToOutgoing(), G4INCL::Particle::adjustMomentumFromEnergy(), G4INCL::Store::getBook(), G4INCL::Book::getCurrentTime(), G4INCL::Particle::getEmissionQValueCorrection(), G4INCL::Particle::getKineticEnergy(), G4INCL::Particle::getMass(), G4INCL::Store::getParticles(), G4INCL::Particle::getPotentialEnergy(), G4INCL::Particle::getTotalBias(), G4INCL::Particle::getZ(), INCL_DEBUG, INCL_WARN, G4INCL::Store::particleHasBeenEjected(), G4INCL::Particle::print(), G4INCL::Particle::setEmissionTime(), G4INCL::Particle::setEnergy(), G4INCL::Particle::setPotentialEnergy(), G4INCL::Particle::setTableMass(), G4INCL::Particle::theA, G4INCL::Particle::theS, theStore, and G4INCL::Particle::theZ.

Referenced by computeRecoilKinematics(), and decayInsideDeltas().

◆ emitInsideStrangeParticles()

void G4INCL::Nucleus::emitInsideStrangeParticles ( )

Force emission of all strange particles inside the nucleus.

Definition at line 710 of file G4INCLNucleus.cc.

710 {
711 /* Forcing emissions of Sigmas and antiKaons.
712 * This probably violates energy conservation
713 * (although the computation of the recoil kinematics
714 * might sweep this under the carpet).
715 */
716 INCL_DEBUG("Forcing emissions of all strange particles in the nucleus." << '\n');
717
718 // Emit the strange particles with this kinetic energy
719 const G4double tinyEnergy = 0.1; // MeV
720
721 // Push out the emitted strange particles
722 ParticleList const &inside = theStore->getParticles();
723 ParticleList toEject;
724 for(ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i) {
725 if((*i)->isSigma() || (*i)->isAntiKaon()) {
726 Particle * const theParticle = *i;
727 INCL_DEBUG("Forcing emission of the following particle: "
728 << theParticle->print() << '\n');
729 theParticle->setEmissionTime(theStore->getBook().getCurrentTime());
730 // Correction for real masses
731 const G4double theQValueCorrection = theParticle->getEmissionQValueCorrection(theA,theZ,theS); // Does it work for strange particles? should be check
732 const G4double kineticEnergyOutside = theParticle->getKineticEnergy() - theParticle->getPotentialEnergy() + theQValueCorrection;
733 theParticle->setTableMass();
734 if(kineticEnergyOutside > 0.0)
735 theParticle->setEnergy(theParticle->getMass()+kineticEnergyOutside);
736 else
737 theParticle->setEnergy(theParticle->getMass()+tinyEnergy);
738 theParticle->adjustMomentumFromEnergy();
739 theParticle->setPotentialEnergy(0.);
740 theA -= theParticle->getA();
741 theZ -= theParticle->getZ();
742 theS -= theParticle->getS();
743 toEject.push_back(theParticle);
744 }
745 }
746 for(ParticleIter i=toEject.begin(), e=toEject.end(); i!=e; ++i) {
749 (*i)->setParticleBias(Particle::getTotalBias());
750 }
751 }

References G4INCL::Store::addToOutgoing(), G4INCL::Particle::adjustMomentumFromEnergy(), G4INCL::Particle::getA(), G4INCL::Store::getBook(), G4INCL::Book::getCurrentTime(), G4INCL::Particle::getEmissionQValueCorrection(), G4INCL::Particle::getKineticEnergy(), G4INCL::Particle::getMass(), G4INCL::Store::getParticles(), G4INCL::Particle::getPotentialEnergy(), G4INCL::Particle::getS(), G4INCL::Particle::getTotalBias(), G4INCL::Particle::getZ(), INCL_DEBUG, G4INCL::Store::particleHasBeenEjected(), G4INCL::Particle::print(), G4INCL::Particle::setEmissionTime(), G4INCL::Particle::setEnergy(), G4INCL::Particle::setPotentialEnergy(), G4INCL::Particle::setTableMass(), G4INCL::Particle::theA, G4INCL::Particle::theS, theStore, and G4INCL::Particle::theZ.

Referenced by decayInsideStrangeParticles(), and G4INCL::INCL::postCascade().

◆ fillEventInfo()

void G4INCL::Nucleus::fillEventInfo ( EventInfo eventInfo)

Fill the event info which contains INCL output data

Definition at line 1010 of file G4INCLNucleus.cc.

1010 {
1011 eventInfo->nParticles = 0;
1012 G4bool isNucleonAbsorption = false;
1013
1014 G4bool isPionAbsorption = false;
1015 // It is possible to have pion absorption event only if the
1016 // projectile is pion.
1017 if(eventInfo->projectileType == PiPlus ||
1018 eventInfo->projectileType == PiMinus ||
1019 eventInfo->projectileType == PiZero) {
1020 isPionAbsorption = true;
1021 }
1022
1023 // Forced CN
1024 eventInfo->forcedCompoundNucleus = tryCN;
1025
1026 // Outgoing particles
1027 ParticleList const &outgoingParticles = getStore()->getOutgoingParticles();
1028
1029 // Check if we have a nucleon absorption event: nucleon projectile
1030 // and no ejected particles.
1031 if(outgoingParticles.size() == 0 &&
1032 (eventInfo->projectileType == Proton ||
1033 eventInfo->projectileType == Neutron)) {
1034 isNucleonAbsorption = true;
1035 }
1036
1037 // Reset the remnant counter
1038 eventInfo->nRemnants = 0;
1039 eventInfo->history.clear();
1040
1041 for(ParticleIter i=outgoingParticles.begin(), e=outgoingParticles.end(); i!=e; ++i ) {
1042 // We have a pion absorption event only if the projectile is
1043 // pion and there are no ejected pions.
1044 if(isPionAbsorption) {
1045 if((*i)->isPion()) {
1046 isPionAbsorption = false;
1047 }
1048 }
1049
1050 eventInfo->ParticleBias[eventInfo->nParticles] = (*i)->getParticleBias();
1051
1052 eventInfo->A[eventInfo->nParticles] = (*i)->getA();
1053 eventInfo->Z[eventInfo->nParticles] = (*i)->getZ();
1054 eventInfo->S[eventInfo->nParticles] = (*i)->getS();
1055 eventInfo->emissionTime[eventInfo->nParticles] = (*i)->getEmissionTime();
1056 eventInfo->EKin[eventInfo->nParticles] = (*i)->getKineticEnergy();
1057 ThreeVector mom = (*i)->getMomentum();
1058 eventInfo->px[eventInfo->nParticles] = mom.getX();
1059 eventInfo->py[eventInfo->nParticles] = mom.getY();
1060 eventInfo->pz[eventInfo->nParticles] = mom.getZ();
1061 eventInfo->theta[eventInfo->nParticles] = Math::toDegrees(mom.theta());
1062 eventInfo->phi[eventInfo->nParticles] = Math::toDegrees(mom.phi());
1063 eventInfo->origin[eventInfo->nParticles] = -1;
1064 eventInfo->history.push_back("");
1065 if ((*i)->getType() != Composite) {
1066 ParticleSpecies pt((*i)->getType());
1067 eventInfo->PDGCode[eventInfo->nParticles] = pt.getPDGCode();
1068 }
1069 else {
1070 ParticleSpecies pt((*i)->getA(), (*i)->getZ(), (*i)->getS());
1071 eventInfo->PDGCode[eventInfo->nParticles] = pt.getPDGCode();
1072 }
1073 eventInfo->nParticles++;
1074 }
1075 eventInfo->nucleonAbsorption = isNucleonAbsorption;
1076 eventInfo->pionAbsorption = isPionAbsorption;
1077 eventInfo->nCascadeParticles = eventInfo->nParticles;
1078
1079 // Projectile-like remnant characteristics
1081 eventInfo->ARem[eventInfo->nRemnants] = theProjectileRemnant->getA();
1082 eventInfo->ZRem[eventInfo->nRemnants] = theProjectileRemnant->getZ();
1083 eventInfo->SRem[eventInfo->nRemnants] = theProjectileRemnant->getS();
1085 if(std::abs(eStar)<1E-10)
1086 eStar = 0.0; // blame rounding and set the excitation energy to zero
1087 eventInfo->EStarRem[eventInfo->nRemnants] = eStar;
1088 if(eventInfo->EStarRem[eventInfo->nRemnants]<0.) {
1089 INCL_WARN("Negative excitation energy in projectile-like remnant! EStarRem = " << eventInfo->EStarRem[eventInfo->nRemnants] << '\n');
1090 }
1091 const ThreeVector &spin = theProjectileRemnant->getSpin();
1092 if(eventInfo->ARem[eventInfo->nRemnants]%2==0) { // even-A nucleus
1093 eventInfo->JRem[eventInfo->nRemnants] = (G4int) (spin.mag()/PhysicalConstants::hc + 0.5);
1094 } else { // odd-A nucleus
1095 eventInfo->JRem[eventInfo->nRemnants] = ((G4int) (spin.mag()/PhysicalConstants::hc)) + 0.5;
1096 }
1097 eventInfo->EKinRem[eventInfo->nRemnants] = theProjectileRemnant->getKineticEnergy();
1098 const ThreeVector &mom = theProjectileRemnant->getMomentum();
1099 eventInfo->pxRem[eventInfo->nRemnants] = mom.getX();
1100 eventInfo->pyRem[eventInfo->nRemnants] = mom.getY();
1101 eventInfo->pzRem[eventInfo->nRemnants] = mom.getZ();
1102 eventInfo->jxRem[eventInfo->nRemnants] = spin.getX() / PhysicalConstants::hc;
1103 eventInfo->jyRem[eventInfo->nRemnants] = spin.getY() / PhysicalConstants::hc;
1104 eventInfo->jzRem[eventInfo->nRemnants] = spin.getZ() / PhysicalConstants::hc;
1105 eventInfo->thetaRem[eventInfo->nRemnants] = Math::toDegrees(mom.theta());
1106 eventInfo->phiRem[eventInfo->nRemnants] = Math::toDegrees(mom.phi());
1107 eventInfo->nRemnants++;
1108 }
1109
1110 // Target-like remnant characteristics
1111 if(hasRemnant()) {
1112 eventInfo->ARem[eventInfo->nRemnants] = getA();
1113 eventInfo->ZRem[eventInfo->nRemnants] = getZ();
1114 eventInfo->SRem[eventInfo->nRemnants] = getS();
1115 eventInfo->EStarRem[eventInfo->nRemnants] = getExcitationEnergy();
1116 if(eventInfo->EStarRem[eventInfo->nRemnants]<0.) {
1117 INCL_WARN("Negative excitation energy in target-like remnant! EStarRem = " << eventInfo->EStarRem[eventInfo->nRemnants] << " eventNumber=" << eventInfo->eventNumber << '\n');
1118 }
1119 const ThreeVector &spin = getSpin();
1120 if(eventInfo->ARem[eventInfo->nRemnants]%2==0) { // even-A nucleus
1121 eventInfo->JRem[eventInfo->nRemnants] = (G4int) (spin.mag()/PhysicalConstants::hc + 0.5);
1122 } else { // odd-A nucleus
1123 eventInfo->JRem[eventInfo->nRemnants] = ((G4int) (spin.mag()/PhysicalConstants::hc)) + 0.5;
1124 }
1125 eventInfo->EKinRem[eventInfo->nRemnants] = getKineticEnergy();
1126 const ThreeVector &mom = getMomentum();
1127 eventInfo->pxRem[eventInfo->nRemnants] = mom.getX();
1128 eventInfo->pyRem[eventInfo->nRemnants] = mom.getY();
1129 eventInfo->pzRem[eventInfo->nRemnants] = mom.getZ();
1130 eventInfo->jxRem[eventInfo->nRemnants] = spin.getX() / PhysicalConstants::hc;
1131 eventInfo->jyRem[eventInfo->nRemnants] = spin.getY() / PhysicalConstants::hc;
1132 eventInfo->jzRem[eventInfo->nRemnants] = spin.getZ() / PhysicalConstants::hc;
1133 eventInfo->thetaRem[eventInfo->nRemnants] = Math::toDegrees(mom.theta());
1134 eventInfo->phiRem[eventInfo->nRemnants] = Math::toDegrees(mom.phi());
1135 eventInfo->nRemnants++;
1136 }
1137
1138 // Global counters, flags, etc.
1139 Book const &theBook = theStore->getBook();
1140 eventInfo->nCollisions = theBook.getAcceptedCollisions();
1141 eventInfo->nBlockedCollisions = theBook.getBlockedCollisions();
1142 eventInfo->nDecays = theBook.getAcceptedDecays();
1143 eventInfo->nBlockedDecays = theBook.getBlockedDecays();
1144 eventInfo->firstCollisionTime = theBook.getFirstCollisionTime();
1145 eventInfo->firstCollisionXSec = theBook.getFirstCollisionXSec();
1146 eventInfo->firstCollisionSpectatorPosition = theBook.getFirstCollisionSpectatorPosition();
1147 eventInfo->firstCollisionSpectatorMomentum = theBook.getFirstCollisionSpectatorMomentum();
1148 eventInfo->firstCollisionIsElastic = theBook.getFirstCollisionIsElastic();
1149 eventInfo->nReflectionAvatars = theBook.getAvatars(SurfaceAvatarType);
1150 eventInfo->nCollisionAvatars = theBook.getAvatars(CollisionAvatarType);
1151 eventInfo->nDecayAvatars = theBook.getAvatars(DecayAvatarType);
1152 eventInfo->nEnergyViolationInteraction = theBook.getEnergyViolationInteraction();
1153 }
G4int getAcceptedCollisions() const
Definition: G4INCLBook.hh:100
ThreeVector const & getSpin() const
Get the spin of the nucleus.
G4double getExcitationEnergy() const
Get the excitation energy of the cluster.
Store * getStore() const
G4double getExcitationEnergy() const
Get the excitation energy of the nucleus.
G4bool hasRemnant() const
Does the nucleus give a cascade remnant?
G4int getS() const
Returns the strangeness number.
G4int getZ() const
Returns the charge number.
G4double getKineticEnergy() const
Get the particle kinetic energy.
G4int getA() const
Returns the baryon number.
G4double getX() const
G4double toDegrees(G4double radians)
const G4double hc
[MeV*fm]
@ SurfaceAvatarType
@ CollisionAvatarType
@ DecayAvatarType

References G4INCL::EventInfo::A, G4INCL::EventInfo::ARem, G4INCL::CollisionAvatarType, G4INCL::Composite, G4INCL::DecayAvatarType, G4INCL::EventInfo::EKin, G4INCL::EventInfo::EKinRem, G4INCL::EventInfo::emissionTime, G4INCL::EventInfo::EStarRem, G4INCL::EventInfo::eventNumber, G4INCL::EventInfo::firstCollisionIsElastic, G4INCL::EventInfo::firstCollisionSpectatorMomentum, G4INCL::EventInfo::firstCollisionSpectatorPosition, G4INCL::EventInfo::firstCollisionTime, G4INCL::EventInfo::firstCollisionXSec, G4INCL::EventInfo::forcedCompoundNucleus, G4INCL::Particle::getA(), G4INCL::Book::getAcceptedCollisions(), G4INCL::Book::getAcceptedDecays(), G4INCL::Book::getAvatars(), G4INCL::Book::getBlockedCollisions(), G4INCL::Book::getBlockedDecays(), G4INCL::Store::getBook(), G4INCL::Book::getEnergyViolationInteraction(), G4INCL::Cluster::getExcitationEnergy(), getExcitationEnergy(), G4INCL::Book::getFirstCollisionIsElastic(), G4INCL::Book::getFirstCollisionSpectatorMomentum(), G4INCL::Book::getFirstCollisionSpectatorPosition(), G4INCL::Book::getFirstCollisionTime(), G4INCL::Book::getFirstCollisionXSec(), G4INCL::Particle::getKineticEnergy(), G4INCL::Particle::getMomentum(), G4INCL::Store::getOutgoingParticles(), G4INCL::ParticleSpecies::getPDGCode(), G4INCL::Particle::getS(), G4INCL::Cluster::getSpin(), getStore(), G4INCL::ThreeVector::getX(), G4INCL::ThreeVector::getY(), G4INCL::Particle::getZ(), G4INCL::ThreeVector::getZ(), hasRemnant(), G4INCL::PhysicalConstants::hc, G4INCL::EventInfo::history, INCL_WARN, G4INCL::EventInfo::JRem, G4INCL::EventInfo::jxRem, G4INCL::EventInfo::jyRem, G4INCL::EventInfo::jzRem, G4INCL::ThreeVector::mag(), G4INCL::EventInfo::nBlockedCollisions, G4INCL::EventInfo::nBlockedDecays, G4INCL::EventInfo::nCascadeParticles, G4INCL::EventInfo::nCollisionAvatars, G4INCL::EventInfo::nCollisions, G4INCL::EventInfo::nDecayAvatars, G4INCL::EventInfo::nDecays, G4INCL::EventInfo::nEnergyViolationInteraction, G4INCL::Neutron, G4INCL::EventInfo::nParticles, G4INCL::EventInfo::nReflectionAvatars, G4INCL::EventInfo::nRemnants, G4INCL::EventInfo::nucleonAbsorption, G4INCL::EventInfo::origin, G4INCL::EventInfo::ParticleBias, G4INCL::EventInfo::PDGCode, G4INCL::ThreeVector::phi(), G4INCL::EventInfo::phi, G4INCL::EventInfo::phiRem, G4INCL::PiMinus, G4INCL::EventInfo::pionAbsorption, G4INCL::PiPlus, G4INCL::PiZero, G4INCL::EventInfo::projectileType, G4INCL::Proton, G4INCL::EventInfo::px, G4INCL::EventInfo::pxRem, G4INCL::EventInfo::py, G4INCL::EventInfo::pyRem, G4INCL::EventInfo::pz, G4INCL::EventInfo::pzRem, G4INCL::EventInfo::S, G4INCL::EventInfo::SRem, G4INCL::SurfaceAvatarType, theProjectileRemnant, theStore, G4INCL::ThreeVector::theta(), G4INCL::EventInfo::theta, G4INCL::EventInfo::thetaRem, G4INCL::Math::toDegrees(), tryCN, G4INCL::EventInfo::Z, and G4INCL::EventInfo::ZRem.

Referenced by G4INCL::INCL::makeCompoundNucleus(), and G4INCL::INCL::postCascade().

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

◆ finalizeProjectileRemnant()

void G4INCL::Nucleus::finalizeProjectileRemnant ( const G4double  emissionTime)

Finalise the projectile remnant.

Complete the treatment of the projectile remnant. If it contains nucleons, assign its excitation energy and spin. Move stuff to the outgoing list, if appropriate.

Parameters
emissionTimethe emission time of the projectile remnant

Definition at line 1211 of file G4INCLNucleus.cc.

1211 {
1212 // Deal with the projectile remnant
1213 const G4int prA = theProjectileRemnant->getA();
1214 if(prA>=1) {
1215 // Set the mass
1218
1219 // Compute the excitation energy from the invariant mass
1220 const G4double anExcitationEnergy = aMass
1222
1223 // Set the excitation energy
1224 theProjectileRemnant->setExcitationEnergy(anExcitationEnergy);
1225
1226 // No spin!
1227 theProjectileRemnant->setSpin(ThreeVector());
1228
1229 // Set the emission time
1230 theProjectileRemnant->setEmissionTime(anEmissionTime);
1231 }
1232 }
void setExcitationEnergy(const G4double e)
Set the excitation energy of the cluster.
void setSpin(const ThreeVector &j)
Set the spin of the nucleus.
void setEmissionTime(G4double t)
G4double getInvariantMass() const
Get the the particle invariant mass.

References G4INCL::Particle::getA(), G4INCL::Particle::getInvariantMass(), G4INCL::Particle::getS(), G4INCL::ParticleTable::getTableMass, G4INCL::Particle::getZ(), G4INCL::Particle::setEmissionTime(), G4INCL::Cluster::setExcitationEnergy(), G4INCL::Particle::setMass(), G4INCL::Cluster::setSpin(), and theProjectileRemnant.

Referenced by G4INCL::INCL::makeCompoundNucleus(), and G4INCL::INCL::makeProjectileRemnant().

◆ 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 }
G4double getMass() const
Get the cached particle mass.

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

Referenced by G4INCL::ProjectileRemnant::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 G4INCL::ProjectileRemnant::addDynamicalSpectator(), G4INCL::Cluster::addParticle(), G4INCL::ClusteringModelIntercomparison::clusterCanEscape(), computeOneNucleonRecoilKinematics(), G4INCL::INCL::continueCascade(), G4INCL::ClusterDecay::decay(), emitInsideLambda(), emitInsideStrangeParticles(), fillEventInfo(), G4INCL::ParticleEntryChannel::fillFinalState(), G4INCL::TransmissionChannel::fillFinalState(), finalizeProjectileRemnant(), G4INCL::ClusteringModelIntercomparison::findClusterStartingFrom(), G4INCL::PauliStandard::getBlockingProbability(), G4INCL::ClusteringModelIntercomparison::getCluster(), getConservationBalance(), G4INCL::SurfaceAvatar::getTransmissionProbability(), G4INCL::NuclearDensity::getTransmissionRadius(), G4INCL::TransmissionChannel::initializeKineticEnergyOutside(), 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(), G4INCL::ProjectileRemnant::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 }
virtual G4INCL::ThreeVector getAngularMomentum() const

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

Referenced by 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 }
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(), decayMe(), decayOutgoingClusters(), decayOutgoingPionResonances(), 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().

◆ getConservationBalance()

Nucleus::ConservationBalance G4INCL::Nucleus::getConservationBalance ( EventInfo const &  theEventInfo,
const G4bool  afterRecoil 
) const

Compute charge, mass, energy and momentum balance.

Definition at line 1155 of file G4INCLNucleus.cc.

1155 {
1156 ConservationBalance theBalance;
1157 // Initialise balance variables with the incoming values
1158 theBalance.Z = theEventInfo.Zp + theEventInfo.Zt;
1159 theBalance.A = theEventInfo.Ap + theEventInfo.At;
1160 theBalance.S = theEventInfo.Sp + theEventInfo.St;
1161
1162 theBalance.energy = getInitialEnergy();
1163 theBalance.momentum = getIncomingMomentum();
1164
1165 // Process outgoing particles
1166 ParticleList const &outgoingParticles = theStore->getOutgoingParticles();
1167 for(ParticleIter i=outgoingParticles.begin(), e=outgoingParticles.end(); i!=e; ++i ) {
1168 theBalance.Z -= (*i)->getZ();
1169 theBalance.A -= (*i)->getA();
1170 theBalance.S -= (*i)->getS();
1171 // For outgoing clusters, the total energy automatically includes the
1172 // excitation energy
1173 theBalance.energy -= (*i)->getEnergy(); // Note that outgoing particles should have the real mass
1174 theBalance.momentum -= (*i)->getMomentum();
1175 }
1176
1177 // Projectile-like remnant contribution, if present
1179 theBalance.Z -= theProjectileRemnant->getZ();
1180 theBalance.A -= theProjectileRemnant->getA();
1181 theBalance.S -= theProjectileRemnant->getS();
1184 theBalance.energy -= theProjectileRemnant->getKineticEnergy();
1185 theBalance.momentum -= theProjectileRemnant->getMomentum();
1186 }
1187
1188 // Target-like remnant contribution, if present
1189 if(hasRemnant()) {
1190 theBalance.Z -= getZ();
1191 theBalance.A -= getA();
1192 theBalance.S -= getS();
1193 theBalance.energy -= ParticleTable::getTableMass(getA(),getZ(),getS()) +
1195 if(afterRecoil)
1196 theBalance.energy -= getKineticEnergy();
1197 theBalance.momentum -= getMomentum();
1198 }
1199
1200 return theBalance;
1201 }
const ThreeVector & getIncomingMomentum() const
Get the incoming momentum vector.
G4double getInitialEnergy() const
Get the initial energy.

References G4INCL::Nucleus::ConservationBalance::A, G4INCL::EventInfo::Ap, G4INCL::EventInfo::At, G4INCL::Nucleus::ConservationBalance::energy, G4INCL::Particle::getA(), G4INCL::Cluster::getExcitationEnergy(), getExcitationEnergy(), getIncomingMomentum(), getInitialEnergy(), G4INCL::Particle::getKineticEnergy(), G4INCL::Particle::getMomentum(), G4INCL::Store::getOutgoingParticles(), G4INCL::Particle::getS(), G4INCL::ParticleTable::getTableMass, G4INCL::Particle::getZ(), hasRemnant(), G4INCL::Nucleus::ConservationBalance::momentum, G4INCL::Nucleus::ConservationBalance::S, G4INCL::EventInfo::Sp, G4INCL::EventInfo::St, theProjectileRemnant, theStore, G4INCL::Nucleus::ConservationBalance::Z, G4INCL::EventInfo::Zp, and G4INCL::EventInfo::Zt.

Referenced by G4INCL::INCL::RecoilFunctor::operator()(), and G4INCL::INCL::RecoilCMFunctor::operator()().

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

◆ getDensity()

NuclearDensity const * G4INCL::Nucleus::getDensity ( ) const
inline

◆ 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 emitInsideKaon(), emitInsideLambda(), emitInsidePions(), 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::Nucleus::getExcitationEnergy ( ) const
inline

◆ 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.

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

◆ getIncomingAngularMomentum()

const ThreeVector & G4INCL::Nucleus::getIncomingAngularMomentum ( ) const
inline

Get the incoming angular-momentum vector.

Definition at line 262 of file G4INCLNucleus.hh.

262{ return incomingAngularMomentum; }

References incomingAngularMomentum.

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

◆ getIncomingMomentum()

const ThreeVector & G4INCL::Nucleus::getIncomingMomentum ( ) const
inline

◆ getInitialA()

G4int G4INCL::Nucleus::getInitialA ( ) const
inline

Definition at line 108 of file G4INCLNucleus.hh.

108{ return theInitialA; };

References theInitialA.

◆ getInitialEnergy()

G4double G4INCL::Nucleus::getInitialEnergy ( ) const
inline

Get the initial energy.

Definition at line 278 of file G4INCLNucleus.hh.

278{ return initialEnergy; }

References initialEnergy.

Referenced by getConservationBalance(), and G4INCL::INCL::RecoilCMFunctor::RecoilCMFunctor().

◆ getInitialInternalEnergy()

G4double G4INCL::Nucleus::getInitialInternalEnergy ( ) const
inline

Definition at line 353 of file G4INCLNucleus.hh.

353{ return initialInternalEnergy; };

References initialInternalEnergy.

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

◆ getInitialS()

G4int G4INCL::Nucleus::getInitialS ( ) const
inline

Definition at line 110 of file G4INCLNucleus.hh.

110{ return theInitialS; };

References theInitialS.

◆ getInitialZ()

G4int G4INCL::Nucleus::getInitialZ ( ) const
inline

Definition at line 109 of file G4INCLNucleus.hh.

109{ return theInitialZ; };

References theInitialZ.

◆ 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 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(), computeOneNucleonRecoilKinematics(), emitInsideKaon(), emitInsideLambda(), emitInsidePions(), 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(), G4INCL::ProjectileRemnant::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(), computeOneNucleonRecoilKinematics(), computeRecoilKinematics(), G4INCL::CoulombNonRelativistic::coulombDeviation(), decayOutgoingPionResonances(), decayOutgoingSigmaZero(), 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(), getConservationBalance(), G4INCL::KinematicsUtils::getLocalEnergy(), G4INCL::ProjectileRemnant::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(), G4INCL::ProjectileRemnant::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.

◆ getNumberOfEnteringKaons()

G4int G4INCL::Nucleus::getNumberOfEnteringKaons ( ) const
inline

Definition at line 122 of file G4INCLNucleus.hh.

References theNkaonminusInitial, and theNkaonplusInitial.

◆ getNumberOfEnteringNeutrons()

G4int G4INCL::Nucleus::getNumberOfEnteringNeutrons ( ) const
inline

Definition at line 120 of file G4INCLNucleus.hh.

120{ return theNnInitial; };

References theNnInitial.

◆ getNumberOfEnteringPions()

G4int G4INCL::Nucleus::getNumberOfEnteringPions ( ) const
inline

Definition at line 121 of file G4INCLNucleus.hh.

References theNpionminusInitial, and theNpionplusInitial.

◆ getNumberOfEnteringProtons()

G4int G4INCL::Nucleus::getNumberOfEnteringProtons ( ) const
inline

Definition at line 119 of file G4INCLNucleus.hh.

119{ return theNpInitial; };

References theNpInitial.

◆ 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; };

References G4INCL::Particle::theNKaon.

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

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

◆ getPotential()

NuclearPotential::INuclearPotential const * G4INCL::Nucleus::getPotential ( ) const
inline

◆ getPotentialEnergy()

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

◆ getProjectileRemnant()

ProjectileRemnant * G4INCL::Nucleus::getProjectileRemnant ( ) const
inline

◆ 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 }

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 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; }

References G4INCL::Cluster::theSpin.

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

◆ getStore()

Store * G4INCL::Nucleus::getStore ( ) const
inline

◆ getSurfaceRadius()

G4double G4INCL::Nucleus::getSurfaceRadius ( Particle const *const  particle) const
inline

Get the maximum allowed radius for a given particle.

Calls the NuclearDensity::getMaxRFromP() method for nucleons and deltas, and the NuclearDensity::getTrasmissionRadius() method for pions.

Parameters
particlepointer to a particle
Returns
surface radius

Definition at line 402 of file G4INCLNucleus.hh.

402 {
403 if(particle->isNucleon() || particle->isLambda() || particle->isResonance()){
404 const G4double pr = particle->getReflectionMomentum()/thePotential->getFermiMomentum(particle);
405 if(pr>=1.)
406 return getUniverseRadius();
407 else
408 return theDensity->getMaxRFromP(particle->getType(), pr);
409 }
410 else {
411 // Temporarily set RPION = RMAX
412 return getUniverseRadius();
413 //return 0.5*(theDensity->getTransmissionRadius(particle)+getUniverseRadius());
414 }
415 }
G4double getMaxRFromP(const ParticleType t, const G4double p) const
Get the maximum allowed radius for a given momentum.
G4double getFermiMomentum(const Particle *const p) const
Return the Fermi momentum for a particle.
G4double getUniverseRadius() const
Getter for theUniverseRadius.

References G4INCL::NuclearPotential::INuclearPotential::getFermiMomentum(), G4INCL::NuclearDensity::getMaxRFromP(), G4INCL::Particle::getReflectionMomentum(), G4INCL::Particle::getType(), getUniverseRadius(), G4INCL::Particle::isLambda(), G4INCL::Particle::isNucleon(), G4INCL::Particle::isResonance(), theDensity, and thePotential.

Referenced by G4INCL::InteractionAvatar::bringParticleInside(), G4INCL::StandardPropagationModel::generateBinaryCollisionAvatar(), G4INCL::StandardPropagationModel::getReflectionTime(), and G4INCL::InteractionAvatar::postInteraction().

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

◆ getTotalBias()

G4double G4INCL::Particle::getTotalBias ( )
staticinherited

General bias vector function.

Definition at line 300 of file G4INCLParticle.cc.

300 {
301 G4double TotalBias = 1.;
302 for(G4int i=0; i<G4int(INCLBiasVector.size());i++) TotalBias *= Particle::INCLBiasVector[i];
303 return TotalBias;
304 }

References G4INCL::Particle::INCLBiasVector.

Referenced by emitInsideKaon(), emitInsideLambda(), emitInsidePions(), emitInsideStrangeParticles(), G4INCL::INCL::postCascade(), and G4INCL::EventInfo::remnantToParticle().

◆ 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.

◆ getTransmissionBarrier()

G4double G4INCL::Nucleus::getTransmissionBarrier ( Particle const *const  p)
inline

Get the transmission barrier.

Definition at line 375 of file G4INCLNucleus.hh.

375 {
376 const G4double theTransmissionRadius = theDensity->getTransmissionRadius(p);
377 const G4double theParticleZ = p->getZ();
378 return PhysicalConstants::eSquared*(theZ-theParticleZ)*theParticleZ/theTransmissionRadius;
379 }
G4double getTransmissionRadius(Particle const *const p) const
The radius used for calculating the transmission coefficient.
const G4double eSquared
Coulomb conversion factor [MeV*fm].

References G4INCL::PhysicalConstants::eSquared, G4INCL::NuclearDensity::getTransmissionRadius(), G4INCL::Particle::getZ(), theDensity, and G4INCL::Particle::theZ.

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

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

◆ getTryCompoundNucleus()

G4bool G4INCL::Nucleus::getTryCompoundNucleus ( )
inline

Definition at line 372 of file G4INCLNucleus.hh.

372{ return tryCN; }

References tryCN.

Referenced by G4INCL::INCL::continueCascade(), G4INCL::INCL::postCascade(), and G4INCL::INCL::updateGlobalInfo().

◆ 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(), getSurfaceRadius(), G4INCL::NuclearDensity::getTransmissionRadius(), 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().

◆ getUniverseRadius()

G4double G4INCL::Nucleus::getUniverseRadius ( ) const
inline

◆ 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 G4INCL::ProjectileRemnant::addDynamicalSpectator(), G4INCL::Cluster::addParticle(), G4INCL::CoulombNonRelativistic::bringToSurface(), computeOneNucleonRecoilKinematics(), G4INCL::ClusterDecay::decay(), G4INCL::CoulombNonRelativistic::distortOut(), emitInsideKaon(), emitInsidePions(), emitInsideStrangeParticles(), fillEventInfo(), G4INCL::ParticleEntryChannel::fillFinalState(), G4INCL::TransmissionChannel::fillFinalState(), finalizeProjectileRemnant(), G4INCL::ClusteringModelIntercomparison::findClusterStartingFrom(), G4INCL::PauliStandard::getBlockingProbability(), G4INCL::ClusteringModelIntercomparison::getCluster(), getConservationBalance(), getTransmissionBarrier(), G4INCL::SurfaceAvatar::getTransmissionProbability(), G4INCL::NuclearDensity::getTransmissionRadius(), G4INCL::TransmissionChannel::initializeKineticEnergyOutside(), insertParticle(), G4INCL::ClusterDecay::isStable(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::phaseSpaceDecay(), G4INCL::INCL::preCascade(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::recursiveDecay(), G4INCL::ProjectileRemnant::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().

◆ hasRemnant()

G4bool G4INCL::Nucleus::hasRemnant ( ) const
inline

Does the nucleus give a cascade remnant?

To be called after computeRecoilKinematics().

Definition at line 365 of file G4INCLNucleus.hh.

365{ return remnant; }

References remnant.

Referenced by fillEventInfo(), getConservationBalance(), and G4INCL::INCL::postCascade().

◆ 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::Nucleus::initializeParticles ( )
virtual

Call the Cluster method to generate the initial distribution of particles. At the beginning all particles are assigned as spectators.

Reimplemented from G4INCL::Cluster.

Definition at line 121 of file G4INCLNucleus.cc.

121 {
122 // Reset the variables connected with the projectile remnant
125
127 for(ParticleIter i=particles.begin(), e=particles.end(); i!=e; ++i) {
129 }
131 particles.clear();
134 }
virtual void initializeParticles()
Initialise the NuclearDensity pointer and sample the particles.
void updatePotentialEnergy(Particle *p) const
Update the particle potential energy.

References G4INCL::Store::add(), computeTotalEnergy(), initialCenterOfMass, initialInternalEnergy, G4INCL::Cluster::initializeParticles(), G4INCL::Cluster::particles, G4INCL::Particle::thePosition, theProjectileRemnant, theStore, and updatePotentialEnergy().

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

◆ insertParticle()

void G4INCL::Nucleus::insertParticle ( Particle p)
inline

Insert a new particle (e.g. a projectile) in the nucleus.

Definition at line 83 of file G4INCLNucleus.hh.

83 {
84 theZ += p->getZ();
85 theA += p->getA();
86 theS += p->getS();
88 if(p->isNucleon()) {
91 }
92 if(p->isPion()) {
95 }
96 if(p->isKaon() || p->isAntiKaon()) {
99 }
100 if(!p->isTargetSpectator()) theStore->getBook().incrementCascading();
101 };
void incrementCascading()
Definition: G4INCLBook.hh:77
void particleHasEntered(Particle *const particle)
Move a particle from incoming to inside.
Definition: G4INCLStore.cc:188
G4int heaviside(G4int n)
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.

References G4INCL::Particle::getA(), G4INCL::Store::getBook(), G4INCL::ParticleTable::getIsospin(), G4INCL::Particle::getS(), G4INCL::Particle::getType(), G4INCL::Particle::getZ(), G4INCL::Math::heaviside(), G4INCL::Book::incrementCascading(), G4INCL::Particle::isAntiKaon(), G4INCL::Particle::isKaon(), G4INCL::Particle::isNucleon(), G4INCL::Particle::isPion(), G4INCL::Particle::isTargetSpectator(), G4INCL::Store::particleHasEntered(), G4INCL::Particle::theA, theNkaonminusInitial, theNkaonplusInitial, theNnInitial, theNpInitial, theNpionminusInitial, theNpionplusInitial, G4INCL::Particle::theS, theStore, and G4INCL::Particle::theZ.

Referenced by applyFinalState().

◆ 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 G4INCL::ProjectileRemnant::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

◆ isEventTransparent()

G4bool G4INCL::Nucleus::isEventTransparent ( ) const

Is the event transparent?

To be called at the end of the cascade.

Definition at line 840 of file G4INCLNucleus.cc.

840 {
841
842 Book const &theBook = theStore->getBook();
843 const G4int nEventCollisions = theBook.getAcceptedCollisions();
844 const G4int nEventDecays = theBook.getAcceptedDecays();
845 const G4int nEventClusters = theBook.getEmittedClusters();
846 if(nEventCollisions==0 && nEventDecays==0 && nEventClusters==0)
847 return true;
848
849 return false;
850
851 }

References G4INCL::Book::getAcceptedCollisions(), G4INCL::Book::getAcceptedDecays(), G4INCL::Store::getBook(), G4INCL::Book::getEmittedClusters(), and theStore.

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

◆ 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(), getSurfaceRadius(), 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().

◆ isNucleusNucleusCollision()

G4bool G4INCL::Nucleus::isNucleusNucleusCollision ( ) const
inline

Is it a nucleus-nucleus collision?

Definition at line 424 of file G4INCLNucleus.hh.

424{ return isNucleusNucleus; }

References isNucleusNucleus.

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

◆ 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 G4INCL::ProjectileRemnant::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().

◆ operator=()

Nucleus & G4INCL::Nucleus::operator= ( const Nucleus rhs)

Dummy assignment operator to silence Coverity warning.

◆ print() [1/2]

std::string G4INCL::Nucleus::print ( )

Print the nucleus info

Definition at line 288 of file G4INCLNucleus.cc.

289 {
290 std::stringstream ss;
291 ss << "Particles in the nucleus:" << '\n'
292 << "Inside:" << '\n';
293 G4int counter = 1;
294 ParticleList const &inside = theStore->getParticles();
295 for(ParticleIter p=inside.begin(), e=inside.end(); p!=e; ++p) {
296 ss << "index = " << counter << '\n'
297 << (*p)->print();
298 counter++;
299 }
300 ss <<"Outgoing:" << '\n';
301 ParticleList const &outgoing = theStore->getOutgoingParticles();
302 for(ParticleIter p=outgoing.begin(), e=outgoing.end(); p!=e; ++p)
303 ss << (*p)->print();
304
305 return ss.str();
306 }

References G4INCL::Store::getOutgoingParticles(), G4INCL::Store::getParticles(), and theStore.

◆ print() [2/2]

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(), G4INCL::ProjectileRemnant::removeParticle(), G4INCL::ProjectileRemnant::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().

◆ propagateParticles()

void G4INCL::Nucleus::propagateParticles ( G4double  step)

Propagate the particles one time step.

Parameters
steplength of the time step

Definition at line 214 of file G4INCLNucleus.cc.

214 {
215 INCL_WARN("Useless Nucleus::propagateParticles -method called." << '\n');
216 }

References INCL_WARN.

◆ 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.
G4double energy(const ThreeVector &p, const G4double m)

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

Referenced by G4INCL::ProjectileRemnant::ProjectileRemnant().

◆ removeParticle()

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 G4INCL::ProjectileRemnant::removeParticle().

◆ 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 decayOutgoingPionResonances(), decayOutgoingSigmaZero(), and G4INCL::SurfaceAvatar::postInteraction().

◆ setDensity()

void G4INCL::Nucleus::setDensity ( NuclearDensity const *const  d)
inline

Setter for theDensity.

Definition at line 463 of file G4INCLNucleus.hh.

References G4INCL::ParticleSampler::setDensity(), theDensity, and G4INCL::Cluster::theParticleSampler.

◆ 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

◆ setIncomingAngularMomentum()

void G4INCL::Nucleus::setIncomingAngularMomentum ( const ThreeVector j)
inline

Set the incoming angular-momentum vector.

Definition at line 257 of file G4INCLNucleus.hh.

257 {
259 }

References incomingAngularMomentum.

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

◆ setIncomingMomentum()

void G4INCL::Nucleus::setIncomingMomentum ( const ThreeVector p)
inline

Set the incoming momentum vector.

Definition at line 265 of file G4INCLNucleus.hh.

265 {
267 }

References incomingMomentum.

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

◆ setInitialEnergy()

void G4INCL::Nucleus::setInitialEnergy ( const G4double  e)
inline

Set the initial energy.

Definition at line 275 of file G4INCLNucleus.hh.

275{ initialEnergy = e; }

References initialEnergy.

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

◆ 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 computeOneNucleonRecoilKinematics(), decayOutgoingPionResonances(), 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 useFusionKinematics().

◆ setNucleusNucleusCollision()

void G4INCL::Nucleus::setNucleusNucleusCollision ( )
inline

Set a nucleus-nucleus collision.

Definition at line 427 of file G4INCLNucleus.hh.

427{ isNucleusNucleus=true; }

References isNucleusNucleus.

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

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

◆ setParticleNucleusCollision()

void G4INCL::Nucleus::setParticleNucleusCollision ( )
inline

Set a particle-nucleus collision.

Definition at line 430 of file G4INCLNucleus.hh.

430{ isNucleusNucleus=false; }

References isNucleusNucleus.

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

◆ 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

◆ setProjectileRemnant()

void G4INCL::Nucleus::setProjectileRemnant ( ProjectileRemnant *const  c)
inline

Set the projectile remnant.

Definition at line 433 of file G4INCLNucleus.hh.

433 {
436 }

References theProjectileRemnant.

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

◆ setRealMass()

void G4INCL::Particle::setRealMass ( )
inlineinherited

◆ setS()

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

◆ setSpin()

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

Set the spin of the nucleus.

Definition at line 425 of file G4INCLCluster.hh.

425{ theSpin = j; }

References G4INCL::Cluster::theSpin.

Referenced by finalizeProjectileRemnant(), G4INCL::INCL::makeCompoundNucleus(), and useFusionKinematics().

◆ setStore()

void G4INCL::Nucleus::setStore ( Store str)
inline

Definition at line 348 of file G4INCLNucleus.hh.

348 {
349 delete theStore;
350 theStore = str;
351 };

References theStore.

◆ 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

◆ setUniverseRadius()

void G4INCL::Nucleus::setUniverseRadius ( const G4double  universeRadius)
inline

Setter for theUniverseRadius.

Definition at line 421 of file G4INCLNucleus.hh.

421{ theUniverseRadius=universeRadius; }

References theUniverseRadius.

◆ setZ()

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

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

◆ updatePotentialEnergy()

void G4INCL::Nucleus::updatePotentialEnergy ( Particle p) const
inline

◆ useFusionKinematics()

void G4INCL::Nucleus::useFusionKinematics ( )

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

◆ incomingAngularMomentum

ThreeVector G4INCL::Nucleus::incomingAngularMomentum
private

◆ incomingMomentum

ThreeVector G4INCL::Nucleus::incomingMomentum
private

◆ initialCenterOfMass

ThreeVector G4INCL::Nucleus::initialCenterOfMass
private

Definition at line 498 of file G4INCLNucleus.hh.

Referenced by computeRecoilKinematics(), and initializeParticles().

◆ initialEnergy

G4double G4INCL::Nucleus::initialEnergy
private

◆ initialInternalEnergy

G4double G4INCL::Nucleus::initialInternalEnergy
private

◆ isNucleusNucleus

G4bool G4INCL::Nucleus::isNucleusNucleus
private

true if running a nucleus-nucleus collision

Tells INCL whether to make a projectile-like pre-fragment or not.

Definition at line 519 of file G4INCLNucleus.hh.

Referenced by isNucleusNucleusCollision(), setNucleusNucleusCollision(), and setParticleNucleusCollision().

◆ 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

◆ projectileA

G4int G4INCL::Nucleus::projectileA
private

The mass number of the projectile.

Definition at line 508 of file G4INCLNucleus.hh.

◆ projectileS

G4int G4INCL::Nucleus::projectileS
private

The strangeness number of the projectile.

Definition at line 510 of file G4INCLNucleus.hh.

◆ projectileZ

G4int G4INCL::Nucleus::projectileZ
private

The charge number of the projectile.

Definition at line 506 of file G4INCLNucleus.hh.

◆ remnant

G4bool G4INCL::Nucleus::remnant
private

Definition at line 499 of file G4INCLNucleus.hh.

Referenced by computeRecoilKinematics(), and hasRemnant().

◆ rpCorrelated

G4bool G4INCL::Particle::rpCorrelated
protectedinherited

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

◆ theDensity

NuclearDensity const* G4INCL::Nucleus::theDensity
private

Pointer to the NuclearDensity object.

Definition at line 528 of file G4INCLNucleus.hh.

Referenced by getDensity(), getSurfaceRadius(), getTransmissionBarrier(), Nucleus(), and setDensity().

◆ 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

◆ theHelicity

G4double G4INCL::Particle::theHelicity
privateinherited

◆ theInitialA

G4int G4INCL::Nucleus::theInitialA
private

Definition at line 484 of file G4INCLNucleus.hh.

Referenced by getInitialA().

◆ theInitialS

G4int G4INCL::Nucleus::theInitialS
private

Definition at line 484 of file G4INCLNucleus.hh.

Referenced by getInitialS().

◆ theInitialZ

G4int G4INCL::Nucleus::theInitialZ
private

Definition at line 484 of file G4INCLNucleus.hh.

Referenced by getInitialZ().

◆ 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 emitInsideKaon(), G4INCL::Particle::getNumberOfKaon(), and G4INCL::Particle::setNumberOfKaon().

◆ theNkaonminusInitial

G4int G4INCL::Nucleus::theNkaonminusInitial
private

◆ theNkaonplusInitial

G4int G4INCL::Nucleus::theNkaonplusInitial
private

The number of entering kaons.

Definition at line 493 of file G4INCLNucleus.hh.

Referenced by computeSeparationEnergyBalance(), getNumberOfEnteringKaons(), and insertParticle().

◆ theNnInitial

G4int G4INCL::Nucleus::theNnInitial
private

The number of entering neutrons.

Definition at line 488 of file G4INCLNucleus.hh.

Referenced by computeSeparationEnergyBalance(), getNumberOfEnteringNeutrons(), and insertParticle().

◆ theNpInitial

G4int G4INCL::Nucleus::theNpInitial
private

The number of entering protons.

Definition at line 486 of file G4INCLNucleus.hh.

Referenced by computeSeparationEnergyBalance(), getNumberOfEnteringProtons(), and insertParticle().

◆ theNpionminusInitial

G4int G4INCL::Nucleus::theNpionminusInitial
private

◆ theNpionplusInitial

G4int G4INCL::Nucleus::theNpionplusInitial
private

The number of entering pions.

Definition at line 490 of file G4INCLNucleus.hh.

Referenced by computeSeparationEnergyBalance(), getNumberOfEnteringPions(), and insertParticle().

◆ 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

◆ thePotential

NuclearPotential::INuclearPotential const* G4INCL::Nucleus::thePotential
private

◆ thePotentialEnergy

G4double G4INCL::Particle::thePotentialEnergy
protectedinherited

◆ theProjectileRemnant

ProjectileRemnant* G4INCL::Nucleus::theProjectileRemnant
private

◆ 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

◆ theStore

Store* G4INCL::Nucleus::theStore
private

◆ theType

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

◆ theUniverseRadius

G4double G4INCL::Nucleus::theUniverseRadius
private

The radius of the universe.

Definition at line 513 of file G4INCLNucleus.hh.

Referenced by getUniverseRadius(), Nucleus(), and setUniverseRadius().

◆ theZ

G4int G4INCL::Particle::theZ
protectedinherited

◆ tryCN

G4bool G4INCL::Nucleus::tryCN
private

Definition at line 503 of file G4INCLNucleus.hh.

Referenced by applyFinalState(), fillEventInfo(), and getTryCompoundNucleus().

◆ uncorrelatedMomentum

G4double G4INCL::Particle::uncorrelatedMomentum
protectedinherited

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