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


///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// ANALYSIS task to perrorm TPC calibration                                  //

//                                                                           //
///////////////////////////////////////////////////////////////////////////////
#include "AliTrackComparisonESD.h"
#include "AliTrackComparison.h"
#include "TChain.h"
#include "AliESDEvent.h"
#include "AliESDfriend.h"
#include "AliESDVertex.h"
#include "AliESDtrack.h"
#include "AliESDfriendTrack.h"
#include "AliExternalTrackParam.h"
#include "AliTrackPointArray.h"
#include "AliESDtrackCuts.h"
#include "AliTracker.h"
#include "AliESDCaloCluster.h"
#include "AliESDInputHandler.h"
#include "AliAnalysisManager.h"
#include "AliEMCALGeometry.h"
#include "AliCalorimeterUtils.h"
#include "AliESDCaloCells.h"
#include "TFile.h"
#include "TSystem.h"
#include "TTimeStamp.h"
#include "AliHMPIDParam.h"
//#include <TGeoHMatrix>
#include "AliGeomManager.h"
#include "AliGRPManager.h"

using std::cout;
using std::endl;

ClassImp(AliTrackComparisonESD)

//________________________________________________________________________
AliTrackComparisonESD::AliTrackComparisonESD()
  :AliAnalysisTask(),
   fESD(0),
   fESDCuts(AliESDtrackCuts::GetStandardITSTPCTrackCuts2010()),
   fESDfriend(0),
   fCurrentRun(-1),
   fDebugOutputPath(""),
   fOutput(0),
   fEMCAL(0),
   fHMPID(0),
   fTOF(0),
   fGeom(0),
   fCutR(20),
   fCaloUtil(0)
{
  //
  // default constructor
  // 
  for(Int_t i=0; i<4; i++) fTransMatrix[i]=0;
  
}

//________________________________________________________________________
AliTrackComparisonESD::AliTrackComparisonESD(const char *name) 
  :AliAnalysisTask(name,""),
   fESD(0),
   fESDCuts(AliESDtrackCuts::GetStandardITSTPCTrackCuts2010()),
   fESDfriend(0),
   fCurrentRun(-1),
   fDebugOutputPath(""),
   fOutput(0),
   fEMCAL(0),
   fHMPID(0),
   fTOF(0),
   fGeom(0),
   fCutR(20),
   fCaloUtil(0)
{
  //
  // Constructor
  //
  DefineInput(0, TChain::Class());
  DefineOutput(0, TObjArray::Class());

  for(Int_t i=0; i<4; i++) fTransMatrix[i]=0;
}

//________________________________________________________________________
AliTrackComparisonESD::~AliTrackComparisonESD() {
  //
  // destructor
  //
  printf("AliTrackComparisonESD::~AliTrackComparisonESD");

  if(fEMCAL)  delete fEMCAL;  fEMCAL=0;
  if(fHMPID)  delete fHMPID;  fHMPID=0;
  if(fTOF)    delete fTOF;    fTOF=0;
  if(fOutput) fOutput->Delete();
  //if(fOutput) delete fOutput;
  if(fCaloUtil) delete fCaloUtil; fCaloUtil=0;
  for(Int_t i=0; i<4; i++)
    {
      if(fTransMatrix[i]) {delete fTransMatrix[i];fTransMatrix[i]=0;}
    }
}

//________________________________________________________________________
void AliTrackComparisonESD::ConnectInputData(Option_t *) {
  //
  //
  //
  TTree* tree=dynamic_cast<TTree*>(GetInputData(0));
  if (!tree) {
    //Printf("ERROR: Could not read chain from input slot 0");
  } 
  else {
    AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
    if (!esdH) {
      //Printf("ERROR: Could not get ESDInputHandler");
    } 
    else {
      //esdH->SetReadFriends(kTRUE);
      //esdH->SetActiveBranches("ESDfriend");
      fESD = esdH->GetEvent();
      //Printf("*** CONNECTED NEW EVENT ****");
    }
  }

}

//________________________________________________________________________
void AliTrackComparisonESD::CreateOutputObjects() {
  //
  //
  //
  //OpenFile(0, "RECREATE");
  TFile *ftmp = OpenFile(0);
  if(!ftmp)AliError(Form("File %s not found!",ftmp->GetName()));
  fOutput=new TObjArray(0);
  fOutput->SetOwner(kTRUE);

  fEMCAL = new AliTrackComparison("EMCAL","EMCAL");
  fEMCAL->SetLayerID(20);
  fEMCAL->SetFillAll(kFALSE);
  fEMCAL->Init();
  fHMPID = new AliTrackComparison("HMPID","HMPID");
  fHMPID->SetRangeDY(-5,5);
  fHMPID->SetRangeDZ(-5,5);
  fHMPID->SetLayerID(18);
  fHMPID->SetFillAll(kFALSE);
  fHMPID->Init();
  fTOF   = new AliTrackComparison("TOF","TOF");
  fTOF->SetRangeDY(-5,5);
  fTOF->SetRange1Pt(-1,1);
  fTOF->SetLayerID(15);
  fTOF->SetFillAll(kFALSE);
  fTOF->Init();

  fOutput->Add(fEMCAL);
  fOutput->Add(fHMPID);
  fOutput->Add(fTOF);

  Double_t rotationMatrix[4][9] = {{-0.014587, -0.999892, -0.002031, 0.999892, -0.014591,  0.001979, -0.002009, -0.002002,  0.999996},
				   {-0.014587,  0.999892,  0.002031, 0.999892,  0.014591, -0.001979, -0.002009,  0.002002, -0.999996},
				   {-0.345864, -0.938278, -0.003412, 0.938276, -0.345874,  0.003010, -0.004004, -0.002161,  0.999990},
				   {-0.345864,  0.938278,  0.003412, 0.938276,  0.345874, -0.003010, -0.004004,  0.002161, -0.999990}};

  Double_t translationMatrix[4][3] = {{0.351659, 447.576446,  176.269742},
				      {1.062577, 446.893974, -173.728870},
				      {-154.213287, 419.306156,  176.753692},
				      {-153.018950, 418.623681, -173.243605}};
  for(Int_t imx=0; imx<4; imx++)
    {
      fTransMatrix[imx] = new TGeoHMatrix();
      fTransMatrix[imx]->SetRotation(rotationMatrix[imx]);
      fTransMatrix[imx]->SetTranslation(translationMatrix[imx]);
      fTransMatrix[imx]->Print();
    }


  fCaloUtil = new AliCalorimeterUtils();
  InitCaloUtil();


  PostData(0,fOutput);
}

