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

//--------------------------------------------------------------------//
//                                                                    //
// AliTOFtracker 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 <TSeqCollection.h>
#include <TClonesArray.h>
#include <TObjArray.h>
#include <TGeoManager.h>
#include <TTree.h>
#include <TFile.h>
#include <TH2F.h>

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

//#include "AliTOFpidESD.h"
#include "AliTOFRecoParam.h"
#include "AliTOFReconstructor.h"
#include "AliTOFcluster.h"
#include "AliTOFGeometry.h"
#include "AliTOFtracker.h"
#include "AliTOFtrack.h"

extern TGeoManager *gGeoManager;
//extern TROOT *gROOT;


ClassImp(AliTOFtracker)

//_____________________________________________________________________________
AliTOFtracker::AliTOFtracker():
  fkRecoParam(0x0),
  fGeom(0x0),
  fN(0),
  fNseeds(0),
  fNseedsTOF(0),
  fngoodmatch(0),
  fnbadmatch(0),
  fnunmatch(0),
  fnmatch(0),
  fESDEv(0),
  fTracks(new TClonesArray("AliTOFtrack")),
  fSeeds(new TObjArray(100)),
  fTOFtrackPoints(new TObjArray(10)),
  fHDigClusMap(0x0),
  fHDigNClus(0x0),
  fHDigClusTime(0x0),
  fHDigClusToT(0x0),
  fHRecNClus(0x0),
  fHRecDist(0x0),
  fHRecSigYVsP(0x0),
  fHRecSigZVsP(0x0),
  fHRecSigYVsPWin(0x0),
  fHRecSigZVsPWin(0x0),
  fCalTree(0x0),
  fIch(-1),
  fToT(-1.),
  fTime(-1.),
  fExpTimePi(-1.),
  fExpTimeKa(-1.),
  fExpTimePr(-1.),
  fNTOFmatched(0)
{
  //AliTOFtracker main Ctor

  for (Int_t ii=0; ii<kMaxCluster; ii++) fClusters[ii]=0x0;

  // Getting the geometry
  fGeom = new AliTOFGeometry();
  /* RS?
  for(Int_t i=0; i< 20000;i++){
    fClusterESD[i] = NULL;
    fHit[i] = NULL;
  }
  */
  InitCheckHists();

}
//_____________________________________________________________________________
AliTOFtracker::~AliTOFtracker() {
  //
  // Dtor
  //

  SaveCheckHists();

  if(!(AliCDBManager::Instance()->GetCacheFlag())){
    delete fkRecoParam;
  }
  delete fGeom; 
  delete fHDigClusMap;
  delete fHDigNClus;
  delete fHDigClusTime;
  delete fHDigClusToT;
  delete fHRecNClus;
  delete fHRecDist;
  delete fHRecSigYVsP;
  delete fHRecSigZVsP;
  delete fHRecSigYVsPWin;
  delete fHRecSigZVsPWin;
  delete fCalTree;
  if (fTracks){
    fTracks->Delete();
    delete fTracks;
    fTracks=0x0;
  }
  if (fSeeds){
    fSeeds->Delete();
    delete fSeeds;
    fSeeds=0x0;
  }
  if (fTOFtrackPoints){
    fTOFtrackPoints->Delete();
    delete fTOFtrackPoints;
    fTOFtrackPoints=0x0;
  }

  for (Int_t ii=0; ii<kMaxCluster; ii++)
    if (fClusters[ii]) fClusters[ii]->Delete();

  /* RS?
     for(Int_t i=0; i< 20000;i++){
     if(fClusterESD[i]){
     delete fClusterESD[i];
     fClusterESD[i] = NULL;
     }
     if(fHit[i]){
     delete fHit[i];
     fHit[i] = NULL;
     }
     }
  */

}
//_____________________________________________________________________________
void AliTOFtracker::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 AliTOFtracker::PropagateBack(AliESDEvent * const event) {
  //
  // Gets seeds from ESD event and Match with TOF Clusters
  //
  fESDEv = 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!!!");
  }
  //fkRecoParam->Dump();
  //if(fkRecoParam->GetApplyPbPbCuts())fkRecoParam=fkRecoParam->GetPbPbparam();
  //fkRecoParam->PrintParameters();

  /* RS?
  // create clusters from hit
  for(Int_t i=0;i < fNTOFmatched;i++){
    fClusterESD[i] = new AliESDTOFCluster(fHit[i],event);
    fClusterESD[i]->SetStatus(fClusters[i]->GetStatus());
  }
  */
  //Initialise some counters

  fNseeds=0;
  fNseedsTOF=0;
  fngoodmatch=0;
  fnbadmatch=0;
  fnunmatch=0;
  fnmatch=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); // RS: Why this is needed? The event is already set
  }
  //Prepare ESD tracks candidates for TOF Matching
  CollectESD();

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

  //First Step with Strict Matching Criterion
  MatchTracks(0);

  //Second Step with Looser Matching Criterion
  MatchTracks(1);

  //Third Step without kTOFout flag (just to update clusters)
  MatchTracks(2);

  //RS?  event->SetTOFcluster(fNTOFmatched,fClusterESD); 
 
  if (fN==0) {
    AliInfo("No TOF recPoints to be matched with reconstructed tracks");
    fSeeds->Clear();
    fTracks->Clear();
    return 0;
  }

  AliInfo(Form("Number of matched tracks = %d (good = %d, bad = %d)",fnmatch,fngoodmatch,fnbadmatch));

  //Update the matched ESD tracks

  for (Int_t i=0; i<ntrk; i++) {
    // RS: This is a bogus code since t and seed are the same object
    //    AliESDtrack *t=event->GetTrack(i);
    AliESDtrack *seed =(AliESDtrack*)fSeeds->At(i);
    if ( (seed->GetStatus()&AliESDtrack::kTOFin)!=0 ) {
      //t->SetStatus(AliESDtrack::kTOFin);
      //if(seed->GetTOFsignal()>0){
      if ( (seed->GetStatus()&AliESDtrack::kTOFout)!=0 ) {
	//t->SetStatus(AliESDtrack::kTOFout);
	//t->SetTOFsignal(seed->GetTOFsignal());
	//t->SetTOFcluster(seed->GetTOFcluster());
	//t->SetTOFsignalToT(seed->GetTOFsignalToT());
	//t->SetTOFsignalRaw(seed->GetTOFsignalRaw());
	//t->SetTOFsignalDz(seed->GetTOFsignalDz());
	//t->SetTOFsignalDx(seed->GetTOFsignalDx());
	//t->SetTOFDeltaBC(seed->GetTOFDeltaBC());
	//t->SetTOFL0L1(seed->GetTOFL0L1());
	//t->SetTOFCalChannel(seed->GetTOFCalChannel());
	Int_t tlab[3]; seed->GetTOFLabel(tlab);    
	//t->SetTOFLabel(tlab);

	Double_t alphaA = (Double_t)seed->GetAlpha();
	Double_t xA = (Double_t)seed->GetX();
	Double_t yA = (Double_t)seed->GetY();
	Double_t zA = (Double_t)seed->GetZ();
	Double_t p1A = (Double_t)seed->GetSnp();
	Double_t p2A = (Double_t)seed->GetTgl();
	Double_t p3A = (Double_t)seed->GetSigned1Pt();
	const Double_t *covA = (Double_t*)seed->GetCovariance();

	// Make attention, please:
	//      AliESDtrack::fTOFInfo array does not be stored in the AliESDs.root file
	//      it is there only for a check during the reconstruction step.
	Float_t info[10]; seed->GetTOFInfo(info);
	//t->SetTOFInfo(info);
	AliDebug(3,Form(" distance=%f; residual in the pad reference frame: dX=%f, dZ=%f", info[0],info[1],info[2]));

	// Check done:
	//       by calling the AliESDtrack::UpdateTrackParams,
	//       the current track parameters are changed
	//       and it could cause refit problems.
	//       We need to update only the following track parameters:
        //            the track length and expected times.
	//       Removed AliESDtrack::UpdateTrackParams call
	//       Called AliESDtrack::SetIntegratedTimes(...) and
	//       AliESDtrack::SetIntegratedLength() routines.
	/*
	  AliTOFtrack *track = new AliTOFtrack(*seed);
	  t->UpdateTrackParams(track,AliESDtrack::kTOFout); // to be checked - AdC
	  delete track;
	  Double_t time[AliPID::kSPECIESC]; t->GetIntegratedTimes(time);
	*/

	Double_t time[AliPID::kSPECIESC]; seed->GetIntegratedTimes(time,AliPID::kSPECIESC);
	//t->SetIntegratedTimes(time);

	//Double_t length =  seed->GetIntegratedLength();
	//t->SetIntegratedLength(length);

	Double_t alphaB = (Double_t)seed->GetAlpha();
	Double_t xB = (Double_t)seed->GetX();
	Double_t yB = (Double_t)seed->GetY();
	Double_t zB = (Double_t)seed->GetZ();
	Double_t p1B = (Double_t)seed->GetSnp();
	Double_t p2B = (Double_t)seed->GetTgl();
	Double_t p3B = (Double_t)seed->GetSigned1Pt();
	const Double_t *covB = (Double_t*)seed->GetCovariance();
	AliDebug(3,"Track params -now(before)-:");
	AliDebug(3,Form("    X: %f(%f), Y: %f(%f), Z: %f(%f) --- alpha: %f(%f)",
			xB,xA,
			yB,yA,
			zB,zA,
			alphaB,alphaA));
	AliDebug(3,Form("    p1: %f(%f), p2: %f(%f), p3: %f(%f)",
			p1B,p1A,
			p2B,p2A,
			p3B,p3A));
	AliDebug(3,Form("    cov1: %f(%f), cov2: %f(%f), cov3: %f(%f)"
			" cov4: %f(%f), cov5: %f(%f), cov6: %f(%f)"
			" cov7: %f(%f), cov8: %f(%f), cov9: %f(%f)"
			" cov10: %f(%f), cov11: %f(%f), cov12: %f(%f)"
			" cov13: %f(%f), cov14: %f(%f), cov15: %f(%f)",
			covB[0],covA[0],
			covB[1],covA[1],
			covB[2],covA[2],
			covB[3],covA[3],
			covB[4],covA[4],
			covB[5],covA[5],
			covB[6],covA[6],
			covB[7],covA[7],
			covB[8],covA[8],
			covB[9],covA[9],
			covB[10],covA[10],
			covB[11],covA[11],
			covB[12],covA[12],
			covB[13],covA[13],
			covB[14],covA[14]
			));
	AliDebug(2,Form(" TOF params: %6d  %f %f %f %f %f %6d %3d  %f",
			i,
			seed->GetTOFsignalRaw(),
			seed->GetTOFsignal(),
			seed->GetTOFsignalToT(),
			seed->GetTOFsignalDz(),
			seed->GetTOFsignalDx(),
			seed->GetTOFCalChannel(),
			seed->GetTOFcluster(),
			seed->GetIntegratedLength()));
	AliDebug(2,Form(" %f %f %f %f %f %f %f %f %f",
			time[0], time[1], time[2], time[3], time[4], time[5], time[6], time[7], time[8]));
      }
    }
  }
  /* RS?
  if(fNTOFmatched){
    Int_t *matchmap = new Int_t[fNTOFmatched];
    event->SetTOFcluster(fNTOFmatched,fClusterESD,matchmap);
    for (Int_t i=0; i<ntrk; i++) { // remapping after TOF matching selection
      AliESDtrack *t=event->GetTrack(i);
      t->ReMapTOFcluster(fNTOFmatched,matchmap);
    }

    delete[] matchmap;
  }
  */

  //Make TOF PID
  // Now done in AliESDpid
  // fPid->MakePID(event,timeZero);

  fSeeds->Clear();
  //fTracks->Delete();
  fTracks->Clear();
  return 0;
  
}
//_________________________________________________________________________
void AliTOFtracker::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;
 
  TClonesArray &aTOFTrack = *fTracks;
  for (Int_t i=0; i<fNseeds; i++) {

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

    AliTOFtrack *track = new AliTOFtrack(*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);
	  new(aTOFTrack[fNseedsTOF]) AliTOFtrack(*track);
	  fNseedsTOF++;
	  seedsTOF1++;

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

      }
      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);
	  new(aTOFTrack[fNseedsTOF]) AliTOFtrack(*track);
	  fNseedsTOF++;
	  seedsTOF3++;

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

      }
      //delete track;
    }

    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);
 	new(aTOFTrack[fNseedsTOF]) AliTOFtrack(*track);
	fNseedsTOF++;
	seedsTOF2++;

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

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

  // Sort according uncertainties on track position 
  fTracks->Sort();

}

