#ifndef ALI_MP_V_MOTIF_H
#define ALI_MP_V_MOTIF_H
#include "AliMpEncodePair.h"
#include <TObject.h>
#include <TString.h>
class AliMpMotifType;
class AliMpConnection;
class AliMpVMotif : public TObject
{
public:
AliMpVMotif(const TString &id, AliMpMotifType *motifType);
AliMpVMotif();
virtual ~AliMpVMotif();
AliMpMotifType *GetMotifType() const;
TString GetID() const;
virtual Int_t GetNofPadDimensions() const=0;
virtual Double_t GetPadDimensionX(Int_t i) const=0;
virtual Double_t GetPadDimensionY(Int_t i) const=0;
virtual void GetPadDimensionsByIndices(MpPair_t localIndices,
Double_t& dx, Double_t& dy) const=0;
virtual void GetPadDimensionsByIndices(Int_t ixLocal, Int_t iyLocal,
Double_t& dx, Double_t& dy) const=0;
virtual Double_t DimensionX() const=0;
virtual Double_t DimensionY() const=0;
virtual void PadPositionLocal(MpPair_t localIndices,
Double_t& posx, Double_t& posy ) const=0;
virtual void PadPositionLocal(Int_t ixLocal, Int_t iyLocal,
Double_t& posx, Double_t& posy ) const=0;
AliMpConnection *FindConnectionByLocalPos(
Double_t localPosX, Double_t localPosY) const;
virtual MpPair_t PadIndicesLocal(Double_t localPosX, Double_t localPosY) const=0;
virtual void Print(Option_t *option) const;
private:
AliMpVMotif(const AliMpVMotif& right);
AliMpVMotif& operator = (const AliMpVMotif& right);
TString fID;
AliMpMotifType *fMotifType;
ClassDef(AliMpVMotif,1)
};
inline AliMpMotifType* AliMpVMotif::GetMotifType() const {return fMotifType;}
inline TString AliMpVMotif::GetID() const {return fID;}
#endif //ALI_MP_V_MOTIF_H