// // ******************************************************************** // * License and Disclaimer * // * * // * The Geant4 software is copyright of the Copyright Holders of * // * the Geant4 Collaboration. It is provided under the terms and * // * conditions of the Geant4 Software License, included in the file * // * LICENSE and available at http://cern.ch/geant4/license . These * // * include a list of copyright holders. * // * * // * Neither the authors of this software system, nor their employing * // * institutes,nor the agencies providing financial support for this * // * work make any representation or warranty, express or implied, * // * regarding this software system or assume any liability for its * // * use. Please see the license in the file LICENSE and URL above * // * for the full disclaimer and the limitation of liability. * // * * // * This code implementation is the result of the scientific and * // * technical work of the GEANT4 collaboration. * // * By using, copying, modifying or distributing the software (or * // * any work based on the software) you agree to acknowledge its * // * use in resulting scientific publications, and indicate your * // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // /// \file Pythia6.hh /// \brief Definition of the Pythia6 class // ---------------------------------------------------------------------------- // ****************************************************************************** // ****************************************************************************** // ** ** // ** ** // ** *......* Welcome to the Lund Monte Carlo! ** // ** *:::!!:::::::::::* ** // ** *::::::!!::::::::::::::* PPP Y Y TTTTT H H III A ** // ** *::::::::!!::::::::::::::::* P P Y Y T H H I A A ** // ** *:::::::::!!:::::::::::::::::* PPP Y T HHHHH I AAAAA ** // ** *:::::::::!!:::::::::::::::::* P Y T H H I A A ** // ** *::::::::!!::::::::::::::::*! P Y T H H III A A ** // ** *::::::!!::::::::::::::* !! ** // ** !! *:::!!:::::::::::* !! This is PYTHIA version 6.418 ** // ** !! !* -><- * !! Last date of change: 9 Jun 2008 ** // ** !! !! !! ** // ** !! !! !! Now is 0 Jan 2000 at 0:00:00 ** // ** !! !! ** // ** !! lh !! Disclaimer: this program comes ** // ** !! !! without any guarantees. Beware ** // ** !! hh !! of errors and use common sense ** // ** !! ll !! when interpreting results. ** // ** !! !! ** // ** !! Copyright T. Sjostrand (2008) ** // ** ** // ** An archive of program versions and documentation is found on the web: ** // ** http://www.thep.lu.se/~torbjorn/Pythia.html ** // ** ** // ** When you cite this program, the official reference is to the 6.4 manual: ** // ** T. Sjostrand, S. Mrenna and P. Skands, JHEP05 (2006) 026 ** // ** (LU TP 06-13, FERMILAB-PUB-06-052-CD-T) [hep-ph/0603175]. ** // ** ** // ** Also remember that the program, to a large extent, represents original ** // ** physics research. Other publications of special relevance to your ** // ** studies may therefore deserve separate mention. ** // ** ** // ** Main author: Torbjorn Sjostrand; Department of Theoretical Physics, ** // ** Lund University, Solvegatan 14A, S-223 62 Lund, Sweden; ** // ** phone: + 46 - 46 - 222 48 16; e-mail: torbjorn@thep.lu.se ** // ** Author: Stephen Mrenna; Computing Division, GDS Group, ** // ** Fermi National Accelerator Laboratory, MS 234, Batavia, IL 60510, USA; ** // ** phone: + 1 - 630 - 840 - 2556; e-mail: mrenna@fnal.gov ** // ** Author: Peter Skands; Theoretical Physics Department, ** // ** Fermi National Accelerator Laboratory, MS 106, Batavia, IL 60510, USA; ** // ** and CERN/PH, CH-1211 Geneva, Switzerland; ** // ** phone: + 41 - 22 - 767 24 59; e-mail: skands@fnal.gov ** // ** ** // ** ** // ****************************************************************************** #ifndef PYTHIA_Pythia6 #define PYTHIA_Pythia6 #include int const KNDCAY = 8000; // should be 4000 for pythia61 /// PYJETS common-block struct Pyjets_t { int N; int NPAD; int K[5][4000]; double P[5][4000]; double V[5][4000]; }; /// PYDAT1 common-block struct Pydat1_t { int MSTU[200]; double PARU[200]; int MSTJ[200]; double PARJ[200]; }; /// PYDAT3 common-block struct Pydat3_t { int MDCY[3][500]; int MDME[2][KNDCAY]; double BRAT[KNDCAY]; int KFDP[5][KNDCAY]; }; /// Structure for Pythia6 particle properties struct Pythia6Particle { Pythia6Particle(int ks, int kf, int parent, int firstChild, int lastChild, float px, float py, float pz, float energy, float mass, float vx, float vy, float vz, float time, float lifetime) : fKS(ks), fKF(kf), fParent(parent), fFirstChild(firstChild), fLastChild(lastChild), fPx(px), fPy(py), fPz(pz), fEnergy(energy), fMass(mass), fVx(vx), fVy(vy), fVz(vz), fTime(time), fLifetime(lifetime) {} int fKS; // status of particle ( LUJETS K[1] ) int fKF; // KF flavour code ( LUJETS K[2] ) int fParent; // parrent's id ( LUJETS K[3] ) int fFirstChild; // id of first child ( LUJETS K[4] ) int fLastChild; // id of last child ( LUJETS K[5] ) float fPx; // X momenta [GeV/c] ( LUJETS P[1] ) float fPy; // Y momenta [GeV/c] ( LUJETS P[2] ) float fPz; // Z momenta [GeV/c] ( LUJETS P[3] ) float fEnergy; // Energy [GeV] ( LUJETS P[4] ) float fMass; // Mass [Gev/c^2] ( LUJETS P[5] ) float fVx; // X vertex [mm] ( LUJETS V[1] ) float fVy; // Y vertex [mm] ( LUJETS V[2] ) float fVz; // Z vertex [mm] ( LUJETS V[3] ) float fTime; // time of procuction [mm/c]( LUJETS V[4] ) float fLifetime; // proper lifetime [mm/c] ( LUJETS V[5] ) }; typedef std::vector ParticleVector; /// The C++ interface class to Pythia6 /// /// According to TPythia6 class from Root: /// (The TPythia6 class is an interface class to F77 routines in Pythia6 // /// CERNLIB event generators, written by T.Sjostrand.) /// http://root.cern/ /// see http://root.cern/root/License.html /// /// The complete Pythia6 documentation can be found at: /// http://home.thep.lu.se/~torbjorn/pythiaaux/recent.html /// class Pythia6 { public: // ****** constructors and destructor Pythia6(); virtual ~Pythia6(); static Pythia6* Instance(); // ****** TPYTHIA routines // int Pycomp(int kf); void Py1ent(int line, int kf, double pe, double theta, double phi); ParticleVector* ImportParticles(); int ImportParticles(ParticleVector* particles, const char* option = ""); // ****** /PYDAT1/ // void SetMSTJ(int i, int m) { fPydat1->MSTJ[i - 1] = m; } // ****** /PYDAT3/ // int GetMDCY(int i, int j) { return fPydat3->MDCY[j - 1][i - 1]; } int GetKFDP(int i, int j) { return fPydat3->KFDP[j - 1][i - 1]; } void SetMDCY(int i, int j, int m) { fPydat3->MDCY[j - 1][i - 1] = m; } void SetMDME(int i, int j, int m) { fPydat3->MDME[j - 1][i - 1] = m; } private: static Pythia6* fgInstance; ParticleVector* fParticles; Pyjets_t* fPyjets; Pydat1_t* fPydat1; Pydat3_t* fPydat3; }; #endif