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
//
// It retrieves clusters in the pixels (theta and phi) and finds tracklets.
// These can be used to extract charged particle multiplicity from the ITS.
//
// A tracklet consists of two ITS clusters, one in the first pixel layer and 
// one in the second. The clusters are associated if the differences in 
// Phi (azimuth) and Theta (polar angle) are within fiducial windows.
// In case of multiple candidates the candidate with minimum
// distance is selected. 
//
// Two methods return the number of tracklets and the number of unassociated 
// clusters (i.e. not used in any tracklet) in the first SPD layer
// (GetNTracklets and GetNSingleClusters)
//
// The cuts on phi and theta depend on the interacting system (p-p or Pb-Pb)
// and can be set via AliITSRecoParam class
// (SetPhiWindow and SetThetaWindow)  
// 
// Origin: Tiziano Virgili 
//
// Current support and development: 
//         Domenico Elia, Maria Nicassio (INFN Bari) 
//         Domenico.Elia@ba.infn.it, Maria.Nicassio@ba.infn.it
//
// Most recent updates:
//     - multiple association forbidden (fOnlyOneTrackletPerC2 = kTRUE)    
//     - phi definition changed to ALICE convention (0,2*TMath::pi()) 
//     - cluster coordinates taken with GetGlobalXYZ()
//     - fGeometry removed
//     - number of fired chips on the two layers
//     - option to cut duplicates in the overlaps
//     - options and fiducial cuts via AliITSRecoParam
//     - move from DeltaZeta to DeltaTheta cut
//     - update to the new algorithm by Mariella and Jan Fiete
//     - store also DeltaTheta in the ESD 
//     - less new and delete calls when creating the needed arrays
//
//     - RS: to decrease the number of new/deletes the clusters data are stored 
//           not in float[6] attached to float**, but in 1-D array.
//     - RS: Clusters are sorted in Z in roder to have the same numbering as in the ITS reco
//     - RS: Clusters used by ESDtrack are flagged, this information is passed to AliMulitiplicity object 
//           when storing the tracklets and single cluster info
//     - MN: first MC label of single clusters stored  
//_________________________________________________________________________

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

#include "AliITSMultReconstructor.h"
#include "AliITSReconstructor.h"
#include "AliITSRecPoint.h"
#include "AliITSRecPointContainer.h"
#include "AliITSgeom.h"
#include "AliITSgeomTGeo.h"
#include "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"
#include "AliRefArray.h"

//____________________________________________________________________
ClassImp(AliITSMultReconstructor)


//____________________________________________________________________
AliITSMultReconstructor::AliITSMultReconstructor():
fDetTypeRec(0),fESDEvent(0),fTreeRP(0),fTreeRPMix(0),
fTracklets(0),
fSClusters(0),
fNTracklets(0),
fNSingleCluster(0),
fNSingleClusterSPD2(0),
fDPhiWindow(0),
fDThetaWindow(0),
fPhiShift(0),
fRemoveClustersFromOverlaps(0),
fPhiOverlapCut(0),
fZetaOverlapCut(0),
fPhiRotationAngle(0),
fScaleDTBySin2T(0),
fNStdDev(1.0),
fNStdDevSq(1.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),
//
  fDPhiShift(0),
  fDPhiWindow2(0),
  fDThetaWindow2(0),
  fPartners(0),
  fAssociatedLay1(0),
  fMinDists(0),
  fBlackList(0),
//
  fCreateClustersCopy(0),
  fClustersLoaded(0),
  fRecoDone(0),
  fBuildRefs(kTRUE),
  fStoreSPD2SingleCl(kFALSE),
  fSPDSeg()
{
  // default c-tor
  for (int i=0;i<2;i++) {
    fNFiredChips[i] = 0;
    fClArr[i] = 0;
    for (int j=0;j<2;j++) fUsedClusLay[i][j] = 0;
    fDetectorIndexClustersLay[i] = 0;
    fClusterCopyIndex[i] = 0;
    fOverlapFlagClustersLay[i] = 0;
    fNClustersLay[i] = 0;
    fClustersLay[i] = 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());
    SetNStdDev(AliITSReconstructor::GetRecoParam()->GetTrackleterNStdDevCut());
    SetScaleDThetaBySin2T(AliITSReconstructor::GetRecoParam()->GetTrackleterScaleDThetaBySin2T());
    SetBuildRefs(AliITSReconstructor::GetRecoParam()->GetTrackleterBuildCl2TrkRefs());
    SetStoreSPD2SingleCl(AliITSReconstructor::GetRecoParam()->GetTrackleterStoreSPD2SingleCl());
    //
    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();
  } 
  //
  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());
  for (int i=2;i--;) fStoreRefs[i][0] =  fStoreRefs[i][1] = kFALSE;
  TH1::AddDirectory(oldStatus);
}

