]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVGEN/AliGenEMlib.h
Adding Domenico Colella as responsible for SPD part in TRI pp
[u/mrichter/AliRoot.git] / EVGEN / AliGenEMlib.h
CommitLineData
e40b9538 1#ifndef ALIGENEMLIB_H
2#define ALIGENEMLIB_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id: AliGenEMlib.h 30052 2008-11-25 14:54:18Z morsch $ */
7
8/////////////////////////////////////////////////////////////////////////////
9// //
10// Implementation of AliGenEMlib for electron, di-electron, and photon //
11// cocktail calculations. //
12// It is based on AliGenGSIlib. //
13// //
14// Responsible: R.Averbeck@gsi.de //
15// //
16/////////////////////////////////////////////////////////////////////////////
17
18#include "AliGenLib.h"
19class TRandom;
20
21class AliGenEMlib :public AliGenLib {
79738503 22public:
23
2901e97c 24 enum Particle_t{ kPizero=0, kEta=1, kRho0=2, kOmega=3, kEtaprime=4, kPhi=5, kJpsi=6,
25 kSigma0=7, kK0s=8, kDeltaPlPl=9, kDeltaPl=10, kDeltaMi=11, kDeltaZero=12,
26 kRhoPl=13, kRhoMi=14, kK0star=15, kDirectRealGamma=16, kDirectVirtGamma=17 };
79738503 27
28 enum CollisionSystem_t {kpp900GeV=0x000, kpp2760GeV=0x100, kpp7TeV=0x200, kpPb=0x300, kPbPb=0x400};
29
30 enum Centrality_t{ kpp = 0x0, k0005=0x1, k0510=0x2, k1020=0x3, k2030=0x4, k3040=0x5, k4050=0x6, k5060=0x7,
31 k0010=0x8, k2040=0x9, k4060=0xA, k6080=0xB, k0020=0xC, k0040=0xD, k2080=0xE, k4080=0xF, kCentralities=0x10};
32
2901e97c 33 enum PtParamSetPi0_t{ kPizeroParam, kPizeroParamlow, kPizeroParamhigh, kPichargedParam,
34 kPichargedParamlow, kPichargedParamhigh, kPizeroParamAlter,
35 kPizeroParamAlterlow, kPizeroParamAlterhigh, kNPi0Param,
36 kPichargedParamNew, kPichargedParamOld };
79738503 37
2901e97c 38 enum PtParamSetEta_t{ kEtaMtScal=0, kEtaParampp, kEtaParampplow, kEtaParampphigh,
39 kEtaParamRatiopp, kEtaParamRatiopplow, kEtaParamRatiopphigh,
40 kEtaParamPbPb, kEtaParamPPb };
79738503 41
2901e97c 42 enum PtParamSetOmega_t{ kOmegaMtScal=0, kOmegaParampp, kOmegaParampplow, kOmegaParampphigh,
43 kOmegaParamRatiopp, kOmegaParamRatiopplow, kOmegaParamRatiopphigh,
44 kOmegaParamPbPb, kOmegaParamPPb };
79738503 45
2901e97c 46 enum PtParamSetPhi_t{ kPhiMtScal=0, kPhiParampp, kPhiParampplow, kPhiParampphigh,
47 kPhiParamPbPb, kPhiParamPPb };
79738503 48
49 enum v2Sys_t{kLoV2Sys=-1, kNoV2Sys=0, kUpV2Sys=+1};
50
51 AliGenEMlib() { } ;
52
53 static void SelectParams( Int_t collisionSystem,
54 Int_t ptSelectPi0,
55 Int_t ptSelectEta,
56 Int_t ptSelectOmega,
57 Int_t ptSelectPhi,
58 Int_t centSelect=kpp,
59 Int_t v2sys=kNoV2Sys) {
60 fgSelectedCollisionsSystem = collisionSystem;
61 fgSelectedPtParamPi0=ptSelectPi0;
62 fgSelectedPtParamEta=ptSelectEta;
63 fgSelectedPtParamOmega=ptSelectOmega;
64 fgSelectedPtParamPhi=ptSelectPhi;
65 fgSelectedCentrality=centSelect;
66 fgSelectedV2Systematic=v2sys;
67 }
68
69 GenFunc GetPt(Int_t param, const char * tname=0) const;
70 GenFunc GetY(Int_t param, const char * tname=0) const;
71 GenFuncIp GetIp(Int_t param, const char * tname=0) const;
72 GenFunc GetV2(Int_t param, const char * tname=0) const;
73
74 //private:
75
76 // General functions
77
78 // General functions
79 static Int_t fgSelectedCollisionsSystem; // selected pT parameter
80 static Int_t fgSelectedPtParamPi0; // selected pT parameter
81 static Int_t fgSelectedPtParamEta; // selected pT parameter
82 static Int_t fgSelectedPtParamOmega; // selected pT parameter
83 static Int_t fgSelectedPtParamPhi; // selected pT parameter
84 static Int_t fgSelectedCentrality; // selected Centrality
85 static Int_t fgSelectedV2Systematic; // selected v2 systematics, usefully values: -1,0,1
86
87
88 static Double_t PtModifiedHagedornThermal(Double_t pt,
89 Double_t c,
90 Double_t p0,
91 Double_t p1,
92 Double_t n,
93 Double_t cT,
94 Double_t T);
95
96
97
98 static Double_t PtModifiedHagedornExp(Double_t pt,
99 Double_t c,
100 Double_t p0,
101 Double_t p1,
102 Double_t p2,
103 Double_t n);
104
105
106 static Double_t PtModifiedHagedornExp2(Double_t pt,
107 Double_t c,
108 Double_t a,
109 Double_t b,
110 Double_t p0,
111 Double_t p1,
112 Double_t d,
113 Double_t n);
114
115
116 static Double_t PtTsallis(Double_t pt,
117 Double_t m,
118 Double_t c,
119 Double_t T,
120 Double_t n);
121
122 static Double_t PtParticleRatiopp(Double_t pt,
123 Double_t m1,
124 Double_t m2,
125 Double_t c1,
126 Double_t c2,
127 Double_t T1,
128 Double_t T2,
129 Double_t n);
130
131 static Double_t PtXQCD( Double_t pt,
132 Double_t a,
133 Double_t b,
134 Double_t c,
135 Double_t d,
136 Double_t e,
137 Double_t f);
138
139 static Double_t PtModTsallis( Double_t pt,
6e38a462 140 Double_t a,
141 Double_t b,
142 Double_t c,
143 Double_t d,
79738503 144 Double_t e,
145 Double_t f,
146 Double_t g,
147 Double_t mass);
148
149 static Double_t PtQCD( Double_t pt,
150 Double_t a,
151 Double_t b,
152 Double_t c,
153 Double_t d,
154 Double_t e);
155
156 static Double_t PtExponential(const Double_t *pt, const Double_t *param);
157 static Double_t PtModifiedHagedornPowerlaw(const Double_t *pt, const Double_t *param);
158 static Double_t PtDoublePowerlaw(const Double_t *pt, const Double_t *param);
159 static Double_t IntegratedKrollWada(const Double_t *mh, const Double_t *);
160
161 // direct gamma
162 static Double_t PtPromptRealGamma(const Double_t *px, const Double_t *dummy);
163 static Double_t PtPromptVirtGamma(const Double_t *px, const Double_t *dummy);
164 static Double_t PtThermalRealGamma(const Double_t *px, const Double_t *dummy);
165 static Double_t PtThermalVirtGamma(const Double_t *px, const Double_t *dummy);
166
167 static Int_t IpDirectRealGamma(TRandom *ran);
168 static Double_t PtDirectRealGamma(const Double_t *px, const Double_t *dummy);
169 static Double_t YDirectRealGamma(const Double_t *py, const Double_t *dummy);
170 static Double_t V2DirectRealGamma(const Double_t *px, const Double_t *dummy);
171
172 static Int_t IpDirectVirtGamma(TRandom *ran);
173 static Double_t PtDirectVirtGamma(const Double_t *px, const Double_t *dummy);
174 static Double_t YDirectVirtGamma(const Double_t *py, const Double_t *dummy);
175 static Double_t V2DirectVirtGamma(const Double_t *px, const Double_t *dummy);
176
177 // Pizero
178 static Int_t IpPizero(TRandom *ran);
179 static Double_t PtPizero(const Double_t *px, const Double_t *dummy);
180 static Double_t YPizero(const Double_t *py, const Double_t *dummy);
181 static Double_t V2Pizero(const Double_t *px, const Double_t *dummy);
182
183 // Eta
184 static Int_t IpEta(TRandom *ran);
185 static Double_t PtEta(const Double_t *px, const Double_t *dummy);
186 static Double_t YEta(const Double_t *py, const Double_t *dummy);
187 static Double_t V2Eta(const Double_t *px, const Double_t *dummy);
188
189 // Rho
190 static Int_t IpRho0(TRandom *ran);
191 static Double_t PtRho0(const Double_t *px, const Double_t *dummy);
192 static Double_t YRho0(const Double_t *py, const Double_t *dummy);
193 static Double_t V2Rho0(const Double_t *py, const Double_t *dummy);
194
195
196 // Omega
197 static Int_t IpOmega(TRandom *ran);
198 static Double_t PtOmega(const Double_t *px, const Double_t *dummy);
199 static Double_t YOmega(const Double_t *py, const Double_t *dummy);
200 static Double_t V2Omega(const Double_t *py, const Double_t *dummy);
201
202 // Etaprime
203 static Int_t IpEtaprime(TRandom *ran);
204 static Double_t PtEtaprime(const Double_t *px, const Double_t *dummy);
205 static Double_t YEtaprime(const Double_t *py, const Double_t *dummy);
206 static Double_t V2Etaprime(const Double_t *py, const Double_t *dummy);
207
208 // Phi
209 static Int_t IpPhi(TRandom *ran);
210 static Double_t PtPhi(const Double_t *px, const Double_t *dummy);
211 static Double_t YPhi(const Double_t *py, const Double_t *dummy);
212 static Double_t V2Phi(const Double_t *py, const Double_t *dummy);
213
214 // Jpsi
215 static Int_t IpJpsi(TRandom *ran);
216 static Double_t PtJpsi(const Double_t *px, const Double_t *dummy);
217 static Double_t YJpsi(const Double_t *py, const Double_t *dummy);
218 static Double_t V2Jpsi(const Double_t *py, const Double_t *dummy);
219
220 // Sigma
221 static Int_t IpSigma(TRandom *ran);
222 static Double_t PtSigma( const Double_t *px, const Double_t *dummy );
223 static Double_t YSigma(const Double_t *py, const Double_t *dummy);
224 static Double_t V2Sigma0( const Double_t *px, const Double_t *dummy );
225
226 // K0short
227 static Int_t IpK0short(TRandom *ran);
228 static Double_t PtK0short( const Double_t *px, const Double_t *dummy );
229 static Double_t YK0short(const Double_t *py, const Double_t *dummy);
230 static Double_t V2K0sshort( const Double_t *px, const Double_t *dummy );
231
232 // Delta++
233 static Int_t IpDeltaPlPl(TRandom *ran);
234 static Double_t PtDeltaPlPl( const Double_t *px, const Double_t *dummy );
235 static Double_t YDeltaPlPl(const Double_t *py, const Double_t *dummy);
236 static Double_t V2DeltaPlPl( const Double_t *px, const Double_t *dummy );
237
238 // Delta+
239 static Int_t IpDeltaPl(TRandom *ran);
240 static Double_t PtDeltaPl( const Double_t *px, const Double_t *dummy );
241 static Double_t YDeltaPl(const Double_t *py, const Double_t *dummy);
242 static Double_t V2DeltaPl( const Double_t *px, const Double_t *dummy );
243
244 // Delta-
245 static Int_t IpDeltaMi(TRandom *ran);
246 static Double_t PtDeltaMi( const Double_t *px, const Double_t *dummy );
247 static Double_t YDeltaMi(const Double_t *py, const Double_t *dummy);
248 static Double_t V2DeltaMi( const Double_t *px, const Double_t *dummy );
249
250 // Delta0
251 static Int_t IpDeltaZero(TRandom *ran);
252 static Double_t PtDeltaZero( const Double_t *px, const Double_t *dummy );
253 static Double_t YDeltaZero(const Double_t *py, const Double_t *dummy);
254 static Double_t V2DeltaZero( const Double_t *px, const Double_t *dummy );
255
256 // Rho+
257 static Int_t IpRhoPl(TRandom *ran);
258 static Double_t PtRhoPl( const Double_t *px, const Double_t *dummy );
259 static Double_t YRhoPl(const Double_t *py, const Double_t *dummy);
260 static Double_t V2RhoPl( const Double_t *px, const Double_t *dummy );
261
262 // Rho-
263 static Int_t IpRhoMi(TRandom *ran);
264 static Double_t PtRhoMi( const Double_t *px, const Double_t *dummy );
265 static Double_t YRhoMi(const Double_t *py, const Double_t *dummy);
266 static Double_t V2RhoMi( const Double_t *px, const Double_t *dummy );
267
268 // K0*
269 static Int_t IpK0star(TRandom *ran);
270 static Double_t PtK0star( const Double_t *px, const Double_t *dummy );
271 static Double_t YK0star(const Double_t *py, const Double_t *dummy);
272 static Double_t V2K0star( const Double_t *px, const Double_t *dummy );
273
274
275 // General
276 //static Double_t PtFlat(const Double_t *px, const Double_t *dummy);
277 static Double_t YFlat(Double_t y);
278 static Double_t MtScal(Double_t pt, Int_t np);
279 static Double_t V2Param(const Double_t *px, const Double_t *param);
280 static Double_t V2Flat(const Double_t *px, const Double_t *param);
281 static Double_t KEtScal(Double_t pt, Int_t np, Int_t nq=2);
282 static Double_t GetTAA(Int_t cent);
283
284 static Double_t CrossOverLc(double a, double b, double x);
285 static Double_t CrossOverRc(double a, double b, double x);
286
287 static const Double_t fgkPtParam[kCentralities][10]; // parameters of pi pt spectrum
288 static const Double_t fgkModTsallisParamPi0PbPb[kCentralities][7]; // parameters for ModTsallis function for pi0 in PbPb
289 static const Double_t fgkModTsallisParamPiChargedPbPb[kCentralities][7]; // parameters for ModTsallis function for pi+- in PbPb
290 static const Double_t fgkV2param[kCentralities][16]; // parameters of pi v2
291 static const Double_t fgkRawPtOfV2Param[kCentralities][10]; // parameters of the raw pt spectrum of v2 analysys
292 static const Double_t fgkThermPtParam[kCentralities][2]; // parameters of thermal gamma pt
293 static const Double_t fgkHM[16]; // particle masses
294 static const Double_t fgkMtFactor[3][16]; // mt scaling factor
295 static const Double_t fgkParamSetPi07TeV[kNPi0Param][7]; // parameters for pi0 in 7 TeV
296 static const Double_t fgkParamSetPi02760GeV[kNPi0Param][7]; // parameters for pi0 in 2.76 TeV
297 static const Double_t fgkParamSetPi0900GeV[kNPi0Param][7]; // parameters for pi0 in 0.9 TeV
298
299 ClassDef(AliGenEMlib,1)
6e38a462 300
e40b9538 301};
302
4ae1c9f0 303
e40b9538 304#endif