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

//_________________________________________________________________________
// 
//        Implementation of the ITS-SPD trackleter class
// Clone version of the AliITSMultReconstructor class (October 2010) 
// that can be used in an AliAnalysisTask
// 
// Support and development: 
//         Domenico Elia, Maria Nicassio (INFN Bari) 
//         Domenico.Elia@ba.infn.it, Maria.Nicassio@ba.infn.it
//
//_________________________________________________________________________

#include <TClonesArray.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TTree.h>
#include <TBits.h>
#include <TArrayI.h>

#include "AliTrackletAlg.h"
#include "../ITS/AliITSReconstructor.h"
#include "../ITS/AliITSsegmentationSPD.h"
#include "../ITS/AliITSRecPoint.h"
#include "../ITS/AliITSRecPointContainer.h"
#include "../ITS/AliITSgeom.h"
#include "../ITS/AliITSgeomTGeo.h"
#include "../ITS/AliITSDetTypeRec.h"
#include "AliESDEvent.h"
#include "AliESDVertex.h"
#include "AliESDtrack.h"
#include "AliMultiplicity.h"
#include "AliLog.h"
#include "TGeoGlobalMagField.h"
#include "AliMagF.h"
#include "AliESDv0.h"
#include "AliV0.h"
#include "AliKFParticle.h"
#include "AliKFVertex.h"

//____________________________________________________________________
ClassImp(AliTrackletAlg)


//____________________________________________________________________
AliTrackletAlg::AliTrackletAlg():
fDetTypeRec(0),fESDEvent(0),fTreeRP(0),fUsedClusLay1(0),fUsedClusLay2(0),
fClustersLay1(0),
fClustersLay2(0),
fDetectorIndexClustersLay1(0),
fDetectorIndexClustersLay2(0),
fOverlapFlagClustersLay1(0),
fOverlapFlagClustersLay2(0),
fTracklets(0),
fSClusters(0),
fNClustersLay1(0),
fNClustersLay2(0),
fNTracklets(0),
fNSingleCluster(0),
fPhiWindow(0),
fThetaWindow(0),
fPhiShift(0),
fRemoveClustersFromOverlaps(0),
fPhiOverlapCut(0),
fZetaOverlapCut(0),
fPhiRotationAngle(0),
//
fCutPxDrSPDin(0.1),
fCutPxDrSPDout(0.15),
fCutPxDz(0.2),
fCutDCArz(0.5),
fCutMinElectronProbTPC(0.5),
fCutMinElectronProbESD(0.1),
fCutMinP(0.05),
fCutMinRGamma(2.),
fCutMinRK0(1.),
fCutMinPointAngle(0.98),
fCutMaxDCADauther(0.5),
fCutMassGamma(0.03),
fCutMassGammaNSigma(5.),
fCutMassK0(0.03),
fCutMassK0NSigma(5.),
fCutChi2cGamma(2.),
fCutChi2cK0(2.),
fCutGammaSFromDecay(-10.),
fCutK0SFromDecay(-10.),
fCutMaxDCA(1.),
//
fHistOn(0),
fhClustersDPhiAcc(0),
fhClustersDThetaAcc(0),
fhClustersDPhiAll(0),
fhClustersDThetaAll(0),
fhDPhiVsDThetaAll(0),
fhDPhiVsDThetaAcc(0),
fhetaTracklets(0),
fhphiTracklets(0),
fhetaClustersLay1(0),
fhphiClustersLay1(0){

  fNFiredChips[0] = 0;
  fNFiredChips[1] = 0;
  // Method to reconstruct the charged particles multiplicity with the 
  // SPD (tracklets).

  SetHistOn();

  if(AliITSReconstructor::GetRecoParam()) { 
    SetPhiWindow(AliITSReconstructor::GetRecoParam()->GetTrackleterPhiWindow());
    SetThetaWindow(AliITSReconstructor::GetRecoParam()->GetTrackleterThetaWindow());
    SetPhiShift(AliITSReconstructor::GetRecoParam()->GetTrackleterPhiShift());
    SetRemoveClustersFromOverlaps(AliITSReconstructor::GetRecoParam()->GetTrackleterRemoveClustersFromOverlaps());
    SetPhiOverlapCut(AliITSReconstructor::GetRecoParam()->GetTrackleterPhiOverlapCut());
    SetZetaOverlapCut(AliITSReconstructor::GetRecoParam()->GetTrackleterZetaOverlapCut());
    SetPhiRotationAngle(AliITSReconstructor::GetRecoParam()->GetTrackleterPhiRotationAngle());
    //
    SetCutPxDrSPDin(AliITSReconstructor::GetRecoParam()->GetMultCutPxDrSPDin());
    SetCutPxDrSPDout(AliITSReconstructor::GetRecoParam()->GetMultCutPxDrSPDout());
    SetCutPxDz(AliITSReconstructor::GetRecoParam()->GetMultCutPxDz());
    SetCutDCArz(AliITSReconstructor::GetRecoParam()->GetMultCutDCArz());
    SetCutMinElectronProbTPC(AliITSReconstructor::GetRecoParam()->GetMultCutMinElectronProbTPC());
    SetCutMinElectronProbESD(AliITSReconstructor::GetRecoParam()->GetMultCutMinElectronProbESD());
    SetCutMinP(AliITSReconstructor::GetRecoParam()->GetMultCutMinP());
    SetCutMinRGamma(AliITSReconstructor::GetRecoParam()->GetMultCutMinRGamma());
    SetCutMinRK0(AliITSReconstructor::GetRecoParam()->GetMultCutMinRK0());
    SetCutMinPointAngle(AliITSReconstructor::GetRecoParam()->GetMultCutMinPointAngle());
    SetCutMaxDCADauther(AliITSReconstructor::GetRecoParam()->GetMultCutMaxDCADauther());
    SetCutMassGamma(AliITSReconstructor::GetRecoParam()->GetMultCutMassGamma());
    SetCutMassGammaNSigma(AliITSReconstructor::GetRecoParam()->GetMultCutMassGammaNSigma());
    SetCutMassK0(AliITSReconstructor::GetRecoParam()->GetMultCutMassK0());
    SetCutMassK0NSigma(AliITSReconstructor::GetRecoParam()->GetMultCutMassK0NSigma());
    SetCutChi2cGamma(AliITSReconstructor::GetRecoParam()->GetMultCutChi2cGamma());
    SetCutChi2cK0(AliITSReconstructor::GetRecoParam()->GetMultCutChi2cK0());
    SetCutGammaSFromDecay(AliITSReconstructor::GetRecoParam()->GetMultCutGammaSFromDecay());
    SetCutK0SFromDecay(AliITSReconstructor::GetRecoParam()->GetMultCutK0SFromDecay());
    SetCutMaxDCA(AliITSReconstructor::GetRecoParam()->GetMultCutMaxDCA());
    //
  } else {
    SetPhiWindow();
    SetThetaWindow();
    SetPhiShift();
    SetRemoveClustersFromOverlaps();
    SetPhiOverlapCut();
    SetZetaOverlapCut();
    SetPhiRotationAngle();

    //
    SetCutPxDrSPDin();
    SetCutPxDrSPDout();
    SetCutPxDz();
    SetCutDCArz();
    SetCutMinElectronProbTPC();
    SetCutMinElectronProbESD();
    SetCutMinP();
    SetCutMinRGamma();
    SetCutMinRK0();
    SetCutMinPointAngle();
    SetCutMaxDCADauther();
    SetCutMassGamma();
    SetCutMassGammaNSigma();
    SetCutMassK0();
    SetCutMassK0NSigma();
    SetCutChi2cGamma();
    SetCutChi2cK0();
    SetCutGammaSFromDecay();
    SetCutK0SFromDecay();
    SetCutMaxDCA();
  } 
  
  fClustersLay1              = 0;
  fClustersLay2              = 0;
  fDetectorIndexClustersLay1 = 0;
  fDetectorIndexClustersLay2 = 0;
  fOverlapFlagClustersLay1   = 0;
  fOverlapFlagClustersLay2   = 0;
  fTracklets                 = 0;
  fSClusters                 = 0;

  // definition of histograms
  Bool_t oldStatus = TH1::AddDirectoryStatus();
  TH1::AddDirectory(kFALSE);
  
  fhClustersDPhiAcc   = new TH1F("dphiacc",  "dphi",  100,-0.1,0.1);
  fhClustersDThetaAcc = new TH1F("dthetaacc","dtheta",100,-0.1,0.1);

  fhDPhiVsDThetaAcc = new TH2F("dphiVsDthetaAcc","",100,-0.1,0.1,100,-0.1,0.1);

  fhClustersDPhiAll   = new TH1F("dphiall",  "dphi",  100,0.0,0.5);
  fhClustersDThetaAll = new TH1F("dthetaall","dtheta",100,0.0,0.5);

  fhDPhiVsDThetaAll = new TH2F("dphiVsDthetaAll","",100,0.,0.5,100,0.,0.5);

  fhetaTracklets  = new TH1F("etaTracklets",  "eta",  100,-2.,2.);
  fhphiTracklets  = new TH1F("phiTracklets",  "phi",  100, 0., 2*TMath::Pi());
  fhetaClustersLay1  = new TH1F("etaClustersLay1",  "etaCl1",  100,-2.,2.);
  fhphiClustersLay1  = new TH1F("phiClustersLay1", "phiCl1", 100, 0., 2*TMath::Pi());
  
  TH1::AddDirectory(oldStatus);
}