//______________________________________________________________________
AliITSMultReconstructor::AliITSMultReconstructor(const AliITSMultReconstructor &mr) : 
AliTrackleter(mr),
fDetTypeRec(0),fESDEvent(0),fTreeRP(0),fTreeRPMix(0),
fTracklets(0),
fSClusters(0),
fNTracklets(0),
fNSingleCluster(0),
fNSingleClusterSPD2(0),
fDPhiWindow(0),
fDThetaWindow(0),
fPhiShift(0),
fRemoveClustersFromOverlaps(0),
fPhiOverlapCut(0),
fZetaOverlapCut(0),
fPhiRotationAngle(0),
fScaleDTBySin2T(0),
fNStdDev(1.0),
fNStdDevSq(1.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),
fDPhiShift(0),
fDPhiWindow2(0),
fDThetaWindow2(0),
fPartners(0),
fAssociatedLay1(0),
fMinDists(0),
fBlackList(0),
//
fCreateClustersCopy(0),
fClustersLoaded(0),
fRecoDone(0),
fBuildRefs(kTRUE),
fStoreSPD2SingleCl(kFALSE),
fSPDSeg()
 {
  // Copy constructor :!!! RS ATTENTION: old c-tor reassigned the pointers instead of creating a new copy -> would crash on delete
   AliError("May not use");
}

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

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

  // delete histograms
  delete fhClustersDPhiAcc;
  delete fhClustersDThetaAcc;
  delete fhClustersDPhiAll;
  delete fhClustersDThetaAll;
  delete fhDPhiVsDThetaAll;
  delete fhDPhiVsDThetaAcc;
  delete fhetaTracklets;
  delete fhphiTracklets;
  delete fhetaClustersLay1;
  delete fhphiClustersLay1;
  //
  // delete arrays    
  for(Int_t i=0; i<fNTracklets; i++) delete [] fTracklets[i];
    
  for(Int_t i=0; i<fNSingleCluster; i++) delete [] fSClusters[i];
  
  // 
  for (int i=0;i<2;i++) {
    delete[] fClustersLay[i];
    delete[] fDetectorIndexClustersLay[i];
    delete[] fClusterCopyIndex[i];
    delete[] fOverlapFlagClustersLay[i];
    delete   fClArr[i];
    for (int j=0;j<2;j++) delete fUsedClusLay[i][j];
  }
  delete [] fTracklets;
  delete [] fSClusters;
  //
  delete[] fPartners;      fPartners = 0;
  delete[] fMinDists;      fMinDists = 0;
  delete   fBlackList;     fBlackList = 0;
  //
}

//____________________________________________________________________
void AliITSMultReconstructor::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;
  fNClustersLay[0] = 0;
  fNClustersLay[1] = 0;
  fNTracklets = 0; 
  fNSingleCluster = 0;
  fNSingleClusterSPD2 = 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 AliITSMultReconstructor::Reconstruct(TTree* clusterTree, Float_t* vtx, Float_t* /* vtxRes*/) {
  //
  // RS NOTE - this is old reconstructor invocation, to be used from VertexFinder and in analysis mode

  if (fMult) delete fMult; fMult = 0;
  fNClustersLay[0] = 0;
  fNClustersLay[1] = 0;
  fNTracklets = 0; 
  fNSingleCluster = 0;
  fNSingleClusterSPD2 = 0;
  //
  if (!clusterTree) { AliError(" Invalid ITS cluster tree !\n"); return; }
  //
  fESDEvent = 0;
  SetTreeRP(clusterTree);
  //
  FindTracklets(vtx);
  //
}


