3 #ifndef ALIEMCALCONTAINER_H
4 #define ALIEMCALCONTAINER_H
15 #include <TClonesArray.h>
17 #if !(defined(__CINT__) || defined(__MAKECINT__))
75 class AliEmcalContainer :
public TObject {
81 enum RejectionReason {
85 kAcceptanceCut = 1<<2,
92 kNotHybridTrack = 1<<7,
94 kMCGeneratorCut = 1<<9,
96 kMinDistanceTPCSectorEdgeCut = 1<<11,
109 kZLeadingChCut = 1<<20,
110 kZLeadingEmcCut = 1<<21,
112 kMinLeadPtCut = 1<<23,
113 kMaxTrackPtCut = 1<<24,
114 kMaxClusterPtCut = 1<<25,
117 kMinNConstituents = 1<<28,
118 kOverlapTpcHole = 1<<29
122 AliEmcalContainer(
const char *name);
123 virtual ~AliEmcalContainer(){;}
125 virtual TObject *operator[](
int index)
const = 0;
127 virtual Bool_t ApplyKinematicCuts(
const AliTLorentzVector& mom, UInt_t &rejectionReason)
const;
128 TClonesArray *GetArray()
const {
return fClArray ; }
129 const TString& GetArrayName()
const {
return fClArrayName ; }
130 const TString& GetClassName()
const {
return fClassName ; }
131 Double_t GetMinE()
const {
return fMinE ; }
132 Double_t GetMaxE()
const {
return fMaxE ; }
133 Double_t GetMinPt()
const {
return fMinPt ; }
134 Double_t GetMaxPt()
const {
return fMaxPt ; }
135 Double_t GetMinEta()
const {
return fMinEta ; }
136 Double_t GetMaxEta()
const {
return fMaxEta ; }
137 Double_t GetMinPhi()
const {
return fMinPhi ; }
138 Double_t GetMaxPhi()
const {
return fMaxPhi ; }
139 Int_t GetCurrentID()
const {
return fCurrentID ; }
140 Bool_t GetIsParticleLevel()
const {
return fIsParticleLevel ; }
141 Int_t GetIndexFromLabel(Int_t lab)
const;
142 Int_t GetNEntries()
const {
return fClArray->GetEntriesFast() ; }
143 virtual Bool_t GetMomentum(TLorentzVector &mom, Int_t i)
const = 0;
144 virtual Bool_t GetAcceptMomentum(TLorentzVector &mom, Int_t i)
const = 0;
145 virtual Bool_t GetNextMomentum(TLorentzVector &mom) = 0;
146 virtual Bool_t GetNextAcceptMomentum(TLorentzVector &mom) = 0;
147 virtual Bool_t AcceptObject(Int_t i, UInt_t &rejectionReason)
const = 0;
148 virtual Bool_t AcceptObject(
const TObject* obj, UInt_t &rejectionReason)
const = 0;
149 Int_t GetNAcceptEntries()
const;
150 void ResetCurrentID(Int_t i=-1) { fCurrentID = i ; }
151 virtual void SetArray(
const AliVEvent *event);
152 void SetArrayName(
const char *n) { fClArrayName = n ; }
153 void SetBitMap(UInt_t m) { fBitMap = m ; }
154 void SetIsParticleLevel(Bool_t b) { fIsParticleLevel = b ; }
155 void SortArray() { fClArray->Sort() ; }
157 TClass* GetLoadedClass() {
return fLoadedClass ; }
158 virtual void NextEvent() {;}
159 void SetMinMCLabel(Int_t s) { fMinMCLabel = s ; }
160 void SetMaxMCLabel(Int_t s) { fMaxMCLabel = s ; }
161 void SetMCLabelRange(Int_t min, Int_t max) { SetMinMCLabel(min) ; SetMaxMCLabel(max) ; }
162 void SetELimits(Double_t min, Double_t max) { fMinE = min ; fMaxE = max ; }
163 void SetMinE(Double_t min) { fMinE = min ; }
164 void SetMaxE(Double_t max) { fMaxE = max ; }
165 void SetPtLimits(Double_t min, Double_t max) { fMinPt = min ; fMaxPt = max ; }
166 void SetMinPt(Double_t min) { fMinPt = min ; }
167 void SetMaxPt(Double_t max) { fMaxPt = max ; }
168 void SetEtaLimits(Double_t min, Double_t max) { fMaxEta = max ; fMinEta = min ; }
169 void SetPhiLimits(Double_t min, Double_t max) { fMaxPhi = max ; fMinPhi = min ; }
170 void SetMassHypothesis(Double_t m) { fMassHypothesis = m ; }
171 void SetClassName(
const char *clname);
173 const char* GetName()
const {
return fName.Data() ; }
174 void SetName(
const char* n) { fName = n ; }
176 static Double_t RelativePhi(Double_t ang1, Double_t ang2);
177 static Bool_t SamePart(
const AliVParticle* part1,
const AliVParticle* part2, Double_t dist = 1.e-4);
178 static UShort_t GetRejectionReasonBitPosition(UInt_t rejectionReason);
180 #if !(defined(__CINT__) || defined(__MAKECINT__))
184 const AliEmcalIterableMomentumContainer all_momentum()
const;
185 const AliEmcalIterableMomentumContainer accepted_momentum()
const;
190 TString fClArrayName;
191 TString fBaseClassName;
192 Bool_t fIsParticleLevel;
204 Double_t fMassHypothesis;
205 TClonesArray *fClArray;
209 TClass *fLoadedClass;
214 AliEmcalContainer(
const AliEmcalContainer& obj);
215 AliEmcalContainer& operator=(
const AliEmcalContainer& other);
218 ClassDef(AliEmcalContainer,8);
Container implementing iterable functionality of the EMCAL containers.