]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/mapping/AliMpNeighboursPadIterator.h
new class AliMUONLoader
[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 <TObject.h>
14 #include <TVector2.h>
15
16 #include "AliMpSectorTypes.h"
17 #include "AliMpVPadIterator.h"
18 #include "AliMpMotifTypePadIterator.h"
19 #include "AliMpIntPair.h"
20 #include "AliMpPad.h"
21
22 class AliMpSectorSegmentation;
23
24 class AliMpNeighboursPadIterator : public AliMpVPadIterator
25 {
26   public:
27     AliMpNeighboursPadIterator();
28     AliMpNeighboursPadIterator(const AliMpSectorSegmentation* 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;
48
49     // private methods
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;
55
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
62
63   ClassDef(AliMpNeighboursPadIterator,1) // iterator over motif's pads
64 };
65
66 #endif // ALI_MP_NEIGHBOURS_PAD_ITERATOR_H