//____________________________________________________________________
void AliITSMultReconstructor::ReconstructMix(TTree* clusterTree, TTree* clusterTreeMix, const Float_t* vtx, Float_t*) 
{
  //
  // RS NOTE - this is old reconstructor invocation, to be used from VertexFinder and in analysis mode

  if (fMult) delete fMult; fMult = 0;
  fNClustersLay[0] = 0;
  fNClustersLay[1] = 0;
  fNTracklets = 0; 
  fNSingleCluster = 0;
  fNSingleClusterSPD2 = 0;
  //
  if (!clusterTree) { AliError(" Invalid ITS cluster tree !\n"); return; }
  if (!clusterTreeMix) { AliError(" Invalid ITS cluster tree 2nd event !\n"); return; }
  //
  fESDEvent = 0;
  SetTreeRP(clusterTree);
  SetTreeRPMix(clusterTreeMix);
  //
  FindTracklets(vtx);
  //
}


//____________________________________________________________________
void AliITSMultReconstructor::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,fTreeRPMix);
  // flag clusters used by ESD tracks
  if (fESDEvent) ProcessESDTracks();
  fRecoDone = kTRUE;

  if (!vtx) return;

  InitAux();
  
  // find the tracklets
  AliDebug(1,"Looking for tracklets... ");  
  
  ClusterPos2Angles(vtx); // convert cluster position to angles wrt vtx
  //
  // Step1: find all tracklets allowing double assocation: 
  int found = 1;
  while (found > 0) {
    found = 0;
    for (Int_t iC1=0; iC1<fNClustersLay[0]; iC1++) found += AssociateClusterOfL1(iC1);
  }
  //
  // Step2: store tracklets; remove used clusters 
  for (Int_t iC2=0; iC2<fNClustersLay[1]; iC2++) StoreTrackletForL2Cluster(iC2);
  //
  // store unused single clusters of L1 (optionally for L2 too)
  StoreL1Singles();
  //
  AliDebug(1,Form("%d tracklets found", fNTracklets));
}

//____________________________________________________________________
void AliITSMultReconstructor::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->SetMultTrackRefs( fBuildRefs );
  fMult->SetSPD2SinglesStored(fStoreSPD2SingleCl);
  fMult->SetNumberOfSingleClustersSPD2(fNSingleClusterSPD2);
  // store some details of reco:
  fMult->SetScaleDThetaBySin2T(fScaleDTBySin2T);
  fMult->SetDPhiWindow2(fDPhiWindow2);
  fMult->SetDThetaWindow2(fDThetaWindow2);
  fMult->SetDPhiShift(fDPhiShift);
  fMult->SetNStdDev(fNStdDev);
  //
  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));
  //
  UInt_t shared[100]; 
  AliRefArray *refs[2][2] = {{0,0},{0,0}};
  if (fBuildRefs) {
    for (int il=2;il--;) 
      for (int it=2;it--;)  // tracklet_clusters->track references to stor
	if (fStoreRefs[il][it]) refs[il][it] = new AliRefArray(fNTracklets,0);
  }
  //
  for (int i=fNTracklets;i--;)  {
    float* tlInfo = fTracklets[i];
    fMult->SetTrackletData(i,tlInfo);
    //
    if (!fBuildRefs) continue; // do we need references?
    for (int itp=0;itp<2;itp++) {	
      for (int ilr=0;ilr<2;ilr++) {
	if (!fStoreRefs[ilr][itp]) continue; // nothing to store
	int clID = int(tlInfo[ilr ? kClID2:kClID1]);
	int nref = fUsedClusLay[ilr][itp]->GetReferences(clID,shared,100);
	if (!nref) continue;
	else if (nref==1) refs[ilr][itp]->AddReference(i,shared[0]);
	else refs[ilr][itp]->AddReferences(i,shared,nref);
      }
    }
  }
  if (fBuildRefs) fMult->AttachTracklet2TrackRefs(refs[0][0],refs[0][1],refs[1][0],refs[1][1]); 
  //
  AliRefArray *refsc[2] = {0,0};
  if (fBuildRefs) for (int it=2;it--;) if (fStoreRefs[0][it]) refsc[it] = new AliRefArray(fNClustersLay[0]);
  for (int i=fNSingleCluster;i--;) {
    float* clInfo = fSClusters[i];
    fMult->SetSingleClusterData(i,clInfo); 
    //
    if (!fBuildRefs) continue; // do we need references?
    int ilr = i>=(fNSingleCluster-fNSingleClusterSPD2) ? 1:0;
    int clID = int(clInfo[kSCID]);
    for (int itp=0;itp<2;itp++) {
      if (!fStoreRefs[ilr][itp]) continue;
      int nref = fUsedClusLay[ilr][itp]->GetReferences(clID,shared,100);
      if (!nref) continue;
      else if (nref==1) refsc[itp]->AddReference(i,shared[0]);
      else refsc[itp]->AddReferences(i,shared,nref);
    }
  }
  //
  if (fBuildRefs) fMult->AttachCluster2TrackRefs(refsc[0],refsc[1]); 
  fMult->CompactBits();
  //
}


