GENIEGenerator
Loading...
Searching...
No Matches
AGKYLowW2019.h
Go to the documentation of this file.
1//____________________________________________________________________________
2/*!
3
4\class genie::AGKYLowW2019
5
6\brief A KNO-based hadronization model.
7
8 Is a concrete implementation of the EventRecordVisitorI interface.
9
10\author The main authors of this model are:
11
12 - Costas Andreopoulos <c.andreopoulos \at cern.ch>
13 University of Liverpool
14
15 - Hugh Gallagher <gallag@minos.phy.tufts.edu>
16 Tufts University
17
18 - Tinjun Yang <tjyang@stanford.edu>
19 Stanford University
20
21 This is an improved version of the legacy neugen3 KNO-based model.
22 Giles Barr, Geoff Pearce, and Hugh Gallagher were listed as authors
23 of the original neugen3 model.
24
25 Strange baryon production was implemented by Keith Hofmann and
26 Hugh Gallagher (Tufts)
27
28 Production of etas was added by Ji Liu (W&M)
29
30 Changes required to implement the GENIE Boosted Dark Matter module
31 were installed by Josh Berger (Univ. of Wisconsin)
32
33\created August 17, 2004
34
35\cpright Copyright (c) 2003-2025, The GENIE Collaboration
36 For the full text of the license visit http://copyright.genie-mc.org
37
38*/
39//____________________________________________________________________________
40
41#ifndef _KNO_HADRONIZATION_H_
42#define _KNO_HADRONIZATION_H_
43
44#include <TGenPhaseSpace.h>
45
49
50
51class TF1;
52
53namespace genie {
54
55class Decayer;
56//class Spline;
57
59
60public:
61
63 AGKYLowW2019(string config);
64 virtual ~AGKYLowW2019();
65
66 // Implement the EventRecordVisitorI interface
67 void ProcessEventRecord(GHepRecord * event) const;
68
69 // Overload the Algorithm::Configure() methods to load private data
70 // members from configuration options
71 virtual void Configure(const Registry & config);
72 virtual void Configure(string config);
73
74 friend class KNOTunedQPMDISPXSec ;
75
76private:
77
78 void LoadConfig (void);
79 void Initialize (void) const;
80 TClonesArray * Hadronize (const Interaction* ) const;
81 double Weight (void) const;
83 TH1D * MultiplicityProb (const Interaction*, Option_t* opt = "") const;
84 bool AssertValidity (const Interaction * i) const;
85 PDGCodeList * GenerateHadronCodes (int mult, int maxQ, double W) const;
86 int GenerateBaryonPdgCode (int mult, int maxQ, double W) const;
87 int HadronShowerCharge (const Interaction * ) const;
88 double KNO (int nu, int nuc, double z) const;
89 double AverageChMult (int nu, int nuc, double W) const;
90 void HandleDecays (TClonesArray * particle_list) const;
91 double ReWeightPt2 (const PDGCodeList & pdgcv) const;
92 double MaxMult (const Interaction * i) const;
93 TH1D * CreateMultProbHist (double maxmult) const;
94 void ApplyRijk (const Interaction * i, bool norm, TH1D * mp) const;
95 double Wmin (void) const;
96
97 TClonesArray* DecayMethod1 (double W, const PDGCodeList & pdgv, bool reweight_decays) const;
98 TClonesArray* DecayMethod2 (double W, const PDGCodeList & pdgv, bool reweight_decays) const;
99 TClonesArray* DecayBackToBack (double W, const PDGCodeList & pdgv) const;
100
101 bool PhaseSpaceDecay(
102 TClonesArray & pl, TLorentzVector & pd,
103 const PDGCodeList & pdgv, int offset=0, bool reweight=false) const;
104
105 mutable TGenPhaseSpace fPhaseSpaceGenerator; ///< a phase space generator
106 mutable double fWeight; ///< weight for generated event
107
108 // Configuration parameters
109 // Note: additional configuration parameters common to all hadronizers
110 // (Wcut,Rijk,...) are declared one layer down in the inheritance tree
111
112 bool fForceNeuGenLimit; ///< force upper hadronic multiplicity to NeuGEN limit
113//bool fUseLegacyKNOSpline; ///< use legacy spline instead of Levy
114 bool fUseIsotropic2BDecays;///< force isotropic, non-reweighted 2-body decays for consistency with neugen/daikon
115 bool fUseBaryonXfPt2Param; ///< Generate baryon xF,pT2 from experimental parameterization?
116 bool fReWeightDecays; ///< Reweight phase space decays?
117 bool fForceDecays; ///< force decays of unstable hadrons produced?
118 bool fForceMinMult; ///< force minimum multiplicity if (at low W) generated less?
119 bool fGenerateWeighted; ///< generate weighted events?
120 double fPhSpRwA; ///< parameter for phase space decay reweighting
121 double fPpi0; ///< {pi0 pi0 } production probability
122 double fPpic; ///< {pi+ pi- } production probability
123 double fPKc; ///< {K+ K- } production probability
124 double fPK0; ///< {K0 K0bar} production probability
125 double fPpi0eta; ///< {Pi0 eta} production probability
126 double fPeta; ///< {eta eta} production probability
127 double fAvp; ///< offset in average charged hadron multiplicity = f(W) relation for vp
128 double fAvn; ///< offset in average charged hadron multiplicity = f(W) relation for vn
129 double fAvbp; ///< offset in average charged hadron multiplicity = f(W) relation for vbp
130 double fAvbn; ///< offset in average charged hadron multiplicity = f(W) relation for vbn
131 double fBvp; ///< slope in average charged hadron multiplicity = f(W) relation for vp
132 double fBvn; ///< slope in average charged hadron multiplicity = f(W) relation for vn
133 double fBvbp; ///< slope in average charged hadron multiplicity = f(W) relation for vbp
134 double fBvbn; ///< slope in average charged hadron multiplicity = f(W) relation for vbn
135 double fAhyperon; ///< parameter controlling strange baryon production probability via associated production (P=a+b*lnW^2)
136 double fBhyperon; ///< see above
137 double fCvp; ///< Levy function parameter for vp
138 double fCvn; ///< Levy function parameter for vn
139 double fCvbp; ///< Levy function parameter for vbp
140 double fCvbn; ///< Levy function parameter for vbn
141 TF1 * fBaryonXFpdf; ///< baryon xF PDF
142 TF1 * fBaryonPT2pdf; ///< baryon pT^2 PDF
143
144 // nuegen parameters
145 double fWcut; ///< Rijk applied for W<Wcut (see DIS/RES join scheme)
146 double fRvpCCm2; ///< Rijk: vp, CC, multiplicity = 2
147 double fRvpCCm3; ///< Rijk: vp, CC, multiplicity = 3
148 double fRvpNCm2; ///< Rijk: vp, NC, multiplicity = 2
149 double fRvpNCm3; ///< Rijk: vp, NC, multiplicity = 3
150 double fRvpEMm2; ///< Rijk: vp, EM, multiplicity = 2
151 double fRvpEMm3; ///< Rijk: vp, EM, multiplicity = 3
152 double fRvnCCm2; ///< Rijk: vn, CC, multiplicity = 2
153 double fRvnCCm3; ///< Rijk: vn, CC, multiplicity = 3
154 double fRvnNCm2; ///< Rijk: vn, NC, multiplicity = 2
155 double fRvnNCm3; ///< Rijk: vn, NC, multiplicity = 3
156 double fRvnEMm2; ///< Rijk: vn, EM, multiplicity = 2
157 double fRvnEMm3; ///< Rijk: vn, EM, multiplicity = 3
158 double fRvbpCCm2; ///< Rijk: vbp, CC, multiplicity = 2
159 double fRvbpCCm3; ///< Rijk: vbp, CC, multiplicity = 3
160 double fRvbpNCm2; ///< Rijk: vbp, NC, multiplicity = 2
161 double fRvbpNCm3; ///< Rijk: vbp, NC, multiplicity = 3
162 double fRvbpEMm2; ///< Rijk: vbp, EM, multiplicity = 2
163 double fRvbpEMm3; ///< Rijk: vbp, EM, multiplicity = 3
164 double fRvbnCCm2; ///< Rijk: vbn, CC, multiplicity = 2
165 double fRvbnCCm3; ///< Rijk: vbn, CC, multiplicity = 3
166 double fRvbnNCm2; ///< Rijk: vbn, NC, multiplicity = 2
167 double fRvbnNCm3; ///< Rijk: vbn, NC, multiplicity = 3
168 double fRvbnEMm2; ///< Rijk: vbn, EM, multiplicity = 2
169 double fRvbnEMm3; ///< Rijk: vbn, EM, multiplicity = 3
170
171};
172
173} // genie namespace
174
175#endif // _KNO_HADRONIZATION_H_
double fCvp
Levy function parameter for vp.
double fRvbpNCm2
Rijk: vbp, NC, multiplicity = 2.
double fRvpNCm2
Rijk: vp, NC, multiplicity = 2.
TH1D * CreateMultProbHist(double maxmult) const
bool fReWeightDecays
Reweight phase space decays?
int GenerateBaryonPdgCode(int mult, int maxQ, double W) const
double fRvbnNCm2
Rijk: vbn, NC, multiplicity = 2.
int HadronShowerCharge(const Interaction *) const
double fCvbn
Levy function parameter for vbn.
double fPpic
{pi+ pi- } production probability
TH1D * MultiplicityProb(const Interaction *, Option_t *opt="") const
bool AssertValidity(const Interaction *i) const
PDGCodeList * SelectParticles(const Interaction *) const
double fRvbnEMm2
Rijk: vbn, EM, multiplicity = 2.
double fBvbn
slope in average charged hadron multiplicity = f(W) relation for vbn
double fRvpCCm2
Rijk: vp, CC, multiplicity = 2.
bool fUseBaryonXfPt2Param
Generate baryon xF,pT2 from experimental parameterization?
double fAvn
offset in average charged hadron multiplicity = f(W) relation for vn
double fRvpCCm3
Rijk: vp, CC, multiplicity = 3.
double fRvnCCm2
Rijk: vn, CC, multiplicity = 2.
double fPKc
{K+ K- } production probability
double MaxMult(const Interaction *i) const
double fRvpNCm3
Rijk: vp, NC, multiplicity = 3.
double fRvnNCm3
Rijk: vn, NC, multiplicity = 3.
double fPK0
{K0 K0bar} production probability
double fWcut
Rijk applied for W<Wcut (see DIS/RES join scheme)
double fPhSpRwA
parameter for phase space decay reweighting
TGenPhaseSpace fPhaseSpaceGenerator
a phase space generator
double ReWeightPt2(const PDGCodeList &pdgcv) const
double fAvbp
offset in average charged hadron multiplicity = f(W) relation for vbp
double fBvp
slope in average charged hadron multiplicity = f(W) relation for vp
double fRvbnNCm3
Rijk: vbn, NC, multiplicity = 3.
TClonesArray * DecayMethod1(double W, const PDGCodeList &pdgv, bool reweight_decays) const
void Initialize(void) const
double fRvnEMm2
Rijk: vn, EM, multiplicity = 2.
friend class KNOTunedQPMDISPXSec
double fBvn
slope in average charged hadron multiplicity = f(W) relation for vn
double fRvbpCCm2
Rijk: vbp, CC, multiplicity = 2.
bool fForceDecays
force decays of unstable hadrons produced?
double fRvbpEMm2
Rijk: vbp, EM, multiplicity = 2.
double fCvbp
Levy function parameter for vbp.
double fCvn
Levy function parameter for vn.
double fBhyperon
see above
TClonesArray * DecayBackToBack(double W, const PDGCodeList &pdgv) const
double fPeta
{eta eta} production probability
void HandleDecays(TClonesArray *particle_list) const
double Wmin(void) const
bool PhaseSpaceDecay(TClonesArray &pl, TLorentzVector &pd, const PDGCodeList &pdgv, int offset=0, bool reweight=false) const
double Weight(void) const
double fAvp
offset in average charged hadron multiplicity = f(W) relation for vp
TF1 * fBaryonXFpdf
baryon xF PDF
bool fForceMinMult
force minimum multiplicity if (at low W) generated less?
void ProcessEventRecord(GHepRecord *event) const
double fRvbnCCm2
Rijk: vbn, CC, multiplicity = 2.
double fAvbn
offset in average charged hadron multiplicity = f(W) relation for vbn
void ApplyRijk(const Interaction *i, bool norm, TH1D *mp) const
double fRvbnCCm3
Rijk: vbn, CC, multiplicity = 3.
double fRvbpNCm3
Rijk: vbp, NC, multiplicity = 3.
double fPpi0
{pi0 pi0 } production probability
double fRvnNCm2
Rijk: vn, NC, multiplicity = 2.
TF1 * fBaryonPT2pdf
baryon pT^2 PDF
double fAhyperon
parameter controlling strange baryon production probability via associated production (P=a+b*lnW^2)
double fRvnEMm3
Rijk: vn, EM, multiplicity = 3.
TClonesArray * DecayMethod2(double W, const PDGCodeList &pdgv, bool reweight_decays) const
double fRvpEMm2
Rijk: vp, EM, multiplicity = 2.
double fRvnCCm3
Rijk: vn, CC, multiplicity = 3.
bool fForceNeuGenLimit
force upper hadronic multiplicity to NeuGEN limit
double KNO(int nu, int nuc, double z) const
double fRvpEMm3
Rijk: vp, EM, multiplicity = 3.
bool fGenerateWeighted
generate weighted events?
virtual void Configure(const Registry &config)
double fWeight
weight for generated event
double fRvbnEMm3
Rijk: vbn, EM, multiplicity = 3.
double fPpi0eta
{Pi0 eta} production probability
double AverageChMult(int nu, int nuc, double W) const
double fRvbpEMm3
Rijk: vbp, EM, multiplicity = 3.
bool fUseIsotropic2BDecays
force isotropic, non-reweighted 2-body decays for consistency with neugen/daikon
double fRvbpCCm3
Rijk: vbp, CC, multiplicity = 3.
double fBvbp
slope in average charged hadron multiplicity = f(W) relation for vbp
PDGCodeList * GenerateHadronCodes(int mult, int maxQ, double W) const
TClonesArray * Hadronize(const Interaction *) const
Base class for decayer classes. Implements common configuration, allowing users to toggle on/off flag...
Definition Decayer.h:34
GENIE's GHEP MC event record.
Definition GHepRecord.h:45
Summary information for an interaction.
Definition Interaction.h:56
A list of PDG codes.
Definition PDGCodeList.h:32
A registry. Provides the container for algorithm configuration parameters.
Definition Registry.h:65
THE MAIN GENIE PROJECT NAMESPACE
Definition AlgCmp.h:25