29 using namespace genie;
63 <<
"Input interaction type is not allowed!!!";
85 LOG(
"PythiaHad",
pWARN) <<
"Hadronization failed!";
88 exception.
SetReason(
"Could not simulate the hadronic system");
99 <<
"Making leading quark / remnant di-quark assignments";
110 double W = kinematics.
W();
118 <<
"Hit nucleon pdgc = " << hit_nucleon <<
", W = " <<
W;
120 <<
"Selected hit quark pdgc = " << hit_quark
121 << ((from_sea) ?
"[sea]" :
"[valence]");
133 bool isem = proc_info.
IsEM ();
145 int leading_quark = 0;
146 int remnant_diquark = 0;
149 if (isnc || isem || isdm) {
151 leading_quark = hit_quark;
155 else if (isv && iss ) leading_quark =
kPdgUQuark;
157 else if (isvb && isu ) leading_quark =
kPdgDQuark;
162 <<
"Not allowed mode. Refused to make a leading quark assignment!";
196 if(isp && isub && iscc) {
201 if(isp && isub && (isnc||isem||isdm)) {
206 if(isp && isdb && iscc) {
211 if(isp && isdb && (isnc||isem||isdm)) {
216 if(isn && isub && iscc) {
221 if(isn && isub && (isnc||isem||isdm)) {
226 if(isn && isdb && iscc) {
231 if(isn && isdb && (isnc||isem||isdm)) {
242 <<
"Can not really handle a hit s or sbar quark / Faking it";
247 if(isp && issb && iscc) {
251 if(isp && issb && (isnc||isem||isdm)) {
255 if(isn && issb && iscc) {
259 if(isn && issb && (isnc||isem||isdm)) {
268 double Rqq = rnd->
RndHadro().Rndm();
282 LOG(
"PythiaHad",
pWARN) <<
"Can't hadronize charm events";
289 LOG(
"PythiaHad",
pWARN) <<
"Low invariant mass, W = " 299 LOG(
"PythiaHad",
pWARN) <<
"Hit quark was not set!";
319 bool isem = proc_info.
IsEM ();
320 if( !(iscc||isnc||isem||isdmi) ) {
322 <<
"Can only handle electro-weak interactions";
325 if( !(isp||isn) || !(isv||isvb||isl||islb||isdm) ) {
327 <<
"Invalid initial state: probe = " 328 << probe <<
", hit_nucleon = " << hit_nucleon;
340 bool allowed = (iscc && isv && (isd||isub||iss)) ||
341 (iscc && isvb && (isu||isdb||issb)) ||
342 (isnc && (isv||isvb) && (isu||isd||isub||isdb||iss||issb)) ||
343 (isdmi && isdm && (isu||isd||isub||isdb||iss||issb)) ||
344 (isem && (isl||islb) && (isu||isd||isub||isdb||iss||issb));
347 <<
"Impossible interaction type / probe / hit quark combination!";
417 this->
GetParam(
"KNO2PYTHIA-Wmin", Wmin );
421 <<
"Wcut value too high and in conflict with the KNO2PYTHIA-Wmin!" 422 <<
"\n Wcut = " << Wcut
423 <<
"\n KNO2PYTHIA-Wmin = " << Wmin;
virtual bool Hadronize(GHepRecord *event) const =0
const int kPdgUUDiquarkS1
double W(bool selected=false) const
bool HitSeaQrk(void) const
bool IsWeakCC(void) const
double fGaussianPt2
gaussian pt2 distribution width
bool IsNeutrino(int pdgc)
THE MAIN GENIE PROJECT NAMESPACE
virtual void LoadConfig(void)
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...
int HitQrkPdg(void) const
Generated/set kinematical variables for an event.
double fRemainingECutoff
remaining E cutoff stopping fragmentation
bool IsDarkMatter(int pdgc)
virtual void MakeQuarkDiquarkAssignments(const Interaction *in) const
bool IsAntiSQuark(int pdgc)
double fDiQuarkSuppression
di-quark suppression parameter
virtual void Initialize(void)
double fLundaDiq
adjustment of Lund a for di-quark
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)
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...
virtual bool AssertValidity(const Interaction *in) const
const int kPdgUDDiquarkS1
A class encapsulating an enumeration of interaction types (EM, Weak-CC, Weak-NC) and scattering types...
bool IsAntiNeutrino(int pdgc)
const Kinematics & Kine(void) const
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
double fLundb
Lund b parameter.
virtual void SetDesiredDecayFlags(void) const =0
virtual void ProcessEventRecord(GHepRecord *event) const
PythiaHadronizationBase()
const int kPdgUDDiquarkS0
virtual void CopyOriginalDecayFlags(void) const =0
TRandom3 & RndHadro(void) const
rnd number generator used by hadronization models
void SwitchOnFastForward(void)
void SetReason(string reason)
virtual void RestoreOriginalDecayFlags(void) const =0
static const double kPionMass
bool HitQrkIsSet(void) const
bool IsDarkMatter(void) const
double fLightVMesonSuppression
light vector meson suppression
const XclsTag & ExclTag(void) const
double fLunda
Lund a parameter.
virtual ~PythiaHadronizationBase()
const InitialState & InitState(void) const
const ProcessInfo & ProcInfo(void) const
double fNonGaussianPt2Tail
non gaussian pt2 tail parameterization
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
const Target & Tgt(void) 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...
bool IsNegChargedLepton(int pdgc)
cet::coded_exception< error, detail::translate > exception
double fSSBarSuppression
ssbar suppression
Event finding and building.
bool IsAntiUQuark(int pdgc)
Initial State information.
const int kPdgDDDiquarkS1