24 #include "Framework/Conventions/GBuild.h"
41 using std::ostringstream;
43 using namespace genie;
44 using namespace genie::constants;
65 #ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
67 <<
"d2xsec/dxdy[FreeN] (E= " << E
68 <<
", x= " << x <<
", y= " << y <<
") = " << xsec;
75 #ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
76 LOG(
"DISPXSec",
pINFO) <<
"D/R Join scheme - suppression factor R = " << R;;
77 LOG(
"DISPXSec",
pINFO) <<
"d2xsec/dxdy[FreeN, D/R Join] " << xsec;
80 xsec = TMath::Max(0., xsec ) ;
110 const bool is_EM = pi.
IsEM();
114 double x = in->
Kine().
x();
115 double y = in->
Kine().
y();
126 R = mprob->Integral(
"width");
138 string algkey = this->
Id().
Key() +
"/DIS-RES-Join";
141 ikey <<
"nu-pdgc:" << ist.
ProbePdg()
155 <<
"\n ** Creating cache branch - key = " << key;
157 cbr =
new CacheBranchFx(
"DIS Suppr. Factors in DIS/RES Join Scheme");
161 double WminSpl = Wmin;
162 double WmaxSpl =
fWcut + 0.1;
163 double dW = (WmaxSpl-WminSpl)/(kN-1);
165 for(
int i=0; i<kN; i++) {
166 double W = WminSpl+i*dW;
171 R = mprob->Integral(
"width");
177 if(!non_zero && R>0) {
181 dW = (WmaxSpl-WminSpl)/(kN-1);
184 <<
"Cached DIS XSec Suppr. factor (@ W=" << W <<
") = " << R;
195 if(Wo > Wmin && Wo <
fWcut) {
197 R = cache_branch(Wo);
202 if (Wo > Wmin && Wo <
fWcut) {
206 else if (Wo <= Wmin) Ro = 0.0;
210 <<
"DIS/RES Join: DIS xsec suppr. (W=" << Wo <<
") = " << Ro;
243 <<
"Input configuration value for Wcut is not physical: Exiting" ;
Cross Section Calculation Interface.
double fWcut
apply DIS/RES joining scheme < Wcut
TH1D * MultiplicityProb(const Interaction *, Option_t *opt="") const
double fNRBEMScale
apply NRB EM Scale factor
Cross Section Integrator Interface.
const QPMDISPXSec * fDISModel
int HitNucPdg(void) const
Kinematics * KinePtr(void) const
A KNO-based hadronization model.
double Integral(const Interaction *i) const
double HitNucMass(void) const
double DISRESJoinSuppressionFactor(const Interaction *in) const
void CreateSpline(string type="TSpline3")
double x(bool selected=false) const
enum genie::EKinePhaseSpace KinePhaseSpace_t
Computes DIS differential cross sections. Is a concrete implementation of the XSecAlgorithmI interfac...
double XYtoW(double Ev, double M, double x, double y)
void AddCacheBranch(string key, CacheBranchI *branch)
double y(bool selected=false) const
double W(const Interaction *const i)
Summary information for an interaction.
void AddValues(double x, double y)
bool BareXSecPreCalc(void) const
virtual ~KNOTunedQPMDISPXSec()
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
bool fUseCache
cache reduction factors used in joining scheme
A class encapsulating an enumeration of interaction types (EM, Weak-CC, Weak-NC) and scattering types...
string CacheBranchKey(string k0, string k1="", string k2="") const
const Kinematics & Kine(void) const
virtual void Configure(const Registry &config)
static const double kNeutronMass
string InteractionTypeAsString(void) const
double XSec(const Interaction *i, KinePhaseSpace_t k) const
Compute the cross section for the input interaction.
bool ValidProcess(const Interaction *i) const
Can this cross section algorithm handle the input process?
CacheBranchI * FindCacheBranch(string key)
finding/adding cache branches
virtual const AlgId & Id(void) const
Get algorithm ID.
void SetW(double W, bool selected=false)
const XSecIntegratorI * fXSecIntegrator
diff. xsec integrator
static RunOpt * Instance(void)
static const double kPionMass
void Configure(const Registry &config)
A registry. Provides the container for algorithm configuration parameters.
const InitialState & InitState(void) const
const ProcessInfo & ProcInfo(void) const
bool GetParamDef(const RgKey &name, T &p, const T &def) const
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
const Target & Tgt(void) const
static Cache * Instance(void)
A simple cache branch storing the cached data in a TNtuple.
virtual double Integrate(const XSecAlgorithmI *model, const Interaction *interaction) const =0
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 AGKYLowW2019 * fHadronizationModel
hadronic multip. model
Initial State information.
const Algorithm * SubAlg(const RgKey ®istry_key) const