//________________________________________________________________________
Bool_t AliTrackComparisonESD::SetupEvent() {
  //
  // Setup Event
  //
  // check if something to be done

  if(!fESD)
    return kFALSE;

  if (fCurrentRun == fESD->GetRunNumber())
    return kTRUE;
  else
    fCurrentRun = fESD->GetRunNumber();

  return kTRUE;
}

//________________________________________________________________________
void AliTrackComparisonESD::Exec(Option_t *) {
  //
  // Exec function
  // Loop over tracks and call  Process function
  if (!fESD) {
    //Printf("ERROR: fESD not available");
    return;
  }

  if(!SetupEvent()) return;


  fESDfriend=static_cast<AliESDfriend*>(fESD->FindListObject("AliESDfriend"));
  if (!fESDfriend) {
    //Printf("ERROR: fESDfriend not available");
    return;
  }


  if ( fESDfriend->GetNumberOfTracks() <=0 ) {
    Printf("ERROR: fESDfriend Tracks not available");
    return;
  }


  //Get primary vertex
  const AliESDVertex *vertex = fESD->GetPrimaryVertex();
  if(!vertex) AliError("No primary vertex found!\n");
  Double_t vPos[3];
  vertex->GetXYZ(vPos);
  if(TMath::Abs(vPos[2])>7) return;

  
  //Get EMCAL clusters and cells
  TRefArray *clusters = new TRefArray();
  Int_t nclusters = fESD->GetEMCALClusters(clusters);
  AliESDCaloCells *cells = fESD->GetEMCALCells();
  //  RecalClusterPos(clusters,cells);
//   Float_t pos[3];
//   for(Int_t icl=0; icl<nclusters; icl++)
//     {
//       AliESDCaloCluster *cluster = (AliESDCaloCluster*) clusters->At(icl);
//       cluster->GetPosition(pos);
//       printf("cluster %d pass00 pos: (%5.3f,%5.3f,%5.3f,%5.3f)\n",icl,pos[0],pos[1],pos[2],TMath::Sqrt(pos[0]*pos[0]+pos[1]*pos[1]));
//     }



  //Loop over tracks
  Int_t ntracks = fESD->GetNumberOfTracks();
  for(Int_t itr=0; itr<ntracks; itr++)
    {
      AliESDtrack *track = fESD->GetTrack(itr);
      if(!track || !fESDCuts->AcceptTrack(track)) continue;

      AliESDfriendTrack *friendTrack = fESDfriend->GetTrack(itr);
      if(!friendTrack) continue;
      //printf(" --- %d < %d || %p | %p -- %p \n", itr, fESDfriend->GetNumberOfTracks(), track, fESDfriend, friendTrack);
      ProcessTOF(track,friendTrack,vPos);
      if(nclusters>0)ProcessEMCAL(track,friendTrack,clusters,cells,vPos);
      ProcessHMPID(track,friendTrack,vPos);
    }//End of track loop

  delete clusters;
  PostData(0,fOutput);
}

//________________________________________________________________________
void AliTrackComparisonESD::ProcessTOF(AliESDtrack *track, AliESDfriendTrack *friendTrack, Double_t *vPos){
  //
  // Process TPC-TOF extrapolation
  //

  //printf("Enter function!\n");
  if (track->GetTOFsignal()<=0)  return;
  if (!friendTrack) return;
  if (!friendTrack->GetTPCOut()) return;

  AliExternalTrackParam *pTPC = const_cast<AliExternalTrackParam*>(friendTrack->GetTPCOut());
  if(!pTPC) return;

  const AliTrackPointArray *points=friendTrack->GetTrackPointArray();
  if (!points) return;
  Int_t npoints = points->GetNPoints();
  if(npoints>1000) return; //the default value is more than 30000, why not -1???
  AliTrackPoint point;
  //
  Int_t counter=0;
  for (Int_t ipoint=0;ipoint<npoints;ipoint++){
    if(!points->GetPoint(point,ipoint)) continue;
    if(AliGeomManager::VolUIDToLayer(point.GetVolumeID())==AliGeomManager::kTOF)
      {
	counter++;
	fTOF->AddTracks(pTPC,&point,track->GetMass(),track->P(),vPos);
      }
  }
  //Printf("# of track points in TOF: %d!\n",counter);
  return;
}

