ROOT logo
/***************************************************************************
 * 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;
}
//--------------------------------------------------------------------//
 AliPMDUtility.cxx:1
 AliPMDUtility.cxx:2
 AliPMDUtility.cxx:3
 AliPMDUtility.cxx:4
 AliPMDUtility.cxx:5
 AliPMDUtility.cxx:6
 AliPMDUtility.cxx:7
 AliPMDUtility.cxx:8
 AliPMDUtility.cxx:9
 AliPMDUtility.cxx:10
 AliPMDUtility.cxx:11
 AliPMDUtility.cxx:12
 AliPMDUtility.cxx:13
 AliPMDUtility.cxx:14
 AliPMDUtility.cxx:15
 AliPMDUtility.cxx:16
 AliPMDUtility.cxx:17
 AliPMDUtility.cxx:18
 AliPMDUtility.cxx:19
 AliPMDUtility.cxx:20
 AliPMDUtility.cxx:21
 AliPMDUtility.cxx:22
 AliPMDUtility.cxx:23
 AliPMDUtility.cxx:24
 AliPMDUtility.cxx:25
 AliPMDUtility.cxx:26
 AliPMDUtility.cxx:27
 AliPMDUtility.cxx:28
 AliPMDUtility.cxx:29
 AliPMDUtility.cxx:30
 AliPMDUtility.cxx:31
 AliPMDUtility.cxx:32
 AliPMDUtility.cxx:33
 AliPMDUtility.cxx:34
 AliPMDUtility.cxx:35
 AliPMDUtility.cxx:36
 AliPMDUtility.cxx:37
 AliPMDUtility.cxx:38
 AliPMDUtility.cxx:39
 AliPMDUtility.cxx:40
 AliPMDUtility.cxx:41
 AliPMDUtility.cxx:42
 AliPMDUtility.cxx:43
 AliPMDUtility.cxx:44
 AliPMDUtility.cxx:45
 AliPMDUtility.cxx:46
 AliPMDUtility.cxx:47
 AliPMDUtility.cxx:48
 AliPMDUtility.cxx:49
 AliPMDUtility.cxx:50
 AliPMDUtility.cxx:51
 AliPMDUtility.cxx:52
 AliPMDUtility.cxx:53
 AliPMDUtility.cxx:54
 AliPMDUtility.cxx:55
 AliPMDUtility.cxx:56
 AliPMDUtility.cxx:57
 AliPMDUtility.cxx:58
 AliPMDUtility.cxx:59
 AliPMDUtility.cxx:60
 AliPMDUtility.cxx:61
 AliPMDUtility.cxx:62
 AliPMDUtility.cxx:63
 AliPMDUtility.cxx:64
 AliPMDUtility.cxx:65
 AliPMDUtility.cxx:66
 AliPMDUtility.cxx:67
 AliPMDUtility.cxx:68
 AliPMDUtility.cxx:69
 AliPMDUtility.cxx:70
 AliPMDUtility.cxx:71
 AliPMDUtility.cxx:72
 AliPMDUtility.cxx:73
 AliPMDUtility.cxx:74
 AliPMDUtility.cxx:75
 AliPMDUtility.cxx:76
 AliPMDUtility.cxx:77
 AliPMDUtility.cxx:78
 AliPMDUtility.cxx:79
 AliPMDUtility.cxx:80
 AliPMDUtility.cxx:81
 AliPMDUtility.cxx:82
 AliPMDUtility.cxx:83
 AliPMDUtility.cxx:84
 AliPMDUtility.cxx:85
 AliPMDUtility.cxx:86
 AliPMDUtility.cxx:87
 AliPMDUtility.cxx:88
 AliPMDUtility.cxx:89
 AliPMDUtility.cxx:90
 AliPMDUtility.cxx:91
 AliPMDUtility.cxx:92
 AliPMDUtility.cxx:93
 AliPMDUtility.cxx:94
 AliPMDUtility.cxx:95
 AliPMDUtility.cxx:96
 AliPMDUtility.cxx:97
 AliPMDUtility.cxx:98
 AliPMDUtility.cxx:99
 AliPMDUtility.cxx:100
 AliPMDUtility.cxx:101
 AliPMDUtility.cxx:102
 AliPMDUtility.cxx:103
 AliPMDUtility.cxx:104
 AliPMDUtility.cxx:105
 AliPMDUtility.cxx:106
 AliPMDUtility.cxx:107
 AliPMDUtility.cxx:108
 AliPMDUtility.cxx:109
 AliPMDUtility.cxx:110
 AliPMDUtility.cxx:111
 AliPMDUtility.cxx:112
 AliPMDUtility.cxx:113
 AliPMDUtility.cxx:114
 AliPMDUtility.cxx:115
 AliPMDUtility.cxx:116
 AliPMDUtility.cxx:117
 AliPMDUtility.cxx:118
 AliPMDUtility.cxx:119
 AliPMDUtility.cxx:120
 AliPMDUtility.cxx:121
 AliPMDUtility.cxx:122
 AliPMDUtility.cxx:123
 AliPMDUtility.cxx:124
 AliPMDUtility.cxx:125
 AliPMDUtility.cxx:126
 AliPMDUtility.cxx:127
 AliPMDUtility.cxx:128
 AliPMDUtility.cxx:129
 AliPMDUtility.cxx:130
 AliPMDUtility.cxx:131
 AliPMDUtility.cxx:132
 AliPMDUtility.cxx:133
 AliPMDUtility.cxx:134
 AliPMDUtility.cxx:135
 AliPMDUtility.cxx:136
 AliPMDUtility.cxx:137
 AliPMDUtility.cxx:138
 AliPMDUtility.cxx:139
 AliPMDUtility.cxx:140
 AliPMDUtility.cxx:141
 AliPMDUtility.cxx:142
 AliPMDUtility.cxx:143
 AliPMDUtility.cxx:144
 AliPMDUtility.cxx:145
 AliPMDUtility.cxx:146
 AliPMDUtility.cxx:147
 AliPMDUtility.cxx:148
 AliPMDUtility.cxx:149
 AliPMDUtility.cxx:150
 AliPMDUtility.cxx:151
 AliPMDUtility.cxx:152
 AliPMDUtility.cxx:153
 AliPMDUtility.cxx:154
 AliPMDUtility.cxx:155
 AliPMDUtility.cxx:156
 AliPMDUtility.cxx:157
 AliPMDUtility.cxx:158
 AliPMDUtility.cxx:159
 AliPMDUtility.cxx:160
 AliPMDUtility.cxx:161
 AliPMDUtility.cxx:162
 AliPMDUtility.cxx:163
 AliPMDUtility.cxx:164
 AliPMDUtility.cxx:165
 AliPMDUtility.cxx:166
 AliPMDUtility.cxx:167
 AliPMDUtility.cxx:168
 AliPMDUtility.cxx:169
 AliPMDUtility.cxx:170
 AliPMDUtility.cxx:171
 AliPMDUtility.cxx:172
 AliPMDUtility.cxx:173
 AliPMDUtility.cxx:174
 AliPMDUtility.cxx:175
 AliPMDUtility.cxx:176
 AliPMDUtility.cxx:177
 AliPMDUtility.cxx:178
 AliPMDUtility.cxx:179
 AliPMDUtility.cxx:180
 AliPMDUtility.cxx:181
 AliPMDUtility.cxx:182
 AliPMDUtility.cxx:183
 AliPMDUtility.cxx:184
 AliPMDUtility.cxx:185
 AliPMDUtility.cxx:186
 AliPMDUtility.cxx:187
 AliPMDUtility.cxx:188
 AliPMDUtility.cxx:189
 AliPMDUtility.cxx:190
 AliPMDUtility.cxx:191
 AliPMDUtility.cxx:192
 AliPMDUtility.cxx:193
 AliPMDUtility.cxx:194
 AliPMDUtility.cxx:195
 AliPMDUtility.cxx:196
 AliPMDUtility.cxx:197
 AliPMDUtility.cxx:198
 AliPMDUtility.cxx:199
 AliPMDUtility.cxx:200
 AliPMDUtility.cxx:201
 AliPMDUtility.cxx:202
 AliPMDUtility.cxx:203
 AliPMDUtility.cxx:204
 AliPMDUtility.cxx:205
 AliPMDUtility.cxx:206
 AliPMDUtility.cxx:207
 AliPMDUtility.cxx:208
 AliPMDUtility.cxx:209
 AliPMDUtility.cxx:210
 AliPMDUtility.cxx:211
 AliPMDUtility.cxx:212
 AliPMDUtility.cxx:213
 AliPMDUtility.cxx:214
 AliPMDUtility.cxx:215
 AliPMDUtility.cxx:216
 AliPMDUtility.cxx:217
 AliPMDUtility.cxx:218
 AliPMDUtility.cxx:219
 AliPMDUtility.cxx:220
 AliPMDUtility.cxx:221
 AliPMDUtility.cxx:222
 AliPMDUtility.cxx:223
 AliPMDUtility.cxx:224
 AliPMDUtility.cxx:225
 AliPMDUtility.cxx:226
 AliPMDUtility.cxx:227
 AliPMDUtility.cxx:228
 AliPMDUtility.cxx:229
 AliPMDUtility.cxx:230
 AliPMDUtility.cxx:231
 AliPMDUtility.cxx:232
 AliPMDUtility.cxx:233
 AliPMDUtility.cxx:234
 AliPMDUtility.cxx:235
 AliPMDUtility.cxx:236
 AliPMDUtility.cxx:237
 AliPMDUtility.cxx:238
 AliPMDUtility.cxx:239
 AliPMDUtility.cxx:240
 AliPMDUtility.cxx:241
 AliPMDUtility.cxx:242
 AliPMDUtility.cxx:243
 AliPMDUtility.cxx:244
 AliPMDUtility.cxx:245
 AliPMDUtility.cxx:246
 AliPMDUtility.cxx:247
 AliPMDUtility.cxx:248
 AliPMDUtility.cxx:249
 AliPMDUtility.cxx:250
 AliPMDUtility.cxx:251
 AliPMDUtility.cxx:252
 AliPMDUtility.cxx:253
 AliPMDUtility.cxx:254
 AliPMDUtility.cxx:255
 AliPMDUtility.cxx:256
 AliPMDUtility.cxx:257
 AliPMDUtility.cxx:258
 AliPMDUtility.cxx:259
 AliPMDUtility.cxx:260
 AliPMDUtility.cxx:261
 AliPMDUtility.cxx:262
 AliPMDUtility.cxx:263
 AliPMDUtility.cxx:264
 AliPMDUtility.cxx:265
 AliPMDUtility.cxx:266
 AliPMDUtility.cxx:267
 AliPMDUtility.cxx:268
 AliPMDUtility.cxx:269
 AliPMDUtility.cxx:270
 AliPMDUtility.cxx:271
 AliPMDUtility.cxx:272
 AliPMDUtility.cxx:273
 AliPMDUtility.cxx:274
 AliPMDUtility.cxx:275
 AliPMDUtility.cxx:276
 AliPMDUtility.cxx:277
 AliPMDUtility.cxx:278
 AliPMDUtility.cxx:279
 AliPMDUtility.cxx:280
 AliPMDUtility.cxx:281
 AliPMDUtility.cxx:282
 AliPMDUtility.cxx:283
 AliPMDUtility.cxx:284
 AliPMDUtility.cxx:285
 AliPMDUtility.cxx:286
 AliPMDUtility.cxx:287
 AliPMDUtility.cxx:288
 AliPMDUtility.cxx:289
 AliPMDUtility.cxx:290
 AliPMDUtility.cxx:291
 AliPMDUtility.cxx:292
 AliPMDUtility.cxx:293
 AliPMDUtility.cxx:294
 AliPMDUtility.cxx:295
 AliPMDUtility.cxx:296
 AliPMDUtility.cxx:297
 AliPMDUtility.cxx:298
 AliPMDUtility.cxx:299
 AliPMDUtility.cxx:300
 AliPMDUtility.cxx:301
 AliPMDUtility.cxx:302
 AliPMDUtility.cxx:303
 AliPMDUtility.cxx:304
 AliPMDUtility.cxx:305
 AliPMDUtility.cxx:306
 AliPMDUtility.cxx:307
 AliPMDUtility.cxx:308
 AliPMDUtility.cxx:309
 AliPMDUtility.cxx:310
 AliPMDUtility.cxx:311
 AliPMDUtility.cxx:312
 AliPMDUtility.cxx:313
 AliPMDUtility.cxx:314
 AliPMDUtility.cxx:315
 AliPMDUtility.cxx:316
 AliPMDUtility.cxx:317
 AliPMDUtility.cxx:318
 AliPMDUtility.cxx:319
 AliPMDUtility.cxx:320
 AliPMDUtility.cxx:321
 AliPMDUtility.cxx:322
 AliPMDUtility.cxx:323
 AliPMDUtility.cxx:324
 AliPMDUtility.cxx:325
 AliPMDUtility.cxx:326
 AliPMDUtility.cxx:327
 AliPMDUtility.cxx:328
 AliPMDUtility.cxx:329
 AliPMDUtility.cxx:330
 AliPMDUtility.cxx:331
 AliPMDUtility.cxx:332
 AliPMDUtility.cxx:333
 AliPMDUtility.cxx:334
 AliPMDUtility.cxx:335
 AliPMDUtility.cxx:336
 AliPMDUtility.cxx:337
 AliPMDUtility.cxx:338
 AliPMDUtility.cxx:339
 AliPMDUtility.cxx:340
 AliPMDUtility.cxx:341
 AliPMDUtility.cxx:342
 AliPMDUtility.cxx:343
 AliPMDUtility.cxx:344
 AliPMDUtility.cxx:345
 AliPMDUtility.cxx:346
 AliPMDUtility.cxx:347
 AliPMDUtility.cxx:348
 AliPMDUtility.cxx:349
 AliPMDUtility.cxx:350
 AliPMDUtility.cxx:351
 AliPMDUtility.cxx:352
 AliPMDUtility.cxx:353
 AliPMDUtility.cxx:354
 AliPMDUtility.cxx:355
 AliPMDUtility.cxx:356
 AliPMDUtility.cxx:357
 AliPMDUtility.cxx:358
 AliPMDUtility.cxx:359
 AliPMDUtility.cxx:360
 AliPMDUtility.cxx:361
 AliPMDUtility.cxx:362
 AliPMDUtility.cxx:363
 AliPMDUtility.cxx:364
 AliPMDUtility.cxx:365
 AliPMDUtility.cxx:366
 AliPMDUtility.cxx:367
 AliPMDUtility.cxx:368
 AliPMDUtility.cxx:369
 AliPMDUtility.cxx:370
 AliPMDUtility.cxx:371
 AliPMDUtility.cxx:372
 AliPMDUtility.cxx:373
 AliPMDUtility.cxx:374
 AliPMDUtility.cxx:375
 AliPMDUtility.cxx:376
 AliPMDUtility.cxx:377
 AliPMDUtility.cxx:378
 AliPMDUtility.cxx:379
 AliPMDUtility.cxx:380
 AliPMDUtility.cxx:381
 AliPMDUtility.cxx:382
 AliPMDUtility.cxx:383
 AliPMDUtility.cxx:384
 AliPMDUtility.cxx:385
 AliPMDUtility.cxx:386
 AliPMDUtility.cxx:387
 AliPMDUtility.cxx:388
 AliPMDUtility.cxx:389
 AliPMDUtility.cxx:390
 AliPMDUtility.cxx:391
 AliPMDUtility.cxx:392
 AliPMDUtility.cxx:393
 AliPMDUtility.cxx:394
 AliPMDUtility.cxx:395
 AliPMDUtility.cxx:396
 AliPMDUtility.cxx:397
 AliPMDUtility.cxx:398
 AliPMDUtility.cxx:399
 AliPMDUtility.cxx:400
 AliPMDUtility.cxx:401
 AliPMDUtility.cxx:402
 AliPMDUtility.cxx:403
 AliPMDUtility.cxx:404
 AliPMDUtility.cxx:405
 AliPMDUtility.cxx:406
 AliPMDUtility.cxx:407
 AliPMDUtility.cxx:408
 AliPMDUtility.cxx:409
 AliPMDUtility.cxx:410
 AliPMDUtility.cxx:411
 AliPMDUtility.cxx:412
 AliPMDUtility.cxx:413
 AliPMDUtility.cxx:414
 AliPMDUtility.cxx:415
 AliPMDUtility.cxx:416
 AliPMDUtility.cxx:417
 AliPMDUtility.cxx:418
 AliPMDUtility.cxx:419
 AliPMDUtility.cxx:420
 AliPMDUtility.cxx:421
 AliPMDUtility.cxx:422
 AliPMDUtility.cxx:423
 AliPMDUtility.cxx:424
 AliPMDUtility.cxx:425
 AliPMDUtility.cxx:426
 AliPMDUtility.cxx:427
 AliPMDUtility.cxx:428
 AliPMDUtility.cxx:429
 AliPMDUtility.cxx:430
 AliPMDUtility.cxx:431
 AliPMDUtility.cxx:432
 AliPMDUtility.cxx:433
 AliPMDUtility.cxx:434
 AliPMDUtility.cxx:435
 AliPMDUtility.cxx:436
 AliPMDUtility.cxx:437
 AliPMDUtility.cxx:438
 AliPMDUtility.cxx:439
 AliPMDUtility.cxx:440
 AliPMDUtility.cxx:441
 AliPMDUtility.cxx:442
 AliPMDUtility.cxx:443
 AliPMDUtility.cxx:444
 AliPMDUtility.cxx:445
 AliPMDUtility.cxx:446
 AliPMDUtility.cxx:447
 AliPMDUtility.cxx:448
 AliPMDUtility.cxx:449
 AliPMDUtility.cxx:450
 AliPMDUtility.cxx:451
 AliPMDUtility.cxx:452
 AliPMDUtility.cxx:453
 AliPMDUtility.cxx:454
 AliPMDUtility.cxx:455
 AliPMDUtility.cxx:456
 AliPMDUtility.cxx:457
 AliPMDUtility.cxx:458
 AliPMDUtility.cxx:459
 AliPMDUtility.cxx:460
 AliPMDUtility.cxx:461
 AliPMDUtility.cxx:462
 AliPMDUtility.cxx:463
 AliPMDUtility.cxx:464
 AliPMDUtility.cxx:465
 AliPMDUtility.cxx:466
 AliPMDUtility.cxx:467
 AliPMDUtility.cxx:468
 AliPMDUtility.cxx:469
 AliPMDUtility.cxx:470
 AliPMDUtility.cxx:471
 AliPMDUtility.cxx:472
 AliPMDUtility.cxx:473
 AliPMDUtility.cxx:474
 AliPMDUtility.cxx:475
 AliPMDUtility.cxx:476
 AliPMDUtility.cxx:477
 AliPMDUtility.cxx:478
 AliPMDUtility.cxx:479
 AliPMDUtility.cxx:480
 AliPMDUtility.cxx:481
 AliPMDUtility.cxx:482
 AliPMDUtility.cxx:483
 AliPMDUtility.cxx:484
 AliPMDUtility.cxx:485
 AliPMDUtility.cxx:486
 AliPMDUtility.cxx:487
 AliPMDUtility.cxx:488
 AliPMDUtility.cxx:489
 AliPMDUtility.cxx:490
 AliPMDUtility.cxx:491
 AliPMDUtility.cxx:492
 AliPMDUtility.cxx:493
 AliPMDUtility.cxx:494
 AliPMDUtility.cxx:495
 AliPMDUtility.cxx:496
 AliPMDUtility.cxx:497
 AliPMDUtility.cxx:498
 AliPMDUtility.cxx:499
 AliPMDUtility.cxx:500
 AliPMDUtility.cxx:501
 AliPMDUtility.cxx:502
 AliPMDUtility.cxx:503
 AliPMDUtility.cxx:504
 AliPMDUtility.cxx:505
 AliPMDUtility.cxx:506
 AliPMDUtility.cxx:507
 AliPMDUtility.cxx:508
 AliPMDUtility.cxx:509
 AliPMDUtility.cxx:510
 AliPMDUtility.cxx:511
 AliPMDUtility.cxx:512
 AliPMDUtility.cxx:513
 AliPMDUtility.cxx:514
 AliPMDUtility.cxx:515
 AliPMDUtility.cxx:516
 AliPMDUtility.cxx:517
 AliPMDUtility.cxx:518
 AliPMDUtility.cxx:519
 AliPMDUtility.cxx:520
 AliPMDUtility.cxx:521
 AliPMDUtility.cxx:522
 AliPMDUtility.cxx:523
 AliPMDUtility.cxx:524
 AliPMDUtility.cxx:525
 AliPMDUtility.cxx:526
 AliPMDUtility.cxx:527
 AliPMDUtility.cxx:528
 AliPMDUtility.cxx:529
 AliPMDUtility.cxx:530
 AliPMDUtility.cxx:531
 AliPMDUtility.cxx:532
 AliPMDUtility.cxx:533
 AliPMDUtility.cxx:534
 AliPMDUtility.cxx:535
 AliPMDUtility.cxx:536
 AliPMDUtility.cxx:537
 AliPMDUtility.cxx:538
 AliPMDUtility.cxx:539
 AliPMDUtility.cxx:540
 AliPMDUtility.cxx:541
 AliPMDUtility.cxx:542
 AliPMDUtility.cxx:543
 AliPMDUtility.cxx:544
 AliPMDUtility.cxx:545
 AliPMDUtility.cxx:546
 AliPMDUtility.cxx:547
 AliPMDUtility.cxx:548
 AliPMDUtility.cxx:549
 AliPMDUtility.cxx:550
 AliPMDUtility.cxx:551
 AliPMDUtility.cxx:552
 AliPMDUtility.cxx:553
 AliPMDUtility.cxx:554
 AliPMDUtility.cxx:555
 AliPMDUtility.cxx:556
 AliPMDUtility.cxx:557
 AliPMDUtility.cxx:558
 AliPMDUtility.cxx:559
 AliPMDUtility.cxx:560
 AliPMDUtility.cxx:561
 AliPMDUtility.cxx:562
 AliPMDUtility.cxx:563
 AliPMDUtility.cxx:564
 AliPMDUtility.cxx:565
 AliPMDUtility.cxx:566
 AliPMDUtility.cxx:567
 AliPMDUtility.cxx:568
 AliPMDUtility.cxx:569
 AliPMDUtility.cxx:570
 AliPMDUtility.cxx:571
 AliPMDUtility.cxx:572
 AliPMDUtility.cxx:573
 AliPMDUtility.cxx:574
 AliPMDUtility.cxx:575
 AliPMDUtility.cxx:576
 AliPMDUtility.cxx:577
 AliPMDUtility.cxx:578
 AliPMDUtility.cxx:579
 AliPMDUtility.cxx:580
 AliPMDUtility.cxx:581
 AliPMDUtility.cxx:582
 AliPMDUtility.cxx:583
 AliPMDUtility.cxx:584
 AliPMDUtility.cxx:585
 AliPMDUtility.cxx:586
 AliPMDUtility.cxx:587
 AliPMDUtility.cxx:588
 AliPMDUtility.cxx:589
 AliPMDUtility.cxx:590
 AliPMDUtility.cxx:591
 AliPMDUtility.cxx:592
 AliPMDUtility.cxx:593
 AliPMDUtility.cxx:594
 AliPMDUtility.cxx:595
 AliPMDUtility.cxx:596
 AliPMDUtility.cxx:597
 AliPMDUtility.cxx:598
 AliPMDUtility.cxx:599
 AliPMDUtility.cxx:600
 AliPMDUtility.cxx:601
 AliPMDUtility.cxx:602
 AliPMDUtility.cxx:603
 AliPMDUtility.cxx:604
 AliPMDUtility.cxx:605
 AliPMDUtility.cxx:606
 AliPMDUtility.cxx:607
 AliPMDUtility.cxx:608
 AliPMDUtility.cxx:609
 AliPMDUtility.cxx:610
 AliPMDUtility.cxx:611
 AliPMDUtility.cxx:612
 AliPMDUtility.cxx:613
 AliPMDUtility.cxx:614
 AliPMDUtility.cxx:615
 AliPMDUtility.cxx:616
 AliPMDUtility.cxx:617
 AliPMDUtility.cxx:618
 AliPMDUtility.cxx:619
 AliPMDUtility.cxx:620
 AliPMDUtility.cxx:621
 AliPMDUtility.cxx:622
 AliPMDUtility.cxx:623
 AliPMDUtility.cxx:624
 AliPMDUtility.cxx:625
 AliPMDUtility.cxx:626
 AliPMDUtility.cxx:627
 AliPMDUtility.cxx:628
 AliPMDUtility.cxx:629
 AliPMDUtility.cxx:630
 AliPMDUtility.cxx:631
 AliPMDUtility.cxx:632
 AliPMDUtility.cxx:633
 AliPMDUtility.cxx:634
 AliPMDUtility.cxx:635
 AliPMDUtility.cxx:636
 AliPMDUtility.cxx:637
 AliPMDUtility.cxx:638
 AliPMDUtility.cxx:639
 AliPMDUtility.cxx:640
 AliPMDUtility.cxx:641
 AliPMDUtility.cxx:642
 AliPMDUtility.cxx:643
 AliPMDUtility.cxx:644
 AliPMDUtility.cxx:645
 AliPMDUtility.cxx:646
 AliPMDUtility.cxx:647
 AliPMDUtility.cxx:648
 AliPMDUtility.cxx:649
 AliPMDUtility.cxx:650
 AliPMDUtility.cxx:651
 AliPMDUtility.cxx:652
 AliPMDUtility.cxx:653
 AliPMDUtility.cxx:654
 AliPMDUtility.cxx:655
 AliPMDUtility.cxx:656
 AliPMDUtility.cxx:657
 AliPMDUtility.cxx:658
 AliPMDUtility.cxx:659
 AliPMDUtility.cxx:660
 AliPMDUtility.cxx:661
 AliPMDUtility.cxx:662
 AliPMDUtility.cxx:663
 AliPMDUtility.cxx:664
 AliPMDUtility.cxx:665
 AliPMDUtility.cxx:666
 AliPMDUtility.cxx:667
 AliPMDUtility.cxx:668
 AliPMDUtility.cxx:669
 AliPMDUtility.cxx:670
 AliPMDUtility.cxx:671
 AliPMDUtility.cxx:672
 AliPMDUtility.cxx:673
 AliPMDUtility.cxx:674
 AliPMDUtility.cxx:675
 AliPMDUtility.cxx:676
 AliPMDUtility.cxx:677
 AliPMDUtility.cxx:678
 AliPMDUtility.cxx:679
 AliPMDUtility.cxx:680
 AliPMDUtility.cxx:681
 AliPMDUtility.cxx:682
 AliPMDUtility.cxx:683
 AliPMDUtility.cxx:684
 AliPMDUtility.cxx:685
 AliPMDUtility.cxx:686
 AliPMDUtility.cxx:687
 AliPMDUtility.cxx:688
 AliPMDUtility.cxx:689
 AliPMDUtility.cxx:690
 AliPMDUtility.cxx:691
 AliPMDUtility.cxx:692
 AliPMDUtility.cxx:693
 AliPMDUtility.cxx:694
 AliPMDUtility.cxx:695
 AliPMDUtility.cxx:696
 AliPMDUtility.cxx:697
 AliPMDUtility.cxx:698
 AliPMDUtility.cxx:699
 AliPMDUtility.cxx:700
 AliPMDUtility.cxx:701
 AliPMDUtility.cxx:702
 AliPMDUtility.cxx:703
 AliPMDUtility.cxx:704
 AliPMDUtility.cxx:705
 AliPMDUtility.cxx:706
 AliPMDUtility.cxx:707
 AliPMDUtility.cxx:708
 AliPMDUtility.cxx:709
 AliPMDUtility.cxx:710
 AliPMDUtility.cxx:711
 AliPMDUtility.cxx:712
 AliPMDUtility.cxx:713
 AliPMDUtility.cxx:714
 AliPMDUtility.cxx:715
 AliPMDUtility.cxx:716
 AliPMDUtility.cxx:717
 AliPMDUtility.cxx:718
 AliPMDUtility.cxx:719
 AliPMDUtility.cxx:720
 AliPMDUtility.cxx:721
 AliPMDUtility.cxx:722
 AliPMDUtility.cxx:723
 AliPMDUtility.cxx:724
 AliPMDUtility.cxx:725
 AliPMDUtility.cxx:726
 AliPMDUtility.cxx:727
 AliPMDUtility.cxx:728
 AliPMDUtility.cxx:729
 AliPMDUtility.cxx:730
 AliPMDUtility.cxx:731
 AliPMDUtility.cxx:732
 AliPMDUtility.cxx:733
 AliPMDUtility.cxx:734
 AliPMDUtility.cxx:735
 AliPMDUtility.cxx:736
 AliPMDUtility.cxx:737
 AliPMDUtility.cxx:738
 AliPMDUtility.cxx:739
 AliPMDUtility.cxx:740
 AliPMDUtility.cxx:741
 AliPMDUtility.cxx:742
 AliPMDUtility.cxx:743
 AliPMDUtility.cxx:744
 AliPMDUtility.cxx:745
 AliPMDUtility.cxx:746
 AliPMDUtility.cxx:747
 AliPMDUtility.cxx:748
 AliPMDUtility.cxx:749
 AliPMDUtility.cxx:750
 AliPMDUtility.cxx:751
 AliPMDUtility.cxx:752
 AliPMDUtility.cxx:753
 AliPMDUtility.cxx:754
 AliPMDUtility.cxx:755
 AliPMDUtility.cxx:756
 AliPMDUtility.cxx:757
 AliPMDUtility.cxx:758
 AliPMDUtility.cxx:759
 AliPMDUtility.cxx:760
 AliPMDUtility.cxx:761
 AliPMDUtility.cxx:762
 AliPMDUtility.cxx:763
 AliPMDUtility.cxx:764
 AliPMDUtility.cxx:765
 AliPMDUtility.cxx:766
 AliPMDUtility.cxx:767
 AliPMDUtility.cxx:768
 AliPMDUtility.cxx:769
 AliPMDUtility.cxx:770
 AliPMDUtility.cxx:771
 AliPMDUtility.cxx:772
 AliPMDUtility.cxx:773
 AliPMDUtility.cxx:774
 AliPMDUtility.cxx:775
 AliPMDUtility.cxx:776
 AliPMDUtility.cxx:777
 AliPMDUtility.cxx:778
 AliPMDUtility.cxx:779
 AliPMDUtility.cxx:780
 AliPMDUtility.cxx:781
 AliPMDUtility.cxx:782
 AliPMDUtility.cxx:783
 AliPMDUtility.cxx:784
 AliPMDUtility.cxx:785
 AliPMDUtility.cxx:786
 AliPMDUtility.cxx:787
 AliPMDUtility.cxx:788
 AliPMDUtility.cxx:789
 AliPMDUtility.cxx:790
 AliPMDUtility.cxx:791