//_________________________________________________________________________
void AliTOFtracker::MatchTracks( Int_t mLastStep){

  // Parameters used/regulating the reconstruction

  //static Float_t corrLen=0.;//0.75;
  static Float_t detDepth=18.;
  static Float_t padDepth=0.5;

  const Float_t kSpeedOfLight= 2.99792458e-2; // speed of light [cm/ps]
  const Float_t kTimeOffset = 0.; // time offset for tracking algorithm [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=fkRecoParam->GetDistanceCut();
  if (dCut==3. && fNseedsTOF<=10) {
    dCut=10.;
    AliInfo(Form("Matching window=%f, since low multiplicity event (fNseedsTOF=%d)",
		 dCut, fNseedsTOF));
  }
  if(mLastStep == 2)
    dCut=10.;


  Double_t maxChi2=fkRecoParam->GetMaxChi2TRD();
  Bool_t timeWalkCorr    = fkRecoParam->GetTimeWalkCorr();
  if(!mLastStep){
    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

  // Get the number of propagation steps
  Int_t nSteps=(Int_t)(detDepth/stepSize);
  AliDebug(1,Form(" Number of steps to be done %d",nSteps));

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

  //PH Arrays (moved outside of the loop)
  Float_t * trackPos[4];
  for (Int_t ii=0; ii<4; ii++) trackPos[ii] = new Float_t[nSteps];
  Int_t * clind = new Int_t[fN];
  
  // Some init
  const Int_t kNclusterMax = 1000; // related to fN value
  TGeoHMatrix global[kNclusterMax];

  //The matching loop
  for (Int_t iseed=0; iseed<fNseedsTOF; iseed++) {

    fTOFtrackPoints->Delete();

    for (Int_t ii=0; ii<kNclusterMax; ii++)
      global[ii] = 0x0;
    AliTOFtrack *track =(AliTOFtrack*)fTracks->UncheckedAt(iseed);
    AliESDtrack *t =(AliESDtrack*)fSeeds->At(track->GetSeedIndex());
    //if ( t->GetTOFsignal()>0. ) continue;
    if ( ((t->GetStatus()&AliESDtrack::kTOFout)!=0 ) && mLastStep < 2) continue;
    AliTOFtrack *trackTOFin = new AliTOFtrack(*track);

    // 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));
      //delete trackTOFin;
      //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<fN; k++) {

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

      AliTOFcluster *c=fClusters[k];
      if (c->GetZ() > z+dz) break;
      if (c->IsUsed() && mLastStep < 2) continue;
      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];
      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);
      fGeom->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++;
      delete trackTOFin;
      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<nSteps; 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;
      }

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

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

      Double_t r[3];
      trackTOFin->GetXYZ(r);
      trackPos[0][nStepsDone-1]= (Float_t) r[0];
      trackPos[1][nStepsDone-1]= (Float_t) r[1];
      trackPos[2][nStepsDone-1]= (Float_t) r[2];   
      trackPos[3][nStepsDone-1]= trackTOFin->GetIntegratedLength();
    }


