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 "AliMpVPadIterator.h"
19 #include <TObjArray.h>
21 class AliMpVSegmentation;
24 class AliMpNeighboursPadIterator : public AliMpVPadIterator
27 AliMpNeighboursPadIterator();
28 AliMpNeighboursPadIterator(const AliMpVSegmentation* 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; ///< invalid index number
50 Bool_t IsNeighbour(const AliMpPad& pad) const;
51 TObjArray* PadVectorLine(const AliMpPad& from,
52 const AliMpIntPair& direction) const;
53 void UpdateTotalSet(TObjArray& setTotal, TObjArray* from) const;
54 void FillPadsVector(Bool_t includeCenter);
55 Bool_t IsValid() const;
57 // private data members
58 const AliMpVSegmentation* fkSegmentation; ///< \brief The segmentation
59 /// segmentation over which to iterate
60 AliMpPad fCenterPad; ///< Pad arround which we iterate
61 TObjArray fPads; ///< The list of pad arround fCenterIndices
62 UInt_t fIndex; ///< Current index inside the fPads vector
64 ClassDef(AliMpNeighboursPadIterator,1) // iterator over motif's pads
67 #endif // ALI_MP_NEIGHBOURS_PAD_ITERATOR_H