26#include <Math/IFunction.h>
27#include <Math/Integrator.h>
30#include "Framework/Conventions/GBuild.h"
42using std::ostringstream;
65 LOG(
"SMQELXSec",
pDEBUG) <<
"Beginning integrate";
74 LOG(
"SMQELXSec",
pDEBUG) <<
"*** Below energy threshold";
78 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) * (1E-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") ) );
168ROOT::Math::IBaseFunctionMultiDim(),
174 sm_utils->SetInteraction(interaction);
197 double Q2 = (
rQ2.max-
rQ2.min)*xin[0]+
rQ2.min;
199 double v = (rv.
max-rv.
min)*xin[1]+rv.
min;
213ROOT::Math::IBaseFunctionMultiDim *
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE,...
The GENIE Algorithm Factory.
const Algorithm * GetAlgorithm(const AlgId &algid)
static AlgFactory * Instance()
virtual void Configure(const Registry &config)
bool GetParamDef(const RgKey &name, T &p, const T &def) const
const Algorithm * SubAlg(const RgKey ®istry_key) const
Initial State information.
const Target & Tgt(void) const
double ProbeE(RefFrame_t rf) const
Summary information for an interaction.
const KPhaseSpace & PhaseSpace(void) const
const InitialState & InitState(void) const
bool IsAboveThreshold(void) const
Checks whether the interaction is above the energy threshold.
Range1D_t Limits(KineVar_t kvar) const
Return the kinematical variable limits.
Generated/set kinematical variables for an event.
A simple [min,max] interval for doubles.
A registry. Provides the container for algorithm configuration parameters.
void Set(RgIMapPair entry)
string fGSLIntgType2D
name of GSL 2D numerical integrator
void Configure(const Registry &config)
SmithMonizUtils * sm_utils
double Integrate(const XSecAlgorithmI *model, const Interaction *i) const
XSecIntegratorI interface implementation.
double fGSLRelTol2D
required relative tolerance (error) for 2D integrator
virtual ~SmithMonizQELCCXSec()
Contains auxiliary functions for Smith-Moniz model. .
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
Cross Section Calculation Interface.
virtual bool ValidProcess(const Interaction *i) const =0
Can this cross section algorithm handle the input process?
string fGSLIntgType
name of GSL numerical integrator
unsigned int fGSLMaxSizeOfSubintervals
GSL maximum number of sub-intervals for 1D integrator.
unsigned int fGSLRule
GSL Gauss-Kronrod integration rule (only for GSL 1D adaptive type)
int fGSLMaxEval
GSL max evaluations.
double fGSLRelTol
required relative tolerance (error)
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
const XSecAlgorithmI * fModel
d2Xsec_dQ2dv(const XSecAlgorithmI *m, const Interaction *i)
const Interaction * fInteraction
unsigned int NDim(void) const
SmithMonizUtils * sm_utils
double DoEval(const double *xin) const
double func(double x, double y)
static constexpr double cm2
ROOT::Math::IntegrationMultiDim::Type IntegrationNDimTypeFromString(string type)
ROOT::Math::IntegrationOneDim::Type Integration1DimTypeFromString(string type)
THE MAIN GENIE PROJECT NAMESPACE
const UInt_t kISkipKinematicChk
if set, skip kinematic validity checks
const UInt_t kISkipProcessChk
if set, skip process validity checks