#if 0
    /*****************/
    /**** OLD CODE ***/
    /*****************/

    Int_t nfound = 0;
    Bool_t accept = kFALSE;
    Bool_t isInside = kFALSE;
    for (Int_t istep=0; istep<nStepsDone; istep++) {

      Float_t ctrackPos[3];	
      ctrackPos[0] = trackPos[0][istep];
      ctrackPos[1] = trackPos[1][istep];
      ctrackPos[2] = trackPos[2][istep];

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

      Float_t dist3d[3];
      accept = kFALSE;
      for (Int_t i=0; i<nc; i++) {
        isInside = fGeom->IsInsideThePad((TGeoHMatrix*)(&global[i]),ctrackPos,dist3d);

        if ( mLastStep ) {
          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);
	  AliDebug(3," I am in the case mLastStep==kTRUE ");
	}
	else {
	  accept = isInside;
	}
	if (accept) {

	  fTOFtrackPoints->AddLast(new AliTOFtrackPoint(clind[i],
							TMath::Sqrt(dist3d[0]*dist3d[0] + dist3d[1]*dist3d[1] + dist3d[2]*dist3d[2]),
							dist3d[2],dist3d[0],dist3d[1],
							AliTOFGeometry::RinTOF()+istep*stepSize,trackPos[3][istep]));

	  AliDebug(3,Form(" dist3dLoc[0] = %f, dist3dLoc[1] = %f, dist3dLoc[2] = %f ",dist3d[0],dist3d[1],dist3d[2]));
	  nfound++;
	  if(accept &&!mLastStep)break;
	}//end if accept

      } //end for on the clusters
      if(accept &&!mLastStep)break;
    } //end for on the steps     

    /*****************/
    /**** OLD CODE ***/
    /*****************/
