12 #include <Math/Integrator.h>
18 using namespace genie;
19 using namespace genie::mueloss;
20 using namespace genie::constants;
23 BezrukovBugaevModel::BezrukovBugaevModel() :
24 MuELossI(
"genie::mueloss::BezrukovBugaevModel")
30 MuELossI(
"genie::mueloss::BezrukovBugaevModel", config)
60 ROOT::Math::IBaseFunctionOneDim * integrand =
62 ROOT::Math::IntegrationOneDim::Type ig_type =
67 int nmaxeval = 100000;
68 ROOT::Math::Integrator ig(*integrand,ig_type,abstol,reltol,nmaxeval);
72 double bnucl = (
kNA/
A) * ig.Integral(Vmin, Vmax);
77 double de_dx = bnucl*E;
105 ROOT::Math::IBaseFunctionOneDim()
127 if (! (v >0))
return 0;
129 if (! (fE>0))
return 0;
134 double v2 = TMath::Power(v,2.);
135 double t = mmu2 *v2/(1-v);
136 double k = 1. - 2./v + 2./v2;
137 double A13 = TMath::Power(fA,1./3.);
140 double M1_2_t = M1_2 / t;
141 double M2_2_t = M2_2 / t;
142 double mmu2_t = mmu2 / t;
143 double d = M1_2 / (t + M1_2);
147 double loge = TMath::Log(0.0213*Ep);
148 double sig = 114.3 + 1.647 * loge*loge;
152 double x = 0.00282*A13*sig;
155 double G = 3*(0.5*x2 - 1. + (1.+x)*TMath::Exp(-x)) /x3;
159 double bbA = 0.5*(a/pi) * fA * sig * v;
160 double bbB = 0.75*G * ( k*TMath::Log(1.+M1_2_t) - k*d - 2.*mmu2_t );
161 double bbC = 0.25 * ( k*TMath::Log(1.+M2_2_t) - 2.*mmu2_t );
162 double bbD = 0.5*mmu2_t * ( 0.75*G*d + 0.25*M2_2_t*TMath::Log(1.+1./M2_2_t) );
164 double ds_dv = bbA*(bbB+bbC+bbD);
165 double vds_dv = v*ds_dv;
171 ROOT::Math::IBaseFunctionOneDim *
unsigned int NDim(void) const
ROOT::Math::IntegrationOneDim::Type Integration1DimTypeFromString(string type)
static constexpr double g
double DoEval(double xin) const
static const double kSqrtNapierConst
static double Z(MuELMaterial_t material)
ROOT::Math::IBaseFunctionOneDim * Clone(void) const
virtual ~BezrukovBugaevModel()
static constexpr double ub
static double Threshold(MuELProcess_t p)
MuELProcess_t Process(void) const
BezrukovBugaevIntegrand(double E, double A)
static constexpr double A
static const double kMuonMass2
static const double kMuonMass
double dE_dx(double E, MuELMaterial_t material) const
Implement the MuELossI interface.
static double A(MuELMaterial_t material)
~BezrukovBugaevIntegrand()
enum genie::mueloss::EMuELMaterial MuELMaterial_t