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

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

/// \ingroup slat
/// \class AliMpSlatPadIterator
/// \brief Iterator for slat pads.
/// 
//  Author: Laurent Aphecetche

#ifndef ALI_MP_SLAT_PAD_ITERATOR_H
#define ALI_MP_SLAT_PAD_ITERATOR_H

#include "AliMpVPadIterator.h"
#include "TObjArray.h"

class AliMpSlat;
class AliMpArea;

class AliMpSlatPadIterator : public AliMpVPadIterator
{
 public:
  AliMpSlatPadIterator(); 
  // Area position must be relative to bottom-left of slat.
  AliMpSlatPadIterator(const AliMpSlat* slat, const AliMpArea& area);
  virtual ~AliMpSlatPadIterator();

  void First();
  void Next();
  Bool_t IsDone() const;
  AliMpPad CurrentItem() const;
  void Invalidate();
 
 private:
  /// Not implemented
  AliMpSlatPadIterator(const AliMpSlatPadIterator&);
  /// Not implemented
  AliMpSlatPadIterator& operator=(const AliMpSlatPadIterator&);

  Bool_t Prepare(const AliMpArea& area);
  AliMpArea Intersect(const AliMpArea& a, const AliMpArea& b) const;

 private:
  const AliMpSlat* fkSlat; ///< pointer to the slat being iterated over
  TObjArray fDelegates; ///< iterators we do use (array of AliMpVPadIterator*)
  AliMpVPadIterator* fCurrentDelegate; ///< current iterator
  Int_t fCurrentDelegateIndex; ///< current iterator index

  ClassDef(AliMpSlatPadIterator,2) // Pad iterator for St 345 Slats
};

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