]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/mapping/AliMpSector.h
From Laurent
[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.8 2005/09/02 10:00:49 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 <TObject.h>
17 #include <TString.h>
18 #include <TVector2.h>
19
20 #include "AliMpSectorTypes.h"
21 #include "AliMpDirection.h"
22
23 class AliMpZone;
24 class AliMpRow;
25 class AliMpVRowSegment;
26 class AliMpVMotif;
27 class AliMpVPadIterator;
28 class AliMpMotifMap;
29
30 class AliMpSector : public TObject
31 {
32   public:
33     AliMpSector(const TString& id, Int_t nofZones, Int_t nofRows,
34                 AliMpDirection direction, const TVector2& offset);
35     AliMpSector();
36     virtual ~AliMpSector();
37   
38     // methods  
39     virtual AliMpVPadIterator* CreateIterator() const;
40     void  SetRowSegmentOffsets();
41     void  Initialize(); 
42     void  PrintGeometry() const;
43
44     // find methods   
45     AliMpRow*     FindRow(const TVector2& position) const;    
46     AliMpVMotif*  FindMotif(const TVector2& position) const;
47     Int_t         FindMotifPositionId(const TVector2& position) const;
48
49     AliMpRow*          FindRow(Int_t motifPositionId) const;
50     AliMpVRowSegment*  FindRowSegment(Int_t motifPositionId) const;
51     TVector2           FindPosition(Int_t motifPositionId) const;
52
53     AliMpZone*  FindZone(const TVector2& padDimensions) const;
54
55     // geometry 
56     TVector2  Position() const;
57     TVector2  Dimensions() const;
58    
59     // get methods
60     Int_t       GetNofZones() const;
61     AliMpZone*  GetZone(Int_t i) const;    
62     Int_t       GetNofRows() const;
63     AliMpRow*   GetRow(Int_t i) const;
64     AliMpDirection  GetDirection() const;  
65     TVector2        GetMinPadDimensions() const;
66     AliMpMotifMap*  GetMotifMap() const;
67     
68   protected:
69     AliMpSector(const AliMpSector& right);
70     AliMpSector&  operator = (const AliMpSector& right);
71
72   private:
73     // methods
74     AliMpVRowSegment* FindRowSegment(const TVector2& position) const;
75     void SetRowOffsets();
76     void SetMotifPositions();
77     void SetGlobalIndices();
78     void SetMinPadDimensions();
79
80     // data members        
81     TString    fID;       // sector ID
82     TVector2   fOffset;   // sector position
83     ZoneVector fZones;    // zones
84     RowVector  fRows;     // rows
85     AliMpMotifMap* fMotifMap; // motif map
86     AliMpDirection fDirection;// the direction of constant pad size
87     TVector2       fMinPadDimensions; // minimal pad dimensions
88
89   ClassDef(AliMpSector,1)  //Sector
90 };
91
92 // inline functions
93
94 inline AliMpDirection AliMpSector::GetDirection() const 
95 { return fDirection; }    
96
97 inline TVector2   AliMpSector::GetMinPadDimensions() const
98 { return fMinPadDimensions; }
99
100 inline AliMpMotifMap* AliMpSector::GetMotifMap() const 
101 { return fMotifMap; }    
102
103 #endif //ALI_MP_SECTOR_H
104