38 using namespace genie;
74 double q2 = kinematics.
q2();
79 double Mnuc2 = TMath::Power(Mnuc,2);
84 double ml2 = TMath::Power(ml,2);
86 double M2 = (
this)->
MHyperon(interaction);
87 double v = (TMath::Power(M2,2) - Mnuc2 -
q2) / (2*Mnuc);
88 double v2 = TMath::Power(v,2);
89 double s = Mnuc2 + 2*Mnuc*
E;
90 double u = Mnuc2 + ml2 + 2*v*Mnuc - 2*Mnuc*
E;
94 int sign = (is_neutrino) ? -1 : 1;
108 double Mm2 = TMath::Power(Mm, 2);
109 double Mp2 = TMath::Power(Mp, 2);
112 double FA2 = TMath::Power(FA, 2);
117 double w1 = (Mm2 -
q2)/(4*Mnuc2)*TMath::Power((F1V + xiF2V), 2) + (Mp2 -
q2)/(4*Mnuc2) * FA2;
118 double w2 = FA2 + TMath::Power((F1V + xiF2V - Mp * xiF2V / (2 * Mnuc)), 2) - q2 / Mnuc2 * TMath::Power((xiF2V / 2), 2);
119 double w3 = 2 * FA * (F1V + xiF2V);
121 double xsec = Gf*
fSin8c2 / (16*Mnuc2*E2) * (-8*Mnuc2*q2*w1 - 4*(Mnuc2*v2 - q2)*w2 - sign*2*(s -
u)*q2*w3 + (s-u)*(s-
u)*w2);
122 xsec = TMath::Max(xsec,0.);
173 if(!is_exclusive_strange)
return false;
176 if(!proc_info.
IsWeak())
return false;
201 double MR =
this ->
MHyperon (interaction);
204 double Mnuc2 = TMath::Power(Mnuc,2);
207 double ER = ( TMath::Power(MR+ml,2) - Mnuc2 ) / (2*Mnuc);
209 if(E <= ER)
return false;
231 fSin8c2 = TMath::Power(TMath::Sin(thc), 2);
235 this->
SubAlg(
"FormFactorsAlg"));
Cross Section Calculation Interface.
bool IsNeutrino(int pdgc)
double J(double q0, double q3, double Enu, double ml)
THE MAIN GENIE PROJECT NAMESPACE
Cross Section Integrator Interface.
void Configure(const Registry &config)
int HitNucPdg(void) const
bool IsQuasiElastic(void) const
double HitNucMass(void) const
bool IsStrangeEvent(void) const
Generated/set kinematical variables for an event.
enum genie::EKinePhaseSpace KinePhaseSpace_t
Contains minimal information for tagging exclusive processes.
Summary information for an interaction.
double MHyperon(const Interaction *interaction) const
double XSec(const Interaction *i, KinePhaseSpace_t k) const
Compute the cross section for the input interaction.
double q2(bool selected=false) const
int StrangeHadronPdg(void) const
A class encapsulating an enumeration of interaction types (EM, Weak-CC, Weak-NC) and scattering types...
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)
const UInt_t kISkipKinematicChk
if set, skip kinematic validity checks
TParticlePDG * FSPrimLepton(void) const
final state primary lepton
double Integral(const Interaction *i) const
bool IsInclusiveStrange(void) const
TLorentzVector * HitNucP4Ptr(void) const
static PDGLibrary * Instance(void)
bool ValidKinematics(const Interaction *i) const
Is the input kinematical point a physically allowed one?
A registry. Provides the container for algorithm configuration parameters.
QELFormFactors fFormFactors
const UInt_t kIAssumeFreeNucleon
const XclsTag & ExclTag(void) const
TParticlePDG * Find(int pdgc)
virtual double Integrate(const XSecAlgorithmI *model, const Interaction *interaction) const =0
virtual ~PaisQELLambdaPXSec()
assert(nhit_max >=nhit_nbins)
double Jacobian(const Interaction *const i, KinePhaseSpace_t f, KinePhaseSpace_t t)
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 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
bool ValidProcess(const Interaction *i) const
Can this cross section algorithm handle the input process?
Root of GENIE utility namespaces.
const UInt_t kISkipProcessChk
if set, skip process validity checks
Initial State information.
const QELFormFactorsModelI * fFormFactorsModel
const Algorithm * SubAlg(const RgKey ®istry_key) const