27 double verySmallP2 = 0.0001;
28 if (p2 <= verySmallP2) {
29 deltaP.SetXYZT(0., 0., 0., 0.);
35 double beta2 = p2 / e2;
36 double gama2 = e2 /
m2;
41 double eSpread = 0.1536E-3 * charge2 * (
theZ() /
theA()) *
rho() * thick / beta2;
53 double aBitAboveMass = Particle.
particle().
mass() * 1.0001;
56 double fac =
std::sqrt((newE * newE - m2) / p2);
void setMomentum(const XYZTLorentzVector &vtx)
set the momentum
XYZVector Vect() const
the momentum threevector
static std::vector< std::string > checklist log
~EnergyLossSimulator() override
Default Destructor.
double rho() const
Density in g/cm3.
RawParticle const & particle() const
The particle being propagated.
double mass() const
get the MEASURED mass
double mostProbableLoss
The most probable enery loss.
double e() const
energy of the momentum
double Py() const
y of the momentum
double eMass() const
Electron mass in GeV/c2.
double Pz() const
z of the momentum
double charge() const
get the MEASURED charge
LandauFluctuationGenerator * theGenerator
The Landau Fluctuation generator.
double landau(RandomEngineAndDistribution const *random) const
Random generator of the dE/dX spread (Landau function)
EnergyLossSimulator(double A, double Z, double density, double radLen)
Constructor.
void compute(ParticlePropagator &Particle, RandomEngineAndDistribution const *) override
The real dE/dx generation and particle update.
double excitE() const
Mean excitation energy (in GeV)
double Px() const
x of the momentum
double radLenIncm() const
One radiation length in cm.
double E() const
energy of the momentum
XYZTLorentzVector deltaP
The actual energy loss.