ROOT logo
//-------------------------------------------------------------------------
//            Implementation of the ITS clusterer V2 class
//
//          Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch
// This class is no longer used for ITS recosntruction:
// it has been replaced by the AliITSClusterFinderV2SXD classes
// It is still used as mother class by HLT reconstruction
//-------------------------------------------------------------------------


#include "AliLoader.h"
#include "AliRun.h"

#include "AliITSclustererV2.h"
#include "AliITSclusterV2.h"
#include "AliITSDetTypeRec.h"
#include "AliRawReader.h"
#include "AliITSRawStreamSPD.h"
#include "AliITSRawStreamSDD.h"
#include "AliITSRawStreamSSD.h"

#include <TFile.h>
#include <TTree.h>
#include <TClonesArray.h>
#include "AliITSgeomTGeo.h"
#include "AliITSdigitSPD.h"
#include "AliITSdigitSDD.h"
#include "AliITSdigitSSD.h"
#include "AliMC.h"

ClassImp(AliITSclustererV2)

extern AliRun *gAlice;

AliITSclustererV2::AliITSclustererV2():
fNModules(0),
fEvent(0),
fI(0),
fLastSPD1(0),
fNySPD(0),
fNzSPD(0),
fYpitchSPD(0),
fZ1pitchSPD(0),
fZ2pitchSPD(0),
fHwSPD(0),
fHlSPD(0),
fNySDD(0),
fNzSDD(0),
fYpitchSDD(0),
fZpitchSDD(0),
fHwSDD(0),
fHlSDD(0),
fYoffSDD(0),
fLastSSD1(0),
fYpitchSSD(0),
fHwSSD(0),
fHlSSD(0),
fTanP(0),
fTanN(0){
   //default constructor
  for(Int_t i=0;i<260;i++)fYSPD[i]=0.;
  for(Int_t i=0;i<170;i++)fZSPD[i]=0.;
  for(Int_t i=0;i<2200;i++){
    fYshift[i]=0.;
    fZshift[i]=0.;
    fNdet[i]=0;
    fNlayer[i]=0;
  }

}
AliITSclustererV2::AliITSclustererV2(const Char_t *geom):
fNModules(AliITSgeomTGeo::GetNModules()),
fEvent(0),
fI(0),
fLastSPD1(AliITSgeomTGeo::GetModuleIndex(2,1,1)-1),
fNySPD(256),
fNzSPD(160),
fYpitchSPD(0.0050),
fZ1pitchSPD(0.0425),
fZ2pitchSPD(0.0625),
fHwSPD(0.64),
fHlSPD(3.48),
fNySDD(256),
fNzSDD(256),
fYpitchSDD(0.01825),
fZpitchSDD(0.02940),
fHwSDD(3.5085),
fHlSDD(3.7632),
fYoffSDD(0.0425),
fLastSSD1(AliITSgeomTGeo::GetModuleIndex(6,1,1)-1),
fYpitchSSD(0.0095),
fHwSSD(3.65),
fHlSSD(2.00),
fTanP(0.0275),
fTanN(0.0075) {
  //------------------------------------------------------------
  // Standard constructor
  //------------------------------------------------------------
  if (geom) {
    AliWarning("\"geom\" is actually a dummy argument !");
  }
  Int_t m;
  for (m=0; m<fNModules; m++) {
     Int_t lay,lad,det; AliITSgeomTGeo::GetModuleId(m,lay,lad,det);
     const TGeoHMatrix *tm=AliITSgeomTGeo::GetTracking2LocalMatrix(m);
     fYshift[m] = (tm->Inverse()).GetTranslation()[1];
     fZshift[m] = (tm->Inverse()).GetTranslation()[2];
     fNdet[m] = (lad-1)*AliITSgeomTGeo::GetNDetectors(lay) + (det-1);
     fNlayer[m] = lay-1;
  }

  //SPD geometry  
  fYSPD[0]=0.5*fYpitchSPD;
  for (m=1; m<fNySPD; m++) fYSPD[m]=fYSPD[m-1]+fYpitchSPD; 
  fZSPD[0]=fZ1pitchSPD;
  for (m=1; m<fNzSPD; m++) {
    Double_t dz=fZ1pitchSPD;
    if (m==31 || m==32 || m==63  || m==64  || m==95 || m==96 || 
        m==127 || m==128) dz=fZ2pitchSPD; 
    fZSPD[m]=fZSPD[m-1]+dz;
  }
  for (m=0; m<fNzSPD; m++) {
    Double_t dz=0.5*fZ1pitchSPD;
    if (m==31 || m==32 || m==63  || m==64  || m==95 || m==96 || 
        m==127 || m==128) dz=0.5*fZ2pitchSPD; 
    fZSPD[m]-=dz;
  }

}


Int_t AliITSclustererV2::Digits2Clusters(TTree *dTree, TTree *cTree) {
  //------------------------------------------------------------
  // This function creates ITS clusters
  //------------------------------------------------------------
  Int_t ncl=0;

  if (!dTree) {
    Error("Digits2Clusters","Can't get the tree with digits !");
    return 1;
  }

  TClonesArray *digitsSPD=new TClonesArray("AliITSdigitSPD",3000);
  dTree->SetBranchAddress("ITSDigitsSPD",&digitsSPD);
  TClonesArray *digitsSDD=new TClonesArray("AliITSdigitSDD",3000);
  dTree->SetBranchAddress("ITSDigitsSDD",&digitsSDD);
  TClonesArray *digitsSSD=new TClonesArray("AliITSdigitSSD",3000);
  dTree->SetBranchAddress("ITSDigitsSSD",&digitsSSD);

  TClonesArray *clusters=new TClonesArray("AliITSclusterV2",1000);
  TBranch *branch=cTree->GetBranch("Clusters");
  if (!branch) cTree->Branch("Clusters",&clusters);
  else branch->SetAddress(&clusters);

  Int_t mmax=(Int_t)dTree->GetEntries();
  if (mmax!=fNModules) {
    Error("Digits2Clusters","Number of entries != number of modules !");
    return 1;
  }

  for (fI=0; fI<mmax; fI++) {
    dTree->GetEvent(fI);

    if     (digitsSPD->GetEntriesFast()!=0) 
      FindClustersSPD(digitsSPD,clusters);
    else 
      if(digitsSDD->GetEntriesFast()!=0) 
	FindClustersSDD(digitsSDD,clusters);
      else if(digitsSSD->GetEntriesFast()!=0) 
	FindClustersSSD(digitsSSD,clusters);
    
    ncl+=clusters->GetEntriesFast();

    cTree->Fill();

    digitsSPD->Clear();
    digitsSDD->Clear();
    digitsSSD->Clear();
    clusters->Clear();
  }

  //cTree->Write();

  delete clusters;

  delete digitsSPD;
  delete digitsSDD;
  delete digitsSSD;

  //delete dTree;

  Info("Digits2Clusters","Number of found clusters : %d",ncl);

  return 0;
}

void AliITSclustererV2::Digits2Clusters(AliRawReader* rawReader) {
  //------------------------------------------------------------
  // This function creates ITS clusters from raw data
  //------------------------------------------------------------
  AliRunLoader* runLoader = AliRunLoader::Instance();
  if (!runLoader) {
    Error("Digits2Clusters", "no run loader found");
    return;
  }
  runLoader->LoadKinematics();
  AliLoader* itsLoader = runLoader->GetLoader("ITSLoader");
  if (!itsLoader) {
    Error("Digits2Clusters", "no loader for ITS found");
    return;
  }
  if (!itsLoader->TreeR()) itsLoader->MakeTree("R");
  TTree* cTree = itsLoader->TreeR();

  TClonesArray *array=new TClonesArray("AliITSclusterV2",1000);
  cTree->Branch("Clusters",&array);
  delete array;

  TClonesArray** clusters = new TClonesArray*[fNModules]; 
  for (Int_t iModule = 0; iModule < fNModules; iModule++) {
    clusters[iModule] = NULL;
  }
  // one TClonesArray per module

  rawReader->Reset();
  AliITSRawStreamSPD inputSPD(rawReader);
  FindClustersSPD(&inputSPD, clusters);

  rawReader->Reset();
  AliITSRawStreamSDD inputSDD(rawReader);
  FindClustersSDD(&inputSDD, clusters);

  rawReader->Reset();
  AliITSRawStreamSSD inputSSD(rawReader);
  FindClustersSSD(&inputSSD, clusters);

  // write all clusters to the tree
  Int_t nClusters = 0;
  TClonesArray *emptyArray=new TClonesArray("AliITSclusterV2");
  for (Int_t iModule = 0; iModule < fNModules; iModule++) {
    array = clusters[iModule];
    if (!array) {
      Error("Digits2Clusters", "data for module %d missing!", iModule);
      array = emptyArray;
    }
    cTree->SetBranchAddress("Clusters", &array);
    cTree->Fill();
    nClusters += array->GetEntriesFast();
  }
  delete emptyArray;

  itsLoader->WriteRecPoints("OVERWRITE");

  delete[] clusters;

  Info("Digits2Clusters", "total number of found clusters in ITS: %d\n", 
       nClusters);
}

//**** Fast clusters *******************************
#include "TParticle.h"

//#include "AliITS.h"
#include "AliITSmodule.h"
#include "AliITSRecPoint.h"
#include "AliITSsimulationFastPoints.h"
#include "AliITSRecPoint.h"


static void CheckLabels(Int_t lab[3]) {
  //------------------------------------------------------------
  // Tries to find mother's labels
  //------------------------------------------------------------
  AliRunLoader *rl = AliRunLoader::Instance();
  TTree *trK=(TTree*)rl->TreeK();

  if(trK){
    Int_t label=lab[0];
    if (label>=0) {
      TParticle *part=(TParticle*)gAlice->GetMCApp()->Particle(label);
      label=-3;
      while (part->P() < 0.005) {
	Int_t m=part->GetFirstMother();
	if (m<0) {
	  Info("CheckLabels","Primary momentum: %f",part->P()); 
	  break;
	}
	if (part->GetStatusCode()>0) {
	  Info("CheckLabels","Primary momentum: %f",part->P()); 
	  break;
	}
	label=m;
	part=(TParticle*)gAlice->GetMCApp()->Particle(label);
      }
      if(lab[1]<0){
	lab[1]=label;
      }
      else if (lab[2]<0) {
	lab[2]=label;
      }
      else {
	//	cerr<<"CheckLabels : No empty labels !\n";
      }
    }
  }
}

/*
static void CheckLabels(Int_t lab[3]) {
  //------------------------------------------------------------
  // Tries to find mother's labels
  //------------------------------------------------------------

  if(lab[0]<0 && lab[1]<0 && lab[2]<0) return; // In case of no labels just exit

  Int_t ntracks = gAlice->GetMCApp()->GetNtrack();
  for (Int_t i=0;i<3;i++){
    Int_t label = lab[i];
    if (label>=0 && label<ntracks) {
      TParticle *part=(TParticle*)gAlice->GetMCApp()->Particle(label);
      if (part->P() < 0.005) {
	Int_t m=part->GetFirstMother();
	if (m<0) {	
	  continue;
	}
	if (part->GetStatusCode()>0) {
	  continue;
	}
	lab[i]=m;       
      }
    }    
  }
  
}
*/
static void CheckLabels2(Int_t lab[10]) {
  //------------------------------------------------------------
  // Tries to find mother's labels
  //------------------------------------------------------------
  AliRunLoader *rl = AliRunLoader::Instance();
  TTree *trK=(TTree*)rl->TreeK();

  if(trK){
    Int_t nlabels =0; 
    for (Int_t i=0;i<10;i++) if (lab[i]>=0) nlabels++;
    if(nlabels == 0) return; // In case of no labels just exit

    Int_t ntracks = gAlice->GetMCApp()->GetNtrack();

    for (Int_t i=0;i<10;i++){
      Int_t label = lab[i];
      if (label>=0 && label<ntracks) {
	TParticle *part=(TParticle*)gAlice->GetMCApp()->Particle(label);
	if (part->P() < 0.02) {
	  Int_t m=part->GetFirstMother();
	  if (m<0) {	
	    continue;
	  }
	  if (part->GetStatusCode()>0) {
	    continue;
	  }
	  lab[i]=m;       
	}
	else
	  if (part->P() < 0.12 && nlabels>3) {
	    lab[i]=-2;
	    nlabels--;
	  } 
      }
      else{
	if ( (label>ntracks||label <0) && nlabels>3) {
	  lab[i]=-2;
	  nlabels--;
	} 
      }
    }  
    if (nlabels>3){
      for (Int_t i=0;i<10;i++){
	if (nlabels>3){
	  Int_t label = lab[i];
	  if (label>=0 && label<ntracks) {
	    TParticle *part=(TParticle*)gAlice->GetMCApp()->Particle(label);
	    if (part->P() < 0.1) {
	      lab[i]=-2;
	      nlabels--;
	    }
	  }
	}
      }
    }

    //compress labels -- if multi-times the same
    Int_t lab2[10];
    for (Int_t i=0;i<10;i++) lab2[i]=-2;
    for (Int_t i=0;i<10  ;i++){
      if (lab[i]<0) continue;
      for (Int_t j=0;j<10 &&lab2[j]!=lab[i];j++){
	if (lab2[j]<0) {
	  lab2[j]= lab[i];
	  break;
	}
      }
    }
    for (Int_t j=0;j<10;j++) lab[j]=lab2[j];
  }
}

static void AddLabel(Int_t lab[10], Int_t label) {
// add label of the particle in the kine tree which originates this cluster
// (used for reconstruction of MC data only, for comparison purposes)
  AliRunLoader *rl = AliRunLoader::Instance();
  TTree *trK=(TTree*)rl->TreeK();

  if(trK){
    if(label<0) return; // In case of no label just exit

    Int_t ntracks = gAlice->GetMCApp()->GetNtrack();
    if (label>ntracks) return;
    for (Int_t i=0;i<10;i++){
      //    if (label<0) break;
      if (lab[i]==label) break;
      if (lab[i]<0) {
	lab[i]= label;
	break;
      }
    }
  }
}

void AliITSclustererV2::RecPoints2Clusters
(const TClonesArray *points, Int_t idx, TClonesArray *clusters) {
  //------------------------------------------------------------
  // Conversion AliITSRecPoint -> AliITSclusterV2 for the ITS 
  // subdetector indexed by idx 
  //------------------------------------------------------------
  TClonesArray &cl=*clusters;
  Int_t ncl=points->GetEntriesFast();
  for (Int_t i=0; i<ncl; i++) {
    AliITSRecPoint *p = (AliITSRecPoint *)points->UncheckedAt(i);
    Float_t lp[5];
    lp[0]=-(-p->GetDetLocalX()+fYshift[idx]); if (idx<=fLastSPD1) lp[0]*=-1; //SPD1
    lp[1]=  -p->GetZ()+fZshift[idx];
    lp[2]=p->GetSigmaDetLocX2();
    lp[3]=p->GetSigmaZ2();
    lp[4]=p->GetQ()*36./23333.;  //electrons -> ADC
    Int_t lab[4]; 
    lab[0]=p->GetLabel(0); lab[1]=p->GetLabel(1); lab[2]=p->GetLabel(2);
    lab[3]=fNdet[idx];
    CheckLabels(lab);
    Int_t dummy[3]={0,0,0};
    new (cl[i]) AliITSclusterV2(lab,lp, dummy);
  }  
} 

//***********************************


void AliITSclustererV2:: 
FindCluster(Int_t k,Int_t maxz,AliBin *bins,Int_t &n,Int_t *idx) {
  //------------------------------------------------------------
  // returns an array of indices of digits belonging to the cluster
  // (needed when the segmentation is not regular) 
  //------------------------------------------------------------
  if (n<200) idx[n++]=bins[k].GetIndex();
  bins[k].Use();

  if (bins[k-maxz].IsNotUsed()) FindCluster(k-maxz,maxz,bins,n,idx);
  if (bins[k-1   ].IsNotUsed()) FindCluster(k-1   ,maxz,bins,n,idx);
  if (bins[k+maxz].IsNotUsed()) FindCluster(k+maxz,maxz,bins,n,idx);
  if (bins[k+1   ].IsNotUsed()) FindCluster(k+1   ,maxz,bins,n,idx);
  /*
  if (bins[k-maxz-1].IsNotUsed()) FindCluster(k-maxz-1,maxz,bins,n,idx);
  if (bins[k-maxz+1].IsNotUsed()) FindCluster(k-maxz+1,maxz,bins,n,idx);
  if (bins[k+maxz-1].IsNotUsed()) FindCluster(k+maxz-1,maxz,bins,n,idx);
  if (bins[k+maxz+1].IsNotUsed()) FindCluster(k+maxz+1,maxz,bins,n,idx);
  */
}

