]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/mapping/AliMpSectorSegmentation.h
- Disentangle masks effect from trigger chamber efficiency estimation.
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpSectorSegmentation.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: AliMpSectorSegmentation.h,v 1.15 2006/05/24 13:58:21 ivana Exp $
6
7 /// \ingroup sector
8 /// \class AliMpSectorSegmentation
9 /// \brief A segmentation of the sector.        
10 ///
11 /// Provides methods related to pads:                                     \n
12 /// conversion between pad indices, pad location, pad position;
13 /// finding pad neighbour.
14 ///
15 /// \author David Guez, Ivana Hrivnacova; IPN Orsay
16
17 #ifndef ALI_MP_SECTOR_SEGMENTATION_H
18 #define ALI_MP_SECTOR_SEGMENTATION_H
19
20 #include "AliMpVSegmentation.h"
21 #include "AliMpPad.h"
22
23 #include <TExMap.h>
24
25 class AliMpSector;
26 class AliMpMotifPosition;
27 class AliMpVPadIterator;
28 class AliMpArea;
29
30 class AliMpSectorSegmentation : public AliMpVSegmentation
31 {
32   public:
33     AliMpSectorSegmentation(const AliMpSector* sector, Bool_t own = false);
34     AliMpSectorSegmentation();
35     virtual ~AliMpSectorSegmentation();
36     
37     // factory methods  
38     virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const;
39     virtual AliMpVPadIterator* CreateIterator() const;
40
41     virtual Int_t GetNeighbours(const AliMpPad& pad, TObjArray& neighbours,
42                                Bool_t includeSelf = kFALSE,
43                                Bool_t includeVoid = kFALSE) const;
44     
45     // methods  
46     virtual AliMpPad PadByLocation(Int_t manuId, Int_t manuChannel,
47                                Bool_t warning = kTRUE) const;
48     virtual AliMpPad PadByIndices (Int_t ix, Int_t iy, 
49                                Bool_t warning = kTRUE) const;
50     virtual AliMpPad PadByPosition(Double_t x, Double_t y,
51                                Bool_t warning = kTRUE) const;
52     virtual AliMpPad PadByDirection(Double_t startx, Double_t starty, 
53                                Double_t distance) const;
54  
55     virtual Bool_t HasPadByIndices(Int_t ix, Int_t iy) const;
56     virtual Bool_t HasPadByLocation(Int_t manuId, Int_t manuChannel) const;
57   
58     virtual Int_t  MaxPadIndexX() const;
59     virtual Int_t  MaxPadIndexY() const;
60     virtual Int_t  NofPads() const;
61
62     virtual void   GetAllElectronicCardIDs(TArrayI& ecn) const;
63     virtual Int_t  GetNofElectronicCards() const;
64     virtual Bool_t HasMotifPosition(Int_t motifPositionID) const;
65     virtual AliMpMotifPosition* MotifPosition(Int_t manuId) const;
66
67     virtual AliMp::PlaneType   PlaneType() const;
68     virtual AliMp::StationType StationType() const;
69
70     virtual Double_t  GetDimensionX() const;
71     virtual Double_t  GetDimensionY() const;
72  
73     virtual Double_t  GetPositionX() const;
74     virtual Double_t  GetPositionY() const;
75   
76     virtual void Print(Option_t* opt="") const;
77     
78     Double_t GetMinPadDimensionX() const;
79     Double_t GetMinPadDimensionY() const;
80
81     Bool_t CircleTest(Int_t ix, Int_t iy) const;
82    
83     const AliMpSector* GetSector() const;
84   
85   private:
86     /// Not implemented
87     AliMpSectorSegmentation(const AliMpSectorSegmentation& right);
88     /// Not implemented
89     AliMpSectorSegmentation&  operator = (const AliMpSectorSegmentation& right);
90
91     // methods
92     AliMpMotifPosition*  FindMotifPosition(Int_t ix, Int_t iy) const;
93     virtual AliMpPad PadByXDirection(Double_t startx, Double_t starty, 
94                                      Double_t maxX) const;
95     virtual AliMpPad PadByYDirection(Double_t startx, Double_t starty, 
96                                      Double_t maxY) const;
97  
98     // data members   
99     const AliMpSector*  fkSector;     ///< Sector
100     Bool_t              fIsOwner;     ///< Sector ownership     
101     AliMpPad*           fPadBuffer;   ///< The pad buffer
102     Int_t               fMaxIndexInX; ///< maximum pad index in x    
103     Int_t               fMaxIndexInY; ///< maximum pad index in y  
104
105   ClassDef(AliMpSectorSegmentation,3)  // Segmentation
106 };
107
108
109 // inline functions
110
111 /// Return the sector
112 inline const AliMpSector* AliMpSectorSegmentation::GetSector() const
113 { return fkSector; }
114
115 /// Return station type
116 inline AliMp::StationType AliMpSectorSegmentation::StationType() const
117 { return AliMp::kStation12; }
118
119
120 #endif //ALI_MP_SECTOR_SEGMENTATION_H
121