1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
5 // $MpId: AliMpRowSegment.h,v 1.10 2006/05/24 13:58:21 ivana Exp $
8 /// \class AliMpRowSegment
9 /// \brief A row segment composed of the the identic motifs.
11 /// \author David Guez, Ivana Hrivnacova; IPN Orsay
13 #ifndef ALI_MP_ROW_SEGMENT_H
14 #define ALI_MP_ROW_SEGMENT_H
16 #include "AliMpVRowSegment.h"
24 class AliMpRowSegment : public AliMpVRowSegment
27 AliMpRowSegment(AliMpRow* row, AliMpVMotif* motif, AliMpIntPair padOffset,
28 Int_t nofMotifs, Int_t motifPositionId, Int_t motifPositionDId);
30 virtual ~AliMpRowSegment();
33 virtual Double_t LeftBorderX() const;
34 virtual Double_t RightBorderX() const;
35 virtual Double_t HalfSizeY() const;
38 virtual AliMpVMotif* FindMotif(const TVector2& position) const;
39 virtual Int_t FindMotifPositionId(const TVector2& position) const;
40 virtual Bool_t HasMotifPosition(Int_t motifPositionId) const;
41 virtual TVector2 MotifCenter(Int_t motifPositionId) const;
44 virtual TVector2 Position() const;
45 virtual TVector2 Dimensions() const;
48 virtual void SetOffset(const TVector2& offset);
49 virtual void SetGlobalIndices(AliMpRow* rowBefore);
50 virtual Int_t SetIndicesToMotifPosition(Int_t i,
51 const AliMpIntPair& indices);
54 virtual AliMpRow* GetRow() const;
55 virtual Int_t GetNofMotifs() const;
56 virtual AliMpVMotif* GetMotif(Int_t /*i*/) const;
57 virtual Int_t GetMotifPositionId(Int_t i) const;
61 AliMpRowSegment(const AliMpRowSegment& right);
63 AliMpRowSegment& operator = (const AliMpRowSegment& right);
66 Double_t FirstMotifCenterX() const;
67 Double_t LastMotifCenterX() const;
68 Double_t MotifCenterX(Int_t motifPositionId) const;
69 Double_t MotifCenterY(Int_t motifPositionId) const;
70 Bool_t IsInside(const TVector2& position, Bool_t warn = true) const;
73 Int_t fNofMotifs; ///< number of motifs
74 AliMpIntPair fPadOffset; ///< the offset in nof pads
75 TVector2 fOffset; ///< \brief the position of the centre of the first motif
76 /// (x wtr to left border, y wtr to row center)
77 AliMpRow* fRow; ///< the row containing this segment
78 AliMpVMotif* fMotif; ///< the motif
79 Int_t fMotifPositionId; ///< the first motif position id
80 Int_t fMotifPositionDId; ///< +1 if ids are increasing, -1 if decreasing
82 ClassDef(AliMpRowSegment,1) // Row segment
85 #endif //ALI_MP_ROW_SEGMENT_H