CMS 3D CMS Logo

ReggeGribovPartonMCHadronizer.h
Go to the documentation of this file.
1 #ifndef REGGEGRIBOVPARTONMCHADRONIZER_H
2 #define REGGEGRIBOVPARTONMCHADRONIZER_H
3 
7 
8 #include <map>
9 #include <string>
10 #include <vector>
11 #include <cmath>
12 
13 namespace HepMC {
14  class GenEvent;
15  class GenParticle;
16  class GenVertex;
17 } // namespace HepMC
18 
19 namespace CLHEP {
20  class HepRandomEngine;
21 }
22 
23 extern "C" {
24 //iout,ievent,noutpart,impactpar,outpart,outpx,outpy,outpz,oute,outm,outstat
25 void crmc_f_(int&, int&, int&, double&, int&, double&, double&, double&, double&, double&, int&);
26 
27 //iEvent,iSeed,pproj,ptarg,ipart,itarg,imodel,itab,iout,output,param
28 void crmc_set_f_(int&, int&, double&, double&, int&, int&, int&, int&, int&, const char*, const char*);
29 
30 //iEvent,iSeed,pproj,ptarg,ipart,itarg,imodel,itab,iout,output,param
31 void crmc_init_f_();
32 }
33 
34 #define nmxhep 99990
35 
36 extern "C" {
37 /* extern struct
38  {
39  int nevhep;
40  int nhep;
41 
42  int isthep[nmxhep];
43  int idhep[nmxhep];
44  int jmohep[nmxhep][2];
45  int jdahep[nmxhep][2];
46  double phep[nmxhep][5];
47  double vhep[nmxhep][5];
48  } hepcom_; //epos.inc*/
49 
50 extern struct {
51  float sigtot; // ........ total cross section
52  float sigcut;
53  float sigela;
54  float sloela;
55  float sigsd;
56  float sigine;
57  float sigdif;
58  float sigineaa;
59  float sigtotaa;
60  float sigelaaa;
61  float sigcutaa;
62 } hadr5_; //epos.inc
63 
64 extern struct {
65  float phievt; // ........ angle of impact parameter
66  int nevt; // ........ error code. 1=valid event, 0=invalid event
67  float bimevt; // ........ absolute value of impact parameter
68  int kolevt; // ........ number of collisions
69  int koievt; // ........ number of inelastic collisions
70  float pmxevt; // ........ reference momentum
71  float egyevt; // ........ pp cm energy (hadron) or string energy (lepton)
72  int npjevt; // ........ number of primary projectile participants
73  int ntgevt; // ........ number of primary target participants
74  int npnevt; // ........ number of primary projectile neutron spectators
75  int nppevt; // ........ number of primary projectile proton spectators
76  int ntnevt; // ........ number of primary target neutron spectators
77  int ntpevt; // ........ number of primary target proton spectators
78  int jpnevt; // ........ number of absolute projectile neutron spectators
79  int jppevt; // ........ number of absolute projectile proton spectators
80  int jtnevt; // ........ number of absolute target neutron spectators
81  int jtpevt; // ........ number of absolute target proton spectators
82  float xbjevt; // ........ bjorken x for dis
83  float qsqevt; // ........ q**2 for dis
84  int nglevt; // ........ number of collisions acc to Glauber
85  float zppevt; // ........ average Z-parton-proj
86  float zptevt; // ........ average Z-parton-targ
87  int minfra; //
88  int maxfra; //
89  int kohevt; // ........ number of hard collisions
90 } cevt_; //epos.inc
91 
92 extern struct {
93  int ng1evt; // ........ number of collisions acc to Glauber
94  int ng2evt; // ........ number of Glauber participants with at least two IAs
95  float rglevt; // ........
96  float sglevt; // ........
97  float eglevt; // ........
98  float fglevt; // ........
99  int ikoevt; // ........ number of elementary parton-parton scatterings
100  float typevt; // ........ type of event (1=Non Diff, 2=Double Diff, 3=Single Diff)
101 } c2evt_; //epos.inc
102 
103 extern struct {
104  float bmaxim;
105  float bminim;
106  float phimax;
107  float phimin;
108 } nucl2_; //epos.inc
109 }
110 
111 extern "C" {
112 extern struct {
113  char fnch[500];
114  char fnhi[500];
115  char fndt[500];
116  char fnii[500];
117  char fnid[500];
118  char fnie[500];
119  char fnrj[500];
120  char fnmt[500];
121  char fngrv[500];
122  char fncp[500];
123  char fnnx[500];
124  char fncs[500];
125  char fndr[500];
126  char fnhpf[500];
127 } fname_; //epos.inc
128 
129 extern struct {
130  int nfnch;
131  int nfnhi;
132  int nfndt;
133  int nfnii;
134  int nfnid;
135  int nfnie;
136  int nfnrj;
137  int nfnmt;
138  int nfngrv;
139  int nfncp;
140  int nfnnx;
141  int nfncs;
142  int nfndr;
143  int nfnhpf;
144 } nfname_; //epos.inc
145 
146 extern struct {
147  char fndat[500];
148  char fnncs[500];
149  int ifdat;
150  int ifncs;
151 } qgsfname_; //epos-bas.f
152 
153 extern struct {
154  int nfndat;
155  int nfnncs;
156 } qgsnfname_; //epos-bas.f
157 
158 extern struct {
159  char fniidat[500];
160  char fniincs[500];
161  int ifiidat;
162  int ifiincs;
163 } qgsiifname_; //epos-bas.f
164 
165 extern struct {
166  int nfniidat;
167  int nfniincs;
168 } qgsiinfname_; //epos-bas.f
169 }
170 
171 namespace gen {
172  extern "C" {
173  float rangen_();
174  }
175 
176  extern "C" {
177  double drangen_(int*);
178  }
179 
180  class ReggeGribovPartonMCHadronizer : public BaseHadronizer {
181  public:
184 
186  bool hadronize();
187  bool decay();
188  bool residualDecay();
189  bool readSettings(int) { return true; }
190  bool initializeForExternalPartons() { return true; }
192  bool declareStableParticles(const std::vector<int>&);
193  bool declareSpecialSettings(const std::vector<std::string>&) { return true; }
194  bool initializeTablePaths();
195 
196  void finalizeEvent();
197  void statistics();
198  const char* classname() const;
199 
200  private:
201  void doSetRandomEngine(CLHEP::HepRandomEngine* v) override;
202 
206  int m_BeamID;
209  double m_bMin;
210  double m_bMax;
213  int m_NEvent;
214 
218  double m_PartPx[nmxhep];
219  double m_PartPy[nmxhep];
220  double m_PartPz[nmxhep];
224 
226  };
227 
228 } // namespace gen
229 
230 #endif //ifndef REGGEGRIBOVPARTONMCHADRONIZER_H
char fnii[500]
bool declareSpecialSettings(const std::vector< std::string > &)
char fnmt[500]
struct @760 fname_
void crmc_f_(int &, int &, int &, double &, int &, double &, double &, double &, double &, double &, int &)
double v[5][pyjets_maxn]
bool declareStableParticles(const std::vector< int > &)
char fnncs[500]
struct @756 hadr5_
char fnrj[500]
struct @759 nucl2_
char fncp[500]
char fnid[500]
double drangen_(int *)
struct @765 qgsiinfname_
void crmc_init_f_()
char fniidat[500]
char fnhpf[500]
struct @762 qgsfname_
char fncs[500]
char fnch[500]
struct @764 qgsiifname_
struct @757 cevt_
void doSetRandomEngine(CLHEP::HepRandomEngine *v) override
char fniincs[500]
struct @763 qgsnfname_
struct @761 nfname_
struct @758 c2evt_
char fndat[500]
char fnnx[500]
char fndt[500]
char fnie[500]
char fndr[500]
void crmc_set_f_(int &, int &, double &, double &, int &, int &, int &, int &, int &, const char *, const char *)
char fnhi[500]
ReggeGribovPartonMCHadronizer(const edm::ParameterSet &)
char fngrv[500]