Line data Source code
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 18 : ClassDef(AliMpVMotif,1) // A motif with its ID
82 : };
83 :
84 : // inline functions
85 :
86 : /// Return the motif type
87 48406242 : inline AliMpMotifType* AliMpVMotif::GetMotifType() const {return fMotifType;}
88 :
89 : /// Return the motif identifier
90 3336 : inline TString AliMpVMotif::GetID() const {return fID;}
91 :
92 : #endif //ALI_MP_V_MOTIF_H
|