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
16 #include "AliMpSectorTypes.h"
17 #include "AliMpVPadIterator.h"
18 #include "AliMpMotifTypePadIterator.h"
19 #include "AliMpIntPair.h"
22 class AliMpSectorSegmentation;
24 class AliMpNeighboursPadIterator : public AliMpVPadIterator
27 AliMpNeighboursPadIterator();
28 AliMpNeighboursPadIterator(const AliMpSectorSegmentation* segmentation,
29 const AliMpPad& centerPad,
30 Bool_t includeCenter=kFALSE);
31 AliMpNeighboursPadIterator(const AliMpNeighboursPadIterator& right);
32 virtual ~AliMpNeighboursPadIterator();
35 AliMpNeighboursPadIterator&
36 operator = (const AliMpNeighboursPadIterator& right);
41 virtual Bool_t IsDone() const;
42 virtual AliMpPad CurrentItem() const;
43 virtual void Invalidate();
47 static const UInt_t fgkInvalidIndex;
50 Bool_t IsNeighbours(const AliMpPad& pad) const;
51 PadVector PadVectorLine(const AliMpPad& from,
52 const AliMpIntPair& direction) const;
53 void FillPadsVector(Bool_t includeCenter);
54 Bool_t IsValid() const;
56 // private data members
57 const AliMpSectorSegmentation* fkSegmentation; // The sector segmentation
58 // over which to iterate
59 AliMpPad fCenterPad; // Pad arround which we iterate
60 PadVector fPads; // The list of pad arround fCenterIndices
61 UInt_t fIndex; // Current index inside the fPads vector
63 ClassDef(AliMpNeighboursPadIterator,1) // iterator over motif's pads
66 #endif // ALI_MP_NEIGHBOURS_PAD_ITERATOR_H