#endif

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

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

    /*****************/
    /**** NEW CODE ***/
    /*****************/

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

    Int_t nfound = 0;
    Bool_t accept = kFALSE;
    Bool_t isInside = kFALSE;
    for (Int_t istep=0; istep<nStepsDone; istep++) {

      Bool_t gotInsideCluster = kFALSE;
      Int_t trackInsideCluster = -1;

      Float_t ctrackPos[3];     
      ctrackPos[0] = trackPos[0][istep];
      ctrackPos[1] = trackPos[1][istep];
      ctrackPos[2] = trackPos[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++) {

        // ***** NEW *****
        /* check whether track was inside another cluster
         * and in case inhibit this cluster.
         * this will allow to only go on and add track points for
         * that cluster where the track got inside first */
        if (gotInsideCluster && trackInsideCluster != i) {
	  AliDebug(3,Form(" A - istep=%d ~ %d %d ~ nfound=%d",istep,trackInsideCluster,i,nfound));
          continue;
	}
	AliDebug(3,Form(" B - istep=%d ~ %d %d ~ nfound=%d",istep,trackInsideCluster,i,nfound));

        /* check whether track is inside this cluster */
	for (Int_t hh=0; hh<3; hh++) dist3d[hh]=0.;
	isInside = fGeom->IsInsideThePad((TGeoHMatrix*)(&global[i]),ctrackPos,dist3d);

        // ***** NEW *****
        /* if track is inside this cluster set flags which will then
         * inhibit to add track points for the other clusters */
        if (isInside) {
          gotInsideCluster = kTRUE;
          trackInsideCluster = i;
        }

        if ( mLastStep ) {
          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);
          AliDebug(3," I am in the case mLastStep==kTRUE ");
        }

	//***** NEW *****
	/* add point everytime that:
	 * - the track is inside the cluster
	 * - the track got inside the cluster, even when it eventually exited the cluster
	 * - the tracks is within dCut from the cluster
	 */
        if (accept || isInside || gotInsideCluster) {

          fTOFtrackPoints->AddLast(new AliTOFtrackPoint(clind[i],
                                                        TMath::Sqrt(dist3d[0]*dist3d[0] + dist3d[1]*dist3d[1] + dist3d[2]*dist3d[2]),
                                                        dist3d[2],dist3d[0],dist3d[1],
                                                        AliTOFGeometry::RinTOF()+istep*stepSize,trackPos[3][istep]));

          AliDebug(2,Form(" dist3dLoc[0] = %f, dist3dLoc[1] = %f, dist3dLoc[2] = %f ",dist3d[0],dist3d[1],dist3d[2]));
          nfound++;

	  AliDebug(3,Form(" C - istep=%d ~ %d %d ~ nfound=%d",istep,trackInsideCluster,i,nfound));
	  
	  // store the match in the ESD
	  if (mLastStep==2 && !isClusterMatchable[i]) { // add TOF clusters to the track
	    //
	    isClusterMatchable[i] = kTRUE;
	    //Tracking info
	    Double_t mom=t->GetP();
	    AliDebug(3,Form(" Momentum for track %d -> %f", iseed,mom));
	    Double_t time[AliPID::kSPECIESC];
	    // read from old structure (the one used by TPC in reco)
	    for(Int_t isp=0;isp<AliPID::kSPECIESC;isp++){
	      time[isp] = t->GetIntegratedTimesOld(isp); // in ps
	      Double_t mass=AliPID::ParticleMass(isp);
	      Double_t momz = mom*AliPID::ParticleCharge(isp);
	      time[isp]+=(trackPos[3][istep]-trackPos[3][0])/kSpeedOfLight*TMath::Sqrt(momz*momz+mass*mass)/momz;
	      //time[isp]+=(trackPos[3][istep]-trackPos[3][0])/kSpeedOfLight*TMath::Sqrt(mom*mom+mass*mass)/mom;
	    }
	    //
	    AliESDTOFCluster* esdTOFCl = GetESDTOFCluster(clind[i]); 
	    if(!esdTOFCl->Update(t->GetID(),dist3d[0],dist3d[1],dist3d[2],trackPos[3][istep],time))//x,y,z -> tracking RF
	      t->AddTOFcluster(esdTOFCl->GetESDID());
	  }

          // ***** NEW *****
          /* do not break loop in any case
           * if the track got inside a cluster all other clusters
           * are inhibited */
          //      if(accept &&!mLastStep)break;
          
        }//end if accept
        
      } //end for on the clusters
      
      // ***** NEW *****
      /* do not break loop in any case
      * if the track got inside a cluster all other clusters
      * are inhibited but we want to go on adding track points */
      //      if(accept &&!mLastStep)break;
      
    } //end for on the steps     
    if(nc) delete[] isClusterMatchable;

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

    // now choose the cluster to be matched with the track.

    Int_t idclus=-1;
    Float_t  recL = 0.;
    Float_t  xpos=0.;
    Float_t  mindist=1000.;
    Float_t  mindistZ=0.;
    Float_t  mindistY=0.;
    Float_t  mindistX=stepSize;
    for (Int_t iclus= 0; iclus<nfound;iclus++) {
      AliTOFtrackPoint *matchableTOFcluster = (AliTOFtrackPoint*)fTOFtrackPoints->At(iclus);
      //if ( matchableTOFcluster->Distance()<mindist ) {
      if ( TMath::Abs(matchableTOFcluster->DistanceX())<TMath::Abs(mindistX) &&
	   TMath::Abs(matchableTOFcluster->DistanceX())<=stepSize ) {
	mindist = matchableTOFcluster->Distance();
	mindistZ = matchableTOFcluster->DistanceZ(); // Z distance in the
						     // RF of the hit pad
						     // closest to the
						     // reconstructed
						     // track
	mindistY = matchableTOFcluster->DistanceY(); // Y distance in the
						     // RF of the hit pad
						     // closest to the
						     // reconstructed
						     // track
	mindistX = matchableTOFcluster->DistanceX(); // X distance in the
						     // RF of the hit pad
						     // closest to the
						     // reconstructed
						     // track
	xpos = matchableTOFcluster->PropRadius();
        idclus = matchableTOFcluster->Index();
        recL = matchableTOFcluster->Length();// + corrLen*0.5;

	AliDebug(2,Form(" %d(%d) --- %f (%f, %f, %f), step=%f -- idclus=%d --- seed=%d, trackId=%d, trackLab=%d", iclus,nfound,
			mindist,mindistX,mindistY,mindistZ,stepSize,idclus,iseed,track->GetSeedIndex(),track->GetLabel()));

      }
    } // loop on found TOF track points

    if (TMath::Abs(mindistX)>stepSize && idclus!=-1) {
      AliInfo(Form(" %d - not matched --- but idclus=%d, trackId=%d, trackLab=%d",iseed,
		   idclus,track->GetSeedIndex(),track->GetLabel()));
      idclus=-1;
    }

    if (idclus==-1) {
      AliDebug(1,Form("Reconstructed track %d doesn't match any TOF cluster", iseed));
      fnunmatch++;
      delete trackTOFin;
      continue;
    }

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

    fnmatch++;

    AliTOFcluster *c=fClusters[idclus];

    AliDebug(3, Form("%7d     %7d     %10d     %10d  %10d  %10d      %7d",
		     iseed,
		     fnmatch-1,
		     TMath::Abs(trackTOFin->GetLabel()),
		     c->GetLabel(0), c->GetLabel(1), c->GetLabel(2),
		     idclus)); // AdC

    c->Use(); 

    // Track length correction for matching Step 2 
    /*
    if (mLastStep) {
      Float_t rc = TMath::Sqrt(c->GetR()*c->GetR() + c->GetZ()*c->GetZ());
      Float_t rt = TMath::Sqrt(trackPos[0][70]*trackPos[0][70]
			       +trackPos[1][70]*trackPos[1][70]
			       +trackPos[2][70]*trackPos[2][70]);
      Float_t dlt=rc-rt;
      recL=trackPos[3][70]+dlt;
    }
    */
    if (
	(c->GetLabel(0)==TMath::Abs(trackTOFin->GetLabel()))
	||
	(c->GetLabel(1)==TMath::Abs(trackTOFin->GetLabel()))
	||
	(c->GetLabel(2)==TMath::Abs(trackTOFin->GetLabel()))
	) {
      fngoodmatch++;

       AliDebug(2,Form(" track label good %5d",trackTOFin->GetLabel()));

    }
    else {
      fnbadmatch++;

      AliDebug(2,Form(" track label  bad %5d",trackTOFin->GetLabel()));

    }

    delete trackTOFin;

    //  Store quantities to be used in the TOF Calibration
    Float_t tToT=AliTOFGeometry::ToTBinWidth()*c->GetToT()*1E-3; // in ns
