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 <constantinos.andreopoulos \at cern.ch>
13  University of Liverpool & STFC Rutherford Appleton Laboratory
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-2020, 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 fRvnCCm2; ///< Rijk: vn, CC, multiplicity = 2
151  double fRvnCCm3; ///< Rijk: vn, CC, multiplicity = 3
152  double fRvnNCm2; ///< Rijk: vn, NC, multiplicity = 2
153  double fRvnNCm3; ///< Rijk: vn, NC, multiplicity = 3
154  double fRvbpCCm2; ///< Rijk: vbp, CC, multiplicity = 2
155  double fRvbpCCm3; ///< Rijk: vbp, CC, multiplicity = 3
156  double fRvbpNCm2; ///< Rijk: vbp, NC, multiplicity = 2
157  double fRvbpNCm3; ///< Rijk: vbp, NC, multiplicity = 3
158  double fRvbnCCm2; ///< Rijk: vbn, CC, multiplicity = 2
159  double fRvbnCCm3; ///< Rijk: vbn, CC, multiplicity = 3
160  double fRvbnNCm2; ///< Rijk: vbn, NC, multiplicity = 2
161  double fRvbnNCm3; ///< Rijk: vbn, NC, multiplicity = 3
162 
163 };
164 
165 } // genie namespace
166 
167 #endif // _KNO_HADRONIZATION_H_
void ApplyRijk(const Interaction *i, bool norm, TH1D *mp) const
double Wmin(void) const
double KNO(int nu, int nuc, double z) const
TH1D * MultiplicityProb(const Interaction *, Option_t *opt="") const
double Weight(void) const
THE MAIN GENIE PROJECT NAMESPACE
Definition: AlgCmp.h:25
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:155
TF1 * fBaryonXFpdf
baryon xF PDF
Definition: AGKYLowW2019.h:141
A KNO-based hadronization model.
Definition: AGKYLowW2019.h:58
PDGCodeList * SelectParticles(const Interaction *) const
double fRvnCCm2
Rijk: vn, CC, multiplicity = 2.
Definition: AGKYLowW2019.h:150
double fRvpCCm2
Rijk: vp, CC, multiplicity = 2.
Definition: AGKYLowW2019.h:146
opt
Definition: train.py:196
double fRvbpNCm2
Rijk: vbp, NC, multiplicity = 2.
Definition: AGKYLowW2019.h:156
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:159
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:153
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:157
Summary information for an interaction.
Definition: Interaction.h:56
TF1 * fBaryonPT2pdf
baryon pT^2 PDF
Definition: AGKYLowW2019.h:142
double fRvbpCCm2
Rijk: vbp, CC, multiplicity = 2.
Definition: AGKYLowW2019.h:154
double fCvbn
Levy function parameter for vbn.
Definition: AGKYLowW2019.h:140
static Config * config
Definition: config.cpp:1054
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:158
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:152
bool fUseBaryonXfPt2Param
Generate baryon xF,pT2 from experimental parameterization?
Definition: AGKYLowW2019.h:115
double fWcut
Rijk applied for W<Wcut (see DIS/RES join scheme)
Definition: AGKYLowW2019.h:145
auto norm(Vector const &v)
Return norm of the specified vector.
double fRvbnNCm2
Rijk: vbn, NC, multiplicity = 2.
Definition: AGKYLowW2019.h:160
TClonesArray * DecayMethod2(double W, const PDGCodeList &pdgv, bool reweight_decays) const
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:161
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:151
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
Event finding and building.
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