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"
21 class AliMpRowSegment : public AliMpVRowSegment
24 AliMpRowSegment(AliMpRow* row, AliMpVMotif* motif,
25 Int_t padOffsetX, Int_t padOffsetY,
26 Int_t nofMotifs, Int_t motifPositionId, Int_t motifPositionDId);
28 virtual ~AliMpRowSegment();
31 virtual Double_t LeftBorderX() const;
32 virtual Double_t RightBorderX() const;
33 virtual Double_t HalfSizeY() const;
36 virtual AliMpVMotif* FindMotif(Double_t x, Double_t y) const;
37 virtual Int_t FindMotifPositionId(Double_t x, Double_t y) const;
38 virtual Bool_t HasMotifPosition(Int_t motifPositionId) const;
39 virtual void MotifCenter(Int_t motifPositionId,
40 Double_t& x, Double_t& y) const;
43 virtual Double_t GetPositionX() const;
44 virtual Double_t GetPositionY() const;
45 virtual Double_t GetDimensionX() const;
46 virtual Double_t GetDimensionY() const;
49 virtual void SetOffset(Double_t x, Double_t y);
50 virtual void SetGlobalIndices(AliMpRow* rowBefore);
51 virtual Int_t SetIndicesToMotifPosition(Int_t i, MpPair_t 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(Double_t x, Double_t y, Bool_t warn = true) const;
73 Int_t fNofMotifs; ///< number of motifs
74 MpPair_t fLPadOffset; ///< the offset in nof pads
75 Double_t fOffsetX; ///< \brief the x position of the centre of the first motif
76 /// wrt to left border
77 Double_t fOffsetY; ///< \brief the y position of the centre of the first motif
79 AliMpRow* fRow; ///< the row containing this segment
80 AliMpVMotif* fMotif; ///< the motif
81 Int_t fMotifPositionId; ///< the first motif position id
82 Int_t fMotifPositionDId; ///< +1 if ids are increasing, -1 if decreasing
84 ClassDef(AliMpRowSegment,2) // Row segment
87 #endif //ALI_MP_ROW_SEGMENT_H