//     t->SetTOFsignalToT(tToT);
    Float_t rawTime=AliTOFGeometry::TdcBinWidth()*c->GetTDCRAW()+kTimeOffset; // RAW time,in ps
//     t->SetTOFsignalRaw(rawTime);
//     t->SetTOFsignalDz(mindistZ);
//     t->SetTOFsignalDx(mindistY);
//     t->SetTOFDeltaBC(c->GetDeltaBC());
//     t->SetTOFL0L1(c->GetL0L1Latency());

    Float_t info[10] = {mindist,mindistY,mindistZ,
			0.,0.,0.,0.,0.,0.,0.};
    t->SetTOFInfo(info);
    AliDebug(3,Form(" distance=%f; residual in the pad reference frame: dX=%f, dZ=%f", info[0],info[1],info[2]));


    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);
//     t->SetTOFCalChannel(calindex);

    // keep track of the track labels in the matched cluster
    Int_t tlab[3];
    tlab[0]=c->GetLabel(0);
    tlab[1]=c->GetLabel(1);
    tlab[2]=c->GetLabel(2);
    AliDebug(3,Form(" tdc time of the matched track %6d = ",c->GetTDC()));    
    Double_t tof=AliTOFGeometry::TdcBinWidth()*c->GetTDC()+kTimeOffset; // in ps
    AliDebug(3,Form(" tof time of the matched track: %f = ",tof));    
    Double_t tofcorr=tof;
    if(timeWalkCorr)tofcorr=CorrectTimeWalk(mindistZ,tof);
    AliDebug(3,Form(" tof time of the matched track, after TW corr: %f = ",tofcorr));    
    //Set TOF time signal and pointer to the matched cluster
