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"
31 class AliMpMotifPosition;
33 class AliMpFastSegmentation : public AliMpVSegmentation
36 AliMpFastSegmentation(AliMpVSegmentation* seg);
37 virtual ~AliMpFastSegmentation();
39 virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const;
40 virtual AliMpVPadIterator* CreateIterator() const;
42 virtual Int_t GetNeighbours(const AliMpPad& pad, TObjArray& neighbours,
43 Bool_t includeSelf=kFALSE,
44 Bool_t includeVoid=kFALSE) const;
46 virtual Bool_t HasPadByIndices(Int_t ix, Int_t iy) const;
47 virtual Bool_t HasPadByLocation(Int_t manuId, Int_t manuChannel) const;
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;
53 virtual Int_t MaxPadIndexX() const;
54 virtual Int_t MaxPadIndexY() const;
55 virtual Int_t NofPads() const;
57 virtual void GetAllElectronicCardIDs(TArrayI& ecn) const;
59 virtual Int_t GetNofElectronicCards() const;
61 virtual AliMp::PlaneType PlaneType() const;
63 virtual Double_t GetDimensionX() const;
64 virtual Double_t GetDimensionY() const;
66 virtual Double_t GetPositionX() const;
67 virtual Double_t GetPositionY() const;
69 virtual AliMpMotifPosition* MotifPosition(Int_t manuId) const;
71 virtual Bool_t HasMotifPosition(Int_t manuId) const;
73 virtual void Print(Option_t* opt="") const;
75 /// Return helper class
76 AliMpVSegmentation* GetHelper() const { return fHelper; }
78 /// Return segmentation station type
79 AliMp::StationType StationType() const { return fHelper->StationType(); }
83 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 Double_t fPositionX; ///< to compute pad positions
95 Double_t fPositionY; ///< to compute pad positions
97 ClassDef(AliMpFastSegmentation,2) // Variant implementation for AliMpVSegmentation