16#include "Framework/Conventions/GBuild.h"
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.;
96 double us = pdfs.
UpSea()/xi;
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;
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE,...
Most commonly used PDG codes. A set of utility functions to handle PDG codes is provided in PDGUtils.
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
virtual void Configure(const Registry &config)
const Algorithm * SubAlg(const RgKey ®istry_key) const
Initial State information.
const Target & Tgt(void) const
double ProbeE(RefFrame_t rf) const
Summary information for an interaction.
const XclsTag & ExclTag(void) const
const Kinematics & Kine(void) const
const ProcessInfo & ProcInfo(void) const
const InitialState & InitState(void) const
Generated/set kinematical variables for an event.
double y(bool selected=false) const
double x(bool selected=false) const
Pure abstract base class. Defines the PDFModelI interface to be implemented by wrapper classes to exi...
void SetModel(const PDFModelI *model)
double DownSea(void) const
void Calculate(double x, double q2)
double UpValence(void) const
double DownValence(void) const
double Strange(void) const
A class encapsulating an enumeration of interaction types (EM, Weak-CC, Weak-NC) and scattering types...
bool IsWeakNC(void) const
bool IsDeepInelastic(void) const
A registry. Provides the container for algorithm configuration parameters.
SlowRsclCharmDISPXSecLO()
const PDFModelI * fPDFModel
void Configure(const Registry &config)
virtual ~SlowRsclCharmDISPXSecLO()
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?
const XSecIntegratorI * fXSecIntegrator
double Integral(const Interaction *i) const
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
int HitNucPdg(void) const
int HitQrkPdg(void) const
bool HitSeaQrk(void) const
double HitNucMass(void) const
bool HitQrkIsSet(void) const
virtual bool ValidKinematics(const Interaction *i) const
Is the input kinematical point a physically allowed one?
Cross Section Integrator Interface.
Contains minimal information for tagging exclusive processes.
bool IsInclusiveCharm(void) const
bool IsCharmEvent(void) const
static const double kSqrt2
bool IsAntiSQuark(int pdgc)
bool IsNeutrino(int pdgc)
bool IsAntiDQuark(int pdgc)
bool IsAntiNeutrino(int pdgc)
double Jacobian(const Interaction *const i, KinePhaseSpace_t f, KinePhaseSpace_t t)
THE MAIN GENIE PROJECT NAMESPACE
enum genie::EKinePhaseSpace KinePhaseSpace_t
const UInt_t kISkipProcessChk
if set, skip process validity checks
const UInt_t kIAssumeFreeNucleon