//     t->SetTOFsignal(tofcorr);
    t->SetTOFcluster(idclus); // pointing to the recPoints tree

    AliDebug(3,Form(" Setting TOF raw time: %f, z distance: %f  corrected time: %f ",rawTime,mindistZ,tofcorr));

    //Tracking info
    Double_t time[AliPID::kSPECIESC];
    // read from old structure (the one used by TPC in reco)
    for(Int_t isp=0;isp<AliPID::kSPECIESC;isp++){
      time[isp] = t->GetIntegratedTimesOld(isp); // in ps
    }
    Double_t mom=t->GetP();
    AliDebug(3,Form(" Momentum for track %d -> %f", iseed,mom));
    for (Int_t j=0;j<AliPID::kSPECIESC;j++) {
      Double_t mass=AliPID::ParticleMass(j);
      Double_t momz = mom*AliPID::ParticleCharge(j);
      time[j]+=(recL-trackPos[3][0])/kSpeedOfLight*TMath::Sqrt(momz*momz+mass*mass)/momz;
      //time[j]+=(recL-trackPos[3][0])/kSpeedOfLight*TMath::Sqrt(mom*mom+mass*mass)/mom;
    }

    AliTOFtrack *trackTOFout = new AliTOFtrack(*t); 
    if (!(trackTOFout->PropagateTo(xpos))) {
      delete trackTOFout;
      continue;
    }

    // If necessary, rotate the track
    Double_t yATxposMax=xpos*TMath::Tan(0.5*AliTOFGeometry::GetAlpha());
    Double_t yATxpos=trackTOFout->GetY();
    if (yATxpos > yATxposMax) {
      if (!(trackTOFout->Rotate(AliTOFGeometry::GetAlpha()))) {
	delete trackTOFout;
	continue;
      }
    } else if (yATxpos < -yATxposMax) {
      if (!(trackTOFout->Rotate(-AliTOFGeometry::GetAlpha()))) {
	delete trackTOFout;
	continue;
      }
    }

    // Fill the track residual histograms and update track only if in the first two step (0 and 1)
    if(mLastStep < 2){
      FillResiduals(trackTOFout,c,kFALSE);

      t->UpdateTrackParams(trackTOFout,AliESDtrack::kTOFout);

// don't update old structure with TOF info
//       t->SetIntegratedLength(recL);
//       t->SetIntegratedTimes(time);
//       t->SetTOFLabel(tlab);
 
      // add tof cluster to the track also for step 2
      AliESDTOFCluster* esdTOFCl = GetESDTOFCluster(idclus); 
      esdTOFCl->Update(t->GetID(),mindistY,mindist,mindistZ,recL,time);
      t->AddTOFcluster(esdTOFCl->GetESDID());
      /* RS?
      if(idclus < 20000){
	fClusterESD[idclus]->Update(t->GetID(),mindistY,mindist,mindistZ,recL,time);//x,y,z -> tracking RF
	
	t->AddTOFcluster(idclus);
      }
      else{
	AliInfo("Too many TOF clusters matched with tracks (> 20000)");
      }
      */
    }
    // Fill Reco-QA histos for Reconstruction
    fHRecNClus->Fill(nc);
    fHRecDist->Fill(mindist);
    if (cov[0]>=0.)
      fHRecSigYVsP->Fill(mom,TMath::Sqrt(cov[0]));
    else
      fHRecSigYVsP->Fill(mom,-TMath::Sqrt(-cov[0]));
    if (cov[2]>=0.)
      fHRecSigZVsP->Fill(mom,TMath::Sqrt(cov[2]));
    else
      fHRecSigZVsP->Fill(mom,-TMath::Sqrt(-cov[2]));
    fHRecSigYVsPWin->Fill(mom,dphi*sensRadius);
    fHRecSigZVsPWin->Fill(mom,dz);

    // Fill Tree for on-the-fly offline Calibration

    if ( !((t->GetStatus() & AliESDtrack::kTIME)==0 ) ) {
      fIch=calindex;
      fToT=tToT;
      fTime=rawTime;
      fExpTimePi=time[2];
      fExpTimeKa=time[3];
      fExpTimePr=time[4];
      fCalTree->Fill();
    }
    delete trackTOFout;
  }


  for (Int_t ii=0; ii<4; ii++) delete [] trackPos[ii];
  delete [] clind;
 
}
//_________________________________________________________________________
Int_t AliTOFtracker::LoadClusters(TTree *cTree) {
  //--------------------------------------------------------------------
  //This function loads the TOF clusters
  //--------------------------------------------------------------------

  Int_t npadX = AliTOFGeometry::NpadX();
  Int_t npadZ = AliTOFGeometry::NpadZ();
  Int_t nStripA = AliTOFGeometry::NStripA();
  Int_t nStripB = AliTOFGeometry::NStripB();
  Int_t nStripC = AliTOFGeometry::NStripC();

  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 nc=clusters->GetEntriesFast();
  fHDigNClus->Fill(nc);

  AliInfo(Form("Number of clusters: %d",nc));

  fN = 0;
  fNTOFmatched = 0;

  for (Int_t i=0; i<nc; i++) {
    AliTOFcluster *c=(AliTOFcluster*)clusters->UncheckedAt(i);
//PH    fClusters[i]=new AliTOFcluster(*c); fN++;
    fClusters[i]=c; fN++;
    c->SetESDID(-1);
  // Fill Digits QA histos
 
    Int_t isector = c->GetDetInd(0);
    Int_t iplate = c->GetDetInd(1);
    Int_t istrip = c->GetDetInd(2);
    Int_t ipadX = c->GetDetInd(4);
    Int_t ipadZ = c->GetDetInd(3);

    Float_t time =(AliTOFGeometry::TdcBinWidth()*c->GetTDC())*1E-3; // in ns
    Float_t tot = (AliTOFGeometry::TdcBinWidth()*c->GetToT())*1E-3;//in ns

    /* RS?
    Int_t ind[5];
    ind[0]=isector;
    ind[1]=iplate;
    ind[2]=istrip;
    ind[3]=ipadZ;
    ind[4]=ipadX;
    Int_t calindex = AliTOFGeometry::GetIndex(ind);
    Int_t tofLabels[3]={c->GetLabel(0),c->GetLabel(1),c->GetLabel(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 zindex=npadZ*(istrip+stripOffset)+(ipadZ+1);
    Int_t phiindex=npadX*isector+ipadX+1;
    fHDigClusMap->Fill(zindex,phiindex);
    fHDigClusTime->Fill(time);
    fHDigClusToT->Fill(tot);

    fNTOFmatched++; // RS: Actually number of clusters
    /* RS?
    if(fNTOFmatched < 20000){
      fHit[fNTOFmatched] = new 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());
      fNTOFmatched++;
    }
    */
  }

  return 0;
}
//_________________________________________________________________________
void AliTOFtracker::UnloadClusters() {
  //--------------------------------------------------------------------
  //This function unloads TOF clusters
  //--------------------------------------------------------------------
  for (Int_t i=0; i<fN; i++) {
//PH    delete fClusters[i];
    fClusters[i] = 0x0;
  }
  /* RS
  for(Int_t i=0; i< 20000;i++){
    if(fClusterESD[i]){
      delete fClusterESD[i];
      fClusterESD[i] = NULL;
    }
    if(fHit[i]){
      delete fHit[i];
      fHit[i] = NULL;
    }
  }
  */
  fN=0;
  fNTOFmatched = 0;
}

