Removing not needed includes
[u/mrichter/AliRoot.git] / EVGEN / AliGenEMCocktail.h
index 947506c..4cb1fdd 100644 (file)
@@ -11,7 +11,6 @@
 
 #include "AliGenCocktail.h"
 #include "AliGenEMlib.h"
-#include "AliPythia.h"
 #include "AliDecayer.h"
 #include "AliGenParam.h"
 
@@ -20,52 +19,83 @@ class AliGenCocktailEntry;
 
 class AliGenEMCocktail : public AliGenCocktail
 {
-public:
-
-    AliGenEMCocktail();
-  enum GeneratorCode { kGenPizero=0, kGenEta, kGenRho, kGenOmega, kGenEtaprime, kGenPhi, kGenJpsi, kGENs };    
-
-    virtual ~AliGenEMCocktail();    
-    virtual void Init();
-    virtual void CreateCocktail();
-    virtual void Generate();    
-    Float_t GetDecayMode()         const {return fDecayMode;}
-    Float_t GetWeightingMode()     const {return fWeightingMode;}
-    void    SetDecayer(AliDecayer* const decayer){fDecayer = decayer;}
-    void    SetDecayMode(Decay_t decay){ fDecayMode = decay;}
-    void    SetWeightingMode(Weighting_t weight){ fWeightingMode = weight;}
-  void    SetNPart(Int_t npart){ fNPart = npart; }
-  void    SetPtParam(Int_t PtSelect){ fPtSelect = PtSelect; }
-  void    SetCentrality(Int_t cent){ fCentrality = cent; }
-  void    SetV2Systematic(Int_t v2sys){ fV2Systematic = v2sys; }
-  void    SetForceGammaConversion(Bool_t force=kTRUE){ fForceConv=force; }
-  void    SetHeaviestParticle(Int_t part){ fHeaviestParticle=part; }
+       public:
+
+               AliGenEMCocktail();
+               enum GeneratorIndex_t { kPizero=0, kEta, kRho0, kOmega, kEtaprime, kPhi, kJpsi, kSigma0, kK0s, kDeltaPlPl, kDeltaPl, kDeltaMi, kDeltaZero, kRhoPl, kRhoMi, kK0star, kDirectRealGamma, kDirectVirtGamma, kGENs };
+               enum ParticleGenerator_t {      kGenPizero = 0x00001,           kGenEta = 0x00002,                              kGenRho0 = 0x00004,     kGenOmega = 0x00008, 
+                                                               kGenEtaprime = 0x00010,                 kGenPhi = 0x000020,                     kGenJpsi = 0x000040, 
+                                                               kGenDirectRealGamma = 0x00100,  kGenDirectVirtGamma = 0x00200,  kGenSigma0 = 0x00400,   kGenK0s = 0x00800,
+                                                               kGenDeltaPlPl = 0x01000,                kGenDeltaPl = 0x02000,                  kGenDeltaMi = 0x04000,  kGenDeltaZero = 0x08000, 
+                                                               kGenRhoPl = 0x10000,                    kGenRhoMi = 0x20000,                    kGenK0star = 0x40000,   
+                                                               kGenHadrons = 0x100000,                 kGenGammas = 0x200000 };
+
+               virtual ~AliGenEMCocktail();    
+               virtual void Init();
+               virtual void CreateCocktail();
+               virtual void Generate();    
+               Float_t GetDecayMode()                                                                  const   { return fDecayMode                     ;}
+               Float_t GetWeightingMode()                                                              const   { return fWeightingMode         ;}
+               void    SetDecayer(AliDecayer* const decayer)                                           { fDecayer = decayer            ;}
+               void    SetDecayMode(Decay_t decay)                                                                     { fDecayMode = decay            ;}
+               void    SetWeightingMode(Weighting_t weight)                                            { fWeightingMode = weight       ;}
+               void    SetNPart(Int_t npart){ fNPart = npart; }
+               void    SetPtParamPi0(AliGenEMlib::PtParamSetPi0_t PtSelect)            { fPtSelectPi0 = PtSelect       ;}
+               void    SetPtParamEta(AliGenEMlib::PtParamSetEta_t PtSelect)            { fPtSelectEta = PtSelect       ;}
+               void    SetPtParamOmega(AliGenEMlib::PtParamSetOmega_t PtSelect)        { fPtSelectOmega = PtSelect     ;}
+               void    SetPtParamPhi(AliGenEMlib::PtParamSetPhi_t PtSelect)            { fPtSelectPhi = PtSelect       ;}
+               void    SetCollisionSystem(AliGenEMlib::CollisionSystem_t col)          { fCollisionSystem = col        ;}
+               void    SetCentrality(AliGenEMlib::Centrality_t cent)                           { fCentrality = cent            ;}
+               void    SetV2Systematic(AliGenEMlib::v2Sys_t v2sys)                                     { fV2Systematic = v2sys         ;}
+               void    SetForceGammaConversion(Bool_t force=kTRUE)                                     { fForceConv=force                      ;}
+               void    SetHeaviestHadron(ParticleGenerator_t part);
     
-protected:
-
-  TVector3& OrthogonalVector(TVector3 &inVec);
-    
-private:
-    AliGenEMCocktail(const AliGenEMCocktail &cocktail); 
-    AliGenEMCocktail & operator=(const AliGenEMCocktail &cocktail); 
-
-    void AddSource2Generator(Char_t *nameReso, AliGenParam* const genReso);
-    
-    AliDecayer* fDecayer;        // External decayer
-  Decay_t fDecayMode;   //decay mode in which resonances are forced to decay, default: kAll
-  Weighting_t fWeightingMode; //weighting mode: kAnalog or kNonAnalog
-    
-    Int_t    fNPart;             // multiplicity of each source per event
-    Double_t fYieldArray[kGENs]; // array of dN/dy for each source
-
-  Int_t fPtSelect; // selected pT parameterization
-  Int_t fCentrality; // selected centrality
-  Int_t fV2Systematic; //selected systematic error for v2 parameters
-
-  Bool_t fForceConv; //select whether you want to force all gammas to convert imidediately
-  Int_t fHeaviestParticle; //select up to which particle to simulate
-
-    ClassDef(AliGenEMCocktail,1)  //  cocktail for EM physics
+               //***********************************************************************************************
+               // This function allows to select the particle which should be procude based on 1 Integer value
+               // this integer value is then bitwise compare to the values in SelectParticle
+               // Examples: 
+               // a) you would like to switch on: pi0, eta, rho0, omega, eta', phi, jpsi, sigma0 and all deltas
+               //    implies you want the binary number: 00 1111 0100 0111 1111 = 
+               //        which translates 62591_10 (in decimal) and F47F_16 (in hexadecimal)
+               // b) you would like to switch on: pi0, eta, rho0, omega, eta', phi, sigma0 and 
+               //    implies you want the binary number: 00 0000 0100 0011 1111 = 
+               //        which translates 1087_10 (in decimal) and 43F_16 (in hexadecimal)
+               // c) you would like to switch on: pi0, eta, rho0, omega, eta', phi, sigma0 and all deltas
+               //    implies you want the binary number: 00 1111 0100 0011 1111 = 
+               //        which translates 62527_10 (in decimal) and F43F_16 (in hexadecimal)
+               // d) you would like to switch on: pi0, eta, rho0, omega, eta', phi
+               //    implies you want the binary number: 00 0000 0000 0011 1111 = 
+               //        which translates 63_10 (in decimal) and 3F_16 (in hexadecimal)
+               //***********************************************************************************************
+               void    SelectMotherParticles(UInt_t part)                                                      { fSelectedParticles=part       ;}
+
+       private:
+               AliGenEMCocktail(const AliGenEMCocktail &cocktail); 
+               AliGenEMCocktail & operator=(const AliGenEMCocktail &cocktail); 
+
+               void AddSource2Generator(Char_t *nameReso, AliGenParam* const genReso);
+               
+               AliDecayer*                                     fDecayer;               // External decayer
+               Decay_t                                                 fDecayMode;             // decay mode in which resonances are forced to decay, default: kAll
+               Weighting_t                                     fWeightingMode;         // weighting mode: kAnalog or kNonAnalog
+               
+               Int_t                                                   fNPart;             // multiplicity of each source per event
+               Double_t                                                fYieldArray[kGENs]; // array of dN/dy for each source
+
+               AliGenEMlib::CollisionSystem_t  fCollisionSystem;   // selected collision system
+               AliGenEMlib::PtParamSetPi0_t    fPtSelectPi0;           // selected pT parameterization for pi0
+               AliGenEMlib::PtParamSetEta_t    fPtSelectEta;           // selected pT parameterization for eta
+               AliGenEMlib::PtParamSetOmega_t  fPtSelectOmega;         // selected pT parameterization for omega
+               AliGenEMlib::PtParamSetPhi_t    fPtSelectPhi;           // selected pT parameterization for phi
+               AliGenEMlib::Centrality_t               fCentrality;            // selected centrality
+               AliGenEMlib::v2Sys_t                    fV2Systematic;          // selected systematic error for v2 parameters
+
+               Bool_t                                                  fForceConv;             // select whether you want to force all gammas to convert imidediately
+               UInt_t                                                  fSelectedParticles; // which particles to simulate, allows to switch on and off 32 different particles
+
+
+
+               ClassDef(AliGenEMCocktail,2)                                            // cocktail for EM physics
 };
 
 #endif