Completing the setup for TTherminator model.
[u/mrichter/AliRoot.git] / TTherminator / Therminator / Event.h
1 /******************************************************************************
2  *                      T H E R M I N A T O R                                 *
3  *                   THERMal heavy-IoN generATOR                              *
4  *                           version 1.0                                      *
5  *                                                                            *
6  * Authors of the model: Wojciech Broniowski, Wojciech.Broniowski@ifj.edu.pl, *
7  *                       Wojciech Florkowski, Wojciech.Florkowski@ifj.edu.pl  *
8  * Authors of the code:  Adam Kisiel, kisiel@if.pw.edu.pl                     *
9  *                       Tomasz Taluc, ttaluc@if.pw.edu.pl                    *
10  * Code designers: Adam Kisiel, Tomasz Taluc, Wojciech Broniowski,            *
11  *                 Wojciech Florkowski                                        *
12  *                                                                            *
13  * For the detailed description of the program and furhter references         * 
14  * to the description of the model plesase refer to: nucl-th/0504047,         *
15  * accessibile at: http://www.arxiv.org/nucl-th/0504047                       *
16  *                                                                            *
17  * Homepage: http://hirg.if.pw.edu.pl/en/therminator/                         *
18  *                                                                            *
19  * This code can be freely used and redistributed. However if you decide to   *
20  * make modifications to the code, please contact the authors, especially     *
21  * if you plan to publish the results obtained with such modified code.       *
22  * Any publication of results obtained using this code must include the       *
23  * reference to nucl-th/0504047 and the published version of it, when         *
24  * available.                                                                 *
25  *                                                                            *
26  *****************************************************************************/
27 #ifndef _BFPW_EVENT_
28 #define _BFPW_EVENT_
29
30 #include <vector>
31 #include <list>
32 #include <TRandom2.h>
33 #include "THGlobal.h"
34 #include "Particle.h"
35 #include "ParticleDB.h"
36 #include "Integrator.h"
37
38 using namespace std;
39
40 typedef list<Particle> ParticleList;
41 typedef list<Particle>::iterator ParticleListIter;
42
43 class Particle;
44
45 class Event
46 {
47  public:
48   Event(ParticleDB *aDB, Integrator *aInteg);
49   ~Event();
50
51   void GenerateEvent(int aSeed=0);
52   void DecayParticles();
53   
54   int  GetParticleCount();
55   void InitParticleScan();
56   Particle* GetNextParticle();
57   Particle* GetParticleOfCount(int aCount);
58   void WriteEvent(int nEvent=0);
59   void AddParticle(Particle* aParticle);
60   void Randomize();
61   
62  private:
63   ParticleList   mParticles;
64   vector<int>    mMultiplicities;
65   vector<double> mAverageMultiplicities;
66   void           GenerateMultiplicities();
67   void           ReadMultiplicities();
68   void           ReadParameters();
69   ParticleDB    *mDB;
70   Integrator    *mInteg;
71   TRandom2      *mRandom;
72   ParticleListIter mCurIter;
73   Int_t          mNegBin;
74   Int_t          mScanStarted;
75   TString        mFOHSlocation;
76 };
77
78
79 #endif