25 using namespace genie;
26 using namespace genie::constants;
58 const Kinematics & kinematics = interaction -> Kine();
60 double W = kinematics.
W();
63 if ( W<Wl.
min )
return 0.;
64 else if ( W>Wl.
max )
return 0.;
66 const InitialState & init_state = interaction -> InitState();
68 double y = kinematics.
y();
69 double Q2 = kinematics.
Q2();
70 double x = kinematics.
x();
73 double Mlep2 = TMath::Power(interaction->
FSPrimLepton()->Mass(),2);
95 double propagator = 0;
99 xsec *=
kGF2/(2*
kPi*x) * propagator;
101 LOG(
"HEDISPXSec",
pINFO) <<
"d2xsec/dxdy[FreeN] (x= " << x <<
", y= " << y <<
", Q2= " << Q2 <<
") = " << xsec;
121 double term1 = y * ( x*y );
122 double term2 = ( 1 - y );
123 double term3 = ( x*y*(1-y/2) );
128 return fmax( term1*sf.
F1 + term2*sf.
F2 + term3*sf.
F3 , 0.);
135 double term1 = y * ( x*y + ml2/2/e/mt );
136 double term2 = ( 1 - y - mt*x*y/2/e - ml2/4/e/
e );
137 double term3 = (x*y*(1-y/2) - y*ml2/4/mt/e);
138 double term4 = x*y*ml2/2/mt/e + ml2*ml2/4/mt/mt/e/
e;
139 double term5 = -1.*ml2/2/mt/
e;
147 return fmax( term1*sf.
F1 + term2*sf.
F2 + term3*sf.
F3 + term4*F4 + term5*F5 , 0.);
166 const InitialState & init_state = interaction -> InitState();
167 int probe_pdg = init_state.
ProbePdg();
Cross Section Calculation Interface.
double W(bool selected=false) const
double ds_dxdy(SF_xQ2 sf, double x, double y) const
double Integral(const Interaction *i) const
void Configure(const Registry &config)
Cross Section Integrator Interface.
double Q2(const Interaction *const i)
int HitNucPdg(void) const
const XSecIntegratorI * fXSecIntegrator
diff. xsec integrator
A simple [min,max] interval for doubles.
double XSec(const Interaction *i, KinePhaseSpace_t k) const
Compute the cross section for the input interaction.
double HitNucMass(void) const
SF_xQ2 EvalNucSFLO(const Interaction *in, double x, double Q2)
Generated/set kinematical variables for an event.
double x(bool selected=false) const
enum genie::EKinePhaseSpace KinePhaseSpace_t
double y(bool selected=false) const
double W(const Interaction *const i)
static HEDISStrucFunc * Instance(SF_info sfinfo)
Summary information for an interaction.
virtual bool ValidKinematics(const Interaction *i) const
Is the input kinematical point a physically allowed one?
bool ValidProcess(const Interaction *i) const
Can this cross section algorithm handle the input process?
double fWmin
Minimum value of W.
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
A class encapsulating an enumeration of interaction types (EM, Weak-CC, Weak-NC) and scattering types...
double ds_dxdy_mass(SF_xQ2 sf, double x, double y, double e, double mt, double ml2) const
virtual void Configure(const Registry &config)
static constexpr double ps
TParticlePDG * FSPrimLepton(void) const
final state primary lepton
bool IsDeepInelastic(void) const
bool HitNucIsSet(void) const
A registry. Provides the container for algorithm configuration parameters.
const UInt_t kIAssumeFreeNucleon
bool IsNeutronOrProton(int pdgc)
double Jacobian(const Interaction *const i, KinePhaseSpace_t f, KinePhaseSpace_t t)
const ProcessInfo & ProcInfo(void) const
SF_xQ2 EvalQrkSFLO(const Interaction *in, double x, double Q2)
SF_info fSFinfo
Information used to computed SF.
double Q2(bool selected=false) const
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
const Target & Tgt(void) const
bool fMassTerms
Account for second order effects in DDxsec.
virtual double Integrate(const XSecAlgorithmI *model, const Interaction *interaction) const =0
double ProbeE(RefFrame_t rf) const
SF_xQ2 EvalNucSFNLO(const Interaction *in, double x, double Q2)
Range1D_t WLim(void) const
W limits.
const UInt_t kISkipProcessChk
if set, skip process validity checks
Initial State information.
const Algorithm * SubAlg(const RgKey ®istry_key) const