]>
Commit | Line | Data |
---|---|---|
b1c2e580 | 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 { | |
b1c2e580 | 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 | ||
786056a2 | 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&); | |
b1c2e580 | 188 | |
189 | ClassDef(TUHKMgen, 3) //Interface to FASTMC Event Generator | |
190 | }; | |
191 | #endif | |
192 | ||
193 | ||
194 | ||
195 | ||
196 | ||
197 | ||
198 |