]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/mapping/AliMpMotifSpecial.h
Updates to AddTask macro from Chris
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpMotifSpecial.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice                               */
3
4 // $Id$
5 // $MpId: AliMpMotifSpecial.h,v 1.11 2006/05/24 13:58:18 ivana Exp $
6
7 /// \ingroup motif
8 /// \class AliMpMotifSpecial
9 /// \brief A special motif with varying pad dimensions
10 ///
11 /// \author David Guez, Ivana Hrivnacova; IPN Orsay
12
13 #ifndef ALI_MP_MOTIF_SPECIAL_H
14 #define ALI_MP_MOTIF_SPECIAL_H
15
16 #include "AliMpVMotif.h"
17 #include "AliMpExMap.h"
18
19 #include <TObjArray.h>
20 #include <TArrayD.h>
21
22 class TString;
23
24 class AliMpMotifSpecial : public AliMpVMotif
25 {
26  public:
27   AliMpMotifSpecial(const TString &id, AliMpMotifType *motifType);
28   AliMpMotifSpecial(TRootIOCtor* ioCtor);
29   virtual ~AliMpMotifSpecial();
30
31   // Access methods
32   virtual void GetPadDimensionsByIndices(MpPair_t localIndices,
33                       Double_t& dx, Double_t& dy) const;
34   virtual void GetPadDimensionsByIndices(Int_t ixLocal, Int_t iyLocal,
35                       Double_t& dx, Double_t& dy) const;
36
37   virtual Int_t    GetNofPadDimensions() const;
38   virtual Double_t GetPadDimensionX(Int_t i) const;
39   virtual Double_t GetPadDimensionY(Int_t i) const;
40
41   // Set methods
42   void SetPadDimensions(MpPair_t localIndices, 
43                         Double_t dx, Double_t dy);
44   void SetPadDimensions(Int_t ixLocal, Int_t iyLocal, 
45                         Double_t dx, Double_t dy);
46   
47   // Geometry
48   void CalculateDimensions();
49
50   virtual Double_t DimensionX() const;
51   virtual Double_t DimensionY() const;
52
53   // Other methods
54   virtual void PadPositionLocal(MpPair_t localIndices,
55                       Double_t& posx, Double_t& posy  ) const;
56   virtual void PadPositionLocal(Int_t ixLocal, Int_t iyLocal,
57                       Double_t& posx, Double_t& posy  ) const;
58
59   virtual MpPair_t PadIndicesLocal(
60                       Double_t localPosX, Double_t localPosY) const;
61
62  private:
63   /// Not implemented
64   AliMpMotifSpecial();
65
66   // static data members
67   static Int_t fgkPadDimensions2Size; ///< The fPadDimensionsX/Y2 array size
68
69   // data members
70   Double_t     fDimensionX; ///< motif x dimensions
71   Double_t     fDimensionY; ///< motif y dimensions
72   AliMpExMap   fPadDimensionsVector;  ///< the vector of pad dimensions
73   Int_t        fNofPadDimensions2; ///< number of different pad dimensions
74   TArrayD      fPadDimensions2X; ///< the vector of x of different pad dimensions
75   TArrayD      fPadDimensions2Y; ///< the vector of y of different pad dimensions
76
77   ClassDef(AliMpMotifSpecial,3) // A motif with its ID
78 };
79
80 #endif //ALI_MP_MOTIF_SPECIAL_H