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.8 2005/09/26 16:12:11 ivana Exp $
8 /// \class AliMpNeighboursPadIterator
9 /// \brief An iterator over the pads surrounding a given pad
11 /// Authors: 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"
24 #include <TObjArray.h>
27 #include "AliMpVPadIterator.h"
30 class AliMpSectorSegmentation;
33 class AliMpNeighboursPadIterator : public AliMpVPadIterator
37 typedef std::vector<AliMpPad> PadVector;
38 typedef std::set<AliMpPad> PadSet;
39 typedef PadSet::const_iterator PadSetCIterator;
42 typedef TObjArray PadVector;
43 typedef TObjArray PadSet;
47 AliMpNeighboursPadIterator();
48 AliMpNeighboursPadIterator(const AliMpSectorSegmentation* segmentation,
49 const AliMpPad& centerPad,
50 Bool_t includeCenter=kFALSE);
51 AliMpNeighboursPadIterator(const AliMpNeighboursPadIterator& right);
52 virtual ~AliMpNeighboursPadIterator();
55 AliMpNeighboursPadIterator&
56 operator = (const AliMpNeighboursPadIterator& right);
61 virtual Bool_t IsDone() const;
62 virtual AliMpPad CurrentItem() const;
63 virtual void Invalidate();
67 static const UInt_t fgkInvalidIndex; // invalid index number
70 Bool_t IsNeighbour(const AliMpPad& pad) const;
72 PadVector PadVectorLine(const AliMpPad& from,
73 const AliMpIntPair& direction) const;
74 void UpdateTotalSet(PadSet& setTotal, const PadVector& from) const;
77 PadVector* PadVectorLine(const AliMpPad& from,
78 const AliMpIntPair& direction) const;
79 void UpdateTotalSet(PadSet& setTotal, PadVector* from) const;
81 void FillPadsVector(Bool_t includeCenter);
82 Bool_t IsValid() const;
84 // private data members
85 const AliMpSectorSegmentation* fkSegmentation; // The sector segmentation
86 // over which to iterate
87 AliMpPad fCenterPad; // Pad arround which we iterate
88 PadVector fPads; // The list of pad arround fCenterIndices
89 UInt_t fIndex; // Current index inside the fPads vector
91 ClassDef(AliMpNeighboursPadIterator,1) // iterator over motif's pads
94 #endif // ALI_MP_NEIGHBOURS_PAD_ITERATOR_H