ROOT logo
#ifndef AliEmcalContainer_H
#define AliEmcalContainer_H

//
// container with name, TClonesArray
//

class TLorentzVector;
class AliVEvent;
class AliNamedArrayI;

#include <TNamed.h>
#include <TClonesArray.h>

class AliEmcalContainer : public TNamed {
 public:
  enum RejectionReason {
    // General
    kNullObject = 1<<0,
    kPtCut = 1<<1,
    kAcceptanceCut = 1<<2,
    kBitMapCut = 1<<3,
    // leave bits 4-7 free for future implementations
    
    // AliParticleContainer
    kMCFlag = 1<<8,
    kMCGeneratorCut = 1<<9,
    kChargeCut = 1<<10,
    kMinDistanceTPCSectorEdgeCut = 1<<11,
    kMinMCLabelAccept = 1<<12,

    // AliClusterContainer
    kIsEMCalCut = 1<<13,
    kTimeCut = 1<<14,
    kEnergyCut = 1<<15,
    // leave bits 16-17 free for future implementations

    // AliJetContainer
    kAreaCut = 1<<18,
    kAreaEmcCut = 1<<19,
    kZLeadingChCut = 1<<20,
    kZLeadingEmcCut = 1<<21,
    kNEFCut = 1<<22,
    kMinLeadPtCut = 1<<23,
    kMaxTrackPtCut = 1<<24,
    kMaxClusterPtCut = 1<<25,
    kFlavourCut = 1<<26,
    kTagStatus = 1<<27
  };

  AliEmcalContainer();
  AliEmcalContainer(const char *name); 
  virtual ~AliEmcalContainer(){;}

  TClonesArray               *GetArray() const                      { return fClArray                   ; }
  const TString&              GetArrayName()                  const { return fClArrayName               ; }
  Int_t                       GetCurrentID()                  const { return fCurrentID-1               ; }
  Bool_t                      GetIsParticleLevel()            const { return fIsParticleLevel           ; }
  Int_t                       GetIndexFromLabel(Int_t lab)    const;
  Int_t                       GetNEntries()                   const { return fClArray->GetEntriesFast() ; }
  virtual void                GetMomentum(TLorentzVector &mom, Int_t i) const = 0;
  void                        ResetCurrentID(Int_t i=0)             { fCurrentID = i                    ; }
  virtual void                SetArray(AliVEvent *event);
  void                        SetArrayName(const char *n)           { fClArrayName = n                  ; }
  void                        SetIsParticleLevel(Bool_t b)          { fIsParticleLevel = b              ; }
  void                        SortArray()                           { fClArray->Sort()                  ; }
  UInt_t                      GetRejectionReason()            const { return fRejectionReason           ; }
  UInt_t                      TestRejectionReason(UInt_t rs)  const { return fRejectionReason & rs      ; }
  UShort_t                    GetRejectionReasonBitPosition() const;

 protected:
  TString                     fClArrayName;             // name of branch
  TString                     fClassName;               // name of the class in the TClonesArray
  Bool_t                      fIsParticleLevel;         // whether or not it is a particle level object collection
  TClonesArray               *fClArray;                 //!TClonesArray
  Int_t                       fCurrentID;               //!current ID for automatic loops
  AliNamedArrayI             *fLabelMap;                //!Label-Index map
  Double_t                    fVertex[3];               //!event vertex array
  UInt_t                      fRejectionReason;         //!reject reason bit map for the last call to an accept object function

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

  ClassDef(AliEmcalContainer,4);
};
#endif
 AliEmcalContainer.h:1
 AliEmcalContainer.h:2
 AliEmcalContainer.h:3
 AliEmcalContainer.h:4
 AliEmcalContainer.h:5
 AliEmcalContainer.h:6
 AliEmcalContainer.h:7
 AliEmcalContainer.h:8
 AliEmcalContainer.h:9
 AliEmcalContainer.h:10
 AliEmcalContainer.h:11
 AliEmcalContainer.h:12
 AliEmcalContainer.h:13
 AliEmcalContainer.h:14
 AliEmcalContainer.h:15
 AliEmcalContainer.h:16
 AliEmcalContainer.h:17
 AliEmcalContainer.h:18
 AliEmcalContainer.h:19
 AliEmcalContainer.h:20
 AliEmcalContainer.h:21
 AliEmcalContainer.h:22
 AliEmcalContainer.h:23
 AliEmcalContainer.h:24
 AliEmcalContainer.h:25
 AliEmcalContainer.h:26
 AliEmcalContainer.h:27
 AliEmcalContainer.h:28
 AliEmcalContainer.h:29
 AliEmcalContainer.h:30
 AliEmcalContainer.h:31
 AliEmcalContainer.h:32
 AliEmcalContainer.h:33
 AliEmcalContainer.h:34
 AliEmcalContainer.h:35
 AliEmcalContainer.h:36
 AliEmcalContainer.h:37
 AliEmcalContainer.h:38
 AliEmcalContainer.h:39
 AliEmcalContainer.h:40
 AliEmcalContainer.h:41
 AliEmcalContainer.h:42
 AliEmcalContainer.h:43
 AliEmcalContainer.h:44
 AliEmcalContainer.h:45
 AliEmcalContainer.h:46
 AliEmcalContainer.h:47
 AliEmcalContainer.h:48
 AliEmcalContainer.h:49
 AliEmcalContainer.h:50
 AliEmcalContainer.h:51
 AliEmcalContainer.h:52
 AliEmcalContainer.h:53
 AliEmcalContainer.h:54
 AliEmcalContainer.h:55
 AliEmcalContainer.h:56
 AliEmcalContainer.h:57
 AliEmcalContainer.h:58
 AliEmcalContainer.h:59
 AliEmcalContainer.h:60
 AliEmcalContainer.h:61
 AliEmcalContainer.h:62
 AliEmcalContainer.h:63
 AliEmcalContainer.h:64
 AliEmcalContainer.h:65
 AliEmcalContainer.h:66
 AliEmcalContainer.h:67
 AliEmcalContainer.h:68
 AliEmcalContainer.h:69
 AliEmcalContainer.h:70
 AliEmcalContainer.h:71
 AliEmcalContainer.h:72
 AliEmcalContainer.h:73
 AliEmcalContainer.h:74
 AliEmcalContainer.h:75
 AliEmcalContainer.h:76
 AliEmcalContainer.h:77
 AliEmcalContainer.h:78
 AliEmcalContainer.h:79
 AliEmcalContainer.h:80
 AliEmcalContainer.h:81
 AliEmcalContainer.h:82
 AliEmcalContainer.h:83
 AliEmcalContainer.h:84
 AliEmcalContainer.h:85
 AliEmcalContainer.h:86
 AliEmcalContainer.h:87