ROOT logo
#ifndef AliParticleContainer_H
#define AliParticleContainer_H

// $Id$

class AliVEvent;
class AliVParticle;

#include "AliAODMCParticle.h"

#include "AliEmcalContainer.h"

class AliParticleContainer : public AliEmcalContainer {
 public:
  AliParticleContainer();
  AliParticleContainer(const char *name); 
  virtual ~AliParticleContainer(){;}

  Bool_t                      AcceptParticle(AliVParticle         *vp)       ;
  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)                     ;
  AliVParticle               *GetParticleWithLabel(Int_t lab)           const;
  AliVParticle               *GetAcceptParticleWithLabel(Int_t lab)          ;
  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                        SetMinMCLabelAccept(Int_t s)                      { fMinMCLabelAccept= 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                        SetMinDistanceTPCSectorEdge(Double_t min)         { fMinDistanceTPCSectorEdge = 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 ; }
  void                        SetCharge(Short_t c)                              { fCharge = c         ; }

 protected:
  Double_t                    fParticlePtCut;                 // cut on particle pt
  Double_t                    fParticleMinEta;                // cut on particle eta
  Double_t                    fParticleMaxEta;                // cut on particle eta
  Double_t                    fParticleMinPhi;                // cut on particle phi
  Double_t                    fParticleMaxPhi;                // cut on particle phi
  Double_t                    fMinDistanceTPCSectorEdge;      // require minimum distance to edge of TPC sector edge
  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
  Int_t                       fMinMCLabelAccept;              // minimum MC label value to accept particle
  UInt_t                      fMCFlag;                        // select MC particles with flags
  Short_t                     fGeneratorIndex;                // select MC particles with generator index (default = -1 = switch off selection)
  Short_t                     fCharge;                        // select particles with charge=fCharge

 private:
  AliParticleContainer(const AliParticleContainer& obj); // copy constructor
  AliParticleContainer& operator=(const AliParticleContainer& other); // assignment

  ClassDef(AliParticleContainer,5);

};

#endif

 AliParticleContainer.h:1
 AliParticleContainer.h:2
 AliParticleContainer.h:3
 AliParticleContainer.h:4
 AliParticleContainer.h:5
 AliParticleContainer.h:6
 AliParticleContainer.h:7
 AliParticleContainer.h:8
 AliParticleContainer.h:9
 AliParticleContainer.h:10
 AliParticleContainer.h:11
 AliParticleContainer.h:12
 AliParticleContainer.h:13
 AliParticleContainer.h:14
 AliParticleContainer.h:15
 AliParticleContainer.h:16
 AliParticleContainer.h:17
 AliParticleContainer.h:18
 AliParticleContainer.h:19
 AliParticleContainer.h:20
 AliParticleContainer.h:21
 AliParticleContainer.h:22
 AliParticleContainer.h:23
 AliParticleContainer.h:24
 AliParticleContainer.h:25
 AliParticleContainer.h:26
 AliParticleContainer.h:27
 AliParticleContainer.h:28
 AliParticleContainer.h:29
 AliParticleContainer.h:30
 AliParticleContainer.h:31
 AliParticleContainer.h:32
 AliParticleContainer.h:33
 AliParticleContainer.h:34
 AliParticleContainer.h:35
 AliParticleContainer.h:36
 AliParticleContainer.h:37
 AliParticleContainer.h:38
 AliParticleContainer.h:39
 AliParticleContainer.h:40
 AliParticleContainer.h:41
 AliParticleContainer.h:42
 AliParticleContainer.h:43
 AliParticleContainer.h:44
 AliParticleContainer.h:45
 AliParticleContainer.h:46
 AliParticleContainer.h:47
 AliParticleContainer.h:48
 AliParticleContainer.h:49
 AliParticleContainer.h:50
 AliParticleContainer.h:51
 AliParticleContainer.h:52
 AliParticleContainer.h:53
 AliParticleContainer.h:54
 AliParticleContainer.h:55
 AliParticleContainer.h:56
 AliParticleContainer.h:57
 AliParticleContainer.h:58
 AliParticleContainer.h:59
 AliParticleContainer.h:60
 AliParticleContainer.h:61
 AliParticleContainer.h:62
 AliParticleContainer.h:63
 AliParticleContainer.h:64
 AliParticleContainer.h:65
 AliParticleContainer.h:66
 AliParticleContainer.h:67
 AliParticleContainer.h:68
 AliParticleContainer.h:69
 AliParticleContainer.h:70
 AliParticleContainer.h:71
 AliParticleContainer.h:72
 AliParticleContainer.h:73
 AliParticleContainer.h:74
 AliParticleContainer.h:75