Moving required CMake version from 2.8.4 to 2.8.8
[u/mrichter/AliRoot.git] / EVGEN / AliGenEMCocktail.h
1 #ifndef ALIGENEMCOCKTAIL_H
2 #define ALIGENEMCOCKTAIL_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 //
7 // Class to create the cocktail for physics with electrons, di-electrons,
8 // and photons from the decay of the following sources:
9 // pizero, eta, rho, omega, etaprime, phi
10 //
11
12 #include "AliGenCocktail.h"
13 #include "AliGenEMlib.h"
14 #include "AliPythia.h"
15 #include "AliDecayer.h"
16 #include "AliGenParam.h"
17
18
19 class AliGenCocktailEntry;
20
21 class AliGenEMCocktail : public AliGenCocktail
22 {
23         public:
24
25                 AliGenEMCocktail();
26                 enum GeneratorIndex_t { kPizero=0, kEta, kRho0, kOmega, kEtaprime, kPhi, kJpsi, kSigma0, kK0s, kDeltaPlPl, kDeltaPl, kDeltaMi, kDeltaZero, kRhoPl, kRhoMi, kK0star, kDirectRealGamma, kDirectVirtGamma, kGENs };
27                 enum ParticleGenerator_t {      kGenPizero = 0x00001,           kGenEta = 0x00002,                              kGenRho0 = 0x00004,     kGenOmega = 0x00008, 
28                                                                 kGenEtaprime = 0x00010,                 kGenPhi = 0x000020,                     kGenJpsi = 0x000040, 
29                                                                 kGenDirectRealGamma = 0x00100,  kGenDirectVirtGamma = 0x00200,  kGenSigma0 = 0x00400,   kGenK0s = 0x00800,
30                                                                 kGenDeltaPlPl = 0x01000,                kGenDeltaPl = 0x02000,                  kGenDeltaMi = 0x04000,  kGenDeltaZero = 0x08000, 
31                                                                 kGenRhoPl = 0x10000,                    kGenRhoMi = 0x20000,                    kGenK0star = 0x40000,   
32                                                                 kGenHadrons = 0x100000,                 kGenGammas = 0x200000 };
33
34                 virtual ~AliGenEMCocktail();    
35                 virtual void Init();
36                 virtual void CreateCocktail();
37                 virtual void Generate();    
38                 Float_t GetDecayMode()                                                                  const   { return fDecayMode                     ;}
39                 Float_t GetWeightingMode()                                                              const   { return fWeightingMode         ;}
40                 void    SetDecayer(AliDecayer* const decayer)                                           { fDecayer = decayer            ;}
41                 void    SetDecayMode(Decay_t decay)                                                                     { fDecayMode = decay            ;}
42                 void    SetWeightingMode(Weighting_t weight)                                            { fWeightingMode = weight       ;}
43                 void    SetNPart(Int_t npart){ fNPart = npart; }
44                 void    SetPtParamPi0(AliGenEMlib::PtParamSetPi0_t PtSelect)            { fPtSelectPi0 = PtSelect       ;}
45                 void    SetPtParamEta(AliGenEMlib::PtParamSetEta_t PtSelect)            { fPtSelectEta = PtSelect       ;}
46                 void    SetPtParamOmega(AliGenEMlib::PtParamSetOmega_t PtSelect)        { fPtSelectOmega = PtSelect     ;}
47                 void    SetPtParamPhi(AliGenEMlib::PtParamSetPhi_t PtSelect)            { fPtSelectPhi = PtSelect       ;}
48                 void    SetCollisionSystem(AliGenEMlib::CollisionSystem_t col)          { fCollisionSystem = col        ;}
49                 void    SetCentrality(AliGenEMlib::Centrality_t cent)                           { fCentrality = cent            ;}
50                 void    SetV2Systematic(AliGenEMlib::v2Sys_t v2sys)                                     { fV2Systematic = v2sys         ;}
51                 void    SetForceGammaConversion(Bool_t force=kTRUE)                                     { fForceConv=force                      ;}
52                 void    SetHeaviestHadron(ParticleGenerator_t part);
53     
54                 //***********************************************************************************************
55                 // This function allows to select the particle which should be procude based on 1 Integer value
56                 // this integer value is then bitwise compare to the values in SelectParticle
57                 // Examples: 
58                 // a) you would like to switch on: pi0, eta, rho0, omega, eta', phi, jpsi, sigma0 and all deltas
59                 //    implies you want the binary number: 00 1111 0100 0111 1111 = 
60                 //        which translates 62591_10 (in decimal) and F47F_16 (in hexadecimal)
61                 // b) you would like to switch on: pi0, eta, rho0, omega, eta', phi, sigma0 and 
62                 //    implies you want the binary number: 00 0000 0100 0011 1111 = 
63                 //        which translates 1087_10 (in decimal) and 43F_16 (in hexadecimal)
64                 // c) you would like to switch on: pi0, eta, rho0, omega, eta', phi, sigma0 and all deltas
65                 //    implies you want the binary number: 00 1111 0100 0011 1111 = 
66                 //        which translates 62527_10 (in decimal) and F43F_16 (in hexadecimal)
67                 // d) you would like to switch on: pi0, eta, rho0, omega, eta', phi
68                 //    implies you want the binary number: 00 0000 0000 0011 1111 = 
69                 //        which translates 63_10 (in decimal) and 3F_16 (in hexadecimal)
70                 //***********************************************************************************************
71                 void    SelectMotherParticles(UInt_t part)                                                      { fSelectedParticles=part       ;}
72
73         private:
74                 AliGenEMCocktail(const AliGenEMCocktail &cocktail); 
75                 AliGenEMCocktail & operator=(const AliGenEMCocktail &cocktail); 
76
77                 void AddSource2Generator(Char_t *nameReso, AliGenParam* const genReso);
78                 
79                 AliDecayer*                                     fDecayer;               // External decayer
80                 Decay_t                                                 fDecayMode;             // decay mode in which resonances are forced to decay, default: kAll
81                 Weighting_t                                     fWeightingMode;         // weighting mode: kAnalog or kNonAnalog
82                 
83                 Int_t                                                   fNPart;             // multiplicity of each source per event
84                 Double_t                                                fYieldArray[kGENs]; // array of dN/dy for each source
85
86                 AliGenEMlib::CollisionSystem_t  fCollisionSystem;   // selected collision system
87                 AliGenEMlib::PtParamSetPi0_t    fPtSelectPi0;           // selected pT parameterization for pi0
88                 AliGenEMlib::PtParamSetEta_t    fPtSelectEta;           // selected pT parameterization for eta
89                 AliGenEMlib::PtParamSetOmega_t  fPtSelectOmega;         // selected pT parameterization for omega
90                 AliGenEMlib::PtParamSetPhi_t    fPtSelectPhi;           // selected pT parameterization for phi
91                 AliGenEMlib::Centrality_t               fCentrality;            // selected centrality
92                 AliGenEMlib::v2Sys_t                    fV2Systematic;          // selected systematic error for v2 parameters
93
94                 Bool_t                                                  fForceConv;             // select whether you want to force all gammas to convert imidediately
95                 UInt_t                                                  fSelectedParticles; // which particles to simulate, allows to switch on and off 32 different particles
96
97
98
99                 ClassDef(AliGenEMCocktail,2)                                            // cocktail for EM physics
100 };
101
102 #endif
103
104
105