Setter for calling Generate n-times
[u/mrichter/AliRoot.git] / EVGEN / AliGenEMlib.h
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"
19 class TRandom;
20
21 class AliGenEMlib :public AliGenLib {
22 public:
23     GenFunc   GetPt(Int_t param, const char * tname=0) const;
24     GenFunc   GetY(Int_t param, const char * tname=0) const;
25     GenFuncIp GetIp(Int_t param, const char * tname=0) const;    
26   GenFunc   GetV2(Int_t param, const char * tname=0) const;
27
28   typedef enum {k0005=0, k0510, k1020, k2030, k3040, k4050, k5060, kpp} Centbins_t;
29   enum particles{kPizero, kEta, kRho, kOmega, kEtaprime, kPhi};
30
31 private:
32
33   // Pizero
34     static Int_t    IpPizero(TRandom *ran);
35     static Double_t PtPizero( const Double_t *px, const Double_t *dummy );
36     static Double_t YPizero(const Double_t *py, const Double_t *dummy);
37   static Double_t V2Pizero(const Double_t *px, const Double_t *dummy);
38
39   // Eta
40     static Int_t    IpEta(TRandom *ran);
41     static Double_t PtEta( const Double_t *px, const Double_t *dummy );
42     static Double_t YEta(const Double_t *py, const Double_t *dummy);
43   static Double_t V2Eta(const Double_t *px, const Double_t *dummy);
44
45   // Rho
46     static Int_t    IpRho(TRandom *ran);
47     static Double_t PtRho( const Double_t *px, const Double_t *dummy );
48     static Double_t YRho(const Double_t *py, const Double_t *dummy);
49
50   // Omega
51     static Int_t    IpOmega(TRandom *ran);
52     static Double_t PtOmega( const Double_t *px, const Double_t *dummy );
53     static Double_t YOmega(const Double_t *py, const Double_t *dummy);
54
55   // Etaprime
56     static Int_t    IpEtaprime(TRandom *ran);
57     static Double_t PtEtaprime( const Double_t *px, const Double_t *dummy );
58     static Double_t YEtaprime(const Double_t *py, const Double_t *dummy);
59
60   // Phi
61     static Int_t    IpPhi(TRandom *ran);
62     static Double_t PtPhi( const Double_t *px, const Double_t *dummy );
63     static Double_t YPhi(const Double_t *py, const Double_t *dummy);
64
65   // General
66     static Double_t PtFlat(const Double_t *px, const Double_t *dummy);
67     static Double_t YFlat(Double_t y);
68   static Double_t MtScal(Double_t pt, Int_t np);
69   static Double_t V2Param(const Double_t *px, const Double_t *param);
70   static Double_t V2Flat(const Double_t *px, const Double_t *param);
71
72   static Double_t CrossOverLc(const double a, const double b, const double x);
73   static Double_t CrossOverRc(const double a, const double b, const double x);
74
75   static const Double_t fv2param[2][8][9];
76   static const Double_t fpTparam[8][14];
77   static Centbins_t fCentbin;
78
79   ClassDef(AliGenEMlib,0)
80 };
81
82 #endif