void AliITSclustererV2::
FindClustersSPD(const TClonesArray *digits, TClonesArray *clusters) {
  //------------------------------------------------------------
  // Actual SPD cluster finder
  //------------------------------------------------------------
  Int_t kNzBins = fNzSPD + 2;
  const Int_t kMAXBIN=kNzBins*(fNySPD+2);

  Int_t ndigits=digits->GetEntriesFast();
  AliBin *bins=new AliBin[kMAXBIN];

  Int_t k;
  AliITSdigitSPD *d=0;
  for (k=0; k<ndigits; k++) {
     d=(AliITSdigitSPD*)digits->UncheckedAt(k);
     Int_t i=d->GetCoord2()+1;   //y
     Int_t j=d->GetCoord1()+1;
     bins[i*kNzBins+j].SetIndex(k);
     bins[i*kNzBins+j].SetMask(1);
  }
   
  Int_t n=0; TClonesArray &cl=*clusters;
  for (k=0; k<kMAXBIN; k++) {
     if (!bins[k].IsNotUsed()) continue;
     Int_t ni=0, idx[200];
     FindCluster(k,kNzBins,bins,ni,idx);
     if (ni==200) {
        Info("FindClustersSPD","Too big cluster !"); 
        continue;
     }
     Int_t milab[10];
     for (Int_t ilab=0;ilab<10;ilab++){
       milab[ilab]=-2;
     }

     d=(AliITSdigitSPD*)digits->UncheckedAt(idx[0]);
     Int_t ymin=d->GetCoord2(),ymax=ymin;
     Int_t zmin=d->GetCoord1(),zmax=zmin;

     for (Int_t l=0; l<ni; l++) {
        d=(AliITSdigitSPD*)digits->UncheckedAt(idx[l]);

        if (ymin > d->GetCoord2()) ymin=d->GetCoord2();
        if (ymax < d->GetCoord2()) ymax=d->GetCoord2();
        if (zmin > d->GetCoord1()) zmin=d->GetCoord1();
        if (zmax < d->GetCoord1()) zmax=d->GetCoord1();
	// MI addition - find all labels in cluster
	for (Int_t dlab=0;dlab<10;dlab++){
	  Int_t digitlab = (d->GetTracks())[dlab];
	  if (digitlab<0) continue;
	  AddLabel(milab,digitlab);	  
	}
	if (milab[9]>0) CheckLabels2(milab);
     }
     CheckLabels2(milab);
     //
     //Int_t idy = (fNlayer[fI]==0)? 2:3; 
     //for (Int_t iz=zmin; iz<=zmax;iz+=2)
     //Int_t idy = (ymax-ymin)/4.; // max 2 clusters
     Int_t idy = 0; // max 2 clusters
     if (fNlayer[fI]==0 &&idy<3) idy=3;
     if (fNlayer[fI]==1 &&idy<4) idy=4; 
     Int_t idz =3;
     for (Int_t iz=zmin; iz<=zmax;iz+=idz)
       for (Int_t iy=ymin; iy<=ymax;iy+=idy){
	 //
	 Int_t nodigits =0;
	 Float_t y=0.,z=0.,q=0.;	 
	 for (Int_t l=0; l<ni; l++) {
	   d=(AliITSdigitSPD*)digits->UncheckedAt(idx[l]);
	   if (zmax-zmin>=idz || ymax-ymin>=idy){
	     if (TMath::Abs( d->GetCoord2()-iy)>0.75*idy) continue;
	     if (TMath::Abs( d->GetCoord1()-iz)>0.75*idz) continue;
	   }
	   nodigits++;
	   Float_t qq=d->GetSignal();
	   y+=qq*fYSPD[d->GetCoord2()]; z+=qq*fZSPD[d->GetCoord1()]; q+=qq;   
	  
	 }     
	 if (nodigits==0) continue;
	 y/=q; z/=q;
	 y-=fHwSPD; z-=fHlSPD;
	 
	 Float_t lp[5];
	 lp[0]=-(-y+fYshift[fI]); if (fI<=fLastSPD1) lp[0]=-lp[0];
	 lp[1]=  -z+fZshift[fI];
	 // Float_t factor=TMath::Max(double(ni-3.),1.5);
	 Float_t factory=TMath::Max(ymax-ymin,1);
	 Float_t factorz=TMath::Max(zmax-zmin,1);
	 factory*= factory;
	 factorz*= factorz;	
	 //lp[2]= (fYpitchSPD*fYpitchSPD/12.)*factory;
	 //lp[3]= (fZ1pitchSPD*fZ1pitchSPD/12.)*factorz;
	 lp[2]= (fYpitchSPD*fYpitchSPD/12.);
	 lp[3]= (fZ1pitchSPD*fZ1pitchSPD/12.);
	 //lp[4]= q;
	 lp[4]= (zmax-zmin+1)*100 + (ymax-ymin+1);
	 
	 milab[3]=fNdet[fI];
	 Int_t info[3] = {ymax-ymin+1,zmax-zmin+1,fNlayer[fI]};
	 new (cl[n]) AliITSclusterV2(milab,lp,info); n++; 	 
       }
  }
  
  delete [] bins;
}

void AliITSclustererV2::FindClustersSPD(AliITSRawStream* input, 
					TClonesArray** clusters) 
{
  //------------------------------------------------------------
  // Actual SPD cluster finder for raw data
  //------------------------------------------------------------

  Int_t nClustersSPD = 0;
  Int_t kNzBins = fNzSPD + 2;
  Int_t kNyBins = fNySPD + 2;
  Int_t kMaxBin = kNzBins * kNyBins;
  AliBin *binsSPD = new AliBin[kMaxBin];
  AliBin *binsSPDInit = new AliBin[kMaxBin];
  AliBin *bins = NULL;

  // read raw data input stream
  while (kTRUE) {
    Bool_t next = input->Next();
    if (!next || input->IsNewModule()) {
      Int_t iModule = input->GetPrevModuleID();

      // when all data from a module was read, search for clusters
      if (bins) { 
	clusters[iModule] = new TClonesArray("AliITSclusterV2");
	Int_t nClusters = 0;

	for (Int_t iBin = 0; iBin < kMaxBin; iBin++) {
	  if (bins[iBin].IsUsed()) continue;
	  Int_t nBins = 0;
	  Int_t idxBins[200];
	  FindCluster(iBin, kNzBins, bins, nBins, idxBins);
	  if (nBins == 200) {
	    Error("FindClustersSPD", "SPD: Too big cluster !\n"); 
	    continue;
	  }

	  Int_t label[4]; 
	  label[0] = -2;
	  label[1] = -2;
	  label[2] = -2;
//	  label[3] = iModule;
	  label[3] = fNdet[iModule];

	  Int_t ymin = (idxBins[0] / kNzBins) - 1;
	  Int_t ymax = ymin;
	  Int_t zmin = (idxBins[0] % kNzBins) - 1;
	  Int_t zmax = zmin;
	  for (Int_t idx = 0; idx < nBins; idx++) {
	    Int_t iy = (idxBins[idx] / kNzBins) - 1;
	    Int_t iz = (idxBins[idx] % kNzBins) - 1;
	    if (ymin > iy) ymin = iy;
	    if (ymax < iy) ymax = iy;
	    if (zmin > iz) zmin = iz;
	    if (zmax < iz) zmax = iz;
	  }

	  Int_t idy = 0; // max 2 clusters
	  if ((iModule <= fLastSPD1) &&idy<3) idy=3;
	  if ((iModule > fLastSPD1) &&idy<4) idy=4; 
	  Int_t idz =3;
	  for (Int_t iiz=zmin; iiz<=zmax;iiz+=idz)
	    for (Int_t iiy=ymin; iiy<=ymax;iiy+=idy){
	      //
	      Int_t ndigits =0;
	      Float_t y=0.,z=0.,q=0.;	 
	      for (Int_t idx = 0; idx < nBins; idx++) {
		Int_t iy = (idxBins[idx] / kNzBins) - 1;
		Int_t iz = (idxBins[idx] % kNzBins) - 1;
		if (zmax-zmin>=idz || ymax-ymin>=idy){
		  if (TMath::Abs(iy-iiy)>0.75*idy) continue;
		  if (TMath::Abs(iz-iiz)>0.75*idz) continue;
		}
		ndigits++;
		Float_t qBin = bins[idxBins[idx]].GetQ();
		y += qBin * fYSPD[iy]; 
		z += qBin * fZSPD[iz]; 
		q += qBin;   
	      }
	      if (ndigits==0) continue;
	      y /= q; 
	      z /= q;
	      y -= fHwSPD; 
	      z -= fHlSPD;

	      Float_t hit[5];  // y, z, sigma(y)^2, sigma(z)^2, charge
	      hit[0] = -(-y+fYshift[iModule]); 
	      if (iModule <= fLastSPD1) hit[0] = -hit[0];
	      hit[1] = -z+fZshift[iModule];
	      hit[2] = fYpitchSPD*fYpitchSPD/12.;
	      hit[3] = fZ1pitchSPD*fZ1pitchSPD/12.;
	      //	  hit[4] = q;
	      hit[4] = (zmax-zmin+1)*100 + (ymax-ymin+1);
	      //	  CheckLabels(label);
	      Int_t info[3]={ymax-ymin+1,zmax-zmin+1,fNlayer[iModule]};
	      new (clusters[iModule]->AddrAt(nClusters)) 
		AliITSclusterV2(label, hit,info); 
	      nClusters++;
	    }
	}

	nClustersSPD += nClusters;
	bins = NULL;
      }

      if (!next) break;
      bins = binsSPD;
      memcpy(binsSPD,binsSPDInit,sizeof(AliBin)*kMaxBin);
    }

    // fill the current digit into the bins array
    if(bins){
      Int_t index = (input->GetCoord2()+1) * kNzBins + (input->GetCoord1()+1);
      bins[index].SetIndex(index);
      bins[index].SetMask(1);
      bins[index].SetQ(1);
    }
  }

  delete [] binsSPDInit;
  delete [] binsSPD;

  Info("FindClustersSPD", "found clusters in ITS SPD: %d", nClustersSPD);
}


Bool_t AliITSclustererV2::IsMaximum(Int_t k,Int_t max,const AliBin *bins) {
  //------------------------------------------------------------
  //is this a local maximum ?
  //------------------------------------------------------------
  UShort_t q=bins[k].GetQ();
  if (q==1023) return kFALSE;
  if (bins[k-max].GetQ() > q) return kFALSE;
  if (bins[k-1  ].GetQ() > q) return kFALSE; 
  if (bins[k+max].GetQ() > q) return kFALSE; 
  if (bins[k+1  ].GetQ() > q) return kFALSE; 
  if (bins[k-max-1].GetQ() > q) return kFALSE;
  if (bins[k+max-1].GetQ() > q) return kFALSE; 
  if (bins[k+max+1].GetQ() > q) return kFALSE; 
  if (bins[k-max+1].GetQ() > q) return kFALSE;
  return kTRUE; 
}

void AliITSclustererV2::
FindPeaks(Int_t k,Int_t max,AliBin *b,Int_t *idx,UInt_t *msk,Int_t& n) {
  //------------------------------------------------------------
  //find local maxima
  //------------------------------------------------------------
  if (n<31)
  if (IsMaximum(k,max,b)) {
    idx[n]=k; msk[n]=(2<<n);
    n++;
  }
  b[k].SetMask(0);
  if (b[k-max].GetMask()&1) FindPeaks(k-max,max,b,idx,msk,n);
  if (b[k-1  ].GetMask()&1) FindPeaks(k-1  ,max,b,idx,msk,n);
  if (b[k+max].GetMask()&1) FindPeaks(k+max,max,b,idx,msk,n);
  if (b[k+1  ].GetMask()&1) FindPeaks(k+1  ,max,b,idx,msk,n);
}

void AliITSclustererV2::
MarkPeak(Int_t k, Int_t max, AliBin *bins, UInt_t m) {
  //------------------------------------------------------------
  //mark this peak
  //------------------------------------------------------------
  UShort_t q=bins[k].GetQ();

  bins[k].SetMask(bins[k].GetMask()|m); 

  if (bins[k-max].GetQ() <= q)
     if ((bins[k-max].GetMask()&m) == 0) MarkPeak(k-max,max,bins,m);
  if (bins[k-1  ].GetQ() <= q)
     if ((bins[k-1  ].GetMask()&m) == 0) MarkPeak(k-1  ,max,bins,m);
  if (bins[k+max].GetQ() <= q)
     if ((bins[k+max].GetMask()&m) == 0) MarkPeak(k+max,max,bins,m);
  if (bins[k+1  ].GetQ() <= q)
     if ((bins[k+1  ].GetMask()&m) == 0) MarkPeak(k+1  ,max,bins,m);
}

void AliITSclustererV2::
MakeCluster(Int_t k,Int_t max,AliBin *bins,UInt_t m,AliITSclusterV2 &c) {
  //------------------------------------------------------------
  //make cluster using digits of this peak
  //------------------------------------------------------------
  Float_t q=(Float_t)bins[k].GetQ();
  Int_t i=k/max, j=k-i*max;

  c.SetQ(c.GetQ()+q);
  c.SetY(c.GetY()+i*q); 
  c.SetZ(c.GetZ()+j*q); 
  c.SetSigmaY2(c.GetSigmaY2()+i*i*q);
  c.SetSigmaZ2(c.GetSigmaZ2()+j*j*q);

  bins[k].SetMask(0xFFFFFFFE);
  
  if (bins[k-max].GetMask() == m) MakeCluster(k-max,max,bins,m,c);
  if (bins[k-1  ].GetMask() == m) MakeCluster(k-1  ,max,bins,m,c);
  if (bins[k+max].GetMask() == m) MakeCluster(k+max,max,bins,m,c);
  if (bins[k+1  ].GetMask() == m) MakeCluster(k+1  ,max,bins,m,c);
}

void AliITSclustererV2::
FindClustersSDD(AliBin* bins[2], Int_t nMaxBin, Int_t nzBins, 
		const TClonesArray *digits, TClonesArray *clusters) {
  //------------------------------------------------------------
  // Actual SDD cluster finder
  //------------------------------------------------------------
  Int_t ncl=0; TClonesArray &cl=*clusters;
  for (Int_t s=0; s<2; s++)
    for (Int_t i=0; i<nMaxBin; i++) {
      if (bins[s][i].IsUsed()) continue;
      Int_t idx[32]; UInt_t msk[32]; Int_t npeaks=0;
      FindPeaks(i, nzBins, bins[s], idx, msk, npeaks);

      if (npeaks>30) continue;
      if (npeaks==0) continue;

      Int_t k,l;
      for (k=0; k<npeaks-1; k++){//mark adjacent peaks
        if (idx[k] < 0) continue; //this peak is already removed
        for (l=k+1; l<npeaks; l++) {
           if (idx[l] < 0) continue; //this peak is already removed
           Int_t ki=idx[k]/nzBins, kj=idx[k] - ki*nzBins;
           Int_t li=idx[l]/nzBins, lj=idx[l] - li*nzBins;
           Int_t di=TMath::Abs(ki - li);
           Int_t dj=TMath::Abs(kj - lj);
           if (di>1 || dj>1) continue;
           if (bins[s][idx[k]].GetQ() > bins[s][idx[l]].GetQ()) {
              msk[l]=msk[k];
              idx[l]*=-1;
           } else {
              msk[k]=msk[l];
              idx[k]*=-1;
              break;
           } 
        }
      }

      for (k=0; k<npeaks; k++) {
        MarkPeak(TMath::Abs(idx[k]), nzBins, bins[s], msk[k]);
      }
        
      for (k=0; k<npeaks; k++) {
         if (idx[k] < 0) continue; //removed peak
         AliITSclusterV2 c;
         MakeCluster(idx[k], nzBins, bins[s], msk[k], c);
	 //mi change
	 Int_t milab[10];
	 for (Int_t ilab=0;ilab<10;ilab++){
	   milab[ilab]=-2;
	 }
	 Int_t maxi=0,mini=0,maxj=0,minj=0;
	 //AliBin *bmax=&bins[s][idx[k]];
	 //Float_t max = TMath::Max(TMath::Abs(bmax->GetQ())/5.,3.);
	 Float_t max=3;
	 for (Int_t di=-2; di<=2;di++)
	   for (Int_t dj=-3;dj<=3;dj++){
	     Int_t index = idx[k]+di+dj*nzBins;
	     if (index<0) continue;
	     if (index>=nMaxBin) continue;
	     AliBin *b=&bins[s][index];
	     if (TMath::Abs(b->GetQ())>max){
	       if (di>maxi) maxi=di;
	       if (di<mini) mini=di;
	       if (dj>maxj) maxj=dj;
	       if (dj<minj) minj=dj;
	       //
	       if(digits) {
		 if (TMath::Abs(di)<2&&TMath::Abs(dj)<2){
		   AliITSdigitSDD* d=(AliITSdigitSDD*)digits->UncheckedAt(b->GetIndex());
		   for (Int_t itrack=0;itrack<10;itrack++){
		     Int_t track = (d->GetTracks())[itrack];
		     if (track>=0) {
		       AddLabel(milab, track); 
		     }
		   }
		 }
	       }
	     }
	   }
	 
	 /* 
	    Float_t s2 = c.GetSigmaY2()/c.GetQ() - c.GetY()*c.GetY();
	    Float_t w=par->GetPadPitchWidth(sec);
	    c.SetSigmaY2(s2);
	    if (s2 != 0.) {
	    c.SetSigmaY2(c.GetSigmaY2()*0.108);
	    if (sec<par->GetNInnerSector()) c.SetSigmaY2(c.GetSigmaY2()*2.07);
	    }	 
	    s2 = c.GetSigmaZ2()/c.GetQ() - c.GetZ()*c.GetZ();
	    w=par->GetZWidth();
	    c.SetSigmaZ2(s2);
	    
	    if (s2 != 0.) {
	    c.SetSigmaZ2(c.GetSigmaZ2()*0.169);
	    if (sec<par->GetNInnerSector()) c.SetSigmaZ2(c.GetSigmaZ2()*1.77);
	    }
	 */

         Float_t y=c.GetY(),z=c.GetZ(), q=c.GetQ();
         y/=q; z/=q;
	 //
	 //Float_t s2 = c.GetSigmaY2()/c.GetQ() - y*y;
	 // c.SetSigmaY2(s2);
	 //s2 = c.GetSigmaZ2()/c.GetQ() - z*z;
         //c.SetSigmaZ2(s2);
	 //
         y=(y-0.5)*fYpitchSDD;
         y-=fHwSDD;
         y-=fYoffSDD;  //delay ?
         if (s) y=-y;

         z=(z-0.5)*fZpitchSDD;
         z-=fHlSDD;

         y=-(-y+fYshift[fI]);
         z=  -z+fZshift[fI];

         q/=12.7;  //this WAS consistent with SSD. To be reassessed 
                   // 23-MAR-2007
         Float_t hit[5] = {y, z, 0.0030*0.0030, 0.0020*0.0020, q};
         Int_t  info[3] = {maxj-minj+1, maxi-mini+1, fNlayer[fI]};

         if (c.GetQ() < 20.) continue; //noise cluster
	 
	 if (digits) {	  
	   //	   AliBin *b=&bins[s][idx[k]];
	   //	   AliITSdigitSDD* d=(AliITSdigitSDD*)digits->UncheckedAt(b->GetIndex());
	   {
	     //Int_t lab[3];
	     //lab[0]=(d->GetTracks())[0];
	     //lab[1]=(d->GetTracks())[1];
	     //lab[2]=(d->GetTracks())[2];
	     //CheckLabels(lab);
	     CheckLabels2(milab); 
	   }
	 }
         milab[3]=fNdet[fI];

         AliITSclusterV2 *cc = new (cl[ncl]) AliITSclusterV2(milab,hit,info);
         cc->SetType(npeaks); 
         ncl++;
      }
    }
}

