]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TUHKMgen/TUHKMgen.h
Fixing some warnings
[u/mrichter/AliRoot.git] / TUHKMgen / TUHKMgen.h
1 // This class implements the FASTMC generator model into AliROOT.
2 // For the aliroot implementation we make use only of the Bjorken-like
3 // initial state.
4 // Please look into the FASTMC articles for more documentation on the 
5 // needed parameters.
6
7 #ifndef TUHKMgen_H
8 #define TUHKMgen_H
9
10 #ifndef ROOT_TGenerator
11 #include "TGenerator.h"
12 #endif
13
14 #ifndef INITIALSTATEHYDJET_INCLUDED
15 #include "InitialStateHydjet.h"
16 #endif
17
18 #ifndef DATABASE_PDG
19 #include "DatabasePDG.h"
20 #endif
21
22 #include <string>
23 using namespace std;
24
25 class TUHKMgen : public TGenerator {
26  public:   
27   TUHKMgen();
28   virtual      ~TUHKMgen();
29   virtual void  Initialize();
30   virtual void  GenerateEvent();
31   virtual Int_t ImportParticles(TClonesArray *particles,Option_t* option="prim");
32   virtual TObjArray* ImportParticles(Option_t* option="prim");
33   // this function makes available the PDG info in our database 
34   virtual DatabasePDG* PDGInfo() const {return fInitialState->PDGInfo();}
35
36   // Setters
37   // set reasonable default parameters suited for central Au+Au collisions at RHIC(200GeV)
38   void SetAllParametersRHIC();
39   // set reasonable default parameters suited for central Pb+Pb collisions at LHC(5.5TeV)
40   void SetAllParametersLHC();
41
42   void SetEcms(Double_t value)             {fHydjetParams.fSqrtS = value;}          // CMS energy per nucleon [GeV] (<2.24 given temperature and ch pot are used)
43   void SetAw(Double_t value)               {fHydjetParams.fAw = value;}             // nuclei mass number
44   void SetIfb(Int_t value)                 {fHydjetParams.fIfb = value;}            //b-simulation: 0-fix,1-distributed
45   void SetBfix(Double_t value)             {fHydjetParams.fBfix = value;}           // fix impact parameter
46   void SetBmin(Double_t value)             {fHydjetParams.fBmin = value;}           // Minimum impact parameter
47   void SetBmax(Double_t value)             {fHydjetParams.fBmax = value;}           // Maximum impact parameter
48   void SetChFrzTemperature(Double_t value) {fHydjetParams.fT = value;}              // Temperature for the chemical freezeout [GeV]
49   void SetMuB(Double_t value)              {fHydjetParams.fMuB = value;}            // Baryonic chemical potential [GeV]
50   void SetMuS(Double_t value)              {fHydjetParams.fMuS = value;}            // Strangeness chemical potential [GeV]
51   void SetMuQ(Double_t value)              {fHydjetParams.fMuI3 = value;}  // Isospin chemical potential [GeV]
52   void SetThFrzTemperature(Double_t value) {fHydjetParams.fThFO = value;}           // Temperature for the thermal freezeout [GeV]
53   void SetMuPionThermal(Double_t value)    {fHydjetParams.fMu_th_pip = value;}      // Chemical potential for pi+ at thermal freezeout [GeV]
54   
55   
56   void SetSeed(Int_t value) {fHydjetParams.fSeed = value;}  //parameter to set the random nuber seed (=0 the current time is used
57   //to set the random generator seed, !=0 the value fSeed is 
58   //used to set the random generator seed and then the state of random
59   //number generator in PYTHIA MRPY(1)=fSeed
60   
61   
62   
63   void SetTauB(Double_t value)             {fHydjetParams.fTau = value;}            // Proper time for the freeze-out hypersurface [fm/c]
64   void SetSigmaTau(Double_t value)         {fHydjetParams.fSigmaTau = value;}       // Standard deviation for the proper time (emission duration) [fm/c]
65   void SetRmaxB(Double_t value)            {fHydjetParams.fR = value;}              // Maximal transverse radius [fm]
66   void SetYlMax(Double_t value)            {fHydjetParams.fYlmax = value;}          // Maximal fireball longitudinal rapidity
67   void SetEtaRMax(Double_t value)          {fHydjetParams.fUmax = value;}           // Maximal transverse velocity
68   void SetMomAsymmPar(Double_t value)      {fHydjetParams.fDelta = value;}          // Momentum asymmetry parameter
69   void SetCoordAsymmPar(Double_t value)    {fHydjetParams.fEpsilon = value;}        // Coordinate asymmetry parameter
70
71
72   void SetFlagWeakDecay(Int_t value)    {fHydjetParams.fWeakDecay = value;} //flag to switch on/off weak hadron decays <0: decays off, >0: decays on, (default: 0)
73
74
75   void SetEtaType(Int_t value)    {fHydjetParams.fEtaType = value;}     // flag to choose rapidity distribution, if fEtaType<=0, 
76                                      //then uniform rapidity distribution in [-fYlmax,fYlmax] if fEtaType>0,
77                                      //then Gaussian with dispertion = fYlmax 
78   
79
80   void SetGammaS(Double_t value)           {fHydjetParams.fCorrS = value;}          // Strangeness suppression parameter (if gamma_s<=0 then it will be calculated)
81  //not needed now  void SetHdec(Double_t value)             {fHydjetParams.fTime = value;}           // Enable/disable hadronic decays (<0 no decays, >=0 decays) 
82
83 //PYQUEN parameters 
84   void SetPyquenNhsel(Int_t value)         {fHydjetParams.fNhsel = value;}          // Flag to choose the type of event to be generated
85  
86   void SetPyquenShad(Int_t value)         {fHydjetParams.fIshad = value;}         //flag to switch on/off impact parameter dependent nuclear
87                                     // shadowing for gluons and light sea quarks (u,d,s) (0: shadowing off,
88                                     // 1: shadowing on for fAw=207, 197, 110, 40, default: 1
89  
90   void SetPyquenPtmin(Double_t value)      {fHydjetParams.fPtmin = value;}          // Pyquen input parameter for minimum Pt of parton-parton scattering (5GeV<pt<500GeV)
91                                                                                       // fNhsel = 0 --> UHKM fireball, no jets
92                                                                                       // fNhsel = 1 --> UHKM fireball, jets with no quenching
93                                                                                       // fNhsel = 2 --> UHKM fireball, jets with quenching 
94                                                                                       // fNhsel = 3 --> no UHKM fireball, jets with no quenching
95                                                                                       // fNhsel = 4 --> no UHKM fireball, jets with quenching
96
97   void SetPyquenT0(Double_t value)      {fHydjetParams.fT0 = value;}        //proper QGP formation tempereture
98   void SetPyquenTau0(Double_t value)      {fHydjetParams.fTau0 = value;}        //proper QGP formation time in fm/c (0.01<fTau0<10)
99   void SetPyquenNf(Int_t value)      {fHydjetParams.fNf = value;}           //number of active quark flavours N_f in QGP fNf=0, 1,2 or 3  
100   void SetPyquenIenglu(Int_t value)      {fHydjetParams.fIenglu = value;}      // flag to fix type of in-medium partonic energy loss 
101                                   //(0: radiative and collisional loss, 1: radiative loss only, 2:
102                                   //collisional loss only) (default: 0);  
103   void SetPyquenIanglu(Int_t value)      {fHydjetParams.fIanglu = value;}  //flag to fix type of angular distribution of in-medium emitted
104                                   // gluons (0: small-angular, 1: wide-angular, 2:collinear) (default: 0).
105   
106  
107   void SetPDGParticleFile(Char_t *name)              {strcpy(fParticleFilename, name);}     // Set the filename containing the particle PDG info
108   void SetPDGDecayFile(Char_t *name)                 {strcpy(fDecayFilename, name);}        // Set the filename containing the PDG decay channels info
109   void SetPDGParticleStable(Int_t pdg, Bool_t value) {                                      // Turn on/off the decay flag for a PDG particle
110     fStableFlagPDG[fStableFlagged] = pdg;
111     fStableFlagStatus[fStableFlagged++] = value;
112   } 
113   void SetUseCharmParticles(Bool_t flag) {fUseCharmParticles = flag;}
114   void SetMinimumWidth(Double_t value) {fMinWidth = value;}
115   void SetMaximumWidth(Double_t value) {fMaxWidth = value;}
116   void SetMinimumMass(Double_t value) {fMinMass = value;}
117   void SetMaximumMass(Double_t value) {fMaxMass = value;}
118
119   //Getters
120    
121   Double_t GetEcms()             {return fHydjetParams.fSqrtS;}          
122   Double_t GetAw()               {return fHydjetParams.fAw;}        
123   Double_t GetIfb()              {return fHydjetParams.fIfb;}
124   Double_t GetBfix()             {return fHydjetParams.fBfix;}       
125   Double_t GetBmin()             {return fHydjetParams.fBmin;}       
126   Double_t GetBmax()             {return fHydjetParams.fBmax;}       
127   Double_t GetChFrzTemperature() {return fHydjetParams.fT;} 
128   Double_t GetMuB()              {return fHydjetParams.fMuB;}
129   Double_t GetMuS()              {return fHydjetParams.fMuS;}
130   Double_t GetMuQ()              {return fHydjetParams.fMuI3;}
131   Double_t GetThFrzTemperature() {return fHydjetParams.fThFO;}
132   Double_t GetMuPionThermal()    {return fHydjetParams.fMu_th_pip;}
133   Int_t    GetSeed()             {return fHydjetParams.fSeed;}  
134   Double_t GetTauB()             {return fHydjetParams.fTau;}
135   Double_t GetSigmaTau()         {return fHydjetParams.fSigmaTau;}
136   Double_t GetRmaxB()            {return fHydjetParams.fR;}
137   Double_t GetYlMax()            {return fHydjetParams.fYlmax;}
138   Double_t GetEtaRMax()          {return fHydjetParams.fUmax;}
139   Double_t GetMomAsymmPar()      {return fHydjetParams.fDelta;}
140   Double_t GetCoordAsymmPar()    {return fHydjetParams.fEpsilon;}
141   Int_t GetFlagWeakDecay()       {return fHydjetParams.fWeakDecay;} 
142   Int_t GetEtaType()          {return fHydjetParams.fEtaType;}
143   Double_t GetGammaS()           {return fHydjetParams.fCorrS;}  
144   Int_t    GetPyquenNhsel()      {return fHydjetParams.fNhsel;}
145   Int_t    GetPyquenShad()       {return fHydjetParams.fIshad;}
146   Double_t GetPyquenPtmin()      {return fHydjetParams.fPtmin;}
147   Double_t GetPyquenT0()         {return fHydjetParams.fT0;}
148   Double_t GetPyquenTau0()       {return fHydjetParams.fTau0;}
149   Double_t GetPyquenNf()         {return fHydjetParams.fNf;}      
150   Double_t GetPyquenIenglu()     {return fHydjetParams.fIenglu;}     
151   Double_t GetPyquenIanglu()     {return fHydjetParams.fIanglu;}  
152   
153   Char_t*  GetPDGParticleFile()  {return fParticleFilename;}
154   Char_t*  GetPDGDecayFile()     {return fDecayFilename;}
155   Bool_t   GetUseCharmParticles(){return fUseCharmParticles;}
156   Double_t GetMinimumWidth()     {return fMinWidth;}
157   Double_t GetMaximumWidth()     {return fMaxWidth;}
158   Double_t GetMinimumMass()      {return fMinMass;}
159   Double_t GetMaximumMass()      {return fMaxMass;}
160   
161   void Print(const Option_t* opt="") const;
162
163  protected:
164   InitialStateHydjet *fInitialState;
165   ParticleAllocator fAllocator;
166   List_t fSourceList;
167   List_t fSecondariesList;
168   Int_t  fNPprim;
169   Int_t  fNPsec;
170   InitialParamsHydjet_t fHydjetParams;       // list of parameters for the initial state
171   // details for the PDG database
172   Char_t fParticleFilename[256];               // particle list filename
173   Char_t fDecayFilename[256];                  // decay table filename
174   Int_t fStableFlagPDG[500];                   // array of PDG codes flagged to be stable
175   Bool_t fStableFlagStatus[500];               // array of decay flag status
176   Int_t fStableFlagged;                        // number of toggled decay flags
177   Bool_t fUseCharmParticles;                   // flag to turn on/off the use of charm particles
178   Double_t fMinWidth;                          // minimum decay width for the particles to be used from the PDG database
179   Double_t fMaxWidth;                          // maximum ----
180   Double_t fMinMass;                           // minimum mass for the particles to be used from the PDG database
181   Double_t fMaxMass;                           // maximum ----
182
183   void SetAllParameters();
184
185  private:
186   TUHKMgen(const TUHKMgen&);
187   TUHKMgen& operator=(const TUHKMgen&);
188
189   ClassDef(TUHKMgen, 3)  //Interface to FASTMC Event Generator
190 };
191 #endif
192
193
194
195
196
197
198