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.3 2005/08/26 15:42:32 ivana Exp $
11 /// \class AliMpSlatZonePadIterator
12 /// \brief Iterates over slat pads within a region of constant pad size.
13 /// \author Laurent Aphecetche
15 #include "AliMpVPadIterator.h"
16 #include "AliMpArea.h"
20 class AliMpSlatSegmentation;
22 class AliMpSlatZonePadIterator : public AliMpVPadIterator
25 AliMpSlatZonePadIterator(const AliMpSlat* slat, const AliMpArea& area);
26 virtual ~AliMpSlatZonePadIterator();
30 Bool_t IsDone() const;
31 AliMpPad CurrentItem() const;
35 AliMpSlatZonePadIterator(const AliMpSlatZonePadIterator& right);
36 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.