//______________________________________________________________________
AliTrackletAlg::AliTrackletAlg(const AliTrackletAlg &mr) : 
AliTrackleter(mr),
fDetTypeRec(0),fESDEvent(0),fTreeRP(0),fUsedClusLay1(0),fUsedClusLay2(0),
fClustersLay1(0),
fClustersLay2(0),
fDetectorIndexClustersLay1(0),
fDetectorIndexClustersLay2(0),
fOverlapFlagClustersLay1(0),
fOverlapFlagClustersLay2(0),
fTracklets(0),
fSClusters(0),
fNClustersLay1(0),
fNClustersLay2(0),
fNTracklets(0),
fNSingleCluster(0),
fPhiWindow(0),
fThetaWindow(0),
fPhiShift(0),
fRemoveClustersFromOverlaps(0),
fPhiOverlapCut(0),
fZetaOverlapCut(0),
fPhiRotationAngle(0),
//
fCutPxDrSPDin(0.1),
fCutPxDrSPDout(0.15),
fCutPxDz(0.2),
fCutDCArz(0.5),
fCutMinElectronProbTPC(0.5),
fCutMinElectronProbESD(0.1),
fCutMinP(0.05),
fCutMinRGamma(2.),
fCutMinRK0(1.),
fCutMinPointAngle(0.98),
fCutMaxDCADauther(0.5),
fCutMassGamma(0.03),
fCutMassGammaNSigma(5.),
fCutMassK0(0.03),
fCutMassK0NSigma(5.),
fCutChi2cGamma(2.),
fCutChi2cK0(2.),
fCutGammaSFromDecay(-10.),
fCutK0SFromDecay(-10.),
fCutMaxDCA(1.),
//
fHistOn(0),
fhClustersDPhiAcc(0),
fhClustersDThetaAcc(0),
fhClustersDPhiAll(0),
fhClustersDThetaAll(0),
fhDPhiVsDThetaAll(0),
fhDPhiVsDThetaAcc(0),
fhetaTracklets(0),
fhphiTracklets(0),
fhetaClustersLay1(0),
fhphiClustersLay1(0)
 {
  // Copy constructor :!!! RS ATTENTION: old c-tor reassigned the pointers instead of creating a new copy -> would crash on delete
   AliError("May not use");
}

//______________________________________________________________________
AliTrackletAlg& AliTrackletAlg::operator=(const AliTrackletAlg& mr){
  // Assignment operator
  if (this != &mr) {
    this->~AliTrackletAlg();
    new(this) AliTrackletAlg(mr);
  }
  return *this;
}

//______________________________________________________________________
AliTrackletAlg::~AliTrackletAlg(){
  // Destructor

  // delete histograms
  delete fhClustersDPhiAcc;
  delete fhClustersDThetaAcc;
  delete fhClustersDPhiAll;
  delete fhClustersDThetaAll;
  delete fhDPhiVsDThetaAll;
  delete fhDPhiVsDThetaAcc;
  delete fhetaTracklets;
  delete fhphiTracklets;
  delete fhetaClustersLay1;
  delete fhphiClustersLay1;
  delete[] fUsedClusLay1;
  delete[] fUsedClusLay2;
  // delete arrays    
  for(Int_t i=0; i<fNTracklets; i++)
    delete [] fTracklets[i];
    
  for(Int_t i=0; i<fNSingleCluster; i++)
    delete [] fSClusters[i];
    
  delete [] fClustersLay1;
  delete [] fClustersLay2;
  delete [] fDetectorIndexClustersLay1;
  delete [] fDetectorIndexClustersLay2;
  delete [] fOverlapFlagClustersLay1;
  delete [] fOverlapFlagClustersLay2;
  delete [] fTracklets;
  delete [] fSClusters;
}

