alignment data included to calculate the final position
[u/mrichter/AliRoot.git] / PMD / AliPMDUtility.h
1 #ifndef ALIPMDUTILITY_H
2 #define ALIPMDUTILITY_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5 //-----------------------------------------------------//
6 //                                                     //
7 //                                                     //
8 //  Date   : August 05 2003                            //
9 //                                                     //
10 //  Utility class for PMD                              //
11 //                                                     //
12 //-----------------------------------------------------//
13 // Author - B.K. Nandi
14 //
15 #include "Rtypes.h"
16
17 class TClonesArray;
18
19 class AliPMDUtility:public TObject
20 {
21  public:
22   AliPMDUtility();
23   AliPMDUtility(Float_t px, Float_t py, Float_t pz);
24   AliPMDUtility(const AliPMDUtility &pmdutil);  // copy constructor
25   AliPMDUtility &operator=(const AliPMDUtility &pmdutil); // assignment op
26   virtual ~AliPMDUtility();
27
28
29   void RectGeomCellPos(Int_t ism, Int_t xpad, Int_t ypad,
30                        Float_t & xpos, Float_t & ypos);
31   void RectGeomCellPos(Int_t ism, Float_t xpad, Float_t ypad,
32                        Float_t & xpos, Float_t & ypos);
33
34   void RectGeomCellPos(Int_t ism, Float_t xpad, Float_t ypad,
35                        Float_t & xpos, Float_t & ypos, Float_t & zpos);
36
37   void GenerateBoundaryPoints(Int_t ism, Float_t &x1ism, Float_t &y1ism
38                               , Float_t &x2ism, Float_t &y2ism);
39
40   void DrawPMDModule(Int_t idet); 
41
42   void ApplyVertexCorrection(Float_t vertex[], 
43                              Float_t xpos, Float_t ypos, Float_t zpos);
44   void ApplyAlignment();
45   void SetPxPyPz(Float_t px, Float_t py, Float_t pz);
46   void SetXYZ(Float_t xpos, Float_t ypos, Float_t zpos);
47   void SetWriteModule(Int_t wrmod);
48   void CalculateEta();
49   void CalculatePhi();
50   void CalculateEtaPhi();
51   void CalculateXY(Float_t eta, Float_t phi, Float_t zpos);
52   Float_t GetTheta() const;
53   Float_t GetEta() const;
54   Float_t GetPhi() const;
55   Float_t GetX() const;
56   Float_t GetY() const;
57   Float_t GetZ() const;
58
59   TClonesArray *GetAlignObj() const;
60
61
62   
63  protected:
64
65   TClonesArray *fAlObj;     // Alignable objects
66
67   Float_t fPx;     // Momentum along x
68   Float_t fPy;     // Momentum along y
69   Float_t fPz;     // Momentum along z
70   Float_t fTheta;  // Polar angle in radian
71   Float_t fEta;    // Pseudo-rapidity
72   Float_t fPhi;    // Azimuthal angle in radian
73   Float_t fSecTr[4][3]; // Sector alignement (translation)
74   Int_t   fWriteModule;  // Module number writing 
75   
76   ClassDef(AliPMDUtility,6) // Utility class for the detector set:PMD
77 };
78
79 #endif