]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/mapping/AliMpNeighboursPadIterator.h
Implemented write and read methods (with real mapping for tracker chamber) (Christian)
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpNeighboursPadIterator.h
CommitLineData
dee1d5f1 1/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
3
5f91c9e8 4// $Id$
dee1d5f1 5// $MpId: AliMpNeighboursPadIterator.h,v 1.7 2005/08/26 15:43:36 ivana Exp $
6
7/// \ingroup sector
8/// \class AliMpNeighboursPadIterator
9/// \brief An iterator over the pads surrounding a given pad
10///
11/// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
5f91c9e8 12
13#ifndef ALI_MP_NEIGHBOURS_PAD_ITERATOR_H
14#define ALI_MP_NEIGHBOURS_PAD_ITERATOR_H
15
5f91c9e8 16#include "AliMpSectorTypes.h"
17#include "AliMpVPadIterator.h"
5f91c9e8 18#include "AliMpPad.h"
19
20class AliMpSectorSegmentation;
2998a151 21class AliMpIntPair;
5f91c9e8 22
23class AliMpNeighboursPadIterator : public AliMpVPadIterator
24{
25 public:
26 AliMpNeighboursPadIterator();
27 AliMpNeighboursPadIterator(const AliMpSectorSegmentation* segmentation,
28 const AliMpPad& centerPad,
29 Bool_t includeCenter=kFALSE);
30 AliMpNeighboursPadIterator(const AliMpNeighboursPadIterator& right);
31 virtual ~AliMpNeighboursPadIterator();
32
33 // operators
34 AliMpNeighboursPadIterator&
35 operator = (const AliMpNeighboursPadIterator& right);
36
37 // methods
38 virtual void First();
39 virtual void Next();
40 virtual Bool_t IsDone() const;
41 virtual AliMpPad CurrentItem() const;
42 virtual void Invalidate();
43
44 private:
45 // static members
2998a151 46 static const UInt_t fgkInvalidIndex; // invalid index number
5f91c9e8 47
48 // private methods
49 Bool_t IsNeighbours(const AliMpPad& pad) const;
f79c58a5 50#ifdef WITH_STL
5f91c9e8 51 PadVector PadVectorLine(const AliMpPad& from,
52 const AliMpIntPair& direction) const;
f79c58a5 53 void UpdateTotalSet(PadSet& setTotal, const PadVector& from) const;
54#endif
55#ifdef WITH_ROOT
56 PadVector* PadVectorLine(const AliMpPad& from,
57 const AliMpIntPair& direction) const;
58 void UpdateTotalSet(PadSet& setTotal, PadVector* from) const;
59#endif
5f91c9e8 60 void FillPadsVector(Bool_t includeCenter);
61 Bool_t IsValid() const;
62
63 // private data members
64 const AliMpSectorSegmentation* fkSegmentation; // The sector segmentation
65 // over which to iterate
66 AliMpPad fCenterPad; // Pad arround which we iterate
67 PadVector fPads; // The list of pad arround fCenterIndices
68 UInt_t fIndex; // Current index inside the fPads vector
69
70 ClassDef(AliMpNeighboursPadIterator,1) // iterator over motif's pads
71};
72
73#endif // ALI_MP_NEIGHBOURS_PAD_ITERATOR_H