1 #ifndef ALIEMCALITERABLECONTAINER_H
2 #define ALIEMCALITERABLECONTAINER_H
11 class AliEmcalContainer;
73 class iterator :
public std::iterator<std::bidirectional_iterator_tag,
74 TObject,std::ptrdiff_t,
75 TObject **, TObject *>{
188 fUseAccepted(useAccept)
201 fkContainer(ref.fkContainer),
202 fAcceptIndices(ref.fAcceptIndices),
203 fUseAccepted(ref.fUseAccepted)
216 TObject::operator=(ref);
232 return fUseAccepted ? fAcceptIndices.GetSize() : fkContainer->GetNEntries();
252 if(index < 0 || index >= GetEntries())
return NULL;
253 const AliEmcalContainer &contref = *fkContainer;
254 return static_cast<T*
>(fUseAccepted ? contref[fAcceptIndices[index]] : contref[index]);
264 fAcceptIndices.Set(fkContainer->GetNAcceptEntries());
265 int acceptCounter = 0;
266 for(
int index = 0; index < fkContainer->GetNEntries(); index++){
267 UInt_t rejectionReason = 0;
268 if(fkContainer->AcceptObject(index, rejectionReason)) fAcceptIndices[acceptCounter++] = index;
291 fCurrent(currentpos),
305 fCurrent(ref.fCurrent),
306 fForward(ref.fForward)
344 if(fForward) fCurrent++;
356 if(fForward) fCurrent--;
396 return (*fkData)[fCurrent];
T * operator[](int index) const
const AliEmcalContainer * GetContainer() const
AliEmcalIterableContainerT()
bool operator!=(const iterator &ref) const
TArrayI fAcceptIndices
Array of accepted indices.
bool fForward
use forward or backward direction
bidirectional stl iterator over the EMCAL iterable container
const AliEmcalContainer * fkContainer
Container to be iterated over.
void BuildAcceptIndices()
const AliEmcalIterableContainerT< T > * fkData
container with data
Bool_t fUseAccepted
Switch between accepted and all objects.
int fCurrent
current index in the container
iterator & operator=(const iterator &ref)
AliEmcalIterableContainerT< T > & operator=(const AliEmcalIterableContainerT< T > &ref)
virtual ~AliEmcalIterableContainerT()