Line data Source code
1 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 : * See cxx source for full Copyright notice */
3 :
4 : // $Id$
5 : // $MpId: AliMpRowSegment.h,v 1.10 2006/05/24 13:58:21 ivana Exp $
6 :
7 : /// \ingroup sector
8 : /// \class AliMpRowSegment
9 : /// \brief A row segment composed of the the identic motifs.
10 : ///
11 : /// \author David Guez, Ivana Hrivnacova; IPN Orsay
12 :
13 : #ifndef ALI_MP_ROW_SEGMENT_H
14 : #define ALI_MP_ROW_SEGMENT_H
15 :
16 : #include "AliMpVRowSegment.h"
17 :
18 : class AliMpRow;
19 : class AliMpVMotif;
20 :
21 : class AliMpRowSegment : public AliMpVRowSegment
22 : {
23 : public:
24 : AliMpRowSegment(AliMpRow* row, AliMpVMotif* motif,
25 : Int_t padOffsetX, Int_t padOffsetY,
26 : Int_t nofMotifs, Int_t motifPositionId, Int_t motifPositionDId);
27 : AliMpRowSegment();
28 : virtual ~AliMpRowSegment();
29 :
30 : // methods
31 : virtual Double_t LeftBorderX() const;
32 : virtual Double_t RightBorderX() const;
33 : virtual Double_t HalfSizeY() const;
34 :
35 : // find methods
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;
41 :
42 : // geometry
43 : virtual Double_t GetPositionX() const;
44 : virtual Double_t GetPositionY() const;
45 : virtual Double_t GetDimensionX() const;
46 : virtual Double_t GetDimensionY() const;
47 :
48 : // set methods
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);
52 :
53 : // get methods
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;
58 :
59 : private:
60 : /// Not implemented
61 : AliMpRowSegment(const AliMpRowSegment& right);
62 : /// Not implemented
63 : AliMpRowSegment& operator = (const AliMpRowSegment& right);
64 :
65 : // methods
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;
71 :
72 : // data members
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
78 : /// wrt to row center
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
83 :
84 18 : ClassDef(AliMpRowSegment,2) // Row segment
85 : };
86 :
87 : #endif //ALI_MP_ROW_SEGMENT_H
88 :
|