* See cxx source for full Copyright notice */
// $Id$
-// $MpId: AliMpMotifSpecial.h,v 1.8 2006/03/17 11:37:51 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 "AliMpContainers.h"
-
#include "AliMpVMotif.h"
-#ifdef WITH_ROOT
#include "AliMpExMap.h"
-#endif
-#include <TVector2.h>
-#ifdef WITH_ROOT
#include <TObjArray.h>
-#endif
-
-#ifdef WITH_STL
-#include <vector>
-#endif
+#include <TArrayD.h>
class TString;
class AliMpMotifSpecial : public AliMpVMotif
{
- public:
-#ifdef WITH_STL
- typedef std::vector< TVector2 > DimensionsMap;
- typedef std::vector< TVector2 > DimensionsMap2;
-#endif
-#ifdef WITH_ROOT
- typedef AliMpExMap DimensionsMap;
- typedef TObjArray DimensionsMap2;
-#endif
-
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();
- // data members
- DimensionsMap fPadDimensionsVector; // the vector of pad dimensions
- DimensionsMap2 fPadDimensionsVector2; // the vector of different pad dimensions
+ // static data members
+ static Int_t fgkPadDimensions2Size; ///< The fPadDimensionsX/Y2 array size
- ClassDef(AliMpMotifSpecial,1) // A motif with its ID
+ // 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