]>
Commit | Line | Data |
---|---|---|
dee1d5f1 | 1 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
2 | * See cxx source for full Copyright notice */ | |
3 | ||
5f91c9e8 | 4 | // $Id$ |
13985652 | 5 | // $MpId: AliMpSectorSegmentation.h,v 1.15 2006/05/24 13:58:21 ivana Exp $ |
dee1d5f1 | 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 | /// | |
13985652 | 15 | /// \author David Guez, Ivana Hrivnacova; IPN Orsay |
5f91c9e8 | 16 | |
17 | #ifndef ALI_MP_SECTOR_SEGMENTATION_H | |
18 | #define ALI_MP_SECTOR_SEGMENTATION_H | |
19 | ||
2a7ea2e6 | 20 | #include "AliMpVSegmentation.h" |
21 | #include "AliMpPad.h" | |
5006ec94 | 22 | |
5006ec94 | 23 | #include <TExMap.h> |
5f91c9e8 | 24 | |
25 | class AliMpSector; | |
26 | class AliMpMotifPosition; | |
27 | class AliMpVPadIterator; | |
2998a151 | 28 | class AliMpArea; |
5f91c9e8 | 29 | |
30 | class AliMpSectorSegmentation : public AliMpVSegmentation | |
31 | { | |
32 | public: | |
d79286ca | 33 | AliMpSectorSegmentation(const AliMpSector* sector, Bool_t own = false); |
5f91c9e8 | 34 | AliMpSectorSegmentation(); |
35 | virtual ~AliMpSectorSegmentation(); | |
36 | ||
37 | // factory methods | |
38 | virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const; | |
984a565f | 39 | virtual AliMpVPadIterator* CreateIterator() const; |
5f91c9e8 | 40 | |
3635f34f | 41 | virtual Int_t GetNeighbours(const AliMpPad& pad, TObjArray& neighbours, |
42 | Bool_t includeSelf = kFALSE, | |
43 | Bool_t includeVoid = kFALSE) const; | |
984a565f | 44 | |
5f91c9e8 | 45 | // methods |
168e9c4d | 46 | virtual AliMpPad PadByLocation(Int_t manuId, Int_t manuChannel, |
5f91c9e8 | 47 | Bool_t warning = kTRUE) const; |
168e9c4d | 48 | virtual AliMpPad PadByIndices (Int_t ix, Int_t iy, |
5f91c9e8 | 49 | Bool_t warning = kTRUE) const; |
6e97fbb8 | 50 | virtual AliMpPad PadByPosition(Double_t x, Double_t y, |
5f91c9e8 | 51 | Bool_t warning = kTRUE) const; |
6e97fbb8 | 52 | virtual AliMpPad PadByDirection(Double_t startx, Double_t starty, |
5f91c9e8 | 53 | Double_t distance) const; |
580c28fd | 54 | |
168e9c4d | 55 | virtual Bool_t HasPadByIndices(Int_t ix, Int_t iy) const; |
56 | virtual Bool_t HasPadByLocation(Int_t manuId, Int_t manuChannel) const; | |
3635f34f | 57 | |
bd984e15 | 58 | virtual Int_t MaxPadIndexX() const; |
59 | virtual Int_t MaxPadIndexY() const; | |
60 | virtual Int_t NofPads() const; | |
5f91c9e8 | 61 | |
3635f34f | 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 | ||
6e97fbb8 | 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; | |
3635f34f | 75 | |
76 | virtual void Print(Option_t* opt="") const; | |
77 | ||
6e97fbb8 | 78 | Double_t GetMinPadDimensionX() const; |
79 | Double_t GetMinPadDimensionY() const; | |
5f91c9e8 | 80 | |
168e9c4d | 81 | Bool_t CircleTest(Int_t ix, Int_t iy) const; |
f5ed7890 | 82 | |
83 | const AliMpSector* GetSector() const; | |
3635f34f | 84 | |
13e7956b | 85 | private: |
f5671fc3 | 86 | /// Not implemented |
fb1bf5c0 | 87 | AliMpSectorSegmentation(const AliMpSectorSegmentation& right); |
f5671fc3 | 88 | /// Not implemented |
fb1bf5c0 | 89 | AliMpSectorSegmentation& operator = (const AliMpSectorSegmentation& right); |
90 | ||
f79c58a5 | 91 | // methods |
168e9c4d | 92 | AliMpMotifPosition* FindMotifPosition(Int_t ix, Int_t iy) const; |
6e97fbb8 | 93 | virtual AliMpPad PadByXDirection(Double_t startx, Double_t starty, |
5f91c9e8 | 94 | Double_t maxX) const; |
6e97fbb8 | 95 | virtual AliMpPad PadByYDirection(Double_t startx, Double_t starty, |
5f91c9e8 | 96 | Double_t maxY) const; |
5f91c9e8 | 97 | |
d79286ca | 98 | // data members |
6e97fbb8 | 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 | |
5f91c9e8 | 106 | }; |
107 | ||
f5ed7890 | 108 | |
109 | // inline functions | |
110 | ||
f5671fc3 | 111 | /// Return the sector |
f5ed7890 | 112 | inline const AliMpSector* AliMpSectorSegmentation::GetSector() const |
113 | { return fkSector; } | |
114 | ||
f3ed9a44 | 115 | /// Return station type |
116 | inline AliMp::StationType AliMpSectorSegmentation::StationType() const | |
117 | { return AliMp::kStation12; } | |
118 | ||
119 | ||
5f91c9e8 | 120 | #endif //ALI_MP_SECTOR_SEGMENTATION_H |
121 |