16 #include <Math/IFunction.h>
17 #include <Math/IntegratorMultiDim.h>
20 #include "Framework/Conventions/GBuild.h"
38 using namespace genie;
39 using namespace genie::constants;
40 using namespace genie::units;
68 LOG(
"ReinSehgalRESXSecFast",
pDEBUG) <<
"*** Below energy threshold";
105 << Ev <<
" GeV) = " << xsec/(1E-38 *
cm2)<<
" x 1E-38 cm^2";
127 <<
"Finding cache branch with key: " << key;
132 <<
"No cached RES v-production data for input neutrino"
133 <<
" (pdgc: " << nu_pdgc <<
")";
135 <<
"Wait while computing/caching RES production xsec first...";
139 LOG(
"ReinSehgalResTF",
pINFO) <<
"Done caching resonance xsec data";
141 <<
"Finding newly created cache branch with key: " << key;
144 assert(cache_branch);
151 double rxsec = (Ev<
fEMax-1) ? cbranch(Ev) : cbranch(
fEMax-1);
155 << Ev <<
" GeV) = " << rxsec/(1E-38 *
cm2)<<
" x 1E-38 cm^2";
172 <<
"*** Integrating d^2 XSec/dWdQ^2 for R: "
175 <<
"{W} = " << rW.
min <<
", " << rW.
max;
177 <<
"{Q^2} = " << rQ2.
min <<
", " << rQ2.
max;
182 ig.SetFunction(*func);
183 double kine_min[2] = { rW.
min, rQ2.
min };
184 double kine_max[2] = { rW.
max, rQ2.
max };
185 double xsec = ig.Integral(kine_min, kine_max) * (1E-38 *
units::cm2);
220 GetParam(
"ResonanceNameList", resonances ) ;
Cross Section Calculation Interface.
const KPhaseSpace & PhaseSpace(void) const
Class that caches resonance neutrinoproduction cross sections on free nucleons according to the Rein-...
InteractionType_t InteractionTypeId(void) const
string fGSLIntgType
name of GSL numerical integrator
ROOT::Math::IntegrationMultiDim::Type IntegrationNDimTypeFromString(string type)
int HitNucPdg(void) const
A simple [min,max] interval for doubles.
bool SplineExists(const XSecAlgorithmI *alg, const Interaction *i) const
A numeric analysis tool class for interpolating 1-D functions.
bool IsNucleus(void) const
void DecodeFromNameList(string list, string delimiter=",")
const XSecAlgorithmI * fSingleResXSecModel
void CacheResExcitationXSec(const Interaction *interaction) const
static XSecSplineList * Instance()
double Evaluate(double x) const
enum genie::EResonance Resonance_t
string CacheBranchName(Resonance_t r, InteractionType_t it, int nu, int nuc) const
double Integrate(const XSecAlgorithmI *model, const Interaction *i) const
Summary information for an interaction.
bool BareXSecPreCalc(void) const
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
static constexpr double cm2
A class encapsulating an enumeration of interaction types (EM, Weak-CC, Weak-NC) and scattering types...
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
virtual void Configure(const Registry &config)
double func(double x, double y)
bool fUsePauliBlocking
account for Pauli blocking?
Resonance_t Resonance(void) const
virtual bool ValidProcess(const Interaction *i) const =0
Can this cross section algorithm handle the input process?
CacheBranchI * FindCacheBranch(string key)
finding/adding cache branches
int fGSLMaxEval
GSL max evaluations.
static RunOpt * Instance(void)
A registry. Provides the container for algorithm configuration parameters.
void Configure(const Registry &config)
const UInt_t kIAssumeFreeNucleon
const XclsTag & ExclTag(void) const
Target * TgtPtr(void) const
bool IsAboveThreshold(void) const
Checks whether the interaction is above the energy threshold.
InitialState * InitStatePtr(void) const
const InitialState & InitState(void) const
const char * AsString(Resonance_t res)
resonance id -> string
const ProcessInfo & ProcInfo(void) const
bool GetParamDef(const RgKey &name, T &p, const T &def) const
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
const Target & Tgt(void) const
static Cache * Instance(void)
A simple cache branch storing the cached data in a TNtuple.
#define SLOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a short string (using the FUNCTION and...
const Spline * GetSpline(const XSecAlgorithmI *alg, const Interaction *i) const
List of cross section vs energy splines.
double ProbeE(RefFrame_t rf) const
Most commonly used PDG codes. A set of utility functions to handle PDG codes is provided in PDGUtils...
enum genie::EInteractionType InteractionType_t
virtual ~ReinSehgalRESXSecFast()
Initial State information.
double fGSLRelTol
required relative tolerance (error)