24#include "Framework/Conventions/GBuild.h"
42using std::ostringstream;
73 const Kinematics & kinematics = interaction -> Kine();
74 const InitialState & init_state = interaction -> InitState();
75 const ProcessInfo & proc_info = interaction -> ProcInfo();
82 double x = kinematics.
x();
83 double y = kinematics.
y();
90#ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
92 <<
"Computing d2xsec/dxdy @ E = " << E <<
", x = " << x <<
", y = " << y;
104 fDISSF.Calculate(interaction);
106#ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
128 <<
"Using a mediator mass " <<
fMedMass;
129 double Mzp2 = TMath::Power(
fMedMass,2);
132 double gzp4 = TMath::Power(gzp,4);
133 double g2 = gzp4 / TMath::Power((Q2 + Mzp2), 2);
134 double p2 = TMath::Max(E2 - ml2,0.);
135 double front_factor = (g2*Mnuc*E) / (64.0 *
kPi) * (E2 / p2);
152 double QchiVA = TMath::Power(0.5*
fQchiL,2) - TMath::Power(0.5*
fQchiR,2);
153 double LongF = TMath::Power(1.0 + 2.0 * x * y * Mnuc * E / Mzp2,2);
154 term1 = 8.0 * y * ((QchiV2 + QchiA2) * x * y - (QchiV2 - (2.0 + LongF) * QchiA2) * ml2 / (E * Mnuc));
155 term2 = 4.0 * (2.0 * (QchiV2 + QchiA2) * (1.0 - y - 0.5 * Mnuc / E * x * y) - QchiA2 * ml2 / E * (2.0 / E + y / x / Mnuc * (1.0 - LongF)));
156 term3 = sign * 8.0 * (2.0 - y) * x * y * QchiVA;
157 term4 = 16.0 * QchiA2 * LongF * ml2 * x * y / (E * Mnuc);
158 term5 = -8.0 * QchiA2 * LongF * ml2 * y / (E * Mnuc);
162 double QchiS2 = TMath::Power(
fQchiS, 2);
163 term1 = - 4.0 * QchiS2 * y * (x * y + 2.0 * ml2/(E*Mnuc));
164 term2 = 2.0 * QchiS2 * TMath::Power(y - 2.0,2);
166#ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
168 <<
"\nd2xsec/dxdy ~ (" << term1 <<
")*F1+(" << term2 <<
")*F2+("
169 << term3 <<
")*F3+(" << term4 <<
")*F4+(" << term5 <<
")*F5";
179 <<
"\nd2xsec/dxdy ~ (" << term1 <<
")+(" << term2 <<
")+("
180 << term3 <<
")+(" << term4 <<
")+(" << term5 <<
")";
183 double xsec = front_factor * (term1 + term2 + term3 + term4 + term5);
184 xsec = TMath::Max(xsec,0.);
186#ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
188 <<
"d2xsec/dxdy[FreeN] (E= " << E
189 <<
", x= " << x <<
", y= " << y <<
") = " << xsec;
204 const Target & target = init_state.
Tgt();
218#ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
220 <<
"Subtracting charm piece: " << xsec_charm <<
" / out of " << xsec;
222 xsec = TMath::Max(0., xsec-xsec_charm);
239 const InitialState & init_state = interaction -> InitState();
240 int probe_pdg = init_state.
ProbePdg();
261 Registry r(
"QPMDMDISPXSec_specific",
false ) ;
263 RgKey xdefkey =
"XSecModel@genie::EventGenerator/DIS-CC-CHARM";
264 RgKey local_key =
"CharmXSec" ;
290 this->
GetParam(
"WeinbergAngle", thw ) ;
291 fSin48w = TMath::Power( TMath::Sin(thw), 4 );
311 string keysubstr = this->
Id().
Key() +
"/DMDIS-RES-Join";
333 RgKey local_key =
"CharmXSec" ;
337 <<
"Loading the cross section model: " << xalg;
#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.
static AlgConfigPool * Instance()
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
virtual void Configure(const Registry &config)
bool GetParamDef(const RgKey &name, T &p, const T &def) const
const Algorithm * SubAlg(const RgKey ®istry_key) const
virtual const AlgId & Id(void) const
Get algorithm ID.
static Cache * Instance(void)
void RmMatchedCacheBranches(string key_substring)
Pure Abstract Base Class. Defines the DISStructureFuncModelI interface to be implemented by any algor...
Initial State information.
const Target & Tgt(void) const
double ProbeE(RefFrame_t rf) const
Summary information for an interaction.
XclsTag * ExclTagPtr(void) const
const ProcessInfo & ProcInfo(void) const
TParticlePDG * FSPrimLepton(void) const
final state primary lepton
Generated/set kinematical variables for an event.
double y(bool selected=false) const
double x(bool selected=false) const
static PDGLibrary * Instance(void)
TParticlePDG * Find(int pdgc, bool must_exist=true)
A class encapsulating an enumeration of interaction types (EM, Weak-CC, Weak-NC) and scattering types...
bool IsWeakNC(void) const
bool IsWeakCC(void) const
bool IsDarkMatterDeepInelastic(void) const
double XSec(const Interaction *i, KinePhaseSpace_t k) const
Compute the cross section for the input interaction.
double fSin48w
sin^4(Weingberg angle)
double fEMScale
cross section scaling factor for EM processes
bool ValidProcess(const Interaction *i) const
Can this cross section algorithm handle the input process?
double fQchiL
Left-handed DM charge.
const XSecIntegratorI * fXSecIntegrator
diff. xsec integrator
double Integral(const Interaction *i) const
int fVelMode
velcoity dependence for xsec
double fNCScale
cross section scaling factor for NC processes
double fgzp
Coupling to the mediator Zprime.
double fQchiR
Right-handed DM charge.
double fQchiS
Scalar DM charge.
double fMedMass
Mediator mass.
double fCCScale
cross section scaling factor for CC processes
const DISStructureFuncModelI * fDISSFModel
SF model.
const XSecAlgorithmI * fCharmProdModel
bool fUseCache
cache reduction factors used in joining scheme
void Configure(const Registry &config)
A registry. Provides the container for algorithm configuration parameters.
void Set(RgIMapPair entry)
bool BareXSecPreCalc(void) const
static RunOpt * Instance(void)
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
int HitNucPdg(void) const
double HitNucMass(void) const
bool HitNucIsSet(void) const
virtual bool ValidKinematics(const Interaction *i) const
Is the input kinematical point a physically allowed one?
Cross Section Integrator Interface.
void SetCharm(int charm_pdgc=0)
bool IsAntiDarkMatter(int pdgc)
bool IsDarkMatter(int pdgc)
bool IsNeutronOrProton(int pdgc)
double Jacobian(const Interaction *const i, KinePhaseSpace_t f, KinePhaseSpace_t t)
double XYtoQ2(double Ev, double M, double x, double y)
THE MAIN GENIE PROJECT NAMESPACE
enum genie::EKinePhaseSpace KinePhaseSpace_t
const UInt_t kISkipProcessChk
if set, skip process validity checks
const UInt_t kIAssumeFreeNucleon