]>
Commit | Line | Data |
---|---|---|
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 | |
22 | class AliMpSector; | |
23 | class AliMpMotifPosition; | |
24 | class AliMpVPadIterator; | |
2998a151 | 25 | class AliMpIntPair; |
26 | class AliMpArea; | |
5f91c9e8 | 27 | |
28 | class 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 |