15 #include "Framework/Conventions/GBuild.h"
26 using namespace genie;
27 using namespace genie::constants;
28 using namespace genie::controls;
29 using namespace genie::utils;
55 const Kinematics & kinematics = interaction -> Kine();
56 const InitialState & init_state = interaction -> InitState();
61 double x = kinematics.
x();
62 double y = kinematics.
y();
63 double t = kinematics.
t();
65 double Q2 = 2.*x*y*M*E;
68 double fp2 = TMath::Power(fp,2.);
69 double Epi = y*E - t/(2*M);
71 double ma2 = TMath::Power(
fMa,2);
72 double propg = TMath::Power(ma2/(ma2+Q2),2.);
74 double sTot2 = TMath::Power(sTot,2.);
75 double tFac = TMath::Exp(-b*t);
77 #ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
79 <<
"E = " << E <<
", x = " << x <<
", y = " << y <<
", Q2 = " <<
Q2;
81 <<
"Epi = " << Epi <<
", s^{piN}_{tot} = " << sTot;
83 <<
"b = " << b <<
", t = [" << tmin <<
", " << tmax <<
"]";
93 double xsec = Gf*E*fp2*(1-y)*propg*sTot2*tFac;
102 #ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
104 <<
"Jacobian for transformation to: "
130 const InitialState & init_state = interaction -> InitState();
131 const Target & target = init_state.
Tgt();
132 if(target.
A() > 1 || target.
Z() != 1)
Cross Section Calculation Interface.
bool IsWeakCC(void) const
double J(double q0, double q3, double Enu, double ml)
Cross Section Integrator Interface.
double Q2(const Interaction *const i)
int HitNucPdg(void) const
double HitNucMass(void) const
double Integral(const Interaction *i) const
Generated/set kinematical variables for an event.
double x(bool selected=false) const
bool IsDiffractive(void) const
enum genie::EKinePhaseSpace KinePhaseSpace_t
double fBeta
b in dsig{piN}/dt = dsig0{piN}/dt * exp(-b(t-tmin)), b ~ 0.333 (nucleon_size)^2
double y(bool selected=false) const
static constexpr double b
Summary information for an interaction.
virtual bool ValidKinematics(const Interaction *i) const
Is the input kinematical point a physically allowed one?
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
static string AsString(KinePhaseSpace_t kps)
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
virtual void Configure(const Registry &config)
const XSecIntegratorI * fXSecIntegrator
static const double kPionMass
A registry. Provides the container for algorithm configuration parameters.
const UInt_t kIAssumeFreeNucleon
double XSec(const Interaction *i, KinePhaseSpace_t k) const
Compute the cross section for the input interaction.
double Jacobian(const Interaction *const i, KinePhaseSpace_t f, KinePhaseSpace_t t)
const ProcessInfo & ProcInfo(void) const
double t(bool selected=false) const
bool ValidProcess(const Interaction *i) const
Can this cross section algorithm handle the input process?
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
const Target & Tgt(void) const
void Configure(const Registry &config)
virtual double Integrate(const XSecAlgorithmI *model, const Interaction *interaction) const =0
double ProbeE(RefFrame_t rf) const
const UInt_t kISkipProcessChk
if set, skip process validity checks
double TotalPionNucleonXSec(double Epion, bool isChargedPion=true)
Initial State information.
const Algorithm * SubAlg(const RgKey ®istry_key) const