//_________________________________________________________________________
Int_t AliTOFtracker::FindClusterIndex(Double_t z) const {
  //--------------------------------------------------------------------
  // This function returns the index of the nearest cluster 
  //--------------------------------------------------------------------
  if (fN==0) return 0;
  if (z <= fClusters[0]->GetZ()) return 0;
  if (z > fClusters[fN-1]->GetZ()) return fN;
  Int_t b=0, e=fN-1, m=(b+e)/2;
  for (; b<e; m=(b+e)/2) {
    if (z > fClusters[m]->GetZ()) b=m+1;
    else e=m; 
  }
  return m;
}

//_________________________________________________________________________
Bool_t AliTOFtracker::GetTrackPoint(Int_t index, AliTrackPoint& p) const
{
  // Get track space point with index i
  // Coordinates are in the global system
  AliTOFcluster *cl = fClusters[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);
  Float_t tiltangle = AliTOFGeometry::GetAngles(cl->GetDetInd(1),cl->GetDetInd(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 = cl->GetDetInd(0);
  if (isector >= nSector)
    AliError(Form("Wrong sector number in TOF (%d) !",isector));
  Int_t iplate = cl->GetDetInd(1);
  if (iplate >= nPlate)
    AliError(Form("Wrong plate number in TOF (%d) !",iplate));
  Int_t istrip = 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;
}
//_________________________________________________________________________
void AliTOFtracker::InitCheckHists() {

  //Init histos for Digits/Reco QA and Calibration


  TDirectory *dir = gDirectory;
  TFile *logFileTOF = 0;

  TSeqCollection *list = gROOT->GetListOfFiles();
  int n = list->GetEntries();
  Bool_t isThere=kFALSE;
  for(int i=0; i<n; i++) {
    logFileTOF = (TFile*)list->At(i);
    if (strstr(logFileTOF->GetName(), "TOFQA.root")){
      isThere=kTRUE;
      break;
    } 
  }

  if(!isThere)logFileTOF = new TFile( "TOFQA.root","RECREATE");
  logFileTOF->cd(); 

  fCalTree = new TTree("CalTree", "Tree for TOF calibration");
  fCalTree->Branch("TOFchannelindex",&fIch,"iTOFch/I");
  fCalTree->Branch("ToT",&fToT,"TOFToT/F");
  fCalTree->Branch("TOFtime",&fTime,"TOFtime/F");
  fCalTree->Branch("PionExpTime",&fExpTimePi,"PiExpTime/F");
  fCalTree->Branch("KaonExpTime",&fExpTimeKa,"KaExpTime/F");
  fCalTree->Branch("ProtonExpTime",&fExpTimePr,"PrExpTime/F");

  //Digits "QA" 
  fHDigClusMap = new TH2F("TOFDig_ClusMap", "",182,0.5,182.5,864, 0.5,864.5);  
  fHDigNClus = new TH1F("TOFDig_NClus", "",200,0.5,200.5);  
  fHDigClusTime = new TH1F("TOFDig_ClusTime", "",2000,0.,200.);  
  fHDigClusToT = new TH1F("TOFDig_ClusToT", "",500,0.,100);  

  //Reco "QA"
  fHRecNClus =new TH1F("TOFRec_NClusW", "",50,0.5,50.5);
  fHRecDist=new TH1F("TOFRec_Dist", "",50,0.5,10.5);
  fHRecSigYVsP=new TH2F("TOFDig_SigYVsP", "",40,0.,4.,100, 0.,5.);
  fHRecSigZVsP=new TH2F("TOFDig_SigZVsP", "",40,0.,4.,100, 0.,5.);
  fHRecSigYVsPWin=new TH2F("TOFDig_SigYVsPWin", "",40,0.,4.,100, 0.,50.);
  fHRecSigZVsPWin=new TH2F("TOFDig_SigZVsPWin", "",40,0.,4.,100, 0.,50.);

  dir->cd();

}

//_________________________________________________________________________
void AliTOFtracker::SaveCheckHists() {

  //write histos for Digits/Reco QA and Calibration

  TDirectory *dir = gDirectory;
  TFile *logFileTOF = 0;

  TSeqCollection *list = gROOT->GetListOfFiles();
  int n = list->GetEntries();
  Bool_t isThere=kFALSE;
  for(int i=0; i<n; i++) {
    logFileTOF = (TFile*)list->At(i);
    if (strstr(logFileTOF->GetName(), "TOFQA.root")){
      isThere=kTRUE;
      break;
    } 
  }
   
  if(!isThere) {
	  AliError(Form("File TOFQA.root not found!! not wring histograms...."));
	  return;
  }
  logFileTOF->cd(); 
  fHDigClusMap->Write(fHDigClusMap->GetName(), TObject::kOverwrite);
  fHDigNClus->Write(fHDigNClus->GetName(), TObject::kOverwrite);
  fHDigClusTime->Write(fHDigClusTime->GetName(), TObject::kOverwrite);
  fHDigClusToT->Write(fHDigClusToT->GetName(), TObject::kOverwrite);
  fHRecNClus->Write(fHRecNClus->GetName(), TObject::kOverwrite);
  fHRecDist->Write(fHRecDist->GetName(), TObject::kOverwrite);
  fHRecSigYVsP->Write(fHRecSigYVsP->GetName(), TObject::kOverwrite);
  fHRecSigZVsP->Write(fHRecSigZVsP->GetName(), TObject::kOverwrite);
  fHRecSigYVsPWin->Write(fHRecSigYVsPWin->GetName(), TObject::kOverwrite);
  fHRecSigZVsPWin->Write(fHRecSigZVsPWin->GetName(), TObject::kOverwrite);
  fCalTree->Write(fCalTree->GetName(),TObject::kOverwrite);
  logFileTOF->Flush();  

  dir->cd();
  }
//_________________________________________________________________________
Float_t AliTOFtracker::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 AliTOFtracker::FillClusterArray(TObjArray* arr) const
{
  //
  // Returns the TOF cluster array
  //

  if (fN==0)
    arr = 0x0;
  else
    for (Int_t i=0; i<fN; ++i) arr->Add(fClusters[i]);

}

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