22 using namespace genie;
23 using namespace genie::constants;
64 <<
"*** No differential cross section calculation is implemented yet";
77 static const Int_t npts_nuebar = 21;
78 static const Double_t Evnuebar[npts_nuebar] = {
80 15.0e-3, 17.5e-3, 20.0e-3, 22.5e-3, 25.0e-3,
81 27.5e-3, 30.0e-3, 32.5e-3, 35.0e-3, 37.5e-3,
82 40.0e-3, 45.0e-3, 50.0e-3, 55.0e-3, 60.0e-3,
83 65.0e-3, 70.0e-3, 80.0e-3, 90.0e-3, 100.0e-3
86 static const Double_t Onuebar[npts_nuebar] = {
88 2.53e-2*xsunit, 7.27e-2*xsunit, 1.81e-1*xsunit, 4.21e-1*xsunit, 8.90e-1*xsunit,
89 1.69*xsunit, 2.94*xsunit, 4.76*xsunit, 7.26*xsunit, 1.06e1*xsunit,
90 1.48e1*xsunit, 2.64e1*xsunit, 4.29e1*xsunit, 6.46e1*xsunit, 9.17e1*xsunit,
91 1.25e2*xsunit, 1.63e2*xsunit, 2.57e2*xsunit, 3.77e2*xsunit, 5.18e2*xsunit
94 const TGraph dummy(npts_nuebar,Evnuebar,Onuebar);
95 fXsplNuebar =
new TSpline3(
"16O_nu_e_bar_xsec",&dummy);
107 static const Int_t npts_nue = 20;
108 static const Double_t Evnue[npts_nue] = {
109 15.0e-3, 17.5e-3, 20.0e-3, 22.5e-3, 25.0e-3,
110 27.5e-3, 30.0e-3, 32.5e-3, 35.0e-3, 37.5e-3,
111 40.0e-3, 45.0e-3, 50.0e-3, 55.0e-3, 60.0e-3,
112 65.0e-3, 70.0e-3, 80.0e-3, 90.0e-3, 100.0e-3
115 static const Double_t Onue[npts_nue] = {
116 1.56e-6*xsunit, 8.42e-4*xsunit, 7.26e-3*xsunit, 3.99e-2*xsunit, 1.77e-1*xsunit,
117 5.23e-1*xsunit, 1.25*xsunit, 2.58*xsunit, 4.76*xsunit, 8.05*xsunit,
118 1.28e1*xsunit, 2.76e1*xsunit, 5.21e1*xsunit, 8.89e1*xsunit, 1.41e2*xsunit,
119 2.12e2*xsunit, 3.02e2*xsunit, 5.52e2*xsunit, 8.92e2*xsunit, 1.32e3*xsunit
121 const TGraph dummy(npts_nue,Evnue,Onue);
122 fXsplNue =
new TSpline3(
"16O_nu_e_xsec",&dummy);
130 assert(interaction!=0);
134 const InitialState & init_state = interaction -> InitState();
136 const int prbpdg = init_state.
ProbePdg();
147 LOG(
"KLVOxygen",
pERROR) <<
"*** <Integral> Probe has invalid pdg ["
161 const InitialState & init_state = interaction -> InitState();
170 LOG(
"KLVOxygen",
pERROR) <<
"*** Probe has invalid pdg ["
175 LOG(
"KLVOxygen",
pERROR) <<
"*** Target has pdg ["
192 const InitialState & init_state = interaction -> InitState();
196 LOG(
"KLVOxygen",
pERROR) <<
"*** Ev=" << Ev
197 <<
" outside range ("
203 LOG(
"KLVOxygen",
pERROR) <<
"*** Ev=" << Ev
204 <<
" outside range ("
Cross Section Calculation Interface.
const KPhaseSpace & PhaseSpace(void) const
double XSec(const Interaction *i, KinePhaseSpace_t k) const
Compute the cross section for the input interaction.
bool ValidKinematics(const Interaction *i) const
Is the input kinematical point a physically allowed one?
TSpline3 * fXsplNuebar
a spline around the 16O+nu_e xsec points listed in the reference paper
bool ValidProcess(const Interaction *i) const
Can this cross section algorithm handle the input process?
static const double kMaxE
virtual ~KLVOxygenIBDPXSec()
bool IsInverseBetaDecay(void) const
enum genie::EKinePhaseSpace KinePhaseSpace_t
An implementation of the neutrino - Oxygen16 cross section.
static const double kO16NuMinE
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)
static const double kO16NubarThr
const UInt_t kISkipKinematicChk
if set, skip kinematic validity checks
A registry. Provides the container for algorithm configuration parameters.
bool IsAboveThreshold(void) const
Checks whether the interaction is above the energy threshold.
void Configure(const Registry &config)
double Integral(const Interaction *i) const
const ProcessInfo & ProcInfo(void) const
void MakeAntiNuESpline(void)
double ProbeE(RefFrame_t rf) const
Most commonly used PDG codes. A set of utility functions to handle PDG codes is provided in PDGUtils...
const UInt_t kISkipProcessChk
if set, skip process validity checks
Initial State information.