25 using namespace genie;
26 using namespace genie::utils;
27 using namespace genie::constants;
53 const InitialState & init_state = interaction -> InitState();
54 const Kinematics & kinematics = interaction -> Kine();
58 double Q2 = kinematics.
Q2();
60 double M2 = TMath::Power(M, 2.);
61 double E2 = TMath::Power(E, 2.);
62 double qmv2 = TMath::Power(1 + Q2/
fMv2, 2);
63 double qma2 = TMath::Power(1 + Q2/
fMa2, 2);
74 double Ge0 = 1.5 *
fkGamma / qmv2;
78 double Ge1 = 0.5 *
fkAlpha / qmv2;
80 double Ga1 = -0.5 *
fFa0 * (1 + (nucsign) *
fEta) / qma2;
83 double Ge = Ge0 + (nucsign) * Ge1;
84 double Gm = Gm0 + (nucsign) * Gm1;
85 double Ga = (nucsign) * Ga1;
86 double Ge2 = TMath::Power(Ge,2);
87 double Gm2 = TMath::Power(Gm,2);
88 double Ga2 = TMath::Power(Ga,2);
91 double tau = 0.25 * Q2/M2;
92 double fa = 1-M*tau/E;
93 double fa2 = TMath::Power(fa,2);
94 double fb = tau*(tau+1)*M2/E2;
95 double A = (Ge2/(1+tau)) * (fa2-fb);
96 double B = (Ga2 + tau*Gm2/(1+tau)) * (fa2+fb);
97 double C = 4*tau*(M/E)*Gm*Ga * fa;
99 double xsec = xsec0 * (A + B + (nusign)*C);
102 <<
"dXSec[vN,El]/dQ2 [FreeN](Ev = "<< E<<
", Q2 = "<< Q2 <<
") = "<< xsec;
122 <<
"Nuclear suppression factor R(Q2) = " << R <<
", NNucl = " << NNucl;
159 double sin2thw = TMath::Power(TMath::Sin(thw), 2);
171 fMa2 = TMath::Power(ma,2);
172 fMv2 = TMath::Power(mv,2);
Cross Section Calculation Interface.
double XSec(const Interaction *i, KinePhaseSpace_t k) const
Compute the cross section for the input interaction.
bool ValidProcess(const Interaction *i) const
Can this cross section algorithm handle the input process?
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
Generated/set kinematical variables for an event.
enum genie::EKinePhaseSpace KinePhaseSpace_t
const XSecIntegratorI * fXSecIntegrator
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 constexpr double A
bool IsAntiNeutrino(int pdgc)
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
virtual void Configure(const Registry &config)
A registry. Provides the container for algorithm configuration parameters.
const UInt_t kIAssumeFreeNucleon
virtual ~AhrensNCELPXSec()
double Jacobian(const Interaction *const i, KinePhaseSpace_t f, KinePhaseSpace_t t)
double Integral(const Interaction *i) const
double Q2(bool selected=false) const
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
const Target & Tgt(void) const
virtual double Integrate(const XSecAlgorithmI *model, const Interaction *interaction) const =0
double ProbeE(RefFrame_t rf) const
void Configure(const Registry &config)
const UInt_t kISkipProcessChk
if set, skip process validity checks
double NuclQELXSecSuppression(string kftable, double pmax, const Interaction *in)
Initial State information.
const Algorithm * SubAlg(const RgKey ®istry_key) const