//____________________________________________________________________
void AliTrackletAlg::Reconstruct(AliESDEvent* esd, TTree* treeRP) 
{  
  if (!treeRP) { AliError(" Invalid ITS cluster tree !\n"); return; }
  if (!esd) {AliError("ESDEvent is not available, use old reconstructor"); return;}
  // reset counters
  if (fMult) delete fMult; fMult = 0;
  fNClustersLay1 = 0;
  fNClustersLay2 = 0;
  fNTracklets = 0; 
  fNSingleCluster = 0;
  //
  fESDEvent = esd;
  fTreeRP = treeRP;
  //
  // >>>> RS: this part is equivalent to former AliITSVertexer::FindMultiplicity
  //
  // see if there is a SPD vertex 
  Bool_t isVtxOK=kTRUE, isCosmics=kFALSE;
  AliESDVertex* vtx = (AliESDVertex*)fESDEvent->GetPrimaryVertexSPD();
  if (!vtx || vtx->GetNContributors()<1) isVtxOK = kFALSE;
  if (vtx && strstr(vtx->GetTitle(),"cosmics")) {
    isVtxOK = kFALSE;
    isCosmics = kTRUE;
  }
  //
  if (!isVtxOK) {
    if (!isCosmics) {
      AliDebug(1,"Tracklets multiplicity not determined because the primary vertex was not found");
      AliDebug(1,"Just counting the number of cluster-fired chips on the SPD layers");
    }
    vtx = 0;
  }
  if(vtx){
    float vtxf[3] = {static_cast<float>(vtx->GetX()),static_cast<float>(vtx->GetY()),static_cast<float>(vtx->GetZ())};
    FindTracklets(vtxf);
  }
  else {
    FindTracklets(0);
  }
  //
  CreateMultiplicityObject();
}

//____________________________________________________________________
void AliTrackletAlg::Reconstruct(TTree* clusterTree, Float_t* vtx, Float_t* /* vtxRes*/) {
  //
  // RS NOTE - this is old reconstructor invocation, to be used from VertexFinder

  if (fMult) delete fMult; fMult = 0;
  fNClustersLay1 = 0;
  fNClustersLay2 = 0;
  fNTracklets = 0; 
  fNSingleCluster = 0;
  //
  if (!clusterTree) { AliError(" Invalid ITS cluster tree !\n"); return; }
  //
  fESDEvent = 0;
  fTreeRP = clusterTree;
  //
  FindTracklets(vtx);
  //
}

