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

//--------------------------------------------------------------------//
//                                                                    //
// AliTOFtrackerV2 Class                                              //
// Task: Perform association of the ESD tracks to TOF Clusters        //
// and Update ESD track with associated TOF Cluster parameters        //
//                                                                    //
// -- Authors : S. Arcelli, C. Zampolli (Bologna University and INFN) //
// -- Contacts: Annalisa.De.Caro@cern.ch                              //
// --         : Chiara.Zampolli@bo.infn.it                            //
// --         : Silvia.Arcelli@bo.infn.it                             //
//                                                                    //
//--------------------------------------------------------------------//

#include <Rtypes.h>
#include <TROOT.h>

#include <TClonesArray.h>
#include <TObjArray.h>
#include <TGeoManager.h>
#include <TTree.h>

#include "AliGeomManager.h"
#include "AliESDtrack.h"
#include "AliESDEvent.h"
#include "AliESDpid.h"
#include "AliESDTOFCluster.h"
#include "AliLog.h"
#include "AliTrackPointArray.h"
#include "AliCDBManager.h"

#include "AliTOFRecoParam.h"
#include "AliTOFReconstructor.h"
#include "AliTOFGeometry.h"
#include "AliTOFtrackerV2.h"
#include "AliTOFtrack.h"

#include "AliESDTOFHit.h"

extern TGeoManager *gGeoManager;

ClassImp(AliTOFtrackerV2)

