]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/mapping/AliMpNeighboursPadIterator.h
Fix in AliMpSectorSegmentation::PadByPosition;
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpNeighboursPadIterator.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice                               */
3
4 // $Id$
5 // $MpId: AliMpNeighboursPadIterator.h,v 1.12 2006/05/24 13:58:21 ivana Exp $
6
7 /// \ingroup sector
8 /// \class AliMpNeighboursPadIterator
9 /// \brief An iterator over the pads surrounding a given pad
10 ///
11 /// \author David Guez, Ivana Hrivnacova; IPN Orsay
12
13 #ifndef ALI_MP_NEIGHBOURS_PAD_ITERATOR_H
14 #define ALI_MP_NEIGHBOURS_PAD_ITERATOR_H
15
16 #include "AliMpVPadIterator.h"
17 #include "AliMpPad.h"
18
19 #include <TObjArray.h>
20
21 class AliMpVSegmentation;
22 class AliMpIntPair;
23
24 class AliMpNeighboursPadIterator : public AliMpVPadIterator
25 {
26   public:
27     AliMpNeighboursPadIterator();
28     AliMpNeighboursPadIterator(const AliMpVSegmentation* segmentation,
29                                const AliMpPad& centerPad,
30                                Bool_t includeCenter=kFALSE);
31     AliMpNeighboursPadIterator(const AliMpNeighboursPadIterator& right);
32     virtual ~AliMpNeighboursPadIterator();
33
34     // operators
35     AliMpNeighboursPadIterator& 
36       operator = (const AliMpNeighboursPadIterator& right);
37
38     // methods
39     virtual void First();
40     virtual void Next();
41     virtual Bool_t IsDone() const;
42     virtual AliMpPad CurrentItem() const;
43     virtual void Invalidate();
44
45   private:
46     // static members
47     static const UInt_t   fgkInvalidIndex; ///< invalid index number
48
49     // private methods
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;
56
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
63
64   ClassDef(AliMpNeighboursPadIterator,1) // iterator over motif's pads
65 };
66
67 #endif // ALI_MP_NEIGHBOURS_PAD_ITERATOR_H