1 #ifndef ALIEMCALITERABLECONTAINER_H
2 #define ALIEMCALITERABLECONTAINER_H
10 class AliEmcalContainer;
72 class iterator :
public std::iterator<std::bidirectional_iterator_tag,
73 TObject,std::ptrdiff_t,
74 TObject **, TObject *>{
185 fUseAccepted(useAccept)
197 fkContainer(ref.fkContainer),
198 fAcceptIndices(ref.fAcceptIndices),
199 fUseAccepted(ref.fUseAccepted)
227 return fUseAccepted ? fAcceptIndices.GetSize() : fkContainer->GetNEntries();
247 if(index < 0 || index >= GetEntries())
return NULL;
248 const AliEmcalContainer &contref = *fkContainer;
249 return static_cast<T*
>(fUseAccepted ? contref[fAcceptIndices[index]] : contref[index]);
259 fAcceptIndices.Set(fkContainer->GetNAcceptEntries());
260 int acceptCounter = 0;
261 for(
int index = 0; index < fkContainer->GetNEntries(); index++){
262 UInt_t rejectionReason = 0;
263 if(fkContainer->AcceptObject(index, rejectionReason)) fAcceptIndices[acceptCounter++] = index;
286 fCurrent(currentpos),
300 fCurrent(ref.fCurrent),
301 fForward(ref.fForward)
339 if(fForward) fCurrent++;
351 if(fForward) fCurrent--;
391 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()