Line data Source code
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 18 : ClassDef(AliMpMotifSpecial,3) // A motif with its ID
78 : };
79 :
80 : #endif //ALI_MP_MOTIF_SPECIAL_H
|