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

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

/// \ingroup motif
/// \class AliMpMotifSpecial
/// \brief A special motif with varying pad dimensions
///
/// \author David Guez, Ivana Hrivnacova; IPN Orsay

#ifndef ALI_MP_MOTIF_SPECIAL_H
#define ALI_MP_MOTIF_SPECIAL_H

#include "AliMpVMotif.h"
#include "AliMpExMap.h"

#include <TObjArray.h>
#include <TArrayD.h>

class TString;

class AliMpMotifSpecial : public AliMpVMotif
{
 public:
  AliMpMotifSpecial(const TString &id, AliMpMotifType *motifType);
  AliMpMotifSpecial(TRootIOCtor* ioCtor);
  virtual ~AliMpMotifSpecial();

  // Access methods
  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;

  virtual Int_t    GetNofPadDimensions() const;
  virtual Double_t GetPadDimensionX(Int_t i) const;
  virtual Double_t GetPadDimensionY(Int_t i) const;

  // Set methods
  void SetPadDimensions(MpPair_t localIndices, 
                        Double_t dx, Double_t dy);
  void SetPadDimensions(Int_t ixLocal, Int_t iyLocal, 
                        Double_t dx, Double_t dy);
  
  // Geometry
  void CalculateDimensions();

  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:
  /// Not implemented
  AliMpMotifSpecial();

  // static data members
  static Int_t fgkPadDimensions2Size; ///< The fPadDimensionsX/Y2 array size

  // data members
  Double_t     fDimensionX; ///< motif x dimensions
  Double_t     fDimensionY; ///< motif y dimensions
  AliMpExMap   fPadDimensionsVector;  ///< the vector of pad dimensions
  Int_t        fNofPadDimensions2; ///< number of different pad dimensions
  TArrayD      fPadDimensions2X; ///< the vector of x of different pad dimensions
  TArrayD      fPadDimensions2Y; ///< the vector of y of different pad dimensions

  ClassDef(AliMpMotifSpecial,3) // A motif with its ID
};

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