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