]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/MUONmapping/AliMpRowSegment.h
Fixes for object target dependencies
[u/mrichter/AliRoot.git] / MUON / MUONmapping / AliMpRowSegment.h
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   ClassDef(AliMpRowSegment,2)  // Row segment
85 };
86
87 #endif //ALI_MP_ROW_SEGMENT_H
88