]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/mapping/AliMpMotifSpecial.h
Patch for the pointer to AOD event
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpMotifSpecial.h
index 9675891db0e73d6ff16f9eece0cc62b099009580..8d45d32f56f7fe20763818a7bea3426470c83bc9 100755 (executable)
@@ -2,21 +2,22 @@
  * See cxx source for full Copyright notice                               */
 
 // $Id$
-// $MpId: AliMpMotifSpecial.h,v 1.6 2005/08/26 15:43:36 ivana Exp $
+// $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
 ///
-/// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
+/// \author David Guez, Ivana Hrivnacova; IPN Orsay
 
 #ifndef ALI_MP_MOTIF_SPECIAL_H
 #define ALI_MP_MOTIF_SPECIAL_H
 
-#include <TVector2.h>
-
-#include "AliMpMotifTypes.h"
 #include "AliMpVMotif.h"
+#include "AliMpExMap.h"
+
+#include <TObjArray.h>
+#include <TArrayD.h>
 
 class TString;
 
@@ -24,35 +25,56 @@ class AliMpMotifSpecial : public AliMpVMotif
 {
  public:
   AliMpMotifSpecial(const TString &id, AliMpMotifType *motifType);
-  AliMpMotifSpecial();
+  AliMpMotifSpecial(TRootIOCtor* ioCtor);
   virtual ~AliMpMotifSpecial();
 
   // Access methods
-  virtual TVector2 GetPadDimensions(const AliMpIntPair& localIndices) 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;
+
   virtual Int_t    GetNofPadDimensions() const;
-  virtual TVector2 GetPadDimensions(Int_t i) const;
+  virtual Double_t GetPadDimensionX(Int_t i) const;
+  virtual Double_t GetPadDimensionY(Int_t i) const;
 
   // Set methods
-  void SetPadDimensions(const AliMpIntPair& localIndices,
-                        const TVector2& dimensions);
+  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
-  virtual TVector2 Dimensions() const;
+  void CalculateDimensions();
+
+  virtual Double_t DimensionX() const;
+  virtual Double_t DimensionY() const;
 
   // Other methods
-  virtual TVector2     PadPositionLocal(const AliMpIntPair& localIndices) const;
-  virtual AliMpIntPair PadIndicesLocal(const TVector2& localPos) const;
+  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
-  Int_t VectorIndex(const AliMpIntPair& indices) const;
+  /// Not implemented
+  AliMpMotifSpecial();
+
+  // static data members
+  static Int_t fgkPadDimensions2Size; ///< The fPadDimensionsX/Y2 array size
 
   // data members
-  DimensionsMap fPadDimensionsVector;  // the vector of pad dimensions
-  DimensionsMap fPadDimensionsVector2; // the vector of different pad dimensions
+  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,1) // A motif with its ID
+  ClassDef(AliMpMotifSpecial,3) // A motif with its ID
 };
 
 #endif //ALI_MP_MOTIF_SPECIAL_H