18 double deltaCov00 = 0.;
34 deltaCov(0,0) = deltaCov00;
51 double& deltaP,
double& deltaCov00)
const {
56 double p = localP.
mag();
58 const double m =
mass();
59 const double emass = 0.511e-3;
61 const double poti = 16.e-9 * 10.75;
62 const double eplasma = 28.816e-9 *
sqrt(2.33*0.498);
63 const double delta0 = 2*
log(eplasma/poti) - 1.;
65 double e =
sqrt(p*p + m*m);
68 double eta2 = beta*gamma; eta2 *= eta2;
69 double lnEta2 =
log(eta2);
70 double ratio = emass/
m;
71 double emax = 2.*emass*eta2/(1. + 2.*ratio*gamma + ratio*ratio);
72 double delta = delta0 + lnEta2;
75 double xi = pathLength * medium.
xi(); xi /= (beta*
beta);
77 double dEdx = xi*(
log(2.*emass*emax/(poti*poti))+lnEta2 - 2.*(beta*
beta) - delta);
78 double dEdx2 = xi*emax*(1.-beta*beta/2.);
79 double dP = dEdx/
beta;
80 double sigp2 = dEdx2*e*e/(p*p*p*p*p*
p);
90 double& deltaP,
double& deltaCov00)
const {
95 double p = localP.
mag();
96 double normalisedPath = pathLength / medium.
x0();
101 double z =
exp(-normalisedPath);
102 double varz = (
exp(-normalisedPath*
log(3.)/
log(2.))-
103 exp(-2*normalisedPath));
123 deltaCov00 += f*f*varz;
virtual float mass() const
Particle mass assigned at construction.
void computeBetheBloch(const LocalVector &localP, double pathLength, const VolumeMediumProperties &medium, double &deltaP, double &deltaCov00) const
virtual VolumeEnergyLossEstimator * clone() const
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
LocalVector localMomentum() const
virtual VolumeMaterialEffectsEstimate estimate(const TrajectoryStateOnSurface refTSOS, double pathLength, const VolumeMediumProperties &medium) const
Creates an estimate.
VolumeEnergyLossEstimator(float mass)
Constructor with explicit mass hypothesis.
void computeElectrons(const LocalVector &localP, double pathLength, const VolumeMediumProperties &medium, double &deltaP, double &deltaCov00) const