12 #include <Math/IFunction.h>
13 #include <Math/Integrator.h>
14 #include <Math/IntegratorMultiDim.h>
15 #include "Math/AdaptiveIntegratorMultiDim.h"
17 #include "Framework/Conventions/GBuild.h"
29 using namespace genie;
30 using namespace genie::constants;
31 using namespace genie::controls;
32 using namespace genie::utils;
61 LOG(
"COHXSecAR",
pDEBUG) <<
"*** Below energy threshold";
69 double Elep_min = (1.-y_lim.
max) * Enu;
70 double Elep_max = (1.-y_lim.
min) * Enu;
73 <<
"Lepton energy integration range = [" << Elep_min <<
", " << Elep_max <<
"]";
85 ROOT::Math::IntegrationOneDim::Type ig_type = ROOT::Math::IntegrationOneDim::kADAPTIVE;
91 ROOT::Math::Integrator ig(*func,ig_type,abstol,
fGSLRelTol,size,rule);
93 xsec = ig.Integral(Elep_min, Elep_max) * (1E-38 *
units::cm2);
106 ROOT::Math::IBaseFunctionMultiDim *
func =
108 double kine_min[4] = { Elep_min, zero , zero , zero };
109 double kine_max[4] = { Elep_max, pi , pi , twopi };
111 ROOT::Math::IntegrationMultiDim::Type ig_type =
117 xsec = ig.Integral(kine_min, kine_max) * (1E-38 *
units::cm2);
Cross Section Calculation Interface.
const KPhaseSpace & PhaseSpace(void) const
string fGSLIntgType
name of GSL numerical integrator
Cross Section Integrator Interface.
ROOT::Math::IntegrationMultiDim::Type IntegrationNDimTypeFromString(string type)
A simple [min,max] interval for doubles.
double Integrate(const XSecAlgorithmI *model, const Interaction *i) const
Range1D_t Limits(KineVar_t kvar) const
Return the kinematical variable limits.
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...
static constexpr double cm2
virtual void Configure(const Registry &config)
double func(double x, double y)
static const double kASmallNum
virtual bool ValidProcess(const Interaction *i) const =0
Can this cross section algorithm handle the input process?
int fGSLMaxEval
GSL max evaluations.
A registry. Provides the container for algorithm configuration parameters.
bool IsAboveThreshold(void) const
Checks whether the interaction is above the energy threshold.
bool GetParamDef(const RgKey &name, T &p, const T &def) const
double ProbeE(RefFrame_t rf) const
const UInt_t kISkipProcessChk
if set, skip process validity checks
Initial State information.
double fGSLRelTol
required relative tolerance (error)