b83b2569d9cb31ee9acc64a01b2bb0f91a0d4932
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpRow.h
1 // $Id$
2 // Category: sector
3 //
4 // Class AliMpRow
5 // --------------
6 // Class describing a row composed of the row segments.
7 //
8 // Authors: David Guez, Ivana Hrivnacova; IPN Orsay
9
10 #ifndef ALI_MP_ROW_H
11 #define ALI_MP_ROW_H
12
13 #include <TVector2.h>
14
15 #include "AliMpSectorTypes.h"
16 #include "AliMpVIndexed.h"
17 #include "AliMpDirection.h"
18
19 class AliMpVRowSegment;
20 class AliMpVPadIterator;
21 class AliMpMotifPosition;
22 class AliMpMotifMap;
23
24 class AliMpRow : public AliMpVIndexed
25 {
26   public:
27     AliMpRow(Int_t id, AliMpMotifMap* motifMap);
28     AliMpRow();
29     virtual ~AliMpRow();
30   
31     // methods
32     void  AddRowSegment(AliMpVRowSegment* rowSegment);
33     void  AddRowSegmentInFront(AliMpVRowSegment* rowSegment);
34     AliMpVRowSegment*  FindRowSegment(Double_t x) const;
35     Double_t  LowBorderY() const;
36     Double_t  UpperBorderY() const;
37     virtual AliMpVPadIterator* CreateIterator() const;
38     
39     void      SetRowSegmentOffsets(const TVector2& offset);
40     Double_t  SetOffsetY(Double_t offsetY);
41     void      SetMotifPositions();
42     void      SetGlobalIndices(AliMpDirection constPadSizeDirection, 
43                                AliMpRow* rowBefore);
44
45     // geometry
46     TVector2  Position() const;
47     TVector2  Dimensions() const;    
48
49     // get methods
50     UInt_t   GetID() const;
51     Int_t    GetNofRowSegments() const;
52     AliMpVRowSegment*  GetRowSegment(Int_t i) const;
53     AliMpMotifMap*     GetMotifMap() const;
54
55   private:
56     // methods
57     AliMpVRowSegment*    FindRowSegment(Int_t ix) const;
58     AliMpMotifPosition*  FindMotifPosition(AliMpVRowSegment* segment, Int_t ix) const;
59     void SetHighIndicesLimits(Int_t iy);
60     void CheckEmpty() const;
61   
62     // data members
63     UInt_t            fID;      // row ID
64     Double_t          fOffsetY; // the y position of the centre of motifs
65     RowSegmentVector  fSegments;// row segments
66     AliMpMotifMap*    fMotifMap;// the motif map associated with its sector
67
68   ClassDef(AliMpRow,1)  //Row
69 };
70
71 // inline functions
72
73 inline  UInt_t  AliMpRow::GetID() const { return fID; }
74 inline  AliMpMotifMap*  AliMpRow::GetMotifMap() const { return fMotifMap; }
75
76 #endif //ALI_MP_ROW_H
77