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.10 2006/03/02 16:35:06 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"
31 #include "AliMpPlaneType.h"
36 class AliMpVRowSegment;
38 class AliMpVPadIterator;
41 class AliMpSector : public TNamed
45 typedef std::vector<AliMpRow*> RowVector;
46 typedef std::vector<AliMpZone*> ZoneVector;
49 typedef TObjArray RowVector;
50 typedef TObjArray ZoneVector;
54 AliMpSector(const TString& id, Int_t nofZones, Int_t nofRows,
55 AliMpDirection direction, const TVector2& offset);
57 virtual ~AliMpSector();
60 virtual AliMpVPadIterator* CreateIterator() const;
61 void SetRowSegmentOffsets();
63 void PrintGeometry() const;
66 AliMpRow* FindRow(const TVector2& position) const;
67 AliMpVMotif* FindMotif(const TVector2& position) const;
68 Int_t FindMotifPositionId(const TVector2& position) const;
70 AliMpRow* FindRow(Int_t motifPositionId) const;
71 AliMpVRowSegment* FindRowSegment(Int_t motifPositionId) const;
72 TVector2 FindPosition(Int_t motifPositionId) const;
74 AliMpZone* FindZone(const TVector2& padDimensions) const;
77 TVector2 Position() const;
78 TVector2 Dimensions() const;
81 Int_t GetNofZones() const;
82 AliMpZone* GetZone(Int_t i) const;
83 Int_t GetNofRows() const;
84 AliMpRow* GetRow(Int_t i) const;
85 AliMpDirection GetDirection() const;
86 TVector2 GetMinPadDimensions() const;
87 AliMpMotifMap* GetMotifMap() const;
89 virtual void Print(Option_t* opt="") const;
91 /// Get all motifPositionsIDs (=electronicCardNumbers) handled by this sector
92 void GetAllMotifPositionsIDs(TArrayI& ecn) const;
94 AliMpPlaneType PlaneType() const;
97 AliMpSector(const AliMpSector& right);
98 AliMpSector& operator = (const AliMpSector& right);
102 AliMpVRowSegment* FindRowSegment(const TVector2& position) const;
103 void SetRowOffsets();
104 void SetMotifPositions();
105 void SetGlobalIndices();
106 void SetMinPadDimensions();
109 TString fID; // sector ID
110 TVector2 fOffset; // sector position
111 ZoneVector fZones; // zones
112 RowVector fRows; // rows
113 AliMpMotifMap* fMotifMap; // motif map
114 AliMpDirection fDirection;// the direction of constant pad size
115 TVector2 fMinPadDimensions; // minimal pad dimensions
117 ClassDef(AliMpSector,1) //Sector
122 inline AliMpDirection AliMpSector::GetDirection() const
123 { return fDirection; }
125 inline TVector2 AliMpSector::GetMinPadDimensions() const
126 { return fMinPadDimensions; }
128 inline AliMpMotifMap* AliMpSector::GetMotifMap() const
129 { return fMotifMap; }
131 #endif //ALI_MP_SECTOR_H