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

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

/// \ingroup motif
/// \class AliMpMotif
/// \brief A motif with its unique ID and the motif type.
///
/// \author David Guez, Ivana Hrivnacova; IPN Orsay

#ifndef ALI_MP_MOTIF_H
#define ALI_MP_MOTIF_H

#include "AliMpVMotif.h"
#include "AliMpEncodePair.h"

#include <TObject.h>

class TString;

class AliMpMotif : public AliMpVMotif
{
 public:
  AliMpMotif(const TString& id,
             AliMpMotifType* motifType, 
             Double_t dx, Double_t dy);
  AliMpMotif();
  virtual ~AliMpMotif();

  // Access methods
  virtual Int_t    GetNofPadDimensions() const;
  virtual Double_t GetPadDimensionX(Int_t /*i*/ = 0) const;
  virtual Double_t GetPadDimensionY(Int_t /*i*/ = 0) const;

  virtual void GetPadDimensionsByIndices(MpPair_t localIndices,
                   Double_t& dx, Double_t& dy) const;
  virtual void GetPadDimensionsByIndices(Int_t ixLocal, Int_t iyLocal,
                   Double_t& dx, Double_t& dy) const;

  // Geometry
  virtual Double_t DimensionX() const;
  virtual Double_t DimensionY() const;

  // Other methods
  virtual void PadPositionLocal(MpPair_t localIndices,
                      Double_t& posx, Double_t& posy  ) const;
  virtual void PadPositionLocal(Int_t ixLocal, Int_t iyLocal,
                      Double_t& posx, Double_t& posy  ) const;

  virtual MpPair_t PadIndicesLocal(
                      Double_t localPosX, Double_t localPosY) const;

 private:
  // methods

  // data members 
  Double_t  fPadDimensionX; ///< pad dimensions (halflength x, y size) 
  Double_t  fPadDimensionY; ///< pad dimensions (halflength x, y size) 

  ClassDef(AliMpMotif,2) // A motif with its ID
};

// inline functions

                            /// Return 1 as the number of pad dimensions 
inline Int_t    AliMpMotif::GetNofPadDimensions() const 
{ return 1; }

                            /// Return the pad x dimension
inline Double_t AliMpMotif::GetPadDimensionX(Int_t /*i*/) const 
{ return fPadDimensionX; }  

                            /// Return the pad y dimension
inline Double_t AliMpMotif::GetPadDimensionY(Int_t /*i*/) const 
{ return fPadDimensionY; }  

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