]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/mapping/AliMpSectorSegmentation.h
Replacement of TVector2 object with two doubles
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpSectorSegmentation.h
CommitLineData
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
25class AliMpSector;
26class AliMpMotifPosition;
27class AliMpVPadIterator;
2998a151 28class AliMpArea;
5f91c9e8 29
30class 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 112inline const AliMpSector* AliMpSectorSegmentation::GetSector() const
113{ return fkSector; }
114
f3ed9a44 115/// Return station type
116inline AliMp::StationType AliMpSectorSegmentation::StationType() const
117{ return AliMp::kStation12; }
118
119
5f91c9e8 120#endif //ALI_MP_SECTOR_SEGMENTATION_H
121