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;
59 AliMpSectorSegmentation(const AliMpSectorSegmentation& right);
60 AliMpSectorSegmentation& operator = (const AliMpSectorSegmentation& right);
64 static const Double_t fgkSeparator; // the separator used for conversion
65 // of TVector2 to Long_t
68 Long_t GetIndex(const TVector2& vector2) const;
69 TVector2 GetVector(Long_t index) const;
73 void FillPadDimensionsMap();
74 AliMpMotifPosition* FindMotifPosition(const AliMpIntPair& indices) const;
75 virtual AliMpPad PadByXDirection(const TVector2& startPosition,
77 virtual AliMpPad PadByYDirection(const TVector2& startPosition,
79 virtual AliMpVPadIterator* CreateIterator() const;
82 const AliMpSector* fkSector; // Sector
83 AliMpPad* fPadBuffer; // The pad buffer
85 PadDimensionsMap fPadDimensionsMap; //! Map between zone IDs and pad dimensions
86 // EXCLUDED FOR CINT (does not compile on HP)
89 mutable PadDimensionsMap fPadDimensionsMap; // Map between zone IDs and pad dimensions
92 ClassDef(AliMpSectorSegmentation,1) // Segmentation
95 #endif //ALI_MP_SECTOR_SEGMENTATION_H