]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG/EMCAL/AliParticleContainer.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWG / EMCAL / AliParticleContainer.h
index 2d9253227c1eabdad9084293f838ca52ab414ac0..7cde62138e7c75a17080677d8f3311456ee190e2 100644 (file)
@@ -1,46 +1,49 @@
 #ifndef AliParticleContainer_H
 #define AliParticleContainer_H
 
-//
-// container with name, TClonesArray and cuts for particles
-//
-
-
-class TClonesArray;
-class TString;
-class TList;
+// $Id$
 
 class AliVEvent;
-class AliEmcalParticle;
-class AliMCParticle;
-class AliVTrack;
 class AliVParticle;
 
-#include "Rtypes.h"
-#include <TArrayS.h>
-#include "TString.h"
-#include "AliEmcalContainer.h"
+#include "AliAODMCParticle.h"
 
+#include "AliEmcalContainer.h"
 
 class AliParticleContainer : public AliEmcalContainer {
  public:
   AliParticleContainer();
   AliParticleContainer(const char *name); 
-  virtual ~AliParticleContainer();
-
-  void  SetParticleArray(AliVEvent *event);
-
-  void  SetParticlePtCut(Double_t cut)                   { fParticlePtCut = cut ; }
-  void  SetParticleEtaLimits(Double_t min, Double_t max) { fParticleMaxEta = max ; fParticleMinEta = min ; }
-  void  SetParticlePhiLimits(Double_t min, Double_t max) { fParticleMaxPhi = max ; fParticleMinPhi = min ; }
-  void  SetTrackBitMap(UInt_t m)                          { fTrackBitMap     = m ; }
-  void  SetMCTrackBitMap(UInt_t m)                        { fMCTrackBitMap   = m ; }
-  void  SetMinMCLabel(Int_t s)                            { fMinMCLabel        = s ; }
-
-  AliVParticle               *GetParticle(Int_t i) const;
-  AliVParticle               *GetAcceptParticle(Int_t i)               const;
-  Bool_t                      AcceptParticle(AliVParticle         *vp) const;
-  Int_t                       GetNParticles()                          const   {return GetNEntries();}
+  virtual ~AliParticleContainer(){;}
+
+  Bool_t                      AcceptParticle(AliVParticle         *vp)  const;
+  Double_t                    GetParticlePtCut()                        const   { return fParticlePtCut; }
+  Double_t                    GetParticleEtaMin()                       const   { return fParticleMinEta; }
+  Double_t                    GetParticleEtaMax()                       const   { return fParticleMaxEta; }
+  Double_t                    GetParticlePhiMin()                       const   { return fParticleMinPhi; }
+  Double_t                    GetParticlePhiMax()                       const   { return fParticleMaxPhi; }
+  AliVParticle               *GetLeadingParticle(const char* opt="")         ;
+  AliVParticle               *GetParticle(Int_t i)                      const;
+  AliVParticle               *GetAcceptParticle(Int_t i)                const;
+  AliVParticle               *GetParticleWithLabel(Int_t lab)           const;
+  AliVParticle               *GetAcceptParticleWithLabel(Int_t lab)     const;
+  AliVParticle               *GetNextAcceptParticle(Int_t i=-1)              ;
+  AliVParticle               *GetNextParticle(Int_t i=-1)                    ;
+  void                        GetMomentum(TLorentzVector &mom, Int_t i) const;
+  Int_t                       GetNParticles()                           const   {return GetNEntries();}
+  Int_t                       GetNAcceptedParticles()                   ;
+  void                        SetClassName(const char *clname);
+  void                        SetMCTrackBitMap(UInt_t m)                        { fMCTrackBitMap   = m ; }
+  void                        SetMinMCLabel(Int_t s)                            { fMinMCLabel      = s ; }
+  void                        SetParticlePtCut(Double_t cut)                    { fParticlePtCut = cut ; }
+  void                        SetParticleEtaLimits(Double_t min, Double_t max)  { fParticleMaxEta = max ; fParticleMinEta = min ; }
+  void                        SetParticlePhiLimits(Double_t min, Double_t max)  { fParticleMaxPhi = max ; fParticleMinPhi = min ; }
+  void                        SetTrackBitMap(UInt_t m)                          { fTrackBitMap     = m ; }
+  void                        SetMCFlag(UInt_t m)                               { fMCFlag          = m ; }
+  void                        SelectHIJING(Bool_t s)                            { if (s) fGeneratorIndex = 0; else fGeneratorIndex = -1; }
+  void                        SetGeneratorIndex(Short_t i)                      { fGeneratorIndex = i  ; }
+  void                        SelectPhysicalPrimaries(Bool_t s)                 { if (s) fMCFlag |=  AliAODMCParticle::kPhysicalPrim ; 
+                                                                                  else   fMCFlag &= ~AliAODMCParticle::kPhysicalPrim ; }
 
  protected:
   Double_t                    fParticlePtCut;                 // cut on particle pt
@@ -51,12 +54,14 @@ class AliParticleContainer : public AliEmcalContainer {
   UInt_t                      fTrackBitMap;                   // bit map of accepted tracks (non MC)
   UInt_t                      fMCTrackBitMap;                 // bit map of accepted MC tracks
   Int_t                       fMinMCLabel;                    // minimum MC label value for the tracks/clusters being considered MC particles
+  UInt_t                      fMCFlag;                        // select MC particles with flags
+  Short_t                     fGeneratorIndex;                // select MC particles with generator index (default = -1 = switch off selection)
 
  private:
   AliParticleContainer(const AliParticleContainer& obj); // copy constructor
   AliParticleContainer& operator=(const AliParticleContainer& other); // assignment
 
-  ClassDef(AliParticleContainer,1);
+  ClassDef(AliParticleContainer,2);
 
 };