]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PMD/AliPMDUtility.cxx
PMD module
[u/mrichter/AliRoot.git] / PMD / AliPMDUtility.cxx
diff --git a/PMD/AliPMDUtility.cxx b/PMD/AliPMDUtility.cxx
deleted file mode 100644 (file)
index 86b8925..0000000
+++ /dev/null
@@ -1,791 +0,0 @@
-/***************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-//-----------------------------------------------------//
-//                                                     //
-//                                                     //
-//  Date   : August 05 2003                            //
-//                                                     //
-//  Utility code for ALICE-PMD                         //
-//                                                     //
-//-----------------------------------------------------//
-
-#include "Riostream.h"
-#include "TMath.h"
-#include "TText.h"
-#include "TLine.h"
-
-#include <stdio.h>
-#include <math.h>
-
-#include "AliPMDUtility.h"
-
-ClassImp(AliPMDUtility)
-
-AliPMDUtility::AliPMDUtility():
-  fPx(0.),
-  fPy(0.),
-  fPz(0.),
-  fTheta(0.),
-  fEta(0.),
-  fPhi(0.),
-  fWriteModule(1)
-{
-  // Default constructor
-  for (Int_t i = 0; i < 4; i++)
-    {
-      for (Int_t j = 0; j < 3; j++)
-       {
-         fSecTr[i][j] = 0.;
-       }
-    }
-
-}
-
-AliPMDUtility::AliPMDUtility(Float_t px, Float_t py, Float_t pz):
-  fPx(px),
-  fPy(py),
-  fPz(pz),
-  fTheta(0.),
-  fEta(0.),
-  fPhi(0.),
-  fWriteModule(1)
-{
-  // Constructor
-  for (Int_t i = 0; i < 4; i++)
-    {
-      for (Int_t j = 0; j < 3; j++)
-       {
-         fSecTr[i][j] = 0.;
-       }
-    }
-
-}
-AliPMDUtility::AliPMDUtility(const AliPMDUtility &pmdutil):
-  TObject(pmdutil),
-  fPx(pmdutil.fPx),
-  fPy(pmdutil.fPy),
-  fPz(pmdutil.fPz),
-  fTheta(pmdutil.fTheta),
-  fEta(pmdutil.fEta),
-  fPhi(pmdutil.fPhi),
-  fWriteModule(pmdutil.fWriteModule)
-{
-  // copy constructor
-    for (Int_t i = 0; i < 4; i++)
-    {
-      for (Int_t j = 0; j < 3; j++)
-       {
-         fSecTr[i][j] = pmdutil.fSecTr[i][j];
-       }
-    }
-
-}
-AliPMDUtility & AliPMDUtility::operator=(const AliPMDUtility &pmdutil)
-{
-  // assignment operator
-  if(this != &pmdutil)
-    {
-      fPx = pmdutil.fPx;
-      fPy = pmdutil.fPy;
-      fPz = pmdutil.fPz;
-      fTheta = pmdutil.fTheta;
-      fEta = pmdutil.fEta;
-      fPhi = pmdutil.fPhi;
-      fWriteModule = pmdutil.fWriteModule;
-      for (Int_t i = 0; i < 4; i++)
-       {
-         for (Int_t j = 0; j < 3; j++)
-           {
-             fSecTr[i][j] = pmdutil.fSecTr[i][j];
-           }
-       }
-
-    }
-  return *this;
-}
-AliPMDUtility::~AliPMDUtility()
-{
-  // Default destructor
-}
-
-void AliPMDUtility::RectGeomCellPos(Int_t ism, Int_t xpad, Int_t ypad, Float_t &xpos, Float_t &ypos)
-{
-  // This routine finds the cell eta,phi for the new PMD rectangular 
-  // geometry in ALICE
-  // Authors : Bedanga Mohanty and Dipak Mishra - 29.4.2003
-  // modified by B. K. Nandi for change of coordinate sys
-  //
-  // SMA  ---> Supermodule Type A           ( SM - 0)
-  // SMAR ---> Supermodule Type A ROTATED   ( SM - 1)
-  // SMB  ---> Supermodule Type B           ( SM - 2)
-  // SMBR ---> Supermodule Type B ROTATED   ( SM - 3)
-  //
-  // ism   : Serial module number from 0 to 23 for each plane
-
-  // Corner positions (x,y) of the 24 unit moudles in ALICE PMD
-
-  double xcorner[24] =
-    {
-      74.8833,  53.0045, 31.1255,    //Type-A
-      74.8833,  53.0045, 31.1255,    //Type-A
-      -74.8833, -53.0044, -31.1255,  //Type-AR
-      -74.8833, -53.0044, -31.1255,  //Type-AR
-      8.9165, -33.7471,            //Type-B
-      8.9165, -33.7471,            //Type-B
-      8.9165, -33.7471,            //Type-B
-      -8.9165, 33.7471,            //Type-BR
-      -8.9165, 33.7471,            //Type-BR
-      -8.9165, 33.7471,            //Type-BR
-    };
-
-  
-  double ycorner[24] =
-    {
-      86.225,  86.225,  86.225,      //Type-A
-      37.075,  37.075,  37.075,      //Type-A
-      -86.225, -86.225, -86.225,     //Type-AR
-      -37.075, -37.075, -37.075,     //Type-AR
-      86.225,  86.225,               //Type-B
-      61.075,  61.075,               //Type-B
-      35.925,  35.925,               //Type-B
-      -86.225, -86.225,              //Type-BR
-      -61.075, -61.075,              //Type-BR
-      -35.925, -35.925               //Type-BR
-    };
-
-  
-  const Float_t kSqroot3      = 1.73205;  // sqrt(3.);
-  const Float_t kCellRadius   = 0.25;
-  
-  //
-  //Every even row of cells is shifted and placed
-  //in geant so this condition
-  //
-  Float_t cellRadius = 0.25;
-  Float_t shift = 0.0;
-  if(xpad%2 == 0)
-    {
-      shift = -cellRadius/2.0;
-    }
-  else
-    {
-      shift = 0.0;
-    }
-
-
-  if(ism < 6)
-    {
-      ypos = ycorner[ism] - (Float_t) xpad*kCellRadius*2.0 + shift;
-      xpos = xcorner[ism] - (Float_t) ypad*kSqroot3*kCellRadius;
-    }
-  else if(ism >=6 && ism < 12)
-    {
-      ypos = ycorner[ism] + (Float_t) xpad*kCellRadius*2.0 + shift;
-      xpos = xcorner[ism] + (Float_t) ypad*kSqroot3*kCellRadius;
-    }
-  else if(ism >= 12 && ism < 18)
-    {
-      ypos = ycorner[ism] - (Float_t) xpad*kCellRadius*2.0 + shift;
-      xpos = xcorner[ism] - (Float_t) ypad*kSqroot3*kCellRadius;
-    }
-  else if(ism >= 18 && ism < 24)
-    {
-      ypos = ycorner[ism] + (Float_t) xpad*kCellRadius*2.0 + shift;
-      xpos = xcorner[ism] + (Float_t) ypad*kSqroot3*kCellRadius;
-    }
-  // Apply the alignment here to the x, y values
-  if(ism < 6)
-    {
-      xpos += fSecTr[0][0];
-      ypos += fSecTr[0][1];
-    }
-  else if(ism >= 6 && ism < 12)
-    {
-      xpos += fSecTr[1][0];
-      ypos += fSecTr[1][1];
-    }
-  else if(ism >=12 && ism < 18)
-    {
-      xpos += fSecTr[2][0];
-      ypos += fSecTr[2][1];
-    }
-  else if(ism >= 18 && ism < 24)
-    {
-      xpos += fSecTr[3][0];
-      ypos += fSecTr[3][1];
-    }
-
-}
-// ---------------------------------------------------------- 
-void AliPMDUtility::RectGeomCellPos(Int_t ism, Float_t xpad, Float_t ypad, Float_t &xpos, Float_t &ypos)
-{
-  // If the xpad and ypad inputs are float, then 0.5 is added to it
-  // to find the layer which is shifted.
-  // This routine finds the cell eta,phi for the new PMD rectangular 
-  // geometry in ALICE
-  // Authors : Bedanga Mohanty and Dipak Mishra - 29.4.2003
-  // modified by B. K. Nnadi for change of coordinate sys
-  //
-  // SMA  ---> Supermodule Type A           ( SM - 0)
-  // SMAR ---> Supermodule Type A ROTATED   ( SM - 1)
-  // SMB  ---> Supermodule Type B           ( SM - 2)
-  // SMBR ---> Supermodule Type B ROTATED   ( SM - 3)
-  //
-  // ism   : Serial Module number from 0 to 23 for each plane
-
-  // Corner positions (x,y) of the 24 unit moudles in ALICE PMD
-
-  double xcorner[24] =
-    {
-      74.8833,  53.0045, 31.1255,    //Type-A
-      74.8833,  53.0045, 31.1255,    //Type-A
-      -74.8833, -53.0044, -31.1255,  //Type-AR
-      -74.8833, -53.0044, -31.1255,  //Type-AR
-      8.9165, -33.7471,            //Type-B
-      8.9165, -33.7471,            //Type-B
-      8.9165, -33.7471,            //Type-B
-      -8.9165, 33.7471,            //Type-BR
-      -8.9165, 33.7471,            //Type-BR
-      -8.9165, 33.7471,            //Type-BR
-    };
-
-  
-
-  double ycorner[24] =
-    {
-      86.225,  86.225,  86.225,      //Type-A
-      37.075,  37.075,  37.075,      //Type-A
-      -86.225, -86.225, -86.225,     //Type-AR
-      -37.075, -37.075, -37.075,     //Type-AR
-      86.225,  86.225,               //Type-B
-      61.075,  61.075,               //Type-B
-      35.925,  35.925,               //Type-B
-      -86.225, -86.225,              //Type-BR
-      -61.075, -61.075,              //Type-BR
-      -35.925, -35.925               //Type-BR
-    };
-
-
-  const Float_t kSqroot3    = 1.73205;  // sqrt(3.);
-  const Float_t kCellRadius = 0.25;
-  
-  //
-  //Every even row of cells is shifted and placed
-  //in geant so this condition
-  //
-  Float_t cellRadius = 0.25;
-  Float_t shift = 0.0;
-  Int_t iirow = (Int_t) (xpad+0.5);
-  if(iirow%2 == 0)
-    {
-      shift = -cellRadius/2.0;
-    }
-  else
-    {
-      shift = 0.0;
-    }
-
-  if(ism < 6)
-    {
-      ypos = ycorner[ism] - xpad*kCellRadius*2.0 + shift;
-      xpos = xcorner[ism] - ypad*kSqroot3*kCellRadius;
-    }
-  else if(ism >=6 && ism < 12)
-    {
-      ypos = ycorner[ism] + xpad*kCellRadius*2.0 + shift;
-      xpos = xcorner[ism] + ypad*kSqroot3*kCellRadius;
-    }
-  else if(ism >= 12 && ism < 18)
-    {
-      ypos = ycorner[ism] - xpad*kCellRadius*2.0 + shift;
-      xpos = xcorner[ism] - ypad*kSqroot3*kCellRadius;
-    }
-  else if(ism >= 18 && ism < 24)
-    {
-      ypos = ycorner[ism] + xpad*kCellRadius*2.0 + shift;
-      xpos = xcorner[ism] + ypad*kSqroot3*kCellRadius;
-    }
-
-  // Apply the alignment here to the x, y values
-  if(ism < 6)
-    {
-      xpos += fSecTr[0][0];
-      ypos += fSecTr[0][1];
-    }
-  else if(ism >= 6 && ism < 12)
-    {
-      xpos += fSecTr[1][0];
-      ypos += fSecTr[1][1];
-    }
-  else if(ism >=12 && ism < 18)
-    {
-      xpos += fSecTr[2][0];
-      ypos += fSecTr[2][1];
-    }
-  else if(ism >= 18 && ism < 24)
-    {
-      xpos += fSecTr[3][0];
-      ypos += fSecTr[3][1];
-    }
-
-}
-
-// -------------------------------------------------------- //
-
-void AliPMDUtility::RectGeomCellPos(Int_t ism, Float_t xpad,
-                                   Float_t ypad, Float_t &xpos,
-                                   Float_t &ypos, Float_t & zpos)
-{
-  // If the xpad and ypad inputs are float, then 0.5 is added to it
-  // to find the layer which is shifted.
-  // This routine finds the cell eta,phi for the new PMD rectangular 
-  // geometry in ALICE
-  // Authors : Bedanga Mohanty and Dipak Mishra - 29.4.2003
-  // modified by B. K. Nnadi for change of coordinate sys
-  //
-  // SMA  ---> Supermodule Type A           ( SM - 0)
-  // SMAR ---> Supermodule Type A ROTATED   ( SM - 1)
-  // SMB  ---> Supermodule Type B           ( SM - 2)
-  // SMBR ---> Supermodule Type B ROTATED   ( SM - 3)
-  //
-  // ism   : Serial Module number from 0 to 23 for each plane
-
-  // Corner positions (x,y) of the 24 unit moudles in ALICE PMD
-
-  double xcorner[24] =
-    {
-      74.8833,  53.0045, 31.1255,    //Type-A
-      74.8833,  53.0045, 31.1255,    //Type-A
-      -74.8833, -53.0044, -31.1255,  //Type-AR
-      -74.8833, -53.0044, -31.1255,  //Type-AR
-      8.9165, -33.7471,            //Type-B
-      8.9165, -33.7471,            //Type-B
-      8.9165, -33.7471,            //Type-B
-      -8.9165, 33.7471,            //Type-BR
-      -8.9165, 33.7471,            //Type-BR
-      -8.9165, 33.7471,            //Type-BR
-    };
-
-  
-
-  double ycorner[24] =
-    {
-      86.225,  86.225,  86.225,      //Type-A
-      37.075,  37.075,  37.075,      //Type-A
-      -86.225, -86.225, -86.225,     //Type-AR
-      -37.075, -37.075, -37.075,     //Type-AR
-      86.225,  86.225,               //Type-B
-      61.075,  61.075,               //Type-B
-      35.925,  35.925,               //Type-B
-      -86.225, -86.225,              //Type-BR
-      -61.075, -61.075,              //Type-BR
-      -35.925, -35.925               //Type-BR
-    };
-
-
-  const Float_t kSqroot3    = 1.73205;  // sqrt(3.);
-  const Float_t kCellRadius = 0.25;
-  
-  //
-  //Every even row of cells is shifted and placed
-  //in geant so this condition
-  //
-  Float_t cellRadius = 0.25;
-  Float_t shift = 0.0;
-  Int_t iirow = (Int_t) (xpad+0.5);
-  if(iirow%2 == 0)
-    {
-      shift = -cellRadius/2.0;
-    }
-  else
-    {
-      shift = 0.0;
-    }
-
-  if(ism < 6)
-    {
-      ypos = ycorner[ism] - xpad*kCellRadius*2.0 + shift;
-      xpos = xcorner[ism] - ypad*kSqroot3*kCellRadius;
-    }
-  else if(ism >=6 && ism < 12)
-    {
-      ypos = ycorner[ism] + xpad*kCellRadius*2.0 + shift;
-      xpos = xcorner[ism] + ypad*kSqroot3*kCellRadius;
-    }
-  else if(ism >= 12 && ism < 18)
-    {
-      ypos = ycorner[ism] - xpad*kCellRadius*2.0 + shift;
-      xpos = xcorner[ism] - ypad*kSqroot3*kCellRadius;
-    }
-  else if(ism >= 18 && ism < 24)
-    {
-      ypos = ycorner[ism] + xpad*kCellRadius*2.0 + shift;
-      xpos = xcorner[ism] + ypad*kSqroot3*kCellRadius;
-    }
-
-  // Apply the alignment here to the x, y, and z values
-  if(ism < 6)
-    {
-      xpos += fSecTr[0][0];
-      ypos += fSecTr[0][1];
-      zpos += fSecTr[0][2];
-    }
-  else if(ism >= 6 && ism < 12)
-    {
-      xpos += fSecTr[1][0];
-      ypos += fSecTr[1][1];
-      zpos += fSecTr[1][2];
-    }
-  else if(ism >=12 && ism < 18)
-    {
-      xpos += fSecTr[2][0];
-      ypos += fSecTr[2][1];
-      zpos += fSecTr[2][2];
-    }
-  else if(ism >= 18 && ism < 24)
-    {
-      xpos += fSecTr[3][0];
-      ypos += fSecTr[3][1];
-      zpos += fSecTr[3][2];
-    }
-
-
-
-}
-// -------------------------------------------------------- //
-
-void AliPMDUtility::GenerateBoundaryPoints(Int_t ism, Float_t &x1ism, 
-                                          Float_t &y1ism, Float_t &x2ism,
-                                          Float_t &y2ism)
-{
-  // Generate bounding-box.
-
-
-    Float_t xism = 0, yism = 0;
-    Float_t dxism = 0., dyism = 0.;
-
-    const Float_t kRad     = 0.25;
-    const Float_t kSqRoot3 = 1.732050808;
-    const Float_t kDia     = 0.50;
-
-
-  const Double_t kXcorner[24] =
-    {
-      74.8833,  53.0045, 31.1255,    //Type-A
-      74.8833,  53.0045, 31.1255,    //Type-A
-      -74.8833, -53.0044, -31.1255,  //Type-AR
-      -74.8833, -53.0044, -31.1255,  //Type-AR
-      8.9165, -33.7471,            //Type-B
-      8.9165, -33.7471,            //Type-B
-      8.9165, -33.7471,            //Type-B
-      -8.9165, 33.7471,            //Type-BR
-      -8.9165, 33.7471,            //Type-BR
-      -8.9165, 33.7471,            //Type-BR
-    };
-
-
-  const Double_t kYcorner[24] =
-    {
-      86.225,  86.225,  86.225,      //Type-A
-      37.075,  37.075,  37.075,      //Type-A
-      -86.225, -86.225, -86.225,     //Type-AR
-      -37.075, -37.075, -37.075,     //Type-AR
-      86.225,  86.225,               //Type-B
-      61.075,  61.075,               //Type-B
-      35.925,  35.925,               //Type-B
-      -86.225, -86.225,              //Type-BR
-      -61.075, -61.075,              //Type-BR
-      -35.925, -35.925               //Type-BR
-    };
-
-
-  if (ism > 23) ism -= 24;
-
-
-  if (ism < 6)
-    {
-      xism  = kXcorner[ism] + kRad;
-      yism  = kYcorner[ism] + kRad;
-      dxism = -kRad*kSqRoot3*48.;
-      dyism = -kDia*96. - kRad;
-  }
-  if (ism >= 6 && ism < 12)
-    {
-      xism  = kXcorner[ism] - kRad;
-      yism  = kYcorner[ism] - kRad;
-      dxism = kRad*kSqRoot3*48.;
-      dyism = kDia*96. + kRad;
-  }
-  if (ism >= 12 && ism < 18)
-    {
-      xism  = kXcorner[ism] + kRad;
-      yism  = kYcorner[ism] + kRad;
-      dxism = -kRad*kSqRoot3*96.;
-      dyism = -kDia*48. - kRad;
-  }
-  if (ism >= 18 && ism < 24)
-    {
-      xism  = kXcorner[ism] - kRad;
-      yism  = kYcorner[ism] - kRad;
-      dxism = kRad*kSqRoot3*96.;
-      dyism = kDia*48. + kRad;
-  }
-
-  x1ism = xism;
-  x2ism = xism + dxism;
-  y1ism = yism;
-  y2ism = yism + dyism;
-
-}
-// ------------------------------------------------------------------- //
-
-void AliPMDUtility::DrawPMDModule(Int_t idet)
-{
-
-    Float_t x1ism = 0., x2ism = 0., y1ism = 0., y2ism = 0.;
-    Float_t deltaX = 0., deltaY = 0.;
-    
-    //TH2F *h2 = new TH2F("h2","Y vs. X",200,-100.,100.,200,-100.,100.);
-    //h2->Draw();
-
-    TLine t;
-    t.SetLineColor(2);
-
-    TText tt;
-    tt.SetTextColor(4);
-
-    Char_t smnumber[10];
-
-    for(Int_t ism=0; ism < 24; ism++)
-    {
-       GenerateBoundaryPoints(ism, x1ism, y1ism, x2ism, y2ism);
-       deltaX = (x2ism - x1ism)/2.;
-       deltaY = (y2ism - y1ism)/2.;
-       if (fWriteModule == 1)
-       {
-         if(idet == 0)
-           {
-             snprintf(smnumber,10,"%d",ism);
-           }
-         else if (idet == 1)
-           {
-             snprintf(smnumber,10,"%d",24+ism);
-           }
-           tt.DrawText(x1ism+deltaX,y1ism+deltaY,smnumber);
-       }
-       t.DrawLine(x1ism, y1ism, x1ism, y2ism);
-       t.DrawLine(x1ism, y1ism, x2ism, y1ism);
-       t.DrawLine(x2ism, y1ism, x2ism, y2ism);
-       t.DrawLine(x1ism, y2ism, x2ism, y2ism);
-    }
-
-}
-
-// ------------------------------------------------------------------- //
-
-
-void AliPMDUtility::ApplyVertexCorrection(Float_t vertex[], Float_t xpos,
-                                         Float_t ypos, Float_t zpos)
-{
-  // Not implemented
-  fPx = xpos - vertex[0];
-  fPy = ypos - vertex[1];
-  fPz = zpos - vertex[2];
-}
-void AliPMDUtility::ApplyAlignment(Double_t sectr[][3])
-{
-  // Get the alignment stuff here
-
-  for (Int_t isector=0; isector<4; isector++)
-    {
-      for(Int_t ixyz=0; ixyz < 3; ixyz++)
-       {
-         fSecTr[isector][ixyz] = (Float_t) sectr[isector][ixyz];
-       }
-    }
-}
-
-void AliPMDUtility::SetPxPyPz(Float_t px, Float_t py, Float_t pz)
-{
-  fPx = px;
-  fPy = py;
-  fPz = pz;
-}
-
-void AliPMDUtility::SetXYZ(Float_t xpos, Float_t ypos, Float_t zpos)
-{
-  fPx = xpos;
-  fPy = ypos;
-  fPz = zpos;
-}
-void AliPMDUtility::SetWriteModule(Int_t wrmod)
-{
-    fWriteModule = wrmod;
-}
-void AliPMDUtility::CalculateEta()
-{
-  Float_t rpxpy  = TMath::Sqrt(fPx*fPx + fPy*fPy);
-  Float_t theta  = TMath::ATan2(rpxpy,fPz);
-  Float_t eta    = -TMath::Log(TMath::Tan(0.5*theta));
-  fTheta = theta;
-  fEta   = eta;
-}
-void AliPMDUtility::CalculatePhi()
-{
-  Float_t pybypx = 0., phi = 0., phi1 = 0.;
-
-  if(fPx==0)
-    {
-      if(fPy>0) phi = 90.;
-      if(fPy<0) phi = 270.;
-    }
-  if(fPx != 0)
-    {
-      pybypx = fPy/fPx;
-      if(pybypx < 0) pybypx = - pybypx;
-      phi1 = TMath::ATan(pybypx)*180./3.14159;
-
-      if(fPx > 0 && fPy > 0) phi = phi1;        // 1st Quadrant
-      if(fPx < 0 && fPy > 0) phi = 180 - phi1;  // 2nd Quadrant
-      if(fPx < 0 && fPy < 0) phi = 180 + phi1;  // 3rd Quadrant
-      if(fPx > 0 && fPy < 0) phi = 360 - phi1;  // 4th Quadrant
-
-    }
-  phi = phi*3.14159/180.;
-
-  fPhi = phi;
-
-}
-void AliPMDUtility::CalculateEtaPhi()
-{
-  Float_t pybypx = 0., phi = 0., phi1 = 0.;
-
-  Float_t rpxpy = TMath::Sqrt(fPx*fPx + fPy*fPy);
-  Float_t theta = TMath::ATan2(rpxpy,fPz);
-  Float_t eta   = -TMath::Log(TMath::Tan(0.5*theta));
-  
-  if(fPx == 0)
-    {
-      if(fPy>0) phi = 90.;
-      if(fPy<0) phi = 270.;
-    }
-  if(fPx != 0)
-    {
-      pybypx = fPy/fPx;
-      if(pybypx < 0) pybypx = - pybypx;
-      phi1 = TMath::ATan(pybypx)*180./3.14159;
-      if(fPx > 0 && fPy > 0) phi = phi1;        // 1st Quadrant
-      if(fPx < 0 && fPy > 0) phi = 180 - phi1;  // 2nd Quadrant
-      if(fPx < 0 && fPy < 0) phi = 180 + phi1;  // 3rd Quadrant
-      if(fPx > 0 && fPy < 0) phi = 360 - phi1;  // 4th Quadrant
-
-    }
-  phi = phi*3.14159/180.;
-
-  fTheta = theta;
-  fEta   = eta;
-  fPhi   = phi;
-}
-void AliPMDUtility::CalculateXY(Float_t eta, Float_t phi, Float_t zpos)
-{
-  // Not implemented
-
-  //  eta   = -TMath::Log(TMath::Tan(0.5*theta));
-
-  Float_t xpos = 0., ypos = 0.;
-
-  //  Float_t theta = 2.0*TMath::ATan(TMath::Log(-eta));
-
-  fEta = eta;
-  fPhi = phi;
-  fPx  = xpos;
-  fPy  = ypos;
-  fPz  = zpos;
-}
-
-void AliPMDUtility::GetEtaIndexXY(Int_t smn, Int_t row, Int_t col, Float_t &xp, Float_t &yp, Double_t &eta, Int_t &etaindex) {
-  // Takes smn, row, col
-  // Calculates x, y, eta and etabin into 10. 
-  // Use only in raw Data.
-
-  Float_t xx = 0., yy = 0.;
-  Int_t xpad = -1, ypad = -1;
-  
-  if(smn <12) {
-    xpad = col;
-    ypad = row;
-  }
-  else if(smn >=12 && smn < 24) {
-    xpad = row;
-    ypad = col;
-  }
-
-  RectGeomCellPos(smn,xpad,ypad,xx,yy); 
-  xp = xx;
-  yp = yy;
-
-  Float_t rpxpy  = TMath::Sqrt(xx*xx + yy*yy);
-  Float_t theta  = TMath::ATan2(rpxpy,365.0);
-  eta    = -TMath::Log(TMath::Tan(0.5*theta));
-
-  Int_t etaBin = -1;  
-
-  if( eta > 2.1 && eta < 2.3) etaBin = 0;
-  else if( eta > 2.3 && eta < 2.5) etaBin = 1;
-  else if( eta > 2.5 && eta < 2.7) etaBin = 2;
-  else if( eta > 2.7 && eta < 2.9) etaBin = 3;
-  else if( eta > 2.9 && eta < 3.1) etaBin = 4;
-  else if( eta > 3.1 && eta < 3.3) etaBin = 5;
-  else if( eta > 3.3 && eta < 3.5) etaBin = 6;
-  else if( eta > 3.5 && eta < 3.7) etaBin = 7;
-  else if( eta > 3.7 && eta < 3.9) etaBin = 8;
-  else if( eta > 3.9 && eta < 4.1) etaBin = 9;
-  else etaBin = 13;
-
-  etaindex = etaBin;
-
-
-}
-
-//_____________________________________________________
-
-Float_t AliPMDUtility::GetTheta() const
-{
-  return fTheta;
-}
-Float_t AliPMDUtility::GetEta() const
-{
-  return fEta;
-}
-Float_t AliPMDUtility::GetPhi() const
-{
-  return fPhi;
-}
-Float_t AliPMDUtility::GetX() const
-{
-  return fPx;
-}
-Float_t AliPMDUtility::GetY() const
-{
-  return fPy;
-}
-Float_t AliPMDUtility::GetZ() const
-{
-  return fPz;
-}
-//--------------------------------------------------------------------//