 |
ATLAS Offline Software
|
Go to the documentation of this file.
73 DensityEffect(
const double zOverAtimesRho,
const double eta,
74 const double gamma,
const double I) {
81 double eplasma = 28.816e-6 * std::sqrt(1000. * zOverAtimesRho);
93 KAZ(
const double zOverAtimesRho) {
95 return 0.5 * 30.7075 * zOverAtimesRho;
100 LandauMPV(
const double kazL,
const double eta2,
const double I,
101 const double beta,
const double delta) {
123 if (
mat.averageZ() < 1) {
127 const double mfrac = s_me /
m;
128 const double E = std::sqrt(
p *
p +
m *
m);
129 const double beta =
p /
E;
131 const double I = MeanExcitationEnergy(
mat);
132 const double zOverAtimesRho =
mat.zOverAtimesRho();
133 double kaz = KAZ(zOverAtimesRho);
134 double Ionization = 0.;
140 Ionization = -kaz * (2. *
log(2. * s_me /
I) + 3. *
log(
gamma) - 1.95);
146 const double delta = DensityEffect(zOverAtimesRho,
eta,
gamma,
I);
149 2. *
eta2 * s_me / (1. + 2. *
gamma * mfrac + mfrac * mfrac);
153 Ionization = -kaz * (
std::log(2. * s_me *
eta2 * tMax / (
I *
I)) -
157 const double MPV = LandauMPV(kaz,
eta2,
I,
beta, delta);
158 constexpr
double factor = (1. / 3.59524);
159 sigma = -(Ionization - MPV) * factor;
172 if (
mat.averageZ() == 0. ||
mat.zOverAtimesRho() == 0.) {
175 const double iPot = 16.e-6 *
std::pow(
mat.averageZ(), 0.9);
177 const double zOverAtimesRho =
mat.zOverAtimesRho();
178 double kaz = KAZ(
mat.zOverAtimesRho());
183 double delta = DensityEffect(zOverAtimesRho,
eta,
gamma, iPot);
185 double mfrac = s_me /
m;
187 double tMax = 2. *
eta2 * s_me / (1. + 2. *
gamma * mfrac + mfrac * mfrac);
191 return kaz * (
std::log(2. * s_me *
eta2 * tMax / (iPot * iPot)) -
210 const double E = std::sqrt(
p *
p +
m *
m);
211 const double beta =
p /
E;
213 const double I = MeanExcitationEnergy(
mat);
214 const double zOverAtimesRho =
mat.zOverAtimesRho();
215 double kaz = KAZ(zOverAtimesRho);
218 const double delta = DensityEffect(zOverAtimesRho,
eta,
gamma,
I);
238 const double mfrac = s_me /
m;
239 const double E = sqrt(
p *
p +
m *
m);
242 double Radiation = -
E * mfrac * mfrac;
253 Radiation += 0.5345 - 6.803e-5 *
E - 2.278e-11 *
E *
E +
254 9.899e-18 *
E *
E *
E;
255 sigma += (0.1828 - 3.966e-3 * std::sqrt(
E) + 2.151e-5 *
E);
257 Radiation += 2.986 - 9.253e-5 *
E;
258 sigma += 17.73 + 2.409e-5 * (
E - 1000000.);
263 return Radiation /
mat.x0();
274 return initialE /
mat.x0() * mfrac;
280 if (dInX0 == 0. ||
p == 0. ||
beta == 0.) {
285 return 13.6 * std::sqrt(dInX0) / (
beta *
p) *
static double dEdl_ionization(double p, const Material &mat, ParticleHypothesis particle, double &sigma, double &kazL)
dE/dl ionization energy loss per path unit
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
static double sigmaMS(double dInX0, double p, double beta)
multiple scattering as function of dInX0
path
python interpreter configuration --------------------------------------—
Scalar eta() const
pseudorapidity method
static double dE_MPV_ionization(double p, const Trk::Material &mat, Trk::ParticleHypothesis particle, double &sigma, double &kazL, double path)
Most Propable dE ionization energly loss.
#define ATH_ALWAYS_INLINE
static double dEdl_radiation(double p, const Material &mat, ParticleHypothesis particle, double &sigma)
dE/dl radiation energy loss per path unit
constexpr double mass[PARTICLEHYPOTHESES]
the array of masses
static double dEdXBetheBloch(const Trk::MaterialProperties &mat, double beta, double gamma, Trk::ParticleHypothesis particle)
dE/dl ionization energy loss per path unit
static double dEdXBetheHeitler(const Trk::MaterialProperties &mat, double initialE, Trk::ParticleHypothesis particle)
constexpr int pow(int base, int exp) noexcept