11#include <Math/IFunction.h>
12#include <Math/IntegratorMultiDim.h>
13#include "Math/AdaptiveIntegratorMultiDim.h"
15#include "Framework/Conventions/GBuild.h"
60 LOG(
"SKXSec",
pDEBUG) <<
"Integrating the Alam Simo Athar Vacas model";
68 LOG(
"SKXSec",
pDEBUG) <<
"*** Below energy threshold";
79 init_state.
Tgt().
Z() : init_state.
Tgt().
N();
92 <<
"From XSecSplineList: XSec[SK,free nucleon] (E = " << Ev <<
" GeV) = " << xsec;
95 LOG(
"SKXSec",
pINFO) <<
"XSec[SK] (E = " << Ev <<
" GeV) = " << xsec;
113 double tmax = Enu - mk - ml;
116 <<
"Lepton/Kaon KE integration range = [" << 0.0 <<
", " << tmax <<
"]";
126 ROOT::Math::IBaseFunctionMultiDim *
func =
128 double kine_min[3] = { zero, zero, -20 };
129 double kine_max[3] = { tmax, tmax, 0.69314718056 };
131 ROOT::Math::IntegrationMultiDim::Type ig_type =
137 xsec = ig.Integral(kine_min, kine_max) * (1E-38 *
units::cm2);
173ROOT::Math::IBaseFunctionMultiDim(),
207 else if( Enu > 1.0 ) phikq =
constants::kPi*(0.5 + 0.025*(Enu-1.0));
214 double log_oneminuscostheta = xin[2];
215 double cos_theta_l = 1.0 - TMath::Exp(log_oneminuscostheta);
216 double J = 1.0 - cos_theta_l;
225 <<
"t_l = " << T_l <<
" t_k = " << T_k
226 <<
" costhetal = " << cos_theta_l <<
" phikq = " << phikq
227 <<
" enu = " << Enu <<
" Xsec = " << xsec;
236ROOT::Math::IBaseFunctionMultiDim *
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE,...
Most commonly used PDG codes. A set of utility functions to handle PDG codes is provided in PDGUtils.
AlamSimoAtharVacasSKXSec()
virtual ~AlamSimoAtharVacasSKXSec()
void Configure(const Registry &config)
double Integrate(const XSecAlgorithmI *model, const Interaction *i) const
virtual void Configure(const Registry &config)
bool GetParamDef(const RgKey &name, T &p, const T &def) const
Initial State information.
const Target & Tgt(void) const
double ProbeE(RefFrame_t rf) const
Target * TgtPtr(void) const
Summary information for an interaction.
const XclsTag & ExclTag(void) const
InitialState * InitStatePtr(void) const
int FSPrimLeptonPdg(void) const
final state primary lepton pdg
const KPhaseSpace & PhaseSpace(void) const
bool IsAboveThreshold(void) const
Checks whether the interaction is above the energy threshold.
Generated/set kinematical variables for an event.
static PDGLibrary * Instance(void)
TParticlePDG * Find(int pdgc, bool must_exist=true)
A registry. Provides the container for algorithm configuration parameters.
A numeric analysis tool class for interpolating 1-D functions.
double Evaluate(double x) const
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
int HitNucPdg(void) const
bool IsNucleus(void) const
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)
List of cross section vs energy splines.
bool SplineExists(const XSecAlgorithmI *alg, const Interaction *i) const
const Spline * GetSpline(const XSecAlgorithmI *alg, const Interaction *i) const
static XSecSplineList * Instance()
int StrangeHadronPdg(void) const
const XSecAlgorithmI * fModel
double DoEval(const double *xin) const
d3Xsec_dTldTkdCosThetal(const XSecAlgorithmI *m, const Interaction *i)
unsigned int NDim(void) const
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
const Interaction * fInteraction
~d3Xsec_dTldTkdCosThetal()
double func(double x, double y)
Misc GENIE control constants.
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 kISkipKinematicChk
if set, skip kinematic validity checks
const UInt_t kISkipProcessChk
if set, skip process validity checks
const UInt_t kIAssumeFreeNucleon