28 using namespace genie;
29 using namespace genie::constants;
62 <<
"Input interaction type is not allowed!!!";
84 LOG(
"PythiaHad",
pWARN) <<
"Hadronization failed!";
87 exception.
SetReason(
"Could not simulate the hadronic system");
98 <<
"Making leading quark / remnant di-quark assignments";
105 const Target & target = init_state.
Tgt();
109 double W = kinematics.
W();
117 <<
"Hit nucleon pdgc = " << hit_nucleon <<
", W = " <<
W;
119 <<
"Selected hit quark pdgc = " << hit_quark
120 << ((from_sea) ?
"[sea]" :
"[valence]");
132 bool isem = proc_info.
IsEM ();
144 int leading_quark = 0;
145 int remnant_diquark = 0;
148 if (isnc || isem || isdm) {
150 leading_quark = hit_quark;
154 else if (isv && iss ) leading_quark =
kPdgUQuark;
156 else if (isvb && isu ) leading_quark =
kPdgDQuark;
161 <<
"Not allowed mode. Refused to make a leading quark assignment!";
195 if(isp && isub && iscc) {
200 if(isp && isub && (isnc||isem||isdm)) {
205 if(isp && isdb && iscc) {
210 if(isp && isdb && (isnc||isem||isdm)) {
215 if(isn && isub && iscc) {
220 if(isn && isub && (isnc||isem||isdm)) {
225 if(isn && isdb && iscc) {
230 if(isn && isdb && (isnc||isem||isdm)) {
241 <<
"Can not really handle a hit s or sbar quark / Faking it";
246 if(isp && issb && iscc) {
250 if(isp && issb && (isnc||isem||isdm)) {
254 if(isn && issb && iscc) {
258 if(isn && issb && (isnc||isem||isdm)) {
267 double Rqq = rnd->
RndHadro().Rndm();
281 LOG(
"PythiaHad",
pWARN) <<
"Can't hadronize charm events";
288 LOG(
"PythiaHad",
pWARN) <<
"Low invariant mass, W = "
295 const Target & target = init_state.
Tgt();
298 LOG(
"PythiaHad",
pWARN) <<
"Hit quark was not set!";
318 bool isem = proc_info.
IsEM ();
319 if( !(iscc||isnc||isem||isdmi) ) {
321 <<
"Can only handle electro-weak interactions";
324 if( !(isp||isn) || !(isv||isvb||isl||islb||isdm) ) {
326 <<
"Invalid initial state: probe = "
327 << probe <<
", hit_nucleon = " << hit_nucleon;
339 bool allowed = (iscc && isv && (isd||isub||iss)) ||
340 (iscc && isvb && (isu||isdb||issb)) ||
341 (isnc && (isv||isvb) && (isu||isd||isub||isdb||iss||issb)) ||
342 (isdmi && isdm && (isu||isd||isub||isdb||iss||issb)) ||
343 (isem && (isl||islb) && (isu||isd||isub||isdb||iss||issb));
346 <<
"Impossible interaction type / probe / hit quark combination!";
416 this->
GetParam(
"KNO2PYTHIA-Wmin", Wmin );
420 <<
"Wcut value too high and in conflict with the KNO2PYTHIA-Wmin!"
421 <<
"\n Wcut = " << Wcut
422 <<
"\n KNO2PYTHIA-Wmin = " << Wmin;
double fSSBarSuppression
ssbar suppression
virtual void LoadConfig(void)
const int kPdgUUDiquarkS1
double W(bool selected=false) const
bool HitSeaQrk(void) const
bool IsWeakCC(void) const
virtual void MakeQuarkDiquarkAssignments(const Interaction *in) const
bool IsNeutrino(int pdgc)
static const double kNucleonMass
static RandomGen * Instance()
Access instance.
int HitNucPdg(void) const
Defines the EventRecordVisitorI interface. Concrete implementations of this interface use the 'Visito...
virtual void SetDesiredDecayFlags(void) const =0
int HitQrkPdg(void) const
virtual void RestoreOriginalDecayFlags(void) const =0
Generated/set kinematical variables for an event.
virtual void ProcessEventRecord(GHepRecord *event) const
double fGaussianPt2
gaussian pt2 distribution width
bool IsDarkMatter(int pdgc)
double fDiQuarkSuppression
di-quark suppression parameter
bool IsAntiSQuark(int pdgc)
A singleton holding random number generator classes. All random number generation in GENIE should tak...
bool IsAntiDQuark(int pdgc)
double fSVMesonSuppression
strange vector meson suppression
bool IsCharmEvent(void) const
double W(const Interaction *const i)
virtual void Initialize(void)
bool IsPosChargedLepton(int pdgc)
Summary information for an interaction.
An exception thrown by EventRecordVisitorI when the normal processing sequence has to be disrupted (f...
bool IsWeakNC(void) const
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
double fLightVMesonSuppression
light vector meson suppression
const int kPdgUDDiquarkS1
A class encapsulating an enumeration of interaction types (EM, Weak-CC, Weak-NC) and scattering types...
double fLundaDiq
adjustment of Lund a for di-quark
bool IsAntiNeutrino(int pdgc)
const Kinematics & Kine(void) const
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
double fNonGaussianPt2Tail
non gaussian pt2 tail parameterization
double fLunda
Lund a parameter.
virtual void CopyOriginalDecayFlags(void) const =0
virtual ~PythiaBaseHadro2019()
const int kPdgUDDiquarkS0
virtual bool Hadronize(GHepRecord *event) const =0
TRandom3 & RndHadro(void) const
rnd number generator used by hadronization models
void SwitchOnFastForward(void)
void SetReason(string reason)
static const double kPionMass
bool HitQrkIsSet(void) const
bool IsDarkMatter(void) const
const XclsTag & ExclTag(void) const
const InitialState & InitState(void) const
const ProcessInfo & ProcInfo(void) const
double fLundb
Lund b parameter.
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
const Target & Tgt(void) const
virtual bool AssertValidity(const Interaction *in) const
GENIE's GHEP MC event record.
Most commonly used PDG codes. A set of utility functions to handle PDG codes is provided in PDGUtils...
double fRemainingECutoff
remaining E cutoff stopping fragmentation
bool IsNegChargedLepton(int pdgc)
bool IsAntiUQuark(int pdgc)
Initial State information.
const int kPdgDDDiquarkS1