//____________________________________________________________________
void AliTrackletAlg::FindTracklets(const Float_t *vtx) 
{
  // - calls LoadClusterArrays that finds the position of the clusters
  //   (in global coord) 

  // - convert the cluster coordinates to theta, phi (seen from the
  //   interaction vertex). Clusters in the inner layer can be now
  //   rotated for combinatorial studies 
  // - makes an array of tracklets 
  //   
  // After this method has been called, the clusters of the two layers
  // and the tracklets can be retrieved by calling the Get'er methods.


  // Find tracklets converging to vertex
  //
  LoadClusterArrays(fTreeRP);

  // flag clusters used by ESD tracks
  if (fESDEvent) ProcessESDTracks();

  if (!vtx) return;

  const Double_t pi = TMath::Pi();
  Printf("pi %f",pi);
  // dPhi shift is field dependent
  // get average magnetic field
  Float_t bz = 0;
  AliMagF* field = 0;
  if (TGeoGlobalMagField::Instance()) field = dynamic_cast<AliMagF*>(TGeoGlobalMagField::Instance()->GetField());
  if (!field)
  {
    AliError("Could not retrieve magnetic field. Assuming no field. Delta Phi shift will be deactivated in AliTrackletAlg.");
  }
  else
    bz = TMath::Abs(field->SolenoidField());
  
  const Double_t dPhiShift = fPhiShift / 5 * bz; 
  AliDebug(1, Form("Using phi shift of %f", dPhiShift));
//  Printf("dphishift... %f",dPhiShift); 
  const Double_t dPhiWindow2 = fPhiWindow * fPhiWindow;
//  Printf("phiwin... %f",fPhiWindow);
//  Printf("thetawin... %f",fThetaWindow);
//  Printf("phirotangle... %f",fPhiRotationAngle); 
  const Double_t dThetaWindow2 = fThetaWindow * fThetaWindow;
//  Printf("cl2... %d",fNClustersLay2); 
  Int_t* partners = new Int_t[fNClustersLay2];
  Float_t* minDists = new Float_t[fNClustersLay2];
  Int_t* associatedLay1 = new Int_t[fNClustersLay1];
  TArrayI** blacklist = new TArrayI*[fNClustersLay1];
//  Printf("Vertex in find tracklets...%f %f %f",vtx[0],vtx[1],vtx[2]);
  for (Int_t i=0; i<fNClustersLay2; i++) {
    partners[i] = -1;
    minDists[i] = 2;
  }
  for (Int_t i=0; i<fNClustersLay1; i++) 
    associatedLay1[i] = 0; 
  for (Int_t i=0; i<fNClustersLay1; i++)
    blacklist[i] = 0;
 
//  Printf("Looking for tracklets...");
  // find the tracklets
  AliDebug(1,"Looking for tracklets... ");  
  
  //###########################################################
  // Loop on layer 1 : finding theta, phi and z 
  for (Int_t iC1=0; iC1<fNClustersLay1; iC1++) {    
//    Printf("looping on cl 1...");
    float *clPar = GetClusterLayer1(iC1);
    Float_t x = clPar[kClTh] - vtx[0];
    Float_t y = clPar[kClPh] - vtx[1];
    Float_t z = clPar[kClZ]  - vtx[2];

    Float_t r    = TMath::Sqrt(x*x + y*y + z*z);
    
    clPar[kClTh] = TMath::ACos(z/r);                   // Store Theta
    clPar[kClPh] = TMath::Pi() + TMath::ATan2(-y,-x);  // Store Phi
    clPar[kClPh] = clPar[kClPh] + fPhiRotationAngle;   //rotation of inner layer for comb studies  
//    Printf("ClPar1 %f %f ", clPar[0],clPar[1]);
    if (fHistOn) {
      Float_t eta = clPar[kClTh];
      eta= TMath::Tan(eta/2.);
      eta=-TMath::Log(eta);
      fhetaClustersLay1->Fill(eta);    
      fhphiClustersLay1->Fill(clPar[kClPh]);
    }      
  }
  
  // Loop on layer 2 : finding theta, phi and r   
  for (Int_t iC2=0; iC2<fNClustersLay2; iC2++) {    
    float *clPar = GetClusterLayer2(iC2);
    Float_t x = clPar[kClTh] - vtx[0];
    Float_t y = clPar[kClPh] - vtx[1];
    Float_t z = clPar[kClZ]  - vtx[2];
   
    Float_t r    = TMath::Sqrt(x*x + y*y + z*z);

    clPar[kClTh] = TMath::ACos(z/r);                   // Store Theta
    clPar[kClPh] = TMath::Pi() + TMath::ATan2(-y,-x);  // Store Phi    
//    Printf("ClPar2 %f %f ", clPar[0],clPar[1]);
  }  
  
  //###########################################################
  Int_t found = 1;
  while (found > 0) {
     Printf("Found something..."); 
     Printf("cl1...%d",fNClustersLay1);
     Printf("cl2...%d",fNClustersLay2);
    
    found = 0;

    // Step1: find all tracklets allowing double assocation
    // Loop on layer 1 
    for (Int_t iC1=0; iC1<fNClustersLay1; iC1++) {    
//      Printf("looping on cl 1...");
      // already used ?
      if (associatedLay1[iC1] != 0) continue; 

      found++;

      // reset of variables for multiple candidates
      Int_t  iC2WithBestDist = -1;   // reset
      Double_t minDist       =  2;   // reset
      float* clPar1 = GetClusterLayer1(iC1);
//      Printf("ClPar1 %f %f ", clPar1[0],clPar1[1]);

      // Loop on layer 2 
      for (Int_t iC2=0; iC2<fNClustersLay2; iC2++) {      
//        Printf("looping on cl 2...");
	float* clPar2 = GetClusterLayer2(iC2);
//        Printf("ClPar2 %f %f ", clPar2[0],clPar2[1]);
        if (blacklist[iC1]) {
          Bool_t blacklisted = kFALSE;
          for (Int_t i=blacklist[iC1]->GetSize(); i--;) {
            if (blacklist[iC1]->At(i) == iC2) {
              blacklisted = kTRUE;
              break;
            }
          }
          if (blacklisted) continue;
        }

	// find the difference in angles
	Double_t dTheta = TMath::Abs(clPar2[kClTh] - clPar1[kClTh]); 
         
	Double_t dPhi   = TMath::Abs(clPar2[kClPh] - clPar1[kClPh]);
//        Printf("detheta %f  ", dTheta);
//        Printf("dephi %f  ", dPhi);
         
        // take into account boundary condition
        if (dPhi>pi) dPhi=2.*pi-dPhi;
        
 	if (fHistOn) {
	  fhClustersDPhiAll->Fill(dPhi);
	  fhClustersDThetaAll->Fill(dTheta);    
	  fhDPhiVsDThetaAll->Fill(dTheta, dPhi);
	}
        
        dPhi -= dPhiShift;
                
	// make "elliptical" cut in Phi and Theta! 
	Float_t d = dPhi*dPhi/dPhiWindow2 + dTheta*dTheta/dThetaWindow2;
//        Float_t d = dTheta*dTheta/dThetaWindow2;
//        Printf("distance %f",d);
	// look for the minimum distance: the minimum is in iC2WithBestDist
       	if (d<1 && d<minDist) {
	  minDist=d;
	  iC2WithBestDist = iC2;
	}
      } // end of loop over clusters in layer 2 
    
      if (minDist<1) { // This means that a cluster in layer 2 was found that matches with iC1

        if (minDists[iC2WithBestDist] > minDist) {
          Int_t oldPartner = partners[iC2WithBestDist];
          partners[iC2WithBestDist] = iC1;
          minDists[iC2WithBestDist] = minDist;

          // mark as assigned
          associatedLay1[iC1] = 1;
          
          if (oldPartner != -1) {
            // redo partner search for cluster in L0 (oldPartner), putting this one (iC2WithBestDist) on its blacklist
            if (blacklist[oldPartner] == 0) {
              blacklist[oldPartner] = new TArrayI(1);
            } else blacklist[oldPartner]->Set(blacklist[oldPartner]->GetSize()+1);

            blacklist[oldPartner]->AddAt(iC2WithBestDist, blacklist[oldPartner]->GetSize()-1);

            // mark as free
            associatedLay1[oldPartner] = 0;
          }
        } else {
          // try again to find a cluster without considering iC2WithBestDist 
          if (blacklist[iC1] == 0) {
            blacklist[iC1] = new TArrayI(1);
          }
          else 
            blacklist[iC1]->Set(blacklist[iC1]->GetSize()+1);
   
          blacklist[iC1]->AddAt(iC2WithBestDist, blacklist[iC1]->GetSize()-1);
        } 

      } else // cluster has no partner; remove
        associatedLay1[iC1] = 2;   
    } // end of loop over clusters in layer 1
  }  
 
  // Step2: store tracklets; remove used clusters
  for (Int_t iC2=0; iC2<fNClustersLay2; iC2++) {

    if (partners[iC2] == -1) continue;

    if (fRemoveClustersFromOverlaps) FlagClustersInOverlapRegions (partners[iC2],iC2);
    Printf("saving tracklets");

    if (fOverlapFlagClustersLay1[partners[iC2]] || fOverlapFlagClustersLay2[iC2]) continue;

    float* clPar2 = GetClusterLayer2(iC2);
    float* clPar1 = GetClusterLayer1(partners[iC2]);

    Float_t* tracklet = fTracklets[fNTracklets] = new Float_t[kTrNPar]; // RS Add also the cluster id's
  
    // use the theta from the clusters in the first layer
    tracklet[kTrTheta] = clPar1[kClTh];
    // use the phi from the clusters in the first layer
    tracklet[kTrPhi] = clPar1[kClPh];
    // store the difference between phi1 and phi2
    tracklet[kTrDPhi] = clPar1[kClPh] - clPar2[kClPh];

    // define dphi in the range [0,pi] with proper sign (track charge correlated)
    if (tracklet[kTrDPhi] > TMath::Pi())   tracklet[kTrDPhi] = tracklet[kTrDPhi]-2.*TMath::Pi();
    if (tracklet[kTrDPhi] < -TMath::Pi())  tracklet[kTrDPhi] = tracklet[kTrDPhi]+2.*TMath::Pi();

    // store the difference between theta1 and theta2
    tracklet[kTrDTheta] = clPar1[kClTh] - clPar2[kClTh];

    if (fHistOn) {
      fhClustersDPhiAcc->Fill(tracklet[kTrDPhi]); 
      fhClustersDThetaAcc->Fill(tracklet[kTrDTheta]);    
      fhDPhiVsDThetaAcc->Fill(tracklet[kTrDTheta],tracklet[kTrDPhi]);
    }

    // find label
    // if equal label in both clusters found this label is assigned
    // if no equal label can be found the first labels of the L1 AND L2 cluster are assigned
    Int_t label1 = 0;
    Int_t label2 = 0;
    while (label2 < 3) {
      if ((Int_t) clPar1[kClMC0+label1] != -2 && (Int_t) clPar1[kClMC0+label1] == (Int_t) clPar2[kClMC0+label2])
        break;
      label1++;
      if (label1 == 3) {
        label1 = 0;
        label2++;
      }
    }
    if (label2 < 3) {
      AliDebug(AliLog::kDebug, Form("Found label %d == %d for tracklet candidate %d\n", (Int_t) clPar1[kClMC0+label1], (Int_t) clPar1[kClMC0+label2], fNTracklets));
      tracklet[kTrLab1] = clPar1[kClMC0+label1];
      tracklet[kTrLab2] = clPar2[kClMC0+label2];
    } else {
      AliDebug(AliLog::kDebug, Form("Did not find label %d %d %d %d %d %d for tracklet candidate %d\n", (Int_t) clPar1[kClMC0], (Int_t) clPar1[kClMC1], (Int_t) clPar1[kClMC2], (Int_t) clPar2[kClMC0], (Int_t) clPar2[kClMC1], (Int_t) clPar2[kClMC2], fNTracklets));
      tracklet[kTrLab1] = clPar1[kClMC0];
      tracklet[kTrLab2] = clPar2[kClMC0];
    }

    if (fHistOn) {
      Float_t eta = tracklet[kTrTheta];
      eta= TMath::Tan(eta/2.);
      eta=-TMath::Log(eta);
      fhetaTracklets->Fill(eta);
      fhphiTracklets->Fill(tracklet[kTrPhi]);
    }
    //
    tracklet[kClID1] = partners[iC2];
    tracklet[kClID2] = iC2;
    //
//    Printf("Adding tracklet candidate");
    AliDebug(1,Form(" Adding tracklet candidate %d ", fNTracklets));
    AliDebug(1,Form(" Cl. %d of Layer 1 and %d of Layer 2", partners[iC2], iC2));
    fNTracklets++;

    associatedLay1[partners[iC2]] = 1;
  }
  
  // Delete the following else if you do not want to save Clusters! 
  // store the cluster
  for (Int_t iC1=0; iC1<fNClustersLay1; iC1++) {
//    Printf("saving single clusters...");
    float* clPar1 = GetClusterLayer1(iC1);

    if (associatedLay1[iC1]==2||associatedLay1[iC1]==0) { 
      fSClusters[fNSingleCluster] = new Float_t[kClNPar];
      fSClusters[fNSingleCluster][kSCTh] = clPar1[kClTh];
      fSClusters[fNSingleCluster][kSCPh] = clPar1[kClPh];
      fSClusters[fNSingleCluster][kSCLab] = clPar1[kClMC0]; 
      fSClusters[fNSingleCluster][kSCID] = iC1;
      AliDebug(1,Form(" Adding a single cluster %d (cluster %d  of layer 1)",
                fNSingleCluster, iC1));
      fNSingleCluster++;
    }
  }

  delete[] partners;
  delete[] minDists;
  delete[] associatedLay1;

  for (Int_t i=0; i<fNClustersLay1; i++)
    if (blacklist[i])
      delete blacklist[i];
  delete[] blacklist;
//  Printf("exiting...");
  AliDebug(1,Form("%d tracklets found", fNTracklets));
}

