1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
5 // $MpId: AliMpSectorSegmentation.h,v 1.15 2006/05/24 13:58:21 ivana Exp $
8 /// \class AliMpSectorSegmentation
9 /// \brief A segmentation of the sector.
11 /// Provides methods related to pads: \n
12 /// conversion between pad indices, pad location, pad position;
13 /// finding pad neighbour.
15 /// \author David Guez, Ivana Hrivnacova; IPN Orsay
17 #ifndef ALI_MP_SECTOR_SEGMENTATION_H
18 #define ALI_MP_SECTOR_SEGMENTATION_H
20 #include "AliMpVSegmentation.h"
26 class AliMpMotifPosition;
27 class AliMpVPadIterator;
30 class AliMpSectorSegmentation : public AliMpVSegmentation
33 AliMpSectorSegmentation(const AliMpSector* sector, Bool_t own = false);
34 AliMpSectorSegmentation();
35 virtual ~AliMpSectorSegmentation();
38 virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const;
39 virtual AliMpVPadIterator* CreateIterator() const;
41 virtual Int_t GetNeighbours(const AliMpPad& pad, TObjArray& neighbours,
42 Bool_t includeSelf = kFALSE,
43 Bool_t includeVoid = kFALSE) const;
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;
55 virtual Bool_t HasPadByIndices(Int_t ix, Int_t iy) const;
56 virtual Bool_t HasPadByLocation(Int_t manuId, Int_t manuChannel) const;
58 virtual Int_t MaxPadIndexX() const;
59 virtual Int_t MaxPadIndexY() const;
60 virtual Int_t NofPads() const;
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;
67 virtual AliMp::PlaneType PlaneType() const;
68 virtual AliMp::StationType StationType() const;
70 virtual Double_t GetDimensionX() const;
71 virtual Double_t GetDimensionY() const;
73 virtual Double_t GetPositionX() const;
74 virtual Double_t GetPositionY() const;
76 virtual void Print(Option_t* opt="") const;
78 Double_t GetMinPadDimensionX() const;
79 Double_t GetMinPadDimensionY() const;
81 Bool_t CircleTest(Int_t ix, Int_t iy) const;
83 const AliMpSector* GetSector() const;
87 AliMpSectorSegmentation(const AliMpSectorSegmentation& right);
89 AliMpSectorSegmentation& operator = (const AliMpSectorSegmentation& right);
92 AliMpMotifPosition* FindMotifPosition(Int_t ix, Int_t iy) const;
93 virtual AliMpPad PadByXDirection(Double_t startx, Double_t starty,
95 virtual AliMpPad PadByYDirection(Double_t startx, Double_t starty,
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
105 ClassDef(AliMpSectorSegmentation,3) // Segmentation
111 /// Return the sector
112 inline const AliMpSector* AliMpSectorSegmentation::GetSector() const
115 /// Return station type
116 inline AliMp::StationType AliMpSectorSegmentation::StationType() const
117 { return AliMp::kStation12; }
120 #endif //ALI_MP_SECTOR_SEGMENTATION_H