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.                  *
 **************************************************************************/

/* $Id$ */

//-----------------------------------------------------//
//                                                     //
//  Source File : PMDClusteringV2.cxx                  //
//                                                     //
//  clustering code for alice pmd                      //
//                                                     //
//-----------------------------------------------------//

/* --------------------------------------------------------------------
   Code developed by S. C. Phatak, Institute of Physics,
   Bhubaneswar 751 005 ( phatak@iopb.res.in ) Given the energy deposited
   ( or ADC value ) in each cell of supermodule ( pmd or cpv ), the code
   builds up superclusters and breaks them into clusters. The input is
   in TObjarray  and cluster information is in TObjArray.
   integer clno gives total number of clusters in the  supermodule.
   fClusters is the  global ( public ) variables.
   Others are local ( private ) to the code.
   At the moment, the data is read for whole detector ( all supermodules
   and pmd as well as cpv. This will have to be modify later )
   LAST UPDATE  :  October 23, 2002
-----------------------------------------------------------------------*/

#include <Riostream.h>
#include <TMath.h>
#include <TObjArray.h>
#include <TArrayI.h>

#include "AliPMDcludata.h"
#include "AliPMDcluster.h"
#include "AliPMDClustering.h"
#include "AliPMDClusteringV2.h"
#include "AliLog.h"

ClassImp(AliPMDClusteringV2)

const Double_t AliPMDClusteringV2::fgkSqroot3by2=0.8660254;  // sqrt(3.)/2.

AliPMDClusteringV2::AliPMDClusteringV2():
  fPMDclucont(new TObjArray()),
  fCutoff(0.0),
  fClusParam(0)
{
  for(int i = 0; i < kNDIMX; i++)
    {
      for(int j = 0; j < kNDIMY; j++)
	{
	  fCoord[0][i][j] = i+j/2.;
	  fCoord[1][i][j] = fgkSqroot3by2*j;
	}
    }
}
// ------------------------------------------------------------------------ //


AliPMDClusteringV2::AliPMDClusteringV2(const AliPMDClusteringV2& pmdclv2):
  AliPMDClustering(pmdclv2),
  fPMDclucont(0),
  fCutoff(0),
  fClusParam(0)
{
  // copy constructor
  AliError("Copy constructor not allowed ");
  
}
// ------------------------------------------------------------------------ //
AliPMDClusteringV2 &AliPMDClusteringV2::operator=(const AliPMDClusteringV2& /*pmdclv2*/)
{
  // copy constructor
  AliError("Assignment operator not allowed ");
  return *this;
}
// ------------------------------------------------------------------------ //
AliPMDClusteringV2::~AliPMDClusteringV2()
{
  delete fPMDclucont;
}
// ------------------------------------------------------------------------ //