void AliITSclustererV2::
FindClustersSDD(const TClonesArray *digits, TClonesArray *clusters) {
  //------------------------------------------------------------
  // Actual SDD cluster finder
  //------------------------------------------------------------
  Int_t kNzBins = fNzSDD + 2;
  const Int_t kMAXBIN=kNzBins*(fNySDD+2);

  AliBin *bins[2];
  bins[0]=new AliBin[kMAXBIN];
  bins[1]=new AliBin[kMAXBIN];

  AliITSdigitSDD *d=0;
  Int_t i, ndigits=digits->GetEntriesFast();
  for (i=0; i<ndigits; i++) {
     d=(AliITSdigitSDD*)digits->UncheckedAt(i);
     Int_t y=d->GetCoord2()+1;   //y
     Int_t z=d->GetCoord1()+1;   //z
     Int_t q=d->GetSignal();
     if (q<3) continue;

     if (z <= fNzSDD) {
       bins[0][y*kNzBins+z].SetQ(q);
       bins[0][y*kNzBins+z].SetMask(1);
       bins[0][y*kNzBins+z].SetIndex(i);
     } else {
       z-=fNzSDD; 
       bins[1][y*kNzBins+z].SetQ(q);
       bins[1][y*kNzBins+z].SetMask(1);
       bins[1][y*kNzBins+z].SetIndex(i);
     }
  }
  
  FindClustersSDD(bins, kMAXBIN, kNzBins, digits, clusters);

  delete[] bins[0];
  delete[] bins[1];

}

void AliITSclustererV2::FindClustersSDD(AliITSRawStream* input, 
					TClonesArray** clusters) 
{
  //------------------------------------------------------------
  // Actual SDD cluster finder for raw data
  //------------------------------------------------------------
  Int_t nClustersSDD = 0;
  Int_t kNzBins = fNzSDD + 2;
  Int_t kMaxBin = kNzBins * (fNySDD+2);
  AliBin *binsSDDInit = new AliBin[kMaxBin];
  AliBin *binsSDD1 = new AliBin[kMaxBin];
  AliBin *binsSDD2 = new AliBin[kMaxBin];
  AliBin *bins[2] = {NULL, NULL};

  // read raw data input stream
  while (kTRUE) {
    Bool_t next = input->Next();
    if (!next || input->IsNewModule()) {
      Int_t iModule = input->GetPrevModuleID();

      // when all data from a module was read, search for clusters
      if (bins[0]) { 
	clusters[iModule] = new TClonesArray("AliITSclusterV2");
	fI = iModule;
	FindClustersSDD(bins, kMaxBin, kNzBins, NULL, clusters[iModule]);
	Int_t nClusters = clusters[iModule]->GetEntriesFast();
	nClustersSDD += nClusters;
	bins[0] = bins[1] = NULL;
      }

      if (!next) break;
      bins[0]=binsSDD1;
      bins[1]=binsSDD2;
      memcpy(binsSDD1,binsSDDInit,sizeof(AliBin)*kMaxBin);
      memcpy(binsSDD2,binsSDDInit,sizeof(AliBin)*kMaxBin);
    }

    // fill the current digit into the bins array
    if(input->GetSignal()>=3) {
      Int_t iz = input->GetCoord1()+1;
      Int_t side = ((iz <= fNzSDD) ? 0 : 1);
      iz -= side*fNzSDD;
      Int_t index = (input->GetCoord2()+1) * kNzBins + iz;
      bins[side][index].SetQ(input->GetSignal());
      bins[side][index].SetMask(1);
      bins[side][index].SetIndex(index);
    }
  }

  delete[] binsSDD1;
  delete[] binsSDD2;
  delete[] binsSDDInit;

  Info("FindClustersSDD", "found clusters in ITS SDD: %d", nClustersSDD);
}



void AliITSclustererV2::
FindClustersSSD(Ali1Dcluster* neg, Int_t nn, 
		Ali1Dcluster* pos, Int_t np,
		TClonesArray *clusters) {
  //------------------------------------------------------------
  // Actual SSD cluster finder
  //------------------------------------------------------------
  TClonesArray &cl=*clusters;
  //
  Float_t tanp=fTanP, tann=fTanN;
  if (fI>fLastSSD1) {tann=fTanP; tanp=fTanN;}
  Int_t idet=fNdet[fI];
  Int_t ncl=0;
  //
  Int_t negativepair[30000];
  Int_t cnegative[3000];  
  Int_t cused1[3000];
  Int_t positivepair[30000];
  Int_t cpositive[3000];
  Int_t cused2[3000];
  for (Int_t i=0;i<3000;i++) {cnegative[i]=0; cused1[i]=0;}
  for (Int_t i=0;i<3000;i++) {cpositive[i]=0; cused2[i]=0;}
  for (Int_t i=0;i<30000;i++){negativepair[i]=positivepair[i]=0;}
  static Short_t pairs[1000][1000];
  memset(pairs,0,sizeof(Short_t)*1000000);
//   Short_t ** pairs = new Short_t*[1000];
//   for (Int_t i=0; i<1000; i++) {
//     pairs[i] = new Short_t[1000];
//     memset(pairs[i],0,sizeof(Short_t)*1000);
//   }  
  //
  // find available pairs
  //
  for (Int_t i=0; i<np; i++) {
    Float_t yp=pos[i].GetY()*fYpitchSSD; 
    if (pos[i].GetQ()<3) continue;
    for (Int_t j=0; j<nn; j++) {
      if (neg[j].GetQ()<3) continue;
      Float_t yn=neg[j].GetY()*fYpitchSSD;
      Float_t zt=(2*fHlSSD*tanp + yp - yn)/(tann+tanp);
      Float_t yt=yn + tann*zt;
      zt-=fHlSSD; yt-=fHwSSD;
      if (TMath::Abs(yt)<fHwSSD+0.01)
      if (TMath::Abs(zt)<fHlSSD+0.01*(neg[j].GetNd()+pos[i].GetNd())) {
	negativepair[i*10+cnegative[i]] =j;  //index
	positivepair[j*10+cpositive[j]] =i;
	cnegative[i]++;  //counters
	cpositive[j]++;	
	pairs[i][j]=100;
      }
    }
  }
  //
  for (Int_t i=0; i<np; i++) {
    Float_t yp=pos[i].GetY()*fYpitchSSD; 
    if (pos[i].GetQ()<3) continue;
    for (Int_t j=0; j<nn; j++) {
      if (neg[j].GetQ()<3) continue;
      if (cpositive[j]&&cnegative[i]) continue;
      Float_t yn=neg[j].GetY()*fYpitchSSD;
      Float_t zt=(2*fHlSSD*tanp + yp - yn)/(tann+tanp);
      Float_t yt=yn + tann*zt;
      zt-=fHlSSD; yt-=fHwSSD;
      if (TMath::Abs(yt)<fHwSSD+0.1)
      if (TMath::Abs(zt)<fHlSSD+0.15) {
	if (cnegative[i]==0) pos[i].SetNd(100);  // not available pair
	if (cpositive[j]==0) neg[j].SetNd(100);  // not available pair
	negativepair[i*10+cnegative[i]] =j;  //index
	positivepair[j*10+cpositive[j]] =i;
	cnegative[i]++;  //counters
	cpositive[j]++;	
	pairs[i][j]=100;
      }
    }
  }
  //
  Float_t lp[5];
  Int_t milab[10];
  Double_t ratio;
  
  //
  // sign gold tracks
  //
  for (Int_t ip=0;ip<np;ip++){
    Float_t ybest=1000,zbest=1000,qbest=0;
    //
    // select gold clusters
    if ( (cnegative[ip]==1) && cpositive[negativepair[10*ip]]==1){ 
      Float_t yp=pos[ip].GetY()*fYpitchSSD; 
      Int_t j = negativepair[10*ip];      
      ratio = (pos[ip].GetQ()-neg[j].GetQ())/(pos[ip].GetQ()+neg[j].GetQ());
      //
      Float_t yn=neg[j].GetY()*fYpitchSSD;
      Float_t zt=(2*fHlSSD*tanp + yp - yn)/(tann+tanp);
      Float_t yt=yn + tann*zt;
      zt-=fHlSSD; yt-=fHwSSD;
      ybest=yt; zbest=zt; 
      qbest=0.5*(pos[ip].GetQ()+neg[j].GetQ());
      lp[0]=-(-ybest+fYshift[fI]);
      lp[1]=  -zbest+fZshift[fI];
      lp[2]=0.0025*0.0025;  //SigmaY2
      lp[3]=0.110*0.110;  //SigmaZ2
      
      lp[4]=qbest;        //Q
      for (Int_t ilab=0;ilab<10;ilab++) milab[ilab]=-2;
      for (Int_t ilab=0;ilab<3;ilab++){
	milab[ilab] = pos[ip].GetLabel(ilab);
	milab[ilab+3] = neg[j].GetLabel(ilab);
      }
      //
      CheckLabels2(milab);
      milab[3]=(((ip<<10) + j)<<10) + idet; // pos|neg|det
      Int_t info[3] = {pos[ip].GetNd(),neg[j].GetNd(),fNlayer[fI]};
      AliITSclusterV2 * cl2 = new (cl[ncl]) AliITSclusterV2(milab,lp,info);
      ncl++;
      cl2->SetChargeRatio(ratio);    	
      cl2->SetType(1);
      pairs[ip][j]=1;
      if ((pos[ip].GetNd()+neg[j].GetNd())>6){ //multi cluster
	cl2->SetType(2);
	pairs[ip][j]=2;
      }
      cused1[ip]++;
      cused2[j]++;
    }
  }
    
  for (Int_t ip=0;ip<np;ip++){
    Float_t ybest=1000,zbest=1000,qbest=0;
    //
    //
    // select "silber" cluster
    if ( cnegative[ip]==1 && cpositive[negativepair[10*ip]]==2){
      Int_t in  = negativepair[10*ip];
      Int_t ip2 = positivepair[10*in];
      if (ip2==ip) ip2 =  positivepair[10*in+1];
      Float_t pcharge = pos[ip].GetQ()+pos[ip2].GetQ();
      if (TMath::Abs(pcharge-neg[in].GetQ())<10){
	//
	// add first pair
	if (pairs[ip][in]==100){  //
	  Float_t yp=pos[ip].GetY()*fYpitchSSD; 
	  Float_t yn=neg[in].GetY()*fYpitchSSD;
	  Float_t zt=(2*fHlSSD*tanp + yp - yn)/(tann+tanp);
	  Float_t yt=yn + tann*zt;
	  zt-=fHlSSD; yt-=fHwSSD;
	  ybest =yt;  zbest=zt; 
	  qbest =pos[ip].GetQ();
	  lp[0]=-(-ybest+fYshift[fI]);
	  lp[1]=  -zbest+fZshift[fI];
	  lp[2]=0.0025*0.0025;  //SigmaY2
	  lp[3]=0.110*0.110;  //SigmaZ2
	  
	  lp[4]=qbest;        //Q
	  for (Int_t ilab=0;ilab<10;ilab++) milab[ilab]=-2;
	  for (Int_t ilab=0;ilab<3;ilab++){
	    milab[ilab] = pos[ip].GetLabel(ilab);
	    milab[ilab+3] = neg[in].GetLabel(ilab);
	  }
	  //
	  CheckLabels2(milab);
	  ratio = (pos[ip].GetQ()-neg[in].GetQ())/(pos[ip].GetQ()+neg[in].GetQ());
	  milab[3]=(((ip<<10) + in)<<10) + idet; // pos|neg|det
	  Int_t info[3] = {pos[ip].GetNd(),neg[in].GetNd(),fNlayer[fI]};
	  AliITSclusterV2 * cl2 = new (cl[ncl]) AliITSclusterV2(milab,lp,info);
	  ncl++;
	  cl2->SetChargeRatio(ratio);    	
	  cl2->SetType(5);
	  pairs[ip][in] = 5;
	  if ((pos[ip].GetNd()+neg[in].GetNd())>6){ //multi cluster
	    cl2->SetType(6);
	    pairs[ip][in] = 6;
	  }
	}
	//
	// add second pair
	
	//	if (!(cused1[ip2] || cused2[in])){  //
	if (pairs[ip2][in]==100){
	  Float_t yp=pos[ip2].GetY()*fYpitchSSD;
	  Float_t yn=neg[in].GetY()*fYpitchSSD;
	  Float_t zt=(2*fHlSSD*tanp + yp - yn)/(tann+tanp);
	  Float_t yt=yn + tann*zt;
	  zt-=fHlSSD; yt-=fHwSSD;
	  ybest =yt;  zbest=zt; 
	  qbest =pos[ip2].GetQ();
	  lp[0]=-(-ybest+fYshift[fI]);
	  lp[1]=  -zbest+fZshift[fI];
	  lp[2]=0.0025*0.0025;  //SigmaY2
	  lp[3]=0.110*0.110;  //SigmaZ2
	  
	  lp[4]=qbest;        //Q
	  for (Int_t ilab=0;ilab<10;ilab++) milab[ilab]=-2;
	  for (Int_t ilab=0;ilab<3;ilab++){
	    milab[ilab] = pos[ip2].GetLabel(ilab);
	    milab[ilab+3] = neg[in].GetLabel(ilab);
	  }
	  //
	  CheckLabels2(milab);
	  ratio = (pos[ip2].GetQ()-neg[in].GetQ())/(pos[ip2].GetQ()+neg[in].GetQ());
	  milab[3]=(((ip2<<10) + in)<<10) + idet; // pos|neg|det
	  Int_t info[3] = {pos[ip2].GetNd(),neg[in].GetNd(),fNlayer[fI]};
	  AliITSclusterV2 *cl2 = new (cl[ncl]) AliITSclusterV2(milab,lp,info);
	  ncl++;
	  cl2->SetChargeRatio(ratio);    	
	  cl2->SetType(5);
	  pairs[ip2][in] =5;
	  if ((pos[ip2].GetNd()+neg[in].GetNd())>6){ //multi cluster
	    cl2->SetType(6);
	    pairs[ip2][in] =6;
	  }
	}	
	cused1[ip]++;
	cused1[ip2]++;
	cused2[in]++;
      }
    }    
  }
  
  //  
  for (Int_t jn=0;jn<nn;jn++){
    if (cused2[jn]) continue;
    Float_t ybest=1000,zbest=1000,qbest=0;
    // select "silber" cluster
    if ( cpositive[jn]==1 && cnegative[positivepair[10*jn]]==2){
      Int_t ip  = positivepair[10*jn];
      Int_t jn2 = negativepair[10*ip];
      if (jn2==jn) jn2 =  negativepair[10*ip+1];
      Float_t pcharge = neg[jn].GetQ()+neg[jn2].GetQ();
      //
      if (TMath::Abs(pcharge-pos[ip].GetQ())<10){
	//
	// add first pair
	//	if (!(cused1[ip]||cused2[jn])){
	if (pairs[ip][jn]==100){
	  Float_t yn=neg[jn].GetY()*fYpitchSSD; 
	  Float_t yp=pos[ip].GetY()*fYpitchSSD;
	  Float_t zt=(2*fHlSSD*tanp + yp - yn)/(tann+tanp);
	  Float_t yt=yn + tann*zt;
	  zt-=fHlSSD; yt-=fHwSSD;
	  ybest =yt;  zbest=zt; 
	  qbest =neg[jn].GetQ();
	  lp[0]=-(-ybest+fYshift[fI]);
	  lp[1]=  -zbest+fZshift[fI];
	  lp[2]=0.0025*0.0025;  //SigmaY2
	  lp[3]=0.110*0.110;  //SigmaZ2
	  
	  lp[4]=qbest;        //Q
	  for (Int_t ilab=0;ilab<10;ilab++) milab[ilab]=-2;
	  for (Int_t ilab=0;ilab<3;ilab++){
	    milab[ilab] = pos[ip].GetLabel(ilab);
	    milab[ilab+3] = neg[jn].GetLabel(ilab);
	  }
	  //
	  CheckLabels2(milab);
	  ratio = (pos[ip].GetQ()-neg[jn].GetQ())/(pos[ip].GetQ()+neg[jn].GetQ());
	  milab[3]=(((ip<<10) + jn)<<10) + idet; // pos|neg|det
	  Int_t info[3] = {pos[ip].GetNd(),neg[jn].GetNd(),fNlayer[fI]};
	  AliITSclusterV2 * cl2 = new (cl[ncl]) AliITSclusterV2(milab,lp,info);
	  ncl++;
	  cl2->SetChargeRatio(ratio);    	
	  cl2->SetType(7);
	  pairs[ip][jn] =7;
	  if ((pos[ip].GetNd()+neg[jn].GetNd())>6){ //multi cluster
	    cl2->SetType(8);
	    pairs[ip][jn]=8;
	  }
	}
	//
	// add second pair
	//	if (!(cused1[ip]||cused2[jn2])){
	if (pairs[ip][jn2]==100){
	  Float_t yn=neg[jn2].GetY()*fYpitchSSD; 
	  Double_t yp=pos[ip].GetY()*fYpitchSSD; 
	  Double_t zt=(2*fHlSSD*tanp + yp - yn)/(tann+tanp);
	  Double_t yt=yn + tann*zt;
	  zt-=fHlSSD; yt-=fHwSSD;
	  ybest =yt;  zbest=zt; 
	  qbest =neg[jn2].GetQ();
	  lp[0]=-(-ybest+fYshift[fI]);
	  lp[1]=  -zbest+fZshift[fI];
	  lp[2]=0.0025*0.0025;  //SigmaY2
	  lp[3]=0.110*0.110;  //SigmaZ2
	  
	  lp[4]=qbest;        //Q
	  for (Int_t ilab=0;ilab<10;ilab++) milab[ilab]=-2;
	  for (Int_t ilab=0;ilab<3;ilab++){
	    milab[ilab] = pos[ip].GetLabel(ilab);
	    milab[ilab+3] = neg[jn2].GetLabel(ilab);
	  }
	  //
	  CheckLabels2(milab);
	  ratio = (pos[ip].GetQ()-neg[jn2].GetQ())/(pos[ip].GetQ()+neg[jn2].GetQ());
	  milab[3]=(((ip<<10) + jn2)<<10) + idet; // pos|neg|det
	  Int_t info[3] = {pos[ip].GetNd(),neg[jn2].GetNd(),fNlayer[fI]};
	  AliITSclusterV2* cl2 = new (cl[ncl]) AliITSclusterV2(milab,lp,info);
	  ncl++;
	  cl2->SetChargeRatio(ratio);    	
	  pairs[ip][jn2]=7;
	  cl2->SetType(7);
	  if ((pos[ip].GetNd()+neg[jn2].GetNd())>6){ //multi cluster
	    cl2->SetType(8);
	    pairs[ip][jn2]=8;
	  }
	}
	cused1[ip]++;
	cused2[jn]++;
	cused2[jn2]++;
      }
    }    
  }
  
  for (Int_t ip=0;ip<np;ip++){
    Float_t ybest=1000,zbest=1000,qbest=0;
    //
    // 2x2 clusters
    //
    if ( (cnegative[ip]<5) && cpositive[negativepair[10*ip]]<5){ 
      Float_t minchargediff =4.;
      Int_t j=-1;
      for (Int_t di=0;di<cnegative[ip];di++){
	Int_t   jc = negativepair[ip*10+di];
	Float_t chargedif = pos[ip].GetQ()-neg[jc].GetQ();
	if (TMath::Abs(chargedif)<minchargediff){
	  j =jc;
	  minchargediff = TMath::Abs(chargedif);
	}
      }
      if (j<0) continue;  // not proper cluster      
      Int_t count =0;
      for (Int_t di=0;di<cnegative[ip];di++){
	Int_t   jc = negativepair[ip*10+di];
	Float_t chargedif = pos[ip].GetQ()-neg[jc].GetQ();
	if (TMath::Abs(chargedif)<minchargediff+3.) count++;
      }
      if (count>1) continue;  // more than one "proper" cluster for positive
      //
      count =0;
      for (Int_t dj=0;dj<cpositive[j];dj++){
	Int_t   ic  = positivepair[j*10+dj];
	Float_t chargedif = pos[ic].GetQ()-neg[j].GetQ();
	if (TMath::Abs(chargedif)<minchargediff+3.) count++;
      }
      if (count>1) continue;  // more than one "proper" cluster for negative
      
      Int_t jp = 0;
      
      count =0;
      for (Int_t dj=0;dj<cnegative[jp];dj++){
	Int_t   ic = positivepair[jp*10+dj];
	Float_t chargedif = pos[ic].GetQ()-neg[jp].GetQ();
	if (TMath::Abs(chargedif)<minchargediff+4.) count++;
      }
      if (count>1) continue;   
      if (pairs[ip][j]<100) continue;
      //
      //almost gold clusters
      Float_t yp=pos[ip].GetY()*fYpitchSSD; 
      Float_t yn=neg[j].GetY()*fYpitchSSD;
      Float_t zt=(2*fHlSSD*tanp + yp - yn)/(tann+tanp);
      Float_t yt=yn + tann*zt;
      zt-=fHlSSD; yt-=fHwSSD;
      ybest=yt; zbest=zt; 
      qbest=0.5*(pos[ip].GetQ()+neg[j].GetQ());
      lp[0]=-(-ybest+fYshift[fI]);
      lp[1]=  -zbest+fZshift[fI];
      lp[2]=0.0025*0.0025;  //SigmaY2
      lp[3]=0.110*0.110;  //SigmaZ2	
      lp[4]=qbest;        //Q
      for (Int_t ilab=0;ilab<10;ilab++) milab[ilab]=-2;
      for (Int_t ilab=0;ilab<3;ilab++){
	milab[ilab] = pos[ip].GetLabel(ilab);
	milab[ilab+3] = neg[j].GetLabel(ilab);
      }
      //
      CheckLabels2(milab);
      ratio = (pos[ip].GetQ()-neg[j].GetQ())/(pos[ip].GetQ()+neg[j].GetQ());
      milab[3]=(((ip<<10) + j)<<10) + idet; // pos|neg|det
      Int_t info[3] = {pos[ip].GetNd(),neg[j].GetNd(),fNlayer[fI]};
      AliITSclusterV2 * cl2 = new (cl[ncl]) AliITSclusterV2(milab,lp,info);
      ncl++;
      cl2->SetChargeRatio(ratio);    	
      cl2->SetType(10);
      pairs[ip][j]=10;
      if ((pos[ip].GetNd()+neg[j].GetNd())>6){ //multi cluster
	cl2->SetType(11);
	pairs[ip][j]=11;
      }
      cused1[ip]++;
      cused2[j]++;      
    }

  }
  
  //  
  for (Int_t i=0; i<np; i++) {
    Float_t ybest=1000,zbest=1000,qbest=0;
    Float_t yp=pos[i].GetY()*fYpitchSSD; 
    if (pos[i].GetQ()<3) continue;
    for (Int_t j=0; j<nn; j++) {
    //    for (Int_t di = 0;di<cpositive[i];di++){
    //  Int_t j = negativepair[10*i+di];
      if (neg[j].GetQ()<3) continue;
      if (cused2[j]||cused1[i]) continue;      
      if (pairs[i][j]>0 &&pairs[i][j]<100) continue;
      ratio = (pos[i].GetQ()-neg[j].GetQ())/(pos[i].GetQ()+neg[j].GetQ());      
      Float_t yn=neg[j].GetY()*fYpitchSSD;
      Float_t zt=(2*fHlSSD*tanp + yp - yn)/(tann+tanp);
      Float_t yt=yn + tann*zt;
      zt-=fHlSSD; yt-=fHwSSD;
      if (TMath::Abs(yt)<fHwSSD+0.01)
      if (TMath::Abs(zt)<fHlSSD+0.01*(neg[j].GetNd()+pos[i].GetNd())) {
        ybest=yt; zbest=zt; 
        qbest=0.5*(pos[i].GetQ()+neg[j].GetQ());
        lp[0]=-(-ybest+fYshift[fI]);
        lp[1]=  -zbest+fZshift[fI];
        lp[2]=0.0025*0.0025;  //SigmaY2
        lp[3]=0.110*0.110;  //SigmaZ2

        lp[4]=qbest;        //Q
	for (Int_t ilab=0;ilab<10;ilab++) milab[ilab]=-2;
	for (Int_t ilab=0;ilab<3;ilab++){
	  milab[ilab] = pos[i].GetLabel(ilab);
	  milab[ilab+3] = neg[j].GetLabel(ilab);
	}
	//
	CheckLabels2(milab);
	milab[3]=(((i<<10) + j)<<10) + idet; // pos|neg|det
	Int_t info[3] = {pos[i].GetNd(),neg[j].GetNd(),fNlayer[fI]};
        AliITSclusterV2 * cl2 = new (cl[ncl]) AliITSclusterV2(milab,lp,info); 
	ncl++;
	cl2->SetChargeRatio(ratio);
	cl2->SetType(100+cpositive[j]+cnegative[i]);
	//cl2->SetType(0);
	/*
	  if (pairs[i][j]<100){
	  printf("problem:- %d\n", pairs[i][j]);
	  }
	  if (cnegative[i]<2&&cpositive[j]<2){
	  printf("problem:- %d\n", pairs[i][j]);
	  }
	*/
      }
    }
  }

//   for (Int_t i=0; i<1000; i++) delete [] pairs[i];
//   delete [] pairs;

}