//_____________________________________________________________________________
AliTOFtrackerV2::AliTOFtrackerV2():
  fkRecoParam(0x0),
  fN(0),
  fNseeds(0),
  fNseedsTOF(0),
  fnunmatch(0),
  fnmatch(0),
  fSeeds(new TObjArray(100)),
  fClustersESD(new TClonesArray("AliESDTOFCluster")),
  fHitsESD(new TClonesArray("AliESDTOFHit")),
  fEvent(0),
  fNsteps(0)
{
  //AliTOFtrackerV2 main Ctor
  for (Int_t ii=0; ii<kMaxCluster; ii++){
    fClusters[ii]=0x0;
    fWrittenInPos[ii] = -1;
  }

  for(Int_t isp=0;isp < AliPID::kSPECIESC;isp++)
    fTimesAr[isp] = NULL;

  for (Int_t ii=0; ii<4; ii++)
    fTrackPos[ii] = NULL;
}
//_____________________________________________________________________________
AliTOFtrackerV2::~AliTOFtrackerV2() {
  //
  // Dtor
  //

  if(!(AliCDBManager::Instance()->GetCacheFlag())){
    delete fkRecoParam;
  }
  if (fSeeds){
    fSeeds->Delete();
    delete fSeeds;
    fSeeds=0x0;
  }

  if (fClustersESD){
    fClustersESD->Delete();
    delete fClustersESD;
    fClustersESD=0x0;
  }
  if (fHitsESD){
    fHitsESD->Delete();
    delete fHitsESD;
    fHitsESD=0x0;
  }

  for(Int_t isp=0;isp < AliPID::kSPECIESC;isp++){
    if(fTimesAr[isp]) delete[] fTimesAr[isp];
    fTimesAr[isp] = NULL;
  }


  for (Int_t ii=0; ii<4; ii++)
    if(fTrackPos[ii])
      delete [] fTrackPos[ii];
}
//_____________________________________________________________________________
void AliTOFtrackerV2::GetPidSettings(AliESDpid *esdPID) {
  // 
  // Sets TOF resolution from RecoParams
  //
  if (fkRecoParam)
    esdPID->GetTOFResponse().SetTimeResolution(fkRecoParam->GetTimeResolution());
  else
    AliWarning("fkRecoParam not yet set; cannot set PID settings");
} 
//_____________________________________________________________________________
Int_t AliTOFtrackerV2::PropagateBack(AliESDEvent * const event) {
  //
  // Gets seeds from ESD event and Match with TOF Clusters
  //

  //Update the matched ESD tracks
  // needed in case of call of TOF info before of the selection of matching and in case of no clusters available at all

  fEvent = event;

  if (fN==0) {
    AliInfo("No TOF recPoints to be matched with reconstructed tracks");
    return 0;
  }

  // initialize RecoParam for current event
  AliDebug(1,"Initializing params for TOF");

  fkRecoParam = AliTOFReconstructor::GetRecoParam();  // instantiate reco param from STEER...

  if (fkRecoParam == 0x0) { 
    AliFatal("No Reco Param found for TOF!!!");
  }

  //Initialise some counters

  fNseeds=0;
  fNseedsTOF=0;

  Int_t ntrk=event->GetNumberOfTracks();
  fNseeds = ntrk;

  //Load ESD tracks into a local Array of ESD Seeds
  for (Int_t i=0; i<fNseeds; i++){
    fSeeds->AddLast(event->GetTrack(i));
    event->GetTrack(i)->SetESDEvent(event);
  }
  //Prepare ESD tracks candidates for TOF Matching
  CollectESD();

  if (fNseeds==0 || fNseedsTOF==0) {
    AliInfo("No seeds to try TOF match");
    fSeeds->Clear();
    fClustersESD->Clear();
    fHitsESD->Clear();
    return 0;
  }

  // clusterize before of matching
  Clusterize(); // fN might change

  //Second Step with Looser Matching Criterion
  MatchTracks(); 
  
  // switch array from ALL to filter for ESD (moving from all fClusterESD to filtered AliESDEvent->GetESDTOFClusters())
  TClonesArray* esdTOFHitArr = event->GetESDTOFHits();
  TClonesArray* esdTOFClArr = event->GetESDTOFClusters();

  AliInfo(Form("TOF before the matching: hits = %i and clusters = %i",esdTOFHitArr->GetEntriesFast(),fClustersESD->GetEntriesFast()));

  while(esdTOFHitArr->GetEntriesFast()){ // remove all hits
    delete esdTOFHitArr->RemoveAt(esdTOFHitArr->GetEntriesFast()-1);
  }
  for(Int_t i=0;i < fHitsESD->GetEntriesFast();i++){
    AliESDTOFHit *hitToStored = (AliESDTOFHit *) fHitsESD->At(i);
    AliESDTOFHit *hitNew = new ( (*esdTOFHitArr)[esdTOFHitArr->GetEntriesFast()] ) AliESDTOFHit(*hitToStored);
    hitNew->SetESDTOFClusterIndex(hitToStored->GetESDTOFClusterIndex());
  }

  AliInfo(Form("TOF after the matching: hits = %i and clusters = %i",esdTOFHitArr->GetEntriesFast(),esdTOFClArr->GetEntriesFast()));

  // Sort tof cluster
  for (Int_t i=0; i<fNseeds; i++) {
    AliESDtrack *t =(AliESDtrack*)fSeeds->At(i);
    if ((t->GetStatus()&AliESDtrack::kTOFout)==0)continue;
    t->SortTOFcluster();
  }


  fSeeds->Clear();
  fClustersESD->Clear();
  fHitsESD->Clear();
  return 0;
  
}
//_________________________________________________________________________
void AliTOFtrackerV2::CollectESD() {
   //prepare the set of ESD tracks to be matched to clusters in TOF

  Int_t seedsTOF1=0;
  Int_t seedsTOF3=0;
  Int_t seedsTOF2=0;
 
  AliTOFtrack track;

  for (Int_t i=0; i<fNseeds; i++) {

    AliESDtrack *t =(AliESDtrack*)fSeeds->At(i);
    if ((t->GetStatus()&AliESDtrack::kTPCout)==0)continue;

    track = *t; // New
    Float_t x = (Float_t)track.GetX(); //New

    // TRD 'good' tracks
    if ( ( (t->GetStatus()&AliESDtrack::kTRDout)!=0 ) ) {

      AliDebug(1,Form(" Before propagation till inner TOF radius, ESDtrackLength=%f, TOFtrackLength=%f",t->GetIntegratedLength(),track.GetIntegratedLength()));

      // TRD 'good' tracks, already propagated at 371 cm
      if ( x >= AliTOFGeometry::Rmin() ) {

	if ( track.PropagateToInnerTOF() ) {

	  AliDebug(1,Form(" TRD propagated track till rho = %fcm."
			  " And then the track has been propagated till rho = %fcm.",
			  x, (Float_t)track.GetX()));

	  track.SetSeedIndex(i);
	  t->UpdateTrackParams(&track,AliESDtrack::kTOFin);
	  fNseedsTOF++;
	  seedsTOF1++;

	  AliDebug(1,Form(" After propagation till inner TOF radius, ESDtrackLength=%f, TOFtrackLength=%f",t->GetIntegratedLength(),track.GetIntegratedLength()));
	}
      }
      else { // TRD 'good' tracks, propagated rho<371cm

	if  ( track.PropagateToInnerTOF() ) {

	  AliDebug(1,Form(" TRD propagated track till rho = %fcm."
			  " And then the track has been propagated till rho = %fcm.",
			  x, (Float_t)track.GetX()));

	  track.SetSeedIndex(i);
	  t->UpdateTrackParams(&track,AliESDtrack::kTOFin);
	  fNseedsTOF++;
	  seedsTOF3++;

	  AliDebug(1,Form(" After propagation till inner TOF radius, ESDtrackLength=%f, TOFtrackLength=%f",t->GetIntegratedLength(),track.GetIntegratedLength()));
	}
      }
    }

    else { // Propagate the rest of TPCbp

      AliDebug(1,Form(" Before propagation till inner TOF radius, ESDtrackLength=%f, TOFtrackLength=%f",t->GetIntegratedLength(),track.GetIntegratedLength()));

      if ( track.PropagateToInnerTOF() ) { 

	AliDebug(1,Form(" TPC propagated track till rho = %fcm."
			" And then the track has been propagated till rho = %fcm.",
			x, (Float_t)track.GetX()));

      	track.SetSeedIndex(i);
	t->UpdateTrackParams(&track,AliESDtrack::kTOFin);
	fNseedsTOF++;
	seedsTOF2++;

	AliDebug(1,Form(" After propagation till inner TOF radius, ESDtrackLength=%f, TOFtrackLength=%f",t->GetIntegratedLength(),track.GetIntegratedLength()));
      }
    }
  }

  AliInfo(Form("Number of TOF seeds = %d (kTRDout371 = %d, kTRDoutLess371 = %d, !kTRDout = %d)",fNseedsTOF,seedsTOF1,seedsTOF3,seedsTOF2));

}

