]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/mapping/AliMpRowSegment.h
New macro to keep track of timing performances of the segmentation methods (Laurent)
[u/mrichter/AliRoot.git] / MUON / mapping / 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 #include <TVector2.h>
19
20 class AliMpRow;
21 class AliMpVMotif;
22 class AliMpIntPair;
23
24 class AliMpRowSegment : public AliMpVRowSegment
25 {
26   public:
27     AliMpRowSegment(AliMpRow* row, AliMpVMotif* motif, AliMpIntPair padOffset, 
28                 Int_t nofMotifs, Int_t motifPositionId, Int_t motifPositionDId);
29     AliMpRowSegment();
30     virtual ~AliMpRowSegment();
31
32     // methods
33     virtual Double_t  LeftBorderX() const;
34     virtual Double_t  RightBorderX() const;
35     virtual Double_t  HalfSizeY() const;
36
37     // find methods
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;
42
43     // geometry
44     virtual TVector2  Position() const;
45     virtual TVector2  Dimensions() const;
46
47     // set methods
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);
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(const TVector2& position, Bool_t warn = true) const;
71
72     // data members
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
81     
82   ClassDef(AliMpRowSegment,1)  // Row segment
83 };
84
85 #endif //ALI_MP_ROW_SEGMENT_H
86