]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/mapping/AliMpRow.h
Updated denames of station 1 for the quadrants as they have been mounted in cave
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpRow.h
CommitLineData
dee1d5f1 1/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
3
5f91c9e8 4// $Id$
13985652 5// $MpId: AliMpRow.h,v 1.11 2006/05/24 13:58:21 ivana Exp $
dee1d5f1 6
7/// \ingroup sector
8/// \class AliMpRow
9/// \brief A row composed of the row segments.
10///
13985652 11/// \author David Guez, Ivana Hrivnacova; IPN Orsay
5f91c9e8 12
13#ifndef ALI_MP_ROW_H
14#define ALI_MP_ROW_H
15
5006ec94 16#include "AliMpContainers.h"
17
2a7ea2e6 18#include "AliMpVIndexed.h"
19#include "AliMpDirection.h"
5006ec94 20
2a7ea2e6 21#include <TVector2.h>
5006ec94 22#ifdef WITH_ROOT
23#include <TList.h>
24#endif
25
2a7ea2e6 26#ifdef WITH_STL
27#include <vector>
28#endif
5f91c9e8 29
30class AliMpVRowSegment;
31class AliMpVPadIterator;
32class AliMpMotifPosition;
33class AliMpMotifMap;
34
35class AliMpRow : public AliMpVIndexed
36{
5006ec94 37 public:
38#ifdef WITH_STL
f5671fc3 39 /// Row segment vector type
5006ec94 40 typedef std::vector<AliMpVRowSegment*> RowSegmentVector;
41#endif
42#ifdef WITH_ROOT
f5671fc3 43 /// Row segment vector type
5006ec94 44 typedef TList RowSegmentVector;
45#endif
46
5f91c9e8 47 public:
48 AliMpRow(Int_t id, AliMpMotifMap* motifMap);
49 AliMpRow();
50 virtual ~AliMpRow();
51
52 // methods
53 void AddRowSegment(AliMpVRowSegment* rowSegment);
54 void AddRowSegmentInFront(AliMpVRowSegment* rowSegment);
55 AliMpVRowSegment* FindRowSegment(Double_t x) const;
56 Double_t LowBorderY() const;
57 Double_t UpperBorderY() const;
58 virtual AliMpVPadIterator* CreateIterator() const;
59
60 void SetRowSegmentOffsets(const TVector2& offset);
61 Double_t SetOffsetY(Double_t offsetY);
62 void SetMotifPositions();
cddd101e 63 void SetGlobalIndices(AliMp::Direction constPadSizeDirection,
5f91c9e8 64 AliMpRow* rowBefore);
65
66 // geometry
67 TVector2 Position() const;
68 TVector2 Dimensions() const;
69
70 // get methods
71 UInt_t GetID() const;
72 Int_t GetNofRowSegments() const;
73 AliMpVRowSegment* GetRowSegment(Int_t i) const;
74 AliMpMotifMap* GetMotifMap() const;
75
13e7956b 76 private:
f5671fc3 77 /// Not implemented
fb1bf5c0 78 AliMpRow(const AliMpRow& right);
f5671fc3 79 /// Not implemented
fb1bf5c0 80 AliMpRow& operator = (const AliMpRow& right);
81
5f91c9e8 82 // methods
83 AliMpVRowSegment* FindRowSegment(Int_t ix) const;
84 AliMpMotifPosition* FindMotifPosition(AliMpVRowSegment* segment, Int_t ix) const;
85 void SetHighIndicesLimits(Int_t iy);
86 void CheckEmpty() const;
87
88 // data members
829425a5 89 UInt_t fID; ///< row ID
90 Double_t fOffsetY; ///< the y position of the centre of motifs
91 RowSegmentVector fSegments;///< row segments
92 AliMpMotifMap* fMotifMap;///< the motif map associated with its sector
5f91c9e8 93
829425a5 94 ClassDef(AliMpRow,1) // Row
5f91c9e8 95};
96
97// inline functions
98
f5671fc3 99/// Return row ID
5f91c9e8 100inline UInt_t AliMpRow::GetID() const { return fID; }
f5671fc3 101
102/// Return the motif map associated with its sector
5f91c9e8 103inline AliMpMotifMap* AliMpRow::GetMotifMap() const { return fMotifMap; }
104
105#endif //ALI_MP_ROW_H
106