1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
5 // $MpId: AliMpNeighboursPadIterator.h,v 1.12 2006/05/24 13:58:21 ivana Exp $
8 /// \class AliMpNeighboursPadIterator
9 /// \brief An iterator over the pads surrounding a given pad
11 /// \author David Guez, Ivana Hrivnacova; IPN Orsay
13 #ifndef ALI_MP_NEIGHBOURS_PAD_ITERATOR_H
14 #define ALI_MP_NEIGHBOURS_PAD_ITERATOR_H
16 #include "AliMpContainers.h"
18 #include "AliMpVPadIterator.h"
22 #include <TObjArray.h>
30 class AliMpVSegmentation;
33 class AliMpNeighboursPadIterator : public AliMpVPadIterator
38 typedef std::vector<AliMpPad> PadVector;
40 typedef std::set<AliMpPad> PadSet;
41 /// Pad set iterator type
42 typedef PadSet::const_iterator PadSetCIterator;
46 typedef TObjArray PadVector;
48 typedef TObjArray PadSet;
52 AliMpNeighboursPadIterator();
53 AliMpNeighboursPadIterator(const AliMpVSegmentation* segmentation,
54 const AliMpPad& centerPad,
55 Bool_t includeCenter=kFALSE);
56 AliMpNeighboursPadIterator(const AliMpNeighboursPadIterator& right);
57 virtual ~AliMpNeighboursPadIterator();
60 AliMpNeighboursPadIterator&
61 operator = (const AliMpNeighboursPadIterator& right);
66 virtual Bool_t IsDone() const;
67 virtual AliMpPad CurrentItem() const;
68 virtual void Invalidate();
72 static const UInt_t fgkInvalidIndex; ///< invalid index number
75 Bool_t IsNeighbour(const AliMpPad& pad) const;
77 PadVector PadVectorLine(const AliMpPad& from,
78 const AliMpIntPair& direction) const;
79 void UpdateTotalSet(PadSet& setTotal, const PadVector& from) const;
82 PadVector* PadVectorLine(const AliMpPad& from,
83 const AliMpIntPair& direction) const;
84 void UpdateTotalSet(PadSet& setTotal, PadVector* from) const;
86 void FillPadsVector(Bool_t includeCenter);
87 Bool_t IsValid() const;
89 // private data members
90 const AliMpVSegmentation* fkSegmentation; ///< \brief The segmentation
91 /// segmentation over which to iterate
92 AliMpPad fCenterPad; ///< Pad arround which we iterate
93 PadVector fPads; ///< The list of pad arround fCenterIndices
94 UInt_t fIndex; ///< Current index inside the fPads vector
96 ClassDef(AliMpNeighboursPadIterator,1) // iterator over motif's pads
99 #endif // ALI_MP_NEIGHBOURS_PAD_ITERATOR_H