29 #include <Math/IFunction.h> 30 #include <Math/Integrator.h> 33 #include "Framework/Conventions/GBuild.h" 44 using namespace genie;
45 using std::ostringstream;
68 LOG(
"SMQELXSec",
pDEBUG) <<
"Beginning integrate";
77 LOG(
"SMQELXSec",
pDEBUG) <<
"*** Below energy threshold";
81 if(rQ2.
min<0 || rQ2.
max<0)
return 0;
105 double kine_min[2] = { 0, 0};
106 double kine_max[2] = { 1, 1};
113 xsec = ig.Integral(kine_min, kine_max) * (1
E-38 *
units::cm2);
133 Registry r(
"SmithMonizQELCCXSec_specific",
false ) ;
134 r.
Set(
"sm_utils_algo",
RgAlg(
"genie::SmithMonizUtils",
"Default") ) ;
147 int max_size_of_subintervals;
148 GetParamDef(
"gsl-max-size-of-subintervals", max_size_of_subintervals, 40000);
160 this ->
SubAlg(
"sm_utils_algo") ) );
168 ROOT::Math::IBaseFunctionMultiDim(),
170 fInteraction(interaction)
200 double v = (rv.max-rv.min)*xin[1]+rv.
min;
201 double J = (rQ2.
max-rQ2.
min)*(rv.max-rv.min);
214 ROOT::Math::IBaseFunctionMultiDim *
void SetInteraction(const Interaction *i)
Cross Section Calculation Interface.
Range1D_t Q2QES_SM_lim(void) const
const KPhaseSpace & PhaseSpace(void) const
ROOT::Math::IntegrationOneDim::Type Integration1DimTypeFromString(string type)
string fGSLIntgType
name of GSL numerical integrator
double J(double q0, double q3, double Enu, double ml)
THE MAIN GENIE PROJECT NAMESPACE
Cross Section Integrator Interface.
double Q2(const Interaction *const i)
ROOT::Math::IntegrationMultiDim::Type IntegrationNDimTypeFromString(string type)
Kinematics * KinePtr(void) const
virtual double XSec(const Interaction *i, KinePhaseSpace_t k=kPSfE) const =0
Compute the cross section for the input interaction.
double E_nu_thr_SM(void) const
A simple [min,max] interval for doubles.
double fGSLRelTol2D
required relative tolerance (error) for 2D integrator
Generated/set kinematical variables for an event.
unsigned int fGSLRule
GSL Gauss-Kronrod integration rule (only for GSL 1D adaptive type)
Range1D_t vQES_SM_lim(double Q2) const
Range1D_t Limits(KineVar_t kvar) const
Return the kinematical variable limits.
string fGSLIntgType2D
name of GSL 2D numerical integrator
void Configure(const Registry &config)
Summary information for an interaction.
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
const Interaction * fInteraction
static constexpr double cm2
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
virtual void Configure(const Registry &config)
SmithMonizUtils * sm_utils
const Algorithm * GetAlgorithm(const AlgId &algid)
unsigned int NDim(void) const
SmithMonizUtils * sm_utils
virtual ~SmithMonizQELCCXSec()
const UInt_t kISkipKinematicChk
if set, skip kinematic validity checks
void SetKV(KineVar_t kv, double value)
int fGSLMaxEval
GSL max evaluations.
Contains auxiliary functions for Smith-Moniz model. .
static AlgFactory * Instance()
unsigned int fGSLMaxSizeOfSubintervals
GSL maximum number of sub-intervals for 1D integrator.
A registry. Provides the container for algorithm configuration parameters.
bool IsAboveThreshold(void) const
Checks whether the interaction is above the energy threshold.
double DoEval(const double *xin) const
virtual bool ValidProcess(const Interaction *i) const =0
Can this cross section algorithm handle the input process?
const InitialState & InitState(void) const
bool GetParamDef(const RgKey &name, T &p, const T &def) const
const Target & Tgt(void) const
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
The GENIE Algorithm Factory.
void Set(RgIMapPair entry)
double ProbeE(RefFrame_t rf) const
const XSecAlgorithmI * fModel
const UInt_t kISkipProcessChk
if set, skip process validity checks
Initial State information.
double Integrate(const XSecAlgorithmI *model, const Interaction *i) const
XSecIntegratorI interface implementation.
double fGSLRelTol
required relative tolerance (error)
d2Xsec_dQ2dv(const XSecAlgorithmI *m, const Interaction *i)
const Algorithm * SubAlg(const RgKey ®istry_key) const