//____________________________________________________________________
void AliTrackletAlg::CreateMultiplicityObject()
{
  // create AliMultiplicity object and store it in the ESD event
  //
  TBits fastOrFiredMap,firedChipMap;
  if (fDetTypeRec) {
   fastOrFiredMap  = fDetTypeRec->GetFastOrFiredMap();
   firedChipMap    = fDetTypeRec->GetFiredChipMap(fTreeRP);
  }
  //
  fMult = new AliMultiplicity(fNTracklets,fNSingleCluster,fNFiredChips[0],fNFiredChips[1],fastOrFiredMap);
  fMult->SetFiredChipMap(firedChipMap);
  AliITSRecPointContainer* rcont = AliITSRecPointContainer::Instance();
  fMult->SetITSClusters(0,rcont->GetNClustersInLayer(1,fTreeRP));
  for(Int_t kk=2;kk<=6;kk++) fMult->SetITSClusters(kk-1,rcont->GetNClustersInLayerFast(kk));
  //
  for (int i=fNTracklets;i--;)  {
    float* tlInfo = fTracklets[i];
    fMult->SetTrackletData(i,tlInfo, fUsedClusLay1[int(tlInfo[kClID1])],fUsedClusLay2[int(tlInfo[kClID2])]);
  }
  //  
  for (int i=fNSingleCluster;i--;) {
    float* clInfo = fSClusters[i];
    fMult->SetSingleClusterData(i,clInfo,fUsedClusLay1[int(clInfo[kSCID])]);
  }
  fMult->CompactBits();
  //
}


