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