Code for MUON Station1 (I.Hrivnacova)
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpSectorPadIterator.h
1 // $Id$
2 // Category: sector
3 //
4 // Class AliMpSectorPadIterator
5 // ----------------------------
6 // Class, which defines an iterator over the pads of a sector
7 //
8 // Authors: David Guez, Ivana Hrivnacova; IPN Orsay
9
10 #ifndef M_SECTOR_PAD_ITERATOR_H
11 #define M_SECTOR_PAD_ITERATOR_H
12
13 #include <TObject.h>
14
15 #include "AliMpMotifPositionPadIterator.h"
16
17 class AliMpSector;
18 class AliMpMotifPosition;
19
20
21 class AliMpSectorPadIterator : public AliMpVPadIterator
22 {
23   public:
24     AliMpSectorPadIterator();
25     AliMpSectorPadIterator(const AliMpSector* const sector);
26     AliMpSectorPadIterator(const AliMpSectorPadIterator& src);
27     virtual ~AliMpSectorPadIterator();
28
29     // operators
30     AliMpSectorPadIterator& operator = (const AliMpSectorPadIterator& right);
31
32     // methods
33     virtual void First();
34     virtual void Next();
35     virtual Bool_t IsDone() const;
36     virtual AliMpPad CurrentItem() const;
37     virtual void Invalidate();
38
39   private:
40     // private methods
41     AliMpMotifPosition* ResetToCurrentMotifPosition();
42     Bool_t IsValid() const;
43
44     // private data members
45     const AliMpSector*  fkSector; // the sector over which to iterate
46     Int_t  fCurrentRow;       // the current row number
47     Int_t  fCurrentSeg;       // the current Row Segment number in fCurrentRow
48     Int_t  fCurrentMotif;     // the current motif number in fCurrentSeg
49     AliMpMotifPosition* fMotifPos; // the current motif position
50     AliMpMotifPositionPadIterator  fIterator; // iterator over the current motif type
51
52  ClassDef(AliMpSectorPadIterator,1) // iterator over motif's pads
53 };
54
55 #endif // M_SECTOR_PAD_ITERATOR_H