//____________________________________________________________________
void AliTrackletAlg::LoadClusterArrays(TTree* itsClusterTree) 
{
  // This method
  // - gets the clusters from the cluster tree 
  // - convert them into global coordinates 
  // - store them in the internal arrays
  // - count the number of cluster-fired chips
  //
  // RS: This method was strongly modified wrt original. In order to have the same numbering 
  // of clusters as in the ITS reco I had to introduce sorting in Z
  // Also note that now the clusters data are stored not in float[6] attached to float**, but in 1-D array
  AliDebug(1,"Loading clusters and cluster-fired chips ...");
  
  fNClustersLay1 = 0;
  fNClustersLay2 = 0;
  fNFiredChips[0] = 0;
  fNFiredChips[1] = 0;
  
  AliITSsegmentationSPD seg;

//  AliITSRecPointContainer* rpcont=AliITSRecPointContainer::Instance();
//  TClonesArray* itsClusters=rpcont->FetchClusters(0,itsClusterTree);
//  if(!rpcont->IsSPDActive()){
//    AliWarning("No SPD rec points found, multiplicity not calculated");
//    return;
//  }
  
  TClonesArray statITSrec("AliITSRecPoint");
  TClonesArray* itsClusters= &statITSrec;    

  TBranch* branch=itsClusterTree->GetBranch("ITSRecPoints");
  if(!branch) {
    printf("NO itsClusterTree branch available. Skipping...\n");
    return;
  }

  branch->SetAddress(&itsClusters);
  // count clusters
  // loop over the SPD subdetectors
  static TClonesArray clArr("AliITSRecPoint",100);
//  Float_t cluGlo[3] = {0.,0.,0.};
  for (int il=0;il<2;il++) {
    int nclLayer = 0;
    int detMin = AliITSgeomTGeo::GetModuleIndex(il+1,1,1);
    int detMax = AliITSgeomTGeo::GetModuleIndex(il+2,1,1);
    for (int idt=detMin;idt<detMax;idt++) {
      branch->GetEvent(idt);
      int nClusters = itsClusters->GetEntriesFast();
//      itsClusters=rpcont->UncheckedGetClusters(idt);
      if (!nClusters) continue;
      Int_t nClustersInChip[5] = {0,0,0,0,0};
      while(nClusters--) {
	AliITSRecPoint* cluster = (AliITSRecPoint*)itsClusters->UncheckedAt(nClusters);
	if (!cluster) continue;
/*        cluster->GetGlobalXYZ(cluGlo);
        if (idt==0) 
                   Printf("First Cl1 LoadClArr %f %f %f ",cluGlo[0],cluGlo[1],cluGlo[2]);
        if (idt==80) 
                   Printf("First Cl2 LoadClArr %f %f %f ",cluGlo[0],cluGlo[1],cluGlo[2]);*/
	new (clArr[nclLayer++]) AliITSRecPoint(*cluster);
        // find the chip for the current cluster
        Float_t locz = cluster->GetDetLocalZ();
        Int_t iChip = seg.GetChipFromLocal(0,locz);
        if (iChip>=0) 
	  nClustersInChip[iChip]++; 
      }
      for(Int_t ifChip=5;ifChip--;) if (nClustersInChip[ifChip]) fNFiredChips[il]++;
    }
    // sort the clusters in Z (to have the same numbering as in ITS reco
    Float_t *z    = new Float_t[nclLayer];
    Int_t * index = new Int_t[nclLayer];
    for (int ic=0;ic<nclLayer;ic++) z[ic] = ((AliITSRecPoint*)clArr[ic])->GetZ();
    TMath::Sort(nclLayer,z,index,kFALSE);
    Float_t*   clustersLay              = new Float_t[nclLayer*kClNPar];
    Int_t*     detectorIndexClustersLay = new Int_t[nclLayer];
    Bool_t*    overlapFlagClustersLay   = new Bool_t[nclLayer];
    UInt_t*    usedClusLay              = new UInt_t[nclLayer];
    //
    for (int ic=0;ic<nclLayer;ic++) {
      AliITSRecPoint* cluster = (AliITSRecPoint*)clArr[index[ic]];
      float* clPar = &clustersLay[ic*kClNPar];
      //      
      cluster->GetGlobalXYZ( clPar );
//      if (ic==0 && detMin==0) Printf("First Cl1 LoadClArrSorted %f %f %f ",clPar[kClTh],clPar[kClPh],clPar[kClZ]);
//      if (ic==0 && detMin==80) Printf("First Cl2 LoadClArrSorted %f %f %f ",clPar[kClTh],clPar[kClPh],clPar[kClZ]);
//      if (ic==0 && detMin==0) Printf("First Cl1 LoadClArrSorted %f %f %f ",clPar[0],clPar[1],clPar[2]);
//      if (ic==0 && detMin==80) Printf("First Cl2 LoadClArrSorted %f %f %f ",clPar[0],clPar[1],clPar[2]);
      detectorIndexClustersLay[ic] = cluster->GetDetectorIndex(); 
      overlapFlagClustersLay[ic]   = kFALSE;
      usedClusLay[ic]              = 0;
      for (Int_t i=3;i--;) clPar[kClMC0+i] = cluster->GetLabel(i);
    }
    clArr.Clear();
    delete[] z;
    delete[] index;
    //
    if (il==0) {
      fClustersLay1              = clustersLay;
      fOverlapFlagClustersLay1   = overlapFlagClustersLay;
      fDetectorIndexClustersLay1 = detectorIndexClustersLay;
      fUsedClusLay1              = usedClusLay;
      fNClustersLay1             = nclLayer;
    }
    else {
      fClustersLay2              = clustersLay;
      fOverlapFlagClustersLay2   = overlapFlagClustersLay;
      fDetectorIndexClustersLay2 = detectorIndexClustersLay;
      fUsedClusLay2              = usedClusLay;
      fNClustersLay2             = nclLayer;
    }
  }
//  Printf("First Cl1 %f %f %f ",fClustersLay1[0],fClustersLay1[1],fClustersLay1[2]);
//  Printf("First Cl2 %f %f %f ",fClustersLay2[0],fClustersLay2[1],fClustersLay2[2]);
  Printf("LoadClusterArr: N cl1 %d",fNClustersLay1);
  Printf("LoadClusterArrN: N cl2 %d",fNClustersLay2);
  //
  // no double association allowed // ?? 
  int nmaxT                  = TMath::Min(fNClustersLay1, fNClustersLay2);
  fTracklets                 = new Float_t*[nmaxT];
  fSClusters                 = new Float_t*[fNClustersLay1]; 
  for (Int_t i=nmaxT;i--;) fTracklets[i] = 0;
  //
  AliDebug(1,Form("(clusters in layer 1 : %d,  layer 2: %d)",fNClustersLay1,fNClustersLay2));
  AliDebug(1,Form("(cluster-fired chips in layer 1 : %d,  layer 2: %d)",fNFiredChips[0],fNFiredChips[1]));
}
//____________________________________________________________________
void
AliTrackletAlg::LoadClusterFiredChips(TTree* itsClusterTree) {
  // This method    
  // - gets the clusters from the cluster tree 
  // - counts the number of (cluster)fired chips
  
  AliDebug(1,"Loading cluster-fired chips ...");
  
  fNFiredChips[0] = 0;
  fNFiredChips[1] = 0;
  
  AliITSsegmentationSPD seg;   
  AliITSRecPointContainer* rpcont=AliITSRecPointContainer::Instance();
  TClonesArray* itsClusters=NULL;
  rpcont->FetchClusters(0,itsClusterTree);
  if(!rpcont->IsSPDActive()){
    AliWarning("No SPD rec points found, multiplicity not calculated");
    return;
  } 

  // loop over the its subdetectors
  Int_t nSPDmodules=AliITSgeomTGeo::GetModuleIndex(3,1,1);
  for (Int_t iIts=0; iIts < nSPDmodules; iIts++) {
    itsClusters=rpcont->UncheckedGetClusters(iIts);
    Int_t nClusters = itsClusters->GetEntriesFast();

    // number of clusters in each chip of the current module
    Int_t nClustersInChip[5] = {0,0,0,0,0};
    Int_t layer = 0;
    
    // loop over clusters
    while(nClusters--) {
      AliITSRecPoint* cluster = (AliITSRecPoint*)itsClusters->UncheckedAt(nClusters);
      
      layer = cluster->GetLayer();
      if (layer>1) break; // no point in further check for this module            

      // find the chip for the current cluster
      Float_t locz = cluster->GetDetLocalZ();
      Int_t iChip = seg.GetChipFromLocal(0,locz);
      if (iChip>=0)
        nClustersInChip[iChip]++; 
      
    }// end of cluster loop
    if (layer>1) continue; // make sure we are in the SPD layer
    // get number of fired chips in the current module
    for(Int_t ifChip=0; ifChip<5; ifChip++) {
      if(nClustersInChip[ifChip] >= 1)  fNFiredChips[layer]++;
    }

  } // end of its "subdetector" loop  
  

  AliDebug(1,Form("(cluster-fired chips in layer 1 : %d,  layer 2: %d)",fNFiredChips[0],fNFiredChips[1]));
}
//____________________________________________________________________
void
AliTrackletAlg::SaveHists() {
  // This method save the histograms on the output file
  // (only if fHistOn is TRUE). 
  
  if (!fHistOn)
    return;

  fhClustersDPhiAll->Write();
  fhClustersDThetaAll->Write();
  fhDPhiVsDThetaAll->Write();

  fhClustersDPhiAcc->Write();
  fhClustersDThetaAcc->Write();
  fhDPhiVsDThetaAcc->Write();

  fhetaTracklets->Write();
  fhphiTracklets->Write();
  fhetaClustersLay1->Write();
  fhphiClustersLay1->Write();
}

