23 using namespace genie;
24 using namespace genie::constants;
51 const InitialState & init_state = interaction -> InitState();
52 const Kinematics & kinematics = interaction -> Kine();
53 const XclsTag & xclstag = interaction -> ExclTag();
65 double t =
born->
GetT(mlin,mlout,s,n1);
70 double omx = TMath::Power(n2, 1./zeta );
71 double pdf_soft = TMath::Exp(zeta*(3./4.-TMath::EulerGamma()))/TMath::Gamma(1.+zeta) + omx*(omx-2.)/2./n2;
72 if ( omx<0. || omx>1. )
return 0.;
73 double s_r = s*(1. - omx);
74 double t_r = t*(1. - omx);
78 double Enuout = (mlin*mlin-t_r)/2./mlin;
81 double xsec =
kPi/4./(s-mlin*mlin) * pdf_soft ;
84 if ( TMath::Sqrt(s_r)<
fWmin )
return 0.;
91 xsec *= TMath::Max(0.,ME);
97 int Ne = init_state.
Tgt().
Z();
102 <<
"Doesn't support transformation from "
108 LOG(
"GLRESPXSec",
pINFO) <<
"dxsec/dn1dn2 (E= " << Enuin <<
", n1= " << n1 <<
", n2=" << n2 <<
") = " << xsec;
127 if(!proc_info.
IsWeakCC())
return false;
129 const InitialState & init_state = interaction -> InitState();
Cross Section Calculation Interface.
bool IsWeakCC(void) const
int FinalLeptonPdg(void) const
double GetT(double mlin, double mlout, double s, double costhCM)
Cross Section Integrator Interface.
double fWmin
Minimum value of W.
static constexpr double s
Generated/set kinematical variables for an event.
bool IsInPhaseSpace(double mlin, double mlout, double Enuin, double Enuout)
enum genie::EKinePhaseSpace KinePhaseSpace_t
static const double kElectronMass
Contains minimal information for tagging exclusive processes.
Summary information for an interaction.
bool ValidProcess(const Interaction *i) const
Can this cross section algorithm handle the input process?
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
double XSec(const Interaction *i, KinePhaseSpace_t k) const
Compute the cross section for the input interaction.
static string AsString(KinePhaseSpace_t kps)
A class encapsulating an enumeration of interaction types (EM, Weak-CC, Weak-NC) and scattering types...
virtual void Configure(const Registry &config)
void Configure(const Registry &config)
double PXSecCCR(double s, double t, double mlin, double mlout)
double GetKV(KineVar_t kv) const
double GetS(double mlin, double Enuin)
TParticlePDG * FSPrimLepton(void) const
final state primary lepton
double PXSecCCRNC(double s, double t, double mlin, double mlout)
Born level nu-electron cross section.
const XSecIntegratorI * fXSecIntegrator
diff. xsec integrator
bool HitNucIsSet(void) const
A registry. Provides the container for algorithm configuration parameters.
double Integral(const Interaction *i) const
const ProcessInfo & ProcInfo(void) const
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
const Target & Tgt(void) const
bool IsGlashowResonance(void) 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 UInt_t kISkipProcessChk
if set, skip process validity checks
Initial State information.
const UInt_t kIAssumeFreeElectron
const Algorithm * SubAlg(const RgKey ®istry_key) const