//____________________________________________________________________
void AliITSMultReconstructor::LoadClusterArrays(TTree* tree, TTree* treeMix)
{
  // load cluster info and prepare tracklets arrays
  //
  if (AreClustersLoaded()) {AliInfo("Clusters are already loaded"); return;}
  LoadClusterArrays(tree,0);
  LoadClusterArrays(treeMix ? treeMix:tree,1);
  int nmaxT = TMath::Min(fNClustersLay[0], fNClustersLay[1]);
  if (fTracklets) delete[] fTracklets;
  fTracklets = new Float_t*[nmaxT];
  memset(fTracklets,0,nmaxT*sizeof(Float_t*));
  //
  if (fSClusters) delete[] fSClusters;
  int nSlots = GetStoreSPD2SingleCl() ? fNClustersLay[0]+fNClustersLay[1] : fNClustersLay[0];
  fSClusters = new Float_t*[nSlots]; 
  memset(fSClusters,0,nSlots*sizeof(Float_t*));
  //
  AliDebug(1,Form("(clusters in layer 1 : %d,  layer 2: %d)",fNClustersLay[0],fNClustersLay[1]));
  AliDebug(1,Form("(cluster-fired chips in layer 1 : %d,  layer 2: %d)",fNFiredChips[0],fNFiredChips[1]));
  SetClustersLoaded();
}

//____________________________________________________________________
void AliITSMultReconstructor::LoadClusterArrays(TTree* itsClusterTree, int il) 
{
  // This method
  // - gets the clusters from the cluster tree for layer il
  // - 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,Form("Loading clusters and cluster-fired chips for layer %d",il));
  //
  fNClustersLay[il] = 0;
  fNFiredChips[il]  = 0;
  for (int i=2;i--;) fStoreRefs[il][i] = kFALSE;
  //
  AliITSRecPointContainer* rpcont = 0;
  static TClonesArray statITSrec("AliITSRecPoint");
  static TObjArray clArr(100);
  TBranch* branch = 0;
  TClonesArray* itsClusters = 0;
  //
  if (!fCreateClustersCopy) {
    rpcont=AliITSRecPointContainer::Instance();
    itsClusters = rpcont->FetchClusters(0,itsClusterTree);
    if(!rpcont->IsSPDActive()){
      AliWarning("No SPD rec points found, multiplicity not calculated");
      return;
    } 
  }
  else {
    itsClusters = &statITSrec;
    branch = itsClusterTree->GetBranch("ITSRecPoints");
    branch->SetAddress(&itsClusters);
    if (!fClArr[il]) fClArr[il] = new TClonesArray("AliITSRecPoint",100);
    delete[] fClusterCopyIndex[il];
  }    
  //
  // count clusters
  // loop over the SPD subdetectors
  int nclLayer = 0;
  int detMin = TMath::Max(0,AliITSgeomTGeo::GetModuleIndex(il+1,1,1));
  int detMax = AliITSgeomTGeo::GetModuleIndex(il+2,1,1);
  for (int idt=detMin;idt<detMax;idt++) {
    if (!fCreateClustersCopy) itsClusters = rpcont->UncheckedGetClusters(idt);
    else                      branch->GetEvent(idt); 
    int nClusters = itsClusters->GetEntriesFast();
    if (!nClusters) continue;
    Int_t nClustersInChip[5] = {0,0,0,0,0};
    while(nClusters--) {
      AliITSRecPoint* cluster = (AliITSRecPoint*)itsClusters->UncheckedAt(nClusters);
      if (!cluster) continue;
      if (fCreateClustersCopy) 	cluster = new ((*fClArr[il])[nclLayer]) AliITSRecPoint(*cluster);
      clArr.AddAtAndExpand(cluster,nclLayer++);
      Int_t chipNo = fSPDSeg.GetChipFromLocal(0,cluster->GetDetLocalZ());
      if(chipNo>=0)nClustersInChip[ chipNo ]++; 
    }
    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];
  if (fCreateClustersCopy) fClusterCopyIndex[il] = new Int_t[nclLayer];
  //
  for (int ic=0;ic<nclLayer;ic++) {
    AliITSRecPoint* cluster = (AliITSRecPoint*)clArr[index[ic]];
    float* clPar = &clustersLay[ic*kClNPar];
    //      
    cluster->GetGlobalXYZ( clPar );
    detectorIndexClustersLay[ic] = cluster->GetDetectorIndex(); 
    overlapFlagClustersLay[ic]   = kFALSE;
    for (Int_t i=3;i--;) clPar[kClMC0+i] = cluster->GetLabel(i);
    if (fCreateClustersCopy) fClusterCopyIndex[il][ic] = index[ic];
  }
  clArr.Clear();
  delete[] z;
  delete[] index;
  //
  if (fOverlapFlagClustersLay[il]) delete[] fOverlapFlagClustersLay[il];
  fOverlapFlagClustersLay[il]   = overlapFlagClustersLay;
  //
  if (fDetectorIndexClustersLay[il]) delete[] fDetectorIndexClustersLay[il]; 
  fDetectorIndexClustersLay[il] = detectorIndexClustersLay;
  //
  if (fBuildRefs) {
    for (int it=0;it<2;it++) {
      if (fUsedClusLay[il][it]) delete fUsedClusLay[il][it];
      fUsedClusLay[il][it] = new AliRefArray(nclLayer);
    }
  }
  //
  if (fClustersLay[il]) delete[] fClustersLay[il]; 
  fClustersLay[il] = clustersLay;
  fNClustersLay[il] = nclLayer;
  //
}

