+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
// $Id$
-// Category: motif
-//
-// Class AliMpMotifSpecial
-// -----------------------
-// Class that defines a motif with its unique ID
-// and the motif type.
-//
-// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
+// $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 <TObject.h>
-#include <TString.h>
-#include <TVector2.h>
-
-#include "AliMpMotifTypes.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();
+ 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