MUON + CheckCompiler
[u/mrichter/AliRoot.git] / MUON / MUONmapping / AliMpFastSegmentation.h
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   AliMpVSegmentation* GetHelper() const { return fHelper; }
77   
78   /// Return segmentation station type
79   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   ClassDef(AliMpFastSegmentation,2) // Variant implementation for AliMpVSegmentation
98 };
99
100 #endif