15 #include "Framework/Conventions/GBuild.h" 26 using namespace genie;
54 const Kinematics & kinematics = interaction -> Kine();
55 const InitialState & init_state = interaction -> InitState();
60 double x = kinematics.
x();
61 double y = kinematics.
y();
63 double A = (double) init_state.
Tgt().
A();
64 double A2 = TMath::Power(A,2.);
65 double A_3 = TMath::Power(A,1./3.);
68 double fp2 = TMath::Power(fp,2.);
70 double ma2 = TMath::Power(
fMa,2);
71 double propg = TMath::Power(ma2/(ma2+Q2),2.);
72 double r2 = TMath::Power(
fReIm,2.);
74 double sTot2 = TMath::Power(sTot,2.);
79 double Fabs = TMath::Exp( -9.*A_3*sInel / (16.*
kPi*Ro2) );
83 double Epi2 = TMath::Power(Epi,2.);
85 double R2 = TMath::Power(R,2.);
86 double b = 0.33333 * R2;
89 double tA = 1. + MxEpi - 0.5*mEpi2;
90 double tB = TMath::Sqrt(1. + 2*MxEpi) * TMath::Sqrt(1.-mEpi2);
91 double tmin = 2*Epi2 * (tA-tB);
92 double tmax = 2*Epi2 * (tA+tB);
93 double tint = (TMath::Exp(-b*tmin) - TMath::Exp(-b*tmax))/b;
95 double xsec = Gf*fp2 * A2 * E*(1-
y) * sTot2 * (1+r2)*propg * Fabs*tint;
97 #ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__ 99 <<
"\n momentum transfer .............. Q2 = " << Q2
100 <<
"\n mass number .................... A = " << A
101 <<
"\n pion energy .................... Epi = " << Epi
102 <<
"\n propagator term ................ propg = " << propg
103 <<
"\n Re/Im of fwd pion scat. ampl. .. Re/Im = " <<
fReIm 104 <<
"\n total pi+N cross section ....... sigT = " << sTot
105 <<
"\n inelastic pi+N cross section ... sigI = " << sInel
106 <<
"\n nuclear size scale ............. Ro = " <<
fRo 107 <<
"\n pion absorption factor ......... Fabs = " << Fabs
108 <<
"\n t integration range ............ [" << tmin <<
"," << tmax <<
"]" 109 <<
"\n t integration factor ........... tint = " << tint;
122 double ml2 = TMath::Power(ml,2);
123 double Q2min = ml2 * y/(1-
y);
125 double C1 = TMath::Power(1-0.5*Q2min/(Q2+
kPionMass2), 2);
126 double C2 = 0.25*y*Q2min*(Q2-Q2min)/ TMath::Power(Q2+
kPionMass2,2);
135 #ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__ 137 <<
"d2xsec/dxdy[COHPi] (x= " << x <<
", y=" 138 << y <<
", E=" << E <<
") = "<< xsec;
168 if (!proc_info.
IsWeak())
return false;
170 if (!(target.
A()>1))
return false;
Cross Section Calculation Interface.
bool IsWeakCC(void) const
bool IsNeutrino(int pdgc)
double J(double q0, double q3, double Enu, double ml)
THE MAIN GENIE PROJECT NAMESPACE
Cross Section Integrator Interface.
static const double kNucleonMass
double Q2(const Interaction *const i)
Generated/set kinematical variables for an event.
double x(bool selected=false) const
virtual ~ReinSehgalCOHPiPXSec()
bool ValidProcess(const Interaction *i) const
Can this cross section algorithm handle the input process?
bool IsCoherentProduction(void) const
enum genie::EKinePhaseSpace KinePhaseSpace_t
bool fModPCAC
use modified PCAC (including f/s lepton mass)
double fReIm
Re/Im {forward pion scattering amplitude}.
double y(bool selected=false) const
double XSec(const Interaction *i, KinePhaseSpace_t k) const
Compute the cross section for the input interaction.
Summary information for an interaction.
virtual bool ValidKinematics(const Interaction *i) const
Is the input kinematical point a physically allowed one?
double Integral(const Interaction *i) const
#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...
bool IsAntiNeutrino(int pdgc)
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
virtual void Configure(const Registry &config)
const XSecIntegratorI * fXSecIntegrator
TParticlePDG * FSPrimLepton(void) const
final state primary lepton
double InelasticPionNucleonXSec(double Epion, bool isChargedPion=true)
static const double kPionMass
bool HitNucIsSet(void) const
A registry. Provides the container for algorithm configuration parameters.
virtual double Integrate(const XSecAlgorithmI *model, const Interaction *interaction) const =0
double Jacobian(const Interaction *const i, KinePhaseSpace_t f, KinePhaseSpace_t t)
static constexpr double fermi
const InitialState & InitState(void) const
const ProcessInfo & ProcInfo(void) const
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
const Target & Tgt(void) const
double fRo
nuclear size scale parameter
void Configure(const Registry &config)
double ProbeE(RefFrame_t rf) const
Most commonly used PDG codes. A set of utility functions to handle PDG codes is provided in PDGUtils...
Root of GENIE utility namespaces.
const UInt_t kISkipProcessChk
if set, skip process validity checks
double TotalPionNucleonXSec(double Epion, bool isChargedPion=true)
Initial State information.
static const double kPionMass2
const Algorithm * SubAlg(const RgKey ®istry_key) const