//_________________________________________________________________________
void AliTOFtrackerV2::MatchTracks() {
  //
  //Match ESD tracks to clusters in TOF
  //

  // Parameters used/regulating the reconstruction
  static Float_t detDepth=18.;
  static Float_t padDepth=0.5;

  const Float_t kSpeedOfLight= 2.99792458e-2; // speed of light [cm/ps]

  Float_t dY=AliTOFGeometry::XPad(); 
  Float_t dZ=AliTOFGeometry::ZPad(); 

  Float_t sensRadius = fkRecoParam->GetSensRadius();
  Float_t stepSize   = fkRecoParam->GetStepSize();
  Float_t scaleFact  = fkRecoParam->GetWindowScaleFact();
  Float_t dyMax=fkRecoParam->GetWindowSizeMaxY(); 
  Float_t dzMax=fkRecoParam->GetWindowSizeMaxZ();
  Float_t dCut=10.;//fkRecoParam->GetDistanceCut(); // This is to be loaded by OCDB. It should be 10cm always.
  Double_t maxChi2=fkRecoParam->GetMaxChi2TRD();
  Bool_t timeWalkCorr = fkRecoParam->GetTimeWalkCorr();
  AliDebug(1,"++++++++++++++TOF Reconstruction Parameters:++++++++++++++");
  AliDebug(1,Form("TOF sens radius: %f",sensRadius));
  AliDebug(1,Form("TOF step size: %f",stepSize));
  AliDebug(1,Form("TOF Window scale factor: %f",scaleFact));
  AliDebug(1,Form("TOF Window max dy: %f",dyMax));
  AliDebug(1,Form("TOF Window max dz: %f",dzMax));
  AliDebug(1,Form("TOF distance Cut: %f",dCut));
  AliDebug(1,Form("TOF Max Chi2: %f",maxChi2));
  AliDebug(1,Form("Time Walk Correction? : %d",timeWalkCorr));   

  //Match ESD tracks to clusters in TOF
  TClonesArray* TOFClArr = fClustersESD; // use temporary array
  TClonesArray* esdTOFClArr = fEvent->GetESDTOFClusters();
  TClonesArray* esdTOFHitArr = fEvent->GetESDTOFHits();

  if(Int_t(detDepth/stepSize) > fNsteps){ // create array for each step
    // Get the number of propagation steps
    fNsteps =(Int_t)(detDepth/stepSize);

    for(Int_t isp=0;isp < AliPID::kSPECIESC;isp++){
      if(fTimesAr[isp]) delete[] fTimesAr[isp];
    }

    for(Int_t isp=0;isp < AliPID::kSPECIESC;isp++){
      fTimesAr[isp] = new Double_t[fNsteps];
    }

    for (Int_t ii=0; ii<4; ii++)
      if(fTrackPos[ii])
	delete [] fTrackPos[ii];
    
    for (Int_t ii=0; ii<4; ii++) fTrackPos[ii] = new Float_t[fNsteps];
  }



  AliDebug(1,Form(" Number of steps to be done %d",fNsteps));

  AliDebug(1,"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");

  // Some init
  const Int_t kNclusterMax = 1000; // related to fN value
  TGeoHMatrix global[kNclusterMax];
  Int_t clind[kNclusterMax];
  Bool_t isClusterMatchable[kNclusterMax]; // true if track and cluster were already matched (set to false below upto nc < kNclusterMax)

  AliTOFtrack trackTOFin;

  //The matching loop
  for (Int_t iseed=0; iseed<fSeeds->GetEntriesFast(); iseed++) {
    AliESDtrack *t =(AliESDtrack*)fSeeds->At(iseed); // ciao replace with loop on ESD + kTOFin
    if( (t->GetStatus()&AliESDtrack::kTOFin) == 0 ) continue;

    trackTOFin = *t;

    for (Int_t ii=0; ii<4; ii++)
      for (Int_t jj=0; jj<fNsteps; jj++) fTrackPos[ii][jj]=0.;

    for (Int_t ii=0; ii<kNclusterMax; ii++) clind[ii]=-1;
    for (Int_t ii=0; ii<kNclusterMax; ii++) global[ii] = 0x0;
    for (Int_t ii=0; ii<kNclusterMax; ii++) isClusterMatchable[ii] = kFALSE;	  	

    Double_t timesOr[AliPID::kSPECIESC]; t->GetIntegratedTimes(timesOr,AliPID::kSPECIESC); // in ps

    // Determine a window around the track
    Double_t x,par[5]; 
    trackTOFin.GetExternalParameters(x,par);
    Double_t cov[15]; 
    trackTOFin.GetExternalCovariance(cov);

    if (cov[0]<0. || cov[2]<0.) {
      AliWarning(Form("Very strange track (%d)! At least one of its covariance matrix diagonal elements is negative!",iseed));
      continue;
    }

    Double_t dphi=
      scaleFact*
      ((5*TMath::Sqrt(TMath::Abs(cov[0])) + 0.5*dY + 2.5*TMath::Abs(par[2]))/sensRadius); 
    Double_t dz=
       scaleFact*
       (5*TMath::Sqrt(TMath::Abs(cov[2])) + 0.5*dZ + 2.5*TMath::Abs(par[3]));

    Double_t phi=TMath::ATan2(par[0],x) + trackTOFin.GetAlpha();
    if (phi<-TMath::Pi())phi+=2*TMath::Pi();
    if (phi>=TMath::Pi())phi-=2*TMath::Pi();
    Double_t z=par[1];   

    //upper limit on window's size.
    if (dz> dzMax) dz=dzMax;
    if (dphi*sensRadius> dyMax) dphi=dyMax/sensRadius;


    // find the clusters in the window of the track
    Int_t nc=0;
    for (Int_t k=FindClusterIndex(z-dz); k<TOFClArr->GetEntriesFast(); k++) {

      if (nc>=kNclusterMax) {
 	AliWarning("No more matchable clusters can be stored! Please, increase the corresponding vectors size.");
 	break;
      }

      AliESDTOFCluster *c=(AliESDTOFCluster *) TOFClArr->At(k);
      if (c->GetZ() > z+dz) break;
      if (!c->GetStatus()) {
	AliDebug(1,"Cluster in channel declared bad!");
	continue; // skip bad channels as declared in OCDB
      }


      Double_t dph=TMath::Abs(c->GetPhi()-phi);
      if (dph>TMath::Pi()) dph-=2.*TMath::Pi();
      if (TMath::Abs(dph)>dphi) continue;

      Double_t yc=(c->GetPhi() - trackTOFin.GetAlpha())*c->GetR();
      Double_t p[2]={yc, c->GetZ()};
      Double_t cov2[3]= {dY*dY/12., 0., dZ*dZ/12.};
      if (trackTOFin.AliExternalTrackParam::GetPredictedChi2(p,cov2) > maxChi2)continue;

      clind[nc] = k;      
      Char_t path[200];
      Int_t ind[5]; AliTOFGeometry::GetVolumeIndices(c->GetTOFchannel(),ind);
      AliTOFGeometry::GetVolumePath(ind,path);
      gGeoManager->cd(path);
      global[nc] = *gGeoManager->GetCurrentMatrix();
      nc++;
    }


    if (nc == 0 ) {
      AliDebug(1,Form("No available clusters for the track number %d",iseed));
      fnunmatch++;
      continue;
    }

    AliDebug(1,Form(" Number of available TOF clusters for the track number %d: %d",iseed,nc));

    //start fine propagation 

    Int_t nStepsDone = 0;
    for( Int_t istep=0; istep<fNsteps; istep++){ 
      
      // First of all, propagate the track...
      Float_t xs = AliTOFGeometry::RinTOF()+istep*stepSize;
      if (!(trackTOFin.PropagateTo(xs))) break;

      //  ...and then, if necessary, rotate the track
      Double_t ymax = xs*TMath::Tan(0.5*AliTOFGeometry::GetAlpha());
      Double_t ysect = trackTOFin.GetY();
      if (ysect > ymax) {
	if (!(trackTOFin.Rotate(AliTOFGeometry::GetAlpha()))) break;
      } else if (ysect <-ymax) {
	if (!(trackTOFin.Rotate(-AliTOFGeometry::GetAlpha()))) break;
      }

      Double_t mom = trackTOFin.P();

      if(istep == 0){
	for(Int_t isp=0;isp<AliPID::kSPECIESC;isp++){
	  Double_t mass=AliPID::ParticleMass(isp);
	  Double_t momz = mom*AliPID::ParticleCharge(isp);
	  fTimesAr[isp][nStepsDone] = stepSize/kSpeedOfLight*TMath::Sqrt(momz*momz+mass*mass)/momz;
	}
      }
      else{
	for(Int_t isp=0;isp<AliPID::kSPECIESC;isp++){
	  Double_t mass=AliPID::ParticleMass(isp);
	  Double_t momz = mom*AliPID::ParticleCharge(isp);
	  fTimesAr[isp][nStepsDone] = fTimesAr[isp][nStepsDone-1] + (trackTOFin.GetIntegratedLength()-fTrackPos[3][nStepsDone-1])/kSpeedOfLight*TMath::Sqrt(momz*momz+mass*mass)/momz;
	}
      }

      // store the running point (Globalrf) - fine propagation     

      Double_t r[3]; trackTOFin.GetXYZ(r);
      fTrackPos[0][nStepsDone]= (Float_t) r[0];
      fTrackPos[1][nStepsDone]= (Float_t) r[1];
      fTrackPos[2][nStepsDone]= (Float_t) r[2];   
      fTrackPos[3][nStepsDone]= trackTOFin.GetIntegratedLength();

      nStepsDone++;
      AliDebug(3,Form(" current step %d (%d) - nStepsDone=%d",istep,fNsteps,nStepsDone));
    }

    if ( nStepsDone == 0 ) {
      AliDebug(1,Form(" No track points for track number %d",iseed));
      fnunmatch++;
      continue;
    }

    AliDebug(3,Form(" Number of steps done for the track number %d: %d",iseed,nStepsDone));

    if(nc){
      for (Int_t i=0; i<nc; i++) isClusterMatchable[i] = kFALSE;	  	
    }

    Int_t nfound = 0;
    Bool_t accept = kFALSE;
    for (Int_t istep=0; istep<nStepsDone; istep++) {
      Float_t ctrackPos[3];     
      ctrackPos[0] = fTrackPos[0][istep];
      ctrackPos[1] = fTrackPos[1][istep];
      ctrackPos[2] = fTrackPos[2][istep];

      //now see whether the track matches any of the TOF clusters            

      Float_t dist3d[3]={0.,0.,0.};
      accept = kFALSE;

      for (Int_t i=0; i<nc; i++) {

	AliTOFGeometry::IsInsideThePad((TGeoHMatrix*)(&global[i]),ctrackPos,dist3d);

	// check multiple hit cases
	AliESDTOFCluster *cmatched=(AliESDTOFCluster *) TOFClArr->At(clind[i]);

	if(cmatched->GetNTOFhits() > 1){ // correct residual for mean position of the clusters (w.r.t. the first pad/hit)
	  Float_t zmain = cmatched->GetTOFchannel(0)/48;
	  Float_t xmain = cmatched->GetTOFchannel(0)%48;
	  for(Int_t ihit=1;ihit < cmatched->GetNTOFhits();ihit++){
	    Float_t deltaz = (cmatched->GetTOFchannel(ihit)/48 - zmain) * 3.5;
	    Float_t deltax = (cmatched->GetTOFchannel(ihit)%48 - xmain) * 2.5;
	    dist3d[0] -= deltax / cmatched->GetNTOFhits();
	    dist3d[2] -= deltaz / cmatched->GetNTOFhits();
	  }
	}

        // ***** NEW *****
        /* if track is inside this cluster set flags which will then
         * inhibit to add track points for the other clusters */
	Float_t yLoc = dist3d[1];
	Float_t rLoc = TMath::Sqrt(dist3d[0]*dist3d[0]+dist3d[2]*dist3d[2]);
	accept = (TMath::Abs(yLoc)<padDepth*0.5 && rLoc<dCut);

	//***** NEW *****
	/* add point everytime that:
	 * - the tracks is within dCut from the cluster
	 */
        if (accept) {

	  Double_t timesCurrent[AliPID::kSPECIESC];
	  AliDebug(3,Form(" Momentum for track %d -> %f", iseed,t->P()));
	  for (Int_t j=0;j<AliPID::kSPECIESC;j++) {
	    timesCurrent[j] = timesOr[j] + fTimesAr[j][istep];
	  }


	  if (TMath::Abs(dist3d[1])<stepSize && !isClusterMatchable[i]) {
	    isClusterMatchable[i] = kTRUE;
	    
	    Int_t currentpos = esdTOFClArr->GetEntriesFast(); // position of cluster in ESD
	    if(fWrittenInPos[clind[i]] != -1){
	      currentpos = fWrittenInPos[clind[i]];
	      cmatched = (AliESDTOFCluster *) esdTOFClArr->At(currentpos); // update the new one in the ESDEvent
	    }
	    else{ // add as a new cluster in the ESD TClonesArray
	      AliESDTOFCluster *clnew =  new( (*esdTOFClArr)[currentpos] ) AliESDTOFCluster(*cmatched);
	      clnew->SetEvent(fEvent);
	      clnew->SetESDID(currentpos);

	      // remap also TOF hit in the filtered array
	      for(Int_t ii=0;ii < cmatched->GetNTOFhits();ii++){
		Int_t index = cmatched->GetHitIndex(ii);
		AliESDTOFHit *hitOld = (AliESDTOFHit *) esdTOFHitArr->At(index);
		Int_t index_new = fHitsESD->GetEntriesFast();
		AliESDTOFHit *hitNew = new( (*fHitsESD)[index_new] ) AliESDTOFHit(*hitOld);
		hitNew->SetESDTOFClusterIndex(currentpos);
		clnew->SetHitIndex(ii,index_new);
	      }

	      fWrittenInPos[clind[i]] = currentpos;
	      cmatched = clnew; // update the new one added to the ESDEvent
	    }

	    if(cmatched->GetNMatchableTracks() < AliESDTOFCluster::kMaxMatches){
	      cmatched->Update(t->GetID(),dist3d[0],dist3d[1],dist3d[2],fTrackPos[3][istep],timesCurrent);//x,y,z -> tracking RF
	      t->AddTOFcluster(currentpos);
	      t->SetStatus(AliESDtrack::kTOFout);
	    }
	  }
          AliDebug(2,Form(" dist3dLoc[0] = %f, dist3dLoc[1] = %f, dist3dLoc[2] = %f ",dist3d[0],dist3d[1],dist3d[2]));

          nfound++;
        
          // ***** NEW *****
        }//end if accept
        
      } //end for on the clusters
    } //end for on the steps     


    if (nfound == 0 ) {
      AliDebug(1,Form(" No matchable track points for the track number %d",iseed));
      fnunmatch++;
      continue;
    }

    AliDebug(1,Form(" Number of track points for the track number %d: %d",iseed,nfound));

    Int_t nMatchedClusters = t->GetNTOFclusters();
 
    if (nMatchedClusters==0) {
      AliDebug(1,Form("Reconstructed track %d doesn't match any TOF cluster", iseed));
      fnunmatch++;
      continue;
    }

    AliDebug(1,Form(" %d - matched (%d)",iseed,nMatchedClusters));

    fnmatch++;

    /*
    AliTOFcluster cTOF = AliTOFcluster(volIdClus,
    (Float_t)posClus[0],(Float_t)posClus[1],(Float_t)posClus[2],
    (Float_t)covClus[0],(Float_t)covClus[1],(Float_t)covClus[2],
    (Float_t)covClus[3],(Float_t)covClus[4],(Float_t)covClus[5],
    tofLabels,volIndices,parClu,kTRUE,index[i]);

    // Fill the track residual histograms.
    FillResiduals(trackTOFin,c,kFALSE);
    */
  } // loop on fSeeds
 
}
//_________________________________________________________________________
Int_t AliTOFtrackerV2::LoadClusters(TTree *cTree) {
  //--------------------------------------------------------------------
  //This function loads the TOF clusters
  //--------------------------------------------------------------------

  TBranch *branch=cTree->GetBranch("TOF");
  if (!branch) { 
    AliError("can't get the branch with the TOF clusters !");
    return 1;
  }

  static TClonesArray dummy("AliTOFcluster",10000);
  dummy.Clear();
  TClonesArray *clusters=&dummy;
  branch->SetAddress(&clusters);

  cTree->GetEvent(0);
  Int_t ncl =clusters->GetEntriesFast();
  AliInfo(Form("Number of clusters: %d",ncl));

  fN = ncl; // set cluster counter

  for(Int_t i=0;i < ncl;i++) // reset position of clusters in ESD
    fWrittenInPos[i] = -1;

  if(ncl==0){
    return 0;
  }

  for (Int_t i=0; i<ncl; i++) {
    AliTOFcluster *c=(AliTOFcluster*)clusters->UncheckedAt(i);

    /*
    Int_t ind[5];
    ind[0]=c->GetDetInd(0);
    ind[1]=c->GetDetInd(1);
    ind[2]=c->GetDetInd(2);
    ind[3]=c->GetDetInd(3);
    ind[4]=c->GetDetInd(4);
    Int_t calindex = AliTOFGeometry::GetIndex(ind);
    Int_t tofLabels[3]={c->GetLabel(0),c->GetLabel(1),c->GetLabel(2)};
    */
      
    fClusters[i] = c;
  }

  return 0;
}
//_________________________________________________________________________
void AliTOFtrackerV2::UnloadClusters() {
  //--------------------------------------------------------------------
  //This function unloads TOF clusters
  //--------------------------------------------------------------------

  // don't delete TOF clusters here because they should be written
}