void AliPMDClusteringV2::DoClust(Int_t idet, Int_t ismn, 
				 Int_t celltrack[48][96],
				 Int_t cellpid[48][96],
				 Double_t celladc[48][96],
				 TObjArray *pmdcont)
{
  // main function to call other necessary functions to do clustering
  //
  AliPMDcluster *pmdcl = 0;

  const Float_t ktwobysqrt3 = 1.1547; // 2./sqrt(3.)
  const Int_t   kNmaxCell   = 19;     // # of cells surrounding a cluster center
  Int_t    i = 0, j = 0, nmx1 = 0;
  Int_t    incr = 0, id = 0, jd = 0;
  Int_t    ndimXr = 0;
  Int_t    ndimYr = 0;
  Int_t    celldataX[kNmaxCell], celldataY[kNmaxCell];
  Int_t    celldataTr[kNmaxCell], celldataPid[kNmaxCell];
  Float_t  celldataAdc[kNmaxCell];
  Float_t  clusdata[6] = {0.,0.,0.,0.,0.,0.};  
  Double_t cutoff = 0., ave = 0.;
  Double_t edepcell[kNMX];


  if (ismn < 12)
    {
      ndimXr = 96;
      ndimYr = 48;
    }
  else if (ismn >= 12 && ismn <= 23)
    {
      ndimXr = 48;
      ndimYr = 96;
    }
  
  for (i =0; i < kNMX; i++)
    {
     edepcell[i] = 0.;
    }
    
  for (id = 0; id < ndimXr; id++)
    {
      for (jd = 0; jd < ndimYr; jd++)
	{
	  j = jd;
	  i = id + (ndimYr/2-1) - (jd/2);
	  Int_t ij = i + j*kNDIMX;
	  if (ismn < 12)
	    {
	      edepcell[ij]    = celladc[jd][id];
	    }
	  else if (ismn >= 12 && ismn <= 23)
	    {
	     edepcell[ij]    = celladc[id][jd];
	    }

	}
    }

  // the dimension of iord1 is increased twice
  Int_t iord1[2*kNMX];
  TMath::Sort((Int_t)kNMX,edepcell,iord1);// order the data
  cutoff = fCutoff; // cutoff used to discard cells having ener. dep.
  ave  = 0.;
  nmx1 = -1;

  for(i = 0;i < kNMX; i++)
    {
      if(edepcell[i] > 0.) 
	{
	  ave += edepcell[i];
	}
      if(edepcell[i] > cutoff )
	{
	  nmx1++;
	}
    }
  
  AliDebug(1,Form("Number of cells having energy >= %f are %d",cutoff,nmx1));
  
  if (nmx1 == 0) 
    {
      nmx1 = 1;
    }
  ave = ave/nmx1;
  
  AliDebug(1,Form("Number of cells in a SuperM = %d and Average = %f",
		  kNMX,ave));
  
  incr = CrClust(ave, cutoff, nmx1,iord1, edepcell);
  RefClust(incr,edepcell );
  
  Int_t nentries1 = fPMDclucont->GetEntries();
  AliDebug(1,Form("Detector Plane = %d  Serial Module No = %d Number of clusters = %d",idet, ismn, nentries1));
  AliDebug(1,Form("Total number of clusters/module = %d",nentries1));
  for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
    {
      AliPMDcludata *pmdcludata = 
	(AliPMDcludata*)fPMDclucont->UncheckedAt(ient1);
      Float_t cluXC    = pmdcludata->GetClusX();
      Float_t cluYC    = pmdcludata->GetClusY();
      Float_t cluADC   = pmdcludata->GetClusADC();
      Float_t cluCELLS = pmdcludata->GetClusCells();
      Float_t cluSIGX  = pmdcludata->GetClusSigmaX();
      Float_t cluSIGY  = pmdcludata->GetClusSigmaY();
      
      Float_t cluY0    = ktwobysqrt3*cluYC;
      Float_t cluX0    = cluXC - cluY0/2.;
      
      // 
      // Cluster X centroid is back transformed
      //
      if (ismn < 12)
	{
	  clusdata[0] = cluX0 - (24-1) + cluY0/2.;
	}
      else if (ismn  >= 12 && ismn <= 23)
	{
	  clusdata[0] = cluX0 - (48-1) + cluY0/2.;
	}	  

      clusdata[1]     = cluY0;
      clusdata[2]     = cluADC;
      clusdata[3]     = cluCELLS;
      clusdata[4]     = cluSIGX;
      clusdata[5]     = cluSIGY;
      //
      // Cells associated with a cluster
      //
      for (Int_t ihit = 0; ihit < kNmaxCell; ihit++)
	{
	  Int_t dummyXY = pmdcludata->GetCellXY(ihit);
	 
	  Int_t celldumY   = dummyXY%10000;
	  Int_t celldumX   = dummyXY/10000;
          Float_t cellY    = (Float_t) celldumY/10;
	  Float_t cellX    = (Float_t) celldumX/10;

	  // 
	  // Cell X centroid is back transformed
	  //
	  if (ismn < 12)
	    {
	      celldataX[ihit] = (Int_t) ((cellX - (24-1) + cellY/2.) + 0.5);
	    }
	  else if (ismn  >= 12 && ismn <= 23)
	    {
	      celldataX[ihit] = (Int_t) ((cellX - (48-1) + cellY/2.) + 0.5 );
	    }	  
	  celldataY[ihit]   = (Int_t) (cellY + 0.5);

	  Int_t irow = celldataX[ihit];
	  Int_t icol = celldataY[ihit];

	  if ((irow >= 0 && irow < 48) && (icol >= 0 && icol < 96))
	    {
	      celldataTr[ihit]  = celltrack[irow][icol];
	      celldataPid[ihit] = cellpid[irow][icol];
	      celldataAdc[ihit] = (Float_t) celladc[irow][icol];
	    }
	  else
	    {
	      celldataTr[ihit]  = -1;
	      celldataPid[ihit] = -1;
	      celldataAdc[ihit] = -1;
	    }

	}

      pmdcl = new AliPMDcluster(idet, ismn, clusdata, celldataX, celldataY,
				celldataTr, celldataPid, celldataAdc);
      pmdcont->Add(pmdcl);
    }
  fPMDclucont->Delete();
}
// ------------------------------------------------------------------------ //
Int_t AliPMDClusteringV2::CrClust(Double_t ave, Double_t cutoff, Int_t nmx1,
				  Int_t iord1[], Double_t edepcell[])
{
  // Does crude clustering
  // Finds out only the big patch by just searching the
  // connected cells
  //

  Int_t i = 0, j = 0, k = 0, id1 =0, id2 = 0, icl = 0, numcell = 0;
  Int_t jd1 = 0, jd2 = 0, icell = 0, cellcount = 0;
  Int_t clust[2][5000];
  static Int_t neibx[6] = {1,0,-1,-1,0,1}, neiby[6] = {0,1,1,0,-1,-1};

  // neibx and neiby define ( incremental ) (i,j) for the neighbours of a
  // cell. There are six neighbours.
  // cellcount --- total number of cells having nonzero ener dep
  // numcell --- number of cells in a given supercluster
  
  AliDebug(1,Form("kNMX = %d nmx1 = %d kNDIMX = %d kNDIMY = %d ave = %f cutoff = %f",kNMX,nmx1,kNDIMX,kNDIMY,ave,cutoff));
  
  for (j=0; j < kNDIMX; j++)
    {
      for(k=0; k < kNDIMY; k++)
	{
	  fInfocl[0][j][k] = 0;
	  fInfocl[1][j][k] = 0;
	}
    }
 
  for(i=0; i < kNMX; i++)
    {
      fInfcl[0][i] = -1;
      
      j  = iord1[i];
      id2 = j/kNDIMX;
      id1 = j-id2*kNDIMX;
      
      if(edepcell[j] <= cutoff)
	{
	  fInfocl[0][id1][id2] = -1;
	}
    }
  // ---------------------------------------------------------------
  // crude clustering begins. Start with cell having largest adc
  // count and loop over the cells in descending order of adc count
  // ---------------------------------------------------------------
  icl       = -1;
  cellcount = -1;
  for(icell=0; icell <= nmx1; icell++)
    {
      j  = iord1[icell];
      id2 = j/kNDIMX;
      id1 = j-id2*kNDIMX;
      if(fInfocl[0][id1][id2] == 0 )
	{
	  // ---------------------------------------------------------------
	  // icl -- cluster #, numcell -- # of cells in it, clust -- stores
	  // coordinates of the cells in a cluster, fInfocl[0][i1][i2] is 1 for
	  // primary and 2 for secondary cells,
	  // fInfocl[1][i1][i2] stores cluster #
	  // ---------------------------------------------------------------
	  icl++;
	  numcell = 0;
	  cellcount++;
	  fInfocl[0][id1][id2]  = 1;
	  fInfocl[1][id1][id2]  = icl;
	  fInfcl[0][cellcount]  = icl;
	  fInfcl[1][cellcount]  = id1;
	  fInfcl[2][cellcount]  = id2;

	  clust[0][numcell]     = id1;
	  clust[1][numcell]     = id2;
	  for(i = 1; i < 5000; i++)
	    {
	      clust[0][i] = -1;
	    }
	  // ---------------------------------------------------------------
	  // check for adc count in neib. cells. If ne 0 put it in this clust
	  // ---------------------------------------------------------------
	  for(i = 0; i < 6; i++)
	    {
	    jd1 = id1 + neibx[i];
	    jd2 = id2 + neiby[i];
	    if( (jd1 >= 0 && jd1 < kNDIMX) && (jd2 >= 0 && jd2 < kNDIMY) &&
		fInfocl[0][jd1][jd2] == 0)
	      {
		numcell++;
		fInfocl[0][jd1][jd2] = 2;
		fInfocl[1][jd1][jd2] = icl;
		clust[0][numcell]    = jd1;
		clust[1][numcell]    = jd2;
		cellcount++;
		fInfcl[0][cellcount] = icl;
		fInfcl[1][cellcount] = jd1;
		fInfcl[2][cellcount] = jd2;
	      }
	    }
	  // ---------------------------------------------------------------
	  // check adc count for neighbour's neighbours recursively and
	  // if nonzero, add these to the cluster.
	  // ---------------------------------------------------------------
	  for(i = 1;i < 5000; i++)
	    { 
	      if(clust[0][i] != -1)
		{
		  id1 = clust[0][i];
		  id2 = clust[1][i];
		  for(j = 0; j < 6 ; j++)
		    {
		      jd1 = id1 + neibx[j];
		      jd2 = id2 + neiby[j];
		      if( (jd1 >= 0 && jd1 < kNDIMX) && 
			  (jd2 >= 0 && jd2 < kNDIMY) 
			  && fInfocl[0][jd1][jd2] == 0 )
			{
			  fInfocl[0][jd1][jd2] = 2;
			  fInfocl[1][jd1][jd2] = icl;
			  numcell++;
			  clust[0][numcell]    = jd1;
			  clust[1][numcell]    = jd2;
			  cellcount++;
			  fInfcl[0][cellcount] = icl;
			  fInfcl[1][cellcount] = jd1;
			  fInfcl[2][cellcount] = jd2;
			}
		    }
		}
	    }
	}
    }
  return cellcount;
}
// ------------------------------------------------------------------------ //
  void AliPMDClusteringV2::RefClust(Int_t incr, Double_t edepcell[])
{
  // Does the refining of clusters
  // Takes the big patch and does gaussian fitting and
  // finds out the more refined clusters

  const Float_t ktwobysqrt3 = 1.1547;
  const Int_t   kNmaxCell   = 19;

  AliPMDcludata *pmdcludata = 0;

  Int_t i12 = 0;
  Int_t i = 0, j = 0, k = 0;
  Int_t i1 = 0, i2 = 0, id = 0, icl = 0, itest = 0, ihld = 0;
  Int_t ig = 0, nsupcl = 0, clno = 0, clX = 0, clY = 0;
  Int_t clxy[kNmaxCell];

  Float_t  clusdata[6] = {0.,0.,0.,0.,0.,0.};
  Double_t x1 = 0., y1 = 0., z1 = 0., x2 = 0., y2 = 0., z2 = 0., rr = 0.;

  Int_t kndim = incr + 1;

  TArrayI testncl;
  TArrayI testindex;

  Int_t    *ncl, *iord;

  Double_t *x, *y, *z, *xc, *yc, *zc, *cells, *rcl, *rcs;

  ncl   = new Int_t [kndim];
  iord  = new Int_t [kndim];
  x     = new Double_t [kndim];
  y     = new Double_t [kndim];
  z     = new Double_t [kndim];
  xc    = new Double_t [kndim];
  yc    = new Double_t [kndim];
  zc    = new Double_t [kndim];
  cells = new Double_t [kndim];
  rcl   = new Double_t [kndim];
  rcs   = new Double_t [kndim];
  
  for(Int_t kk = 0; kk < 15; kk++)
    {
      if( kk < 6 )clusdata[kk] = 0.;
    }
   
  // nsupcl =  # of superclusters; ncl[i]= # of cells in supercluster i
  // x, y and z store (x,y) coordinates of and energy deposited in a cell
  // xc, yc store (x,y) coordinates of the cluster center
  // zc stores the energy deposited in a cluster, rc is cluster radius

  clno   = -1;
  nsupcl = -1;

  for(i = 0; i < kndim; i++)
    {
      ncl[i] = -1;
    }
  for(i = 0; i <= incr; i++)
    {
      if(fInfcl[0][i] != nsupcl)
	{
	  nsupcl++;
	}
      if (nsupcl > 4500) 
	{
	  AliWarning("RefClust: Too many superclusters!");
	  nsupcl = 4500;
	  break;
	}
      ncl[nsupcl]++;
    }
  
  AliDebug(1,Form("Number of cells = %d Number of Superclusters = %d",
		  incr+1,nsupcl+1));
  
  id  = -1;
  icl = -1;
  for(i = 0; i <= nsupcl; i++)
    {
      if(ncl[i] == 0)
	{
	  id++;
	  icl++;
	  // one  cell super-clusters --> single cluster
	  // cluster center at the centyer of the cell
	  // cluster radius = half cell dimension
	  if (clno >= 5000) 
	    {
	      AliWarning("RefClust: Too many clusters! more than 5000");
	      return;
	    }
	  clno++;
	  i1          = fInfcl[1][id];
	  i2          = fInfcl[2][id];
	  i12         = i1 + i2*kNDIMX;
	  clusdata[0] = fCoord[0][i1][i2];
	  clusdata[1] = fCoord[1][i1][i2];
	  clusdata[2] = edepcell[i12];
	  clusdata[3] = 1.;
	  clusdata[4] = 0.0;
	  clusdata[5] = 0.0;
	  
	  //cell information
	  
	  clY = (Int_t)((ktwobysqrt3*fCoord[1][i1][i2])*10);
	  clX = (Int_t)((fCoord[0][i1][i2] - clY/20.)*10);
	  clxy[0] = clX*10000 + clY ;

	  for(Int_t icltr = 1; icltr < kNmaxCell; icltr++)
	    {
	      clxy[icltr] = -1;
	    }
	  pmdcludata  = new AliPMDcludata(clusdata,clxy);
	  fPMDclucont->Add(pmdcludata);
	  
	  
	}
      else if(ncl[i] == 1)
	{
	  // two cell super-cluster --> single cluster
	  // cluster center is at ener. dep.-weighted mean of two cells
	  // cluster radius == half cell dimension
	  id++;
	  icl++;
	  if (clno >= 5000) 
	    {
	      AliWarning("RefClust: Too many clusters! more than 5000");
	      return;
	    }
	  clno++;
	  i1   = fInfcl[1][id];
	  i2   = fInfcl[2][id];
	  i12  = i1 + i2*kNDIMX;
	  
	  x1   = fCoord[0][i1][i2];
	  y1   = fCoord[1][i1][i2];
	  z1   = edepcell[i12];
	  
	  id++;
	  i1   = fInfcl[1][id];
	  i2   = fInfcl[2][id];
	  i12  = i1 + i2*kNDIMX;
	  
	  x2   = fCoord[0][i1][i2];
	  y2   = fCoord[1][i1][i2];
	  z2   = edepcell[i12];
	  
	  clusdata[0] = (x1*z1+x2*z2)/(z1+z2);
	  clusdata[1] = (y1*z1+y2*z2)/(z1+z2);
	  clusdata[2] = z1+z2;
	  clusdata[3] = 2.;
	  clusdata[4] = (TMath::Sqrt(z1*z2))/(z1+z2);
	  clusdata[5] = 0.0;

          clY = (Int_t)((ktwobysqrt3*y1)*10);
	  clX = (Int_t)((x1 - clY/20.)*10);
	  clxy[0] = clX*10000 + clY ;

	  clY = (Int_t)((ktwobysqrt3*y2)*10);
	  clX = (Int_t)((x2 - clY/20.)*10);
	  clxy[1] = clX*10000 + clY ;

	  for(Int_t icltr = 2; icltr < kNmaxCell; icltr++)
	    {
	      clxy[icltr] = -1;
	    }
	  pmdcludata  = new AliPMDcludata(clusdata, clxy);
	  fPMDclucont->Add(pmdcludata);
	}
      else{
	id++;
	iord[0] = 0;
	// super-cluster of more than two cells - broken up into smaller
	// clusters gaussian centers computed. (peaks separated by > 1 cell)
	// Begin from cell having largest energy deposited This is first
	// cluster center
	// *****************************************************************
	// NOTE --- POSSIBLE MODIFICATION: ONE MAY NOT BREAKING SUPERCLUSTERS
	// IF NO. OF CELLS IS NOT TOO LARGE ( SAY 5 OR 6 )
	// SINCE WE EXPECT THE SUPERCLUSTER 
	// TO BE A SINGLE CLUSTER
	//*******************************************************************
	
	i1      = fInfcl[1][id];
	i2      = fInfcl[2][id];
	i12     = i1 + i2*kNDIMX;
	
	x[0]    = fCoord[0][i1][i2];
	y[0]    = fCoord[1][i1][i2];
	z[0]    = edepcell[i12];
	
	iord[0] = 0;
	for(j = 1; j <= ncl[i]; j++)
	  {
	    
	    id++;
	    i1      = fInfcl[1][id];
	    i2      = fInfcl[2][id];
	    i12     = i1 + i2*kNDIMX;
	    iord[j] = j;
	    x[j]    = fCoord[0][i1][i2];
	    y[j]    = fCoord[1][i1][i2];
	    z[j]    = edepcell[i12];
	  }
	
	// arranging cells within supercluster in decreasing order
	for(j = 1; j <= ncl[i];j++)
	  {
	    itest = 0;
	    ihld  = iord[j];
	    for(i1 = 0; i1 < j; i1++)
	      {
		if(itest == 0 && z[iord[i1]] < z[ihld])
		  {
		    itest = 1;
		    for(i2 = j-1;i2 >= i1;i2--)
		      {
			iord[i2+1] = iord[i2];
		      }
		    iord[i1] = ihld;
		  }
	      }
	  }
	
	
	// compute the number of clusters and their centers ( first
	// guess )
	// centers must be separated by cells having smaller ener. dep.
	// neighbouring centers should be either strong or well-separated
	ig     = 0;
	xc[ig] = x[iord[0]];
	yc[ig] = y[iord[0]];
	zc[ig] = z[iord[0]];
	for(j = 1; j <= ncl[i]; j++)
	  {
	    itest = -1;
	    x1    = x[iord[j]];
	    y1    = y[iord[j]];
	    for(k = 0; k <= ig; k++)
	      {
		x2 = xc[k];
		y2 = yc[k];
		rr = Distance(x1,y1,x2,y2);
		//************************************************************
		// finetuning cluster splitting
		// the numbers zc/4 and zc/10 may need to be changed. 
		// Also one may need to add one more layer because our 
		// cells are smaller in absolute scale
		//************************************************************
		
		
		if( rr >= 1.1 && rr < 1.8 && z[iord[j]] > zc[k]/4.) itest++;
		if( rr >= 1.8 && rr < 2.1 && z[iord[j]] > zc[k]/10.) itest++;
		if( rr >= 2.1)itest++;
	      }
	    
	    if(itest == ig)
	      {
		ig++;
		xc[ig] = x1;
		yc[ig] = y1;
		zc[ig] = z[iord[j]];
	      }
	  }
	ClustDetails(ncl[i], ig, x, y ,z, xc, yc, zc, rcl, rcs, cells, 
		     testncl, testindex);
	
	Int_t pp = 0;
	for(j = 0; j <= ig; j++)
	  { 
	    clno++;
	    if (clno >= 5000)
	      {
		AliWarning("RefClust: Too many clusters! more than 5000");
		return;
	      }
	    clusdata[0] = xc[j];
	    clusdata[1] = yc[j];
	    clusdata[2] = zc[j];
	    clusdata[4] = rcl[j];
	    clusdata[5] = rcs[j];
	    if(ig == 0)
	      {
		clusdata[3] = ncl[i] + 1;
	      }
	    else
	      {
		clusdata[3] = cells[j];
	      }
	    // cell information
	    Int_t ncellcls =  testncl[j];
	    if( ncellcls < kNmaxCell )
	      {
		for(Int_t kk = 1; kk <= ncellcls; kk++)
		  {
		    Int_t ll =  testindex[pp];
                    clY = (Int_t)((ktwobysqrt3*y[ll])*10);
	            clX = (Int_t)((x[ll] - clY/20.)*10);
		    clxy[kk-1] = clX*10000 + clY ;

		    pp++;
		  }
		for(Int_t icltr = ncellcls ; icltr < kNmaxCell; icltr++)
		  {
		    clxy[icltr] = -1;
		  }
	      }
	    pmdcludata = new AliPMDcludata(clusdata, clxy);
	    fPMDclucont->Add(pmdcludata);
	  }
	testncl.Set(0);
	testindex.Set(0);
      }
    }
  delete [] ncl;
  delete [] iord;
  delete [] x;
  delete [] y;
  delete [] z;
  delete [] xc;
  delete [] yc;
  delete [] zc;
  delete [] cells;
  delete [] rcl;
  delete [] rcs;
}
// ------------------------------------------------------------------------ //
void AliPMDClusteringV2::ClustDetails(Int_t ncell, Int_t nclust, Double_t x[], 
				      Double_t y[], Double_t z[],Double_t xc[],
				      Double_t yc[], Double_t zc[],
				      Double_t rcl[], Double_t rcs[], 
				      Double_t cells[], TArrayI &testncl,
				      TArrayI &testindex)
{
  // function begins
  //

  Int_t kndim1 = ncell + 1;//ncell
  Int_t kndim2 = 20;
  Int_t kndim3 = nclust + 1;//nclust

  Int_t    i = 0, j = 0, k = 0, i1 = 0, i2 = 0;
  Double_t x1 = 0., y1 = 0., x2 = 0., y2 = 0.;
  Double_t rr = 0., b = 0., c = 0., r1 = 0., r2 = 0.;
  Double_t sumx = 0., sumy = 0., sumxy = 0.;
  Double_t sumxx = 0., sum = 0., sum1 = 0., sumyy = 0.;

  Double_t  *str, *str1, *xcl, *ycl, *cln; 
  Int_t    **cell;
  Int_t    ** cluster;
  Double_t **clustcell;
  str  = new Double_t [kndim3];
  str1 = new Double_t [kndim3];
  xcl  = new Double_t [kndim3];
  ycl  = new Double_t [kndim3];
  cln  = new Double_t [kndim3];

  clustcell = new Double_t *[kndim3];
  cell      = new Int_t    *[kndim3];
  cluster   = new Int_t    *[kndim1];
  for(i = 0; i < kndim1; i++)
    {
      cluster[i] = new Int_t [kndim2];
    }
  
  for(i = 0; i < kndim3; i++)
    {
      str[i]  = 0;
      str1[i] = 0;
      xcl[i]  = 0;
      ycl[i]  = 0;
      cln[i]  = 0;
      
      cell[i]    = new Int_t [kndim2];
      clustcell[i] = new Double_t [kndim1];	  
      for(j = 0; j < kndim1; j++)
	{
	  clustcell[i][j] = 0;
	}
      for(j = 0; j < kndim2; j++)
	{
	  cluster[i][j] = 0;
	  cell[i][j] = 0;
	}
    }
  
  if(nclust > 0)
    {
      // more than one cluster
      // checking cells shared between several  clusters.
      // First check if the cell is within
      // one cell unit ( nearest neighbour). Else, 
      // if it is within 1.74 cell units ( next nearest )
      // Else if it is upto 2 cell units etc.
      
      for (i = 0; i <= ncell; i++)
	{
	  x1            = x[i];
	  y1            = y[i];
	  cluster[i][0] = 0;

	  // distance <= 1 cell unit

	  for(j = 0; j <= nclust; j++)
	    {
	      x2 = xc[j];
	      y2 = yc[j];
	      rr = Distance(x1, y1, x2, y2);
	      if(rr <= 1.)
		{
		  cluster[i][0]++;
		  i1             = cluster[i][0];
		  cluster[i][i1] = j;
		}
	    }
	  // next nearest neighbour
	  if(cluster[i][0] == 0)
	    {
	      for(j=0; j<=nclust; j++)
		{
		  x2 = xc[j];
		  y2 = yc[j];
		  rr = Distance(x1, y1, x2, y2);
		  if(rr <= TMath::Sqrt(3.))
		    {
		      cluster[i][0]++;
		      i1             = cluster[i][0];
		      cluster[i][i1] = j;
		    }
		}
	    }
	  // next-to-next nearest neighbour
	  if(cluster[i][0] == 0)
	    {
	      for(j=0; j<=nclust; j++)
		{
		  x2 = xc[j];
		  y2 = yc[j];
		  rr = Distance(x1, y1, x2, y2);
		  if(rr <= 2.)
		    {
		      cluster[i][0]++;
		      i1             = cluster[i][0];
		      cluster[i][i1] = j;
		    }
		}
	    }
	  // one more
	  if(cluster[i][0] == 0)
	    {
	      for(j = 0; j <= nclust; j++)
		{
		  x2 = xc[j];
		  y2 = yc[j];
		  rr = Distance(x1, y1, x2, y2);
		  if(rr <= 2.7)
		    {
		      cluster[i][0]++;
		      i1             = cluster[i][0];
		      cluster[i][i1] = j;
		    }
		}
	    }
	}
      
      // computing cluster strength. Some cells are shared.
      for(i = 0; i <= ncell; i++)
	{
	  if(cluster[i][0] != 0)
	    {
	      i1 = cluster[i][0];
	      for(j = 1; j <= i1; j++)
		{
		  i2       = cluster[i][j];
		  str[i2] += z[i]/i1;
		}
	    }
	}
      
      for(k = 0; k < 5; k++)
	{
	  for(i = 0; i <= ncell; i++)
	    {
	      if(cluster[i][0] != 0)
		{
		  i1=cluster[i][0];
		  sum=0.;
		  for(j = 1; j <= i1; j++)
		    {
		      sum += str[cluster[i][j]];
		    }
		  
		  for(j = 1; j <= i1; j++)
		    {
		      i2               = cluster[i][j]; 
		      str1[i2]        +=  z[i]*str[i2]/sum;
		      clustcell[i2][i] = z[i]*str[i2]/sum;
		    }
		}
	    }
	  
	  
	  for(j = 0; j <= nclust; j++)
	    {
	      str[j]  = str1[j];
	      str1[j] = 0.;
	    }
	}
      
      for(i = 0; i <= nclust; i++)
	{
	  sumx = 0.;
	  sumy = 0.;
	  sum  = 0.;
	  sum1 = 0.;
	  for(j = 0; j <= ncell; j++)
	    {
	      if(clustcell[i][j] != 0)
		{
		  sumx  +=  clustcell[i][j]*x[j];
		  sumy  +=  clustcell[i][j]*y[j];
		  sum   +=  clustcell[i][j];
		  sum1  +=  clustcell[i][j]/z[j];
		}
	    }
	  //** xcl and ycl are cluster centroid positions ( center of gravity )
	  
	  xcl[i] = sumx/sum;
	  ycl[i] = sumy/sum;
	  cln[i] = sum1;
	  sumxx = 0.;
	  sumyy = 0.;
	  sumxy = 0.;
	  for(j = 0; j <= ncell; j++)
	    {
	      sumxx += clustcell[i][j]*(x[j]-xcl[i])*(x[j]-xcl[i])/sum;
	      sumyy += clustcell[i][j]*(y[j]-ycl[i])*(y[j]-ycl[i])/sum;
	      sumxy += clustcell[i][j]*(x[j]-xcl[i])*(y[j]-ycl[i])/sum;
	    }
	  b = sumxx+sumyy;
	  c = sumxx*sumyy-sumxy*sumxy;
	  // ******************r1 and r2 are major and minor axes ( r1 > r2 ). 
	  r1 = b/2.+TMath::Sqrt(b*b/4.-c);
	  r2 = b/2.-TMath::Sqrt(b*b/4.-c);
	  // final assignments to proper external variables
 	  xc[i]    = xcl[i];
	  yc[i]    = ycl[i];
	  zc[i]    = str[i];
	  cells[i] = cln[i];
	  rcl[i]   = r1;
	  rcs[i]   = r2;

	}
      
      //To get the cell position in a cluster
      
      for(Int_t ii=0; ii<= ncell; ii++)
	{
	  Int_t jj = cluster[ii][0]; 
	  for(Int_t kk=1; kk<= jj; kk++)
	    {
	      Int_t ll = cluster[ii][kk];
	      cell[ll][0]++;
	      cell[ll][cell[ll][0]] = ii;
	    }
	}
      
      testncl.Set(nclust+1);
      Int_t counter = 0;
      
      for(Int_t ii=0; ii <= nclust; ii++)
	{
	  testncl[ii] =  cell[ii][0];
	  counter += testncl[ii];
	}
      testindex.Set(counter);
      Int_t ll = 0;
      for(Int_t ii=0; ii<= nclust; ii++)
	{
	  for(Int_t jj = 1; jj<= testncl[ii]; jj++)
	    {
	      Int_t kk = cell[ii][jj];
	      testindex[ll] = kk;
	      ll++;
	    }
	}
      
    }
  else if(nclust == 0)
    {
      sumx = 0.;
      sumy = 0.;
      sum  = 0.;
      sum1 = 0.;
      i    = 0;
      for(j = 0; j <= ncell; j++)
	{
	  sumx += z[j]*x[j];
	  sumy += z[j]*y[j];
	  sum  += z[j];
	  sum1++;
	}
      xcl[i] = sumx/sum;
      ycl[i] = sumy/sum;
      cln[i] = sum1;
      sumxx  = 0.;
      sumyy  = 0.;
      sumxy  = 0.;
      for(j = 0; j <= ncell; j++)
	{
	  sumxx += clustcell[i][j]*(x[j]-xcl[i])*(x[j]-xcl[i])/sum;
	  sumyy += clustcell[i][j]*(y[j]-ycl[i])*(y[j]-ycl[i])/sum;
	  sumxy += clustcell[i][j]*(x[j]-xcl[i])*(y[j]-ycl[i])/sum;
	}
      b  = sumxx+sumyy;
      c  = sumxx*sumyy-sumxy*sumxy;
      r1 = b/2.+ TMath::Sqrt(b*b/4.-c);
      r2 = b/2.- TMath::Sqrt(b*b/4.-c);
      
      // To get the cell position in a cluster
      testncl.Set(nclust+1);
      testindex.Set(ncell+1);
      cell[0][0] = ncell + 1;
      testncl[0] = cell[0][0];
      Int_t ll   = 0;
      for(Int_t ii = 1; ii <= ncell; ii++)
	{
	  cell[0][ii]=ii;
	  Int_t kk = cell[0][ii];
	  testindex[ll] = kk;
	  ll++;
	}
      // final assignments
      xc[i]    = xcl[i];
      yc[i]    = ycl[i];
      zc[i]    = sum;
      cells[i] = cln[i];
      rcl[i]   = r1;
      rcs[i]   = r2;
    }
  for(i = 0; i < kndim3; i++)
    {
      delete [] clustcell[i];
      delete [] cell[i];
    }
  delete [] clustcell;
  delete [] cell;
  for(i = 0; i <kndim1 ; i++)
    {
      delete [] cluster[i];
    }
  delete [] cluster;
  delete [] str;
  delete [] str1;
  delete [] xcl;
  delete [] ycl;
  delete [] cln;
}

