]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/mapping/AliMpSector.h
- Reordering includes and/or
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpSector.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: AliMpSector.h,v 1.10 2006/03/02 16:35:06 ivana Exp $
6
7 /// \ingroup sector
8 /// \class AliMpSector
9 /// \brief A sector (quadrant) of the MUON chamber of stations 1 and 2.
10 ///
11 /// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
12
13 #ifndef ALI_MP_SECTOR_H
14 #define ALI_MP_SECTOR_H
15
16 #include "AliMpContainers.h"
17
18 #ifdef WITH_STL
19 #include <vector>
20 #endif
21
22 #ifdef WITH_ROOT
23 #include <TObjArray.h>
24 #endif
25
26 #include <TNamed.h>
27 #include <TString.h>
28 #include <TVector2.h>
29
30 #include "AliMpDirection.h"
31 #include "AliMpPlaneType.h"
32
33 class TArrayI;
34 class AliMpZone;
35 class AliMpRow;
36 class AliMpVRowSegment;
37 class AliMpVMotif;
38 class AliMpVPadIterator;
39 class AliMpMotifMap;
40
41 class AliMpSector : public TNamed
42 {
43   public:
44 #ifdef WITH_STL
45     typedef std::vector<AliMpRow*> RowVector;
46     typedef std::vector<AliMpZone*> ZoneVector;
47 #endif
48 #ifdef WITH_ROOT
49     typedef TObjArray  RowVector;
50     typedef TObjArray  ZoneVector;
51 #endif
52
53   public:
54     AliMpSector(const TString& id, Int_t nofZones, Int_t nofRows,
55                 AliMpDirection direction, const TVector2& offset);
56     AliMpSector();
57     virtual ~AliMpSector();
58   
59     // methods  
60     virtual AliMpVPadIterator* CreateIterator() const;
61     void  SetRowSegmentOffsets();
62     void  Initialize(); 
63     void  PrintGeometry() const;
64
65     // find methods   
66     AliMpRow*     FindRow(const TVector2& position) const;    
67     AliMpVMotif*  FindMotif(const TVector2& position) const;
68     Int_t         FindMotifPositionId(const TVector2& position) const;
69
70     AliMpRow*          FindRow(Int_t motifPositionId) const;
71     AliMpVRowSegment*  FindRowSegment(Int_t motifPositionId) const;
72     TVector2           FindPosition(Int_t motifPositionId) const;
73
74     AliMpZone*  FindZone(const TVector2& padDimensions) const;
75
76     // geometry 
77     TVector2  Position() const;
78     TVector2  Dimensions() const;
79    
80     // get methods
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;
88     
89     virtual void Print(Option_t* opt="") const;
90     
91     /// Get all motifPositionsIDs (=electronicCardNumbers) handled by this sector
92     void GetAllMotifPositionsIDs(TArrayI& ecn) const;
93     
94     AliMpPlaneType PlaneType() const;
95     
96   protected:
97     AliMpSector(const AliMpSector& right);
98     AliMpSector&  operator = (const AliMpSector& right);
99
100   private:
101     // methods
102     AliMpVRowSegment* FindRowSegment(const TVector2& position) const;
103     void SetRowOffsets();
104     void SetMotifPositions();
105     void SetGlobalIndices();
106     void SetMinPadDimensions();
107
108     // data members        
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
116
117   ClassDef(AliMpSector,1)  //Sector
118 };
119
120 // inline functions
121
122 inline AliMpDirection AliMpSector::GetDirection() const 
123 { return fDirection; }    
124
125 inline TVector2   AliMpSector::GetMinPadDimensions() const
126 { return fMinPadDimensions; }
127
128 inline AliMpMotifMap* AliMpSector::GetMotifMap() const 
129 { return fMotifMap; }    
130
131 #endif //ALI_MP_SECTOR_H
132