ROOT logo
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

// $Id$
// $MpId: AliMpMotifTypePadIterator.h,v 1.8 2006/05/24 13:58:18 ivana Exp $

/// \ingroup motif
/// \class AliMpMotifTypePadIterator
/// \brief An iterator over the pads of a given motif type
///
/// \author David Guez, Ivana Hrivnacova; IPN Orsay

#ifndef ALI_MP_MOTIF_TYPE_PAD_ITERATOR_H
#define ALI_MP_MOTIF_TYPE_PAD_ITERATOR_H

#include "AliMpVPadIterator.h"

class AliMpMotifType;

class AliMpMotifTypePadIterator : public AliMpVPadIterator
{
  public:
    AliMpMotifTypePadIterator();
    AliMpMotifTypePadIterator(const AliMpMotifType* motifType);
    AliMpMotifTypePadIterator(const AliMpMotifTypePadIterator& right);
    virtual ~AliMpMotifTypePadIterator();     

    // operators
    AliMpMotifTypePadIterator& 
      operator = (const AliMpMotifTypePadIterator& right);

    virtual void First();
    virtual void Next();
    virtual Bool_t IsDone() const;
    virtual AliMpPad CurrentItem() const;
    virtual void Invalidate();

  private:
    // private methods
    Bool_t  FindFirstPadInLine(Int_t ix, Int_t iy, 
                               Int_t& newIx, Int_t& newIy) const;
    Bool_t  IsValid() const;

    // private data members
    const AliMpMotifType* fkMotifType;///< the motif type over which iterate
    Int_t fCurrentIx;    ///< the current ix position inside the motif type
    Int_t fCurrentIy;    ///< the current iy position inside the motif type

 ClassDef(AliMpMotifTypePadIterator,2) // iterator over motif's pads
};

#endif // ALI_MP_MOTIF_TYPE_PAD_ITERATOR_H
 AliMpMotifTypePadIterator.h:1
 AliMpMotifTypePadIterator.h:2
 AliMpMotifTypePadIterator.h:3
 AliMpMotifTypePadIterator.h:4
 AliMpMotifTypePadIterator.h:5
 AliMpMotifTypePadIterator.h:6
 AliMpMotifTypePadIterator.h:7
 AliMpMotifTypePadIterator.h:8
 AliMpMotifTypePadIterator.h:9
 AliMpMotifTypePadIterator.h:10
 AliMpMotifTypePadIterator.h:11
 AliMpMotifTypePadIterator.h:12
 AliMpMotifTypePadIterator.h:13
 AliMpMotifTypePadIterator.h:14
 AliMpMotifTypePadIterator.h:15
 AliMpMotifTypePadIterator.h:16
 AliMpMotifTypePadIterator.h:17
 AliMpMotifTypePadIterator.h:18
 AliMpMotifTypePadIterator.h:19
 AliMpMotifTypePadIterator.h:20
 AliMpMotifTypePadIterator.h:21
 AliMpMotifTypePadIterator.h:22
 AliMpMotifTypePadIterator.h:23
 AliMpMotifTypePadIterator.h:24
 AliMpMotifTypePadIterator.h:25
 AliMpMotifTypePadIterator.h:26
 AliMpMotifTypePadIterator.h:27
 AliMpMotifTypePadIterator.h:28
 AliMpMotifTypePadIterator.h:29
 AliMpMotifTypePadIterator.h:30
 AliMpMotifTypePadIterator.h:31
 AliMpMotifTypePadIterator.h:32
 AliMpMotifTypePadIterator.h:33
 AliMpMotifTypePadIterator.h:34
 AliMpMotifTypePadIterator.h:35
 AliMpMotifTypePadIterator.h:36
 AliMpMotifTypePadIterator.h:37
 AliMpMotifTypePadIterator.h:38
 AliMpMotifTypePadIterator.h:39
 AliMpMotifTypePadIterator.h:40
 AliMpMotifTypePadIterator.h:41
 AliMpMotifTypePadIterator.h:42
 AliMpMotifTypePadIterator.h:43
 AliMpMotifTypePadIterator.h:44
 AliMpMotifTypePadIterator.h:45
 AliMpMotifTypePadIterator.h:46
 AliMpMotifTypePadIterator.h:47
 AliMpMotifTypePadIterator.h:48
 AliMpMotifTypePadIterator.h:49
 AliMpMotifTypePadIterator.h:50
 AliMpMotifTypePadIterator.h:51
 AliMpMotifTypePadIterator.h:52