Fixing a backward compatibility issue
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpVMotif.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice                               */
3
4 // $Id$
5 // $MpId: AliMpVMotif.h,v 1.8 2006/05/24 13:58:18 ivana Exp $
6
7 /// \ingroup motif
8 /// \class AliMpVMotif
9 /// \brief Abstract base class for a motif with its unique ID and the motif type.
10 ///
11 /// \author David Guez, Ivana Hrivnacova; IPN Orsay
12
13 #ifndef ALI_MP_V_MOTIF_H
14 #define ALI_MP_V_MOTIF_H
15
16 #include "AliMpEncodePair.h"
17
18 #include <TObject.h>
19 #include <TString.h>
20
21 class AliMpMotifType;
22 class AliMpConnection;
23
24 class AliMpVMotif : public TObject
25 {
26  public:
27   AliMpVMotif(const TString &id, AliMpMotifType *motifType);
28   AliMpVMotif();
29   virtual ~AliMpVMotif();
30
31   // Access methods
32   AliMpMotifType  *GetMotifType() const;
33   TString          GetID() const;
34
35                    /// Return the number of pad dimensions
36   virtual Int_t    GetNofPadDimensions() const=0;
37                    /// Return the i-th pad x dimension
38   virtual Double_t GetPadDimensionX(Int_t i) const=0;
39                    /// Return the i-th pad y dimension
40   virtual Double_t GetPadDimensionY(Int_t i) const=0;
41
42                    /// Return the dimensions of the pad specified by localIndices
43   virtual void GetPadDimensionsByIndices(MpPair_t localIndices,
44                    Double_t& dx, Double_t& dy) const=0;
45                    /// Return the dimensions of the pad specified by localIndices
46   virtual void GetPadDimensionsByIndices(Int_t ixLocal, Int_t iyLocal,
47                    Double_t& dx, Double_t& dy) const=0;
48
49   // Geometry
50                    /// Return x dimensions
51   virtual Double_t DimensionX() const=0;
52                    /// Return y dimensions
53   virtual Double_t DimensionY() const=0;
54
55   // Other methods
56                    /// Fill local position of the pad specified by local indices
57   virtual void PadPositionLocal(MpPair_t localIndices,
58                       Double_t& posx, Double_t& posy  ) const=0;
59                    /// Fill local position of the pad specified by local indices
60   virtual void PadPositionLocal(Int_t ixLocal, Int_t iyLocal,
61                       Double_t& posx, Double_t& posy  ) const=0;
62
63   AliMpConnection *FindConnectionByLocalPos(
64                       Double_t localPosX, Double_t localPosY) const;
65
66                    /// Return local indices of the pad specified by local position
67   virtual MpPair_t PadIndicesLocal(Double_t localPosX, Double_t localPosY) const=0;
68
69   virtual void Print(Option_t *option) const;
70
71  private:
72   /// Not implemented
73   AliMpVMotif(const AliMpVMotif& right);
74   /// Not implemented
75   AliMpVMotif&  operator = (const AliMpVMotif& right);
76
77   // data members 
78   TString         fID;        ///< identifier
79   AliMpMotifType *fMotifType; ///< the motif type
80
81   ClassDef(AliMpVMotif,1) // A motif with its ID
82 };
83
84 // inline functions
85
86 /// Return the motif type
87 inline  AliMpMotifType* AliMpVMotif::GetMotifType() const {return fMotifType;}
88
89 /// Return the motif identifier
90 inline  TString  AliMpVMotif::GetID() const {return fID;}
91
92 #endif //ALI_MP_V_MOTIF_H