]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/mapping/AliMpNeighboursPadIterator.h
Update for station2:
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpNeighboursPadIterator.h
1 // $Id$
2 // Category: sector
3 //
4 // Class AliMpNeighboursPadIterator
5 // --------------------------------
6 // Class, which defines an iterator over the pads surrounding a given pad
7 //
8 // Authors: David Guez, Ivana Hrivnacova; IPN Orsay
9
10 #ifndef ALI_MP_NEIGHBOURS_PAD_ITERATOR_H
11 #define ALI_MP_NEIGHBOURS_PAD_ITERATOR_H
12
13 #include "AliMpSectorTypes.h"
14 #include "AliMpVPadIterator.h"
15 #include "AliMpPad.h"
16
17 class AliMpSectorSegmentation;
18 class AliMpIntPair;
19
20 class AliMpNeighboursPadIterator : public AliMpVPadIterator
21 {
22   public:
23     AliMpNeighboursPadIterator();
24     AliMpNeighboursPadIterator(const AliMpSectorSegmentation* segmentation,
25                                const AliMpPad& centerPad,
26                                Bool_t includeCenter=kFALSE);
27     AliMpNeighboursPadIterator(const AliMpNeighboursPadIterator& right);
28     virtual ~AliMpNeighboursPadIterator();
29
30     // operators
31     AliMpNeighboursPadIterator& 
32       operator = (const AliMpNeighboursPadIterator& right);
33
34     // methods
35     virtual void First();
36     virtual void Next();
37     virtual Bool_t IsDone() const;
38     virtual AliMpPad CurrentItem() const;
39     virtual void Invalidate();
40
41   private:
42     // static members
43     static const UInt_t   fgkInvalidIndex; // invalid index number
44
45     // private methods
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;
51
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
58
59   ClassDef(AliMpNeighboursPadIterator,1) // iterator over motif's pads
60 };
61
62 #endif // ALI_MP_NEIGHBOURS_PAD_ITERATOR_H