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