void AliITSclustererV2::
FindClustersSSD(const TClonesArray *alldigits, TClonesArray *clusters) {
  //------------------------------------------------------------
  // Actual SSD cluster finder
  //------------------------------------------------------------
  Int_t smaxall=alldigits->GetEntriesFast();
  if (smaxall==0) return;
  TObjArray *digits = new TObjArray;
  for (Int_t i=0;i<smaxall; i++){
    AliITSdigitSSD *d=(AliITSdigitSSD*)alldigits->UncheckedAt(i);
    if (d->GetSignal()<3) continue;
    digits->AddLast(d);
  }
  Int_t smax = digits->GetEntriesFast();
  if (smax==0) return;
  
  const Int_t mMAX=1000;
  Int_t np=0, nn=0; 
  Ali1Dcluster pos[mMAX], neg[mMAX];
  Float_t y=0., q=0., qmax=0.; 
  Int_t lab[4]={-2,-2,-2,-2};
  
  AliITSdigitSSD *d=(AliITSdigitSSD*)digits->UncheckedAt(0);
  q += d->GetSignal();
  y += d->GetCoord2()*d->GetSignal();
  qmax=d->GetSignal();
  lab[0]=d->GetTrack(0); lab[1]=d->GetTrack(1); lab[2]=d->GetTrack(2);
  Int_t curr=d->GetCoord2();
  Int_t flag=d->GetCoord1();
  Int_t *n=&nn;
  Ali1Dcluster *c=neg;
  Int_t nd=1;
  Int_t milab[10];
  for (Int_t ilab=0;ilab<10;ilab++){
    milab[ilab]=-2;
  }
  milab[0]=d->GetTrack(0); milab[1]=d->GetTrack(1); milab[2]=d->GetTrack(2);

  for (Int_t s=1; s<smax; s++) {
      d=(AliITSdigitSSD*)digits->UncheckedAt(s);      
      Int_t strip=d->GetCoord2();
      if ((strip-curr) > 1 || flag!=d->GetCoord1()) {
         c[*n].SetY(y/q);
         c[*n].SetQ(q);
         c[*n].SetNd(nd);
	 CheckLabels2(milab);
         c[*n].SetLabels(milab);
         //Split suspiciously big cluster
	 /*
	 if (nd>10&&nd<16){
	   c[*n].SetY(y/q-0.3*nd);
	   c[*n].SetQ(0.5*q);
	   (*n)++;
	   if (*n==mMAX) {
	     Error("FindClustersSSD","Too many 1D clusters !");
              return;
	   }
	   c[*n].SetY(y/q-0.0*nd);
	   c[*n].SetQ(0.5*q);
	   c[*n].SetNd(nd);
	   (*n)++;
	   if (*n==mMAX) {
	     Error("FindClustersSSD","Too many 1D clusters !");
              return;
	   }
	   //
	   c[*n].SetY(y/q+0.3*nd);
	   c[*n].SetQ(0.5*q);
	   c[*n].SetNd(nd);
	   c[*n].SetLabels(milab);
	 }
	 else{
	 */
	 if (nd>4&&nd<25) {
	   c[*n].SetY(y/q-0.25*nd);
	   c[*n].SetQ(0.5*q);
	   (*n)++;
	   if (*n==mMAX) {
	     Error("FindClustersSSD","Too many 1D clusters !");
	     return;
	   }
	   c[*n].SetY(y/q+0.25*nd);
	   c[*n].SetQ(0.5*q);
	   c[*n].SetNd(nd);
	   c[*n].SetLabels(milab);
	 }	 
         (*n)++;
         if (*n==mMAX) {
          Error("FindClustersSSD","Too many 1D clusters !");
          return;
         }
         y=q=qmax=0.;
         nd=0;
         lab[0]=lab[1]=lab[2]=-2;
	 //
	 for (Int_t ilab=0;ilab<10;ilab++){
	   milab[ilab]=-2;
	 }
	 //
         if (flag!=d->GetCoord1()) { n=&np; c=pos; }
      }
      flag=d->GetCoord1();
      q += d->GetSignal();
      y += d->GetCoord2()*d->GetSignal();
      nd++;
      if (d->GetSignal()>qmax) {
         qmax=d->GetSignal();
         lab[0]=d->GetTrack(0); lab[1]=d->GetTrack(1); lab[2]=d->GetTrack(2);
      }
      for (Int_t ilab=0;ilab<10;ilab++) {
	if (d->GetTrack(ilab)>=0) AddLabel(milab, (d->GetTrack(ilab))); 
      }
      curr=strip;
  }
  c[*n].SetY(y/q);
  c[*n].SetQ(q);
  c[*n].SetNd(nd);
  c[*n].SetLabels(lab);
  //Split suspiciously big cluster
  if (nd>4 && nd<25) {
     c[*n].SetY(y/q-0.25*nd);
     c[*n].SetQ(0.5*q);
     (*n)++;
     if (*n==mMAX) {
        Error("FindClustersSSD","Too many 1D clusters !");
        return;
     }
     c[*n].SetY(y/q+0.25*nd);
     c[*n].SetQ(0.5*q);
     c[*n].SetNd(nd);
     c[*n].SetLabels(lab);
  }
  (*n)++;
  if (*n==mMAX) {
     Error("FindClustersSSD","Too many 1D clusters !");
     return;
  }

  FindClustersSSD(neg, nn, pos, np, clusters);
}

