Line data Source code
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 = 0x00020, kGenJpsi = 0x00040,
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 = 0x0007f, kGenGammas = 0x00300 };
32 :
33 : virtual ~AliGenEMCocktail();
34 : virtual void Init();
35 : virtual void CreateCocktail();
36 : virtual void Generate();
37 0 : Float_t GetDecayMode() const { return fDecayMode ;}
38 0 : Float_t GetWeightingMode() const { return fWeightingMode ;}
39 0 : void SetDecayer(AliDecayer* const decayer) { fDecayer = decayer ;}
40 0 : void SetDecayMode(Decay_t decay) { fDecayMode = decay ;}
41 0 : void SetWeightingMode(Weighting_t weight) { fWeightingMode = weight ;}
42 0 : void SetNPart(Int_t npart){ fNPart = npart; }
43 0 : void SetPtParamPi0(AliGenEMlib::PtParamSetPi0_t PtSelect) { fPtSelectPi0 = PtSelect ;}
44 0 : void SetPtParamEta(AliGenEMlib::PtParamSetEta_t PtSelect) { fPtSelectEta = PtSelect ;}
45 0 : void SetPtParamOmega(AliGenEMlib::PtParamSetOmega_t PtSelect) { fPtSelectOmega = PtSelect ;}
46 0 : void SetPtParamPhi(AliGenEMlib::PtParamSetPhi_t PtSelect) { fPtSelectPhi = PtSelect ;}
47 0 : void SetCollisionSystem(AliGenEMlib::CollisionSystem_t col) { fCollisionSystem = col ;}
48 0 : void SetCentrality(AliGenEMlib::Centrality_t cent) { fCentrality = cent ;}
49 0 : void SetV2Systematic(AliGenEMlib::v2Sys_t v2sys) { fV2Systematic = v2sys ;}
50 0 : 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 0 : 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 6 : ClassDef(AliGenEMCocktail,2) // cocktail for EM physics
99 : };
100 :
101 : #endif
102 :
103 :
104 :
|