16 #include "Framework/Conventions/GBuild.h"
31 using namespace genie;
32 using namespace genie::constants;
67 double x = kinematics.
x();
68 double y = kinematics.
y();
69 double Q2 = 2*Mnuc*E*x*y;
77 int qpdg = (qset) ? target.
HitQrkPdg() : 0;
78 bool sea = (qset) ? target.
HitSeaQrk() :
false;
87 double xi = x * (1 +
fMc2/
Q2);
88 if(xi<=0 || xi>1)
return 0.;
105 tmp = uv; uv = dv; dv = tmp;
106 tmp =
us; us = ds; ds = tmp;
111 if(isnub) {
bool pass = (isdb||issb)&&sea;
if(!pass)
return 0; }
112 if(isnu) {
bool pass = isd||(iss&&sea);
if(!pass)
return 0; }
113 dv = ( isd && !sea) ? dv : 0.;
114 ds = ( (isd||isdb) && sea) ? ds : 0.;
115 s = ( (iss||issb) && sea) ? s : 0.;
122 double xsec_0 = Gw2 * 2*Q2/(y*
kPi) * (y + xi*(1-y)/x);
123 double xsec_d = xsec_0 *
fVcd2 * (dv+ds);
124 double xsec_s = xsec_0 *
fVcs2 *
s;
125 double xsec = xsec_d + xsec_s;
127 #ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
128 double Mnuc2 = TMath::Power(Mnuc, 2);
129 double W2 = Mnuc2 + 2*Mnuc*E*y*(1-x);
130 double W = TMath::Max(0., TMath::Sqrt(W2));
132 <<
"\n dxsec[DISCharm,FreeN]/dxdy (E= " << E
133 <<
", x= " << x <<
", y= " << y
134 <<
", W= " << W <<
", Q2 = " << Q2 <<
") = " << xsec;
148 int NNucl = (isP) ? target.
Z() : target.
N();
170 if(!proc_info.
IsWeak())
return false;
173 if(!is_inclusive_charm)
return false;
Cross Section Calculation Interface.
double XSec(const Interaction *i, KinePhaseSpace_t k) const
Compute the cross section for the input interaction.
bool HitSeaQrk(void) const
static const double kSqrt2
static constexpr double us
bool IsNeutrino(int pdgc)
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 DownValence(void) const
int HitQrkPdg(void) const
double HitNucMass(void) const
static constexpr double s
Generated/set kinematical variables for an event.
double x(bool selected=false) const
bool IsAntiSQuark(int pdgc)
enum genie::EKinePhaseSpace KinePhaseSpace_t
Pure abstract base class. Defines the PDFModelI interface to be implemented by wrapper classes to exi...
bool IsAntiDQuark(int pdgc)
SlowRsclCharmDISPXSecLO()
Contains minimal information for tagging exclusive processes.
double y(bool selected=false) const
bool IsCharmEvent(void) const
double W(const Interaction *const i)
double DownSea(void) const
Summary information for an interaction.
virtual bool ValidKinematics(const Interaction *i) const
Is the input kinematical point a physically allowed one?
bool IsWeakNC(void) const
double Strange(void) const
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
bool ValidProcess(const Interaction *i) const
Can this cross section algorithm handle the input process?
A class encapsulating an enumeration of interaction types (EM, Weak-CC, Weak-NC) and scattering types...
bool IsAntiNeutrino(int pdgc)
const Kinematics & Kine(void) const
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
virtual void Configure(const Registry &config)
void SetModel(const PDFModelI *model)
void Calculate(double x, double q2)
bool IsDeepInelastic(void) const
double UpValence(void) const
bool HitQrkIsSet(void) const
A registry. Provides the container for algorithm configuration parameters.
const UInt_t kIAssumeFreeNucleon
const XclsTag & ExclTag(void) const
bool IsInclusiveCharm(void) const
void Configure(const Registry &config)
const PDFModelI * fPDFModel
double Jacobian(const Interaction *const i, KinePhaseSpace_t f, KinePhaseSpace_t t)
const InitialState & InitState(void) const
const ProcessInfo & ProcInfo(void) const
virtual ~SlowRsclCharmDISPXSecLO()
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
const Target & Tgt(void) const
double Integral(const Interaction *i) const
virtual double Integrate(const XSecAlgorithmI *model, const Interaction *interaction) const =0
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 XSecIntegratorI * fXSecIntegrator
const UInt_t kISkipProcessChk
if set, skip process validity checks
Initial State information.
const Algorithm * SubAlg(const RgKey ®istry_key) const