//________________________________________________________________________
void AliTrackComparisonESD::ProcessEMCAL(AliESDtrack *track, AliESDfriendTrack *friendTrack, TRefArray *clusters, AliESDCaloCells *cells, Double_t *vPos){
  if(clusters->GetEntriesFast()==0) return;

  Double_t rEMCal = 438;
  Double_t tmp=fCutR;
  Int_t clsIndex=-1;
  TVector3 clsV,trkV;

  AliExternalTrackParam *pTPC = const_cast<AliExternalTrackParam*>(friendTrack->GetTPCOut());
  if(!pTPC) return;

  Double_t trPos[3];
  Float_t clPos[3];
  AliExternalTrackParam *pTest = new AliExternalTrackParam(*pTPC);
  if(!AliTracker::PropagateTrackToBxByBz(pTest, rEMCal , track->GetMass(), 1 , kFALSE,0.99,-1)) return;
  if(!pTest->GetXYZ(trPos)) return;

  Double_t trPhi = TMath::ATan2(trPos[1],trPos[0])*TMath::RadToDeg();
  //printf("trPhi = %5.3f | eta = %5.3f\n",trPhi,pTest->Eta());
  if(trPhi<80 || trPhi>120) return;
  if(TMath::Abs(pTest->Eta())>0.7) return;

  AliExternalTrackParam *p0=0;
  AliTrackPoint *p1=new AliTrackPoint();
  Int_t nclusters = clusters->GetEntries();
  for(Int_t icl=0; icl<nclusters; icl++)
    {
      AliESDCaloCluster *cluster = (AliESDCaloCluster*) clusters->At(icl);
      if(!cluster) continue;
      if(fCaloUtil->ClusterContainsBadChannel("EMCAL",cluster->GetCellsAbsId(),cluster->GetNCells()) ) continue;
      if(!fCaloUtil->CheckCellFiducialRegion(cluster,cells,NULL,0) ) continue;

      cluster->GetPosition(clPos);
      p0 = pTPC;
      clsV.SetXYZ(clPos[0],clPos[1],clPos[2]);
      Double_t alpha = ((int)(clsV.Phi()*TMath::RadToDeg()/20)+0.5)*20*TMath::DegToRad();
      clsV.RotateZ(-alpha);
      p0->Rotate(alpha);
      if(!AliTrackerBase::PropagateTrackToBxByBz(p0,clsV.X(), track->GetMass(), 1,kFALSE,0.99,-1)) continue;
      trkV.SetXYZ(p0->GetX(),p0->GetY(),p0->GetZ());
      Double_t dist = TMath::Sqrt( TMath::Power(clsV.X()-trkV.X(),2)+TMath::Power(clsV.Y()-trkV.Y(),2)+TMath::Power(clsV.Z()-trkV.Z(),2) );
      if(dist<tmp)
	{                
	  tmp=dist;
	  clsIndex=icl;
	}
    }
      
  if(clsIndex==-1) return;
  AliESDCaloCluster *cluster = (AliESDCaloCluster*) clusters->At(clsIndex);
  cluster->GetPosition(clPos);
  //printf("cluster pos: (%5.3f,%5.3f,%5.3f,%5.3f)\n",clPos[0],clPos[1],clPos[2],TMath::Sqrt(clPos[0]*clPos[0]+clPos[1]*clPos[1]));
  p1->SetXYZ(clPos[0],clPos[1],clPos[2],0);
  //printf("Found EMCAL point!\n");
  fEMCAL->AddTracks(pTPC,p1,track->GetMass(),track->P(),vPos);


  delete pTest;
  delete p1;
  return;
}

//________________________________________________________________________
void AliTrackComparisonESD::ProcessHMPID(AliESDtrack *track, AliESDfriendTrack *friendTrack, Double_t *vPos){
  //
  // Process TPC-TOF extrapolation
  //
  if (track->GetHMPIDsignal()<=0)  return;

  AliExternalTrackParam *pTPC = const_cast<AliExternalTrackParam*>(friendTrack->GetTPCOut());
  if(!pTPC) return;

  Int_t q, nph, ch;
  Float_t x, y;
  track->GetHMPIDmip(x,y,q,nph);
  Double_t pHmp[3]={0}, pHmp3=0;
  if (track->GetOuterHmpPxPyPz(pHmp)) 
    pHmp3 = TMath::Sqrt(pHmp[0]*pHmp[0]+pHmp[1]*pHmp[1]+pHmp[2]*pHmp[2]);

  ch = track->GetHMPIDcluIdx()/1000000;

  AliHMPIDParam *pParam = AliHMPIDParam::Instance(); 
  TVector3 vG = pParam->Lors2Mars(ch,x,y);

  AliTrackPoint *p1 = new AliTrackPoint();
  p1->SetXYZ(vG.X(),vG.Y(),vG.Z());
  //printf("Found HMPID point!\n");
  fHMPID->AddTracks(pTPC,p1,track->GetMass(),pHmp3,vPos);
  delete p1;
  return;
}


//________________________________________________________________________
void AliTrackComparisonESD::RecalClusterPos(TRefArray *clusters, AliESDCaloCells *cells){
  //
  //
  //
  Double_t iLocal[3], iGlobal[3];
  Float_t cPos[3];
  //Float_t pos[3];
  Int_t nclusters = clusters->GetEntries();
  for(Int_t icl=0; icl<nclusters; icl++)
    {
      AliESDCaloCluster *cluster = (AliESDCaloCluster*) clusters->At(icl);
      UShort_t *absId = cluster->GetCellsAbsId();
      Int_t nCells = cluster->GetNCells();
      for(Int_t i=0;i<3;i++)cPos[i]=0;
      Double_t wTot=0;
      for(Int_t iCell=0; iCell<nCells; iCell++)
	{
	  Double_t cellEnergy = cells->GetCellAmplitude(absId[iCell]);
	  Double_t dist = 1.31*(log(cluster->E())+4.82+0.5);
	  fGeom->RelPosCellInSModule(absId[iCell],dist,iLocal[0],iLocal[1],iLocal[2]);
	  //fGeom->GetGlobal(iLocal,iGlobal,fGeom->GetSuperModuleNumber(absId[iCell]));
	  Int_t sm = fGeom->GetSuperModuleNumber(absId[iCell]);
	  //matrix[sm]->Print();
	  //cout<<"sm = "<<sm<<endl;
	  fTransMatrix[sm]->LocalToMaster(iLocal,iGlobal);

	  Double_t w = TMath::Max( 0., 4.5 + TMath::Log( cellEnergy / cluster->E() ));
	  if(w>0.0)
	    {
	      wTot += w;
	      for(Int_t i=0; i<3; i++ )
		  cPos[i] += (w*iGlobal[i]);
	    }
	}//End of cell loop   
      if(wTot>0)
	{
	  for(int i=0; i<3; i++ ) 
	    {
	      cPos[i] /= wTot;
	      cluster->SetPosition(cPos);
	    }
	}
      //cluster->GetPosition(pos);
      //printf("cluster %d pass10 pos: (%5.3f,%5.3f,%5.3f)\n",icl,pos[0],pos[1],pos[2]);
    }//End of cluster loop
}

