]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVGEN/AliGenEMCocktail.h
primary particle criteria correction (ESD)
[u/mrichter/AliRoot.git] / EVGEN / AliGenEMCocktail.h
CommitLineData
e40b9538 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"
4ae1c9f0 13#include "AliGenEMlib.h"
e40b9538 14#include "AliPythia.h"
4ae1c9f0 15#include "AliDecayer.h"
16#include "AliGenParam.h"
17
e40b9538 18
19class AliGenCocktailEntry;
20
21class AliGenEMCocktail : public AliGenCocktail
22{
41b25ae9 23 public:
e40b9538 24
41b25ae9 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);
e40b9538 53
41b25ae9 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
e40b9538 96
4ae1c9f0 97
4ae1c9f0 98
41b25ae9 99 ClassDef(AliGenEMCocktail,2) // cocktail for EM physics
e40b9538 100};
101
102#endif
103
104
105