//____________________________________________________________________
void AliITSMultReconstructor::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;
  
  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;
    Int_t ladder=0;
    Int_t det=0;
    AliITSgeomTGeo::GetModuleId(iIts,layer,ladder,det);
    --layer;  // layer is from 1 to 6 in AliITSgeomTGeo, but from 0 to 5 here
    if(layer<0 || layer >1)continue;
    
    // loop over clusters
    while(nClusters--) {
      AliITSRecPoint* cluster = (AliITSRecPoint*)itsClusters->UncheckedAt(nClusters);
          
      // find the chip for the current cluster
      Float_t locz = cluster->GetDetLocalZ();
      Int_t iChip = fSPDSeg.GetChipFromLocal(0,locz);
      if (iChip>=0) nClustersInChip[iChip]++; 
      
    }// end of cluster loop

    // 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
AliITSMultReconstructor::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 AliITSMultReconstructor::FlagClustersInOverlapRegions (Int_t iC1, Int_t iC2WithBestDist) 
{
  // Flags clusters in the overlapping regions
  Float_t distClSameMod=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<fNClustersLay[0]; iiC1++) {
    if (!fOverlapFlagClustersLay[0][iiC1]) {
      // only for adjacent modules
      if ((TMath::Abs(fDetectorIndexClustersLay[0][iC1]-fDetectorIndexClustersLay[0][iiC1])==4)||
         (TMath::Abs(fDetectorIndexClustersLay[0][iC1]-fDetectorIndexClustersLay[0][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.) fOverlapFlagClustersLay[0][iiC1]=kTRUE;

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


  distClSameMod=0.;
  // Loop on outer layer clusters
  for (Int_t iiC2=0; iiC2<fNClustersLay[1]; iiC2++) {
    if (!fOverlapFlagClustersLay[1][iiC2]) {
      // only for adjacent modules
      Float_t *clPar2 = GetClusterLayer2(iiC2);
      if ((TMath::Abs(fDetectorIndexClustersLay[1][iC2WithBestDist]-fDetectorIndexClustersLay[1][iiC2])==4) ||
         (TMath::Abs(fDetectorIndexClustersLay[1][iC2WithBestDist]-fDetectorIndexClustersLay[1][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.) fOverlapFlagClustersLay[1][iiC2]=kTRUE;

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

}

//____________________________________________________________________
void AliITSMultReconstructor::InitAux()
{
  // init arrays/parameters for tracklet reconstruction
  
  // 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 AliITSMultReconstructor.");
  }
  else bz = TMath::Abs(field->SolenoidField());
  fDPhiShift = fPhiShift / 5 * bz; 
  AliDebug(1, Form("Using phi shift of %f", fDPhiShift));
  //
  if (fPartners) delete[] fPartners; fPartners = new Int_t[fNClustersLay[1]];
  if (fMinDists) delete[] fMinDists; fMinDists = new Float_t[fNClustersLay[1]];
  if (fAssociatedLay1) delete[] fAssociatedLay1; fAssociatedLay1 = new Int_t[fNClustersLay[0]];
  //
  if (fBlackList) delete fBlackList; fBlackList = new AliRefArray(fNClustersLay[0]);
  //
  //  Printf("Vertex in find tracklets...%f %f %f",vtx[0],vtx[1],vtx[2]);
  for (Int_t i=0; i<fNClustersLay[1]; i++) {
    fPartners[i] = -1;
    fMinDists[i] = 2*fNStdDev;
  }
  memset(fAssociatedLay1,0,fNClustersLay[0]*sizeof(Int_t));
  //
}

//____________________________________________________________________
void AliITSMultReconstructor::ClusterPos2Angles(const Float_t *vtx)
{
  // convert cluster coordinates to angles wrt vertex
  for (int ilr=0;ilr<2;ilr++) {
    for (Int_t iC=0; iC<fNClustersLay[ilr]; iC++) {    
      float* clPar = GetClusterOfLayer(ilr,iC);
      CalcThetaPhi(clPar[kClTh]-vtx[0],clPar[kClPh]-vtx[1],clPar[kClZ]-vtx[2],clPar[kClTh],clPar[kClPh]);
      if (ilr==0) {
	clPar[kClPh] = clPar[kClPh] + fPhiRotationAngle;   // rotation of inner layer for comb studies  
	if (fHistOn) {
	  Float_t eta = clPar[kClTh];
	  eta= TMath::Tan(eta/2.);
	  eta=-TMath::Log(eta);
	  fhetaClustersLay1->Fill(eta);    
	  fhphiClustersLay1->Fill(clPar[kClPh]);
	}
      }      
    }
  }
  //
}

//____________________________________________________________________
Int_t AliITSMultReconstructor::AssociateClusterOfL1(Int_t iC1)
{
  // search association of cluster iC1 of L1 with all clusters of L2
  if (fAssociatedLay1[iC1] != 0) return 0;
  Int_t  iC2WithBestDist = -1;   // reset
  Double_t minDist       =  2*fNStdDev;   // reset
  float* clPar1 = GetClusterLayer1(iC1);
  for (Int_t iC2=0; iC2<fNClustersLay[1]; iC2++) {
    //
    if (fBlackList->IsReferred(iC1,iC2)) continue;
    float* clPar2 = GetClusterLayer2(iC2);
    //
    // 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  dephi %f", dTheta,dPhi);
    //
    if (dPhi>TMath::Pi()) dPhi=2.*TMath::Pi()-dPhi;     // take into account boundary condition
    //
    if (fHistOn) {
      fhClustersDPhiAll->Fill(dPhi);
      fhClustersDThetaAll->Fill(dTheta);    
      fhDPhiVsDThetaAll->Fill(dTheta, dPhi);
    }
    Float_t d = CalcDist(dPhi,clPar2[kClTh] - clPar1[kClTh],clPar1[kClTh]);     // make "elliptical" cut in Phi and Theta! 
    // look for the minimum distance: the minimum is in iC2WithBestDist
    if (d<fNStdDev && d<minDist) { minDist=d; iC2WithBestDist = iC2; }
  }
  //
  if (minDist<fNStdDev) { // This means that a cluster in layer 2 was found that matches with iC1
    //
    if (fMinDists[iC2WithBestDist] > minDist) {
      Int_t oldPartner = fPartners[iC2WithBestDist];
      fPartners[iC2WithBestDist] = iC1;
      fMinDists[iC2WithBestDist] = minDist;
      //
      fAssociatedLay1[iC1] = 1;      // mark as assigned
      //
      if (oldPartner != -1) {
	// redo partner search for cluster in L0 (oldPartner), putting this one (iC2WithBestDist) on its fBlackList
	fBlackList->AddReference(oldPartner,iC2WithBestDist);
	fAssociatedLay1[oldPartner] = 0;       // mark as free   
      }
    } else {
      // try again to find a cluster without considering iC2WithBestDist 
      fBlackList->AddReference(iC1,iC2WithBestDist);
    } 
    //
  }
  else fAssociatedLay1[iC1] = 2;// cluster has no partner; remove
  //
  return 1;
}

//____________________________________________________________________
Int_t AliITSMultReconstructor::StoreTrackletForL2Cluster(Int_t iC2)
{
  // build tracklet for cluster iC2 of layer 2
  if (fPartners[iC2] == -1) return 0;
  if (fRemoveClustersFromOverlaps) FlagClustersInOverlapRegions (fPartners[iC2],iC2);
  // Printf("saving tracklets");
  if (fOverlapFlagClustersLay[0][fPartners[iC2]] || fOverlapFlagClustersLay[1][iC2]) return 0;
  float* clPar2 = GetClusterLayer2(iC2);
  float* clPar1 = GetClusterLayer1(fPartners[iC2]);
  //
  Float_t* tracklet = fTracklets[fNTracklets] = new Float_t[kTrNPar]; // RS Add also the cluster id's
  //
  tracklet[kTrTheta] = clPar1[kClTh];    // use the theta from the clusters in the first layer
  tracklet[kTrPhi]   = clPar1[kClPh];    // use the phi from the clusters in the first layer
  tracklet[kTrDPhi] = clPar1[kClPh] - clPar2[kClPh];  // store the difference between phi1 and phi2
  //
  // 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();
  //
  tracklet[kTrDTheta] = clPar1[kClTh] - clPar2[kClTh]; // store the theta1-theta2
  //
  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,label2=0;
  while (label2 < 3) {
    if ( int(clPar1[kClMC0+label1])!=-2 && int(clPar1[kClMC0+label1])==int(clPar2[kClMC0+label2])) break;
    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] = tracklet[kTrLab2] = clPar1[kClMC0+label1];
  } 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] = fPartners[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", fPartners[iC2], iC2));
  fNTracklets++;
  fAssociatedLay1[fPartners[iC2]] = 1;
  // 
  return 1;
}

//____________________________________________________________________
void AliITSMultReconstructor::StoreL1Singles()
{
  // Printf("saving single clusters...");
  for (Int_t iC1=0; iC1<fNClustersLay[0]; iC1++) {
    float* clPar1 = GetClusterLayer1(iC1);
    if (fAssociatedLay1[iC1]==2||fAssociatedLay1[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++;
    }
  }
  //
  if (GetStoreSPD2SingleCl()) {
    for (Int_t iC2=0; iC2<fNClustersLay[1]; iC2++) {
      if (fPartners[iC2]<0 || (fOverlapFlagClustersLay[0][fPartners[iC2]] || fOverlapFlagClustersLay[1][iC2])) {
	float* clPar2 = GetClusterLayer2(iC2);
	fSClusters[fNSingleCluster] = new Float_t[kClNPar];
	fSClusters[fNSingleCluster][kSCTh] = clPar2[kClTh];
	fSClusters[fNSingleCluster][kSCPh] = clPar2[kClPh];
	fSClusters[fNSingleCluster][kSCLab] = clPar2[kClMC0]; 
	fSClusters[fNSingleCluster][kSCID] = iC2;
	AliDebug(1,Form(" Adding a single cluster %d (cluster %d  of layer 2)",
			fNSingleCluster, iC2));
	fNSingleCluster++;
	fNSingleClusterSPD2++;
      }
    }
  }
  //
}

//____________________________________________________________________
void AliITSMultReconstructor::ProcessESDTracks()
{
  // Flag the clusters used by ESD tracks
  // Flag primary tracks to be used for multiplicity counting 
  //
  if (!fESDEvent || !fBuildRefs) 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 AliITSMultReconstructor::FlagTrackClusters(Int_t id)
{
  // RS: flag the SPD clusters of the track if it is useful for the multiplicity estimation
  //
  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
  Int_t itsType = track->IsOn(AliESDtrack::kITSpureSA) ? 1:0;
  
  for (int i=6/*AliESDfriendTrack::kMaxITScluster*/;i--;) { // ignore extras: 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);
    fUsedClusLay[layID][itsType]->AddReference(clID,id);
    fStoreRefs[layID][itsType] = kTRUE;
  }
  //
}

//____________________________________________________________________
void AliITSMultReconstructor::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 AliITSMultReconstructor::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 AliITSMultReconstructor::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;
  //
}

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