]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/mapping/AliMpSectorSegmentation.h
Slats mapping files in Bending
[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
fb1bf5c0 58 protected:
59 AliMpSectorSegmentation(const AliMpSectorSegmentation& right);
60 AliMpSectorSegmentation& operator = (const AliMpSectorSegmentation& right);
61
5f91c9e8 62 private:
f79c58a5 63#ifdef WITH_ROOT
64 static const Double_t fgkSeparator; // the separator used for conversion
65 // of TVector2 to Long_t
66
67 // methods
68 Long_t GetIndex(const TVector2& vector2) const;
69 TVector2 GetVector(Long_t index) const;
70#endif
71
5f91c9e8 72 // methods
73 void FillPadDimensionsMap();
74 AliMpMotifPosition* FindMotifPosition(const AliMpIntPair& indices) const;
75 virtual AliMpPad PadByXDirection(const TVector2& startPosition,
76 Double_t maxX) const;
77 virtual AliMpPad PadByYDirection(const TVector2& startPosition,
78 Double_t maxY) const;
79 virtual AliMpVPadIterator* CreateIterator() const;
80
81 // data members
82 const AliMpSector* fkSector; // Sector
83 AliMpPad* fPadBuffer; // The pad buffer
f79c58a5 84#ifdef WITH_STL
5f91c9e8 85 PadDimensionsMap fPadDimensionsMap; //! Map between zone IDs and pad dimensions
86 // EXCLUDED FOR CINT (does not compile on HP)
f79c58a5 87#endif
88#ifdef WITH_ROOT
89 mutable PadDimensionsMap fPadDimensionsMap; // Map between zone IDs and pad dimensions
90#endif
5f91c9e8 91
92 ClassDef(AliMpSectorSegmentation,1) // Segmentation
93};
94
95#endif //ALI_MP_SECTOR_SEGMENTATION_H
96