Line data Source code
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 1338 : ClassDef(AliMpPCBPadIterator,0) // Pad iterator for a zone of constant density, for St345.
56 : };
57 :
58 : #endif
|