//____________________________________________________________________
void 
AliTrackletAlg::FlagClustersInOverlapRegions (Int_t iC1, Int_t iC2WithBestDist) {

  Float_t distClSameMod=0.;
  Float_t distClSameModMin=0.;
  Int_t   iClOverlap =0;
  Float_t meanRadiusLay1 = 3.99335; // average radius inner layer
  Float_t meanRadiusLay2 = 7.37935; // average radius outer layer;

  Float_t zproj1=0.;
  Float_t zproj2=0.;
  Float_t deZproj=0.;
  Float_t* clPar1  = GetClusterLayer1(iC1);
  Float_t* clPar2B = GetClusterLayer2(iC2WithBestDist);
  // Loop on inner layer clusters
  for (Int_t iiC1=0; iiC1<fNClustersLay1; iiC1++) {
    if (!fOverlapFlagClustersLay1[iiC1]) {
      // only for adjacent modules
      if ((TMath::Abs(fDetectorIndexClustersLay1[iC1]-fDetectorIndexClustersLay1[iiC1])==4)||
         (TMath::Abs(fDetectorIndexClustersLay1[iC1]-fDetectorIndexClustersLay1[iiC1])==76)) {
	Float_t *clPar11 = GetClusterLayer1(iiC1);
        Float_t dePhi=TMath::Abs(clPar11[kClPh]-clPar1[kClPh]);
        if (dePhi>TMath::Pi()) dePhi=2.*TMath::Pi()-dePhi;

        zproj1=meanRadiusLay1/TMath::Tan(clPar1[kClTh]);
        zproj2=meanRadiusLay1/TMath::Tan(clPar11[kClTh]);

        deZproj=TMath::Abs(zproj1-zproj2);

        distClSameMod = TMath::Sqrt(TMath::Power(deZproj/fZetaOverlapCut,2)+TMath::Power(dePhi/fPhiOverlapCut,2));
        if (distClSameMod<=1.) fOverlapFlagClustersLay1[iiC1]=kTRUE;

//        if (distClSameMod<=1.) {
//          if (distClSameModMin==0. || distClSameMod<distClSameModMin) {
//            distClSameModMin=distClSameMod;
//            iClOverlap=iiC1;
//          } 
//        }


      } // end adjacent modules
    } 
  } // end Loop on inner layer clusters

//  if (distClSameModMin!=0.) fOverlapFlagClustersLay1[iClOverlap]=kTRUE;

  distClSameMod=0.;
  distClSameModMin=0.;
  iClOverlap =0;
  // Loop on outer layer clusters
  for (Int_t iiC2=0; iiC2<fNClustersLay2; iiC2++) {
    if (!fOverlapFlagClustersLay2[iiC2]) {
      // only for adjacent modules
      Float_t *clPar2 = GetClusterLayer2(iiC2);
      if ((TMath::Abs(fDetectorIndexClustersLay2[iC2WithBestDist]-fDetectorIndexClustersLay2[iiC2])==4) ||
         (TMath::Abs(fDetectorIndexClustersLay2[iC2WithBestDist]-fDetectorIndexClustersLay2[iiC2])==156)) {
        Float_t dePhi=TMath::Abs(clPar2[kClPh]-clPar2B[kClPh]);
        if (dePhi>TMath::Pi()) dePhi=2.*TMath::Pi()-dePhi;

        zproj1=meanRadiusLay2/TMath::Tan(clPar2B[kClTh]);
        zproj2=meanRadiusLay2/TMath::Tan(clPar2[kClTh]);

        deZproj=TMath::Abs(zproj1-zproj2);
        distClSameMod = TMath::Sqrt(TMath::Power(deZproj/fZetaOverlapCut,2)+TMath::Power(dePhi/fPhiOverlapCut,2));
        if (distClSameMod<=1.) fOverlapFlagClustersLay2[iiC2]=kTRUE;

//        if (distClSameMod<=1.) {
//          if (distClSameModMin==0. || distClSameMod<distClSameModMin) {
//            distClSameModMin=distClSameMod;
//            iClOverlap=iiC2;
//          }
//        }

      } // end adjacent modules
    }
  } // end Loop on outer layer clusters

//  if (distClSameModMin!=0.) fOverlapFlagClustersLay2[iClOverlap]=kTRUE;

}

//____________________________________________________________________
void AliTrackletAlg::ProcessESDTracks()
{
  // Flag the clusters used by ESD tracks
  // Flag primary tracks to be used for multiplicity counting 
  //
  if (!fESDEvent) return;
  AliESDVertex* vtx = (AliESDVertex*)fESDEvent->GetPrimaryVertexTracks();
  if (!vtx || vtx->GetNContributors()<1) vtx = (AliESDVertex*)fESDEvent->GetPrimaryVertexSPD();
  if (!vtx || vtx->GetNContributors()<1) {
    AliDebug(1,"No primary vertex: cannot flag primary tracks");
    return;
  }
  Int_t ntracks = fESDEvent->GetNumberOfTracks();
  for(Int_t itr=0; itr<ntracks; itr++) {
    AliESDtrack* track = fESDEvent->GetTrack(itr);
    if (!track->IsOn(AliESDtrack::kITSin)) continue; // use only tracks propagated in ITS to vtx
    FlagTrackClusters(itr);
    FlagIfSecondary(track,vtx);
  }
  FlagV0s(vtx);
  //
}

//____________________________________________________________________
void AliTrackletAlg::FlagTrackClusters(Int_t id)
{
  // RS: flag the SPD clusters of the track if it is useful for the multiplicity estimation
  //
  const UInt_t   kMaskL = 0x0000ffff;
  const UInt_t   kMaskH = 0xffff0000;
  const UInt_t   kMaxTrID = kMaskL - 1; // max possible track id
  if (UInt_t(id)>kMaxTrID) return;
  const AliESDtrack* track = fESDEvent->GetTrack(id);
  Int_t idx[12];
  if ( track->GetITSclusters(idx)<3 ) return; // at least 3 clusters must be used in the fit
  UInt_t *uClus[2] = {fUsedClusLay1,fUsedClusLay2};
  //
  UInt_t mark = id+1;
  if (track->IsOn(AliESDtrack::kITSpureSA)) mark <<= 16;
  //
  for (int i=AliESDfriendTrack::kMaxITScluster;i--;) {
    // note: i>=6 is for extra clusters
    if (idx[i]<0) continue;
    int layID= (idx[i] & 0xf0000000) >> 28; 
    if (layID>1) continue; // SPD only
    int clID = (idx[i] & 0x0fffffff);
    //
    if ( track->IsOn(AliESDtrack::kITSpureSA) ) {
      if (uClus[layID][clID]&kMaskH) {
	AliWarning(Form("Tracks %5d and %5d share cluster %6d of lr%d",id,int(uClus[layID][clID]>>16)-1,clID,layID));
	uClus[layID][clID] &= kMaskL;
      }
    }
    else if (uClus[layID][clID]&kMaskL) {
      AliWarning(Form("Tracks %5d and %5d share cluster %6d of lr%d",id,int(uClus[layID][clID]&kMaskL)-1,clID,layID));
      uClus[layID][clID] &= kMaskH;
    }
    uClus[layID][clID] |= mark;
  }
  //
}

