17 using namespace genie;
18 using namespace genie::mueloss;
19 using namespace genie::constants;
22 BetheBlochModel::BetheBlochModel() :
23 MuELossI(
"genie::mueloss::BetheBlochModel")
29 MuELossI(
"genie::mueloss::BetheBlochModel", config)
58 double E2 = TMath::Power(E,2);
59 double beta = TMath::Sqrt(E2-mmu2)/E;
60 double beta2 = TMath::Power(beta,2);
62 double gamma2 = TMath::Power(gamma,2);
64 double I2 = TMath::Power(I,2);
69 double Emaxt = 2*me*p2 / (me2 + mmu2 + 2*me*E);
70 double Emaxt2 = TMath::Power(Emaxt,2);
79 double X = TMath::Log10(beta*gamma);
82 if(X0<X && X<X1) delta = 4.6052*X + a*TMath::Power(X1-X,m) + C;
83 if(X>X1) delta = 4.6052*X + C;
85 LOG(
"MuELoss",
pDEBUG) <<
"density correction factor = " << delta;
86 LOG(
"MuELoss",
pDEBUG) <<
"max energy transfer (GeV) = " << Emaxt;
87 LOG(
"MuELoss",
pDEBUG) <<
"ionization potential (GeV)= " << I;
88 LOG(
"MuELoss",
pDEBUG) <<
"E = " << E <<
", p2 = " << p2;
89 LOG(
"MuELoss",
pDEBUG) <<
"beta = " << beta <<
", gamma = " << gamma;
92 double de_dx = a2 * (2*
kPi*Na*lamda2) * Z_A * (me/beta2) *
93 (TMath::Log( 2*me*beta2*gamma2*Emaxt/I2 ) -
94 2*beta2 + 0.25*(Emaxt2/E2) - delta);
static constexpr double g
static double Z(MuELMaterial_t material)
static double DensityCorrection_m(MuELMaterial_t material)
static double DensityCorrection_C(MuELMaterial_t material)
MuELProcess_t Process(void) const
static const double kElectronMass
static double Threshold(MuELProcess_t p)
static double DensityCorrection_a(MuELMaterial_t material)
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
static const double kElectronMass2
static constexpr double eV
static double IonizationPotential(MuELMaterial_t material)
static constexpr double A
static constexpr double cm2
static constexpr double GeV
static const double kAem2
static const double kMuonMass2
static double DensityCorrection_X0(MuELMaterial_t material)
static const double kMuonMass
double dE_dx(double E, MuELMaterial_t material) const
implement the MuELossI interface
virtual ~BetheBlochModel()
static double DensityCorrection_X1(MuELMaterial_t material)
static constexpr double m
static double A(MuELMaterial_t material)
enum genie::mueloss::EMuELMaterial MuELMaterial_t