]>
Commit | Line | Data |
---|---|---|
3dfcfe77 | 1 | #ifndef ALIMPFASTSEGMENTATION_H |
2 | #define ALIMPFASTSEGMENTATION_H | |
3 | ||
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | // $Id$ | |
8 | ||
9 | /// \ingroup management | |
10 | /// \class AliMpFastSegmentation | |
11 | /// \brief Fast version of AliMpVSegmentation | |
12 | /// | |
13 | // author Laurent Aphecetche | |
14 | ||
15 | #ifndef ROOT_TObject | |
16 | # include "TObject.h" | |
17 | #endif | |
18 | ||
19 | #ifndef ALI_MP_V_SEGMENTATION_H | |
20 | # include "AliMpVSegmentation.h" | |
21 | #endif | |
22 | ||
23 | #ifndef ROOT_TObjArray | |
24 | # include "TObjArray.h" | |
25 | #endif | |
26 | ||
27 | #ifndef ROOT_TExMap | |
28 | # include "TExMap.h" | |
29 | #endif | |
30 | ||
3dfcfe77 | 31 | class AliMpMotifPosition; |
32 | ||
33 | class AliMpFastSegmentation : public AliMpVSegmentation | |
34 | { | |
35 | public: | |
36 | AliMpFastSegmentation(AliMpVSegmentation* seg); | |
37 | virtual ~AliMpFastSegmentation(); | |
38 | ||
39 | virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const; | |
40 | virtual AliMpVPadIterator* CreateIterator() const; | |
41 | ||
42 | virtual Int_t GetNeighbours(const AliMpPad& pad, TObjArray& neighbours, | |
43 | Bool_t includeSelf=kFALSE, | |
44 | Bool_t includeVoid=kFALSE) const; | |
45 | ||
168e9c4d | 46 | virtual Bool_t HasPadByIndices(Int_t ix, Int_t iy) const; |
47 | virtual Bool_t HasPadByLocation(Int_t manuId, Int_t manuChannel) const; | |
3dfcfe77 | 48 | |
168e9c4d | 49 | virtual AliMpPad PadByLocation(Int_t manuId, Int_t manuChannel, Bool_t warning = true) const; |
50 | virtual AliMpPad PadByIndices (Int_t ix, Int_t iy, Bool_t warning = true) const; | |
6e97fbb8 | 51 | virtual AliMpPad PadByPosition(Double_t x, Double_t y, Bool_t warning = true) const; |
3dfcfe77 | 52 | |
53 | virtual Int_t MaxPadIndexX() const; | |
54 | virtual Int_t MaxPadIndexY() const; | |
55 | virtual Int_t NofPads() const; | |
56 | ||
57 | virtual void GetAllElectronicCardIDs(TArrayI& ecn) const; | |
58 | ||
59 | virtual Int_t GetNofElectronicCards() const; | |
60 | ||
61 | virtual AliMp::PlaneType PlaneType() const; | |
62 | ||
6e97fbb8 | 63 | virtual Double_t GetDimensionX() const; |
64 | virtual Double_t GetDimensionY() const; | |
3dfcfe77 | 65 | |
6e97fbb8 | 66 | virtual Double_t GetPositionX() const; |
67 | virtual Double_t GetPositionY() const; | |
3dfcfe77 | 68 | |
69 | virtual AliMpMotifPosition* MotifPosition(Int_t manuId) const; | |
70 | ||
71 | virtual Bool_t HasMotifPosition(Int_t manuId) const; | |
72 | ||
73 | virtual void Print(Option_t* opt="") const; | |
74 | ||
75 | /// Return helper class | |
76 | AliMpVSegmentation* GetHelper() const { return fHelper; } | |
77 | ||
78 | /// Return segmentation station type | |
79 | AliMp::StationType StationType() const { return fHelper->StationType(); } | |
80 | ||
81 | private: | |
cddcc1f3 | 82 | /// Not implemented |
3dfcfe77 | 83 | AliMpFastSegmentation(const AliMpFastSegmentation& rhs); |
cddcc1f3 | 84 | /// Not implemented |
3dfcfe77 | 85 | AliMpFastSegmentation& operator=(const AliMpFastSegmentation& rhs); |
86 | ||
87 | virtual AliMpMotifPosition* InternalMotifPosition(Int_t index) const; | |
88 | ||
89 | private: | |
90 | AliMpVSegmentation* fHelper; ///< helper class (owner) | |
91 | TObjArray fMotifPositions; ///< array of AliMpMotifPositions (not owner) | |
92 | mutable TExMap fIxIy; ///< map of (ix,iy) -> index in array above | |
93 | mutable TExMap fManuId; ///< map of (manuid) -> index in array above | |
6e97fbb8 | 94 | Double_t fPositionX; ///< to compute pad positions |
95 | Double_t fPositionY; ///< to compute pad positions | |
96 | ||
97 | ClassDef(AliMpFastSegmentation,2) // Variant implementation for AliMpVSegmentation | |
3dfcfe77 | 98 | }; |
99 | ||
100 | #endif |