//_________________________________________________________________________
Int_t AliTOFtrackerV2::FindClusterIndex(Double_t z) const {
  //--------------------------------------------------------------------
  // This function returns the index of the nearest cluster 
  //--------------------------------------------------------------------
  TClonesArray* TOFClArr = fClustersESD;; // use temporary array
  Int_t n = TOFClArr->GetEntriesFast();

  if (n==0) return 0;
  if (z <= ((AliESDTOFCluster *) TOFClArr->At(0))->GetZ()) return 0;
  if (z > ((AliESDTOFCluster *) TOFClArr->At(n-1))->GetZ()) return n;
  Int_t b=0, e=n-1, m=(b+e)/2;
  for (; b<e; m=(b+e)/2) {
    if (z > ((AliESDTOFCluster *) TOFClArr->At(m))->GetZ()) b=m+1;

    else e=m; 
  }
  return m;
} 
//_________________________________________________________________________
Bool_t AliTOFtrackerV2::GetTrackPoint(Int_t index, AliTrackPoint& p) const
{
  // Get track space point with index i
  // Coordinates are in the global system
  TClonesArray* esdTOFClArr = fEvent->GetESDTOFClusters();
  AliESDTOFCluster *cl = (AliESDTOFCluster *) esdTOFClArr->At(index);

  Float_t xyz[3];
  xyz[0] = cl->GetR()*TMath::Cos(cl->GetPhi());
  xyz[1] = cl->GetR()*TMath::Sin(cl->GetPhi());
  xyz[2] = cl->GetZ();
  Float_t phiangle = (Int_t(cl->GetPhi()*TMath::RadToDeg()/20.)+0.5)*20.*TMath::DegToRad();
  Float_t sinphi = TMath::Sin(phiangle), cosphi = TMath::Cos(phiangle);
  Int_t tofChannel=cl->GetTOFchannel();
  Int_t ind[5]; AliTOFGeometry::GetVolumeIndices(tofChannel,ind);
  Float_t tiltangle = AliTOFGeometry::GetAngles(ind[1],ind[2])*TMath::DegToRad();
  Float_t sinth = TMath::Sin(tiltangle), costh = TMath::Cos(tiltangle);
  Float_t sigmay2 = AliTOFGeometry::XPad()*AliTOFGeometry::XPad()/12.;
  Float_t sigmaz2 = AliTOFGeometry::ZPad()*AliTOFGeometry::ZPad()/12.;
  Float_t cov[6];
  cov[0] = sinphi*sinphi*sigmay2 + cosphi*cosphi*sinth*sinth*sigmaz2;
  cov[1] = -sinphi*cosphi*sigmay2 + sinphi*cosphi*sinth*sinth*sigmaz2;
  cov[2] = -cosphi*sinth*costh*sigmaz2;
  cov[3] = cosphi*cosphi*sigmay2 + sinphi*sinphi*sinth*sinth*sigmaz2;
  cov[4] = -sinphi*sinth*costh*sigmaz2;
  cov[5] = costh*costh*sigmaz2;
  p.SetXYZ(xyz[0],xyz[1],xyz[2],cov);

  // Detector numbering scheme
  Int_t nSector = AliTOFGeometry::NSectors();
  Int_t nPlate  = AliTOFGeometry::NPlates();
  Int_t nStripA = AliTOFGeometry::NStripA();
  Int_t nStripB = AliTOFGeometry::NStripB();
  Int_t nStripC = AliTOFGeometry::NStripC();

  Int_t isector = ind[0];//cl->GetDetInd(0);
  if (isector >= nSector)
    AliError(Form("Wrong sector number in TOF (%d) !",isector));
  Int_t iplate = ind[1];//cl->GetDetInd(1);
  if (iplate >= nPlate)
    AliError(Form("Wrong plate number in TOF (%d) !",iplate));
  Int_t istrip = ind[2];//cl->GetDetInd(2);

  Int_t stripOffset = 0;
  switch (iplate) {
  case 0:
    stripOffset = 0;
    break;
  case 1:
    stripOffset = nStripC;
    break;
  case 2:
    stripOffset = nStripC+nStripB;
    break;
  case 3:
    stripOffset = nStripC+nStripB+nStripA;
    break;
  case 4:
    stripOffset = nStripC+nStripB+nStripA+nStripB;
    break;
  default:
    AliError(Form("Wrong plate number in TOF (%d) !",iplate));
    break;
  };

  Int_t idet = (2*(nStripC+nStripB)+nStripA)*isector +
               stripOffset +
               istrip;
  UShort_t volid = AliGeomManager::LayerToVolUID(AliGeomManager::kTOF,idet);
  p.SetVolumeID((UShort_t)volid);
  return kTRUE;
}
//_________________________________________________________________________

