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;
38 double charge2 =
Particle.particle().charge() *
Particle.particle().charge();
41 double eSpread = 0.1536E-3 * charge2 * (
theZ() /
theA()) *
rho() * thick / beta2;
53 double aBitAboveMass =
Particle.particle().mass() * 1.0001;
60 Particle.particle().Py() * (1. - fac),
61 Particle.particle().Pz() * (1. - fac),
double radLenIncm() const
One radiation length in cm.
~EnergyLossSimulator() override
Default Destructor.
double rho() const
Density in g/cm3.
double mostProbableLoss
The most probable enery loss.
double eMass() const
Electron mass in GeV/c2.
LandauFluctuationGenerator * theGenerator
The Landau Fluctuation generator.
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 landau(RandomEngineAndDistribution const *random) const
Random generator of the dE/dX spread (Landau function)
double excitE() const
Mean excitation energy (in GeV)
XYZTLorentzVector deltaP
The actual energy loss.