Line data Source code
1 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 : * See cxx source for full Copyright notice */
3 :
4 : // $Id$
5 : // $MpId: AliMpSlatPadIterator.h,v 1.8 2006/05/24 13:58:24 ivana Exp $
6 :
7 : /// \ingroup slat
8 : /// \class AliMpSlatPadIterator
9 : /// \brief Iterator for slat pads.
10 : ///
11 : // Author: Laurent Aphecetche
12 :
13 : #ifndef ALI_MP_SLAT_PAD_ITERATOR_H
14 : #define ALI_MP_SLAT_PAD_ITERATOR_H
15 :
16 : #include "AliMpVPadIterator.h"
17 : #include "TObjArray.h"
18 :
19 : class AliMpSlat;
20 : class AliMpArea;
21 :
22 : class AliMpSlatPadIterator : public AliMpVPadIterator
23 : {
24 : public:
25 : AliMpSlatPadIterator();
26 : // Area position must be relative to bottom-left of slat.
27 : AliMpSlatPadIterator(const AliMpSlat* slat, const AliMpArea& area);
28 : virtual ~AliMpSlatPadIterator();
29 :
30 : void First();
31 : void Next();
32 : Bool_t IsDone() const;
33 : AliMpPad CurrentItem() const;
34 : void Invalidate();
35 :
36 : private:
37 : /// Not implemented
38 : AliMpSlatPadIterator(const AliMpSlatPadIterator&);
39 : /// Not implemented
40 : AliMpSlatPadIterator& operator=(const AliMpSlatPadIterator&);
41 :
42 : Bool_t Prepare(const AliMpArea& area);
43 : AliMpArea Intersect(const AliMpArea& a, const AliMpArea& b) const;
44 :
45 : private:
46 : const AliMpSlat* fkSlat; ///< pointer to the slat being iterated over
47 : TObjArray fDelegates; ///< iterators we do use (array of AliMpVPadIterator*)
48 : AliMpVPadIterator* fCurrentDelegate; ///< current iterator
49 : Int_t fCurrentDelegateIndex; ///< current iterator index
50 :
51 3910 : ClassDef(AliMpSlatPadIterator,2) // Pad iterator for St 345 Slats
52 : };
53 :
54 : #endif
|