Reordering includes, forward declarations from most specific to more
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpPadRow.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: AliMpPadRow.h,v 1.8 2006/03/17 11:38:28 ivana Exp $
6
7 /// \ingroup sector
8 /// \class AliMpPadRow
9 /// \brief A pad row composed of the pad row segments.
10 ///
11 /// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
12
13 #ifndef ALI_MP_PAD_ROW_H
14 #define ALI_MP_PAD_ROW_H
15
16 #include <TObject.h>
17
18 #include "AliMpContainers.h"
19
20 #include "AliMpXDirection.h"
21
22 #ifdef WITH_ROOT
23 #include <TObjArray.h>
24 #endif
25
26 #ifdef WITH_STL
27 #include <vector>
28 #endif
29
30 class AliMpVPadRowSegment;
31 class AliMpMotif;
32
33 class AliMpPadRow : public TObject
34 {
35   public:
36 #ifdef WITH_STL
37     typedef std::vector<AliMpVPadRowSegment*>  PadRowSegmentVector;
38 #endif
39 #ifdef WITH_ROOT
40     typedef TObjArray  PadRowSegmentVector;
41 #endif
42
43   public:
44     AliMpPadRow(AliMpXDirection direction);
45     AliMpPadRow();
46     virtual ~AliMpPadRow();
47   
48     // methods
49     AliMpVPadRowSegment*  AddPadRowSegment(AliMpMotif* motif, 
50                                           Int_t motifPositionId, 
51                                           Int_t nofPads);
52     AliMpVPadRowSegment*  FindPadRowSegment(Double_t x) const;
53     Double_t  HalfSizeY() const;
54     
55     // set methods
56     void  SetID(Int_t id);
57     void  SetOffsetX(Double_t offsetX);
58     
59     // get methods
60     Int_t   GetID() const;
61     Int_t   GetNofPadRowSegments() const;
62     AliMpVPadRowSegment*  GetPadRowSegment(Int_t i) const;
63     Int_t   GetNofPads() const;
64
65   private:
66     // methods
67     Double_t CurrentBorderX() const;
68
69     // data members
70     AliMpXDirection     fDirection;//the pad row x direction
71     Int_t               fID;       //the pad row ID
72     Double_t            fOffsetX;  //the x position of the border
73     PadRowSegmentVector fSegments; //the pad row segments
74
75   ClassDef(AliMpPadRow,1)  //Pad row
76 };
77
78 #endif //ALI_MP_PAD_ROW_H
79