Float_t AliTOFtrackerV2::CorrectTimeWalk( Float_t dist, Float_t tof) const {

  //dummy, for the moment
  Float_t tofcorr=0.;
  if(dist<AliTOFGeometry::ZPad()*0.5){
    tofcorr=tof;
    //place here the actual correction
  }else{
    tofcorr=tof; 
  } 
  return tofcorr;
}
//_________________________________________________________________________
void AliTOFtrackerV2::Clusterize(){
  Int_t detId[5];

  // Load 1 hit in 1 cluster (ESD)
  TClonesArray* TOFClArr = fClustersESD;// use a temporary copy //fEvent->GetESDTOFClusters();
  TClonesArray* esdTOFHitArr = fEvent->GetESDTOFHits();

  if(TOFClArr->GetEntriesFast()) TOFClArr->Clear();
  if(esdTOFHitArr->GetEntriesFast()) esdTOFHitArr->Clear();

  AliESDTOFCluster *c1 = NULL;
  AliESDTOFCluster *c2 = NULL;

  for(Int_t i=0; i < fN;i++){
    AliTOFcluster *c = fClusters[i];
    Int_t ind[5];
    ind[0]=c->GetDetInd(0);
    ind[1]=c->GetDetInd(1);
    ind[2]=c->GetDetInd(2);
    ind[3]=c->GetDetInd(3);
    ind[4]=c->GetDetInd(4);
    Int_t calindex = AliTOFGeometry::GetIndex(ind);
    Int_t tofLabels[3]={c->GetLabel(0),c->GetLabel(1),c->GetLabel(2)};
    
    new ( (*esdTOFHitArr)[i] ) AliESDTOFHit( AliTOFGeometry::TdcBinWidth()*c->GetTDC(),
                              AliTOFGeometry::TdcBinWidth()*c->GetTDCRAW(),
                              AliTOFGeometry::ToTBinWidth()*c->GetToT()*1E-3,
                              calindex,tofLabels,c->GetL0L1Latency(),
                              c->GetDeltaBC(),i,c->GetZ(),c->GetR(),c->GetPhi() );
    
    c1 =  new( (*TOFClArr)[i] ) AliESDTOFCluster(i);
    c1->SetEvent(fEvent);
    c1->SetStatus( c->GetStatus() );
    c1->SetESDID(i);
    // 
    // register hits in the cluster
    c1->AddESDTOFHitIndex(i);

  }
  // start to merge clusters
  Int_t chan1,chan2,chan3;
  Int_t strip1,strip2;
  Int_t iphi,iphi2,iphi3;
  Int_t ieta,ieta2,ieta3;

  for(Int_t i=0; i <  TOFClArr->GetEntriesFast()-1;i++){
    c1=(AliESDTOFCluster *) TOFClArr->At(i);
    if(!c1->GetStatus()) continue;

    chan1 = c1->GetTOFchannel(0);
    AliTOFGeometry::GetVolumeIndices(chan1, detId); // Get volume index from channel index

    ieta = detId[2]/*strip*/*2 + detId[3]/*pad Z*/;
    if(detId[1]/*module*/ == 0) ieta += 0;
    else if(detId[1] == 1) ieta += 38;
    else if(detId[1] == 2) ieta += 76;
    else if(detId[1] == 3) ieta += 106;
    else if(detId[1] == 4) ieta += 144;
    iphi = detId[0]/*phi sector*/*48 + detId[4]/*pad x*/;

    chan2=chan1;
    if(c1->GetNTOFhits() > 1){
      chan2 = c1->GetTOFchannel(1);
      AliTOFGeometry::GetVolumeIndices(chan2, detId); // Get volume index from channel index

      ieta2 = detId[2]/*strip*/*2 + detId[3]/*pad Z*/;
      if(detId[1]/*module*/ == 0) ieta2 += 0;
      else if(detId[1] == 1) ieta2 += 38;
      else if(detId[1] == 2) ieta2 += 76;
      else if(detId[1] == 3) ieta2 += 106;
      else if(detId[1] == 4) ieta2 += 144;
      iphi2 = detId[0]/*phi sector*/*48 + detId[4]/*pad x*/;
    }
    else{
      iphi2=iphi;
      ieta2=ieta;
    }

    // 1 and 2 belong now to the first cluster, 3 to the second one
    
    strip1 = chan1/96;
    for(Int_t j=i+1; j < TOFClArr->GetEntriesFast();j++){
      c2=(AliESDTOFCluster *) TOFClArr->At(j);
      if(!c2->GetStatus()) continue;

      chan3 = c2->GetTOFchannel();

      // check if the two TOF hits are in the same strip
      strip2 = chan3/96;
      if(strip1 != strip2) continue;

      AliTOFGeometry::GetVolumeIndices(chan3, detId); // Get volume index from channel index
      ieta3 = detId[2]/*strip*/*2 + detId[3]/*pad Z*/;
      if(detId[1]/*module*/ == 0) ieta3 += 0;
      else if(detId[1] == 1) ieta3 += 38;
      else if(detId[1] == 2) ieta3 += 76;
      else if(detId[1] == 3) ieta3 += 106;
      else if(detId[1] == 4) ieta3 += 144;
      iphi3 = detId[0]/*phi sector*/*48 + detId[4]/*pad x*/;
      

      if(ieta3-ieta > 2) j = fN; // because cluster are order along Z so you can skip all the rest, go to the next one ("i+1")

      // check if the fired pad are close in space
      if((TMath::Abs(iphi-iphi3)>1 && TMath::Abs(iphi2-iphi3)>1) || (TMath::Abs(ieta-ieta3)>1 && TMath::Abs(ieta2-ieta3)>1)) 
	continue; // double checks
      
      // check if the TOF time are close enough to be merged
      if(TMath::Abs(c1->GetTime() - c2->GetTime()) > 500/*in ps*/) continue;
      
      // merge them
      MergeClusters(i,j);

      // new hit is added as a second hit for the first cluster 
      iphi2 = iphi3;
      ieta2 = ieta3;
    }
  }  
}

