1 #ifndef ALIMPFASTSEGMENTATION_H
2 #define ALIMPFASTSEGMENTATION_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
9 /// \ingroup management
10 /// \class AliMpFastSegmentation
11 /// \brief Fast version of AliMpVSegmentation
13 // author Laurent Aphecetche
19 #ifndef ALI_MP_V_SEGMENTATION_H
20 # include "AliMpVSegmentation.h"
23 #ifndef ROOT_TObjArray
24 # include "TObjArray.h"
32 # include "TVector2.h"
35 class AliMpMotifPosition;
37 class AliMpFastSegmentation : public AliMpVSegmentation
40 AliMpFastSegmentation(AliMpVSegmentation* seg);
41 virtual ~AliMpFastSegmentation();
43 virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const;
44 virtual AliMpVPadIterator* CreateIterator() const;
46 virtual Int_t GetNeighbours(const AliMpPad& pad, TObjArray& neighbours,
47 Bool_t includeSelf=kFALSE,
48 Bool_t includeVoid=kFALSE) const;
50 virtual Bool_t HasPadByIndices(Int_t ix, Int_t iy) const;
51 virtual Bool_t HasPadByLocation(Int_t manuId, Int_t manuChannel) const;
53 virtual AliMpPad PadByLocation(Int_t manuId, Int_t manuChannel, Bool_t warning = true) const;
54 virtual AliMpPad PadByIndices (Int_t ix, Int_t iy, Bool_t warning = true) const;
55 virtual AliMpPad PadByPosition(const TVector2& position, Bool_t warning = true) const;
57 virtual Int_t MaxPadIndexX() const;
58 virtual Int_t MaxPadIndexY() const;
59 virtual Int_t NofPads() const;
61 virtual void GetAllElectronicCardIDs(TArrayI& ecn) const;
63 virtual Int_t GetNofElectronicCards() const;
65 virtual AliMp::PlaneType PlaneType() const;
67 virtual TVector2 Dimensions() const;
69 virtual TVector2 Position() const;
71 virtual AliMpMotifPosition* MotifPosition(Int_t manuId) const;
73 virtual Bool_t HasMotifPosition(Int_t manuId) const;
75 virtual void Print(Option_t* opt="") const;
77 /// Return helper class
78 AliMpVSegmentation* GetHelper() const { return fHelper; }
80 /// Return segmentation station type
81 AliMp::StationType StationType() const { return fHelper->StationType(); }
84 AliMpFastSegmentation(const AliMpFastSegmentation& rhs);
85 AliMpFastSegmentation& operator=(const AliMpFastSegmentation& rhs);
87 virtual AliMpMotifPosition* InternalMotifPosition(Int_t index) const;
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 TVector2 fPosition; ///< to compute pad positions
96 ClassDef(AliMpFastSegmentation,1) // Variant implementation for AliMpVSegmentation