//____________________________________________________________________
void AliTrackletAlg::FlagIfSecondary(AliESDtrack* track, const AliVertex* vtx)
{
  // RS: check if the track is primary and set the flag
  double cut = (track->HasPointOnITSLayer(0)||track->HasPointOnITSLayer(1)) ? fCutPxDrSPDin:fCutPxDrSPDout;
  float xz[2];
  track->GetDZ(vtx->GetX(),vtx->GetY(),vtx->GetZ(), fESDEvent->GetMagneticField(), xz);
  if (TMath::Abs(xz[0]*track->P())>cut || TMath::Abs(xz[1]*track->P())>fCutPxDz ||
      TMath::Abs(xz[0])>fCutDCArz   || TMath::Abs(xz[1])>fCutDCArz) 
    track->SetStatus(AliESDtrack::kMultSec);
  else track->ResetStatus(AliESDtrack::kMultSec);
}

//____________________________________________________________________
void AliTrackletAlg::FlagV0s(const AliESDVertex *vtx)
{
  // flag tracks belonging to v0s
  //
  const double kK0Mass = 0.4976;
  //
  AliV0 pvertex;
  AliKFVertex vertexKF;
  AliKFParticle epKF0,epKF1,pipmKF0,piKF0,piKF1,gammaKF,k0KF;
  Double_t mass,massErr,chi2c;
  enum {kKFIni=BIT(14)};
  //
  double recVtx[3];
  float recVtxF[3];
  vtx->GetXYZ(recVtx);
  for (int i=3;i--;) recVtxF[i] = recVtx[i];
  //
  int ntracks = fESDEvent->GetNumberOfTracks();
  if (ntracks<2) return;
  //
  vertexKF.X() = recVtx[0];
  vertexKF.Y() = recVtx[1];
  vertexKF.Z() = recVtx[2];
  vertexKF.Covariance(0,0) = vtx->GetXRes()*vtx->GetXRes();
  vertexKF.Covariance(1,2) = vtx->GetYRes()*vtx->GetYRes();
  vertexKF.Covariance(2,2) = vtx->GetZRes()*vtx->GetZRes();
  //
  AliESDtrack *trc0,*trc1;
  for (int it0=0;it0<ntracks;it0++) {
    trc0 = fESDEvent->GetTrack(it0);
    if (trc0->IsOn(AliESDtrack::kMultInV0)) continue;
    if (!trc0->IsOn(AliESDtrack::kITSin)) continue;
    Bool_t isSAP = trc0->IsPureITSStandalone();
    Int_t  q0 = trc0->Charge();
    Bool_t testGamma = CanBeElectron(trc0);
    epKF0.ResetBit(kKFIni);
    piKF0.ResetBit(kKFIni);
    double bestChi2=1e16;
    int bestID = -1;
    //    
    for (int it1=it0+1;it1<ntracks;it1++) {
      trc1 = fESDEvent->GetTrack(it1);
      if (trc1->IsOn(AliESDtrack::kMultInV0)) continue;
      if (!trc1->IsOn(AliESDtrack::kITSin)) continue;
      if (trc1->IsPureITSStandalone() != isSAP) continue; // pair separately ITS_SA_Pure tracks and TPC/ITS+ITS_SA
      if ( (q0+trc1->Charge())!=0 ) continue;             // don't pair like signs
      //
      pvertex.SetParamN(q0<0 ? *trc0:*trc1);
      pvertex.SetParamP(q0>0 ? *trc0:*trc1);
      pvertex.Update(recVtxF);
      if (pvertex.P()<fCutMinP) continue;
      if (pvertex.GetV0CosineOfPointingAngle()<fCutMinPointAngle) continue;
      if (pvertex.GetDcaV0Daughters()>fCutMaxDCADauther) continue;
      double d = pvertex.GetD(recVtx[0],recVtx[1],recVtx[2]);
      if (d>fCutMaxDCA) continue;
      double dx=recVtx[0]-pvertex.Xv(), dy=recVtx[1]-pvertex.Yv();
      double rv = TMath::Sqrt(dx*dx+dy*dy);
      //
      // check gamma conversion hypothesis ----------------------------------------------------------->>>
      Bool_t gammaOK = kFALSE;
      while (testGamma && CanBeElectron(trc1)) {
	if (rv<fCutMinRGamma) break;
	if (!epKF0.TestBit(kKFIni)) {
	  new(&epKF0) AliKFParticle(*trc0,q0>0 ? kPositron:kElectron);
	  epKF0.SetBit(kKFIni);
	}
	new(&epKF1) AliKFParticle(*trc1,q0<0 ? kPositron:kElectron);
	gammaKF.Initialize();
	gammaKF += epKF0;
	gammaKF += epKF1;      
	gammaKF.SetProductionVertex(vertexKF);
	gammaKF.GetMass(mass,massErr);
	if (mass>fCutMassGamma || (massErr>0&&(mass>massErr*fCutMassGammaNSigma))) break;
	if (gammaKF.GetS()<fCutGammaSFromDecay) break;
	gammaKF.SetMassConstraint(0.,0.001);
	chi2c = (gammaKF.GetNDF()!=0) ? gammaKF.GetChi2()/gammaKF.GetNDF() : 1000;
	if (chi2c>fCutChi2cGamma) break;
	gammaOK = kTRUE;
	if (chi2c>bestChi2) break;
	bestChi2 = chi2c;
	bestID = it1;
	break;
      }
      if (gammaOK) continue;
      // check gamma conversion hypothesis -----------------------------------------------------------<<<
      // check K0 conversion hypothesis    ----------------------------------------------------------->>>
      while (1) {
	if (rv<fCutMinRK0) break;
	if (!piKF0.TestBit(kKFIni)) {
	  new(&piKF0) AliKFParticle(*trc0,q0>0 ? kPiPlus:kPiMinus);
	  piKF0.SetBit(kKFIni);
	}
	new(&piKF1) AliKFParticle(*trc1,q0<0 ? kPiPlus:kPiMinus);
	k0KF.Initialize();
	k0KF += piKF0;
	k0KF += piKF1;      
	k0KF.SetProductionVertex(vertexKF);
	k0KF.GetMass(mass,massErr);
	mass -= kK0Mass;
	if (TMath::Abs(mass)>fCutMassK0 || (massErr>0&&(abs(mass)>massErr*fCutMassK0NSigma))) break;
	if (k0KF.GetS()<fCutK0SFromDecay) break;
	k0KF.SetMassConstraint(kK0Mass,0.001);
	chi2c = (k0KF.GetNDF()!=0) ? k0KF.GetChi2()/k0KF.GetNDF() : 1000;
	if (chi2c>fCutChi2cK0) break;
	if (chi2c>bestChi2) break;
	bestChi2 = chi2c;
	bestID = it1;
	break;
      }
      // check K0 conversion hypothesis    -----------------------------------------------------------<<<
    }
    //
    if (bestID>=0) {
      trc0->SetStatus(AliESDtrack::kMultInV0);
      fESDEvent->GetTrack(bestID)->SetStatus(AliESDtrack::kMultInV0);
    }
  }
  //
}

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