16#include <TDatabasePDG.h>
17#include <TParticlePDG.h>
42 TDatabasePDG* db = TDatabasePDG::Instance();
43 TParticlePDG* particle = db->GetParticle(pdg);
44 assert(particle !=
nullptr);
45 fMass = particle->Mass();
47 fIsMuon = (std::abs(pdg) == 13) ?
true :
false;
79 litfloat Q33 = (1 + tx * tx) * t * thetaSq;
80 litfloat Q44 = (1 + ty * ty) * t * thetaSq;
81 litfloat Q34 = tx * ty * t * thetaSq;
83 litfloat T23 = (thickness * thickness) / 3.0;
118 litfloat Q33 = (1 + tx * tx) * t * thetaSq;
119 litfloat Q44 = (1 + ty * ty) * t * thetaSq;
120 litfloat Q34 = tx * ty * t * thetaSq;
139 litfloat theta = 0.0136 * (1. / bcp) * z * std::sqrt(
x / X0) * (1. + 0.038 * std::log(
x / X0));
140 return theta * theta;
146 return dEdx(par, mat) * length;
167 litfloat E = std::sqrt(M * M + p * p);
177 litfloat Tmax = (2 * me * betaSq * gammaSq) / (1 + 2 * gamma * ratio + ratio * ratio);
183 litfloat hwp = 28.816 * std::sqrt(rho * Z / A) * 1e-9;
184 dc = std::log(hwp / I) + std::log(beta * gamma) - 0.5;
187 return K * z * z * (Z / A) * (1. / betaSq)
188 * (0.5 * std::log(2 * me * betaSq * gammaSq * Tmax / (I * I)) - betaSq - dc);
199 litfloat E = std::sqrt(me * me + p * p);
208 return K * (Z / A) * (std::log(2 * me / I) + 1.5 * std::log(gamma) - 0.975);
211 return K * (Z / A) * (std::log(2 * me / I) + 2. * std::log(gamma) - 1.);
219 litfloat E = std::sqrt(p * p + massSq);
225 litfloat pnew = (Enew >
fMass) ? std::sqrt(Enew * Enew - massSq) : 0.;
243 litfloat E = std::sqrt(P * P + XMASS * XMASS);
254 litfloat XI = (153.5 * Z * STEP * RHO) / (A * BETA * BETA);
261 litfloat F2 = 1. + 2. * RATIO * GAMMA + RATIO * RATIO;
264 litfloat DEDX2 = XI * EMAX * (1. - (BETA * BETA / 2.)) * 1e-12;
266 litfloat SDEDX = (E * E * DEDX2) / std::pow(P, 6);
268 return std::abs(SDEDX);
276 return par->
GetQp() * par->
GetQp() * (std::exp(-
x / X0 * std::log(3.0) / std::log(2.0)) - std::exp(-2.0 *
x / X0));
286 return 16 * std::pow(Z, 0.9);
297 litfloat E = std::sqrt(M * M + p * p);
300 return (E * ratio * ratio) / (X0 * rho);
309 litfloat E = std::sqrt(M * M + p * p);
311 return 7e-5 * E / (X0 * rho);
334 litfloat E = std::sqrt(M * M + p * p);
340 litfloat ksi = (K / 2.) * (Z / A) * (
x / betaSq);
347 litfloat eloss = ksi * (std::log(2 * M * betaSq * gammaSq / I) + std::log(ksi / I) + j - betaSq - dc);
Calculation of multiple scattering and energy loss.
Data class for track parameters.
litfloat CalcThetaSq(const CbmLitTrackParam *par, const CbmLitMaterialInfo *mat) const
LitStatus Update(CbmLitTrackParam *par, const CbmLitMaterialInfo *mat, int pdg, bool downstream)
Inherited from CbmLitMaterialEffects.
litfloat CalcI(litfloat Z) const
void AddEnergyLoss(CbmLitTrackParam *par, const CbmLitMaterialInfo *mat) const
litfloat BetheBlochElectron(const CbmLitTrackParam *par, const CbmLitMaterialInfo *mat) const
litfloat BetheHeitler(const CbmLitTrackParam *par, const CbmLitMaterialInfo *mat) const
litfloat dEdx(const CbmLitTrackParam *par, const CbmLitMaterialInfo *mat) const
litfloat MPVEnergyLoss(const CbmLitTrackParam *par, const CbmLitMaterialInfo *mat) const
litfloat CalcSigmaSqQpElectron(const CbmLitTrackParam *par, const CbmLitMaterialInfo *mat) const
void AddThickScatter(CbmLitTrackParam *par, const CbmLitMaterialInfo *mat) const
void AddThinScatter(CbmLitTrackParam *par, const CbmLitMaterialInfo *mat) const
virtual ~CbmLitMaterialEffectsImp()
Destructor.
litfloat CalcQpAfterEloss(litfloat qp, litfloat eloss) const
litfloat PairProduction(const CbmLitTrackParam *par, const CbmLitMaterialInfo *mat) const
litfloat BetheBloch(const CbmLitTrackParam *par, const CbmLitMaterialInfo *mat) const
litfloat CalcSigmaSqQp(const CbmLitTrackParam *par, const CbmLitMaterialInfo *mat) const
litfloat BetheBlochSimple(const CbmLitMaterialInfo *mat) const
CbmLitMaterialEffectsImp()
Constructor.
litfloat EnergyLoss(const CbmLitTrackParam *par, const CbmLitMaterialInfo *mat) const
litfloat GetLength() const
Data class for track parameters.
void SetCovariance(int index, litfloat cov)
const vector< litfloat > & GetCovMatrix() const
void SetCovMatrix(const vector< litfloat > &C)
litfloat GetCovariance(int index) const
static const litfloat ENERGY_LOSS_CONST