31#include "Framework/Conventions/GBuild.h"
84 LOG(
"DISSF",
pDEBUG) <<
"Loading configuration...";
89 fPDF -> SetModel(pdf_model);
90 fPDFc -> SetModel(pdf_model);
123 LOG(
"DISSF",
pDEBUG) <<
"Done loading configuration";
149 int probe_pdgc = init_state.
ProbePdg();
156 if ( !is_dm && !is_dmb )
return;
157 if ( !is_p && !is_n )
return;
158 if ( tgt.
N() == 0 && is_n )
return;
159 if ( tgt.
Z() == 0 && is_p )
return;
164 double switch_uv = 1.;
165 double switch_us = 1.;
166 double switch_ubar = 1.;
167 double switch_dv = 1.;
168 double switch_ds = 1.;
169 double switch_dbar = 1.;
170 double switch_s = 1.;
171 double switch_sbar = 1.;
172 double switch_c = 1.;
173 double switch_cbar = 1.;
200 if (!sea && is_u ) { switch_uv = 1; }
201 else if ( sea && is_u ) { switch_us = 1; }
202 else if ( sea && is_ubar) { switch_ubar = 1; }
203 else if (!sea && is_d ) { switch_dv = 1; }
204 else if ( sea && is_d ) { switch_ds = 1; }
205 else if ( sea && is_dbar) { switch_dbar = 1; }
206 else if ( sea && is_s ) { switch_s = 1; }
207 else if ( sea && is_sbar) { switch_sbar = 1; }
208 else if ( sea && is_c ) { switch_c = 1; }
209 else if ( sea && is_cbar) { switch_cbar = 1; }
223 double F2val=0, xF3val=0;
228 if(!is_dm && !is_dmb)
return;
238 double gvu2 = TMath::Power(gvu, 2.);
239 double gau2 = TMath::Power(gau, 2.);
240 double gvc2 = TMath::Power(gvc, 2.);
241 double gac2 = TMath::Power(gac, 2.);
242 double gvd2 = TMath::Power(gvd, 2.);
243 double gad2 = TMath::Power(gad, 2.);
244 double gvs2 = TMath::Power(gvs, 2.);
245 double gas2 = TMath::Power(gas, 2.);
247 double q2 = 4.0 * ((switch_uv *
fuv + switch_us *
fus) * (gvu2+gau2) + switch_c *
fc * (gvc2+gac2) +
248 (switch_dv *
fdv + switch_ds *
fds) * (gvd2+gad2) + switch_s *
fs * (gvs2+gas2));
249 double q3 = 4.0 * ((switch_uv *
fuv + switch_us *
fus) * (2*gvu*gau) + switch_c *
fc * (2*gvc*gac) +
250 (switch_dv *
fdv + switch_ds *
fds) * (2*gvd*gad) + switch_s *
fs * (2*gvs*gas));
252 double qb2 = 4.0 * (switch_ubar *
fus * (gvu2+gau2) + switch_cbar *
fc * (gvc2+gac2) +
253 switch_dbar *
fds * (gvd2+gad2) + switch_sbar *
fs * (gvs2+gas2));
254 double qb3 = 4.0 * (switch_ubar *
fus * (2*gvu*gau) + switch_cbar *
fc * (2*gvc*gac) +
255 switch_dbar *
fds * (2*gvd*gad) + switch_sbar *
fs * (2*gvs*gas));
257#ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
258 LOG(
"DISSF",
pINFO) <<
"f2 : q = " << q2 <<
", bar{q} = " << qb2;
259 LOG(
"DISSF",
pINFO) <<
"xf3: q = " << q3 <<
", bar{q} = " << qb3;
266 double Q2val = this->
Q2 (interaction);
268 double f = this->
NuclMod (interaction);
269 double r = this->
R (interaction);
271#ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
272 LOG(
"DISSF",
pDEBUG) <<
"Nucl. mod = " << f;
273 LOG(
"DISSF",
pDEBUG) <<
"R(=FL/2xF1) = " << r;
285 double bjx = kinematics.
x();
290 fF3 = f * xF3val/bjx;
302 fF3 = f * xF3val / x;
309#ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
325 double Q2val = kinematics.
Q2();
333 double x = kinematics.
x();
334 double y = kinematics.
y();
336 double Q2val = 2*Mn*Ev*x*y;
339 LOG(
"DISSF",
pERROR) <<
"Could not compute Q2!";
348 return interaction->
Kine().
x();
352 double & kuv,
double & kdv,
double & kus,
double & kds)
const
384#ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
385 LOG(
"DISSF",
pDEBUG) <<
"Nuclear factor for x of " << x <<
" = " << f;
405 double Q2val = this->
Q2(interaction);
420 double Q2val = this->
Q2(interaction);
427 double Q2pdf = TMath::Max(Q2val,
fQ2min);
430#ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
431 LOG(
"DISSF",
pDEBUG) <<
"Calculating PDFs @ x = " << x <<
", Q2 = " << Q2pdf;
433 fPDF->Calculate(x, Q2pdf);
439#ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
441 <<
"The event is above the charm threshold (mcharm = " <<
fMc <<
")";
444 LOG(
"DISSF",
pINFO) <<
"Charm production is turned off";
449 LOG(
"DISSF",
pINFO) <<
"Unphys. slow rescaling var: xc = " << xc;
452#ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
454 <<
"Calculating PDFs @ xc (slow rescaling) = " << x <<
", Q2 = " << Q2val;
456 fPDFc->Calculate(xc, Q2pdf);
462 <<
"The event is below the charm threshold (mcharm = " <<
fMc <<
")";
471 this->
KFactors(interaction, kval_u, kval_d, ksea_u, ksea_d);
473#ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
475 LOG(
"DISSF",
pDEBUG) <<
"U: Kval = " << kval_u <<
", Ksea = " << ksea_u;
476 LOG(
"DISSF",
pDEBUG) <<
"D: Kval = " << kval_d <<
", Ksea = " << ksea_d;
486 fPDF->ScaleUpValence (kval_u);
487 fPDF->ScaleDownValence (kval_d);
488 fPDF->ScaleUpSea (ksea_u);
489 fPDF->ScaleDownSea (ksea_d);
490 fPDF->ScaleStrange (ksea_d);
491 fPDF->ScaleCharm (ksea_u);
493 fPDFc->ScaleUpValence (kval_u);
494 fPDFc->ScaleDownValence (kval_d);
495 fPDFc->ScaleUpSea (ksea_u);
496 fPDFc->ScaleDownSea (ksea_d);
497 fPDFc->ScaleStrange (ksea_d);
498 fPDFc->ScaleCharm (ksea_u);
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE,...
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
Initial State information.
const Target & Tgt(void) const
double ProbeE(RefFrame_t rf) const
Summary information for an interaction.
const Kinematics & Kine(void) const
const ProcessInfo & ProcInfo(void) const
const InitialState & InitState(void) const
Generated/set kinematical variables for an event.
bool KVSet(KineVar_t kv) const
double Q2(bool selected=false) const
double y(bool selected=false) const
double x(bool selected=false) const
Pure abstract base class. Defines the PDFModelI interface to be implemented by wrapper classes to exi...
A class encapsulating an enumeration of interaction types (EM, Weak-CC, Weak-NC) and scattering types...
bool IsDarkMatter(void) const
PDF * fPDF
computed PDFs @ (x,Q2)
bool fUse2016Corrections
Use 2016 SF relation corrections.
PDF * fPDFc
computed PDFs @ (slow-rescaling-var,Q2)
double fQcR
Charm Right Dark Matter Coupling.
double fQsR
Strange Right Dark Matter Coupling.
virtual void KFactors(const Interaction *i, double &kuv, double &kdv, double &kus, double &kds) const
double fQcL
Charm Left Dark Matter Coupling.
virtual double ScalingVar(const Interaction *i) const
virtual double Q2(const Interaction *i) const
bool fIncludeR
include R (~FL) in DIS SF calculation?
double fMc
charm mass used
double fLowQ2CutoffF1F2
Set min for relation between 2xF1 and F2.
virtual void LoadConfig(void)
virtual void CalcPDFs(const Interaction *i) const
double fQdR
Down Right Dark Matter Coupling.
virtual double NuclMod(const Interaction *i) const
double fQdL
Down Left Dark Matter Coupling.
virtual void Calculate(const Interaction *interaction) const
Calculate the structure functions F1-F6 for the input interaction.
double fQsL
Strange Left Dark Matter Coupling.
bool fCharmOff
turn charm production off?
virtual ~QPMDMDISStrucFuncBase()
virtual double R(const Interaction *i) const
double fQuL
Up Left Dark Matter Coupling.
double fQ2min
min Q^2 allowed for PDFs: PDF(Q2<Q2min):=PDF(Q2min)
void Configure(const Registry &config)
double fQuR
Up Right Dark Matter Coupling.
bool fIncludeNuclMod
include nuclear factor (shadowing, anti-shadowing,...)?
virtual void InitPDF(void)
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
const TLorentzVector & HitNucP4(void) const
TLorentzVector * HitNucP4Ptr(void) const
int HitQrkPdg(void) const
bool HitSeaQrk(void) const
bool HitQrkIsSet(void) const
static const double kNucleonMass2
bool IsAntiSQuark(int pdgc)
bool IsAntiUQuark(int pdgc)
bool IsAntiCQuark(int pdgc)
bool IsAntiDQuark(int pdgc)
bool IsAntiDarkMatter(int pdgc)
bool IsDarkMatter(int pdgc)
double SlowRescalingVar(double x, double Q2, double M, double mc)
bool IsAboveCharmThreshold(double x, double Q2, double M, double mc)
double DISNuclFactor(double x, int A)
double RWhitlow(double x, double Q2)
THE MAIN GENIE PROJECT NAMESPACE
const UInt_t kINoNuclearCorrection
if set, inhibit nuclear corrections
const UInt_t kIAssumeFreeNucleon