]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/MUONmapping/AliMpPCBPadIterator.h
Fixes for object target dependencies
[u/mrichter/AliRoot.git] / MUON / MUONmapping / AliMpPCBPadIterator.h
1 #ifndef ALI_MP_PCB_PAD_ITERATOR_H
2 #define ALI_MP_PCB_PAD_ITERATOR_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 // $Id$
8 // $MpId$
9
10 /// \ingroup slat
11 /// \class AliMpPCBPadIterator
12 /// \brief Iterates over slat pads within a region of constant pad size.
13 ///
14 //  Author: Laurent Aphecetche
15
16 #include "AliMpVPadIterator.h"
17
18 class AliMpArea;
19 class AliMpSlat;
20 class AliMpSlatSegmentation;
21
22 class AliMpPCBPadIterator : public AliMpVPadIterator
23 {
24 public:
25   AliMpPCBPadIterator(const AliMpSlat* slat, const AliMpArea& area);
26   virtual ~AliMpPCBPadIterator();
27   
28   void First();
29   void Next();
30   Bool_t IsDone() const;
31   AliMpPad CurrentItem() const;
32   void Invalidate();
33   
34   void Print(Option_t* opt="") const;
35   
36 private:
37   /// Not implemented
38   AliMpPCBPadIterator(const AliMpPCBPadIterator& right);
39   /// Not implemented
40   AliMpPCBPadIterator&  operator = (const AliMpPCBPadIterator& right);
41   
42   Bool_t GetNextPosition(Int_t& ix, Int_t& iy) const;
43   Bool_t CropArea(const AliMpArea& area);
44   void SetPad(AliMpPad& pad, Int_t ix, Int_t iy);
45   
46 private:
47   const AliMpSlat*       fkSlat; //!< the slat we're iterating over
48   AliMpSlatSegmentation* fSlatSegmentation; //!< segmentation pointer
49   MpPair_t fMinIndices; //!< indices of bottom left of region to iterate over
50   MpPair_t fMaxIndices; //!< indices of top right of region to iterate over
51   MpPair_t fOffset; //!< current position
52   AliMpPad fCurrentPad; //!< current pad
53   Bool_t fIsDone; //!< whether we've finished or not
54   
55   ClassDef(AliMpPCBPadIterator,0) // Pad iterator for a zone of constant density, for St345.
56 };
57
58 #endif