ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Pythia6.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file Pythia6.hh
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 //
29 
30 //
31 // ----------------------------------------------------------------------------
32 
33 // ******************************************************************************
34 // ******************************************************************************
35 // ** **
36 // ** **
37 // ** *......* Welcome to the Lund Monte Carlo! **
38 // ** *:::!!:::::::::::* **
39 // ** *::::::!!::::::::::::::* PPP Y Y TTTTT H H III A **
40 // ** *::::::::!!::::::::::::::::* P P Y Y T H H I A A **
41 // ** *:::::::::!!:::::::::::::::::* PPP Y T HHHHH I AAAAA **
42 // ** *:::::::::!!:::::::::::::::::* P Y T H H I A A **
43 // ** *::::::::!!::::::::::::::::*! P Y T H H III A A **
44 // ** *::::::!!::::::::::::::* !! **
45 // ** !! *:::!!:::::::::::* !! This is PYTHIA version 6.418 **
46 // ** !! !* -><- * !! Last date of change: 9 Jun 2008 **
47 // ** !! !! !! **
48 // ** !! !! !! Now is 0 Jan 2000 at 0:00:00 **
49 // ** !! !! **
50 // ** !! lh !! Disclaimer: this program comes **
51 // ** !! !! without any guarantees. Beware **
52 // ** !! hh !! of errors and use common sense **
53 // ** !! ll !! when interpreting results. **
54 // ** !! !! **
55 // ** !! Copyright T. Sjostrand (2008) **
56 // ** **
57 // ** An archive of program versions and documentation is found on the web: **
58 // ** http://www.thep.lu.se/~torbjorn/Pythia.html **
59 // ** **
60 // ** When you cite this program, the official reference is to the 6.4 manual: **
61 // ** T. Sjostrand, S. Mrenna and P. Skands, JHEP05 (2006) 026 **
62 // ** (LU TP 06-13, FERMILAB-PUB-06-052-CD-T) [hep-ph/0603175]. **
63 // ** **
64 // ** Also remember that the program, to a large extent, represents original **
65 // ** physics research. Other publications of special relevance to your **
66 // ** studies may therefore deserve separate mention. **
67 // ** **
68 // ** Main author: Torbjorn Sjostrand; Department of Theoretical Physics, **
69 // ** Lund University, Solvegatan 14A, S-223 62 Lund, Sweden; **
70 // ** phone: + 46 - 46 - 222 48 16; e-mail: torbjorn@thep.lu.se **
71 // ** Author: Stephen Mrenna; Computing Division, GDS Group, **
72 // ** Fermi National Accelerator Laboratory, MS 234, Batavia, IL 60510, USA; **
73 // ** phone: + 1 - 630 - 840 - 2556; e-mail: mrenna@fnal.gov **
74 // ** Author: Peter Skands; Theoretical Physics Department, **
75 // ** Fermi National Accelerator Laboratory, MS 106, Batavia, IL 60510, USA; **
76 // ** and CERN/PH, CH-1211 Geneva, Switzerland; **
77 // ** phone: + 41 - 22 - 767 24 59; e-mail: skands@fnal.gov **
78 // ** **
79 // ** **
80 // ******************************************************************************
81 
82 #ifndef PYTHIA_Pythia6
83 #define PYTHIA_Pythia6
84 
85 #include <vector>
86 
87 int const KNDCAY = 8000; //should be 4000 for pythia61
88 
90 struct Pyjets_t
91 {
92  int N;
93  int NPAD;
94  int K[5][4000];
95  double P[5][4000];
96  double V[5][4000];
97 };
98 
100 struct Pydat1_t
101 {
102  int MSTU[200];
103  double PARU[200];
104  int MSTJ[200];
105  double PARJ[200];
106 };
107 
109 struct Pydat3_t
110 {
111  int MDCY[3][500];
112  int MDME[2][KNDCAY];
113  double BRAT[KNDCAY];
114  int KFDP[5][KNDCAY];
115 };
116 
118 struct Pythia6Particle
119 {
121  int ks, int kf, int parent, int firstChild, int lastChild,
122  float px, float py, float pz, float energy, float mass,
123  float vx, float vy, float vz, float time, float lifetime)
124  : fKS(ks), fKF(kf),
125  fParent(parent), fFirstChild(firstChild), fLastChild(lastChild),
126  fPx(px), fPy(py), fPz(pz), fEnergy(energy), fMass(mass),
127  fVx(vx), fVy(vy), fVz(vz), fTime(time), fLifetime(lifetime) {}
128 
129  int fKS; // status of particle ( LUJETS K[1] )
130  int fKF; // KF flavour code ( LUJETS K[2] )
131  int fParent; // parrent's id ( LUJETS K[3] )
132  int fFirstChild; // id of first child ( LUJETS K[4] )
133  int fLastChild; // id of last child ( LUJETS K[5] )
134 
135  float fPx; // X momenta [GeV/c] ( LUJETS P[1] )
136  float fPy; // Y momenta [GeV/c] ( LUJETS P[2] )
137  float fPz; // Z momenta [GeV/c] ( LUJETS P[3] )
138  float fEnergy; // Energy [GeV] ( LUJETS P[4] )
139  float fMass; // Mass [Gev/c^2] ( LUJETS P[5] )
140 
141  float fVx; // X vertex [mm] ( LUJETS V[1] )
142  float fVy; // Y vertex [mm] ( LUJETS V[2] )
143  float fVz; // Z vertex [mm] ( LUJETS V[3] )
144  float fTime; // time of procuction [mm/c]( LUJETS V[4] )
145  float fLifetime; // proper lifetime [mm/c] ( LUJETS V[5] )
146 };
147 
148 typedef std::vector<Pythia6Particle*> ParticleVector;
149 
161 
162 class Pythia6
163 {
164  public:
165 
166  // ****** constructors and destructor
167  Pythia6();
168  virtual ~Pythia6();
169 
170  static Pythia6 *Instance();
171 
172  // ****** TPYTHIA routines
173  //
174  int Pycomp(int kf);
175  void Py1ent(int line, int kf, double pe, double theta, double phi);
177  int ImportParticles(ParticleVector* particles, const char* option="");
178 
179  // ****** /PYDAT1/
180  //
181  void SetMSTJ(int i, int m ) { fPydat1->MSTJ[i-1] = m; }
182 
183  // ****** /PYDAT3/
184  //
185  int GetMDCY(int i, int j) { return fPydat3->MDCY[j-1][i-1]; }
186  int GetKFDP(int i, int j) { return fPydat3->KFDP[j-1][i-1]; }
187  void SetMDCY(int i, int j, int m) { fPydat3->MDCY[j-1][i-1] = m; }
188  void SetMDME(int i, int j, int m) { fPydat3->MDME[j-1][i-1] = m; }
189 
190  private:
191  static Pythia6* fgInstance;
192 
194  Pyjets_t* fPyjets;
195  Pydat1_t* fPydat1;
196  Pydat3_t* fPydat3;
197 };
198 
199 #endif
200