Code for MUON Station1 (I.Hrivnacova)
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpPlaneAreaPadIterator.h
1 // $Id$
2 // Category: plane
3 //
4 // Class AliMpPlaneAreaPadIterator
5 // -------------------------------
6 // Class, which defines an iterator over the pads 
7 // inside a given area in a plane in horizontal direction.
8 //
9 // Authors: David Guez, Ivana Hrivnacova; IPN Orsay
10
11 #ifndef ALI_MP_PLANE_AREA_PAD_ITERATOR_H
12 #define ALI_MP_PLANE_AREA_PAD_ITERATOR_H
13
14 #include <TObject.h>
15
16 #include "AliMpPlaneTypes.h"
17 #include "AliMpVPadIterator.h"
18 #include "AliMpTransformPadIterator.h"
19 #include "AliMpArea.h"
20 #include "AliMpPad.h"
21
22 class AliMpPlaneSegmentation;
23
24 class AliMpPlaneAreaPadIterator : public AliMpVPadIterator
25 {
26   public:
27     AliMpPlaneAreaPadIterator(const AliMpPlaneSegmentation* segmentation, 
28                               const AliMpArea& area);
29     AliMpPlaneAreaPadIterator(const AliMpPlaneAreaPadIterator& src);
30     AliMpPlaneAreaPadIterator();
31     virtual ~AliMpPlaneAreaPadIterator();
32
33     // operators
34     AliMpPlaneAreaPadIterator& 
35       operator = (const AliMpPlaneAreaPadIterator& right);
36
37     // methods
38     virtual void First();
39     virtual void Next();
40     virtual Bool_t IsDone() const;
41     virtual AliMpPad CurrentItem() const;
42     virtual void Invalidate();
43
44   private:
45     // private methods
46     void DecomposeArea();
47
48     // private data members
49     const AliMpPlaneSegmentation*  fkPlaneSegmentation; // the plane segmentation 
50                                                // over which we iterate
51     //const AliMpArea  fkArea; // the area
52                                // (const caused problem with CINT)
53     AliMpArea                 fkArea;          // the area
54     PadIteratorVector         fPadIterators;   // pad iterators
55     PadIteratorVectorIterator fCurrentIterator;// the current iterator 
56                                                // in the vector of pad iterators
57
58  ClassDef(AliMpPlaneAreaPadIterator,1) // iterator over motif's pads
59 };
60 #endif // ALI_MP_PLANE_AREA_PAD_ITERATOR_H