GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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-2024, 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 
47 #include "Physics/Decay/Decayer.h"
49 
50 
51 class TF1;
52 
53 namespace genie {
54 
55 class Decayer;
56 //class Spline;
57 
59 
60 public:
61 
62  AGKYLowW2019();
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 
76 private:
77 
78  void LoadConfig (void);
79  void Initialize (void) const;
80  TClonesArray * Hadronize (const Interaction* ) const;
81  double Weight (void) const;
82  PDGCodeList * SelectParticles (const Interaction*) 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_
void ApplyRijk(const Interaction *i, bool norm, TH1D *mp) const
double Wmin(void) const
double fRvnEMm3
Rijk: vn, EM, multiplicity = 3.
Definition: AGKYLowW2019.h:157
double KNO(int nu, int nuc, double z) const
TH1D * MultiplicityProb(const Interaction *, Option_t *opt="") const
double Weight(void) const
double fWeight
weight for generated event
Definition: AGKYLowW2019.h:106
double fPpi0eta
{Pi0 eta} production probability
Definition: AGKYLowW2019.h:125
Defines the EventRecordVisitorI interface. Concrete implementations of this interface use the &#39;Visito...
double fRvbpCCm3
Rijk: vbp, CC, multiplicity = 3.
Definition: AGKYLowW2019.h:159
TF1 * fBaryonXFpdf
baryon xF PDF
Definition: AGKYLowW2019.h:141
double fRvbnEMm2
Rijk: vbn, EM, multiplicity = 2.
Definition: AGKYLowW2019.h:168
A KNO-based hadronization model.
Definition: AGKYLowW2019.h:58
PDGCodeList * SelectParticles(const Interaction *) const
double fRvnCCm2
Rijk: vn, CC, multiplicity = 2.
Definition: AGKYLowW2019.h:152
double fRvpCCm2
Rijk: vp, CC, multiplicity = 2.
Definition: AGKYLowW2019.h:146
double fRvbpNCm2
Rijk: vbp, NC, multiplicity = 2.
Definition: AGKYLowW2019.h:160
int GenerateBaryonPdgCode(int mult, int maxQ, double W) const
double fPeta
{eta eta} production probability
Definition: AGKYLowW2019.h:126
TClonesArray * DecayMethod1(double W, const PDGCodeList &pdgv, bool reweight_decays) const
TGenPhaseSpace fPhaseSpaceGenerator
a phase space generator
Definition: AGKYLowW2019.h:105
TClonesArray * DecayBackToBack(double W, const PDGCodeList &pdgv) const
double fRvpNCm2
Rijk: vp, NC, multiplicity = 2.
Definition: AGKYLowW2019.h:148
double fCvbp
Levy function parameter for vbp.
Definition: AGKYLowW2019.h:139
double fRvbnCCm3
Rijk: vbn, CC, multiplicity = 3.
Definition: AGKYLowW2019.h:165
double fPhSpRwA
parameter for phase space decay reweighting
Definition: AGKYLowW2019.h:120
bool fForceMinMult
force minimum multiplicity if (at low W) generated less?
Definition: AGKYLowW2019.h:118
void HandleDecays(TClonesArray *particle_list) const
bool fReWeightDecays
Reweight phase space decays?
Definition: AGKYLowW2019.h:116
A list of PDG codes.
Definition: PDGCodeList.h:32
double fRvnNCm3
Rijk: vn, NC, multiplicity = 3.
Definition: AGKYLowW2019.h:155
double W(const Interaction *const i)
Definition: KineUtils.cxx:1101
bool fGenerateWeighted
generate weighted events?
Definition: AGKYLowW2019.h:119
double fPK0
{K0 K0bar} production probability
Definition: AGKYLowW2019.h:124
virtual void Configure(const Registry &config)
double fRvbpNCm3
Rijk: vbp, NC, multiplicity = 3.
Definition: AGKYLowW2019.h:161
Summary information for an interaction.
Definition: Interaction.h:56
double fRvbpEMm2
Rijk: vbp, EM, multiplicity = 2.
Definition: AGKYLowW2019.h:162
TF1 * fBaryonPT2pdf
baryon pT^2 PDF
Definition: AGKYLowW2019.h:142
double fRvbpCCm2
Rijk: vbp, CC, multiplicity = 2.
Definition: AGKYLowW2019.h:158
double fRvbpEMm3
Rijk: vbp, EM, multiplicity = 3.
Definition: AGKYLowW2019.h:163
double fCvbn
Levy function parameter for vbn.
Definition: AGKYLowW2019.h:140
double fRvpCCm3
Rijk: vp, CC, multiplicity = 3.
Definition: AGKYLowW2019.h:147
Computes DIS differential cross sections. Is a concrete implementation of the XSecAlgorithmI interfac...
double fRvbnCCm2
Rijk: vbn, CC, multiplicity = 2.
Definition: AGKYLowW2019.h:164
PDGCodeList * GenerateHadronCodes(int mult, int maxQ, double W) const
TH1D * CreateMultProbHist(double maxmult) const
double fBhyperon
see above
Definition: AGKYLowW2019.h:136
double MaxMult(const Interaction *i) const
double fRvpNCm3
Rijk: vp, NC, multiplicity = 3.
Definition: AGKYLowW2019.h:149
double AverageChMult(int nu, int nuc, double W) const
double fAhyperon
parameter controlling strange baryon production probability via associated production (P=a+b*lnW^2) ...
Definition: AGKYLowW2019.h:135
int HadronShowerCharge(const Interaction *) const
double fRvnNCm2
Rijk: vn, NC, multiplicity = 2.
Definition: AGKYLowW2019.h:154
double fRvpEMm3
Rijk: vp, EM, multiplicity = 3.
Definition: AGKYLowW2019.h:151
bool fUseBaryonXfPt2Param
Generate baryon xF,pT2 from experimental parameterization?
Definition: AGKYLowW2019.h:115
double fWcut
Rijk applied for W&lt;Wcut (see DIS/RES join scheme)
Definition: AGKYLowW2019.h:145
double fRvbnEMm3
Rijk: vbn, EM, multiplicity = 3.
Definition: AGKYLowW2019.h:169
double fRvbnNCm2
Rijk: vbn, NC, multiplicity = 2.
Definition: AGKYLowW2019.h:166
double fRvnEMm2
Rijk: vn, EM, multiplicity = 2.
Definition: AGKYLowW2019.h:156
TClonesArray * DecayMethod2(double W, const PDGCodeList &pdgv, bool reweight_decays) const
double fRvpEMm2
Rijk: vp, EM, multiplicity = 2.
Definition: AGKYLowW2019.h:150
double fAvn
offset in average charged hadron multiplicity = f(W) relation for vn
Definition: AGKYLowW2019.h:128
double fRvbnNCm3
Rijk: vbn, NC, multiplicity = 3.
Definition: AGKYLowW2019.h:167
bool PhaseSpaceDecay(TClonesArray &pl, TLorentzVector &pd, const PDGCodeList &pdgv, int offset=0, bool reweight=false) const
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:65
double fAvbp
offset in average charged hadron multiplicity = f(W) relation for vbp
Definition: AGKYLowW2019.h:129
double fPpi0
{pi0 pi0 } production probability
Definition: AGKYLowW2019.h:121
double ReWeightPt2(const PDGCodeList &pdgcv) const
bool fForceDecays
force decays of unstable hadrons produced?
Definition: AGKYLowW2019.h:117
void Initialize(void) const
double fCvp
Levy function parameter for vp.
Definition: AGKYLowW2019.h:137
bool fUseIsotropic2BDecays
force isotropic, non-reweighted 2-body decays for consistency with neugen/daikon
Definition: AGKYLowW2019.h:114
double fBvp
slope in average charged hadron multiplicity = f(W) relation for vp
Definition: AGKYLowW2019.h:131
bool AssertValidity(const Interaction *i) const
double fBvbp
slope in average charged hadron multiplicity = f(W) relation for vbp
Definition: AGKYLowW2019.h:133
double fBvbn
slope in average charged hadron multiplicity = f(W) relation for vbn
Definition: AGKYLowW2019.h:134
TClonesArray * Hadronize(const Interaction *) const
double fAvbn
offset in average charged hadron multiplicity = f(W) relation for vbn
Definition: AGKYLowW2019.h:130
double fPKc
{K+ K- } production probability
Definition: AGKYLowW2019.h:123
double fRvnCCm3
Rijk: vn, CC, multiplicity = 3.
Definition: AGKYLowW2019.h:153
double fBvn
slope in average charged hadron multiplicity = f(W) relation for vn
Definition: AGKYLowW2019.h:132
GENIE&#39;s GHEP MC event record.
Definition: GHepRecord.h:45
void ProcessEventRecord(GHepRecord *event) const
double fPpic
{pi+ pi- } production probability
Definition: AGKYLowW2019.h:122
double fCvn
Levy function parameter for vn.
Definition: AGKYLowW2019.h:138
double fAvp
offset in average charged hadron multiplicity = f(W) relation for vp
Definition: AGKYLowW2019.h:127
bool fForceNeuGenLimit
force upper hadronic multiplicity to NeuGEN limit
Definition: AGKYLowW2019.h:112