18 #include <Math/Integrator.h> 23 using namespace genie;
29 MuELossI(
"genie::mueloss::PetrukhinShestakovModel")
35 MuELossI(
"genie::mueloss::PetrukhinShestakovModel", config)
65 ROOT::Math::IBaseFunctionOneDim * integrand =
72 int nmaxeval = 100000;
73 ROOT::Math::Integrator ig(*integrand,ig_type,abstol,reltol,nmaxeval);
77 double bbrem = (
kNA/
A) * ig.Integral(Vmin, Vmax);
82 double de_dx = bbrem*
E;
87 ROOT::Math::IBaseFunctionOneDim()
109 double v2 = TMath::Power(v,2.);
111 if (! (v >0))
return 0;
113 if (! (
fE>0))
return 0;
116 double Z2 = TMath::Power(
fZ,2.);
117 double Zm13 = TMath::Power(
fZ,-1./3.);
118 double Zm23 = TMath::Power(
fZ,-2./3.);
119 double a3 = TMath::Power(
kAem,3.);
123 double mmue = mmu/
me;
124 double memu = me/
mmu;
125 double memu2 = TMath::Power(memu,2);
128 double delta = (mmu2/
fE) * 0.5*v/(1.-v);
132 double a = ( (
fZ<10) ? 189.*mmue * Zm13 : 189.*mmue * (2./3.)*Zm23 );
134 double fi = TMath::Log(a/b);
137 double ds_dv = (a3*memu2*
kLe2) * (4*Z2) * (fi) * (4/3.-4*v/3.+v2)/v;
138 double vds_dv = v*ds_dv;
142 ROOT::Math::IBaseFunctionOneDim *
ROOT::Math::IntegrationOneDim::Type Integration1DimTypeFromString(string type)
ROOT::Math::IBaseFunctionOneDim * Clone(void) const
double DoEval(double xin) const
THE MAIN GENIE PROJECT NAMESPACE
static constexpr double g
static const double kSqrtNapierConst
static double Z(MuELMaterial_t material)
The MuELoss utility package that computes muon energy losses in the energy range from 1 GeV to 10 TeV...
~PetrukhinShestakovIntegrand()
static const double kElectronMass
static double Threshold(MuELProcess_t p)
virtual ~PetrukhinShestakovModel()
PetrukhinShestakovModel()
static const double kMuonMass2
PetrukhinShestakovIntegrand(double E, double Z)
MuELProcess_t Process(void) const
double dE_dx(double E, MuELMaterial_t material) const
Implement the MuELossI interface.
unsigned int NDim(void) const
static const double kMuonMass
static double A(MuELMaterial_t material)
enum genie::mueloss::EMuELMaterial MuELMaterial_t