ROOT logo
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

// $Id$
// $MpId: AliMpVMotif.h,v 1.8 2006/05/24 13:58:18 ivana Exp $

/// \ingroup motif
/// \class AliMpVMotif
/// \brief Abstract base class for a motif with its unique ID and the motif type.
///
/// \author David Guez, Ivana Hrivnacova; IPN Orsay

#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();

  // Access methods
  AliMpMotifType  *GetMotifType() const;
  TString          GetID() const;

                   /// Return the number of pad dimensions
  virtual Int_t    GetNofPadDimensions() const=0;
                   /// Return the i-th pad x dimension
  virtual Double_t GetPadDimensionX(Int_t i) const=0;
                   /// Return the i-th pad y dimension
  virtual Double_t GetPadDimensionY(Int_t i) const=0;

                   /// Return the dimensions of the pad specified by localIndices
  virtual void GetPadDimensionsByIndices(MpPair_t localIndices,
                   Double_t& dx, Double_t& dy) const=0;
                   /// Return the dimensions of the pad specified by localIndices
  virtual void GetPadDimensionsByIndices(Int_t ixLocal, Int_t iyLocal,
                   Double_t& dx, Double_t& dy) const=0;

  // Geometry
                   /// Return x dimensions
  virtual Double_t DimensionX() const=0;
                   /// Return y dimensions
  virtual Double_t DimensionY() const=0;

  // Other methods
                   /// Fill local position of the pad specified by local indices
  virtual void PadPositionLocal(MpPair_t localIndices,
                      Double_t& posx, Double_t& posy  ) const=0;
                   /// Fill local position of the pad specified by local indices
  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;

                   /// Return local indices of the pad specified by local position
  virtual MpPair_t PadIndicesLocal(Double_t localPosX, Double_t localPosY) const=0;

  virtual void Print(Option_t *option) const;

 private:
  /// Not implemented
  AliMpVMotif(const AliMpVMotif& right);
  /// Not implemented
  AliMpVMotif&  operator = (const AliMpVMotif& right);

  // data members 
  TString         fID;        ///< identifier
  AliMpMotifType *fMotifType; ///< the motif type

  ClassDef(AliMpVMotif,1) // A motif with its ID
};

// inline functions

/// Return the motif type
inline  AliMpMotifType* AliMpVMotif::GetMotifType() const {return fMotifType;}

/// Return the motif identifier
inline  TString  AliMpVMotif::GetID() const {return fID;}

#endif //ALI_MP_V_MOTIF_H
 AliMpVMotif.h:1
 AliMpVMotif.h:2
 AliMpVMotif.h:3
 AliMpVMotif.h:4
 AliMpVMotif.h:5
 AliMpVMotif.h:6
 AliMpVMotif.h:7
 AliMpVMotif.h:8
 AliMpVMotif.h:9
 AliMpVMotif.h:10
 AliMpVMotif.h:11
 AliMpVMotif.h:12
 AliMpVMotif.h:13
 AliMpVMotif.h:14
 AliMpVMotif.h:15
 AliMpVMotif.h:16
 AliMpVMotif.h:17
 AliMpVMotif.h:18
 AliMpVMotif.h:19
 AliMpVMotif.h:20
 AliMpVMotif.h:21
 AliMpVMotif.h:22
 AliMpVMotif.h:23
 AliMpVMotif.h:24
 AliMpVMotif.h:25
 AliMpVMotif.h:26
 AliMpVMotif.h:27
 AliMpVMotif.h:28
 AliMpVMotif.h:29
 AliMpVMotif.h:30
 AliMpVMotif.h:31
 AliMpVMotif.h:32
 AliMpVMotif.h:33
 AliMpVMotif.h:34
 AliMpVMotif.h:35
 AliMpVMotif.h:36
 AliMpVMotif.h:37
 AliMpVMotif.h:38
 AliMpVMotif.h:39
 AliMpVMotif.h:40
 AliMpVMotif.h:41
 AliMpVMotif.h:42
 AliMpVMotif.h:43
 AliMpVMotif.h:44
 AliMpVMotif.h:45
 AliMpVMotif.h:46
 AliMpVMotif.h:47
 AliMpVMotif.h:48
 AliMpVMotif.h:49
 AliMpVMotif.h:50
 AliMpVMotif.h:51
 AliMpVMotif.h:52
 AliMpVMotif.h:53
 AliMpVMotif.h:54
 AliMpVMotif.h:55
 AliMpVMotif.h:56
 AliMpVMotif.h:57
 AliMpVMotif.h:58
 AliMpVMotif.h:59
 AliMpVMotif.h:60
 AliMpVMotif.h:61
 AliMpVMotif.h:62
 AliMpVMotif.h:63
 AliMpVMotif.h:64
 AliMpVMotif.h:65
 AliMpVMotif.h:66
 AliMpVMotif.h:67
 AliMpVMotif.h:68
 AliMpVMotif.h:69
 AliMpVMotif.h:70
 AliMpVMotif.h:71
 AliMpVMotif.h:72
 AliMpVMotif.h:73
 AliMpVMotif.h:74
 AliMpVMotif.h:75
 AliMpVMotif.h:76
 AliMpVMotif.h:77
 AliMpVMotif.h:78
 AliMpVMotif.h:79
 AliMpVMotif.h:80
 AliMpVMotif.h:81
 AliMpVMotif.h:82
 AliMpVMotif.h:83
 AliMpVMotif.h:84
 AliMpVMotif.h:85
 AliMpVMotif.h:86
 AliMpVMotif.h:87
 AliMpVMotif.h:88
 AliMpVMotif.h:89
 AliMpVMotif.h:90
 AliMpVMotif.h:91
 AliMpVMotif.h:92