]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PMD/AliPMDUtility.h
update from Marco
[u/mrichter/AliRoot.git] / PMD / AliPMDUtility.h
index 70180b13e449e5866a97b557479b8b81c2d8be0c..f951057b209b28e050c535c57e1ca2eb7f766f3e 100644 (file)
@@ -1,5 +1,7 @@
-#ifndef PMDUtility_H
-#define PMDUtility_H
+#ifndef ALIPMDUTILITY_H
+#define ALIPMDUTILITY_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
 //-----------------------------------------------------//
 //                                                     //
 //                                                     //
 //  Utility class for PMD                              //
 //                                                     //
 //-----------------------------------------------------//
-
-#include <math.h>
-#include "Riostream.h"
-#include "TMath.h"
+// Author - 
+//
 #include "Rtypes.h"
 
-class AliPMDUtility
-{
-  
- protected:
-  Float_t fPx, fPy, fPz;
-  Float_t fTheta, fEta, fPhi;
 
+class AliPMDUtility:public TObject
+{
  public:
   AliPMDUtility();
-  AliPMDUtility(Float_t /* Px */, Float_t /* Py */, Float_t /* Pz */);
+  AliPMDUtility(Float_t px, Float_t py, Float_t pz);
+  AliPMDUtility(const AliPMDUtility &pmdutil);  // copy constructor
+  AliPMDUtility &operator=(const AliPMDUtility &pmdutil); // assignment op
   virtual ~AliPMDUtility();
 
-  void HexGeomCellPos(Int_t /* ism */, Int_t /* xpad */, Int_t /* ypad */,
-               Float_t & /* xpos */, Float_t & /* ypos */);
-  void RectGeomCellPos(Int_t /* ism */, Int_t /* ium */, 
-                      Int_t /* xpad */, Int_t /* ypad */,
-                      Float_t & /* xpos */, Float_t & /* ypos */);
-  void SetPxPyPz(Float_t /* Px */, Float_t /* Py */, Float_t /* Pz */);
-  void SetXYZ(Float_t /* xPos */, Float_t /* yPos */, Float_t /* zPos */);
+
+  void RectGeomCellPos(Int_t ism, Int_t xpad, Int_t ypad,
+                      Float_t & xpos, Float_t & ypos);
+  void RectGeomCellPos(Int_t ism, Float_t xpad, Float_t ypad,
+                      Float_t & xpos, Float_t & ypos);
+
+  void RectGeomCellPos(Int_t ism, Float_t xpad, Float_t ypad,
+                      Float_t & xpos, Float_t & ypos, Float_t & zpos);
+
+  void GenerateBoundaryPoints(Int_t ism, Float_t &x1ism, Float_t &y1ism
+                             , Float_t &x2ism, Float_t &y2ism);
+
+  void GetEtaIndexXY(Int_t smn, Int_t row, Int_t col, 
+                    Float_t &xp, Float_t &yp, Double_t &eta, Int_t &etaindex);
+
+  void DrawPMDModule(Int_t idet); 
+
+  void ApplyVertexCorrection(Float_t vertex[], 
+                            Float_t xpos, Float_t ypos, Float_t zpos);
+  void ApplyAlignment(Double_t sectr[][3]);
+  void SetPxPyPz(Float_t px, Float_t py, Float_t pz);
+  void SetXYZ(Float_t xpos, Float_t ypos, Float_t zpos);
+  void SetWriteModule(Int_t wrmod);
   void CalculateEta();
   void CalculatePhi();
   void CalculateEtaPhi();
+  void CalculateXY(Float_t eta, Float_t phi, Float_t zpos);
   Float_t GetTheta() const;
   Float_t GetEta() const;
   Float_t GetPhi() const;
+  Float_t GetX() const;
+  Float_t GetY() const;
+  Float_t GetZ() const;
+  
+ protected:
+
+  Float_t fPx;     // Momentum along x
+  Float_t fPy;     // Momentum along y
+  Float_t fPz;     // Momentum along z
+  Float_t fTheta;  // Polar angle in radian
+  Float_t fEta;    // Pseudo-rapidity
+  Float_t fPhi;    // Azimuthal angle in radian
+  Float_t fSecTr[4][3]; // Sector alignement (translation)
+  Int_t   fWriteModule;  // Module number writing 
   
-  ClassDef(AliPMDUtility,1)
+  ClassDef(AliPMDUtility,8) // Utility class for the detector set:PMD
 };
 
 #endif