19 #include <Math/IFunction.h> 
   20 #include <Math/IntegratorMultiDim.h> 
   21 #include <Math/AdaptiveIntegratorMultiDim.h> 
   24 #include "Framework/Conventions/GBuild.h" 
   44 using namespace genie;
 
   45 using namespace genie::constants;
 
   46 using namespace genie::units;
 
  112                << Enu << 
" GeV) = " << xsec/(1E-38 *
cm2)<< 
" x 1E-38 cm^2";
 
  136          << 
"Finding cache branch with key: " << key;
 
  141            << 
"No cached ResSPP v-production data for input neutrino" 
  142            << 
" (pdgc: " << nu_pdgc << 
")";
 
  144            << 
"Wait while computing/caching ResSPP production xsec first...";
 
  148         LOG(
"SPPXSec", 
pINFO) << 
"Done caching resonance xsec data";
 
  150                << 
"Finding newly created cache branch with key: " << key;
 
  153         assert(cache_branch);
 
  160     double rxsec = (Enu<
fEMax-1) ? cbranch(Enu) : cbranch(
fEMax-1);
 
  165       << 
"/free]  (E="<< Enu << 
" GeV) = " << rxsec/(1E-38 *
genie::units::cm2) << 
" x 1E-38 cm^2";
 
  179           << 
"*** Integrating d^3 XSec/dWdQ^2dCosTheta for Ch: " 
  185     if (ig_type == ROOT::Math::IntegrationMultiDim::kADAPTIVE) 
 
  187       ROOT::Math::AdaptiveIntegratorMultiDim * cast = 
dynamic_cast<ROOT::Math::AdaptiveIntegratorMultiDim*
>( ig.GetIntegrator() );
 
  191     ig.SetFunction(*func);
 
  192     double kine_min[3] = { 0., 0., 0.};
 
  193     double kine_max[3] = { 1., 1., 1.};
 
  194     double xsec = ig.Integral(kine_min, kine_max)*(1E-38 * 
units::cm2);
 
  199       << 
"]  (E="<< Enu << 
" GeV) = " << xsec << 
" x 1E-38 cm^2";
 
  220   bool good_conf = true ;
 
  235     LOG(
"SPPXSec", 
pERROR) << 
"E max is required to be at least 20 GeV, you set " << 
fEMax << 
" GeV" ;
 
  241       << 
"Invalid configuration: Exiting" ;
 
Cross Section Calculation Interface. 
 
static SppChannel_t FromInteraction(const Interaction *interaction)
 
const KPhaseSpace & PhaseSpace(void) const 
 
InteractionType_t InteractionTypeId(void) const 
 
string fGSLIntgType
name of GSL numerical integrator 
 
bool IsNeutrino(int pdgc)
 
ROOT::Math::IntegrationMultiDim::Type IntegrationNDimTypeFromString(string type)
 
int HitNucPdg(void) const 
 
bool SplineExists(const XSecAlgorithmI *alg, const Interaction *i) const 
 
A numeric analysis tool class for interpolating 1-D functions. 
 
bool IsNucleus(void) const 
 
double Threshold_SPP_iso(void) const 
Energy limit for resonance single pion production on isoscalar nucleon. 
 
static XSecSplineList * Instance()
 
double Evaluate(double x) const 
 
bool fUsePauliBlocking
account for Pauli blocking? 
 
enum genie::ESppChannel SppChannel_t
 
static string AsString(SppChannel_t channel)
 
Summary information for an interaction. 
 
string CacheBranchName(SppChannel_t spp_channel, InteractionType_t it, int nu) const 
 
bool BareXSecPreCalc(void) const 
 
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
 
static int InitStateNucleon(SppChannel_t channel)
 
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)
 
const XSecAlgorithmI * fSinglePionProductionXSecModel
 
double func(double x, double y)
 
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)
 
Class that caches neutrino resonance SPP cross sections on free nucleons. This significantly speeds t...
 
void CacheResExcitationXSec(const Interaction *interaction) const 
 
A registry. Provides the container for algorithm configuration parameters. 
 
const UInt_t kIAssumeFreeNucleon
 
Target * TgtPtr(void) const 
 
InitialState * InitStatePtr(void) const 
 
const InitialState & InitState(void) const 
 
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. 
 
void Configure(const Registry &config)
 
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
 
int fGSLMinEval
GSL min evaluations. Ignored by some integrators. 
 
double Integrate(const XSecAlgorithmI *model, const Interaction *i) const 
 
Initial State information. 
 
double fGSLRelTol
required relative tolerance (error)