ROOT logo
/**************************************************************************
 * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
/* $Id$ */

//-------------------------------------------------------------------------
//      Implementation of the on-the-fly v0 finder for ITS tracker MI
//          Origin: Marian Ivanov, CERN, Marian.Ivanov@cern.ch 
//          Extraction from AliITStrackerMI: Andrea Dainese
//          Current support and development: 
//-------------------------------------------------------------------------

#include <TMatrixD.h>
#include <TTree.h>
#include <TString.h>
#include <TRandom.h>
#include <TTreeStream.h>


#include "AliLog.h"
#include "AliESDVertex.h"
#include "AliESDEvent.h"
#include "AliESDtrack.h"
#include "AliESDV0Params.h"
#include "AliV0.h"
#include "AliHelix.h"
#include "AliITSRecPoint.h"
#include "AliITSReconstructor.h"
#include "AliITStrackerMI.h"
#include "AliITSV0Finder.h"
#include "AliKFParticle.h"
#include "AliKFVertex.h"

ClassImp(AliITSV0Finder)


AliITSV0Finder::AliITSV0Finder():
fDebugStreamer(0)
 {
  //Default constructor

   if (AliITSReconstructor::GetRecoParam()->GetESDV0Params()->StreamLevel()>0)
     fDebugStreamer = new TTreeSRedirector("ITSdebug.root");
} 

