]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/mapping/AliMpSectorSegmentation.h
ENDIF replaced by endif (compilation problems)
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpSectorSegmentation.h
CommitLineData
5f91c9e8 1// $Id$
2// Category: sector
3//
4// Class AliMpSectorSegmentation
5// -----------------------------
6// Class describing the segmentation of the sector.
7// Provides methods related to pads:
8// conversion between pad indices, pad location, pad position;
9// finding pad neighbour.
10//
11// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
12
13#ifndef ALI_MP_SECTOR_SEGMENTATION_H
14#define ALI_MP_SECTOR_SEGMENTATION_H
15
16#include <TVector2.h>
17
18#include "AliMpSectorTypes.h"
19#include "AliMpVSegmentation.h"
5f91c9e8 20#include "AliMpPad.h"
5f91c9e8 21
22class AliMpSector;
23class AliMpMotifPosition;
24class AliMpVPadIterator;
2998a151 25class AliMpIntPair;
26class AliMpArea;
5f91c9e8 27
28class AliMpSectorSegmentation : public AliMpVSegmentation
29{
30 public:
31 AliMpSectorSegmentation(const AliMpSector* sector);
32 AliMpSectorSegmentation();
33 virtual ~AliMpSectorSegmentation();
34
35 // factory methods
36 virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const;
37 AliMpVPadIterator* CreateIterator(const AliMpPad& centerPad,
38 Bool_t includeCenter=kFALSE) const;
39
40 // methods
41 virtual AliMpPad PadByLocation(const AliMpIntPair& location,
42 Bool_t warning = kTRUE) const;
43 virtual AliMpPad PadByIndices (const AliMpIntPair& indices,
44 Bool_t warning = kTRUE) const;
45 virtual AliMpPad PadByPosition(const TVector2& position ,
46 Bool_t warning = kTRUE) const;
47 virtual AliMpPad PadByDirection(const TVector2& startPosition,
48 Double_t distance) const;
49
50 virtual Int_t Zone(const AliMpPad& pad, Bool_t warning = kTRUE) const;
51 virtual TVector2 PadDimensions(Int_t zone, Bool_t warning = kTRUE) const;
52
53 virtual Bool_t HasPad(const AliMpIntPair& indices) const;
54 Bool_t HasMotifPosition(Int_t motifPositionID) const;
55 TVector2 GetMinPadDimensions() const;
56 Bool_t CircleTest(const AliMpIntPair& indices) const;
57
58 private:
f79c58a5 59#ifdef WITH_ROOT
60 static const Double_t fgkSeparator; // the separator used for conversion
61 // of TVector2 to Long_t
62
63 // methods
64 Long_t GetIndex(const TVector2& vector2) const;
65 TVector2 GetVector(Long_t index) const;
66#endif
67
5f91c9e8 68 // methods
69 void FillPadDimensionsMap();
70 AliMpMotifPosition* FindMotifPosition(const AliMpIntPair& indices) const;
71 virtual AliMpPad PadByXDirection(const TVector2& startPosition,
72 Double_t maxX) const;
73 virtual AliMpPad PadByYDirection(const TVector2& startPosition,
74 Double_t maxY) const;
75 virtual AliMpVPadIterator* CreateIterator() const;
76
77 // data members
78 const AliMpSector* fkSector; // Sector
79 AliMpPad* fPadBuffer; // The pad buffer
f79c58a5 80#ifdef WITH_STL
5f91c9e8 81 PadDimensionsMap fPadDimensionsMap; //! Map between zone IDs and pad dimensions
82 // EXCLUDED FOR CINT (does not compile on HP)
f79c58a5 83#endif
84#ifdef WITH_ROOT
85 mutable PadDimensionsMap fPadDimensionsMap; // Map between zone IDs and pad dimensions
86#endif
5f91c9e8 87
88 ClassDef(AliMpSectorSegmentation,1) // Segmentation
89};
90
91#endif //ALI_MP_SECTOR_SEGMENTATION_H
92