1 #ifndef ALI_MP_SLAT_ZONE_PAD_ITERATOR_H
2 #define ALI_MP_SLAT_ZONE_PAD_ITERATOR_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
8 // $MpId: AliMpSlatZonePadIterator.h,v 1.7 2006/05/24 13:58:24 ivana Exp $
11 /// \class AliMpSlatZonePadIterator
12 /// \brief Iterates over slat pads within a region of constant pad size.
14 // Author: Laurent Aphecetche
16 #include "AliMpVPadIterator.h"
17 #include "AliMpArea.h"
21 class AliMpSlatSegmentation;
23 class AliMpSlatZonePadIterator : public AliMpVPadIterator
26 AliMpSlatZonePadIterator(const AliMpSlat* slat, const AliMpArea& area);
27 virtual ~AliMpSlatZonePadIterator();
31 Bool_t IsDone() const;
32 AliMpPad CurrentItem() const;
36 AliMpSlatZonePadIterator(const AliMpSlatZonePadIterator& right);
37 AliMpSlatZonePadIterator& operator = (const AliMpSlatZonePadIterator& right);
40 Bool_t GetNextPosition(Double_t& x, Double_t& y);
41 void SetPad(AliMpPad& pad, const TVector2& pos);
44 const AliMpSlat* fkSlat; //!< the slat we're iterating over
45 AliMpSlatSegmentation* fSlatSegmentation; //!< segmentation pointer
46 AliMpArea fArea; //!< area we're iterating over
47 TVector2 fOffset; //!< current position (relative to bottom-left of area)
48 TVector2 fStep; //!< step sizes
49 AliMpPad fCurrentPad; //!< current pad
50 Bool_t fIsDone; //!< whether we've finished or not
52 static const Double_t fgkDmax; ///< maximum double
53 static const Double_t fgkEpsilon; ///< comparison precision
55 ClassDef(AliMpSlatZonePadIterator,1) // Pad iterator for a zone of constant density, for St345.