//------------------------------------------------------------------------
void AliITSV0Finder::UpdateTPCV0(const AliESDEvent *event,
				   AliITStrackerMI *tracker)
{
  //
  //try to update, or reject TPC  V0s
  //
  const Float_t kMinTgl2= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinTgl2();

  TObjArray *trackHypothesys = tracker->GetTrackHypothesys();

  Int_t nv0s = event->GetNumberOfV0s();
  Int_t nitstracks = trackHypothesys->GetEntriesFast();

  for (Int_t i=0;i<nv0s;i++){
    AliESDv0 * vertex = event->GetV0(i);
    Int_t ip = vertex->GetIndex(0);
    Int_t im = vertex->GetIndex(1);
    //
    TObjArray * arrayp = (ip<nitstracks) ? (TObjArray*)trackHypothesys->At(ip):0;
    TObjArray * arraym = (im<nitstracks) ? (TObjArray*)trackHypothesys->At(im):0;
    AliITStrackMI * trackp = (arrayp!=0) ? (AliITStrackMI*)arrayp->At(0):0;
    AliITStrackMI * trackm = (arraym!=0) ? (AliITStrackMI*)arraym->At(0):0;
    //
    //
    if (trackp){
      if (trackp->GetNumberOfClusters()+trackp->GetNDeadZone()>5.5){
	if (trackp->GetConstrain()&&trackp->GetChi2MIP(0)<3) vertex->SetStatus(-100);
	if (!trackp->GetConstrain()&&trackp->GetChi2MIP(0)<2) vertex->SetStatus(-100); 
      }
    }

    if (trackm){
      if (trackm->GetNumberOfClusters()+trackm->GetNDeadZone()>5.5){
	if (trackm->GetConstrain()&&trackm->GetChi2MIP(0)<3) vertex->SetStatus(-100);
	if (!trackm->GetConstrain()&&trackm->GetChi2MIP(0)<2) vertex->SetStatus(-100); 
      }
    }
    if (vertex->GetStatus()==-100) continue;
    //
    Double_t xrp[3]; vertex->GetXYZ(xrp[0],xrp[1],xrp[2]);  //I.B.
    Int_t clayer = tracker->GetNearestLayer(xrp);                    //I.B.
    vertex->SetNBefore(clayer);        //
    vertex->SetChi2Before(9*clayer);   //
    vertex->SetNAfter(6-clayer);       //
    vertex->SetChi2After(0);           //
    //
    if (clayer >1 ){ // calculate chi2 before vertex
      Float_t chi2p = 0, chi2m=0;  
      //
      if (trackp){
	for (Int_t ilayer=0;ilayer<clayer;ilayer++){
	  if (trackp->GetClIndex(ilayer)>=0){
	    chi2p+=trackp->GetDy(ilayer)*trackp->GetDy(ilayer)/(trackp->GetSigmaY(ilayer)*trackp->GetSigmaY(ilayer))+
	      trackp->GetDz(ilayer)*trackp->GetDz(ilayer)/(trackp->GetSigmaZ(ilayer)*trackp->GetSigmaZ(ilayer));
	  }
	  else{
	    chi2p+=9;
	  }
	}
      }else{
	chi2p = 9*clayer;
      }
      //
      if (trackm){
	for (Int_t ilayer=0;ilayer<clayer;ilayer++){
	  if (trackm->GetClIndex(ilayer)>=0){
	    chi2m+=trackm->GetDy(ilayer)*trackm->GetDy(ilayer)/(trackm->GetSigmaY(ilayer)*trackm->GetSigmaY(ilayer))+
	      trackm->GetDz(ilayer)*trackm->GetDz(ilayer)/(trackm->GetSigmaZ(ilayer)*trackm->GetSigmaZ(ilayer));
	  }
	  else{
	    chi2m+=9;
	  }
	}
      }else{
	chi2m = 9*clayer;
      }
      vertex->SetChi2Before(TMath::Min(chi2p,chi2m));
      if (TMath::Min(chi2p,chi2m)/Float_t(clayer)<4) vertex->SetStatus(-10);  // track exist before vertex
    }
    
    if (clayer < 5 ){ // calculate chi2 after vertex
      Float_t chi2p = 0, chi2m=0;  
      //
      if (trackp&&TMath::Abs(trackp->GetTgl())<kMinTgl2){
	for (Int_t ilayer=clayer;ilayer<6;ilayer++){
	  if (trackp->GetClIndex(ilayer)>=0){
	    chi2p+=trackp->GetDy(ilayer)*trackp->GetDy(ilayer)/(trackp->GetSigmaY(ilayer)*trackp->GetSigmaY(ilayer))+
	      trackp->GetDz(ilayer)*trackp->GetDz(ilayer)/(trackp->GetSigmaZ(ilayer)*trackp->GetSigmaZ(ilayer));
	  }
	  else{
	    chi2p+=9;
	  }
	}
      }else{
	chi2p = 0;
      }
      //
      if (trackm&&TMath::Abs(trackm->GetTgl())<kMinTgl2){
	for (Int_t ilayer=clayer;ilayer<6;ilayer++){
	  if (trackm->GetClIndex(ilayer)>=0){
	    chi2m+=trackm->GetDy(ilayer)*trackm->GetDy(ilayer)/(trackm->GetSigmaY(ilayer)*trackm->GetSigmaY(ilayer))+
	      trackm->GetDz(ilayer)*trackm->GetDz(ilayer)/(trackm->GetSigmaZ(ilayer)*trackm->GetSigmaZ(ilayer));
	  }
	  else{
	    chi2m+=9;
	  }
	}
      }else{
	chi2m = 0;
      }
      vertex->SetChi2After(TMath::Max(chi2p,chi2m));
      if (TMath::Max(chi2m,chi2p)/Float_t(6-clayer)>9) vertex->SetStatus(-20);  // track not found in ITS
    }
  }
  //
}
//------------------------------------------------------------------------
void AliITSV0Finder::FindV02(AliESDEvent *event,
			       AliITStrackerMI *tracker) 
{
  //
  // V0 finder
  //
  //  Cuts on DCA -  R dependent
  //          max distance DCA between 2 tracks cut 
  //          maxDist = TMath::Min(kMaxDist,kMaxDist0+pvertex->GetRr()*kMaxDist);
  //
  const Bool_t kCheckPropagate = kFALSE;
  const Float_t kMaxDist0 = AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMaxDist0();
  const Float_t kMaxDist1 = AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMaxDist1();
  const Float_t kMaxDist = AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMaxDist();
  const Float_t kMinPointAngle = AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinPointAngle();
  const Float_t kMinPointAngle2 = AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinPointAngle2();
  const Float_t kMinR = AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinR();
  const Float_t kMaxR = AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMaxR();
  const Float_t kMinPABestConst = AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinPABestConst();
  const Float_t kMaxRBestConst = AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMaxRBestConst();
  const Float_t kCausality0Cut = AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetCausality0Cut();
  const Float_t kLikelihood01Cut = AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetLikelihood01Cut();
  const Float_t kLikelihood1Cut = AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetLikelihood1Cut();
  const Float_t kCombinedCut = AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetCombinedCut();
  const Float_t kMinClFullTrk= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinClFullTrk();
  const Float_t kMinTgl0= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinTgl0();
  const Float_t kMinRTgl0= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinRTgl0();

  const Float_t kMinNormDistForbTgl0= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinNormDistForbTgl0();
  const Float_t kMinClForb0= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinClForb0();
  const Float_t kMinNormDistForb1= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinNormDistForb1();
  const Float_t kMinNormDistForb2= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinNormDistForb2();
  const Float_t kMinNormDistForb3= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinNormDistForb3();
  const Float_t kMinNormDistForb4= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinNormDistForb4();
  const Float_t kMinNormDistForb5= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinNormDistForb5();
  const Float_t kMinNormDistForbProt= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinNormDistForbProt();
  const Float_t kMaxPidProbPionForb= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMaxPidProbPionForb();

  const Float_t kMinRTPCdensity= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinRTPCdensity();
  const Float_t kMaxRTPCdensity0= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMaxRTPCdensity0();
  const Float_t kMaxRTPCdensity10= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMaxRTPCdensity10();
  const Float_t kMaxRTPCdensity20= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMaxRTPCdensity20();
  const Float_t kMaxRTPCdensity30= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMaxRTPCdensity30();


  const Float_t kMinTPCdensity= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinTPCdensity();
  const Float_t kMinTgl1= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinTgl1();

  const Float_t kMinchi2before0= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinchi2before0();
  const Float_t kMinchi2before1= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinchi2before1();
  const Float_t kMinchi2after0= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinchi2after0();
  const Float_t kMinchi2after1= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMinchi2after1();
  const Float_t kAddchi2SharedCl= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetAddchi2SharedCl();
  const Float_t kAddchi2NegCl0= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetAddchi2NegCl0();
  const Float_t kAddchi2NegCl1= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetAddchi2NegCl1();

  const Float_t kSigp0Par0= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetSigp0Par0();
  const Float_t kSigp0Par1= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetSigp0Par1();
  const Float_t kSigp0Par2= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetSigp0Par2();

  const Float_t kSigpPar0= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetSigpPar0();
  const Float_t kSigpPar1= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetSigpPar1();
  const Float_t kSigpPar2= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetSigpPar2();
  const Float_t kMaxDcaLh0= AliITSReconstructor::GetRecoParam()->GetESDV0Params()->GetMaxDcaLh0();


  TObjArray *trackHypothesys = tracker->GetTrackHypothesys();
  TObjArray *bestHypothesys  = tracker->GetBestHypothesys();
  TObjArray *originalTracks  = tracker->GetOriginal();
  //
  //
  TTreeSRedirector &cstream = *(tracker->GetDebugStreamer());
  Int_t ntracks    = event->GetNumberOfTracks(); 
  Int_t nitstracks = originalTracks->GetEntriesFast();
  originalTracks->Expand(ntracks);
  trackHypothesys->Expand(ntracks);
  bestHypothesys->Expand(ntracks);
  //
  AliHelix * helixes   = new AliHelix[ntracks+2];
  TObjArray trackarray(ntracks+2);     //array with tracks - with vertex constrain
  TObjArray trackarrayc(ntracks+2);    //array of "best    tracks" - without vertex constrain
  TObjArray trackarrayl(ntracks+2);    //array of "longest tracks" - without vertex constrain
  //Change from Bool_t to Int_t for optimization
  //  Int_t forbN=0;
  //  Int_t * forbidden   = new Int_t [ntracks+2];
  Bool_t * forbidden   = new Bool_t [ntracks+2];
  Int_t   *itsmap      = new Int_t  [ntracks+2];
  Float_t *dist        = new Float_t[ntracks+2];
  Float_t *normdist0   = new Float_t[ntracks+2];
  Float_t *normdist1   = new Float_t[ntracks+2];
  Float_t *normdist    = new Float_t[ntracks+2];
  Float_t *norm        = new Float_t[ntracks+2];
  Float_t *maxr        = new Float_t[ntracks+2];
  Float_t *minr        = new Float_t[ntracks+2];
  Float_t *minPointAngle= new Float_t[ntracks+2];
  //
  AliV0 *pvertex      = new AliV0;
  AliITStrackMI * dummy= new AliITStrackMI;
  dummy->SetLabel(0);
  AliITStrackMI  trackat0;    //temporary track for DCA calculation
  //
  Float_t primvertex[3]={static_cast<Float_t>(tracker->GetX()),static_cast<Float_t>(tracker->GetY()),static_cast<Float_t>(tracker->GetZ())};
  //
  // make ITS -  ESD map
  //
  for (Int_t itrack=0;itrack<ntracks+2;itrack++) {
    itsmap[itrack]        = -1;
    //    forbidden[itrack]     = 0;
    forbidden[itrack]     = kFALSE;
    maxr[itrack]          = kMaxR;
    minr[itrack]          = kMinR;
    minPointAngle[itrack] = kMinPointAngle;
  }
  for (Int_t itrack=0;itrack<nitstracks;itrack++){
    AliITStrackMI * original =   (AliITStrackMI*)(originalTracks->At(itrack));
    Int_t           esdindex =   original->GetESDtrack()->GetID();
    itsmap[esdindex]         =   itrack;
  }
  //
  // create ITS tracks from ESD tracks if not done before
  //
  for (Int_t itrack=0;itrack<ntracks;itrack++){
    if (itsmap[itrack]>=0) continue;
    AliITStrackMI * tpctrack = new AliITStrackMI(*(event->GetTrack(itrack)));
    //tpctrack->fD[0] = tpctrack->GetD(GetX(),GetY());
    //tpctrack->fD[1] = tpctrack->GetZat(GetX())-GetZ(); 
    tpctrack->GetDZ(tracker->GetX(),tracker->GetY(),tracker->GetZ(),tpctrack->GetDP());   //I.B.
    if (tpctrack->GetD(0)<20 && tpctrack->GetD(1)<20){
      // tracks which can reach inner part of ITS
      // propagate track to outer its volume - with correction for material
      AliITStrackerMI::CorrectForTPCtoITSDeadZoneMaterial(tpctrack);  
    }
    itsmap[itrack] = nitstracks;
    originalTracks->AddAt(tpctrack,nitstracks);
    nitstracks++;
  }
  //
  // fill temporary arrays
  //
  for (Int_t itrack=0;itrack<ntracks;itrack++){
    AliESDtrack *  esdtrack = event->GetTrack(itrack);
    Int_t          itsindex = itsmap[itrack];
    AliITStrackMI *original = (AliITStrackMI*)originalTracks->At(itsmap[itrack]);
    if (!original) continue;
    AliITStrackMI *bestConst  = 0;
    AliITStrackMI *bestLong   = 0;
    AliITStrackMI *best       = 0;    
    //
    //
    TObjArray * array    = (TObjArray*)  trackHypothesys->At(itsindex);
    Int_t       hentries = (array==0) ?  0 : array->GetEntriesFast();
    // Get best track with vertex constrain
    for (Int_t ih=0;ih<hentries;ih++){
      AliITStrackMI * trackh = (AliITStrackMI*)array->At(ih);
      if (!trackh->GetConstrain()) continue;
      if (!bestConst) bestConst = trackh;
      if (trackh->GetNumberOfClusters()>kMinClFullTrk ){
	bestConst  = trackh;                         // full track -  with minimal chi2
	break;
      }
      if (trackh->GetNumberOfClusters()+trackh->GetNDeadZone()<=bestConst->GetNumberOfClusters()+bestConst->GetNDeadZone())  continue;      
      bestConst = trackh;
      break;
    }
    // Get best long track without vertex constrain and best track without vertex constrain
    for (Int_t ih=0;ih<hentries;ih++){
      AliITStrackMI * trackh = (AliITStrackMI*)array->At(ih);
      if (trackh->GetConstrain()) continue;
      if (!best)     best     = trackh;
      if (!bestLong) bestLong = trackh;
      if (trackh->GetNumberOfClusters()>kMinClFullTrk){
	bestLong  = trackh;                         // full track -  with minimal chi2
	break;
      }
      if (trackh->GetNumberOfClusters()+trackh->GetNDeadZone()<=bestLong->GetNumberOfClusters()+bestLong->GetNDeadZone())  continue;      
      bestLong = trackh;	
    }
    if (!best) {
      best     = original;
      bestLong = original;
    }
    //I.B. trackat0 = *bestLong;
    new (&trackat0) AliITStrackMI(*bestLong);
    Double_t xx,yy,zz,alpha; 
    if (!bestLong->GetGlobalXYZat(bestLong->GetX(),xx,yy,zz)) continue;
    

    alpha = TMath::ATan2(yy,xx);    
    //    if (!trackat0.Propagate(alpha,0)) continue;    
    //    trackat0.Propagate(alpha,0); //PH The check on the return value is temporarily disabled (bug 45751) 
    if(!trackat0.Propagate(alpha,0) && kCheckPropagate)continue;
    // calculate normalized distances to the vertex 
    //
    Float_t ptfac  = (1.+100.*TMath::Abs(trackat0.GetC()));
    if ( bestLong->GetNumberOfClusters()>3 ){      
      dist[itsindex]      = trackat0.GetY();
      norm[itsindex]      = ptfac*TMath::Sqrt(trackat0.GetSigmaY2());
      normdist0[itsindex] = TMath::Abs(trackat0.GetY()/norm[itsindex]);
      normdist1[itsindex] = TMath::Abs((trackat0.GetZ()-primvertex[2])/(ptfac*TMath::Sqrt(trackat0.GetSigmaZ2())));
      normdist[itsindex]  = TMath::Sqrt(normdist0[itsindex]*normdist0[itsindex]+normdist1[itsindex]*normdist1[itsindex]);
      if (!bestConst){
	if (bestLong->GetNumberOfClusters()+bestLong->GetNDeadZone()<6) normdist[itsindex]*=2.;
	if (bestLong->GetNumberOfClusters()+bestLong->GetNDeadZone()<5) normdist[itsindex]*=2.;
	if (bestLong->GetNumberOfClusters()+bestLong->GetNDeadZone()<4) normdist[itsindex]*=2.;
      }else{
	if (bestConst->GetNumberOfClusters()+bestConst->GetNDeadZone()<6) normdist[itsindex]*=1.5;
	if (bestConst->GetNumberOfClusters()+bestConst->GetNDeadZone()<5) normdist[itsindex]*=1.5;
      }
    }
    else{      
      if (bestConst&&bestConst->GetNumberOfClusters()+bestConst->GetNDeadZone()>4.5){
	dist[itsindex] = bestConst->GetD(0);
	norm[itsindex] = bestConst->GetDnorm(0);
	normdist0[itsindex] = TMath::Abs(bestConst->GetD(0)/norm[itsindex]);
	normdist1[itsindex] = TMath::Abs(bestConst->GetD(0)/norm[itsindex]);
	normdist[itsindex]  = TMath::Sqrt(normdist0[itsindex]*normdist0[itsindex]+normdist1[itsindex]*normdist1[itsindex]);
      }else{
	dist[itsindex]      = trackat0.GetY();
	norm[itsindex]      = ptfac*TMath::Sqrt(trackat0.GetSigmaY2());
	normdist0[itsindex] = TMath::Abs(trackat0.GetY()/norm[itsindex]);
	normdist1[itsindex] = TMath::Abs((trackat0.GetZ()-primvertex[2])/(ptfac*TMath::Sqrt(trackat0.GetSigmaZ2())));
	normdist[itsindex]  = TMath::Sqrt(normdist0[itsindex]*normdist0[itsindex]+normdist1[itsindex]*normdist1[itsindex]);
	if (TMath::Abs(trackat0.GetTgl())>kMinTgl0){
	  if (normdist[itsindex]<kMinNormDistForbTgl0){
	    //	    forbN=1;
	    //	    forbidden[itsindex]+=1<<forbN;
	    forbidden[itsindex]=kTRUE;
	  }
	  if (normdist[itsindex]>kMinNormDistForbTgl0) {
	    minr[itsindex] = TMath::Max(kMinRTgl0,minr[itsindex]);
	  }
	}
      }
    }


    //
    //-----------------------------------------------------------
    //Forbid primary track candidates - 
    //
    //treetr->SetAlias("forbidden0","Tr0.fN<4&&Tr1.fN+Tr1.fNDeadZone>4.5");
    //treetr->SetAlias("forbidden1","ND<3&&Tr1.fN+Tr1.fNDeadZone>5.5");
    //treetr->SetAlias("forbidden2","ND<2&&Tr1.fClIndex[0]>0&&Tr1.fClIndex[0]>0");
    //treetr->SetAlias("forbidden3","ND<1&&Tr1.fClIndex[0]>0");
    //treetr->SetAlias("forbidden4","ND<4&&Tr1.fNormChi2[0]<2");
    //treetr->SetAlias("forbidden5","ND<5&&Tr1.fNormChi2[0]<1");
    //-----------------------------------------------------------
    if (bestConst){
      if (bestLong->GetNumberOfClusters()<4 && bestConst->GetNumberOfClusters()+bestConst->GetNDeadZone()>kMinClForb0){
	//	forbN=2;
	//	forbidden[itsindex]+=1<<forbN;
	forbidden[itsindex]=kTRUE;
      }
      if (normdist[itsindex]<kMinNormDistForb1 && bestConst->GetNumberOfClusters()+bestConst->GetNDeadZone()>5.5){
	//	forbN=3;
	//	forbidden[itsindex]+=1<<forbN;
	forbidden[itsindex]=kTRUE;
      }
      if (normdist[itsindex]<kMinNormDistForb2 && bestConst->GetClIndex(0)>=0 && bestConst->GetClIndex(1)>=0 ){
	//	forbN=4;
	//	forbidden[itsindex]+=1<<forbN;
	forbidden[itsindex]=kTRUE;
      }
      if (normdist[itsindex]<kMinNormDistForb3 && bestConst->GetClIndex(0)>=0){
	//	forbN=5;
	//	forbidden[itsindex]+=1<<forbN;
	forbidden[itsindex]=kTRUE;
      }
      if (normdist[itsindex]<kMinNormDistForb4 && bestConst->GetNormChi2(0)<2){
	//	forbN=6;
	//	forbidden[itsindex]+=1<<forbN;
	forbidden[itsindex]=kTRUE;
      }
      if (normdist[itsindex]<kMinNormDistForb5 && bestConst->GetNormChi2(0)<1){
	//	forbN=7;
	//	forbidden[itsindex]+=1<<forbN;
	forbidden[itsindex]=kTRUE;
      }
      if (bestConst->GetNormChi2(0)<2.5) {
	minPointAngle[itsindex]= kMinPABestConst;
	maxr[itsindex]         = kMaxRBestConst;
      }
    }
    //
    //forbid daughter kink candidates
    //
    if (esdtrack->GetKinkIndex(0)>0) forbidden[itsindex] = kTRUE;
    Bool_t isElectron = kTRUE;
    Bool_t isProton   = kTRUE;
    Double_t pid[5];
    esdtrack->GetESDpid(pid);
    for (Int_t i=1;i<5;i++){
      if (pid[0]<pid[i]) isElectron= kFALSE;
      if (pid[4]<pid[i]) isProton= kFALSE;
    }
    if (isElectron){
      forbidden[itsindex]=kFALSE;	
      normdist[itsindex]*=-1;
    }
    if (isProton){
      if (normdist[itsindex]>kMinNormDistForbProt) forbidden[itsindex]=kFALSE;	
      normdist[itsindex]*=-1;
    }

    // We allow all tracks that are not pions
    if( (pid[1]+pid[2])< kMaxPidProbPionForb ){
      forbidden[itsindex]=kFALSE;
    }

    //
    // Causality cuts in TPC volume
    //
    if (esdtrack->GetTPCdensity(0,10) >kMinTPCdensity)  maxr[itsindex] = TMath::Min(Float_t(kMaxRTPCdensity0),maxr[itsindex]);
    if (esdtrack->GetTPCdensity(10,30)>kMinTPCdensity)  maxr[itsindex] = TMath::Min(Float_t(kMaxRTPCdensity10),maxr[itsindex]);
    if (esdtrack->GetTPCdensity(20,40)>kMinTPCdensity)  maxr[itsindex] = TMath::Min(Float_t(kMaxRTPCdensity20),maxr[itsindex]);
    if (esdtrack->GetTPCdensity(30,50)>kMinTPCdensity)  maxr[itsindex] = TMath::Min(Float_t(kMaxRTPCdensity30),maxr[itsindex]);
    //
    if (esdtrack->GetTPCdensity(0,60)<0.4&&bestLong->GetNumberOfClusters()<3) minr[itsindex]=kMinRTPCdensity;    
    //
    //

    if (AliITSReconstructor::GetRecoParam()->GetESDV0Params()->StreamLevel()>0){
      cstream<<"Track"<<
	"Tr0.="<<best<<
	"Tr1.="<<((bestConst)? bestConst:dummy)<<
	"Tr2.="<<bestLong<<
	"Tr3.="<<&trackat0<<
	"Esd.="<<esdtrack<<
	"Dist="<<dist[itsindex]<<
	"ND0="<<normdist0[itsindex]<<
	"ND1="<<normdist1[itsindex]<<
	"ND="<<normdist[itsindex]<<
	"Pz="<<primvertex[2]<<
	"Forbid="<<forbidden[itsindex]<<
	"\n";
      //
    }
    trackarray.AddAt(best,itsindex);
    trackarrayc.AddAt(bestConst,itsindex);
    trackarrayl.AddAt(bestLong,itsindex);
    new (&helixes[itsindex]) AliHelix(*best);
  }
  //
  //
  //
  // first iterration of V0 finder
  //
  // AM Comment out for optimization
  //  Int_t rejectBase=0;
  //  Int_t cutN=0;

  for (Int_t iesd0=0;iesd0<ntracks;iesd0++){
    Int_t itrack0 = itsmap[iesd0];
    //-AM comment for optimization and store the forbidden value in the debug streamer
    if (forbidden[itrack0]) continue;
    AliITStrackMI * btrack0 = (AliITStrackMI*)trackarray.At(itrack0);
    if (!btrack0) continue;    
    AliITStrackMI *trackc0 = (AliITStrackMI*)trackarrayc.At(itrack0);
    //
    for (Int_t iesd1=iesd0+1;iesd1<ntracks;iesd1++){
      Int_t itrack1 = itsmap[iesd1];
      //-AM comment for optimization and store the forbidden value in the debug streamer
      if (forbidden[itrack1]) continue;

      AliITStrackMI * btrack1 = (AliITStrackMI*)trackarray.At(itrack1); 
      if (!btrack1) continue;

      if ( (btrack0->GetSign()==btrack1->GetSign()) && !AliITSReconstructor::GetRecoParam()->GetStoreLikeSignV0s()) continue;

      Bool_t isGold = kFALSE;
      if (TMath::Abs(TMath::Abs(btrack0->GetLabel())-TMath::Abs(btrack1->GetLabel()))==1){
	isGold = kTRUE;
      }
      //      rejectBase=0;
      AliITStrackMI *trackc1 = (AliITStrackMI*)trackarrayc.At(itrack1);
      AliHelix &h1 = helixes[itrack0];
      AliHelix &h2 = helixes[itrack1];
      //
      // find linear distance
      Double_t rmin =0;
      //
      //
      //
      Double_t phase[2][2]={{0.,0.},{0.,0.}};
      Double_t radius[2]={0.,0.};
      Int_t  points = h1.GetRPHIintersections(h2, phase, radius);
      if    (points==0) {
	//	cutN=1;
	//	rejectBase+=1<<cutN;
	continue;
      }
      Double_t delta[2]={1000000,1000000};        
      rmin = radius[0];
      h1.ParabolicDCA(h2,phase[0][0],phase[0][1],radius[0],delta[0]);
      if (points==2){    
	if (radius[1]<rmin) rmin = radius[1];
	h1.ParabolicDCA(h2,phase[1][0],phase[1][1],radius[1],delta[1]);
      }
      rmin = TMath::Sqrt(rmin);
      Double_t distance = 0;
      Double_t radiusC  = 0;
      Int_t    iphase   = 0;
      if (points==1 || delta[0]<delta[1]){
	distance = TMath::Sqrt(delta[0]);
	radiusC  = TMath::Sqrt(radius[0]);
      }else{
	distance = TMath::Sqrt(delta[1]);
	radiusC  = TMath::Sqrt(radius[1]);
	iphase=1;
      }
      if (radiusC<TMath::Max(minr[itrack0],minr[itrack1])){
	//	cutN=2;
	//rejectBase+=1<<cutN;
	continue;
      }
      if (radiusC>TMath::Min(maxr[itrack0],maxr[itrack1])){
	//	cutN=3;
	//	rejectBase+=1<<cutN;
	continue;
      } 
      Float_t maxDist  = TMath::Min(kMaxDist,Float_t(kMaxDist0+radiusC*kMaxDist1));      
      if (distance>maxDist){
	//	cutN=4;
	//	rejectBase+=1<<cutN;
	continue;
      }
      Float_t pointAngle = h1.GetPointAngle(h2,phase[iphase],primvertex);
      if (pointAngle<TMath::Max(minPointAngle[itrack0],minPointAngle[itrack1])) {
	//	cutN=5;
	//	rejectBase+=1<<cutN;
	continue;
      }
      //
      //
      //      Double_t distance = TestV0(h1,h2,pvertex,rmin);
      //
      //       if (distance>maxDist)           continue;
      //       if (pvertex->GetRr()<kMinR)     continue;
      //       if (pvertex->GetRr()>kMaxR)     continue;
      AliITStrackMI * track0=btrack0;
      AliITStrackMI * track1=btrack1;
      //      if (pvertex->GetRr()<3.5){  
      if (radiusC<3.5){  
	//use longest tracks inside the pipe
	track0 = (AliITStrackMI*)trackarrayl.At(itrack0);
	track1 = (AliITStrackMI*)trackarrayl.At(itrack1);
      }      
      //
      //
      

 
      pvertex->SetParamN(*track0);
      pvertex->SetParamP(*track1);
      pvertex->Update(primvertex);
      pvertex->SetClusters(track0->ClIndex(),track1->ClIndex());  // register clusters

      // Define gamma, K0, lambda and lambda_bar from the decay particles and calculate the chi2      
      AliKFVertex vertexKF;

      vertexKF.X() = tracker->GetX();
      vertexKF.Y() = tracker->GetY();
      vertexKF.Z() = tracker->GetZ();
      vertexKF.Covariance(0,0) = tracker->GetSigmaX()*tracker->GetSigmaX();
      vertexKF.Covariance(1,1) = tracker->GetSigmaY()*tracker->GetSigmaY();
      vertexKF.Covariance(2,2) = tracker->GetSigmaZ()*tracker->GetSigmaZ();
      
      AliKFParticle elecKF( *(pvertex->GetParamN()) ,11);
      AliKFParticle posiKF( *(pvertex->GetParamP()) ,-11);
      AliKFParticle pipKF( *(pvertex->GetParamN()) , 211);
      AliKFParticle pinKF( *(pvertex->GetParamP()) ,-211);
      AliKFParticle protKF( *(pvertex->GetParamP()) ,2212);
      AliKFParticle aproKF ( *(pvertex->GetParamN()) ,-2212);


      // Gamma
      AliKFParticle gamKF(elecKF,posiKF);
      gamKF.SetProductionVertex(vertexKF);

      Float_t gamKFchi2 = 1000;
      if ( gamKF.GetNDF()!=0 ){
	gamKFchi2 = gamKF.GetChi2()/gamKF.GetNDF();
      }

      Float_t massG=0.;
      Float_t sigmaMG=0.001;
      gamKF.SetMassConstraint(massG,sigmaMG);

      Float_t gamKFchi2C = 1000;
      if ( gamKF.GetNDF()!=0 ){
	gamKFchi2C = gamKF.GetChi2()/gamKF.GetNDF();
      }

      //K0 short
      AliKFParticle k0KF(pipKF,pinKF);
      k0KF.SetProductionVertex(vertexKF);

      Float_t k0KFchi2 = 1000;
      if ( k0KF.GetNDF()!=0 ){
	k0KFchi2 = k0KF.GetChi2()/k0KF.GetNDF();
      }

      //Lambda
      AliKFParticle lambdaKF(protKF,pinKF);
      lambdaKF.SetProductionVertex(vertexKF);

      Float_t lambdaKFchi2 = 1000;
      if ( lambdaKF.GetNDF()!=0 ){
	lambdaKFchi2 = lambdaKF.GetChi2()/lambdaKF.GetNDF();
      }

      //Lambda_bar
      AliKFParticle alambKF(aproKF,pipKF);
      alambKF.SetProductionVertex(vertexKF);

      Float_t alambKFchi2 = 1000;
      if ( alambKF.GetNDF()!=0 ){
	alambKFchi2 = alambKF.GetChi2()/alambKF.GetNDF();
      }





      if (pvertex->GetRr()<kMinR){
	//	cutN=6;
	//	rejectBase+=1<<cutN;
	continue;
      }
      if (pvertex->GetRr()>kMaxR){
	//	cutN=7;
	//	rejectBase+=1<<cutN;
	continue;
      }
      if (pvertex->GetV0CosineOfPointingAngle()<kMinPointAngle){
	//	cutN=8;
	//	rejectBase+=1<<cutN;
	continue;
      }
//Bo:      if (pvertex->GetDist2()>maxDist) continue;

      if (pvertex->GetDcaV0Daughters()>maxDist){
	//	cutN=9;
	//	rejectBase+=1<<cutN;
	continue;
      }
//Bo:        pvertex->SetLab(0,track0->GetLabel());
//Bo:        pvertex->SetLab(1,track1->GetLabel());
      pvertex->SetIndex(0,track0->GetESDtrack()->GetID());
      pvertex->SetIndex(1,track1->GetESDtrack()->GetID());
      //      
      AliITStrackMI * htrackc0 = trackc0 ? trackc0:dummy;      
      AliITStrackMI * htrackc1 = trackc1 ? trackc1:dummy;

      //
      //
      TObjArray * array0b     = (TObjArray*)bestHypothesys->At(itrack0);
      if (!array0b&&pvertex->GetRr()<40 && TMath::Abs(track0->GetTgl())<kMinTgl1) {
	tracker->SetCurrentEsdTrack(itrack0);
	tracker->FollowProlongationTree((AliITStrackMI*)originalTracks->At(itrack0),itrack0, kFALSE);
      }
      TObjArray * array1b    = (TObjArray*)bestHypothesys->At(itrack1);
      if (!array1b&&pvertex->GetRr()<40 && TMath::Abs(track1->GetTgl())<kMinTgl1) { 
	tracker->SetCurrentEsdTrack(itrack1);
	tracker->FollowProlongationTree((AliITStrackMI*)originalTracks->At(itrack1),itrack1, kFALSE);
      }
      //
      AliITStrackMI * track0b = (AliITStrackMI*)originalTracks->At(itrack0);
      AliITStrackMI * track1b = (AliITStrackMI*)originalTracks->At(itrack1);
      AliITStrackMI * track0l = (AliITStrackMI*)originalTracks->At(itrack0);
      AliITStrackMI * track1l = (AliITStrackMI*)originalTracks->At(itrack1);
      
      Float_t minchi2before0=kMinchi2before0;
      Float_t minchi2before1=kMinchi2before1;
      Float_t minchi2after0 =kMinchi2after0;
      Float_t minchi2after1 =kMinchi2after1;
      Double_t xrp[3]; pvertex->GetXYZ(xrp[0],xrp[1],xrp[2]);  //I.B.
      Int_t maxLayer = tracker->GetNearestLayer(xrp);                   //I.B.
      
      if (array0b) for (Int_t i=0;i<5;i++){
	// best track after vertex
	AliITStrackMI * btrack = (AliITStrackMI*)array0b->At(i);
	if (!btrack) continue;
	if (btrack->GetNumberOfClusters()>track0l->GetNumberOfClusters()) track0l = btrack;     
	//	if (btrack->fX<pvertex->GetRr()-2.-0.5/(0.1+pvertex->GetAnglep()[2])) {
	if (btrack->GetX()<pvertex->GetRr()-2.) {
	  if ( (maxLayer>i+2|| (i==0)) && btrack->GetNumberOfClusters()==(6-i)&&i<3){
	    Float_t sumchi2= 0;
	    Float_t sumn   = 0;
	    if (maxLayer<3){   // take prim vertex as additional measurement
	      if (normdist[itrack0]>0 && htrackc0){
		sumchi2 += TMath::Min((3.-maxLayer)*normdist[itrack0]*normdist[itrack0],16.);
	      }else{
		sumchi2 +=  TMath::Min((3.-maxLayer)*(3*normdist[itrack0]*normdist[itrack0]+3.),16.);
	      }
	      sumn    +=  3-maxLayer;
	    }
	    for (Int_t ilayer=i;ilayer<maxLayer;ilayer++){
	      sumn+=1.;	      
	      if (btrack->GetClIndex(ilayer)<0){
		sumchi2+=kAddchi2NegCl0;
		continue;
	      }else{
		Int_t c=( btrack->GetClIndex(ilayer) & 0x0fffffff);
		for (Int_t itrack=0;itrack<4;itrack++){
		  AliITStrackerMI::AliITSlayer &layer=tracker->GetLayer(ilayer);
		  if (layer.GetClusterTracks(itrack,c)>=0 && layer.GetClusterTracks(itrack,c)!=itrack0){
		    sumchi2+=kAddchi2SharedCl;  //shared cluster
		    break;
		  }
		}
		sumchi2+=btrack->GetDy(ilayer)*btrack->GetDy(ilayer)/(btrack->GetSigmaY(ilayer)*btrack->GetSigmaY(ilayer));
		sumchi2+=btrack->GetDz(ilayer)*btrack->GetDz(ilayer)/(btrack->GetSigmaZ(ilayer)*btrack->GetSigmaZ(ilayer));	       
	      }
	    }
	    sumchi2/=sumn;
	    if (sumchi2<minchi2before0) minchi2before0=sumchi2; 
	  }
	  continue;   //safety space - Geo manager will give exact layer
	}
	track0b       = btrack;
	minchi2after0 = btrack->GetNormChi2(i);
	break;
      }
      if (array1b) for (Int_t i=0;i<5;i++){
	// best track after vertex
	AliITStrackMI * btrack = (AliITStrackMI*)array1b->At(i);
	if (!btrack) continue;
	if (btrack->GetNumberOfClusters()>track1l->GetNumberOfClusters()) track1l = btrack;     
	//	if (btrack->fX<pvertex->GetRr()-2-0.5/(0.1+pvertex->GetAnglep()[2])){
	if (btrack->GetX()<pvertex->GetRr()-2){
	  if ((maxLayer>i+2 || (i==0))&&btrack->GetNumberOfClusters()==(6-i)&&(i<3)){
	    Float_t sumchi2= 0;
	    Float_t sumn   = 0;
	    if (maxLayer<3){   // take prim vertex as additional measurement
	      if (normdist[itrack1]>0 && htrackc1){
		sumchi2 +=  TMath::Min((3.-maxLayer)*normdist[itrack1]*normdist[itrack1],16.);
	      }else{
		sumchi2 += TMath::Min((3.-maxLayer)*(3*normdist[itrack1]*normdist[itrack1]+3.),16.);
	      }
	      sumn    +=  3-maxLayer;
	    }
	    for (Int_t ilayer=i;ilayer<maxLayer;ilayer++){
	      sumn+=1.;
	      if (btrack->GetClIndex(ilayer)<0){
		sumchi2+=kAddchi2NegCl1;
		continue;
	      }else{
		Int_t c=( btrack->GetClIndex(ilayer) & 0x0fffffff);
		for (Int_t itrack=0;itrack<4;itrack++){
		  AliITStrackerMI::AliITSlayer &layer=tracker->GetLayer(ilayer);
		  if (layer.GetClusterTracks(itrack,c)>=0 && layer.GetClusterTracks(itrack,c)!=itrack1){
		    sumchi2+=kAddchi2SharedCl;  //shared cluster
		    break;
		  }
		}
		sumchi2+=btrack->GetDy(ilayer)*btrack->GetDy(ilayer)/(btrack->GetSigmaY(ilayer)*btrack->GetSigmaY(ilayer));
		sumchi2+=btrack->GetDz(ilayer)*btrack->GetDz(ilayer)/(btrack->GetSigmaZ(ilayer)*btrack->GetSigmaZ(ilayer));	       
	      }
	    }
	    sumchi2/=sumn;
	    if (sumchi2<minchi2before1) minchi2before1=sumchi2; 
	  }
	  continue;   //safety space - Geo manager will give exact layer	   
	}
	track1b = btrack;
	minchi2after1 = btrack->GetNormChi2(i);
	break;
      }
      //
      // position resolution - used for DCA cut
      Float_t sigmad = track0b->GetSigmaY2()+track0b->GetSigmaZ2()+track1b->GetSigmaY2()+track1b->GetSigmaZ2()+
	(track0b->GetX()-pvertex->GetRr())*(track0b->GetX()-pvertex->GetRr())*(track0b->GetSigmaSnp2()+track0b->GetSigmaTgl2())+
	(track1b->GetX()-pvertex->GetRr())*(track1b->GetX()-pvertex->GetRr())*(track1b->GetSigmaSnp2()+track1b->GetSigmaTgl2());
      sigmad =TMath::Sqrt(sigmad)+0.04;
      if (pvertex->GetRr()>50){
	Double_t cov0[15],cov1[15];
	track0b->GetESDtrack()->GetInnerExternalCovariance(cov0);
	track1b->GetESDtrack()->GetInnerExternalCovariance(cov1);
	sigmad = cov0[0]+cov0[2]+cov1[0]+cov1[2]+
	  (80.-pvertex->GetRr())*(80.-pvertex->GetRr())*(cov0[5]+cov0[9])+
	  (80.-pvertex->GetRr())*(80.-pvertex->GetRr())*(cov1[5]+cov1[9]);
	sigmad =TMath::Sqrt(sigmad)+0.05;
      }
      //       
      AliV0 vertex2;
      vertex2.SetParamN(*track0b);
      vertex2.SetParamP(*track1b);
      vertex2.Update(primvertex);
      //Bo:      if (vertex2.GetDist2()<=pvertex->GetDist2()&&(vertex2.GetV0CosineOfPointingAngle()>=pvertex->GetV0CosineOfPointingAngle())){
      if (vertex2.GetDcaV0Daughters()<=pvertex->GetDcaV0Daughters()&&(vertex2.GetV0CosineOfPointingAngle()>=pvertex->GetV0CosineOfPointingAngle())){
	pvertex->SetParamN(*track0b);
	pvertex->SetParamP(*track1b);
	pvertex->Update(primvertex);
	pvertex->SetClusters(track0b->ClIndex(),track1b->ClIndex());  // register clusters
	pvertex->SetIndex(0,track0->GetESDtrack()->GetID());
	pvertex->SetIndex(1,track1->GetESDtrack()->GetID());
      }
      pvertex->SetDistSigma(sigmad);
      //Bo:      pvertex->SetDistNorm(pvertex->GetDist2()/sigmad);       
      pvertex->SetNormDCAPrim(normdist[itrack0],normdist[itrack1]);
      //
      // define likelihhod and causalities
      //
      Float_t pa0=1, pa1=1, pb0=0.26, pb1=0.26;      
      if (maxLayer<1){
	Float_t fnorm0 = normdist[itrack0];
	if (fnorm0<0) fnorm0*=-3;
	Float_t fnorm1 = normdist[itrack1];
	if (fnorm1<0) fnorm1*=-3;
 	if ((pvertex->GetAnglep()[2]>0.1) || ( (pvertex->GetRr()<10.5)&& pvertex->GetAnglep()[2]>0.05 ) || (pvertex->GetRr()<3)){
 	  pb0    =  TMath::Exp(-TMath::Min(fnorm0,Float_t(16.))/12.);
 	  pb1    =  TMath::Exp(-TMath::Min(fnorm1,Float_t(16.))/12.);
 	}
	pvertex->SetChi2Before(normdist[itrack0]);
	pvertex->SetChi2After(normdist[itrack1]);       
	pvertex->SetNAfter(0);
	pvertex->SetNBefore(0);
      }else{
	pvertex->SetChi2Before(minchi2before0);
	pvertex->SetChi2After(minchi2before1);
	 if (pvertex->GetAnglep()[2]>0.1 || ( pvertex->GetRr()<10.5 && pvertex->GetAnglep()[2]>0.05) || pvertex->GetRr()<3){
	   pb0    =  TMath::Exp(-TMath::Min(minchi2before0,Float_t(16))/12.);
	   pb1    =  TMath::Exp(-TMath::Min(minchi2before1,Float_t(16))/12.);
	 }
	 pvertex->SetNAfter(maxLayer);
	 pvertex->SetNBefore(maxLayer);      
      }
      if (pvertex->GetRr()<90){
	pa0  *= TMath::Min(track0->GetESDtrack()->GetTPCdensity(0,60),Double_t(1.));
	pa1  *= TMath::Min(track1->GetESDtrack()->GetTPCdensity(0,60),Double_t(1.));
      }
      if (pvertex->GetRr()<20){
	pa0  *= (0.2+TMath::Exp(-TMath::Min(minchi2after0,Float_t(16))/8.))/1.2;
	pa1  *= (0.2+TMath::Exp(-TMath::Min(minchi2after1,Float_t(16))/8.))/1.2;
      }
      //
      pvertex->SetCausality(pb0,pb1,pa0,pa1);
      //
      //  Likelihood calculations  - apply cuts
      //         
 
      // AM - Comment out for optimization and store the v0OK value
      //      Int_t v0OK = 0;
      //      Int_t cutOKN=0;
      Bool_t v0OK = kTRUE;


      Float_t p12 = pvertex->GetParamP()->GetParameter()[4]*pvertex->GetParamP()->GetParameter()[4];
      p12        += pvertex->GetParamN()->GetParameter()[4]*pvertex->GetParamN()->GetParameter()[4];
      p12         = TMath::Sqrt(p12);                             // "mean" momenta

      Float_t    sigmap0   = kSigp0Par0+kSigp0Par1/(kSigp0Par2+pvertex->GetRr()); 
      Float_t    sigmap    = kSigpPar0*sigmap0*(kSigpPar1+kSigpPar2*p12);           // "resolution: of point angle - as a function of radius and momenta


      Float_t causalityA  = (1.0-pvertex->GetCausalityP()[0])*(1.0-pvertex->GetCausalityP()[1]);
      Float_t causalityB  = TMath::Sqrt(TMath::Min(pvertex->GetCausalityP()[2],Double_t(0.7))*
					TMath::Min(pvertex->GetCausalityP()[3],Double_t(0.7)));
      //
      //Bo:      Float_t likelihood0 = (TMath::Exp(-pvertex->GetDistNorm())+0.1) *(pvertex->GetDist2()<0.5)*(pvertex->GetDistNorm()<5);
      Float_t lDistNorm = pvertex->GetDcaV0Daughters()/pvertex->GetDistSigma();
      Float_t likelihood0 = (TMath::Exp(-lDistNorm)+0.1) *(pvertex->GetDcaV0Daughters()<kMaxDcaLh0)*(lDistNorm<5);

      Float_t likelihood1 = TMath::Exp(-(1.0001-pvertex->GetV0CosineOfPointingAngle())/sigmap)+
	0.4*TMath::Exp(-(1.0001-pvertex->GetV0CosineOfPointingAngle())/(4.*sigmap))+
	0.4*TMath::Exp(-(1.0001-pvertex->GetV0CosineOfPointingAngle())/(8.*sigmap))+
	0.1*TMath::Exp(-(1.0001-pvertex->GetV0CosineOfPointingAngle())/0.01);
      //
      if (causalityA<kCausality0Cut){
	//	cutOKN=1;
	//	v0OK += 1<<cutOKN;
	v0OK = kFALSE;
      }
      if (TMath::Sqrt(likelihood0*likelihood1)<kLikelihood01Cut){
	//	cutOKN=2;
	//	v0OK += 1<<cutOKN;
	v0OK = kFALSE;
      }
      if (likelihood1<kLikelihood1Cut){
	//	cutOKN=3;
	//	v0OK += 1<<cutOKN;
	v0OK = kFALSE;
      }
      if (TMath::Power(likelihood0*likelihood1*causalityB,0.33)<kCombinedCut){
	//	cutOKN=4;
	//	v0OK += 1<<cutOKN;
	v0OK = kFALSE;
      }
      //
      //
      if (AliITSReconstructor::GetRecoParam()->GetESDV0Params()->StreamLevel()>0){	
	Bool_t gold = TMath::Abs(TMath::Abs(track0->GetLabel())-TMath::Abs(track1->GetLabel()))==1;
	cstream<<"It0"<<
	  "Tr0.="<<track0<<                       //best without constrain
	  "Tr1.="<<track1<<                       //best without constrain  
	  "posiKF.="<<&posiKF<<                       //KF from track0
	  "elecKF.="<<&elecKF<<                       //KF from track1
	  "Tr0B.="<<track0b<<                     //best without constrain  after vertex
	  "Tr1B.="<<track1b<<                     //best without constrain  after vertex 
	  "Tr0C.="<<htrackc0<<                    //best with constrain     if exist
	  "Tr1C.="<<htrackc1<<                    //best with constrain     if exist
	  "Tr0L.="<<track0l<<                     //longest best           
	  "Tr1L.="<<track1l<<                     //longest best
	  "Esd0.="<<track0->GetESDtrack()<<           // esd track0 params
	  "Esd1.="<<track1->GetESDtrack()<<           // esd track1 params
	  "V0.="<<pvertex<<                       //vertex properties
	  "V0b.="<<&vertex2<<                       //vertex properties at "best" track
	  "gamKF.="<<&gamKF<<                          //KF from pvertex
	  "k0KF.="<<&k0KF<<                          //KF from pvertex
	  "lambdaKF.="<<&lambdaKF<<                          //KF from pvertex
	  "alambKF.="<<&lambdaKF<<                          //KF from pvertex
	  "gamKFchi2="<<gamKFchi2<<    //Normalized chi2 from KF assuming gamma momther
	  "gamKFchi2C="<<gamKFchi2C<<    //Normalized chi2 from KF assuming gamma mother+mass constraint
	  "k0KFchi2="<<k0KFchi2<<    //Normalized chi2 from KF assuming K0 mother
	  "lambdaKFchi2="<<lambdaKFchi2<<    //Normalized chi2 from KF assuming Lambda mother
	  "alambKFchi2="<<alambKFchi2<<    //Normalized chi2 from KF assuming lambda_bar mother
	  "ND0="<<normdist[itrack0]<<             //normalize distance for track0
	  "ND1="<<normdist[itrack1]<<             //normalize distance for track1
	  "Gold="<<gold<<                         //
	  // "RejectBase="<<rejectBase<<             //rejection in First itteration
	  "OK="<<v0OK<<
	  "rmin="<<rmin<<
	  "sigmad="<<sigmad<<
	  "Forbid0="<<forbidden[itrack0]<<
	  "Forbid1="<<forbidden[itrack1]<<
	  "\n";
      }      
      //      if (rejectBase>0) continue;
      //if (forbidden[itrack0]>0 ||forbidden[itrack1]>0) continue; 
      //
      pvertex->SetStatus(0);
      //      if (rejectBase) {
      //	pvertex->SetStatus(-100);
      //}
      if (pvertex->GetV0CosineOfPointingAngle()>kMinPointAngle2) {
	//Bo:	  pvertex->SetESDindexes(track0->GetESDtrack()->GetID(),track1->GetESDtrack()->GetID());
	pvertex->SetIndex(0,track0->GetESDtrack()->GetID());//Bo: consistency 0 for neg
	pvertex->SetIndex(1,track1->GetESDtrack()->GetID());//Bo: consistency 1 for pos
	//	if (v0OK==0){
	if (v0OK){
	  //	  AliV0vertex vertexjuri(*track0,*track1);
	  //	  vertexjuri.SetESDindexes(track0->fESDtrack->GetID(),track1->fESDtrack->GetID());
	  //	  event->AddV0(&vertexjuri);
	  pvertex->SetStatus(100);
	}
        pvertex->SetOnFlyStatus(kTRUE);
        pvertex->ChangeMassHypothesis(kK0Short);
	event->AddV0(pvertex);
      }
    }
  }
  //
  //
  // delete temporary arrays
  //  
  delete[] forbidden;
  delete[] minPointAngle;
  delete[] maxr;
  delete[] minr;
  delete[] norm;
  delete[] normdist;
  delete[] normdist1;
  delete[] normdist0;
  delete[] dist;
  delete[] itsmap;
  delete[] helixes;
  delete   pvertex;
  delete   dummy;
}
//------------------------------------------------------------------------
void AliITSV0Finder::RefitV02(const AliESDEvent *event,
				AliITStrackerMI *tracker) 
{
  //
  //try to refit  V0s in the third path of the reconstruction
  //
  TTreeSRedirector &cstream = *(tracker->GetDebugStreamer());
  //
  Int_t  nv0s = event->GetNumberOfV0s();
  Float_t primvertex[3]={static_cast<Float_t>(tracker->GetX()),static_cast<Float_t>(tracker->GetY()),static_cast<Float_t>(tracker->GetZ())};
  AliV0 v0temp;
  for (Int_t iv0 = 0; iv0<nv0s;iv0++){
    AliV0 * v0mi = (AliV0*)event->GetV0(iv0);
    if (!v0mi) continue;
    Int_t     itrack0   = v0mi->GetIndex(0);
    Int_t     itrack1   = v0mi->GetIndex(1);
    AliESDtrack *esd0   = event->GetTrack(itrack0);
    AliESDtrack *esd1   = event->GetTrack(itrack1);
    if (!esd0||!esd1) continue;
    AliITStrackMI tpc0(*esd0);  
    AliITStrackMI tpc1(*esd1);
    Double_t x,y,z; v0mi->GetXYZ(x,y,z); //I.B. 
    Double_t alpha =TMath::ATan2(y,x);   //I.B.
    if (v0mi->GetRr()>85){
      if (tpc0.Propagate(alpha,v0mi->GetRr())&&tpc1.Propagate(alpha,v0mi->GetRr())){
	v0temp.SetParamN(tpc0);
	v0temp.SetParamP(tpc1);
	v0temp.Update(primvertex);
	if (AliITSReconstructor::GetRecoParam()->GetESDV0Params()->StreamLevel()>0) cstream<<"Refit"<<
	  "V0.="<<v0mi<<
	  "V0refit.="<<&v0temp<<
	  "Tr0.="<<&tpc0<<
	  "Tr1.="<<&tpc1<<
	  "\n";
	//Bo:	if (v0temp.GetDist2()<v0mi->GetDist2() || v0temp.GetV0CosineOfPointingAngle()>v0mi->GetV0CosineOfPointingAngle()){
	if (v0temp.GetDcaV0Daughters()<v0mi->GetDcaV0Daughters() || v0temp.GetV0CosineOfPointingAngle()>v0mi->GetV0CosineOfPointingAngle()){
	  v0mi->SetParamN(tpc0);
	  v0mi->SetParamP(tpc1);
	  v0mi->Update(primvertex);
	}
      }
      continue;
    }
    if (v0mi->GetRr()>35){
      AliITStrackerMI::CorrectForTPCtoITSDeadZoneMaterial(&tpc0);
      AliITStrackerMI::CorrectForTPCtoITSDeadZoneMaterial(&tpc1);
      if (tpc0.Propagate(alpha,v0mi->GetRr())&&tpc1.Propagate(alpha,v0mi->GetRr())){
	v0temp.SetParamN(tpc0);
	v0temp.SetParamP(tpc1);
	v0temp.Update(primvertex);
	if (AliITSReconstructor::GetRecoParam()->GetESDV0Params()->StreamLevel()>0) cstream<<"Refit"<<
	  "V0.="<<v0mi<<
	  "V0refit.="<<&v0temp<<
	  "Tr0.="<<&tpc0<<
	  "Tr1.="<<&tpc1<<
	  "\n";
	//Bo:	if (v0temp.GetDist2()<v0mi->GetDist2() || v0temp.GetV0CosineOfPointingAngle()>v0mi->GetV0CosineOfPointingAngle()){
	if (v0temp.GetDcaV0Daughters()<v0mi->GetDcaV0Daughters() || v0temp.GetV0CosineOfPointingAngle()>v0mi->GetV0CosineOfPointingAngle()){
	  v0mi->SetParamN(tpc0);
	  v0mi->SetParamP(tpc1);
	  v0mi->Update(primvertex);
	}	
      }
      continue;
    }
    AliITStrackerMI::CorrectForTPCtoITSDeadZoneMaterial(&tpc0);
    AliITStrackerMI::CorrectForTPCtoITSDeadZoneMaterial(&tpc1);    
    //    if (tpc0.Propagate(alpha,v0mi->GetRr())&&tpc1.Propagate(alpha,v0mi->GetRr())){
    if (tracker->RefitAt(v0mi->GetRr(),&tpc0, v0mi->GetClusters(0)) && 
	tracker->RefitAt(v0mi->GetRr(),&tpc1, v0mi->GetClusters(1))){
      v0temp.SetParamN(tpc0);
      v0temp.SetParamP(tpc1);
      v0temp.Update(primvertex);
      if (AliITSReconstructor::GetRecoParam()->GetESDV0Params()->StreamLevel()>0) cstream<<"Refit"<<
	"V0.="<<v0mi<<
	"V0refit.="<<&v0temp<<
	"Tr0.="<<&tpc0<<
	"Tr1.="<<&tpc1<<
	"\n";
      //Bo:      if (v0temp.GetDist2()<v0mi->GetDist2() || v0temp.GetV0CosineOfPointingAngle()>v0mi->GetV0CosineOfPointingAngle()){
      if (v0temp.GetDcaV0Daughters()<v0mi->GetDcaV0Daughters() || v0temp.GetV0CosineOfPointingAngle()>v0mi->GetV0CosineOfPointingAngle()){
	v0mi->SetParamN(tpc0);
	v0mi->SetParamP(tpc1);
	v0mi->Update(primvertex);
      }	
    }    
  }
}
//------------------------------------------------------------------------


AliITSV0Finder::~AliITSV0Finder()
{
  //
  //destructor
  //
  if (fDebugStreamer) {
    //fDebugStreamer->Close();
    delete fDebugStreamer;
  }

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