4 // Class AliMpVRowSegmentSpecial
5 // -----------------------------
6 // Abstract base class for a special row segment composed of the
9 // Authors: David Guez, Ivana Hrivnacova; IPN Orsay
11 #ifndef ALI_MP_V_ROW_SEGMENT_SPECIAL_H
12 #define ALI_MP_V_ROW_SEGMENT_SPECIAL_H
16 #include "AliMpSectorTypes.h"
17 #include "AliMpVRowSegment.h"
18 #include "AliMpVMotif.h"
22 class AliMpVPadRowSegment;
25 class AliMpVRowSegmentSpecial : public AliMpVRowSegment
28 AliMpVRowSegmentSpecial(AliMpRow* row, Double_t offsetX);
29 AliMpVRowSegmentSpecial();
30 virtual ~AliMpVRowSegmentSpecial();
33 void AddPadRow(AliMpPadRow* padRow);
34 void UpdateMotifVector();
35 virtual void UpdatePadsOffset() = 0;
36 virtual Double_t LeftBorderX() const = 0;
37 virtual Double_t RightBorderX() const= 0;
38 virtual Double_t HalfSizeY() const;
41 virtual AliMpVMotif* FindMotif(const TVector2& position) const;
42 virtual Int_t FindMotifPositionId(const TVector2& position) const;
43 virtual Bool_t HasMotifPosition(Int_t motifPositionId) const;
44 virtual TVector2 MotifCenter(Int_t motifPositionId) const;
47 virtual TVector2 Position() const = 0;
48 virtual TVector2 Dimensions() const;
51 virtual void SetOffset(const TVector2& /*offset*/) {}
52 virtual void SetGlobalIndices();
53 virtual Int_t SetIndicesToMotifPosition(Int_t i,
54 const AliMpIntPair& indices) = 0;
57 virtual AliMpRow* GetRow() const;
58 virtual Int_t GetNofMotifs() const;
59 virtual AliMpVMotif* GetMotif(Int_t i) const;
60 virtual Int_t GetMotifPositionId(Int_t i) const;
64 virtual TVector2 MotifCenterSlow(Int_t motifPositionId) const = 0;
65 AliMpPadRow* FindPadRow(Double_t y) const;
66 AliMpVPadRowSegment* FindPadRowSegment(Int_t motifPositionId) const;
67 AliMpIntPair FindRelativeLowIndicesOf(Int_t motifPositionId) const;
68 Int_t MaxNofPadsInRow() const;
69 Bool_t HasMotif(const AliMpVMotif* motif) const;
72 Int_t GetNofPadRows() const;
73 AliMpPadRow* GetPadRow(Int_t i) const;
74 Double_t GetOffsetX() const;
78 // static data members
79 static const Int_t fgkMaxNofMotifPositionIds; // dimension of fMotifPositionIds
83 AliMpRow* fRow; //the row containing this segment
84 Double_t fOffsetX; //the x position of the border that touches a standard
86 PadRowVector fPadRows; //pad rows vector
87 MotifVector fMotifs; //motifs vector
88 MotifPositionIdVector fMotifPositionIds; //motifs position Ids vector
90 Int_t fNofMotifPositionIds; // number of motif positions Ids
93 ClassDef(AliMpVRowSegmentSpecial,1) //Row segment
98 inline Double_t AliMpVRowSegmentSpecial::GetOffsetX() const
101 #endif //ALI_MP_V_ROW_SEGMENT_SPECIAL_H