Line data Source code
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 82 : ClassDef(AliMpSectorSegmentation,3) // Segmentation
106 : };
107 :
108 :
109 : // inline functions
110 :
111 : /// Return the sector
112 : inline const AliMpSector* AliMpSectorSegmentation::GetSector() const
113 44690 : { return fkSector; }
114 :
115 : /// Return station type
116 : inline AliMp::StationType AliMpSectorSegmentation::StationType() const
117 43112 : { return AliMp::kStation12; }
118 :
119 :
120 : #endif //ALI_MP_SECTOR_SEGMENTATION_H
121 :
|