1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
5 // $MpId: AliMpSector.h,v 1.9 2005/09/26 16:12:11 ivana Exp $
9 /// \brief A sector (quadrant) of the MUON chamber of stations 1 and 2.
11 /// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
13 #ifndef ALI_MP_SECTOR_H
14 #define ALI_MP_SECTOR_H
16 #include "AliMpContainers.h"
23 #include <TObjArray.h>
30 #include "AliMpDirection.h"
34 class AliMpVRowSegment;
36 class AliMpVPadIterator;
39 class AliMpSector : public TNamed
43 typedef std::vector<AliMpRow*> RowVector;
44 typedef std::vector<AliMpZone*> ZoneVector;
47 typedef TObjArray RowVector;
48 typedef TObjArray ZoneVector;
52 AliMpSector(const TString& id, Int_t nofZones, Int_t nofRows,
53 AliMpDirection direction, const TVector2& offset);
55 virtual ~AliMpSector();
58 virtual AliMpVPadIterator* CreateIterator() const;
59 void SetRowSegmentOffsets();
61 void PrintGeometry() const;
64 AliMpRow* FindRow(const TVector2& position) const;
65 AliMpVMotif* FindMotif(const TVector2& position) const;
66 Int_t FindMotifPositionId(const TVector2& position) const;
68 AliMpRow* FindRow(Int_t motifPositionId) const;
69 AliMpVRowSegment* FindRowSegment(Int_t motifPositionId) const;
70 TVector2 FindPosition(Int_t motifPositionId) const;
72 AliMpZone* FindZone(const TVector2& padDimensions) const;
75 TVector2 Position() const;
76 TVector2 Dimensions() const;
79 Int_t GetNofZones() const;
80 AliMpZone* GetZone(Int_t i) const;
81 Int_t GetNofRows() const;
82 AliMpRow* GetRow(Int_t i) const;
83 AliMpDirection GetDirection() const;
84 TVector2 GetMinPadDimensions() const;
85 AliMpMotifMap* GetMotifMap() const;
88 AliMpSector(const AliMpSector& right);
89 AliMpSector& operator = (const AliMpSector& right);
93 AliMpVRowSegment* FindRowSegment(const TVector2& position) const;
95 void SetMotifPositions();
96 void SetGlobalIndices();
97 void SetMinPadDimensions();
100 TString fID; // sector ID
101 TVector2 fOffset; // sector position
102 ZoneVector fZones; // zones
103 RowVector fRows; // rows
104 AliMpMotifMap* fMotifMap; // motif map
105 AliMpDirection fDirection;// the direction of constant pad size
106 TVector2 fMinPadDimensions; // minimal pad dimensions
108 ClassDef(AliMpSector,1) //Sector
113 inline AliMpDirection AliMpSector::GetDirection() const
114 { return fDirection; }
116 inline TVector2 AliMpSector::GetMinPadDimensions() const
117 { return fMinPadDimensions; }
119 inline AliMpMotifMap* AliMpSector::GetMotifMap() const
120 { return fMotifMap; }
122 #endif //ALI_MP_SECTOR_H