Do not include from subdirectories
[u/mrichter/AliRoot.git] / TUHKMgen / AliGenUHKM.h
1 // This class provides an interface between the HYDJET++ Monte-Carlo model
2 // and AliRoot (by inheriting from the AliGenMC class).
3 // This class uses the TUHKMgen class (which inherits from TGenerator) to
4 // transmit parameters and receive output from the model.
5
6 #ifndef ALIGENUHKM_H
7 #define ALIGENUHKM_H
8
9 #include <string>
10
11 //#include <TString.h>
12 //#include <TParticle.h>
13
14 #include "AliGenMC.h"
15 #include "TUHKMgen.h"
16 #ifndef INITIALSTATEHYDJET_H
17 #include "InitialStateHydjet.h"
18 #endif
19
20 using namespace std;
21
22
23 class AliGenUHKM : public AliGenMC
24 {
25    
26  public:
27   AliGenUHKM();
28   AliGenUHKM(Int_t npart);
29   
30   virtual ~AliGenUHKM();
31   virtual void    Generate();
32   virtual void    Init();
33   //  virtual void    AddHeader(AliGenEventHeader* header);
34   
35   // Setters
36   // set reasonable default parameters suited for central Au+Au collisions at RHIC(200GeV)
37   void SetAllParametersRHIC();
38   // set reasonable default parameters suited for central Pb+Pb collisions at LHC(5.5TeV)
39   void SetAllParametersLHC();
40   
41   void SetEcms(Double_t value) {fHydjetParams.fSqrtS = value;}          // CMS energy per nucleon [GeV] (<2.24 given temperature and ch pot are used)
42   void SetAw(Double_t value) {fHydjetParams.fAw = value;}             // nuclei mass number
43   void SetBmin(Double_t value) {fHydjetParams.fBmin = value;}           // Minimum impact parameter
44   void SetBmax(Double_t value) {fHydjetParams.fBmax = value;}           // Maximum impact parameter
45   void SetChFrzTemperature(Double_t value) {fHydjetParams.fT = value;}  // Temperature for the chemical freezeout [GeV]
46   void SetMuB(Double_t value) {fHydjetParams.fMuB = value;}            // Baryonic chemical potential [GeV]
47   void SetMuS(Double_t value) {fHydjetParams.fMuS = value;}            // Strangeness chemical potential [GeV]
48   void SetMuQ(Double_t value) {fHydjetParams.fMuI3 = value;}  // Isospin chemical potential [GeV]
49   void SetThFrzTemperature(Double_t value) {fHydjetParams.fThFO = value;}  // Temperature for the thermal freezeout [GeV]
50   void SetMuPionThermal(Double_t value) {fHydjetParams.fMu_th_pip = value;} // Chemical potential for pi+ at thermal freezeout [GeV]
51   virtual void SetSeed(UInt_t value) {fHydjetParams.fSeed = value;} //parameter to set the random nuber seed (=0 the current time is used
52   //to set the random generator seed, !=0 the value fSeed is
53   //used to set the random generator seed and then the state of random
54   //number generator in PYTHIA MRPY(1)=fSeed
55   void SetTauB(Double_t value) {fHydjetParams.fTau = value;}  // Proper time for the freeze-out hyper surface [fm/c]
56   void SetSigmaTau(Double_t value) {fHydjetParams.fSigmaTau = value;}  // Standard deviation for the proper time (emission duration) [fm/c]
57   void SetRmaxB(Double_t value) {fHydjetParams.fR = value;}              // Maximal transverse radius [fm]
58   void SetYlMax(Double_t value) {fHydjetParams.fYlmax = value;}          // Maximal fireball longitudinal rapidity
59   void SetEtaRMax(Double_t value) {fHydjetParams.fUmax = value;}           // Maximal transverse velocity
60   void SetMomAsymmPar(Double_t value) {fHydjetParams.fDelta = value;}          // Momentum asymmetry parameter
61   void SetCoordAsymmPar(Double_t value) {fHydjetParams.fEpsilon = value;}        // Coordinate asymmetry parameter
62
63   void SetEtaType(Int_t value) {fHydjetParams.fEtaType = value;} // flag to choose rapidity distribution, if fEtaType<=0,
64                                                   //then uniform rapidity distribution in [-fYlmax,fYlmax] if fEtaType>0,
65                                                   //then Gaussian with dispertion = fYlmax
66   void SetGammaS(Double_t value) {fHydjetParams.fCorrS = value;} // Strangeness suppression parameter (if gamma_s<=0 then it will be calculated)
67   
68   //PYQUEN parameters
69   void SetPyquenNhsel(Int_t value) {fHydjetParams.fNhsel = value;} // Flag to choose the type of event to be generated
70                                               // fNhsel = 0 --> UHKM fireball, no jets
71                                               // fNhsel = 1 --> UHKM fireball, jets with no quenching
72                                               // fNhsel = 2 --> UHKM fireball, jets with quenching
73                                               // fNhsel = 3 --> no UHKM fireball, jets with no quenching
74                                               // fNhsel = 4 --> no UHKM fireball, jets with quenching
75   void SetPyquenShad(Int_t value) {fHydjetParams.fIshad = value;}//flag to switch on/off impact parameter dependent nuclear
76                                                  // shadowing for gluons and light sea quarks (u,d,s) (0: shadowing off,
77                                                  // 1: shadowing on for fAw=207, 197, 110, 40, default: 1
78   void SetPyquenPtmin(Double_t value) {fHydjetParams.fPtmin = value;} // Pyquen input parameter for minimum Pt of parton-parton scattering (5GeV<pt<500GeV)
79   void SetPyquenT0(Double_t value) {fHydjetParams.fT0 = value;}        //proper QGP formation tempereture
80   void SetPyquenTau0(Double_t value) {fHydjetParams.fTau0 = value;}    //proper QGP formation time in fm/c (0.01<fTau0<10)
81   void SetPyquenNf(Int_t value) {fHydjetParams.fNf = value;}  //number of active quark flavours N_f in QGP fNf=0, 1,2 or 3
82   void SetPyquenIenglu(Int_t value) {fHydjetParams.fIenglu = value;}  // flag to fix type of in-medium partonic energy loss
83                                                         //(0: radiative and collisional loss, 1: radiative loss only, 2:
84                                                         //collisional loss only) (default: 0);
85   void SetPyquenIanglu(Int_t value) {fHydjetParams.fIanglu = value;}  //flag to fix type of angular distribution of in-medium emitted
86                                                    //gluons (0: small-angular, 1: wide-angular, 2:collinear) (default: 0).
87
88
89   void SetPDGParticleFile(const Char_t *name) {strncpy(fParticleFilename, name, 255);}//Set the filename containing the particle PDG info
90   void SetPDGDecayFile(const Char_t *name) {strncpy(fDecayFilename, name, 255);} //Set the filename containing the PDG decay channels info
91   void SetPDGParticleStable(Int_t pdg, Bool_t value) { // Turn on/off the decay flag for a PDG particle
92     fStableFlagPDG[fStableFlagged] = pdg;
93     fStableFlagStatus[fStableFlagged++] = value;
94   }
95
96   // Getters
97   Double_t GetEcms() const {return fHydjetParams.fSqrtS;}
98   Double_t GetAw() const {return fHydjetParams.fAw;}
99   Double_t GetBmin() const {return fHydjetParams.fBmin;}
100   Double_t GetBmax() const {return fHydjetParams.fBmax;}
101   Double_t GetChFrzTemperature() const {return fHydjetParams.fT;}
102   Double_t GetMuB() const {return fHydjetParams.fMuB;}
103   Double_t GetMuS() const {return fHydjetParams.fMuS;}
104   Double_t GetMuQ() const {return fHydjetParams.fMuI3;}
105   Double_t GetThFrzTemperature() const {return fHydjetParams.fThFO;}
106   Double_t GetMuPionThermal() const {return fHydjetParams.fMu_th_pip;}
107   Int_t    GetSeed() const {return fHydjetParams.fSeed;}
108   Double_t GetTauB() const {return fHydjetParams.fTau;}
109   Double_t GetSigmaTau() const {return fHydjetParams.fSigmaTau;}
110   Double_t GetRmaxB() const {return fHydjetParams.fR;}
111   Double_t GetYlMax() const {return fHydjetParams.fYlmax;}
112   Double_t GetEtaRMax() const {return fHydjetParams.fUmax;}
113   Double_t GetMomAsymmPar() const {return fHydjetParams.fDelta;}
114   Double_t GetCoordAsymmPar() const {return fHydjetParams.fEpsilon;}
115   Int_t    GetEtaType() const {return fHydjetParams.fEtaType;}
116   Double_t GetGammaS() const {return fHydjetParams.fCorrS;}
117   Int_t    GetPyquenNhsel() const {return fHydjetParams.fNhsel;}
118   Int_t    GetPyquenShad() const {return fHydjetParams.fIshad;}
119   Double_t GetPyquenPtmin() const {return fHydjetParams.fPtmin;}
120   Double_t GetPyquenT0() const {return fHydjetParams.fT0;}
121   Double_t GetPyquenTau0() const {return fHydjetParams.fTau0;}
122   Double_t GetPyquenNf() const {return fHydjetParams.fNf;}
123   Double_t GetPyquenIenglu() const {return fHydjetParams.fIenglu;}
124   Double_t GetPyquenIanglu() const {return fHydjetParams.fIanglu;}
125   const Char_t*  GetPDGParticleFile() const {return fParticleFilename;}
126   const Char_t*  GetPDGDecayFile() const {return fDecayFilename;}
127
128  protected:
129   Int_t       fTrials;         // Number of trials
130   TUHKMgen    *fUHKMgen;       // UHKM
131   
132   InitialParamsHydjet_t fHydjetParams;    // list of parameters for the initial state
133   // details for the PDG database
134   Char_t fParticleFilename[256];            // particle list filename
135   Char_t fDecayFilename[256];               // decay table filename
136   Int_t fStableFlagPDG[500];                // array of PDG codes flagged
137   Bool_t fStableFlagStatus[500];            // array of decay flag status
138   Int_t fStableFlagged;                     // number of toggled decay flags
139
140   void SetAllParameters();
141   void CheckPDGTable();
142   
143  private:
144   void Copy(TObject &rhs) const;
145   AliGenUHKM(const AliGenUHKM&);
146   AliGenUHKM & operator = (const AliGenUHKM &);
147
148   ClassDef(AliGenUHKM, 6) // AliGenerator interface to UHKM
149 };
150 #endif
151
152
153
154
155