4 // Class AliMpNeighboursPadIterator
5 // --------------------------------
6 // Class, which defines an iterator over the pads surrounding a given pad
8 // Authors: David Guez, Ivana Hrivnacova; IPN Orsay
10 #ifndef ALI_MP_NEIGHBOURS_PAD_ITERATOR_H
11 #define ALI_MP_NEIGHBOURS_PAD_ITERATOR_H
13 #include "AliMpSectorTypes.h"
14 #include "AliMpVPadIterator.h"
17 class AliMpSectorSegmentation;
20 class AliMpNeighboursPadIterator : public AliMpVPadIterator
23 AliMpNeighboursPadIterator();
24 AliMpNeighboursPadIterator(const AliMpSectorSegmentation* segmentation,
25 const AliMpPad& centerPad,
26 Bool_t includeCenter=kFALSE);
27 AliMpNeighboursPadIterator(const AliMpNeighboursPadIterator& right);
28 virtual ~AliMpNeighboursPadIterator();
31 AliMpNeighboursPadIterator&
32 operator = (const AliMpNeighboursPadIterator& right);
37 virtual Bool_t IsDone() const;
38 virtual AliMpPad CurrentItem() const;
39 virtual void Invalidate();
43 static const UInt_t fgkInvalidIndex; // invalid index number
46 Bool_t IsNeighbours(const AliMpPad& pad) const;
47 PadVector PadVectorLine(const AliMpPad& from,
48 const AliMpIntPair& direction) const;
49 void FillPadsVector(Bool_t includeCenter);
50 Bool_t IsValid() const;
52 // private data members
53 const AliMpSectorSegmentation* fkSegmentation; // The sector segmentation
54 // over which to iterate
55 AliMpPad fCenterPad; // Pad arround which we iterate
56 PadVector fPads; // The list of pad arround fCenterIndices
57 UInt_t fIndex; // Current index inside the fPads vector
59 ClassDef(AliMpNeighboursPadIterator,1) // iterator over motif's pads
62 #endif // ALI_MP_NEIGHBOURS_PAD_ITERATOR_H