]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/mapping/AliMpVRowSegment.h
In mapping:
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpVRowSegment.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: AliMpVRowSegment.h,v 1.9 2006/05/24 13:58:21 ivana Exp $
6
7 /// \ingroup sector
8 /// \class AliMpVRowSegment
9 /// \brief An interface for a row segment.
10 ///
11 /// \author David Guez, Ivana Hrivnacova; IPN Orsay
12
13 #ifndef ALI_MP_V_ROW_SEGMENT_H
14 #define ALI_MP_V_ROW_SEGMENT_H
15
16 #include "AliMpVIndexed.h"
17
18 class AliMpRow;
19 class AliMpVMotif;
20
21 class AliMpVRowSegment : public AliMpVIndexed
22 {
23   public:
24     AliMpVRowSegment();
25     virtual ~AliMpVRowSegment();
26
27     //
28     // methods  
29     //
30     
31     /// Return the x coordinate of the left border in the global coordinate system.
32     virtual Double_t  LeftBorderX() const = 0;
33     /// Return the x coordinate of the right border in the global coordinate system.
34     virtual Double_t  RightBorderX() const = 0;
35     /// Return the half size in y of this row segment.
36     virtual Double_t  HalfSizeY() const = 0;
37     virtual AliMpVPadIterator* CreateIterator() const;
38
39     //
40     // find methods
41     //
42
43     /// Find the motif in the given positions
44     virtual AliMpVMotif*  FindMotif(Double_t x, Double_t y) const = 0;    
45     /// Find the motif position Id in the given positions
46     virtual Int_t     FindMotifPositionId(Double_t x, Double_t y) const = 0;
47     /// Has the motif position with the given Id ?
48     virtual Bool_t    HasMotifPosition(Int_t motifPositionId) const = 0;
49
50     /// Fill the coordinates of the motif specified with the given motif position Id
51     virtual void  MotifCenter(Int_t motifPositionId,
52                                Double_t& x, Double_t& y) const = 0;
53
54     //
55     // geometry
56     //
57     
58     /// Return the x position of the row segment centre.
59     virtual Double_t  GetPositionX() const = 0;
60     /// Return the y position of the row segment centre.
61     virtual Double_t  GetPositionY() const = 0;
62
63     /// Return the x dimension of the row segment centre.
64     virtual Double_t  GetDimensionX() const = 0;
65     /// Return the y dimension of the row segment centre.
66     virtual Double_t  GetDimensionY() const = 0;
67    
68     //
69     // set methods
70     //
71
72     /// Calculate offset
73     virtual void      SetOffset(Double_t x, Double_t y) = 0;
74     /// Set global indices limits.
75     virtual void      SetGlobalIndices(AliMpRow* rowBefore) = 0;
76     /// Set global indices to i-th motif position and returns next index in x.
77     virtual Int_t     SetIndicesToMotifPosition(Int_t i, MpPair_t indices) = 0;
78     
79     //
80     // get methods
81     //
82     
83     /// Return the row.which this row segment belongs to
84     virtual AliMpRow*  GetRow() const = 0;
85     /// Return the number of motifs in this this row segment.
86     virtual Int_t      GetNofMotifs() const = 0;
87     /// Return the i-th motif of this row segment.
88     virtual AliMpVMotif*  GetMotif(Int_t i) const = 0;
89     /// Return the i-th motif position Id of this row segment.
90     virtual Int_t      GetMotifPositionId(Int_t i) const = 0;
91     
92   ClassDef(AliMpVRowSegment,1)  //Row segment
93 };
94
95 #endif //ALI_MP_V_ROW_SEGMENT_H
96