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"
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);
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE,...
virtual void Configure(const Registry &config)
bool GetParamDef(const RgKey &name, T &p, const T &def) const
void Configure(const Registry &config)
double Integrate(const XSecAlgorithmI *model, const Interaction *i) const
Initial State information.
double ProbeE(RefFrame_t rf) const
Summary information for an interaction.
const KPhaseSpace & PhaseSpace(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.
A simple [min,max] interval for doubles.
A registry. Provides the container for algorithm configuration parameters.
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
int fGSLMaxEval
GSL max evaluations.
double fGSLRelTol
required relative tolerance (error)
double func(double x, double y)
Misc GENIE control constants.
static const double kASmallNum
static constexpr double cm2
Simple functions for loading and reading nucleus dependent keys from config files.
ROOT::Math::IntegrationMultiDim::Type IntegrationNDimTypeFromString(string type)
Root of GENIE utility namespaces.
THE MAIN GENIE PROJECT NAMESPACE
const UInt_t kISkipProcessChk
if set, skip process validity checks