18#include <Math/Integrator.h>
29MuELossI(
"genie::mueloss::PetrukhinShestakovModel")
35MuELossI(
"genie::mueloss::PetrukhinShestakovModel", config)
65 ROOT::Math::IBaseFunctionOneDim * integrand =
67 ROOT::Math::IntegrationOneDim::Type ig_type =
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;
87ROOT::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;
142ROOT::Math::IBaseFunctionOneDim *
static double A(MuELMaterial_t material)
static double Z(MuELMaterial_t material)
static double Threshold(MuELProcess_t p)
double dE_dx(double E, MuELMaterial_t material) const
Implement the MuELossI interface.
MuELProcess_t Process(void) const
virtual ~PetrukhinShestakovModel()
PetrukhinShestakovModel()
ROOT::Math::IBaseFunctionOneDim * Clone(void) const
unsigned int NDim(void) const
double DoEval(double xin) const
~PetrukhinShestakovIntegrand()
PetrukhinShestakovIntegrand(double E, double Z)
static const double kMuonMass2
static const double kSqrtNapierConst
static const double kMuonMass
static const double kElectronMass
The MuELoss utility package that computes muon energy losses in the energy range from 1 GeV to 10 TeV...
enum genie::mueloss::EMuELMaterial MuELMaterial_t
static constexpr double g
ROOT::Math::IntegrationOneDim::Type Integration1DimTypeFromString(string type)
THE MAIN GENIE PROJECT NAMESPACE