]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PMD/AliPMDUtility.h
update
[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 - 
14 //
15 #include "Rtypes.h"
16
17
18 class AliPMDUtility:public TObject
19 {
20  public:
21   AliPMDUtility();
22   AliPMDUtility(Float_t px, Float_t py, Float_t pz);
23   AliPMDUtility(const AliPMDUtility &pmdutil);  // copy constructor
24   AliPMDUtility &operator=(const AliPMDUtility &pmdutil); // assignment op
25   virtual ~AliPMDUtility();
26
27
28   void RectGeomCellPos(Int_t ism, Int_t xpad, Int_t ypad,
29                        Float_t & xpos, Float_t & ypos);
30   void RectGeomCellPos(Int_t ism, Float_t xpad, Float_t ypad,
31                        Float_t & xpos, Float_t & ypos);
32
33   void RectGeomCellPos(Int_t ism, Float_t xpad, Float_t ypad,
34                        Float_t & xpos, Float_t & ypos, Float_t & zpos);
35
36   void GenerateBoundaryPoints(Int_t ism, Float_t &x1ism, Float_t &y1ism
37                               , Float_t &x2ism, Float_t &y2ism);
38
39   void GetEtaIndexXY(Int_t smn, Int_t row, Int_t col, 
40                      Float_t &xp, Float_t &yp, Double_t &eta, Int_t &etaindex);
41
42   void DrawPMDModule(Int_t idet); 
43
44   void ApplyVertexCorrection(Float_t vertex[], 
45                              Float_t xpos, Float_t ypos, Float_t zpos);
46   void ApplyAlignment(Double_t sectr[][3]);
47   void SetPxPyPz(Float_t px, Float_t py, Float_t pz);
48   void SetXYZ(Float_t xpos, Float_t ypos, Float_t zpos);
49   void SetWriteModule(Int_t wrmod);
50   void CalculateEta();
51   void CalculatePhi();
52   void CalculateEtaPhi();
53   void CalculateXY(Float_t eta, Float_t phi, Float_t zpos);
54   Float_t GetTheta() const;
55   Float_t GetEta() const;
56   Float_t GetPhi() const;
57   Float_t GetX() const;
58   Float_t GetY() const;
59   Float_t GetZ() const;
60   
61  protected:
62
63   Float_t fPx;     // Momentum along x
64   Float_t fPy;     // Momentum along y
65   Float_t fPz;     // Momentum along z
66   Float_t fTheta;  // Polar angle in radian
67   Float_t fEta;    // Pseudo-rapidity
68   Float_t fPhi;    // Azimuthal angle in radian
69   Float_t fSecTr[4][3]; // Sector alignement (translation)
70   Int_t   fWriteModule;  // Module number writing 
71   
72   ClassDef(AliPMDUtility,8) // Utility class for the detector set:PMD
73 };
74
75 #endif