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