void AliTOFtrackerV2::MergeClusters(Int_t i,Int_t j){
  TClonesArray* TOFClArr = fClustersESD;// use a temporary copy //fEvent->GetESDTOFClusters();

  if(i == j){
    AliInfo("No TOF cluster mergine possible (cannot merge a cluster with itself)");
    return;
  }

  if(i > j){ // check right order
    Int_t k=i;
    i=j;
    j=k;
  }

  Int_t last = TOFClArr->GetEntriesFast()-1;

  if(j > last){
    AliInfo("No TOF cluster mergine possible (cluster not available)");
    return;
  }
  
  AliESDTOFCluster *c1 = (AliESDTOFCluster *) TOFClArr->At(i);
  AliESDTOFCluster *c2 = (AliESDTOFCluster *) TOFClArr->At(j);

  if(c2->GetNMatchableTracks()){
    AliInfo("No TOF cluster mergine possible (cluster already matched)");
    return; // cannot merge a cluster already matched
  }

  Int_t nhit1 = c1->GetNTOFhits();
  Int_t nhit2 = c2->GetNTOFhits();

  if(nhit1+nhit2 >= AliESDTOFCluster::kMaxHits) 
    {
      AliInfo("No TOF cluster mergine possible (too many hits)");
      return;
    }

  for(Int_t k=0;k < nhit2;k++){// add hits in c2 to c1
    c1->AddESDTOFHitIndex(c2->GetHitIndex(k));

    // ID re-setting for hits not needed (done when matching is found)
  }

  // remove c2 from array
  if(j == last) delete TOFClArr->RemoveAt(j);
  else{
    for(Int_t ii=j;ii < last;ii++){
      AliESDTOFCluster *old= (AliESDTOFCluster *) TOFClArr->At(ii);
      if (!old) {AliFatal(Form("NULL pointer for TOF cluster %d",ii));}
      AliESDTOFCluster *replace= (AliESDTOFCluster *) TOFClArr->At(ii+1);
      if (!replace) {AliFatal(Form("NULL pointer for TOF cluster %d",ii+1));}
      *old = *replace;
      old->SetESDID(j);
    }
    delete TOFClArr->RemoveAt(last);
  }

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