void AliITSclustererV2::FindClustersSSD(AliITSRawStream* input, 
					TClonesArray** clusters) 
{
  //------------------------------------------------------------
  // Actual SSD cluster finder for raw data
  //------------------------------------------------------------
  Int_t nClustersSSD = 0;
  const Int_t mMAX = 1000;
  Ali1Dcluster clusters1D[2][mMAX];
  Int_t nClusters[2] = {0, 0};
  Int_t lab[3]={-2,-2,-2};
  Float_t q = 0.;
  Float_t y = 0.;
  Int_t nDigits = 0;
  Int_t prevStrip = -1;
  Int_t prevFlag = -1;
  Int_t prevModule = -1;

  // read raw data input stream
  while (kTRUE) {
    Bool_t next = input->Next();

    if(input->GetSignal()<3 && next) continue;
    // check if a new cluster starts
    Int_t strip = input->GetCoord2();
    Int_t flag = input->GetCoord1();
    if ((!next || (input->GetModuleID() != prevModule)||
	 (strip-prevStrip > 1) || (flag != prevFlag)) &&
	(nDigits > 0)) {
      if (nClusters[prevFlag] == mMAX) {
	Error("FindClustersSSD", "Too many 1D clusters !");
	return;
      }
      Ali1Dcluster& cluster = clusters1D[prevFlag][nClusters[prevFlag]++];
      cluster.SetY(y/q);
      cluster.SetQ(q);
      cluster.SetNd(nDigits);
      cluster.SetLabels(lab);

      //Split suspiciously big cluster
      if (nDigits > 4&&nDigits < 25) {
	cluster.SetY(y/q - 0.25*nDigits);
        cluster.SetQ(0.5*q);
	if (nClusters[prevFlag] == mMAX) {
	  Error("FindClustersSSD", "Too many 1D clusters !");
	  return;
	}
	Ali1Dcluster& cluster2 = clusters1D[prevFlag][nClusters[prevFlag]++];
	cluster2.SetY(y/q + 0.25*nDigits);
	cluster2.SetQ(0.5*q);
	cluster2.SetNd(nDigits);
	cluster2.SetLabels(lab);
      }
      y = q = 0.;
      nDigits = 0;
    }

    if (!next || (input->GetModuleID() != prevModule)) {
      Int_t iModule = prevModule;

      // when all data from a module was read, search for clusters
      if (prevFlag >= 0) {
	clusters[iModule] = new TClonesArray("AliITSclusterV2");
	fI = iModule;
	FindClustersSSD(&clusters1D[0][0], nClusters[0], 
			&clusters1D[1][0], nClusters[1], clusters[iModule]);
	Int_t noClusters = clusters[iModule]->GetEntriesFast();
	nClustersSSD += noClusters;
      }

      if (!next) break;
      nClusters[0] = nClusters[1] = 0;
      y = q = 0.;
      nDigits = 0;
    }

    // add digit to current cluster
    q += input->GetSignal();
    y += strip * input->GetSignal();
    nDigits++;
    prevStrip = strip;
    prevFlag = flag;
    prevModule = input->GetModuleID();

  }

  Info("FindClustersSSD", "found clusters in ITS SSD: %d", nClustersSSD);
}

 AliITSclustererV2.cxx:1
 AliITSclustererV2.cxx:2
 AliITSclustererV2.cxx:3
 AliITSclustererV2.cxx:4
 AliITSclustererV2.cxx:5
 AliITSclustererV2.cxx:6
 AliITSclustererV2.cxx:7
 AliITSclustererV2.cxx:8
 AliITSclustererV2.cxx:9
 AliITSclustererV2.cxx:10
 AliITSclustererV2.cxx:11
 AliITSclustererV2.cxx:12
 AliITSclustererV2.cxx:13
 AliITSclustererV2.cxx:14
 AliITSclustererV2.cxx:15
 AliITSclustererV2.cxx:16
 AliITSclustererV2.cxx:17
 AliITSclustererV2.cxx:18
 AliITSclustererV2.cxx:19
 AliITSclustererV2.cxx:20
 AliITSclustererV2.cxx:21
 AliITSclustererV2.cxx:22
 AliITSclustererV2.cxx:23
 AliITSclustererV2.cxx:24
 AliITSclustererV2.cxx:25
 AliITSclustererV2.cxx:26
 AliITSclustererV2.cxx:27
 AliITSclustererV2.cxx:28
 AliITSclustererV2.cxx:29
 AliITSclustererV2.cxx:30
 AliITSclustererV2.cxx:31
 AliITSclustererV2.cxx:32
 AliITSclustererV2.cxx:33
 AliITSclustererV2.cxx:34
 AliITSclustererV2.cxx:35
 AliITSclustererV2.cxx:36
 AliITSclustererV2.cxx:37
 AliITSclustererV2.cxx:38
 AliITSclustererV2.cxx:39
 AliITSclustererV2.cxx:40
 AliITSclustererV2.cxx:41
 AliITSclustererV2.cxx:42
 AliITSclustererV2.cxx:43
 AliITSclustererV2.cxx:44
 AliITSclustererV2.cxx:45
 AliITSclustererV2.cxx:46
 AliITSclustererV2.cxx:47
 AliITSclustererV2.cxx:48
 AliITSclustererV2.cxx:49
 AliITSclustererV2.cxx:50
 AliITSclustererV2.cxx:51
 AliITSclustererV2.cxx:52
 AliITSclustererV2.cxx:53
 AliITSclustererV2.cxx:54
 AliITSclustererV2.cxx:55
 AliITSclustererV2.cxx:56
 AliITSclustererV2.cxx:57
 AliITSclustererV2.cxx:58
 AliITSclustererV2.cxx:59
 AliITSclustererV2.cxx:60
 AliITSclustererV2.cxx:61
 AliITSclustererV2.cxx:62
 AliITSclustererV2.cxx:63
 AliITSclustererV2.cxx:64
 AliITSclustererV2.cxx:65
 AliITSclustererV2.cxx:66
 AliITSclustererV2.cxx:67
 AliITSclustererV2.cxx:68
 AliITSclustererV2.cxx:69
 AliITSclustererV2.cxx:70
 AliITSclustererV2.cxx:71
 AliITSclustererV2.cxx:72
 AliITSclustererV2.cxx:73
 AliITSclustererV2.cxx:74
 AliITSclustererV2.cxx:75
 AliITSclustererV2.cxx:76
 AliITSclustererV2.cxx:77
 AliITSclustererV2.cxx:78
 AliITSclustererV2.cxx:79
 AliITSclustererV2.cxx:80
 AliITSclustererV2.cxx:81
 AliITSclustererV2.cxx:82
 AliITSclustererV2.cxx:83
 AliITSclustererV2.cxx:84
 AliITSclustererV2.cxx:85
 AliITSclustererV2.cxx:86
 AliITSclustererV2.cxx:87
 AliITSclustererV2.cxx:88
 AliITSclustererV2.cxx:89
 AliITSclustererV2.cxx:90
 AliITSclustererV2.cxx:91
 AliITSclustererV2.cxx:92
 AliITSclustererV2.cxx:93
 AliITSclustererV2.cxx:94
 AliITSclustererV2.cxx:95
 AliITSclustererV2.cxx:96
 AliITSclustererV2.cxx:97
 AliITSclustererV2.cxx:98
 AliITSclustererV2.cxx:99
 AliITSclustererV2.cxx:100
 AliITSclustererV2.cxx:101
 AliITSclustererV2.cxx:102
 AliITSclustererV2.cxx:103
 AliITSclustererV2.cxx:104
 AliITSclustererV2.cxx:105
 AliITSclustererV2.cxx:106
 AliITSclustererV2.cxx:107
 AliITSclustererV2.cxx:108
 AliITSclustererV2.cxx:109
 AliITSclustererV2.cxx:110
 AliITSclustererV2.cxx:111
 AliITSclustererV2.cxx:112
 AliITSclustererV2.cxx:113
 AliITSclustererV2.cxx:114
 AliITSclustererV2.cxx:115
 AliITSclustererV2.cxx:116
 AliITSclustererV2.cxx:117
 AliITSclustererV2.cxx:118
 AliITSclustererV2.cxx:119
 AliITSclustererV2.cxx:120
 AliITSclustererV2.cxx:121
 AliITSclustererV2.cxx:122
 AliITSclustererV2.cxx:123
 AliITSclustererV2.cxx:124
 AliITSclustererV2.cxx:125
 AliITSclustererV2.cxx:126
 AliITSclustererV2.cxx:127
 AliITSclustererV2.cxx:128
 AliITSclustererV2.cxx:129
 AliITSclustererV2.cxx:130
 AliITSclustererV2.cxx:131
 AliITSclustererV2.cxx:132
 AliITSclustererV2.cxx:133
 AliITSclustererV2.cxx:134
 AliITSclustererV2.cxx:135
 AliITSclustererV2.cxx:136
 AliITSclustererV2.cxx:137
 AliITSclustererV2.cxx:138
 AliITSclustererV2.cxx:139
 AliITSclustererV2.cxx:140
 AliITSclustererV2.cxx:141
 AliITSclustererV2.cxx:142
 AliITSclustererV2.cxx:143
 AliITSclustererV2.cxx:144
 AliITSclustererV2.cxx:145
 AliITSclustererV2.cxx:146
 AliITSclustererV2.cxx:147
 AliITSclustererV2.cxx:148
 AliITSclustererV2.cxx:149
 AliITSclustererV2.cxx:150
 AliITSclustererV2.cxx:151
 AliITSclustererV2.cxx:152
 AliITSclustererV2.cxx:153
 AliITSclustererV2.cxx:154
 AliITSclustererV2.cxx:155
 AliITSclustererV2.cxx:156
 AliITSclustererV2.cxx:157
 AliITSclustererV2.cxx:158
 AliITSclustererV2.cxx:159
 AliITSclustererV2.cxx:160
 AliITSclustererV2.cxx:161
 AliITSclustererV2.cxx:162
 AliITSclustererV2.cxx:163
 AliITSclustererV2.cxx:164
 AliITSclustererV2.cxx:165
 AliITSclustererV2.cxx:166
 AliITSclustererV2.cxx:167
 AliITSclustererV2.cxx:168
 AliITSclustererV2.cxx:169
 AliITSclustererV2.cxx:170
 AliITSclustererV2.cxx:171
 AliITSclustererV2.cxx:172
 AliITSclustererV2.cxx:173
 AliITSclustererV2.cxx:174
 AliITSclustererV2.cxx:175
 AliITSclustererV2.cxx:176
 AliITSclustererV2.cxx:177
 AliITSclustererV2.cxx:178
 AliITSclustererV2.cxx:179
 AliITSclustererV2.cxx:180
 AliITSclustererV2.cxx:181
 AliITSclustererV2.cxx:182
 AliITSclustererV2.cxx:183
 AliITSclustererV2.cxx:184
 AliITSclustererV2.cxx:185
 AliITSclustererV2.cxx:186
 AliITSclustererV2.cxx:187
 AliITSclustererV2.cxx:188
 AliITSclustererV2.cxx:189
 AliITSclustererV2.cxx:190
 AliITSclustererV2.cxx:191
 AliITSclustererV2.cxx:192
 AliITSclustererV2.cxx:193
 AliITSclustererV2.cxx:194
 AliITSclustererV2.cxx:195
 AliITSclustererV2.cxx:196
 AliITSclustererV2.cxx:197
 AliITSclustererV2.cxx:198
 AliITSclustererV2.cxx:199
 AliITSclustererV2.cxx:200
 AliITSclustererV2.cxx:201
 AliITSclustererV2.cxx:202
 AliITSclustererV2.cxx:203
 AliITSclustererV2.cxx:204
 AliITSclustererV2.cxx:205
 AliITSclustererV2.cxx:206
 AliITSclustererV2.cxx:207
 AliITSclustererV2.cxx:208
 AliITSclustererV2.cxx:209
 AliITSclustererV2.cxx:210
 AliITSclustererV2.cxx:211
 AliITSclustererV2.cxx:212
 AliITSclustererV2.cxx:213
 AliITSclustererV2.cxx:214
 AliITSclustererV2.cxx:215
 AliITSclustererV2.cxx:216
 AliITSclustererV2.cxx:217
 AliITSclustererV2.cxx:218
 AliITSclustererV2.cxx:219
 AliITSclustererV2.cxx:220
 AliITSclustererV2.cxx:221
 AliITSclustererV2.cxx:222
 AliITSclustererV2.cxx:223
 AliITSclustererV2.cxx:224
 AliITSclustererV2.cxx:225
 AliITSclustererV2.cxx:226
 AliITSclustererV2.cxx:227
 AliITSclustererV2.cxx:228
 AliITSclustererV2.cxx:229
 AliITSclustererV2.cxx:230
 AliITSclustererV2.cxx:231
 AliITSclustererV2.cxx:232
 AliITSclustererV2.cxx:233
 AliITSclustererV2.cxx:234
 AliITSclustererV2.cxx:235
 AliITSclustererV2.cxx:236
 AliITSclustererV2.cxx:237
 AliITSclustererV2.cxx:238
 AliITSclustererV2.cxx:239
 AliITSclustererV2.cxx:240
 AliITSclustererV2.cxx:241
 AliITSclustererV2.cxx:242
 AliITSclustererV2.cxx:243
 AliITSclustererV2.cxx:244
 AliITSclustererV2.cxx:245
 AliITSclustererV2.cxx:246
 AliITSclustererV2.cxx:247
 AliITSclustererV2.cxx:248
 AliITSclustererV2.cxx:249
 AliITSclustererV2.cxx:250
 AliITSclustererV2.cxx:251
 AliITSclustererV2.cxx:252
 AliITSclustererV2.cxx:253
 AliITSclustererV2.cxx:254
 AliITSclustererV2.cxx:255
 AliITSclustererV2.cxx:256
 AliITSclustererV2.cxx:257
 AliITSclustererV2.cxx:258
 AliITSclustererV2.cxx:259
 AliITSclustererV2.cxx:260
 AliITSclustererV2.cxx:261
 AliITSclustererV2.cxx:262
 AliITSclustererV2.cxx:263
 AliITSclustererV2.cxx:264
 AliITSclustererV2.cxx:265
 AliITSclustererV2.cxx:266
 AliITSclustererV2.cxx:267
 AliITSclustererV2.cxx:268
 AliITSclustererV2.cxx:269
 AliITSclustererV2.cxx:270
 AliITSclustererV2.cxx:271
 AliITSclustererV2.cxx:272
 AliITSclustererV2.cxx:273
 AliITSclustererV2.cxx:274
 AliITSclustererV2.cxx:275
 AliITSclustererV2.cxx:276
 AliITSclustererV2.cxx:277
 AliITSclustererV2.cxx:278
 AliITSclustererV2.cxx:279
 AliITSclustererV2.cxx:280
 AliITSclustererV2.cxx:281
 AliITSclustererV2.cxx:282
 AliITSclustererV2.cxx:283
 AliITSclustererV2.cxx:284
 AliITSclustererV2.cxx:285
 AliITSclustererV2.cxx:286
 AliITSclustererV2.cxx:287
 AliITSclustererV2.cxx:288
 AliITSclustererV2.cxx:289
 AliITSclustererV2.cxx:290
 AliITSclustererV2.cxx:291
 AliITSclustererV2.cxx:292
 AliITSclustererV2.cxx:293
 AliITSclustererV2.cxx:294
 AliITSclustererV2.cxx:295
 AliITSclustererV2.cxx:296
 AliITSclustererV2.cxx:297
 AliITSclustererV2.cxx:298
 AliITSclustererV2.cxx:299
 AliITSclustererV2.cxx:300
 AliITSclustererV2.cxx:301
 AliITSclustererV2.cxx:302
 AliITSclustererV2.cxx:303
 AliITSclustererV2.cxx:304
 AliITSclustererV2.cxx:305
 AliITSclustererV2.cxx:306
 AliITSclustererV2.cxx:307
 AliITSclustererV2.cxx:308
 AliITSclustererV2.cxx:309
 AliITSclustererV2.cxx:310
 AliITSclustererV2.cxx:311
 AliITSclustererV2.cxx:312
 AliITSclustererV2.cxx:313
 AliITSclustererV2.cxx:314
 AliITSclustererV2.cxx:315
 AliITSclustererV2.cxx:316
 AliITSclustererV2.cxx:317
 AliITSclustererV2.cxx:318
 AliITSclustererV2.cxx:319
 AliITSclustererV2.cxx:320
 AliITSclustererV2.cxx:321
 AliITSclustererV2.cxx:322
 AliITSclustererV2.cxx:323
 AliITSclustererV2.cxx:324
 AliITSclustererV2.cxx:325
 AliITSclustererV2.cxx:326
 AliITSclustererV2.cxx:327
 AliITSclustererV2.cxx:328
 AliITSclustererV2.cxx:329
 AliITSclustererV2.cxx:330
 AliITSclustererV2.cxx:331
 AliITSclustererV2.cxx:332
 AliITSclustererV2.cxx:333
 AliITSclustererV2.cxx:334
 AliITSclustererV2.cxx:335
 AliITSclustererV2.cxx:336
 AliITSclustererV2.cxx:337
 AliITSclustererV2.cxx:338
 AliITSclustererV2.cxx:339
 AliITSclustererV2.cxx:340
 AliITSclustererV2.cxx:341
 AliITSclustererV2.cxx:342
 AliITSclustererV2.cxx:343
 AliITSclustererV2.cxx:344
 AliITSclustererV2.cxx:345
 AliITSclustererV2.cxx:346
 AliITSclustererV2.cxx:347
 AliITSclustererV2.cxx:348
 AliITSclustererV2.cxx:349
 AliITSclustererV2.cxx:350
 AliITSclustererV2.cxx:351
 AliITSclustererV2.cxx:352
 AliITSclustererV2.cxx:353
 AliITSclustererV2.cxx:354
 AliITSclustererV2.cxx:355
 AliITSclustererV2.cxx:356
 AliITSclustererV2.cxx:357
 AliITSclustererV2.cxx:358
 AliITSclustererV2.cxx:359
 AliITSclustererV2.cxx:360
 AliITSclustererV2.cxx:361
 AliITSclustererV2.cxx:362
 AliITSclustererV2.cxx:363
 AliITSclustererV2.cxx:364
 AliITSclustererV2.cxx:365
 AliITSclustererV2.cxx:366
 AliITSclustererV2.cxx:367
 AliITSclustererV2.cxx:368
 AliITSclustererV2.cxx:369
 AliITSclustererV2.cxx:370
 AliITSclustererV2.cxx:371
 AliITSclustererV2.cxx:372
 AliITSclustererV2.cxx:373
 AliITSclustererV2.cxx:374
 AliITSclustererV2.cxx:375
 AliITSclustererV2.cxx:376
 AliITSclustererV2.cxx:377
 AliITSclustererV2.cxx:378
 AliITSclustererV2.cxx:379
 AliITSclustererV2.cxx:380
 AliITSclustererV2.cxx:381
 AliITSclustererV2.cxx:382
 AliITSclustererV2.cxx:383
 AliITSclustererV2.cxx:384
 AliITSclustererV2.cxx:385
 AliITSclustererV2.cxx:386
 AliITSclustererV2.cxx:387
 AliITSclustererV2.cxx:388
 AliITSclustererV2.cxx:389
 AliITSclustererV2.cxx:390
 AliITSclustererV2.cxx:391
 AliITSclustererV2.cxx:392
 AliITSclustererV2.cxx:393
 AliITSclustererV2.cxx:394
 AliITSclustererV2.cxx:395
 AliITSclustererV2.cxx:396
 AliITSclustererV2.cxx:397
 AliITSclustererV2.cxx:398
 AliITSclustererV2.cxx:399
 AliITSclustererV2.cxx:400
 AliITSclustererV2.cxx:401
 AliITSclustererV2.cxx:402
 AliITSclustererV2.cxx:403
 AliITSclustererV2.cxx:404
 AliITSclustererV2.cxx:405
 AliITSclustererV2.cxx:406
 AliITSclustererV2.cxx:407
 AliITSclustererV2.cxx:408
 AliITSclustererV2.cxx:409
 AliITSclustererV2.cxx:410
 AliITSclustererV2.cxx:411
 AliITSclustererV2.cxx:412
 AliITSclustererV2.cxx:413
 AliITSclustererV2.cxx:414
 AliITSclustererV2.cxx:415
 AliITSclustererV2.cxx:416
 AliITSclustererV2.cxx:417
 AliITSclustererV2.cxx:418
 AliITSclustererV2.cxx:419
 AliITSclustererV2.cxx:420
 AliITSclustererV2.cxx:421
 AliITSclustererV2.cxx:422
 AliITSclustererV2.cxx:423
 AliITSclustererV2.cxx:424
 AliITSclustererV2.cxx:425
 AliITSclustererV2.cxx:426
 AliITSclustererV2.cxx:427
 AliITSclustererV2.cxx:428
 AliITSclustererV2.cxx:429
 AliITSclustererV2.cxx:430
 AliITSclustererV2.cxx:431
 AliITSclustererV2.cxx:432
 AliITSclustererV2.cxx:433
 AliITSclustererV2.cxx:434
 AliITSclustererV2.cxx:435
 AliITSclustererV2.cxx:436
 AliITSclustererV2.cxx:437
 AliITSclustererV2.cxx:438
 AliITSclustererV2.cxx:439
 AliITSclustererV2.cxx:440
 AliITSclustererV2.cxx:441
 AliITSclustererV2.cxx:442
 AliITSclustererV2.cxx:443
 AliITSclustererV2.cxx:444
 AliITSclustererV2.cxx:445
 AliITSclustererV2.cxx:446
 AliITSclustererV2.cxx:447
 AliITSclustererV2.cxx:448
 AliITSclustererV2.cxx:449
 AliITSclustererV2.cxx:450
 AliITSclustererV2.cxx:451
 AliITSclustererV2.cxx:452
 AliITSclustererV2.cxx:453
 AliITSclustererV2.cxx:454
 AliITSclustererV2.cxx:455
 AliITSclustererV2.cxx:456
 AliITSclustererV2.cxx:457
 AliITSclustererV2.cxx:458
 AliITSclustererV2.cxx:459
 AliITSclustererV2.cxx:460
 AliITSclustererV2.cxx:461
 AliITSclustererV2.cxx:462
 AliITSclustererV2.cxx:463
 AliITSclustererV2.cxx:464
 AliITSclustererV2.cxx:465
 AliITSclustererV2.cxx:466
 AliITSclustererV2.cxx:467
 AliITSclustererV2.cxx:468
 AliITSclustererV2.cxx:469
 AliITSclustererV2.cxx:470
 AliITSclustererV2.cxx:471
 AliITSclustererV2.cxx:472
 AliITSclustererV2.cxx:473
 AliITSclustererV2.cxx:474
 AliITSclustererV2.cxx:475
 AliITSclustererV2.cxx:476
 AliITSclustererV2.cxx:477
 AliITSclustererV2.cxx:478
 AliITSclustererV2.cxx:479
 AliITSclustererV2.cxx:480
 AliITSclustererV2.cxx:481
 AliITSclustererV2.cxx:482
 AliITSclustererV2.cxx:483
 AliITSclustererV2.cxx:484
 AliITSclustererV2.cxx:485
 AliITSclustererV2.cxx:486
 AliITSclustererV2.cxx:487
 AliITSclustererV2.cxx:488
 AliITSclustererV2.cxx:489
 AliITSclustererV2.cxx:490
 AliITSclustererV2.cxx:491
 AliITSclustererV2.cxx:492
 AliITSclustererV2.cxx:493
 AliITSclustererV2.cxx:494
 AliITSclustererV2.cxx:495
 AliITSclustererV2.cxx:496
 AliITSclustererV2.cxx:497
 AliITSclustererV2.cxx:498
 AliITSclustererV2.cxx:499
 AliITSclustererV2.cxx:500
 AliITSclustererV2.cxx:501
 AliITSclustererV2.cxx:502
 AliITSclustererV2.cxx:503
 AliITSclustererV2.cxx:504
 AliITSclustererV2.cxx:505
 AliITSclustererV2.cxx:506
 AliITSclustererV2.cxx:507
 AliITSclustererV2.cxx:508
 AliITSclustererV2.cxx:509
 AliITSclustererV2.cxx:510
 AliITSclustererV2.cxx:511
 AliITSclustererV2.cxx:512
 AliITSclustererV2.cxx:513
 AliITSclustererV2.cxx:514
 AliITSclustererV2.cxx:515
 AliITSclustererV2.cxx:516
 AliITSclustererV2.cxx:517
 AliITSclustererV2.cxx:518
 AliITSclustererV2.cxx:519
 AliITSclustererV2.cxx:520
 AliITSclustererV2.cxx:521
 AliITSclustererV2.cxx:522
 AliITSclustererV2.cxx:523
 AliITSclustererV2.cxx:524
 AliITSclustererV2.cxx:525
 AliITSclustererV2.cxx:526
 AliITSclustererV2.cxx:527
 AliITSclustererV2.cxx:528
 AliITSclustererV2.cxx:529
 AliITSclustererV2.cxx:530
 AliITSclustererV2.cxx:531
 AliITSclustererV2.cxx:532
 AliITSclustererV2.cxx:533
 AliITSclustererV2.cxx:534
 AliITSclustererV2.cxx:535
 AliITSclustererV2.cxx:536
 AliITSclustererV2.cxx:537
 AliITSclustererV2.cxx:538
 AliITSclustererV2.cxx:539
 AliITSclustererV2.cxx:540
 AliITSclustererV2.cxx:541
 AliITSclustererV2.cxx:542
 AliITSclustererV2.cxx:543
 AliITSclustererV2.cxx:544
 AliITSclustererV2.cxx:545
 AliITSclustererV2.cxx:546
 AliITSclustererV2.cxx:547
 AliITSclustererV2.cxx:548
 AliITSclustererV2.cxx:549
 AliITSclustererV2.cxx:550
 AliITSclustererV2.cxx:551
 AliITSclustererV2.cxx:552
 AliITSclustererV2.cxx:553
 AliITSclustererV2.cxx:554
 AliITSclustererV2.cxx:555
 AliITSclustererV2.cxx:556
 AliITSclustererV2.cxx:557
 AliITSclustererV2.cxx:558
 AliITSclustererV2.cxx:559
 AliITSclustererV2.cxx:560
 AliITSclustererV2.cxx:561
 AliITSclustererV2.cxx:562
 AliITSclustererV2.cxx:563
 AliITSclustererV2.cxx:564
 AliITSclustererV2.cxx:565
 AliITSclustererV2.cxx:566
 AliITSclustererV2.cxx:567
 AliITSclustererV2.cxx:568
 AliITSclustererV2.cxx:569
 AliITSclustererV2.cxx:570
 AliITSclustererV2.cxx:571
 AliITSclustererV2.cxx:572
 AliITSclustererV2.cxx:573
 AliITSclustererV2.cxx:574
 AliITSclustererV2.cxx:575
 AliITSclustererV2.cxx:576
 AliITSclustererV2.cxx:577
 AliITSclustererV2.cxx:578
 AliITSclustererV2.cxx:579
 AliITSclustererV2.cxx:580
 AliITSclustererV2.cxx:581
 AliITSclustererV2.cxx:582
 AliITSclustererV2.cxx:583
 AliITSclustererV2.cxx:584
 AliITSclustererV2.cxx:585
 AliITSclustererV2.cxx:586
 AliITSclustererV2.cxx:587
 AliITSclustererV2.cxx:588
 AliITSclustererV2.cxx:589
 AliITSclustererV2.cxx:590
 AliITSclustererV2.cxx:591
 AliITSclustererV2.cxx:592
 AliITSclustererV2.cxx:593
 AliITSclustererV2.cxx:594
 AliITSclustererV2.cxx:595
 AliITSclustererV2.cxx:596
 AliITSclustererV2.cxx:597
 AliITSclustererV2.cxx:598
 AliITSclustererV2.cxx:599
 AliITSclustererV2.cxx:600
 AliITSclustererV2.cxx:601
 AliITSclustererV2.cxx:602
 AliITSclustererV2.cxx:603
 AliITSclustererV2.cxx:604
 AliITSclustererV2.cxx:605
 AliITSclustererV2.cxx:606
 AliITSclustererV2.cxx:607
 AliITSclustererV2.cxx:608
 AliITSclustererV2.cxx:609
 AliITSclustererV2.cxx:610
 AliITSclustererV2.cxx:611
 AliITSclustererV2.cxx:612
 AliITSclustererV2.cxx:613
 AliITSclustererV2.cxx:614
 AliITSclustererV2.cxx:615
 AliITSclustererV2.cxx:616
 AliITSclustererV2.cxx:617
 AliITSclustererV2.cxx:618
 AliITSclustererV2.cxx:619
 AliITSclustererV2.cxx:620
 AliITSclustererV2.cxx:621
 AliITSclustererV2.cxx:622
 AliITSclustererV2.cxx:623
 AliITSclustererV2.cxx:624
 AliITSclustererV2.cxx:625
 AliITSclustererV2.cxx:626
 AliITSclustererV2.cxx:627
 AliITSclustererV2.cxx:628
 AliITSclustererV2.cxx:629
 AliITSclustererV2.cxx:630
 AliITSclustererV2.cxx:631
 AliITSclustererV2.cxx:632
 AliITSclustererV2.cxx:633
 AliITSclustererV2.cxx:634
 AliITSclustererV2.cxx:635
 AliITSclustererV2.cxx:636
 AliITSclustererV2.cxx:637
 AliITSclustererV2.cxx:638
 AliITSclustererV2.cxx:639
 AliITSclustererV2.cxx:640
 AliITSclustererV2.cxx:641
 AliITSclustererV2.cxx:642
 AliITSclustererV2.cxx:643
 AliITSclustererV2.cxx:644
 AliITSclustererV2.cxx:645
 AliITSclustererV2.cxx:646
 AliITSclustererV2.cxx:647
 AliITSclustererV2.cxx:648
 AliITSclustererV2.cxx:649
 AliITSclustererV2.cxx:650
 AliITSclustererV2.cxx:651
 AliITSclustererV2.cxx:652
 AliITSclustererV2.cxx:653
 AliITSclustererV2.cxx:654
 AliITSclustererV2.cxx:655
 AliITSclustererV2.cxx:656
 AliITSclustererV2.cxx:657
 AliITSclustererV2.cxx:658
 AliITSclustererV2.cxx:659
 AliITSclustererV2.cxx:660
 AliITSclustererV2.cxx:661
 AliITSclustererV2.cxx:662
 AliITSclustererV2.cxx:663
 AliITSclustererV2.cxx:664
 AliITSclustererV2.cxx:665
 AliITSclustererV2.cxx:666
 AliITSclustererV2.cxx:667
 AliITSclustererV2.cxx:668
 AliITSclustererV2.cxx:669
 AliITSclustererV2.cxx:670
 AliITSclustererV2.cxx:671
 AliITSclustererV2.cxx:672
 AliITSclustererV2.cxx:673
 AliITSclustererV2.cxx:674
 AliITSclustererV2.cxx:675
 AliITSclustererV2.cxx:676
 AliITSclustererV2.cxx:677
 AliITSclustererV2.cxx:678
 AliITSclustererV2.cxx:679
 AliITSclustererV2.cxx:680
 AliITSclustererV2.cxx:681
 AliITSclustererV2.cxx:682
 AliITSclustererV2.cxx:683
 AliITSclustererV2.cxx:684
 AliITSclustererV2.cxx:685
 AliITSclustererV2.cxx:686
 AliITSclustererV2.cxx:687
 AliITSclustererV2.cxx:688
 AliITSclustererV2.cxx:689
 AliITSclustererV2.cxx:690
 AliITSclustererV2.cxx:691
 AliITSclustererV2.cxx:692
 AliITSclustererV2.cxx:693
 AliITSclustererV2.cxx:694
 AliITSclustererV2.cxx:695
 AliITSclustererV2.cxx:696
 AliITSclustererV2.cxx:697
 AliITSclustererV2.cxx:698
 AliITSclustererV2.cxx:699
 AliITSclustererV2.cxx:700
 AliITSclustererV2.cxx:701
 AliITSclustererV2.cxx:702
 AliITSclustererV2.cxx:703
 AliITSclustererV2.cxx:704
 AliITSclustererV2.cxx:705
 AliITSclustererV2.cxx:706
 AliITSclustererV2.cxx:707
 AliITSclustererV2.cxx:708
 AliITSclustererV2.cxx:709
 AliITSclustererV2.cxx:710
 AliITSclustererV2.cxx:711
 AliITSclustererV2.cxx:712
 AliITSclustererV2.cxx:713
 AliITSclustererV2.cxx:714
 AliITSclustererV2.cxx:715
 AliITSclustererV2.cxx:716
 AliITSclustererV2.cxx:717
 AliITSclustererV2.cxx:718
 AliITSclustererV2.cxx:719
 AliITSclustererV2.cxx:720
 AliITSclustererV2.cxx:721
 AliITSclustererV2.cxx:722
 AliITSclustererV2.cxx:723
 AliITSclustererV2.cxx:724
 AliITSclustererV2.cxx:725
 AliITSclustererV2.cxx:726
 AliITSclustererV2.cxx:727
 AliITSclustererV2.cxx:728
 AliITSclustererV2.cxx:729
 AliITSclustererV2.cxx:730
 AliITSclustererV2.cxx:731
 AliITSclustererV2.cxx:732
 AliITSclustererV2.cxx:733
 AliITSclustererV2.cxx:734
 AliITSclustererV2.cxx:735
 AliITSclustererV2.cxx:736
 AliITSclustererV2.cxx:737
 AliITSclustererV2.cxx:738
 AliITSclustererV2.cxx:739
 AliITSclustererV2.cxx:740
 AliITSclustererV2.cxx:741
 AliITSclustererV2.cxx:742
 AliITSclustererV2.cxx:743
 AliITSclustererV2.cxx:744
 AliITSclustererV2.cxx:745
 AliITSclustererV2.cxx:746
 AliITSclustererV2.cxx:747
 AliITSclustererV2.cxx:748
 AliITSclustererV2.cxx:749
 AliITSclustererV2.cxx:750
 AliITSclustererV2.cxx:751
 AliITSclustererV2.cxx:752
 AliITSclustererV2.cxx:753
 AliITSclustererV2.cxx:754
 AliITSclustererV2.cxx:755
 AliITSclustererV2.cxx:756
 AliITSclustererV2.cxx:757
 AliITSclustererV2.cxx:758
 AliITSclustererV2.cxx:759
 AliITSclustererV2.cxx:760
 AliITSclustererV2.cxx:761
 AliITSclustererV2.cxx:762
 AliITSclustererV2.cxx:763
 AliITSclustererV2.cxx:764
 AliITSclustererV2.cxx:765
 AliITSclustererV2.cxx:766
 AliITSclustererV2.cxx:767
 AliITSclustererV2.cxx:768
 AliITSclustererV2.cxx:769
 AliITSclustererV2.cxx:770
 AliITSclustererV2.cxx:771
 AliITSclustererV2.cxx:772
 AliITSclustererV2.cxx:773
 AliITSclustererV2.cxx:774
 AliITSclustererV2.cxx:775
 AliITSclustererV2.cxx:776
 AliITSclustererV2.cxx:777
 AliITSclustererV2.cxx:778
 AliITSclustererV2.cxx:779
 AliITSclustererV2.cxx:780
 AliITSclustererV2.cxx:781
 AliITSclustererV2.cxx:782
 AliITSclustererV2.cxx:783
 AliITSclustererV2.cxx:784
 AliITSclustererV2.cxx:785
 AliITSclustererV2.cxx:786
 AliITSclustererV2.cxx:787
 AliITSclustererV2.cxx:788
 AliITSclustererV2.cxx:789
 AliITSclustererV2.cxx:790
 AliITSclustererV2.cxx:791
 AliITSclustererV2.cxx:792
 AliITSclustererV2.cxx:793
 AliITSclustererV2.cxx:794
 AliITSclustererV2.cxx:795
 AliITSclustererV2.cxx:796
 AliITSclustererV2.cxx:797
 AliITSclustererV2.cxx:798
 AliITSclustererV2.cxx:799
 AliITSclustererV2.cxx:800
 AliITSclustererV2.cxx:801
 AliITSclustererV2.cxx:802
 AliITSclustererV2.cxx:803
 AliITSclustererV2.cxx:804
 AliITSclustererV2.cxx:805
 AliITSclustererV2.cxx:806
 AliITSclustererV2.cxx:807
 AliITSclustererV2.cxx:808
 AliITSclustererV2.cxx:809
 AliITSclustererV2.cxx:810
 AliITSclustererV2.cxx:811
 AliITSclustererV2.cxx:812
 AliITSclustererV2.cxx:813
 AliITSclustererV2.cxx:814
 AliITSclustererV2.cxx:815
 AliITSclustererV2.cxx:816
 AliITSclustererV2.cxx:817
 AliITSclustererV2.cxx:818
 AliITSclustererV2.cxx:819
 AliITSclustererV2.cxx:820
 AliITSclustererV2.cxx:821
 AliITSclustererV2.cxx:822
 AliITSclustererV2.cxx:823
 AliITSclustererV2.cxx:824
 AliITSclustererV2.cxx:825
 AliITSclustererV2.cxx:826
 AliITSclustererV2.cxx:827
 AliITSclustererV2.cxx:828
 AliITSclustererV2.cxx:829
 AliITSclustererV2.cxx:830
 AliITSclustererV2.cxx:831
 AliITSclustererV2.cxx:832
 AliITSclustererV2.cxx:833
 AliITSclustererV2.cxx:834
 AliITSclustererV2.cxx:835
 AliITSclustererV2.cxx:836
 AliITSclustererV2.cxx:837
 AliITSclustererV2.cxx:838
 AliITSclustererV2.cxx:839
 AliITSclustererV2.cxx:840
 AliITSclustererV2.cxx:841
 AliITSclustererV2.cxx:842
 AliITSclustererV2.cxx:843
 AliITSclustererV2.cxx:844
 AliITSclustererV2.cxx:845
 AliITSclustererV2.cxx:846
 AliITSclustererV2.cxx:847
 AliITSclustererV2.cxx:848
 AliITSclustererV2.cxx:849
 AliITSclustererV2.cxx:850
 AliITSclustererV2.cxx:851
 AliITSclustererV2.cxx:852
 AliITSclustererV2.cxx:853
 AliITSclustererV2.cxx:854
 AliITSclustererV2.cxx:855
 AliITSclustererV2.cxx:856
 AliITSclustererV2.cxx:857
 AliITSclustererV2.cxx:858
 AliITSclustererV2.cxx:859
 AliITSclustererV2.cxx:860
 AliITSclustererV2.cxx:861
 AliITSclustererV2.cxx:862
 AliITSclustererV2.cxx:863
 AliITSclustererV2.cxx:864
 AliITSclustererV2.cxx:865
 AliITSclustererV2.cxx:866
 AliITSclustererV2.cxx:867
 AliITSclustererV2.cxx:868
 AliITSclustererV2.cxx:869
 AliITSclustererV2.cxx:870
 AliITSclustererV2.cxx:871
 AliITSclustererV2.cxx:872
 AliITSclustererV2.cxx:873
 AliITSclustererV2.cxx:874
 AliITSclustererV2.cxx:875
 AliITSclustererV2.cxx:876
 AliITSclustererV2.cxx:877
 AliITSclustererV2.cxx:878
 AliITSclustererV2.cxx:879
 AliITSclustererV2.cxx:880
 AliITSclustererV2.cxx:881
 AliITSclustererV2.cxx:882
 AliITSclustererV2.cxx:883
 AliITSclustererV2.cxx:884
 AliITSclustererV2.cxx:885
 AliITSclustererV2.cxx:886
 AliITSclustererV2.cxx:887
 AliITSclustererV2.cxx:888
 AliITSclustererV2.cxx:889
 AliITSclustererV2.cxx:890
 AliITSclustererV2.cxx:891
 AliITSclustererV2.cxx:892
 AliITSclustererV2.cxx:893
 AliITSclustererV2.cxx:894
 AliITSclustererV2.cxx:895
 AliITSclustererV2.cxx:896
 AliITSclustererV2.cxx:897
 AliITSclustererV2.cxx:898
 AliITSclustererV2.cxx:899
 AliITSclustererV2.cxx:900
 AliITSclustererV2.cxx:901
 AliITSclustererV2.cxx:902
 AliITSclustererV2.cxx:903
 AliITSclustererV2.cxx:904
 AliITSclustererV2.cxx:905
 AliITSclustererV2.cxx:906
 AliITSclustererV2.cxx:907
 AliITSclustererV2.cxx:908
 AliITSclustererV2.cxx:909
 AliITSclustererV2.cxx:910
 AliITSclustererV2.cxx:911
 AliITSclustererV2.cxx:912
 AliITSclustererV2.cxx:913
 AliITSclustererV2.cxx:914
 AliITSclustererV2.cxx:915
 AliITSclustererV2.cxx:916
 AliITSclustererV2.cxx:917
 AliITSclustererV2.cxx:918
 AliITSclustererV2.cxx:919
 AliITSclustererV2.cxx:920
 AliITSclustererV2.cxx:921
 AliITSclustererV2.cxx:922
 AliITSclustererV2.cxx:923
 AliITSclustererV2.cxx:924
 AliITSclustererV2.cxx:925
 AliITSclustererV2.cxx:926
 AliITSclustererV2.cxx:927
 AliITSclustererV2.cxx:928
 AliITSclustererV2.cxx:929
 AliITSclustererV2.cxx:930
 AliITSclustererV2.cxx:931
 AliITSclustererV2.cxx:932
 AliITSclustererV2.cxx:933
 AliITSclustererV2.cxx:934
 AliITSclustererV2.cxx:935
 AliITSclustererV2.cxx:936
 AliITSclustererV2.cxx:937
 AliITSclustererV2.cxx:938
 AliITSclustererV2.cxx:939
 AliITSclustererV2.cxx:940
 AliITSclustererV2.cxx:941
 AliITSclustererV2.cxx:942
 AliITSclustererV2.cxx:943
 AliITSclustererV2.cxx:944
 AliITSclustererV2.cxx:945
 AliITSclustererV2.cxx:946
 AliITSclustererV2.cxx:947
 AliITSclustererV2.cxx:948
 AliITSclustererV2.cxx:949
 AliITSclustererV2.cxx:950
 AliITSclustererV2.cxx:951
 AliITSclustererV2.cxx:952
 AliITSclustererV2.cxx:953
 AliITSclustererV2.cxx:954
 AliITSclustererV2.cxx:955
 AliITSclustererV2.cxx:956
 AliITSclustererV2.cxx:957
 AliITSclustererV2.cxx:958
 AliITSclustererV2.cxx:959
 AliITSclustererV2.cxx:960
 AliITSclustererV2.cxx:961
 AliITSclustererV2.cxx:962
 AliITSclustererV2.cxx:963
 AliITSclustererV2.cxx:964
 AliITSclustererV2.cxx:965
 AliITSclustererV2.cxx:966
 AliITSclustererV2.cxx:967
 AliITSclustererV2.cxx:968
 AliITSclustererV2.cxx:969
 AliITSclustererV2.cxx:970
 AliITSclustererV2.cxx:971
 AliITSclustererV2.cxx:972
 AliITSclustererV2.cxx:973
 AliITSclustererV2.cxx:974
 AliITSclustererV2.cxx:975
 AliITSclustererV2.cxx:976
 AliITSclustererV2.cxx:977
 AliITSclustererV2.cxx:978
 AliITSclustererV2.cxx:979
 AliITSclustererV2.cxx:980
 AliITSclustererV2.cxx:981
 AliITSclustererV2.cxx:982
 AliITSclustererV2.cxx:983
 AliITSclustererV2.cxx:984
 AliITSclustererV2.cxx:985
 AliITSclustererV2.cxx:986
 AliITSclustererV2.cxx:987
 AliITSclustererV2.cxx:988
 AliITSclustererV2.cxx:989
 AliITSclustererV2.cxx:990
 AliITSclustererV2.cxx:991
 AliITSclustererV2.cxx:992
 AliITSclustererV2.cxx:993
 AliITSclustererV2.cxx:994
 AliITSclustererV2.cxx:995
 AliITSclustererV2.cxx:996
 AliITSclustererV2.cxx:997
 AliITSclustererV2.cxx:998
 AliITSclustererV2.cxx:999
 AliITSclustererV2.cxx:1000
 AliITSclustererV2.cxx:1001
 AliITSclustererV2.cxx:1002
 AliITSclustererV2.cxx:1003
 AliITSclustererV2.cxx:1004
 AliITSclustererV2.cxx:1005
 AliITSclustererV2.cxx:1006
 AliITSclustererV2.cxx:1007
 AliITSclustererV2.cxx:1008
 AliITSclustererV2.cxx:1009
 AliITSclustererV2.cxx:1010
 AliITSclustererV2.cxx:1011
 AliITSclustererV2.cxx:1012
 AliITSclustererV2.cxx:1013
 AliITSclustererV2.cxx:1014
 AliITSclustererV2.cxx:1015
 AliITSclustererV2.cxx:1016
 AliITSclustererV2.cxx:1017
 AliITSclustererV2.cxx:1018
 AliITSclustererV2.cxx:1019
 AliITSclustererV2.cxx:1020
 AliITSclustererV2.cxx:1021
 AliITSclustererV2.cxx:1022
 AliITSclustererV2.cxx:1023
 AliITSclustererV2.cxx:1024
 AliITSclustererV2.cxx:1025
 AliITSclustererV2.cxx:1026
 AliITSclustererV2.cxx:1027
 AliITSclustererV2.cxx:1028
 AliITSclustererV2.cxx:1029
 AliITSclustererV2.cxx:1030
 AliITSclustererV2.cxx:1031
 AliITSclustererV2.cxx:1032
 AliITSclustererV2.cxx:1033
 AliITSclustererV2.cxx:1034
 AliITSclustererV2.cxx:1035
 AliITSclustererV2.cxx:1036
 AliITSclustererV2.cxx:1037
 AliITSclustererV2.cxx:1038
 AliITSclustererV2.cxx:1039
 AliITSclustererV2.cxx:1040
 AliITSclustererV2.cxx:1041
 AliITSclustererV2.cxx:1042
 AliITSclustererV2.cxx:1043
 AliITSclustererV2.cxx:1044
 AliITSclustererV2.cxx:1045
 AliITSclustererV2.cxx:1046
 AliITSclustererV2.cxx:1047
 AliITSclustererV2.cxx:1048
 AliITSclustererV2.cxx:1049
 AliITSclustererV2.cxx:1050
 AliITSclustererV2.cxx:1051
 AliITSclustererV2.cxx:1052
 AliITSclustererV2.cxx:1053
 AliITSclustererV2.cxx:1054
 AliITSclustererV2.cxx:1055
 AliITSclustererV2.cxx:1056
 AliITSclustererV2.cxx:1057
 AliITSclustererV2.cxx:1058
 AliITSclustererV2.cxx:1059
 AliITSclustererV2.cxx:1060
 AliITSclustererV2.cxx:1061
 AliITSclustererV2.cxx:1062
 AliITSclustererV2.cxx:1063
 AliITSclustererV2.cxx:1064
 AliITSclustererV2.cxx:1065
 AliITSclustererV2.cxx:1066
 AliITSclustererV2.cxx:1067
 AliITSclustererV2.cxx:1068
 AliITSclustererV2.cxx:1069
 AliITSclustererV2.cxx:1070
 AliITSclustererV2.cxx:1071
 AliITSclustererV2.cxx:1072
 AliITSclustererV2.cxx:1073
 AliITSclustererV2.cxx:1074
 AliITSclustererV2.cxx:1075
 AliITSclustererV2.cxx:1076
 AliITSclustererV2.cxx:1077
 AliITSclustererV2.cxx:1078
 AliITSclustererV2.cxx:1079
 AliITSclustererV2.cxx:1080
 AliITSclustererV2.cxx:1081
 AliITSclustererV2.cxx:1082
 AliITSclustererV2.cxx:1083
 AliITSclustererV2.cxx:1084
 AliITSclustererV2.cxx:1085
 AliITSclustererV2.cxx:1086
 AliITSclustererV2.cxx:1087
 AliITSclustererV2.cxx:1088
 AliITSclustererV2.cxx:1089
 AliITSclustererV2.cxx:1090
 AliITSclustererV2.cxx:1091
 AliITSclustererV2.cxx:1092
 AliITSclustererV2.cxx:1093
 AliITSclustererV2.cxx:1094
 AliITSclustererV2.cxx:1095
 AliITSclustererV2.cxx:1096
 AliITSclustererV2.cxx:1097
 AliITSclustererV2.cxx:1098
 AliITSclustererV2.cxx:1099
 AliITSclustererV2.cxx:1100
 AliITSclustererV2.cxx:1101
 AliITSclustererV2.cxx:1102
 AliITSclustererV2.cxx:1103
 AliITSclustererV2.cxx:1104
 AliITSclustererV2.cxx:1105
 AliITSclustererV2.cxx:1106
 AliITSclustererV2.cxx:1107
 AliITSclustererV2.cxx:1108
 AliITSclustererV2.cxx:1109
 AliITSclustererV2.cxx:1110
 AliITSclustererV2.cxx:1111
 AliITSclustererV2.cxx:1112
 AliITSclustererV2.cxx:1113
 AliITSclustererV2.cxx:1114
 AliITSclustererV2.cxx:1115
 AliITSclustererV2.cxx:1116
 AliITSclustererV2.cxx:1117
 AliITSclustererV2.cxx:1118
 AliITSclustererV2.cxx:1119
 AliITSclustererV2.cxx:1120
 AliITSclustererV2.cxx:1121
 AliITSclustererV2.cxx:1122
 AliITSclustererV2.cxx:1123
 AliITSclustererV2.cxx:1124
 AliITSclustererV2.cxx:1125
 AliITSclustererV2.cxx:1126
 AliITSclustererV2.cxx:1127
 AliITSclustererV2.cxx:1128
 AliITSclustererV2.cxx:1129
 AliITSclustererV2.cxx:1130
 AliITSclustererV2.cxx:1131
 AliITSclustererV2.cxx:1132
 AliITSclustererV2.cxx:1133
 AliITSclustererV2.cxx:1134
 AliITSclustererV2.cxx:1135
 AliITSclustererV2.cxx:1136
 AliITSclustererV2.cxx:1137
 AliITSclustererV2.cxx:1138
 AliITSclustererV2.cxx:1139
 AliITSclustererV2.cxx:1140
 AliITSclustererV2.cxx:1141
 AliITSclustererV2.cxx:1142
 AliITSclustererV2.cxx:1143
 AliITSclustererV2.cxx:1144
 AliITSclustererV2.cxx:1145
 AliITSclustererV2.cxx:1146
 AliITSclustererV2.cxx:1147
 AliITSclustererV2.cxx:1148
 AliITSclustererV2.cxx:1149
 AliITSclustererV2.cxx:1150
 AliITSclustererV2.cxx:1151
 AliITSclustererV2.cxx:1152
 AliITSclustererV2.cxx:1153
 AliITSclustererV2.cxx:1154
 AliITSclustererV2.cxx:1155
 AliITSclustererV2.cxx:1156
 AliITSclustererV2.cxx:1157
 AliITSclustererV2.cxx:1158
 AliITSclustererV2.cxx:1159
 AliITSclustererV2.cxx:1160
 AliITSclustererV2.cxx:1161
 AliITSclustererV2.cxx:1162
 AliITSclustererV2.cxx:1163
 AliITSclustererV2.cxx:1164
 AliITSclustererV2.cxx:1165
 AliITSclustererV2.cxx:1166
 AliITSclustererV2.cxx:1167
 AliITSclustererV2.cxx:1168
 AliITSclustererV2.cxx:1169
 AliITSclustererV2.cxx:1170
 AliITSclustererV2.cxx:1171
 AliITSclustererV2.cxx:1172
 AliITSclustererV2.cxx:1173
 AliITSclustererV2.cxx:1174
 AliITSclustererV2.cxx:1175
 AliITSclustererV2.cxx:1176
 AliITSclustererV2.cxx:1177
 AliITSclustererV2.cxx:1178
 AliITSclustererV2.cxx:1179
 AliITSclustererV2.cxx:1180
 AliITSclustererV2.cxx:1181
 AliITSclustererV2.cxx:1182
 AliITSclustererV2.cxx:1183
 AliITSclustererV2.cxx:1184
 AliITSclustererV2.cxx:1185
 AliITSclustererV2.cxx:1186
 AliITSclustererV2.cxx:1187
 AliITSclustererV2.cxx:1188
 AliITSclustererV2.cxx:1189
 AliITSclustererV2.cxx:1190
 AliITSclustererV2.cxx:1191
 AliITSclustererV2.cxx:1192
 AliITSclustererV2.cxx:1193
 AliITSclustererV2.cxx:1194
 AliITSclustererV2.cxx:1195
 AliITSclustererV2.cxx:1196
 AliITSclustererV2.cxx:1197
 AliITSclustererV2.cxx:1198
 AliITSclustererV2.cxx:1199
 AliITSclustererV2.cxx:1200
 AliITSclustererV2.cxx:1201
 AliITSclustererV2.cxx:1202
 AliITSclustererV2.cxx:1203
 AliITSclustererV2.cxx:1204
 AliITSclustererV2.cxx:1205
 AliITSclustererV2.cxx:1206
 AliITSclustererV2.cxx:1207
 AliITSclustererV2.cxx:1208
 AliITSclustererV2.cxx:1209
 AliITSclustererV2.cxx:1210
 AliITSclustererV2.cxx:1211
 AliITSclustererV2.cxx:1212
 AliITSclustererV2.cxx:1213
 AliITSclustererV2.cxx:1214
 AliITSclustererV2.cxx:1215
 AliITSclustererV2.cxx:1216
 AliITSclustererV2.cxx:1217
 AliITSclustererV2.cxx:1218
 AliITSclustererV2.cxx:1219
 AliITSclustererV2.cxx:1220
 AliITSclustererV2.cxx:1221
 AliITSclustererV2.cxx:1222
 AliITSclustererV2.cxx:1223
 AliITSclustererV2.cxx:1224
 AliITSclustererV2.cxx:1225
 AliITSclustererV2.cxx:1226
 AliITSclustererV2.cxx:1227
 AliITSclustererV2.cxx:1228
 AliITSclustererV2.cxx:1229
 AliITSclustererV2.cxx:1230
 AliITSclustererV2.cxx:1231
 AliITSclustererV2.cxx:1232
 AliITSclustererV2.cxx:1233
 AliITSclustererV2.cxx:1234
 AliITSclustererV2.cxx:1235
 AliITSclustererV2.cxx:1236
 AliITSclustererV2.cxx:1237
 AliITSclustererV2.cxx:1238
 AliITSclustererV2.cxx:1239
 AliITSclustererV2.cxx:1240
 AliITSclustererV2.cxx:1241
 AliITSclustererV2.cxx:1242
 AliITSclustererV2.cxx:1243
 AliITSclustererV2.cxx:1244
 AliITSclustererV2.cxx:1245
 AliITSclustererV2.cxx:1246
 AliITSclustererV2.cxx:1247
 AliITSclustererV2.cxx:1248
 AliITSclustererV2.cxx:1249
 AliITSclustererV2.cxx:1250
 AliITSclustererV2.cxx:1251
 AliITSclustererV2.cxx:1252
 AliITSclustererV2.cxx:1253
 AliITSclustererV2.cxx:1254
 AliITSclustererV2.cxx:1255
 AliITSclustererV2.cxx:1256
 AliITSclustererV2.cxx:1257
 AliITSclustererV2.cxx:1258
 AliITSclustererV2.cxx:1259
 AliITSclustererV2.cxx:1260
 AliITSclustererV2.cxx:1261
 AliITSclustererV2.cxx:1262
 AliITSclustererV2.cxx:1263
 AliITSclustererV2.cxx:1264
 AliITSclustererV2.cxx:1265
 AliITSclustererV2.cxx:1266
 AliITSclustererV2.cxx:1267
 AliITSclustererV2.cxx:1268
 AliITSclustererV2.cxx:1269
 AliITSclustererV2.cxx:1270
 AliITSclustererV2.cxx:1271
 AliITSclustererV2.cxx:1272
 AliITSclustererV2.cxx:1273
 AliITSclustererV2.cxx:1274
 AliITSclustererV2.cxx:1275
 AliITSclustererV2.cxx:1276
 AliITSclustererV2.cxx:1277
 AliITSclustererV2.cxx:1278
 AliITSclustererV2.cxx:1279
 AliITSclustererV2.cxx:1280
 AliITSclustererV2.cxx:1281
 AliITSclustererV2.cxx:1282
 AliITSclustererV2.cxx:1283
 AliITSclustererV2.cxx:1284
 AliITSclustererV2.cxx:1285
 AliITSclustererV2.cxx:1286
 AliITSclustererV2.cxx:1287
 AliITSclustererV2.cxx:1288
 AliITSclustererV2.cxx:1289
 AliITSclustererV2.cxx:1290
 AliITSclustererV2.cxx:1291
 AliITSclustererV2.cxx:1292
 AliITSclustererV2.cxx:1293
 AliITSclustererV2.cxx:1294
 AliITSclustererV2.cxx:1295
 AliITSclustererV2.cxx:1296
 AliITSclustererV2.cxx:1297
 AliITSclustererV2.cxx:1298
 AliITSclustererV2.cxx:1299
 AliITSclustererV2.cxx:1300
 AliITSclustererV2.cxx:1301
 AliITSclustererV2.cxx:1302
 AliITSclustererV2.cxx:1303
 AliITSclustererV2.cxx:1304
 AliITSclustererV2.cxx:1305
 AliITSclustererV2.cxx:1306
 AliITSclustererV2.cxx:1307
 AliITSclustererV2.cxx:1308
 AliITSclustererV2.cxx:1309
 AliITSclustererV2.cxx:1310
 AliITSclustererV2.cxx:1311
 AliITSclustererV2.cxx:1312
 AliITSclustererV2.cxx:1313
 AliITSclustererV2.cxx:1314
 AliITSclustererV2.cxx:1315
 AliITSclustererV2.cxx:1316
 AliITSclustererV2.cxx:1317
 AliITSclustererV2.cxx:1318
 AliITSclustererV2.cxx:1319
 AliITSclustererV2.cxx:1320
 AliITSclustererV2.cxx:1321
 AliITSclustererV2.cxx:1322
 AliITSclustererV2.cxx:1323
 AliITSclustererV2.cxx:1324
 AliITSclustererV2.cxx:1325
 AliITSclustererV2.cxx:1326
 AliITSclustererV2.cxx:1327
 AliITSclustererV2.cxx:1328
 AliITSclustererV2.cxx:1329
 AliITSclustererV2.cxx:1330
 AliITSclustererV2.cxx:1331
 AliITSclustererV2.cxx:1332
 AliITSclustererV2.cxx:1333
 AliITSclustererV2.cxx:1334
 AliITSclustererV2.cxx:1335
 AliITSclustererV2.cxx:1336
 AliITSclustererV2.cxx:1337
 AliITSclustererV2.cxx:1338
 AliITSclustererV2.cxx:1339
 AliITSclustererV2.cxx:1340
 AliITSclustererV2.cxx:1341
 AliITSclustererV2.cxx:1342
 AliITSclustererV2.cxx:1343
 AliITSclustererV2.cxx:1344
 AliITSclustererV2.cxx:1345
 AliITSclustererV2.cxx:1346
 AliITSclustererV2.cxx:1347
 AliITSclustererV2.cxx:1348
 AliITSclustererV2.cxx:1349
 AliITSclustererV2.cxx:1350
 AliITSclustererV2.cxx:1351
 AliITSclustererV2.cxx:1352
 AliITSclustererV2.cxx:1353
 AliITSclustererV2.cxx:1354
 AliITSclustererV2.cxx:1355
 AliITSclustererV2.cxx:1356
 AliITSclustererV2.cxx:1357
 AliITSclustererV2.cxx:1358
 AliITSclustererV2.cxx:1359
 AliITSclustererV2.cxx:1360
 AliITSclustererV2.cxx:1361
 AliITSclustererV2.cxx:1362
 AliITSclustererV2.cxx:1363
 AliITSclustererV2.cxx:1364
 AliITSclustererV2.cxx:1365
 AliITSclustererV2.cxx:1366
 AliITSclustererV2.cxx:1367
 AliITSclustererV2.cxx:1368
 AliITSclustererV2.cxx:1369
 AliITSclustererV2.cxx:1370
 AliITSclustererV2.cxx:1371
 AliITSclustererV2.cxx:1372
 AliITSclustererV2.cxx:1373
 AliITSclustererV2.cxx:1374
 AliITSclustererV2.cxx:1375
 AliITSclustererV2.cxx:1376
 AliITSclustererV2.cxx:1377
 AliITSclustererV2.cxx:1378
 AliITSclustererV2.cxx:1379
 AliITSclustererV2.cxx:1380
 AliITSclustererV2.cxx:1381
 AliITSclustererV2.cxx:1382
 AliITSclustererV2.cxx:1383
 AliITSclustererV2.cxx:1384
 AliITSclustererV2.cxx:1385
 AliITSclustererV2.cxx:1386
 AliITSclustererV2.cxx:1387
 AliITSclustererV2.cxx:1388
 AliITSclustererV2.cxx:1389
 AliITSclustererV2.cxx:1390
 AliITSclustererV2.cxx:1391
 AliITSclustererV2.cxx:1392
 AliITSclustererV2.cxx:1393
 AliITSclustererV2.cxx:1394
 AliITSclustererV2.cxx:1395
 AliITSclustererV2.cxx:1396
 AliITSclustererV2.cxx:1397
 AliITSclustererV2.cxx:1398
 AliITSclustererV2.cxx:1399
 AliITSclustererV2.cxx:1400
 AliITSclustererV2.cxx:1401
 AliITSclustererV2.cxx:1402
 AliITSclustererV2.cxx:1403
 AliITSclustererV2.cxx:1404
 AliITSclustererV2.cxx:1405
 AliITSclustererV2.cxx:1406
 AliITSclustererV2.cxx:1407
 AliITSclustererV2.cxx:1408
 AliITSclustererV2.cxx:1409
 AliITSclustererV2.cxx:1410
 AliITSclustererV2.cxx:1411
 AliITSclustererV2.cxx:1412
 AliITSclustererV2.cxx:1413
 AliITSclustererV2.cxx:1414
 AliITSclustererV2.cxx:1415
 AliITSclustererV2.cxx:1416
 AliITSclustererV2.cxx:1417
 AliITSclustererV2.cxx:1418
 AliITSclustererV2.cxx:1419
 AliITSclustererV2.cxx:1420
 AliITSclustererV2.cxx:1421
 AliITSclustererV2.cxx:1422
 AliITSclustererV2.cxx:1423
 AliITSclustererV2.cxx:1424
 AliITSclustererV2.cxx:1425
 AliITSclustererV2.cxx:1426
 AliITSclustererV2.cxx:1427
 AliITSclustererV2.cxx:1428
 AliITSclustererV2.cxx:1429
 AliITSclustererV2.cxx:1430
 AliITSclustererV2.cxx:1431
 AliITSclustererV2.cxx:1432
 AliITSclustererV2.cxx:1433
 AliITSclustererV2.cxx:1434
 AliITSclustererV2.cxx:1435
 AliITSclustererV2.cxx:1436
 AliITSclustererV2.cxx:1437
 AliITSclustererV2.cxx:1438
 AliITSclustererV2.cxx:1439
 AliITSclustererV2.cxx:1440
 AliITSclustererV2.cxx:1441
 AliITSclustererV2.cxx:1442
 AliITSclustererV2.cxx:1443
 AliITSclustererV2.cxx:1444
 AliITSclustererV2.cxx:1445
 AliITSclustererV2.cxx:1446
 AliITSclustererV2.cxx:1447
 AliITSclustererV2.cxx:1448
 AliITSclustererV2.cxx:1449
 AliITSclustererV2.cxx:1450
 AliITSclustererV2.cxx:1451
 AliITSclustererV2.cxx:1452
 AliITSclustererV2.cxx:1453
 AliITSclustererV2.cxx:1454
 AliITSclustererV2.cxx:1455
 AliITSclustererV2.cxx:1456
 AliITSclustererV2.cxx:1457
 AliITSclustererV2.cxx:1458
 AliITSclustererV2.cxx:1459
 AliITSclustererV2.cxx:1460
 AliITSclustererV2.cxx:1461
 AliITSclustererV2.cxx:1462
 AliITSclustererV2.cxx:1463
 AliITSclustererV2.cxx:1464
 AliITSclustererV2.cxx:1465
 AliITSclustererV2.cxx:1466
 AliITSclustererV2.cxx:1467
 AliITSclustererV2.cxx:1468
 AliITSclustererV2.cxx:1469
 AliITSclustererV2.cxx:1470
 AliITSclustererV2.cxx:1471
 AliITSclustererV2.cxx:1472
 AliITSclustererV2.cxx:1473
 AliITSclustererV2.cxx:1474
 AliITSclustererV2.cxx:1475
 AliITSclustererV2.cxx:1476
 AliITSclustererV2.cxx:1477
 AliITSclustererV2.cxx:1478
 AliITSclustererV2.cxx:1479
 AliITSclustererV2.cxx:1480
 AliITSclustererV2.cxx:1481
 AliITSclustererV2.cxx:1482
 AliITSclustererV2.cxx:1483
 AliITSclustererV2.cxx:1484
 AliITSclustererV2.cxx:1485
 AliITSclustererV2.cxx:1486
 AliITSclustererV2.cxx:1487
 AliITSclustererV2.cxx:1488
 AliITSclustererV2.cxx:1489
 AliITSclustererV2.cxx:1490
 AliITSclustererV2.cxx:1491
 AliITSclustererV2.cxx:1492
 AliITSclustererV2.cxx:1493
 AliITSclustererV2.cxx:1494
 AliITSclustererV2.cxx:1495
 AliITSclustererV2.cxx:1496
 AliITSclustererV2.cxx:1497
 AliITSclustererV2.cxx:1498
 AliITSclustererV2.cxx:1499
 AliITSclustererV2.cxx:1500
 AliITSclustererV2.cxx:1501
 AliITSclustererV2.cxx:1502
 AliITSclustererV2.cxx:1503
 AliITSclustererV2.cxx:1504
 AliITSclustererV2.cxx:1505
 AliITSclustererV2.cxx:1506
 AliITSclustererV2.cxx:1507
 AliITSclustererV2.cxx:1508
 AliITSclustererV2.cxx:1509
 AliITSclustererV2.cxx:1510
 AliITSclustererV2.cxx:1511
 AliITSclustererV2.cxx:1512
 AliITSclustererV2.cxx:1513
 AliITSclustererV2.cxx:1514
 AliITSclustererV2.cxx:1515
 AliITSclustererV2.cxx:1516
 AliITSclustererV2.cxx:1517
 AliITSclustererV2.cxx:1518
 AliITSclustererV2.cxx:1519
 AliITSclustererV2.cxx:1520
 AliITSclustererV2.cxx:1521
 AliITSclustererV2.cxx:1522
 AliITSclustererV2.cxx:1523
 AliITSclustererV2.cxx:1524
 AliITSclustererV2.cxx:1525
 AliITSclustererV2.cxx:1526
 AliITSclustererV2.cxx:1527
 AliITSclustererV2.cxx:1528
 AliITSclustererV2.cxx:1529
 AliITSclustererV2.cxx:1530
 AliITSclustererV2.cxx:1531
 AliITSclustererV2.cxx:1532
 AliITSclustererV2.cxx:1533
 AliITSclustererV2.cxx:1534
 AliITSclustererV2.cxx:1535
 AliITSclustererV2.cxx:1536
 AliITSclustererV2.cxx:1537
 AliITSclustererV2.cxx:1538
 AliITSclustererV2.cxx:1539
 AliITSclustererV2.cxx:1540
 AliITSclustererV2.cxx:1541
 AliITSclustererV2.cxx:1542
 AliITSclustererV2.cxx:1543
 AliITSclustererV2.cxx:1544
 AliITSclustererV2.cxx:1545
 AliITSclustererV2.cxx:1546
 AliITSclustererV2.cxx:1547
 AliITSclustererV2.cxx:1548
 AliITSclustererV2.cxx:1549
 AliITSclustererV2.cxx:1550
 AliITSclustererV2.cxx:1551
 AliITSclustererV2.cxx:1552
 AliITSclustererV2.cxx:1553
 AliITSclustererV2.cxx:1554
 AliITSclustererV2.cxx:1555
 AliITSclustererV2.cxx:1556
 AliITSclustererV2.cxx:1557
 AliITSclustererV2.cxx:1558
 AliITSclustererV2.cxx:1559
 AliITSclustererV2.cxx:1560
 AliITSclustererV2.cxx:1561
 AliITSclustererV2.cxx:1562
 AliITSclustererV2.cxx:1563
 AliITSclustererV2.cxx:1564
 AliITSclustererV2.cxx:1565
 AliITSclustererV2.cxx:1566
 AliITSclustererV2.cxx:1567
 AliITSclustererV2.cxx:1568
 AliITSclustererV2.cxx:1569
 AliITSclustererV2.cxx:1570
 AliITSclustererV2.cxx:1571
 AliITSclustererV2.cxx:1572
 AliITSclustererV2.cxx:1573
 AliITSclustererV2.cxx:1574
 AliITSclustererV2.cxx:1575
 AliITSclustererV2.cxx:1576
 AliITSclustererV2.cxx:1577
 AliITSclustererV2.cxx:1578
 AliITSclustererV2.cxx:1579
 AliITSclustererV2.cxx:1580
 AliITSclustererV2.cxx:1581
 AliITSclustererV2.cxx:1582
 AliITSclustererV2.cxx:1583
 AliITSclustererV2.cxx:1584
 AliITSclustererV2.cxx:1585
 AliITSclustererV2.cxx:1586
 AliITSclustererV2.cxx:1587
 AliITSclustererV2.cxx:1588
 AliITSclustererV2.cxx:1589
 AliITSclustererV2.cxx:1590
 AliITSclustererV2.cxx:1591
 AliITSclustererV2.cxx:1592
 AliITSclustererV2.cxx:1593
 AliITSclustererV2.cxx:1594
 AliITSclustererV2.cxx:1595
 AliITSclustererV2.cxx:1596
 AliITSclustererV2.cxx:1597
 AliITSclustererV2.cxx:1598
 AliITSclustererV2.cxx:1599
 AliITSclustererV2.cxx:1600
 AliITSclustererV2.cxx:1601
 AliITSclustererV2.cxx:1602
 AliITSclustererV2.cxx:1603
 AliITSclustererV2.cxx:1604
 AliITSclustererV2.cxx:1605
 AliITSclustererV2.cxx:1606
 AliITSclustererV2.cxx:1607
 AliITSclustererV2.cxx:1608
 AliITSclustererV2.cxx:1609
 AliITSclustererV2.cxx:1610
 AliITSclustererV2.cxx:1611
 AliITSclustererV2.cxx:1612
 AliITSclustererV2.cxx:1613
 AliITSclustererV2.cxx:1614
 AliITSclustererV2.cxx:1615
 AliITSclustererV2.cxx:1616
 AliITSclustererV2.cxx:1617
 AliITSclustererV2.cxx:1618
 AliITSclustererV2.cxx:1619
 AliITSclustererV2.cxx:1620
 AliITSclustererV2.cxx:1621
 AliITSclustererV2.cxx:1622
 AliITSclustererV2.cxx:1623
 AliITSclustererV2.cxx:1624
 AliITSclustererV2.cxx:1625
 AliITSclustererV2.cxx:1626
 AliITSclustererV2.cxx:1627
 AliITSclustererV2.cxx:1628
 AliITSclustererV2.cxx:1629
 AliITSclustererV2.cxx:1630
 AliITSclustererV2.cxx:1631
 AliITSclustererV2.cxx:1632
 AliITSclustererV2.cxx:1633
 AliITSclustererV2.cxx:1634
 AliITSclustererV2.cxx:1635
 AliITSclustererV2.cxx:1636
 AliITSclustererV2.cxx:1637
 AliITSclustererV2.cxx:1638
 AliITSclustererV2.cxx:1639
 AliITSclustererV2.cxx:1640
 AliITSclustererV2.cxx:1641
 AliITSclustererV2.cxx:1642
 AliITSclustererV2.cxx:1643
 AliITSclustererV2.cxx:1644
 AliITSclustererV2.cxx:1645
 AliITSclustererV2.cxx:1646
 AliITSclustererV2.cxx:1647
 AliITSclustererV2.cxx:1648
 AliITSclustererV2.cxx:1649
 AliITSclustererV2.cxx:1650
 AliITSclustererV2.cxx:1651
 AliITSclustererV2.cxx:1652
 AliITSclustererV2.cxx:1653
 AliITSclustererV2.cxx:1654
 AliITSclustererV2.cxx:1655
 AliITSclustererV2.cxx:1656
 AliITSclustererV2.cxx:1657
 AliITSclustererV2.cxx:1658
 AliITSclustererV2.cxx:1659
 AliITSclustererV2.cxx:1660
 AliITSclustererV2.cxx:1661
 AliITSclustererV2.cxx:1662
 AliITSclustererV2.cxx:1663
 AliITSclustererV2.cxx:1664
 AliITSclustererV2.cxx:1665
 AliITSclustererV2.cxx:1666
 AliITSclustererV2.cxx:1667
 AliITSclustererV2.cxx:1668
 AliITSclustererV2.cxx:1669
 AliITSclustererV2.cxx:1670
 AliITSclustererV2.cxx:1671
 AliITSclustererV2.cxx:1672
 AliITSclustererV2.cxx:1673
 AliITSclustererV2.cxx:1674
 AliITSclustererV2.cxx:1675
 AliITSclustererV2.cxx:1676
 AliITSclustererV2.cxx:1677
 AliITSclustererV2.cxx:1678
 AliITSclustererV2.cxx:1679
 AliITSclustererV2.cxx:1680
 AliITSclustererV2.cxx:1681
 AliITSclustererV2.cxx:1682
 AliITSclustererV2.cxx:1683
 AliITSclustererV2.cxx:1684
 AliITSclustererV2.cxx:1685
 AliITSclustererV2.cxx:1686
 AliITSclustererV2.cxx:1687
 AliITSclustererV2.cxx:1688
 AliITSclustererV2.cxx:1689
 AliITSclustererV2.cxx:1690
 AliITSclustererV2.cxx:1691
 AliITSclustererV2.cxx:1692
 AliITSclustererV2.cxx:1693
 AliITSclustererV2.cxx:1694
 AliITSclustererV2.cxx:1695
 AliITSclustererV2.cxx:1696
 AliITSclustererV2.cxx:1697
 AliITSclustererV2.cxx:1698
 AliITSclustererV2.cxx:1699
 AliITSclustererV2.cxx:1700
 AliITSclustererV2.cxx:1701
 AliITSclustererV2.cxx:1702
 AliITSclustererV2.cxx:1703
 AliITSclustererV2.cxx:1704
 AliITSclustererV2.cxx:1705
 AliITSclustererV2.cxx:1706
 AliITSclustererV2.cxx:1707
 AliITSclustererV2.cxx:1708
 AliITSclustererV2.cxx:1709
 AliITSclustererV2.cxx:1710