14#include "Framework/Conventions/GBuild.h"
73 double Mnuc2 = TMath::Power(Mnuc,2);
78 double ml2 = TMath::Power(ml,2);
80 double M2 = (
this)->
MHyperon(interaction);
81 double v = (TMath::Power(M2,2) - Mnuc2 - q2) / (2*Mnuc);
82 double v2 = TMath::Power(v,2);
83 double s = Mnuc2 + 2*Mnuc*E;
84 double u = Mnuc2 + ml2 + 2*v*Mnuc - 2*Mnuc*E;
88 int sign = (is_neutrino) ? -1 : 1;
102 double Mm2 = TMath::Power(Mm, 2);
103 double Mp2 = TMath::Power(Mp, 2);
106 double FA2 = TMath::Power(FA, 2);
111 double w1 = (Mm2 - q2)/(4*Mnuc2)*TMath::Power((F1V + xiF2V), 2) + (Mp2 - q2)/(4*Mnuc2) * FA2;
112 double w2 = FA2 + TMath::Power((F1V + xiF2V - Mp * xiF2V / (2 * Mnuc)), 2) - q2 / Mnuc2 * TMath::Power((xiF2V / 2), 2);
113 double w3 = 2 * FA * (F1V + xiF2V);
115 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);
116 xsec = TMath::Max(xsec,0.);
167 if(!is_exclusive_strange)
return false;
170 if(!proc_info.
IsWeak())
return false;
195 double MR =
this ->
MHyperon (interaction);
198 double Mnuc2 = TMath::Power(Mnuc,2);
201 double ER = ( TMath::Power(MR+ml,2) - Mnuc2 ) / (2*Mnuc);
203 if(E <= ER)
return false;
225 fSin8c2 = TMath::Power(TMath::Sin(thc), 2);
229 this->
SubAlg(
"FormFactorsAlg"));
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
TParticlePDG * FSPrimLepton(void) const
final state primary lepton
const InitialState & InitState(void) const
Generated/set kinematical variables for an event.
static PDGLibrary * Instance(void)
TParticlePDG * Find(int pdgc, bool must_exist=true)
const QELFormFactorsModelI * fFormFactorsModel
double MHyperon(const Interaction *interaction) const
QELFormFactors fFormFactors
double XSec(const Interaction *i, KinePhaseSpace_t k) const
Compute the cross section for the input interaction.
double Integral(const Interaction *i) const
void Configure(const Registry &config)
virtual ~PaisQELLambdaPXSec()
const XSecIntegratorI * fXSecIntegrator
bool ValidProcess(const Interaction *i) const
Can this cross section algorithm handle the input process?
bool ValidKinematics(const Interaction *i) const
Is the input kinematical point a physically allowed one?
A class encapsulating an enumeration of interaction types (EM, Weak-CC, Weak-NC) and scattering types...
bool IsQuasiElastic(void) const
A registry. Provides the container for algorithm configuration parameters.
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
int HitNucPdg(void) const
TLorentzVector * HitNucP4Ptr(void) const
double HitNucMass(void) const
Cross Section Integrator Interface.
Contains minimal information for tagging exclusive processes.
bool IsStrangeEvent(void) const
bool IsInclusiveStrange(void) const
int StrangeHadronPdg(void) const
bool IsNeutrino(int pdgc)
Simple functions for loading and reading nucleus dependent keys from config files.
double Jacobian(const Interaction *const i, KinePhaseSpace_t f, KinePhaseSpace_t t)
Root of GENIE utility namespaces.
THE MAIN GENIE PROJECT NAMESPACE
enum genie::EKinePhaseSpace KinePhaseSpace_t
const UInt_t kISkipKinematicChk
if set, skip kinematic validity checks
const UInt_t kISkipProcessChk
if set, skip process validity checks
const UInt_t kIAssumeFreeNucleon