class AliGenEMlib :public AliGenLib {
public:
- enum particles{kPizero, kEta, kRho, kOmega, kEtaprime, kPhi, kJpsi};
- enum centrality{kpp=0x0, k0005=0x1, k0510=0x2, k1020=0x3, k2030=0x4, k3040=0x5, k4050=0x6, k5060=0x7, k0010=0x8, k2040=0x9, k4060=0xA, k6080=0xB, k0020=0xC, k0040=0xD, k2080=0xE, k4080=0xF, kCentralities=0x10};
- enum PtParamSet{kPizero7TeVpp=0x10, kPizeroEta7TeVpp=0x20, kPizero7TeVpplow=0x30, kPizeroEta7TeVpplow=0x40, kPizero7TeVpphigh=0x50, kPizeroEta7TeVpphigh=0x60, kPizero2760GeVpp=0x70, kPizeroEta2760GeVpp=0x80, kPizero2760GeVpplow=0x90, kPizeroEta2760GeVpplow=0xA0, kPizero2760GeVpphigh=0xB0, kPizeroEta2760GeVpphigh=0xC0, kPichargedPbPb=0xD0, kPizeroPbPb=0xE0, kPichargedPPb=0xF0 };
- enum v2Sys{kLoV2Sys=-1, kNoV2Sys=0, kUpV2Sys=+1};
+ enum Particle_t{kPizero=0, kEta, kRho, kOmega, kEtaprime, kPhi, kJpsi, kDirectRealGamma, kDirectVirtGamma };
+ enum Centrality_t{kpp=0x0, k0005=0x1, k0510=0x2, k1020=0x3, k2030=0x4, k3040=0x5, k4050=0x6, k5060=0x7, k0010=0x8, k2040=0x9, k4060=0xA, k6080=0xB, k0020=0xC, k0040=0xD, k2080=0xE, k4080=0xF, kCentralities=0x10};
+ enum PtParamSet_t{kPizero7TeVpp=0x00, kPizeroEta7TeVpp=0x10, kPizero7TeVpplow=0x20, kPizeroEta7TeVpplow=0x30, kPizero7TeVpphigh=0x40, kPizeroEta7TeVpphigh=0x50, kPizero2760GeVpp=0x60, kPizeroEta2760GeVpp=0x70, kPizero2760GeVpplow=0x80, kPizeroEta2760GeVpplow=0x90, kPizero2760GeVpphigh=0xA0, kPizeroEta2760GeVpphigh=0xB0, kPiOldChargedPbPb=0xC0, kPichargedPbPb=0xD0, kPizeroPbPb=0xE0, kPichargedPPb=0xF0 };
+ enum v2Sys_t{kLoV2Sys=-1, kNoV2Sys=0, kUpV2Sys=+1};
AliGenEMlib() { } ;
- static void SelectParams(Int_t ptSelect, Int_t centSelect=kpp, Int_t v2sys=kNoV2Sys)
+ static void SelectParams(PtParamSet_t ptSelect, Centrality_t centSelect=kpp, Int_t v2sys=kNoV2Sys)
{ fgSelectedPtParam=ptSelect; fgSelectedCentrality=centSelect; fgSelectedV2Systematic=v2sys; }
GenFunc GetPt(Int_t param, const char * tname=0) const;
static Int_t fgSelectedV2Systematic; // selected v2 systematics, usefully values: -1,0,1
- static Double_t PtModifiedHagedornThermal(const Double_t pt,
- const Double_t c,
- const Double_t p0,
- const Double_t p1,
- const Double_t n,
- const Double_t cT,
- const Double_t T);
+ static Double_t PtModifiedHagedornThermal(Double_t pt,
+ Double_t c,
+ Double_t p0,
+ Double_t p1,
+ Double_t n,
+ Double_t cT,
+ Double_t T);
- static Double_t PtModifiedHagedornExp(const Double_t pt,
- const Double_t c,
- const Double_t p0,
- const Double_t p1,
- const Double_t p2,
- const Double_t n);
-
-
- static Double_t PtModifiedHagedornExp2(const Double_t pt,
- const Double_t c,
- const Double_t a,
- const Double_t b,
- const Double_t p0,
- const Double_t p1,
- const Double_t d,
- const Double_t n);
-
-
- static Double_t PtTsallis(const Double_t pt,
- const Double_t m,
- const Double_t c,
- const Double_t T,
- const Double_t n);
-
-
-
+ static Double_t PtModifiedHagedornExp(Double_t pt,
+ Double_t c,
+ Double_t p0,
+ Double_t p1,
+ Double_t p2,
+ Double_t n);
+
+
+ static Double_t PtModifiedHagedornExp2(Double_t pt,
+ Double_t c,
+ Double_t a,
+ Double_t b,
+ Double_t p0,
+ Double_t p1,
+ Double_t d,
+ Double_t n);
+
+
+ static Double_t PtTsallis(Double_t pt,
+ Double_t m,
+ Double_t c,
+ Double_t T,
+ Double_t n);
+
+ static Double_t PtExponential(const Double_t *pt, const Double_t *param);
+ static Double_t PtModifiedHagedornPowerlaw(const Double_t *pt, const Double_t *param);
+ static Double_t PtDoublePowerlaw(const Double_t *pt, const Double_t *param);
+ static Double_t IntegratedKrollWada(const Double_t *mh, const Double_t *);
+
+ // direct gamma
+ static Double_t PtPromptRealGamma(const Double_t *px, const Double_t *dummy);
+ static Double_t PtPromptVirtGamma(const Double_t *px, const Double_t *dummy);
+ static Double_t PtThermalRealGamma(const Double_t *px, const Double_t *dummy);
+ static Double_t PtThermalVirtGamma(const Double_t *px, const Double_t *dummy);
+
+ static Int_t IpDirectRealGamma(TRandom *ran);
+ static Double_t PtDirectRealGamma(const Double_t *px, const Double_t *dummy);
+ static Double_t YDirectRealGamma(const Double_t *py, const Double_t *dummy);
+ static Double_t V2DirectRealGamma(const Double_t *px, const Double_t *dummy);
+
+ static Int_t IpDirectVirtGamma(TRandom *ran);
+ static Double_t PtDirectVirtGamma(const Double_t *px, const Double_t *dummy);
+ static Double_t YDirectVirtGamma(const Double_t *py, const Double_t *dummy);
+ static Double_t V2DirectVirtGamma(const Double_t *px, const Double_t *dummy);
// Pizero
static Int_t IpPizero(TRandom *ran);
static Double_t V2Param(const Double_t *px, const Double_t *param);
static Double_t V2Flat(const Double_t *px, const Double_t *param);
static Double_t KEtScal(Double_t pt, Int_t np);
+ static Double_t GetTAA(Int_t cent);
- static Double_t CrossOverLc(const double a, const double b, const double x);
- static Double_t CrossOverRc(const double a, const double b, const double x);
+ static Double_t CrossOverLc(double a, double b, double x);
+ static Double_t CrossOverRc(double a, double b, double x);
- static const Double_t fgkV2param[16][15]; // array of v2 parameter
- static const Double_t fgkHM[7];
- static const Double_t fgkMtFactor[2][7];
+ static const Double_t fgkPtParam[kCentralities][10]; // parameters of pi pt spectrum
+ static const Double_t fgkV2param[kCentralities][16]; // parameters of pi v2 spectrum
+ static const Double_t fgkRawPtOfV2Param[kCentralities][10]; // parameters of the raw pt spectrum of v2 analysis
+ static const Double_t fgkThermPtParam[kCentralities][2]; // parameters of thermal gamma pt
+ static const Double_t fgkHM[8]; // particle masses
+ static const Double_t fgkMtFactor[2][8]; // mt scaling factor
ClassDef(AliGenEMlib,0)
};