// ------------------------------------------------------------------------ //
Double_t AliPMDClusteringV2::Distance(Double_t x1, Double_t y1,
				      Double_t x2, Double_t y2)
{
  return TMath::Sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
}
// ------------------------------------------------------------------------ //
void AliPMDClusteringV2::SetEdepCut(Float_t decut)
{
  fCutoff = decut;
}
// ------------------------------------------------------------------------ //
void AliPMDClusteringV2::SetClusteringParam(Int_t cluspar)
{
  fClusParam = cluspar;
}
// ------------------------------------------------------------------------ //
 AliPMDClusteringV2.cxx:1
 AliPMDClusteringV2.cxx:2
 AliPMDClusteringV2.cxx:3
 AliPMDClusteringV2.cxx:4
 AliPMDClusteringV2.cxx:5
 AliPMDClusteringV2.cxx:6
 AliPMDClusteringV2.cxx:7
 AliPMDClusteringV2.cxx:8
 AliPMDClusteringV2.cxx:9
 AliPMDClusteringV2.cxx:10
 AliPMDClusteringV2.cxx:11
 AliPMDClusteringV2.cxx:12
 AliPMDClusteringV2.cxx:13
 AliPMDClusteringV2.cxx:14
 AliPMDClusteringV2.cxx:15
 AliPMDClusteringV2.cxx:16
 AliPMDClusteringV2.cxx:17
 AliPMDClusteringV2.cxx:18
 AliPMDClusteringV2.cxx:19
 AliPMDClusteringV2.cxx:20
 AliPMDClusteringV2.cxx:21
 AliPMDClusteringV2.cxx:22
 AliPMDClusteringV2.cxx:23
 AliPMDClusteringV2.cxx:24
 AliPMDClusteringV2.cxx:25
 AliPMDClusteringV2.cxx:26
 AliPMDClusteringV2.cxx:27
 AliPMDClusteringV2.cxx:28
 AliPMDClusteringV2.cxx:29
 AliPMDClusteringV2.cxx:30
 AliPMDClusteringV2.cxx:31
 AliPMDClusteringV2.cxx:32
 AliPMDClusteringV2.cxx:33
 AliPMDClusteringV2.cxx:34
 AliPMDClusteringV2.cxx:35
 AliPMDClusteringV2.cxx:36
 AliPMDClusteringV2.cxx:37
 AliPMDClusteringV2.cxx:38
 AliPMDClusteringV2.cxx:39
 AliPMDClusteringV2.cxx:40
 AliPMDClusteringV2.cxx:41
 AliPMDClusteringV2.cxx:42
 AliPMDClusteringV2.cxx:43
 AliPMDClusteringV2.cxx:44
 AliPMDClusteringV2.cxx:45
 AliPMDClusteringV2.cxx:46
 AliPMDClusteringV2.cxx:47
 AliPMDClusteringV2.cxx:48
 AliPMDClusteringV2.cxx:49
 AliPMDClusteringV2.cxx:50
 AliPMDClusteringV2.cxx:51
 AliPMDClusteringV2.cxx:52
 AliPMDClusteringV2.cxx:53
 AliPMDClusteringV2.cxx:54
 AliPMDClusteringV2.cxx:55
 AliPMDClusteringV2.cxx:56
 AliPMDClusteringV2.cxx:57
 AliPMDClusteringV2.cxx:58
 AliPMDClusteringV2.cxx:59
 AliPMDClusteringV2.cxx:60
 AliPMDClusteringV2.cxx:61
 AliPMDClusteringV2.cxx:62
 AliPMDClusteringV2.cxx:63
 AliPMDClusteringV2.cxx:64
 AliPMDClusteringV2.cxx:65
 AliPMDClusteringV2.cxx:66
 AliPMDClusteringV2.cxx:67
 AliPMDClusteringV2.cxx:68
 AliPMDClusteringV2.cxx:69
 AliPMDClusteringV2.cxx:70
 AliPMDClusteringV2.cxx:71
 AliPMDClusteringV2.cxx:72
 AliPMDClusteringV2.cxx:73
 AliPMDClusteringV2.cxx:74
 AliPMDClusteringV2.cxx:75
 AliPMDClusteringV2.cxx:76
 AliPMDClusteringV2.cxx:77
 AliPMDClusteringV2.cxx:78
 AliPMDClusteringV2.cxx:79
 AliPMDClusteringV2.cxx:80
 AliPMDClusteringV2.cxx:81
 AliPMDClusteringV2.cxx:82
 AliPMDClusteringV2.cxx:83
 AliPMDClusteringV2.cxx:84
 AliPMDClusteringV2.cxx:85
 AliPMDClusteringV2.cxx:86
 AliPMDClusteringV2.cxx:87
 AliPMDClusteringV2.cxx:88
 AliPMDClusteringV2.cxx:89
 AliPMDClusteringV2.cxx:90
 AliPMDClusteringV2.cxx:91
 AliPMDClusteringV2.cxx:92
 AliPMDClusteringV2.cxx:93
 AliPMDClusteringV2.cxx:94
 AliPMDClusteringV2.cxx:95
 AliPMDClusteringV2.cxx:96
 AliPMDClusteringV2.cxx:97
 AliPMDClusteringV2.cxx:98
 AliPMDClusteringV2.cxx:99
 AliPMDClusteringV2.cxx:100
 AliPMDClusteringV2.cxx:101
 AliPMDClusteringV2.cxx:102
 AliPMDClusteringV2.cxx:103
 AliPMDClusteringV2.cxx:104
 AliPMDClusteringV2.cxx:105
 AliPMDClusteringV2.cxx:106
 AliPMDClusteringV2.cxx:107
 AliPMDClusteringV2.cxx:108
 AliPMDClusteringV2.cxx:109
 AliPMDClusteringV2.cxx:110
 AliPMDClusteringV2.cxx:111
 AliPMDClusteringV2.cxx:112
 AliPMDClusteringV2.cxx:113
 AliPMDClusteringV2.cxx:114
 AliPMDClusteringV2.cxx:115
 AliPMDClusteringV2.cxx:116
 AliPMDClusteringV2.cxx:117
 AliPMDClusteringV2.cxx:118
 AliPMDClusteringV2.cxx:119
 AliPMDClusteringV2.cxx:120
 AliPMDClusteringV2.cxx:121
 AliPMDClusteringV2.cxx:122
 AliPMDClusteringV2.cxx:123
 AliPMDClusteringV2.cxx:124
 AliPMDClusteringV2.cxx:125
 AliPMDClusteringV2.cxx:126
 AliPMDClusteringV2.cxx:127
 AliPMDClusteringV2.cxx:128
 AliPMDClusteringV2.cxx:129
 AliPMDClusteringV2.cxx:130
 AliPMDClusteringV2.cxx:131
 AliPMDClusteringV2.cxx:132
 AliPMDClusteringV2.cxx:133
 AliPMDClusteringV2.cxx:134
 AliPMDClusteringV2.cxx:135
 AliPMDClusteringV2.cxx:136
 AliPMDClusteringV2.cxx:137
 AliPMDClusteringV2.cxx:138
 AliPMDClusteringV2.cxx:139
 AliPMDClusteringV2.cxx:140
 AliPMDClusteringV2.cxx:141
 AliPMDClusteringV2.cxx:142
 AliPMDClusteringV2.cxx:143
 AliPMDClusteringV2.cxx:144
 AliPMDClusteringV2.cxx:145
 AliPMDClusteringV2.cxx:146
 AliPMDClusteringV2.cxx:147
 AliPMDClusteringV2.cxx:148
 AliPMDClusteringV2.cxx:149
 AliPMDClusteringV2.cxx:150
 AliPMDClusteringV2.cxx:151
 AliPMDClusteringV2.cxx:152
 AliPMDClusteringV2.cxx:153
 AliPMDClusteringV2.cxx:154
 AliPMDClusteringV2.cxx:155
 AliPMDClusteringV2.cxx:156
 AliPMDClusteringV2.cxx:157
 AliPMDClusteringV2.cxx:158
 AliPMDClusteringV2.cxx:159
 AliPMDClusteringV2.cxx:160
 AliPMDClusteringV2.cxx:161
 AliPMDClusteringV2.cxx:162
 AliPMDClusteringV2.cxx:163
 AliPMDClusteringV2.cxx:164
 AliPMDClusteringV2.cxx:165
 AliPMDClusteringV2.cxx:166
 AliPMDClusteringV2.cxx:167
 AliPMDClusteringV2.cxx:168
 AliPMDClusteringV2.cxx:169
 AliPMDClusteringV2.cxx:170
 AliPMDClusteringV2.cxx:171
 AliPMDClusteringV2.cxx:172
 AliPMDClusteringV2.cxx:173
 AliPMDClusteringV2.cxx:174
 AliPMDClusteringV2.cxx:175
 AliPMDClusteringV2.cxx:176
 AliPMDClusteringV2.cxx:177
 AliPMDClusteringV2.cxx:178
 AliPMDClusteringV2.cxx:179
 AliPMDClusteringV2.cxx:180
 AliPMDClusteringV2.cxx:181
 AliPMDClusteringV2.cxx:182
 AliPMDClusteringV2.cxx:183
 AliPMDClusteringV2.cxx:184
 AliPMDClusteringV2.cxx:185
 AliPMDClusteringV2.cxx:186
 AliPMDClusteringV2.cxx:187
 AliPMDClusteringV2.cxx:188
 AliPMDClusteringV2.cxx:189
 AliPMDClusteringV2.cxx:190
 AliPMDClusteringV2.cxx:191
 AliPMDClusteringV2.cxx:192
 AliPMDClusteringV2.cxx:193
 AliPMDClusteringV2.cxx:194
 AliPMDClusteringV2.cxx:195
 AliPMDClusteringV2.cxx:196
 AliPMDClusteringV2.cxx:197
 AliPMDClusteringV2.cxx:198
 AliPMDClusteringV2.cxx:199
 AliPMDClusteringV2.cxx:200
 AliPMDClusteringV2.cxx:201
 AliPMDClusteringV2.cxx:202
 AliPMDClusteringV2.cxx:203
 AliPMDClusteringV2.cxx:204
 AliPMDClusteringV2.cxx:205
 AliPMDClusteringV2.cxx:206
 AliPMDClusteringV2.cxx:207
 AliPMDClusteringV2.cxx:208
 AliPMDClusteringV2.cxx:209
 AliPMDClusteringV2.cxx:210
 AliPMDClusteringV2.cxx:211
 AliPMDClusteringV2.cxx:212
 AliPMDClusteringV2.cxx:213
 AliPMDClusteringV2.cxx:214
 AliPMDClusteringV2.cxx:215
 AliPMDClusteringV2.cxx:216
 AliPMDClusteringV2.cxx:217
 AliPMDClusteringV2.cxx:218
 AliPMDClusteringV2.cxx:219
 AliPMDClusteringV2.cxx:220
 AliPMDClusteringV2.cxx:221
 AliPMDClusteringV2.cxx:222
 AliPMDClusteringV2.cxx:223
 AliPMDClusteringV2.cxx:224
 AliPMDClusteringV2.cxx:225
 AliPMDClusteringV2.cxx:226
 AliPMDClusteringV2.cxx:227
 AliPMDClusteringV2.cxx:228
 AliPMDClusteringV2.cxx:229
 AliPMDClusteringV2.cxx:230
 AliPMDClusteringV2.cxx:231
 AliPMDClusteringV2.cxx:232
 AliPMDClusteringV2.cxx:233
 AliPMDClusteringV2.cxx:234
 AliPMDClusteringV2.cxx:235
 AliPMDClusteringV2.cxx:236
 AliPMDClusteringV2.cxx:237
 AliPMDClusteringV2.cxx:238
 AliPMDClusteringV2.cxx:239
 AliPMDClusteringV2.cxx:240
 AliPMDClusteringV2.cxx:241
 AliPMDClusteringV2.cxx:242
 AliPMDClusteringV2.cxx:243
 AliPMDClusteringV2.cxx:244
 AliPMDClusteringV2.cxx:245
 AliPMDClusteringV2.cxx:246
 AliPMDClusteringV2.cxx:247
 AliPMDClusteringV2.cxx:248
 AliPMDClusteringV2.cxx:249
 AliPMDClusteringV2.cxx:250
 AliPMDClusteringV2.cxx:251
 AliPMDClusteringV2.cxx:252
 AliPMDClusteringV2.cxx:253
 AliPMDClusteringV2.cxx:254
 AliPMDClusteringV2.cxx:255
 AliPMDClusteringV2.cxx:256
 AliPMDClusteringV2.cxx:257
 AliPMDClusteringV2.cxx:258
 AliPMDClusteringV2.cxx:259
 AliPMDClusteringV2.cxx:260
 AliPMDClusteringV2.cxx:261
 AliPMDClusteringV2.cxx:262
 AliPMDClusteringV2.cxx:263
 AliPMDClusteringV2.cxx:264
 AliPMDClusteringV2.cxx:265
 AliPMDClusteringV2.cxx:266
 AliPMDClusteringV2.cxx:267
 AliPMDClusteringV2.cxx:268
 AliPMDClusteringV2.cxx:269
 AliPMDClusteringV2.cxx:270
 AliPMDClusteringV2.cxx:271
 AliPMDClusteringV2.cxx:272
 AliPMDClusteringV2.cxx:273
 AliPMDClusteringV2.cxx:274
 AliPMDClusteringV2.cxx:275
 AliPMDClusteringV2.cxx:276
 AliPMDClusteringV2.cxx:277
 AliPMDClusteringV2.cxx:278
 AliPMDClusteringV2.cxx:279
 AliPMDClusteringV2.cxx:280
 AliPMDClusteringV2.cxx:281
 AliPMDClusteringV2.cxx:282
 AliPMDClusteringV2.cxx:283
 AliPMDClusteringV2.cxx:284
 AliPMDClusteringV2.cxx:285
 AliPMDClusteringV2.cxx:286
 AliPMDClusteringV2.cxx:287
 AliPMDClusteringV2.cxx:288
 AliPMDClusteringV2.cxx:289
 AliPMDClusteringV2.cxx:290
 AliPMDClusteringV2.cxx:291
 AliPMDClusteringV2.cxx:292
 AliPMDClusteringV2.cxx:293
 AliPMDClusteringV2.cxx:294
 AliPMDClusteringV2.cxx:295
 AliPMDClusteringV2.cxx:296
 AliPMDClusteringV2.cxx:297
 AliPMDClusteringV2.cxx:298
 AliPMDClusteringV2.cxx:299
 AliPMDClusteringV2.cxx:300
 AliPMDClusteringV2.cxx:301
 AliPMDClusteringV2.cxx:302
 AliPMDClusteringV2.cxx:303
 AliPMDClusteringV2.cxx:304
 AliPMDClusteringV2.cxx:305
 AliPMDClusteringV2.cxx:306
 AliPMDClusteringV2.cxx:307
 AliPMDClusteringV2.cxx:308
 AliPMDClusteringV2.cxx:309
 AliPMDClusteringV2.cxx:310
 AliPMDClusteringV2.cxx:311
 AliPMDClusteringV2.cxx:312
 AliPMDClusteringV2.cxx:313
 AliPMDClusteringV2.cxx:314
 AliPMDClusteringV2.cxx:315
 AliPMDClusteringV2.cxx:316
 AliPMDClusteringV2.cxx:317
 AliPMDClusteringV2.cxx:318
 AliPMDClusteringV2.cxx:319
 AliPMDClusteringV2.cxx:320
 AliPMDClusteringV2.cxx:321
 AliPMDClusteringV2.cxx:322
 AliPMDClusteringV2.cxx:323
 AliPMDClusteringV2.cxx:324
 AliPMDClusteringV2.cxx:325
 AliPMDClusteringV2.cxx:326
 AliPMDClusteringV2.cxx:327
 AliPMDClusteringV2.cxx:328
 AliPMDClusteringV2.cxx:329
 AliPMDClusteringV2.cxx:330
 AliPMDClusteringV2.cxx:331
 AliPMDClusteringV2.cxx:332
 AliPMDClusteringV2.cxx:333
 AliPMDClusteringV2.cxx:334
 AliPMDClusteringV2.cxx:335
 AliPMDClusteringV2.cxx:336
 AliPMDClusteringV2.cxx:337
 AliPMDClusteringV2.cxx:338
 AliPMDClusteringV2.cxx:339
 AliPMDClusteringV2.cxx:340
 AliPMDClusteringV2.cxx:341
 AliPMDClusteringV2.cxx:342
 AliPMDClusteringV2.cxx:343
 AliPMDClusteringV2.cxx:344
 AliPMDClusteringV2.cxx:345
 AliPMDClusteringV2.cxx:346
 AliPMDClusteringV2.cxx:347
 AliPMDClusteringV2.cxx:348
 AliPMDClusteringV2.cxx:349
 AliPMDClusteringV2.cxx:350
 AliPMDClusteringV2.cxx:351
 AliPMDClusteringV2.cxx:352
 AliPMDClusteringV2.cxx:353
 AliPMDClusteringV2.cxx:354
 AliPMDClusteringV2.cxx:355
 AliPMDClusteringV2.cxx:356
 AliPMDClusteringV2.cxx:357
 AliPMDClusteringV2.cxx:358
 AliPMDClusteringV2.cxx:359
 AliPMDClusteringV2.cxx:360
 AliPMDClusteringV2.cxx:361
 AliPMDClusteringV2.cxx:362
 AliPMDClusteringV2.cxx:363
 AliPMDClusteringV2.cxx:364
 AliPMDClusteringV2.cxx:365
 AliPMDClusteringV2.cxx:366
 AliPMDClusteringV2.cxx:367
 AliPMDClusteringV2.cxx:368
 AliPMDClusteringV2.cxx:369
 AliPMDClusteringV2.cxx:370
 AliPMDClusteringV2.cxx:371
 AliPMDClusteringV2.cxx:372
 AliPMDClusteringV2.cxx:373
 AliPMDClusteringV2.cxx:374
 AliPMDClusteringV2.cxx:375
 AliPMDClusteringV2.cxx:376
 AliPMDClusteringV2.cxx:377
 AliPMDClusteringV2.cxx:378
 AliPMDClusteringV2.cxx:379
 AliPMDClusteringV2.cxx:380
 AliPMDClusteringV2.cxx:381
 AliPMDClusteringV2.cxx:382
 AliPMDClusteringV2.cxx:383
 AliPMDClusteringV2.cxx:384
 AliPMDClusteringV2.cxx:385
 AliPMDClusteringV2.cxx:386
 AliPMDClusteringV2.cxx:387
 AliPMDClusteringV2.cxx:388
 AliPMDClusteringV2.cxx:389
 AliPMDClusteringV2.cxx:390
 AliPMDClusteringV2.cxx:391
 AliPMDClusteringV2.cxx:392
 AliPMDClusteringV2.cxx:393
 AliPMDClusteringV2.cxx:394
 AliPMDClusteringV2.cxx:395
 AliPMDClusteringV2.cxx:396
 AliPMDClusteringV2.cxx:397
 AliPMDClusteringV2.cxx:398
 AliPMDClusteringV2.cxx:399
 AliPMDClusteringV2.cxx:400
 AliPMDClusteringV2.cxx:401
 AliPMDClusteringV2.cxx:402
 AliPMDClusteringV2.cxx:403
 AliPMDClusteringV2.cxx:404
 AliPMDClusteringV2.cxx:405
 AliPMDClusteringV2.cxx:406
 AliPMDClusteringV2.cxx:407
 AliPMDClusteringV2.cxx:408
 AliPMDClusteringV2.cxx:409
 AliPMDClusteringV2.cxx:410
 AliPMDClusteringV2.cxx:411
 AliPMDClusteringV2.cxx:412
 AliPMDClusteringV2.cxx:413
 AliPMDClusteringV2.cxx:414
 AliPMDClusteringV2.cxx:415
 AliPMDClusteringV2.cxx:416
 AliPMDClusteringV2.cxx:417
 AliPMDClusteringV2.cxx:418
 AliPMDClusteringV2.cxx:419
 AliPMDClusteringV2.cxx:420
 AliPMDClusteringV2.cxx:421
 AliPMDClusteringV2.cxx:422
 AliPMDClusteringV2.cxx:423
 AliPMDClusteringV2.cxx:424
 AliPMDClusteringV2.cxx:425
 AliPMDClusteringV2.cxx:426
 AliPMDClusteringV2.cxx:427
 AliPMDClusteringV2.cxx:428
 AliPMDClusteringV2.cxx:429
 AliPMDClusteringV2.cxx:430
 AliPMDClusteringV2.cxx:431
 AliPMDClusteringV2.cxx:432
 AliPMDClusteringV2.cxx:433
 AliPMDClusteringV2.cxx:434
 AliPMDClusteringV2.cxx:435
 AliPMDClusteringV2.cxx:436
 AliPMDClusteringV2.cxx:437
 AliPMDClusteringV2.cxx:438
 AliPMDClusteringV2.cxx:439
 AliPMDClusteringV2.cxx:440
 AliPMDClusteringV2.cxx:441
 AliPMDClusteringV2.cxx:442
 AliPMDClusteringV2.cxx:443
 AliPMDClusteringV2.cxx:444
 AliPMDClusteringV2.cxx:445
 AliPMDClusteringV2.cxx:446
 AliPMDClusteringV2.cxx:447
 AliPMDClusteringV2.cxx:448
 AliPMDClusteringV2.cxx:449
 AliPMDClusteringV2.cxx:450
 AliPMDClusteringV2.cxx:451
 AliPMDClusteringV2.cxx:452
 AliPMDClusteringV2.cxx:453
 AliPMDClusteringV2.cxx:454
 AliPMDClusteringV2.cxx:455
 AliPMDClusteringV2.cxx:456
 AliPMDClusteringV2.cxx:457
 AliPMDClusteringV2.cxx:458
 AliPMDClusteringV2.cxx:459
 AliPMDClusteringV2.cxx:460
 AliPMDClusteringV2.cxx:461
 AliPMDClusteringV2.cxx:462
 AliPMDClusteringV2.cxx:463
 AliPMDClusteringV2.cxx:464
 AliPMDClusteringV2.cxx:465
 AliPMDClusteringV2.cxx:466
 AliPMDClusteringV2.cxx:467
 AliPMDClusteringV2.cxx:468
 AliPMDClusteringV2.cxx:469
 AliPMDClusteringV2.cxx:470
 AliPMDClusteringV2.cxx:471
 AliPMDClusteringV2.cxx:472
 AliPMDClusteringV2.cxx:473
 AliPMDClusteringV2.cxx:474
 AliPMDClusteringV2.cxx:475
 AliPMDClusteringV2.cxx:476
 AliPMDClusteringV2.cxx:477
 AliPMDClusteringV2.cxx:478
 AliPMDClusteringV2.cxx:479
 AliPMDClusteringV2.cxx:480
 AliPMDClusteringV2.cxx:481
 AliPMDClusteringV2.cxx:482
 AliPMDClusteringV2.cxx:483
 AliPMDClusteringV2.cxx:484
 AliPMDClusteringV2.cxx:485
 AliPMDClusteringV2.cxx:486
 AliPMDClusteringV2.cxx:487
 AliPMDClusteringV2.cxx:488
 AliPMDClusteringV2.cxx:489
 AliPMDClusteringV2.cxx:490
 AliPMDClusteringV2.cxx:491
 AliPMDClusteringV2.cxx:492
 AliPMDClusteringV2.cxx:493
 AliPMDClusteringV2.cxx:494
 AliPMDClusteringV2.cxx:495
 AliPMDClusteringV2.cxx:496
 AliPMDClusteringV2.cxx:497
 AliPMDClusteringV2.cxx:498
 AliPMDClusteringV2.cxx:499
 AliPMDClusteringV2.cxx:500
 AliPMDClusteringV2.cxx:501
 AliPMDClusteringV2.cxx:502
 AliPMDClusteringV2.cxx:503
 AliPMDClusteringV2.cxx:504
 AliPMDClusteringV2.cxx:505
 AliPMDClusteringV2.cxx:506
 AliPMDClusteringV2.cxx:507
 AliPMDClusteringV2.cxx:508
 AliPMDClusteringV2.cxx:509
 AliPMDClusteringV2.cxx:510
 AliPMDClusteringV2.cxx:511
 AliPMDClusteringV2.cxx:512
 AliPMDClusteringV2.cxx:513
 AliPMDClusteringV2.cxx:514
 AliPMDClusteringV2.cxx:515
 AliPMDClusteringV2.cxx:516
 AliPMDClusteringV2.cxx:517
 AliPMDClusteringV2.cxx:518
 AliPMDClusteringV2.cxx:519
 AliPMDClusteringV2.cxx:520
 AliPMDClusteringV2.cxx:521
 AliPMDClusteringV2.cxx:522
 AliPMDClusteringV2.cxx:523
 AliPMDClusteringV2.cxx:524
 AliPMDClusteringV2.cxx:525
 AliPMDClusteringV2.cxx:526
 AliPMDClusteringV2.cxx:527
 AliPMDClusteringV2.cxx:528
 AliPMDClusteringV2.cxx:529
 AliPMDClusteringV2.cxx:530
 AliPMDClusteringV2.cxx:531
 AliPMDClusteringV2.cxx:532
 AliPMDClusteringV2.cxx:533
 AliPMDClusteringV2.cxx:534
 AliPMDClusteringV2.cxx:535
 AliPMDClusteringV2.cxx:536
 AliPMDClusteringV2.cxx:537
 AliPMDClusteringV2.cxx:538
 AliPMDClusteringV2.cxx:539
 AliPMDClusteringV2.cxx:540
 AliPMDClusteringV2.cxx:541
 AliPMDClusteringV2.cxx:542
 AliPMDClusteringV2.cxx:543
 AliPMDClusteringV2.cxx:544
 AliPMDClusteringV2.cxx:545
 AliPMDClusteringV2.cxx:546
 AliPMDClusteringV2.cxx:547
 AliPMDClusteringV2.cxx:548
 AliPMDClusteringV2.cxx:549
 AliPMDClusteringV2.cxx:550
 AliPMDClusteringV2.cxx:551
 AliPMDClusteringV2.cxx:552
 AliPMDClusteringV2.cxx:553
 AliPMDClusteringV2.cxx:554
 AliPMDClusteringV2.cxx:555
 AliPMDClusteringV2.cxx:556
 AliPMDClusteringV2.cxx:557
 AliPMDClusteringV2.cxx:558
 AliPMDClusteringV2.cxx:559
 AliPMDClusteringV2.cxx:560
 AliPMDClusteringV2.cxx:561
 AliPMDClusteringV2.cxx:562
 AliPMDClusteringV2.cxx:563
 AliPMDClusteringV2.cxx:564
 AliPMDClusteringV2.cxx:565
 AliPMDClusteringV2.cxx:566
 AliPMDClusteringV2.cxx:567
 AliPMDClusteringV2.cxx:568
 AliPMDClusteringV2.cxx:569
 AliPMDClusteringV2.cxx:570
 AliPMDClusteringV2.cxx:571
 AliPMDClusteringV2.cxx:572
 AliPMDClusteringV2.cxx:573
 AliPMDClusteringV2.cxx:574
 AliPMDClusteringV2.cxx:575
 AliPMDClusteringV2.cxx:576
 AliPMDClusteringV2.cxx:577
 AliPMDClusteringV2.cxx:578
 AliPMDClusteringV2.cxx:579
 AliPMDClusteringV2.cxx:580
 AliPMDClusteringV2.cxx:581
 AliPMDClusteringV2.cxx:582
 AliPMDClusteringV2.cxx:583
 AliPMDClusteringV2.cxx:584
 AliPMDClusteringV2.cxx:585
 AliPMDClusteringV2.cxx:586
 AliPMDClusteringV2.cxx:587
 AliPMDClusteringV2.cxx:588
 AliPMDClusteringV2.cxx:589
 AliPMDClusteringV2.cxx:590
 AliPMDClusteringV2.cxx:591
 AliPMDClusteringV2.cxx:592
 AliPMDClusteringV2.cxx:593
 AliPMDClusteringV2.cxx:594
 AliPMDClusteringV2.cxx:595
 AliPMDClusteringV2.cxx:596
 AliPMDClusteringV2.cxx:597
 AliPMDClusteringV2.cxx:598
 AliPMDClusteringV2.cxx:599
 AliPMDClusteringV2.cxx:600
 AliPMDClusteringV2.cxx:601
 AliPMDClusteringV2.cxx:602
 AliPMDClusteringV2.cxx:603
 AliPMDClusteringV2.cxx:604
 AliPMDClusteringV2.cxx:605
 AliPMDClusteringV2.cxx:606
 AliPMDClusteringV2.cxx:607
 AliPMDClusteringV2.cxx:608
 AliPMDClusteringV2.cxx:609
 AliPMDClusteringV2.cxx:610
 AliPMDClusteringV2.cxx:611
 AliPMDClusteringV2.cxx:612
 AliPMDClusteringV2.cxx:613
 AliPMDClusteringV2.cxx:614
 AliPMDClusteringV2.cxx:615
 AliPMDClusteringV2.cxx:616
 AliPMDClusteringV2.cxx:617
 AliPMDClusteringV2.cxx:618
 AliPMDClusteringV2.cxx:619
 AliPMDClusteringV2.cxx:620
 AliPMDClusteringV2.cxx:621
 AliPMDClusteringV2.cxx:622
 AliPMDClusteringV2.cxx:623
 AliPMDClusteringV2.cxx:624
 AliPMDClusteringV2.cxx:625
 AliPMDClusteringV2.cxx:626
 AliPMDClusteringV2.cxx:627
 AliPMDClusteringV2.cxx:628
 AliPMDClusteringV2.cxx:629
 AliPMDClusteringV2.cxx:630
 AliPMDClusteringV2.cxx:631
 AliPMDClusteringV2.cxx:632
 AliPMDClusteringV2.cxx:633
 AliPMDClusteringV2.cxx:634
 AliPMDClusteringV2.cxx:635
 AliPMDClusteringV2.cxx:636
 AliPMDClusteringV2.cxx:637
 AliPMDClusteringV2.cxx:638
 AliPMDClusteringV2.cxx:639
 AliPMDClusteringV2.cxx:640
 AliPMDClusteringV2.cxx:641
 AliPMDClusteringV2.cxx:642
 AliPMDClusteringV2.cxx:643
 AliPMDClusteringV2.cxx:644
 AliPMDClusteringV2.cxx:645
 AliPMDClusteringV2.cxx:646
 AliPMDClusteringV2.cxx:647
 AliPMDClusteringV2.cxx:648
 AliPMDClusteringV2.cxx:649
 AliPMDClusteringV2.cxx:650
 AliPMDClusteringV2.cxx:651
 AliPMDClusteringV2.cxx:652
 AliPMDClusteringV2.cxx:653
 AliPMDClusteringV2.cxx:654
 AliPMDClusteringV2.cxx:655
 AliPMDClusteringV2.cxx:656
 AliPMDClusteringV2.cxx:657
 AliPMDClusteringV2.cxx:658
 AliPMDClusteringV2.cxx:659
 AliPMDClusteringV2.cxx:660
 AliPMDClusteringV2.cxx:661
 AliPMDClusteringV2.cxx:662
 AliPMDClusteringV2.cxx:663
 AliPMDClusteringV2.cxx:664
 AliPMDClusteringV2.cxx:665
 AliPMDClusteringV2.cxx:666
 AliPMDClusteringV2.cxx:667
 AliPMDClusteringV2.cxx:668
 AliPMDClusteringV2.cxx:669
 AliPMDClusteringV2.cxx:670
 AliPMDClusteringV2.cxx:671
 AliPMDClusteringV2.cxx:672
 AliPMDClusteringV2.cxx:673
 AliPMDClusteringV2.cxx:674
 AliPMDClusteringV2.cxx:675
 AliPMDClusteringV2.cxx:676
 AliPMDClusteringV2.cxx:677
 AliPMDClusteringV2.cxx:678
 AliPMDClusteringV2.cxx:679
 AliPMDClusteringV2.cxx:680
 AliPMDClusteringV2.cxx:681
 AliPMDClusteringV2.cxx:682
 AliPMDClusteringV2.cxx:683
 AliPMDClusteringV2.cxx:684
 AliPMDClusteringV2.cxx:685
 AliPMDClusteringV2.cxx:686
 AliPMDClusteringV2.cxx:687
 AliPMDClusteringV2.cxx:688
 AliPMDClusteringV2.cxx:689
 AliPMDClusteringV2.cxx:690
 AliPMDClusteringV2.cxx:691
 AliPMDClusteringV2.cxx:692
 AliPMDClusteringV2.cxx:693
 AliPMDClusteringV2.cxx:694
 AliPMDClusteringV2.cxx:695
 AliPMDClusteringV2.cxx:696
 AliPMDClusteringV2.cxx:697
 AliPMDClusteringV2.cxx:698
 AliPMDClusteringV2.cxx:699
 AliPMDClusteringV2.cxx:700
 AliPMDClusteringV2.cxx:701
 AliPMDClusteringV2.cxx:702
 AliPMDClusteringV2.cxx:703
 AliPMDClusteringV2.cxx:704
 AliPMDClusteringV2.cxx:705
 AliPMDClusteringV2.cxx:706
 AliPMDClusteringV2.cxx:707
 AliPMDClusteringV2.cxx:708
 AliPMDClusteringV2.cxx:709
 AliPMDClusteringV2.cxx:710
 AliPMDClusteringV2.cxx:711
 AliPMDClusteringV2.cxx:712
 AliPMDClusteringV2.cxx:713
 AliPMDClusteringV2.cxx:714
 AliPMDClusteringV2.cxx:715
 AliPMDClusteringV2.cxx:716
 AliPMDClusteringV2.cxx:717
 AliPMDClusteringV2.cxx:718
 AliPMDClusteringV2.cxx:719
 AliPMDClusteringV2.cxx:720
 AliPMDClusteringV2.cxx:721
 AliPMDClusteringV2.cxx:722
 AliPMDClusteringV2.cxx:723
 AliPMDClusteringV2.cxx:724
 AliPMDClusteringV2.cxx:725
 AliPMDClusteringV2.cxx:726
 AliPMDClusteringV2.cxx:727
 AliPMDClusteringV2.cxx:728
 AliPMDClusteringV2.cxx:729
 AliPMDClusteringV2.cxx:730
 AliPMDClusteringV2.cxx:731
 AliPMDClusteringV2.cxx:732
 AliPMDClusteringV2.cxx:733
 AliPMDClusteringV2.cxx:734
 AliPMDClusteringV2.cxx:735
 AliPMDClusteringV2.cxx:736
 AliPMDClusteringV2.cxx:737
 AliPMDClusteringV2.cxx:738
 AliPMDClusteringV2.cxx:739
 AliPMDClusteringV2.cxx:740
 AliPMDClusteringV2.cxx:741
 AliPMDClusteringV2.cxx:742
 AliPMDClusteringV2.cxx:743
 AliPMDClusteringV2.cxx:744
 AliPMDClusteringV2.cxx:745
 AliPMDClusteringV2.cxx:746
 AliPMDClusteringV2.cxx:747
 AliPMDClusteringV2.cxx:748
 AliPMDClusteringV2.cxx:749
 AliPMDClusteringV2.cxx:750
 AliPMDClusteringV2.cxx:751
 AliPMDClusteringV2.cxx:752
 AliPMDClusteringV2.cxx:753
 AliPMDClusteringV2.cxx:754
 AliPMDClusteringV2.cxx:755
 AliPMDClusteringV2.cxx:756
 AliPMDClusteringV2.cxx:757
 AliPMDClusteringV2.cxx:758
 AliPMDClusteringV2.cxx:759
 AliPMDClusteringV2.cxx:760
 AliPMDClusteringV2.cxx:761
 AliPMDClusteringV2.cxx:762
 AliPMDClusteringV2.cxx:763
 AliPMDClusteringV2.cxx:764
 AliPMDClusteringV2.cxx:765
 AliPMDClusteringV2.cxx:766
 AliPMDClusteringV2.cxx:767
 AliPMDClusteringV2.cxx:768
 AliPMDClusteringV2.cxx:769
 AliPMDClusteringV2.cxx:770
 AliPMDClusteringV2.cxx:771
 AliPMDClusteringV2.cxx:772
 AliPMDClusteringV2.cxx:773
 AliPMDClusteringV2.cxx:774
 AliPMDClusteringV2.cxx:775
 AliPMDClusteringV2.cxx:776
 AliPMDClusteringV2.cxx:777
 AliPMDClusteringV2.cxx:778
 AliPMDClusteringV2.cxx:779
 AliPMDClusteringV2.cxx:780
 AliPMDClusteringV2.cxx:781
 AliPMDClusteringV2.cxx:782
 AliPMDClusteringV2.cxx:783
 AliPMDClusteringV2.cxx:784
 AliPMDClusteringV2.cxx:785
 AliPMDClusteringV2.cxx:786
 AliPMDClusteringV2.cxx:787
 AliPMDClusteringV2.cxx:788
 AliPMDClusteringV2.cxx:789
 AliPMDClusteringV2.cxx:790
 AliPMDClusteringV2.cxx:791
 AliPMDClusteringV2.cxx:792
 AliPMDClusteringV2.cxx:793
 AliPMDClusteringV2.cxx:794
 AliPMDClusteringV2.cxx:795
 AliPMDClusteringV2.cxx:796
 AliPMDClusteringV2.cxx:797
 AliPMDClusteringV2.cxx:798
 AliPMDClusteringV2.cxx:799
 AliPMDClusteringV2.cxx:800
 AliPMDClusteringV2.cxx:801
 AliPMDClusteringV2.cxx:802
 AliPMDClusteringV2.cxx:803
 AliPMDClusteringV2.cxx:804
 AliPMDClusteringV2.cxx:805
 AliPMDClusteringV2.cxx:806
 AliPMDClusteringV2.cxx:807
 AliPMDClusteringV2.cxx:808
 AliPMDClusteringV2.cxx:809
 AliPMDClusteringV2.cxx:810
 AliPMDClusteringV2.cxx:811
 AliPMDClusteringV2.cxx:812
 AliPMDClusteringV2.cxx:813
 AliPMDClusteringV2.cxx:814
 AliPMDClusteringV2.cxx:815
 AliPMDClusteringV2.cxx:816
 AliPMDClusteringV2.cxx:817
 AliPMDClusteringV2.cxx:818
 AliPMDClusteringV2.cxx:819
 AliPMDClusteringV2.cxx:820
 AliPMDClusteringV2.cxx:821
 AliPMDClusteringV2.cxx:822
 AliPMDClusteringV2.cxx:823
 AliPMDClusteringV2.cxx:824
 AliPMDClusteringV2.cxx:825
 AliPMDClusteringV2.cxx:826
 AliPMDClusteringV2.cxx:827
 AliPMDClusteringV2.cxx:828
 AliPMDClusteringV2.cxx:829
 AliPMDClusteringV2.cxx:830
 AliPMDClusteringV2.cxx:831
 AliPMDClusteringV2.cxx:832
 AliPMDClusteringV2.cxx:833
 AliPMDClusteringV2.cxx:834
 AliPMDClusteringV2.cxx:835
 AliPMDClusteringV2.cxx:836
 AliPMDClusteringV2.cxx:837
 AliPMDClusteringV2.cxx:838
 AliPMDClusteringV2.cxx:839
 AliPMDClusteringV2.cxx:840
 AliPMDClusteringV2.cxx:841
 AliPMDClusteringV2.cxx:842
 AliPMDClusteringV2.cxx:843
 AliPMDClusteringV2.cxx:844
 AliPMDClusteringV2.cxx:845
 AliPMDClusteringV2.cxx:846
 AliPMDClusteringV2.cxx:847
 AliPMDClusteringV2.cxx:848
 AliPMDClusteringV2.cxx:849
 AliPMDClusteringV2.cxx:850
 AliPMDClusteringV2.cxx:851
 AliPMDClusteringV2.cxx:852
 AliPMDClusteringV2.cxx:853
 AliPMDClusteringV2.cxx:854
 AliPMDClusteringV2.cxx:855
 AliPMDClusteringV2.cxx:856
 AliPMDClusteringV2.cxx:857
 AliPMDClusteringV2.cxx:858
 AliPMDClusteringV2.cxx:859
 AliPMDClusteringV2.cxx:860
 AliPMDClusteringV2.cxx:861
 AliPMDClusteringV2.cxx:862
 AliPMDClusteringV2.cxx:863
 AliPMDClusteringV2.cxx:864
 AliPMDClusteringV2.cxx:865
 AliPMDClusteringV2.cxx:866
 AliPMDClusteringV2.cxx:867
 AliPMDClusteringV2.cxx:868
 AliPMDClusteringV2.cxx:869
 AliPMDClusteringV2.cxx:870
 AliPMDClusteringV2.cxx:871
 AliPMDClusteringV2.cxx:872
 AliPMDClusteringV2.cxx:873
 AliPMDClusteringV2.cxx:874
 AliPMDClusteringV2.cxx:875
 AliPMDClusteringV2.cxx:876
 AliPMDClusteringV2.cxx:877
 AliPMDClusteringV2.cxx:878
 AliPMDClusteringV2.cxx:879
 AliPMDClusteringV2.cxx:880
 AliPMDClusteringV2.cxx:881
 AliPMDClusteringV2.cxx:882
 AliPMDClusteringV2.cxx:883
 AliPMDClusteringV2.cxx:884
 AliPMDClusteringV2.cxx:885
 AliPMDClusteringV2.cxx:886
 AliPMDClusteringV2.cxx:887
 AliPMDClusteringV2.cxx:888
 AliPMDClusteringV2.cxx:889
 AliPMDClusteringV2.cxx:890
 AliPMDClusteringV2.cxx:891
 AliPMDClusteringV2.cxx:892
 AliPMDClusteringV2.cxx:893
 AliPMDClusteringV2.cxx:894
 AliPMDClusteringV2.cxx:895
 AliPMDClusteringV2.cxx:896
 AliPMDClusteringV2.cxx:897
 AliPMDClusteringV2.cxx:898
 AliPMDClusteringV2.cxx:899
 AliPMDClusteringV2.cxx:900
 AliPMDClusteringV2.cxx:901
 AliPMDClusteringV2.cxx:902
 AliPMDClusteringV2.cxx:903
 AliPMDClusteringV2.cxx:904
 AliPMDClusteringV2.cxx:905
 AliPMDClusteringV2.cxx:906
 AliPMDClusteringV2.cxx:907
 AliPMDClusteringV2.cxx:908
 AliPMDClusteringV2.cxx:909
 AliPMDClusteringV2.cxx:910
 AliPMDClusteringV2.cxx:911
 AliPMDClusteringV2.cxx:912
 AliPMDClusteringV2.cxx:913
 AliPMDClusteringV2.cxx:914
 AliPMDClusteringV2.cxx:915
 AliPMDClusteringV2.cxx:916
 AliPMDClusteringV2.cxx:917
 AliPMDClusteringV2.cxx:918
 AliPMDClusteringV2.cxx:919
 AliPMDClusteringV2.cxx:920
 AliPMDClusteringV2.cxx:921
 AliPMDClusteringV2.cxx:922
 AliPMDClusteringV2.cxx:923
 AliPMDClusteringV2.cxx:924
 AliPMDClusteringV2.cxx:925
 AliPMDClusteringV2.cxx:926
 AliPMDClusteringV2.cxx:927
 AliPMDClusteringV2.cxx:928
 AliPMDClusteringV2.cxx:929
 AliPMDClusteringV2.cxx:930
 AliPMDClusteringV2.cxx:931
 AliPMDClusteringV2.cxx:932
 AliPMDClusteringV2.cxx:933
 AliPMDClusteringV2.cxx:934
 AliPMDClusteringV2.cxx:935
 AliPMDClusteringV2.cxx:936
 AliPMDClusteringV2.cxx:937
 AliPMDClusteringV2.cxx:938
 AliPMDClusteringV2.cxx:939
 AliPMDClusteringV2.cxx:940
 AliPMDClusteringV2.cxx:941
 AliPMDClusteringV2.cxx:942
 AliPMDClusteringV2.cxx:943
 AliPMDClusteringV2.cxx:944
 AliPMDClusteringV2.cxx:945
 AliPMDClusteringV2.cxx:946
 AliPMDClusteringV2.cxx:947
 AliPMDClusteringV2.cxx:948
 AliPMDClusteringV2.cxx:949
 AliPMDClusteringV2.cxx:950
 AliPMDClusteringV2.cxx:951
 AliPMDClusteringV2.cxx:952
 AliPMDClusteringV2.cxx:953
 AliPMDClusteringV2.cxx:954
 AliPMDClusteringV2.cxx:955
 AliPMDClusteringV2.cxx:956
 AliPMDClusteringV2.cxx:957
 AliPMDClusteringV2.cxx:958
 AliPMDClusteringV2.cxx:959
 AliPMDClusteringV2.cxx:960
 AliPMDClusteringV2.cxx:961
 AliPMDClusteringV2.cxx:962
 AliPMDClusteringV2.cxx:963
 AliPMDClusteringV2.cxx:964
 AliPMDClusteringV2.cxx:965
 AliPMDClusteringV2.cxx:966
 AliPMDClusteringV2.cxx:967
 AliPMDClusteringV2.cxx:968
 AliPMDClusteringV2.cxx:969
 AliPMDClusteringV2.cxx:970
 AliPMDClusteringV2.cxx:971
 AliPMDClusteringV2.cxx:972
 AliPMDClusteringV2.cxx:973
 AliPMDClusteringV2.cxx:974
 AliPMDClusteringV2.cxx:975
 AliPMDClusteringV2.cxx:976
 AliPMDClusteringV2.cxx:977
 AliPMDClusteringV2.cxx:978
 AliPMDClusteringV2.cxx:979
 AliPMDClusteringV2.cxx:980
 AliPMDClusteringV2.cxx:981
 AliPMDClusteringV2.cxx:982
 AliPMDClusteringV2.cxx:983
 AliPMDClusteringV2.cxx:984
 AliPMDClusteringV2.cxx:985
 AliPMDClusteringV2.cxx:986
 AliPMDClusteringV2.cxx:987
 AliPMDClusteringV2.cxx:988
 AliPMDClusteringV2.cxx:989
 AliPMDClusteringV2.cxx:990
 AliPMDClusteringV2.cxx:991
 AliPMDClusteringV2.cxx:992
 AliPMDClusteringV2.cxx:993
 AliPMDClusteringV2.cxx:994
 AliPMDClusteringV2.cxx:995
 AliPMDClusteringV2.cxx:996
 AliPMDClusteringV2.cxx:997
 AliPMDClusteringV2.cxx:998
 AliPMDClusteringV2.cxx:999
 AliPMDClusteringV2.cxx:1000
 AliPMDClusteringV2.cxx:1001
 AliPMDClusteringV2.cxx:1002
 AliPMDClusteringV2.cxx:1003
 AliPMDClusteringV2.cxx:1004
 AliPMDClusteringV2.cxx:1005
 AliPMDClusteringV2.cxx:1006
 AliPMDClusteringV2.cxx:1007
 AliPMDClusteringV2.cxx:1008
 AliPMDClusteringV2.cxx:1009
 AliPMDClusteringV2.cxx:1010
 AliPMDClusteringV2.cxx:1011
 AliPMDClusteringV2.cxx:1012
 AliPMDClusteringV2.cxx:1013
 AliPMDClusteringV2.cxx:1014
 AliPMDClusteringV2.cxx:1015
 AliPMDClusteringV2.cxx:1016
 AliPMDClusteringV2.cxx:1017
 AliPMDClusteringV2.cxx:1018
 AliPMDClusteringV2.cxx:1019
 AliPMDClusteringV2.cxx:1020
 AliPMDClusteringV2.cxx:1021
 AliPMDClusteringV2.cxx:1022
 AliPMDClusteringV2.cxx:1023
 AliPMDClusteringV2.cxx:1024
 AliPMDClusteringV2.cxx:1025
 AliPMDClusteringV2.cxx:1026
 AliPMDClusteringV2.cxx:1027
 AliPMDClusteringV2.cxx:1028
 AliPMDClusteringV2.cxx:1029
 AliPMDClusteringV2.cxx:1030
 AliPMDClusteringV2.cxx:1031
 AliPMDClusteringV2.cxx:1032
 AliPMDClusteringV2.cxx:1033
 AliPMDClusteringV2.cxx:1034
 AliPMDClusteringV2.cxx:1035
 AliPMDClusteringV2.cxx:1036
 AliPMDClusteringV2.cxx:1037
 AliPMDClusteringV2.cxx:1038
 AliPMDClusteringV2.cxx:1039
 AliPMDClusteringV2.cxx:1040
 AliPMDClusteringV2.cxx:1041
 AliPMDClusteringV2.cxx:1042
 AliPMDClusteringV2.cxx:1043
 AliPMDClusteringV2.cxx:1044
 AliPMDClusteringV2.cxx:1045
 AliPMDClusteringV2.cxx:1046
 AliPMDClusteringV2.cxx:1047
 AliPMDClusteringV2.cxx:1048
 AliPMDClusteringV2.cxx:1049
 AliPMDClusteringV2.cxx:1050
 AliPMDClusteringV2.cxx:1051
 AliPMDClusteringV2.cxx:1052
 AliPMDClusteringV2.cxx:1053
 AliPMDClusteringV2.cxx:1054
 AliPMDClusteringV2.cxx:1055
 AliPMDClusteringV2.cxx:1056
 AliPMDClusteringV2.cxx:1057
 AliPMDClusteringV2.cxx:1058
 AliPMDClusteringV2.cxx:1059
 AliPMDClusteringV2.cxx:1060
 AliPMDClusteringV2.cxx:1061
 AliPMDClusteringV2.cxx:1062
 AliPMDClusteringV2.cxx:1063
 AliPMDClusteringV2.cxx:1064
 AliPMDClusteringV2.cxx:1065
 AliPMDClusteringV2.cxx:1066
 AliPMDClusteringV2.cxx:1067
 AliPMDClusteringV2.cxx:1068
 AliPMDClusteringV2.cxx:1069
 AliPMDClusteringV2.cxx:1070
 AliPMDClusteringV2.cxx:1071
 AliPMDClusteringV2.cxx:1072
 AliPMDClusteringV2.cxx:1073
 AliPMDClusteringV2.cxx:1074
 AliPMDClusteringV2.cxx:1075
 AliPMDClusteringV2.cxx:1076
 AliPMDClusteringV2.cxx:1077
 AliPMDClusteringV2.cxx:1078
 AliPMDClusteringV2.cxx:1079
 AliPMDClusteringV2.cxx:1080
 AliPMDClusteringV2.cxx:1081