//________________________________________________________________________
void AliTrackComparisonESD::Terminate(Option_t */*option*/) {
  //
  // Terminate
  //
  AliInfo("AliTrackComparisonESD::Terminate()\n");
  
}

//________________________________________________________________________
void AliTrackComparisonESD::FinishTaskOutput(){
  //
  // According description in AliAnalisysTask this method is call 
  // on the slaves before sending data
  //
  Terminate("slave");
  if(!fDebugOutputPath.IsNull()) { 
    RegisterDebugOutput();
  }
}

//________________________________________________________________________
Long64_t AliTrackComparisonESD::Merge(TCollection *li) {
  if(li) return 1;
  else return 1;
}

//________________________________________________________________________
void AliTrackComparisonESD::Analyze() {
  //
  // Analyze the content of the task
  //

}

//________________________________________________________________________
void AliTrackComparisonESD::RegisterDebugOutput(){
  //
  //
  //
}

//________________________________________________________________________
void AliTrackComparisonESD::InitCaloUtil(){
  cout<<"Initialize bad channel map!"<<endl;
  fCaloUtil->InitEMCALGeometry();
  fCaloUtil->SetNumberOfCellsFromEMCALBorder(1);
  //fCaloUtil->SetNumberOfCellsFromPHOSBorder(2);
  fCaloUtil->SwitchOnNoFiducialBorderInEMCALEta0();
  fCaloUtil->SwitchOnBadChannelsRemoval();  
  // SM0
  fCaloUtil->SetEMCALChannelStatus(0,3,13);
  fCaloUtil->SetEMCALChannelStatus(0,44,1); 
  fCaloUtil->SetEMCALChannelStatus(0,3,13);
  fCaloUtil->SetEMCALChannelStatus(0,20,7);  
  fCaloUtil->SetEMCALChannelStatus(0,38,2);
  // SM1
  fCaloUtil->SetEMCALChannelStatus(1,4,7);
  fCaloUtil->SetEMCALChannelStatus(1,4,13);  
  fCaloUtil->SetEMCALChannelStatus(1,9,20);
  fCaloUtil->SetEMCALChannelStatus(1,14,15);
  fCaloUtil->SetEMCALChannelStatus(1,23,16);
  fCaloUtil->SetEMCALChannelStatus(1,32,23);
  fCaloUtil->SetEMCALChannelStatus(1,37,5);
  fCaloUtil->SetEMCALChannelStatus(1,40,1);  
  fCaloUtil->SetEMCALChannelStatus(1,40,2);
  fCaloUtil->SetEMCALChannelStatus(1,40,5);
  fCaloUtil->SetEMCALChannelStatus(1,41,0);  
  fCaloUtil->SetEMCALChannelStatus(1,41,1);
  fCaloUtil->SetEMCALChannelStatus(1,41,2); 
  fCaloUtil->SetEMCALChannelStatus(1,41,4);
  // SM2
  fCaloUtil->SetEMCALChannelStatus(2,14,15);
  fCaloUtil->SetEMCALChannelStatus(2,18,16);
  fCaloUtil->SetEMCALChannelStatus(2,18,17);
  fCaloUtil->SetEMCALChannelStatus(2,18,18);
  fCaloUtil->SetEMCALChannelStatus(2,18,20);
  fCaloUtil->SetEMCALChannelStatus(2,18,21);
  fCaloUtil->SetEMCALChannelStatus(2,18,23);
  fCaloUtil->SetEMCALChannelStatus(2,19,16);
  fCaloUtil->SetEMCALChannelStatus(2,19,17);
  fCaloUtil->SetEMCALChannelStatus(2,19,19);
  fCaloUtil->SetEMCALChannelStatus(2,19,20);
  fCaloUtil->SetEMCALChannelStatus(2,19,21);
  fCaloUtil->SetEMCALChannelStatus(2,19,22);
  //SM3
  fCaloUtil->SetEMCALChannelStatus(3,4,7);
  
  fCaloUtil->Print("");
  cout<<"Done initialization!"<<endl;
}
 AliTrackComparisonESD.cxx:1
 AliTrackComparisonESD.cxx:2
 AliTrackComparisonESD.cxx:3
 AliTrackComparisonESD.cxx:4
 AliTrackComparisonESD.cxx:5
 AliTrackComparisonESD.cxx:6
 AliTrackComparisonESD.cxx:7
 AliTrackComparisonESD.cxx:8
 AliTrackComparisonESD.cxx:9
 AliTrackComparisonESD.cxx:10
 AliTrackComparisonESD.cxx:11
 AliTrackComparisonESD.cxx:12
 AliTrackComparisonESD.cxx:13
 AliTrackComparisonESD.cxx:14
 AliTrackComparisonESD.cxx:15
 AliTrackComparisonESD.cxx:16
 AliTrackComparisonESD.cxx:17
 AliTrackComparisonESD.cxx:18
 AliTrackComparisonESD.cxx:19
 AliTrackComparisonESD.cxx:20
 AliTrackComparisonESD.cxx:21
 AliTrackComparisonESD.cxx:22
 AliTrackComparisonESD.cxx:23
 AliTrackComparisonESD.cxx:24
 AliTrackComparisonESD.cxx:25
 AliTrackComparisonESD.cxx:26
 AliTrackComparisonESD.cxx:27
 AliTrackComparisonESD.cxx:28
 AliTrackComparisonESD.cxx:29
 AliTrackComparisonESD.cxx:30
 AliTrackComparisonESD.cxx:31
 AliTrackComparisonESD.cxx:32
 AliTrackComparisonESD.cxx:33
 AliTrackComparisonESD.cxx:34
 AliTrackComparisonESD.cxx:35
 AliTrackComparisonESD.cxx:36
 AliTrackComparisonESD.cxx:37
 AliTrackComparisonESD.cxx:38
 AliTrackComparisonESD.cxx:39
 AliTrackComparisonESD.cxx:40
 AliTrackComparisonESD.cxx:41
 AliTrackComparisonESD.cxx:42
 AliTrackComparisonESD.cxx:43
 AliTrackComparisonESD.cxx:44
 AliTrackComparisonESD.cxx:45
 AliTrackComparisonESD.cxx:46
 AliTrackComparisonESD.cxx:47
 AliTrackComparisonESD.cxx:48
 AliTrackComparisonESD.cxx:49
 AliTrackComparisonESD.cxx:50
 AliTrackComparisonESD.cxx:51
 AliTrackComparisonESD.cxx:52
 AliTrackComparisonESD.cxx:53
 AliTrackComparisonESD.cxx:54
 AliTrackComparisonESD.cxx:55
 AliTrackComparisonESD.cxx:56
 AliTrackComparisonESD.cxx:57
 AliTrackComparisonESD.cxx:58
 AliTrackComparisonESD.cxx:59
 AliTrackComparisonESD.cxx:60
 AliTrackComparisonESD.cxx:61
 AliTrackComparisonESD.cxx:62
 AliTrackComparisonESD.cxx:63
 AliTrackComparisonESD.cxx:64
 AliTrackComparisonESD.cxx:65
 AliTrackComparisonESD.cxx:66
 AliTrackComparisonESD.cxx:67
 AliTrackComparisonESD.cxx:68
 AliTrackComparisonESD.cxx:69
 AliTrackComparisonESD.cxx:70
 AliTrackComparisonESD.cxx:71
 AliTrackComparisonESD.cxx:72
 AliTrackComparisonESD.cxx:73
 AliTrackComparisonESD.cxx:74
 AliTrackComparisonESD.cxx:75
 AliTrackComparisonESD.cxx:76
 AliTrackComparisonESD.cxx:77
 AliTrackComparisonESD.cxx:78
 AliTrackComparisonESD.cxx:79
 AliTrackComparisonESD.cxx:80
 AliTrackComparisonESD.cxx:81
 AliTrackComparisonESD.cxx:82
 AliTrackComparisonESD.cxx:83
 AliTrackComparisonESD.cxx:84
 AliTrackComparisonESD.cxx:85
 AliTrackComparisonESD.cxx:86
 AliTrackComparisonESD.cxx:87
 AliTrackComparisonESD.cxx:88
 AliTrackComparisonESD.cxx:89
 AliTrackComparisonESD.cxx:90
 AliTrackComparisonESD.cxx:91
 AliTrackComparisonESD.cxx:92
 AliTrackComparisonESD.cxx:93
 AliTrackComparisonESD.cxx:94
 AliTrackComparisonESD.cxx:95
 AliTrackComparisonESD.cxx:96
 AliTrackComparisonESD.cxx:97
 AliTrackComparisonESD.cxx:98
 AliTrackComparisonESD.cxx:99
 AliTrackComparisonESD.cxx:100
 AliTrackComparisonESD.cxx:101
 AliTrackComparisonESD.cxx:102
 AliTrackComparisonESD.cxx:103
 AliTrackComparisonESD.cxx:104
 AliTrackComparisonESD.cxx:105
 AliTrackComparisonESD.cxx:106
 AliTrackComparisonESD.cxx:107
 AliTrackComparisonESD.cxx:108
 AliTrackComparisonESD.cxx:109
 AliTrackComparisonESD.cxx:110
 AliTrackComparisonESD.cxx:111
 AliTrackComparisonESD.cxx:112
 AliTrackComparisonESD.cxx:113
 AliTrackComparisonESD.cxx:114
 AliTrackComparisonESD.cxx:115
 AliTrackComparisonESD.cxx:116
 AliTrackComparisonESD.cxx:117
 AliTrackComparisonESD.cxx:118
 AliTrackComparisonESD.cxx:119
 AliTrackComparisonESD.cxx:120
 AliTrackComparisonESD.cxx:121
 AliTrackComparisonESD.cxx:122
 AliTrackComparisonESD.cxx:123
 AliTrackComparisonESD.cxx:124
 AliTrackComparisonESD.cxx:125
 AliTrackComparisonESD.cxx:126
 AliTrackComparisonESD.cxx:127
 AliTrackComparisonESD.cxx:128
 AliTrackComparisonESD.cxx:129
 AliTrackComparisonESD.cxx:130
 AliTrackComparisonESD.cxx:131
 AliTrackComparisonESD.cxx:132
 AliTrackComparisonESD.cxx:133
 AliTrackComparisonESD.cxx:134
 AliTrackComparisonESD.cxx:135
 AliTrackComparisonESD.cxx:136
 AliTrackComparisonESD.cxx:137
 AliTrackComparisonESD.cxx:138
 AliTrackComparisonESD.cxx:139
 AliTrackComparisonESD.cxx:140
 AliTrackComparisonESD.cxx:141
 AliTrackComparisonESD.cxx:142
 AliTrackComparisonESD.cxx:143
 AliTrackComparisonESD.cxx:144
 AliTrackComparisonESD.cxx:145
 AliTrackComparisonESD.cxx:146
 AliTrackComparisonESD.cxx:147
 AliTrackComparisonESD.cxx:148
 AliTrackComparisonESD.cxx:149
 AliTrackComparisonESD.cxx:150
 AliTrackComparisonESD.cxx:151
 AliTrackComparisonESD.cxx:152
 AliTrackComparisonESD.cxx:153
 AliTrackComparisonESD.cxx:154
 AliTrackComparisonESD.cxx:155
 AliTrackComparisonESD.cxx:156
 AliTrackComparisonESD.cxx:157
 AliTrackComparisonESD.cxx:158
 AliTrackComparisonESD.cxx:159
 AliTrackComparisonESD.cxx:160
 AliTrackComparisonESD.cxx:161
 AliTrackComparisonESD.cxx:162
 AliTrackComparisonESD.cxx:163
 AliTrackComparisonESD.cxx:164
 AliTrackComparisonESD.cxx:165
 AliTrackComparisonESD.cxx:166
 AliTrackComparisonESD.cxx:167
 AliTrackComparisonESD.cxx:168
 AliTrackComparisonESD.cxx:169
 AliTrackComparisonESD.cxx:170
 AliTrackComparisonESD.cxx:171
 AliTrackComparisonESD.cxx:172
 AliTrackComparisonESD.cxx:173
 AliTrackComparisonESD.cxx:174
 AliTrackComparisonESD.cxx:175
 AliTrackComparisonESD.cxx:176
 AliTrackComparisonESD.cxx:177
 AliTrackComparisonESD.cxx:178
 AliTrackComparisonESD.cxx:179
 AliTrackComparisonESD.cxx:180
 AliTrackComparisonESD.cxx:181
 AliTrackComparisonESD.cxx:182
 AliTrackComparisonESD.cxx:183
 AliTrackComparisonESD.cxx:184
 AliTrackComparisonESD.cxx:185
 AliTrackComparisonESD.cxx:186
 AliTrackComparisonESD.cxx:187
 AliTrackComparisonESD.cxx:188
 AliTrackComparisonESD.cxx:189
 AliTrackComparisonESD.cxx:190
 AliTrackComparisonESD.cxx:191
 AliTrackComparisonESD.cxx:192
 AliTrackComparisonESD.cxx:193
 AliTrackComparisonESD.cxx:194
 AliTrackComparisonESD.cxx:195
 AliTrackComparisonESD.cxx:196
 AliTrackComparisonESD.cxx:197
 AliTrackComparisonESD.cxx:198
 AliTrackComparisonESD.cxx:199
 AliTrackComparisonESD.cxx:200
 AliTrackComparisonESD.cxx:201
 AliTrackComparisonESD.cxx:202
 AliTrackComparisonESD.cxx:203
 AliTrackComparisonESD.cxx:204
 AliTrackComparisonESD.cxx:205
 AliTrackComparisonESD.cxx:206
 AliTrackComparisonESD.cxx:207
 AliTrackComparisonESD.cxx:208
 AliTrackComparisonESD.cxx:209
 AliTrackComparisonESD.cxx:210
 AliTrackComparisonESD.cxx:211
 AliTrackComparisonESD.cxx:212
 AliTrackComparisonESD.cxx:213
 AliTrackComparisonESD.cxx:214
 AliTrackComparisonESD.cxx:215
 AliTrackComparisonESD.cxx:216
 AliTrackComparisonESD.cxx:217
 AliTrackComparisonESD.cxx:218
 AliTrackComparisonESD.cxx:219
 AliTrackComparisonESD.cxx:220
 AliTrackComparisonESD.cxx:221
 AliTrackComparisonESD.cxx:222
 AliTrackComparisonESD.cxx:223
 AliTrackComparisonESD.cxx:224
 AliTrackComparisonESD.cxx:225
 AliTrackComparisonESD.cxx:226
 AliTrackComparisonESD.cxx:227
 AliTrackComparisonESD.cxx:228
 AliTrackComparisonESD.cxx:229
 AliTrackComparisonESD.cxx:230
 AliTrackComparisonESD.cxx:231
 AliTrackComparisonESD.cxx:232
 AliTrackComparisonESD.cxx:233
 AliTrackComparisonESD.cxx:234
 AliTrackComparisonESD.cxx:235
 AliTrackComparisonESD.cxx:236
 AliTrackComparisonESD.cxx:237
 AliTrackComparisonESD.cxx:238
 AliTrackComparisonESD.cxx:239
 AliTrackComparisonESD.cxx:240
 AliTrackComparisonESD.cxx:241
 AliTrackComparisonESD.cxx:242
 AliTrackComparisonESD.cxx:243
 AliTrackComparisonESD.cxx:244
 AliTrackComparisonESD.cxx:245
 AliTrackComparisonESD.cxx:246
 AliTrackComparisonESD.cxx:247
 AliTrackComparisonESD.cxx:248
 AliTrackComparisonESD.cxx:249
 AliTrackComparisonESD.cxx:250
 AliTrackComparisonESD.cxx:251
 AliTrackComparisonESD.cxx:252
 AliTrackComparisonESD.cxx:253
 AliTrackComparisonESD.cxx:254
 AliTrackComparisonESD.cxx:255
 AliTrackComparisonESD.cxx:256
 AliTrackComparisonESD.cxx:257
 AliTrackComparisonESD.cxx:258
 AliTrackComparisonESD.cxx:259
 AliTrackComparisonESD.cxx:260
 AliTrackComparisonESD.cxx:261
 AliTrackComparisonESD.cxx:262
 AliTrackComparisonESD.cxx:263
 AliTrackComparisonESD.cxx:264
 AliTrackComparisonESD.cxx:265
 AliTrackComparisonESD.cxx:266
 AliTrackComparisonESD.cxx:267
 AliTrackComparisonESD.cxx:268
 AliTrackComparisonESD.cxx:269
 AliTrackComparisonESD.cxx:270
 AliTrackComparisonESD.cxx:271
 AliTrackComparisonESD.cxx:272
 AliTrackComparisonESD.cxx:273
 AliTrackComparisonESD.cxx:274
 AliTrackComparisonESD.cxx:275
 AliTrackComparisonESD.cxx:276
 AliTrackComparisonESD.cxx:277
 AliTrackComparisonESD.cxx:278
 AliTrackComparisonESD.cxx:279
 AliTrackComparisonESD.cxx:280
 AliTrackComparisonESD.cxx:281
 AliTrackComparisonESD.cxx:282
 AliTrackComparisonESD.cxx:283
 AliTrackComparisonESD.cxx:284
 AliTrackComparisonESD.cxx:285
 AliTrackComparisonESD.cxx:286
 AliTrackComparisonESD.cxx:287
 AliTrackComparisonESD.cxx:288
 AliTrackComparisonESD.cxx:289
 AliTrackComparisonESD.cxx:290
 AliTrackComparisonESD.cxx:291
 AliTrackComparisonESD.cxx:292
 AliTrackComparisonESD.cxx:293
 AliTrackComparisonESD.cxx:294
 AliTrackComparisonESD.cxx:295
 AliTrackComparisonESD.cxx:296
 AliTrackComparisonESD.cxx:297
 AliTrackComparisonESD.cxx:298
 AliTrackComparisonESD.cxx:299
 AliTrackComparisonESD.cxx:300
 AliTrackComparisonESD.cxx:301
 AliTrackComparisonESD.cxx:302
 AliTrackComparisonESD.cxx:303
 AliTrackComparisonESD.cxx:304
 AliTrackComparisonESD.cxx:305
 AliTrackComparisonESD.cxx:306
 AliTrackComparisonESD.cxx:307
 AliTrackComparisonESD.cxx:308
 AliTrackComparisonESD.cxx:309
 AliTrackComparisonESD.cxx:310
 AliTrackComparisonESD.cxx:311
 AliTrackComparisonESD.cxx:312
 AliTrackComparisonESD.cxx:313
 AliTrackComparisonESD.cxx:314
 AliTrackComparisonESD.cxx:315
 AliTrackComparisonESD.cxx:316
 AliTrackComparisonESD.cxx:317
 AliTrackComparisonESD.cxx:318
 AliTrackComparisonESD.cxx:319
 AliTrackComparisonESD.cxx:320
 AliTrackComparisonESD.cxx:321
 AliTrackComparisonESD.cxx:322
 AliTrackComparisonESD.cxx:323
 AliTrackComparisonESD.cxx:324
 AliTrackComparisonESD.cxx:325
 AliTrackComparisonESD.cxx:326
 AliTrackComparisonESD.cxx:327
 AliTrackComparisonESD.cxx:328
 AliTrackComparisonESD.cxx:329
 AliTrackComparisonESD.cxx:330
 AliTrackComparisonESD.cxx:331
 AliTrackComparisonESD.cxx:332
 AliTrackComparisonESD.cxx:333
 AliTrackComparisonESD.cxx:334
 AliTrackComparisonESD.cxx:335
 AliTrackComparisonESD.cxx:336
 AliTrackComparisonESD.cxx:337
 AliTrackComparisonESD.cxx:338
 AliTrackComparisonESD.cxx:339
 AliTrackComparisonESD.cxx:340
 AliTrackComparisonESD.cxx:341
 AliTrackComparisonESD.cxx:342
 AliTrackComparisonESD.cxx:343
 AliTrackComparisonESD.cxx:344
 AliTrackComparisonESD.cxx:345
 AliTrackComparisonESD.cxx:346
 AliTrackComparisonESD.cxx:347
 AliTrackComparisonESD.cxx:348
 AliTrackComparisonESD.cxx:349
 AliTrackComparisonESD.cxx:350
 AliTrackComparisonESD.cxx:351
 AliTrackComparisonESD.cxx:352
 AliTrackComparisonESD.cxx:353
 AliTrackComparisonESD.cxx:354
 AliTrackComparisonESD.cxx:355
 AliTrackComparisonESD.cxx:356
 AliTrackComparisonESD.cxx:357
 AliTrackComparisonESD.cxx:358
 AliTrackComparisonESD.cxx:359
 AliTrackComparisonESD.cxx:360
 AliTrackComparisonESD.cxx:361
 AliTrackComparisonESD.cxx:362
 AliTrackComparisonESD.cxx:363
 AliTrackComparisonESD.cxx:364
 AliTrackComparisonESD.cxx:365
 AliTrackComparisonESD.cxx:366
 AliTrackComparisonESD.cxx:367
 AliTrackComparisonESD.cxx:368
 AliTrackComparisonESD.cxx:369
 AliTrackComparisonESD.cxx:370
 AliTrackComparisonESD.cxx:371
 AliTrackComparisonESD.cxx:372
 AliTrackComparisonESD.cxx:373
 AliTrackComparisonESD.cxx:374
 AliTrackComparisonESD.cxx:375
 AliTrackComparisonESD.cxx:376
 AliTrackComparisonESD.cxx:377
 AliTrackComparisonESD.cxx:378
 AliTrackComparisonESD.cxx:379
 AliTrackComparisonESD.cxx:380
 AliTrackComparisonESD.cxx:381
 AliTrackComparisonESD.cxx:382
 AliTrackComparisonESD.cxx:383
 AliTrackComparisonESD.cxx:384
 AliTrackComparisonESD.cxx:385
 AliTrackComparisonESD.cxx:386
 AliTrackComparisonESD.cxx:387
 AliTrackComparisonESD.cxx:388
 AliTrackComparisonESD.cxx:389
 AliTrackComparisonESD.cxx:390
 AliTrackComparisonESD.cxx:391
 AliTrackComparisonESD.cxx:392
 AliTrackComparisonESD.cxx:393
 AliTrackComparisonESD.cxx:394
 AliTrackComparisonESD.cxx:395
 AliTrackComparisonESD.cxx:396
 AliTrackComparisonESD.cxx:397
 AliTrackComparisonESD.cxx:398
 AliTrackComparisonESD.cxx:399
 AliTrackComparisonESD.cxx:400
 AliTrackComparisonESD.cxx:401
 AliTrackComparisonESD.cxx:402
 AliTrackComparisonESD.cxx:403
 AliTrackComparisonESD.cxx:404
 AliTrackComparisonESD.cxx:405
 AliTrackComparisonESD.cxx:406
 AliTrackComparisonESD.cxx:407
 AliTrackComparisonESD.cxx:408
 AliTrackComparisonESD.cxx:409
 AliTrackComparisonESD.cxx:410
 AliTrackComparisonESD.cxx:411
 AliTrackComparisonESD.cxx:412
 AliTrackComparisonESD.cxx:413
 AliTrackComparisonESD.cxx:414
 AliTrackComparisonESD.cxx:415
 AliTrackComparisonESD.cxx:416
 AliTrackComparisonESD.cxx:417
 AliTrackComparisonESD.cxx:418
 AliTrackComparisonESD.cxx:419
 AliTrackComparisonESD.cxx:420
 AliTrackComparisonESD.cxx:421
 AliTrackComparisonESD.cxx:422
 AliTrackComparisonESD.cxx:423
 AliTrackComparisonESD.cxx:424
 AliTrackComparisonESD.cxx:425
 AliTrackComparisonESD.cxx:426
 AliTrackComparisonESD.cxx:427
 AliTrackComparisonESD.cxx:428
 AliTrackComparisonESD.cxx:429
 AliTrackComparisonESD.cxx:430
 AliTrackComparisonESD.cxx:431
 AliTrackComparisonESD.cxx:432
 AliTrackComparisonESD.cxx:433
 AliTrackComparisonESD.cxx:434
 AliTrackComparisonESD.cxx:435
 AliTrackComparisonESD.cxx:436
 AliTrackComparisonESD.cxx:437
 AliTrackComparisonESD.cxx:438
 AliTrackComparisonESD.cxx:439
 AliTrackComparisonESD.cxx:440
 AliTrackComparisonESD.cxx:441
 AliTrackComparisonESD.cxx:442
 AliTrackComparisonESD.cxx:443
 AliTrackComparisonESD.cxx:444
 AliTrackComparisonESD.cxx:445
 AliTrackComparisonESD.cxx:446
 AliTrackComparisonESD.cxx:447
 AliTrackComparisonESD.cxx:448
 AliTrackComparisonESD.cxx:449
 AliTrackComparisonESD.cxx:450
 AliTrackComparisonESD.cxx:451
 AliTrackComparisonESD.cxx:452
 AliTrackComparisonESD.cxx:453
 AliTrackComparisonESD.cxx:454
 AliTrackComparisonESD.cxx:455
 AliTrackComparisonESD.cxx:456
 AliTrackComparisonESD.cxx:457
 AliTrackComparisonESD.cxx:458
 AliTrackComparisonESD.cxx:459
 AliTrackComparisonESD.cxx:460
 AliTrackComparisonESD.cxx:461
 AliTrackComparisonESD.cxx:462
 AliTrackComparisonESD.cxx:463
 AliTrackComparisonESD.cxx:464
 AliTrackComparisonESD.cxx:465
 AliTrackComparisonESD.cxx:466
 AliTrackComparisonESD.cxx:467
 AliTrackComparisonESD.cxx:468
 AliTrackComparisonESD.cxx:469
 AliTrackComparisonESD.cxx:470
 AliTrackComparisonESD.cxx:471
 AliTrackComparisonESD.cxx:472
 AliTrackComparisonESD.cxx:473
 AliTrackComparisonESD.cxx:474
 AliTrackComparisonESD.cxx:475
 AliTrackComparisonESD.cxx:476
 AliTrackComparisonESD.cxx:477
 AliTrackComparisonESD.cxx:478
 AliTrackComparisonESD.cxx:479
 AliTrackComparisonESD.cxx:480
 AliTrackComparisonESD.cxx:481
 AliTrackComparisonESD.cxx:482
 AliTrackComparisonESD.cxx:483
 AliTrackComparisonESD.cxx:484
 AliTrackComparisonESD.cxx:485
 AliTrackComparisonESD.cxx:486
 AliTrackComparisonESD.cxx:487
 AliTrackComparisonESD.cxx:488
 AliTrackComparisonESD.cxx:489
 AliTrackComparisonESD.cxx:490
 AliTrackComparisonESD.cxx:491
 AliTrackComparisonESD.cxx:492
 AliTrackComparisonESD.cxx:493
 AliTrackComparisonESD.cxx:494
 AliTrackComparisonESD.cxx:495
 AliTrackComparisonESD.cxx:496
 AliTrackComparisonESD.cxx:497
 AliTrackComparisonESD.cxx:498
 AliTrackComparisonESD.cxx:499
 AliTrackComparisonESD.cxx:500
 AliTrackComparisonESD.cxx:501
 AliTrackComparisonESD.cxx:502
 AliTrackComparisonESD.cxx:503
 AliTrackComparisonESD.cxx:504
 AliTrackComparisonESD.cxx:505
 AliTrackComparisonESD.cxx:506
 AliTrackComparisonESD.cxx:507
 AliTrackComparisonESD.cxx:508
 AliTrackComparisonESD.cxx:509
 AliTrackComparisonESD.cxx:510
 AliTrackComparisonESD.cxx:511
 AliTrackComparisonESD.cxx:512
 AliTrackComparisonESD.cxx:513
 AliTrackComparisonESD.cxx:514
 AliTrackComparisonESD.cxx:515
 AliTrackComparisonESD.cxx:516
 AliTrackComparisonESD.cxx:517
 AliTrackComparisonESD.cxx:518
 AliTrackComparisonESD.cxx:519
 AliTrackComparisonESD.cxx:520
 AliTrackComparisonESD.cxx:521
 AliTrackComparisonESD.cxx:522
 AliTrackComparisonESD.cxx:523
 AliTrackComparisonESD.cxx:524
 AliTrackComparisonESD.cxx:525
 AliTrackComparisonESD.cxx:526
 AliTrackComparisonESD.cxx:527
 AliTrackComparisonESD.cxx:528
 AliTrackComparisonESD.cxx:529
 AliTrackComparisonESD.cxx:530
 AliTrackComparisonESD.cxx:531
 AliTrackComparisonESD.cxx:532
 AliTrackComparisonESD.cxx:533
 AliTrackComparisonESD.cxx:534
 AliTrackComparisonESD.cxx:535
 AliTrackComparisonESD.cxx:536
 AliTrackComparisonESD.cxx:537
 AliTrackComparisonESD.cxx:538
 AliTrackComparisonESD.cxx:539
 AliTrackComparisonESD.cxx:540
 AliTrackComparisonESD.cxx:541
 AliTrackComparisonESD.cxx:542
 AliTrackComparisonESD.cxx:543
 AliTrackComparisonESD.cxx:544
 AliTrackComparisonESD.cxx:545
 AliTrackComparisonESD.cxx:546
 AliTrackComparisonESD.cxx:547
 AliTrackComparisonESD.cxx:548
 AliTrackComparisonESD.cxx:549
 AliTrackComparisonESD.cxx:550
 AliTrackComparisonESD.cxx:551
 AliTrackComparisonESD.cxx:552
 AliTrackComparisonESD.cxx:553