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.
11 // Authors: David Guez, Ivana Hrivnacova; IPN Orsay
13 #ifndef ALI_MP_SECTOR_SEGMENTATION_H
14 #define ALI_MP_SECTOR_SEGMENTATION_H
18 #include "AliMpSectorTypes.h"
19 #include "AliMpVSegmentation.h"
23 class AliMpMotifPosition;
24 class AliMpVPadIterator;
28 class AliMpSectorSegmentation : public AliMpVSegmentation
31 AliMpSectorSegmentation(const AliMpSector* sector);
32 AliMpSectorSegmentation();
33 virtual ~AliMpSectorSegmentation();
36 virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const;
37 AliMpVPadIterator* CreateIterator(const AliMpPad& centerPad,
38 Bool_t includeCenter=kFALSE) const;
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;
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;
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;
60 static const Double_t fgkSeparator; // the separator used for conversion
61 // of TVector2 to Long_t
64 Long_t GetIndex(const TVector2& vector2) const;
65 TVector2 GetVector(Long_t index) const;
69 void FillPadDimensionsMap();
70 AliMpMotifPosition* FindMotifPosition(const AliMpIntPair& indices) const;
71 virtual AliMpPad PadByXDirection(const TVector2& startPosition,
73 virtual AliMpPad PadByYDirection(const TVector2& startPosition,
75 virtual AliMpVPadIterator* CreateIterator() const;
78 const AliMpSector* fkSector; // Sector
79 AliMpPad* fPadBuffer; // The pad buffer
81 PadDimensionsMap fPadDimensionsMap; //! Map between zone IDs and pad dimensions
82 // EXCLUDED FOR CINT (does not compile on HP)
85 mutable PadDimensionsMap fPadDimensionsMap; // Map between zone IDs and pad dimensions
88 ClassDef(AliMpSectorSegmentation,1) // Segmentation
91 #endif //ALI_MP_SECTOR_SEGMENTATION_H