34 #define INCLXX_IN_GEANT4_MODE 1 43 namespace KinematicsUtils {
61 INCL_WARN(
"Tried to evaluate local energy for a particle outside the maximum radius." 62 <<
'\n' << p->
print() <<
'\n' 71 if(kinE <= n->getPotential()->getFermiEnergy(t)) {
75 if(tf0<0.0)
return 0.0;
76 pfl0 = std::sqrt(tf0*(tf0 + 2.0*mass));
83 vloc = std::sqrt(pl*pl + mass*mass) - mass;
100 INCL_ERROR(
"squareTotalEnergyInCM: beta2 == " << beta2 <<
" > 1.0" <<
'\n');
110 G4double pcm2 = (z*z-m1sq*m2sq)/(2*z+m1sq+m2sq);
112 INCL_ERROR(
"momentumInCM: pcm2 == " << pcm2 <<
" < 0.0" <<
'\n');
115 return std::sqrt(pcm2);
119 return 0.5*std::sqrt((E*E - std::pow(M1 + M2, 2))
120 *(E*E - std::pow(M1 - M2, 2)))/
E;
126 G4double plab2 = (s*s-2*s*(m1sq+m2sq)+(m1sq-m2sq)*(m1sq-m2sq))/(4*m2sq);
128 INCL_ERROR(
"momentumInLab: plab2 == " << plab2 <<
" < 0.0; m1sq == " << m1sq <<
"; m2sq == " << m2sq <<
"; s == " << s <<
'\n');
131 return std::sqrt(plab2);
144 E += (*i)->getEnergy();
152 p += (*i)->getMomentum();
158 return std::sqrt(p.
mag2() + m*
m);
166 return E*E - p.
mag2();
175 return (1.+EKin/mass);
G4ThreadLocal ParticleMassFn getTableParticleMass
Static pointer to the mass function for particles.
G4double getEnergy() const
void transformToLocalEnergyFrame(Nucleus const *const n, Particle *const p)
const G4INCL::ThreeVector & getPosition() const
G4double getMass() const
Get the cached particle mass.
G4double getMinPFromR(const ParticleType t, const G4double r) const
G4double squareTotalEnergyInCM(Particle const *const p1, Particle const *const p2)
ThreeVector sumMomenta(const ParticleList &)
G4double getFermiMomentum(const Particle *const p) const
Return the Fermi momentum for a particle.
G4double getReflectionMomentum() const
Return the reflection momentum.
G4double getMaxRFromP(const ParticleType t, const G4double p) const
Get the maximum allowed radius for a given momentum.
G4double getSeparationEnergy(const Particle *const p) const
Return the separation energy for a particle.
G4double momentumInCM(Particle const *const p1, Particle const *const p2)
gives the momentum in the CM frame of two particles.
G4double getKineticEnergy() const
Get the particle kinetic energy.
ThreeVector makeBoostVector(Particle const *const p1, Particle const *const p2)
std::string print() const
void setEnergy(G4double energy)
G4double gammaFromKineticEnergy(const ParticleSpecies &p, const G4double EKin)
G4INCL::ParticleType getType() const
G4double dot(const ThreeVector &v) const
G4double invariantMass(const G4double E, const ThreeVector &p)
G4double getMaximumRadius() const
G4double getPotentialEnergy() const
Get the particle potential energy.
G4double getUniverseRadius() const
Getter for theUniverseRadius.
G4double energy(const ThreeVector &p, const G4double m)
G4ThreadLocal NuclearMassFn getTableMass
Static pointer to the mass function for nuclei.
NuclearDensity const * getDensity() const
Getter for theDensity.
NuclearPotential::INuclearPotential const * getPotential() const
Getter for thePotential.
G4double squareInvariantMass(const G4double E, const ThreeVector &p)
G4double momentumInLab(Particle const *const p1, Particle const *const p2)
gives the momentum in the lab frame of two particles.
const G4INCL::ThreeVector & getMomentum() const
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)
const ThreeVector & adjustMomentumFromEnergy()
Rescale the momentum to match the total energy.
ParticleList::const_iterator ParticleIter
G4double sumTotalEnergies(const ParticleList &)
G4double getLocalEnergy(Nucleus const *const n, Particle *const p)