Line data Source code
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 :
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 :
46 : virtual Bool_t HasPadByIndices(Int_t ix, Int_t iy) const;
47 : virtual Bool_t HasPadByLocation(Int_t manuId, Int_t manuChannel) const;
48 :
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;
51 : virtual AliMpPad PadByPosition(Double_t x, Double_t y, Bool_t warning = true) const;
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 :
63 : virtual Double_t GetDimensionX() const;
64 : virtual Double_t GetDimensionY() const;
65 :
66 : virtual Double_t GetPositionX() const;
67 : virtual Double_t GetPositionY() const;
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 150720 : AliMpVSegmentation* GetHelper() const { return fHelper; }
77 :
78 : /// Return segmentation station type
79 150720 : AliMp::StationType StationType() const { return fHelper->StationType(); }
80 :
81 : private:
82 : /// Not implemented
83 : AliMpFastSegmentation(const AliMpFastSegmentation& rhs);
84 : /// Not implemented
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
94 : Double_t fPositionX; ///< to compute pad positions
95 : Double_t fPositionY; ///< to compute pad positions
96 :
97 270 : ClassDef(AliMpFastSegmentation,2) // Variant implementation for AliMpVSegmentation
98 : };
99 :
100 : #endif
|