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