ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2007, 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.                  *
 **************************************************************************/

/* $Id$ */

//-------------------------------------------------------------------------
//     AOD track implementation of AliVTrack
//     Author: Markus Oldenburg, CERN
//     Markus.Oldenburg@cern.ch
//-------------------------------------------------------------------------

#include <TVector3.h>
#include "AliLog.h"
#include "AliExternalTrackParam.h"
#include "AliVVertex.h"
#include "AliDetectorPID.h"
#include "AliAODEvent.h"
#include "AliAODHMPIDrings.h"
#include "AliTOFHeader.h"

#include "AliAODTrack.h"

ClassImp(AliAODTrack)

//______________________________________________________________________________
AliAODTrack::AliAODTrack() : 
  AliVTrack(),
  fRAtAbsorberEnd(0.),
  fChi2perNDF(-999.),
  fChi2MatchTrigger(0.),
  fPID(0),
  fFlags(0),
  fLabel(-999),
  fTOFLabel(),
  fTrackLength(0),
  fITSMuonClusterMap(0),
  fMUONtrigHitsMapTrg(0),
  fMUONtrigHitsMapTrk(0),
  fFilterMap(0),
  fTPCFitMap(),
  fTPCClusterMap(),
  fTPCSharedMap(),
  fTPCnclsF(0),
  fTPCNCrossedRows(0),
  fID(-999),
  fCharge(-99),
  fType(kUndef),
  fPIDForTracking(AliPID::kPion),
  fCaloIndex(kEMCALNoMatch),
  fCovMatrix(NULL),
  fDetPid(NULL),
  fDetectorPID(NULL),
  fProdVertex(NULL),
  fTrackPhiOnEMCal(-999),
  fTrackEtaOnEMCal(-999),
  fTrackPtOnEMCal(-999),
  fIsMuonGlobalTrack(kFALSE),    // AU
  fTPCsignalTuned(0),
  fTOFsignalTuned(99999),
  fMFTClusterPattern(0),         // AU
  fAODEvent(NULL)
{
  // default constructor

  SetP();
  SetPosition((Float_t*)NULL);
  SetXYAtDCA(-999., -999.);
  SetPxPyPzAtDCA(-999., -999., -999.);
  for (Int_t i = 0; i < 3; i++) {fTOFLabel[i] = -1;}
}

//______________________________________________________________________________
AliAODTrack::AliAODTrack(Short_t id,
			 Int_t label, 
			 Double_t p[3],
			 Bool_t cartesian,
			 Double_t x[3],
			 Bool_t isDCA,
			 Double_t covMatrix[21],
			 Short_t charge,
			 UChar_t itsClusMap,
			 AliAODVertex *prodVertex,
			 Bool_t usedForVtxFit,
			 Bool_t usedForPrimVtxFit,
			 AODTrk_t ttype,
			 UInt_t selectInfo,
			 Float_t chi2perNDF) :
  AliVTrack(),
  fRAtAbsorberEnd(0.),
  fChi2perNDF(chi2perNDF),
  fChi2MatchTrigger(0.),
  fPID(0),
  fFlags(0),
  fLabel(label),
  fTOFLabel(),
  fTrackLength(0),
  fITSMuonClusterMap(0),
  fMUONtrigHitsMapTrg(0),
  fMUONtrigHitsMapTrk(0),
  fFilterMap(selectInfo),
  fTPCFitMap(),
  fTPCClusterMap(),
  fTPCSharedMap(),
  fTPCnclsF(0),
  fTPCNCrossedRows(0),
  fID(id),
  fCharge(charge),
  fType(ttype),
  fPIDForTracking(AliPID::kPion),
  fCaloIndex(kEMCALNoMatch),
  fCovMatrix(NULL),
  fDetPid(NULL),
  fDetectorPID(NULL),
  fProdVertex(prodVertex),
  fTrackPhiOnEMCal(-999),
  fTrackEtaOnEMCal(-999),
  fTrackPtOnEMCal(-999),
  fIsMuonGlobalTrack(kFALSE),    // AU
  fTPCsignalTuned(0),
  fTOFsignalTuned(99999),
  fMFTClusterPattern(0),         // AU
  fAODEvent(NULL)
{
  // constructor
 
  SetP(p, cartesian);
  SetPosition(x, isDCA);
  SetXYAtDCA(-999., -999.);
  SetPxPyPzAtDCA(-999., -999., -999.);
  SetUsedForVtxFit(usedForVtxFit);
  SetUsedForPrimVtxFit(usedForPrimVtxFit);
  if(covMatrix) SetCovMatrix(covMatrix);
  SetITSClusterMap(itsClusMap);
  for (Int_t i=0;i<3;i++) {fTOFLabel[i]=-1;}
}

//______________________________________________________________________________
AliAODTrack::AliAODTrack(Short_t id,
			 Int_t label, 
			 Float_t p[3],
			 Bool_t cartesian,
			 Float_t x[3],
			 Bool_t isDCA,
			 Float_t covMatrix[21],
			 Short_t charge,
			 UChar_t itsClusMap,
			 AliAODVertex *prodVertex,
			 Bool_t usedForVtxFit,
			 Bool_t usedForPrimVtxFit,
			 AODTrk_t ttype,
			 UInt_t selectInfo,
			 Float_t chi2perNDF ) :
  AliVTrack(),
  fRAtAbsorberEnd(0.),
  fChi2perNDF(chi2perNDF),
  fChi2MatchTrigger(0.),
  fPID(0),
  fFlags(0),
  fLabel(label),
  fTOFLabel(),
  fTrackLength(0),
  fITSMuonClusterMap(0),
  fMUONtrigHitsMapTrg(0),
  fMUONtrigHitsMapTrk(0),
  fFilterMap(selectInfo),
  fTPCFitMap(),
  fTPCClusterMap(),
  fTPCSharedMap(),
  fTPCnclsF(0),
  fTPCNCrossedRows(0),
  fID(id),
  fCharge(charge),
  fType(ttype),
  fPIDForTracking(AliPID::kPion),
  fCaloIndex(kEMCALNoMatch),
  fCovMatrix(NULL),
  fDetPid(NULL),
  fDetectorPID(NULL),
  fProdVertex(prodVertex),
  fTrackPhiOnEMCal(-999),
  fTrackEtaOnEMCal(-999),
  fTrackPtOnEMCal(-999),
  fIsMuonGlobalTrack(kFALSE),    // AU
  fTPCsignalTuned(0),
  fTOFsignalTuned(99999),
  fMFTClusterPattern(0),         // AU
  fAODEvent(NULL)
{
  // constructor
 
  SetP(p, cartesian);
  SetPosition(x, isDCA);
  SetXYAtDCA(-999., -999.);
  SetPxPyPzAtDCA(-999., -999., -999.);
  SetUsedForVtxFit(usedForVtxFit);
  SetUsedForPrimVtxFit(usedForPrimVtxFit);
  if(covMatrix) SetCovMatrix(covMatrix);
  SetITSClusterMap(itsClusMap);
  for (Int_t i=0;i<3;i++) {fTOFLabel[i]=-1;}
}

//______________________________________________________________________________
AliAODTrack::~AliAODTrack() 
{
  // destructor
  delete fCovMatrix;
  delete fDetPid;
  delete fDetectorPID;
  if (fPID) {delete[] fPID; fPID = 0;}
}


//______________________________________________________________________________
AliAODTrack::AliAODTrack(const AliAODTrack& trk) :
  AliVTrack(trk),
  fRAtAbsorberEnd(trk.fRAtAbsorberEnd),
  fChi2perNDF(trk.fChi2perNDF),
  fChi2MatchTrigger(trk.fChi2MatchTrigger),
  fPID(0),
  fFlags(trk.fFlags),
  fLabel(trk.fLabel),
  fTOFLabel(),
  fTrackLength(trk.fTrackLength),
  fITSMuonClusterMap(trk.fITSMuonClusterMap),
  fMUONtrigHitsMapTrg(trk.fMUONtrigHitsMapTrg),
  fMUONtrigHitsMapTrk(trk.fMUONtrigHitsMapTrk),
  fFilterMap(trk.fFilterMap),
  fTPCFitMap(trk.fTPCFitMap),
  fTPCClusterMap(trk.fTPCClusterMap),
  fTPCSharedMap(trk.fTPCSharedMap),
  fTPCnclsF(trk.fTPCnclsF),
  fTPCNCrossedRows(trk.fTPCNCrossedRows),
  fID(trk.fID),
  fCharge(trk.fCharge),
  fType(trk.fType),
  fPIDForTracking(trk.fPIDForTracking),
  fCaloIndex(trk.fCaloIndex),
  fCovMatrix(NULL),
  fDetPid(NULL),
  fDetectorPID(NULL),
  fProdVertex(trk.fProdVertex),
  fTrackPhiOnEMCal(trk.fTrackPhiOnEMCal),
  fTrackEtaOnEMCal(trk.fTrackEtaOnEMCal),
  fTrackPtOnEMCal(trk.fTrackPtOnEMCal),
  fIsMuonGlobalTrack(trk.fIsMuonGlobalTrack),    // AU
  fTPCsignalTuned(trk.fTPCsignalTuned),
  fTOFsignalTuned(trk.fTOFsignalTuned),
  fMFTClusterPattern(trk.fMFTClusterPattern),    // AU
  fAODEvent(trk.fAODEvent)
{
  // Copy constructor

  trk.GetP(fMomentum);
  trk.GetPosition(fPosition);
  SetXYAtDCA(trk.XAtDCA(), trk.YAtDCA());
  SetPxPyPzAtDCA(trk.PxAtDCA(), trk.PyAtDCA(), trk.PzAtDCA());
  SetUsedForVtxFit(trk.GetUsedForVtxFit());
  SetUsedForPrimVtxFit(trk.GetUsedForPrimVtxFit());
  if(trk.fCovMatrix) fCovMatrix=new AliAODRedCov<6>(*trk.fCovMatrix);
  if(trk.fDetPid) fDetPid=new AliAODPid(*trk.fDetPid);
  SetPID(trk.fPID);
  if (trk.fDetectorPID) fDetectorPID = new AliDetectorPID(*trk.fDetectorPID);
  for (Int_t i = 0; i < 3; i++) {fTOFLabel[i] = trk.fTOFLabel[i];}  
}

//______________________________________________________________________________
AliAODTrack& AliAODTrack::operator=(const AliAODTrack& trk)
{
  // Assignment operator
  if(this!=&trk) {

    AliVTrack::operator=(trk);

    trk.GetP(fMomentum);
    trk.GetPosition(fPosition);
    SetXYAtDCA(trk.XAtDCA(), trk.YAtDCA());
    SetPxPyPzAtDCA(trk.PxAtDCA(), trk.PyAtDCA(), trk.PzAtDCA());
    fRAtAbsorberEnd    = trk.fRAtAbsorberEnd;
    fChi2perNDF        = trk.fChi2perNDF;
    fChi2MatchTrigger  = trk.fChi2MatchTrigger;
    SetPID( trk.fPID );
    fFlags             = trk.fFlags;
    fLabel             = trk.fLabel;    
    fTrackLength       = trk.fTrackLength;
    fITSMuonClusterMap = trk.fITSMuonClusterMap;
    fMUONtrigHitsMapTrg = trk.fMUONtrigHitsMapTrg;
    fMUONtrigHitsMapTrk = trk.fMUONtrigHitsMapTrk;
    fFilterMap         = trk.fFilterMap;
    fTPCFitMap         = trk.fTPCFitMap;
    fTPCClusterMap     = trk.fTPCClusterMap;
    fTPCSharedMap      = trk.fTPCSharedMap;
    fTPCnclsF          = trk.fTPCnclsF;
    fTPCNCrossedRows   = trk.fTPCNCrossedRows;
    fID                = trk.fID;
    fCharge            = trk.fCharge;
    fType              = trk.fType;
    fPIDForTracking    = trk.fPIDForTracking;
    fCaloIndex         = trk.fCaloIndex;
    fTrackPhiOnEMCal   = trk.fTrackPhiOnEMCal;
    fTrackEtaOnEMCal   = trk.fTrackEtaOnEMCal;
    fTrackPtOnEMCal    = trk.fTrackPtOnEMCal;
    fIsMuonGlobalTrack = trk.fIsMuonGlobalTrack;     // AU
    fTPCsignalTuned    = trk.fTPCsignalTuned;
    fTOFsignalTuned    = trk.fTOFsignalTuned;
    fMFTClusterPattern = trk.fMFTClusterPattern;     // AU
    
    delete fCovMatrix;
    if(trk.fCovMatrix) fCovMatrix=new AliAODRedCov<6>(*trk.fCovMatrix);
    else fCovMatrix=NULL;


    fProdVertex        = trk.fProdVertex;
    SetUsedForVtxFit(trk.GetUsedForVtxFit());
    SetUsedForPrimVtxFit(trk.GetUsedForPrimVtxFit());

    //detector raw signals
    delete fDetPid;
    if(trk.fDetPid) fDetPid=new AliAODPid(*trk.fDetPid);
    else fDetPid=NULL;

    //calibrated PID cache
    delete fDetectorPID;
    fDetectorPID=0x0;
    if (trk.fDetectorPID) fDetectorPID = new AliDetectorPID(*trk.fDetectorPID);
    for (Int_t i = 0; i < 3; i++) {fTOFLabel[i] = trk.fTOFLabel[i];}  
  }

  return *this;
}

//______________________________________________________________________________
Double_t AliAODTrack::M(AODTrkPID_t pid) const
{
  // Returns the mass.
  // Masses for nuclei don't exist in the PDG tables, therefore they were put by hand.

  switch (pid) {

  case kElectron :
    return 0.000510999; //TDatabasePDG::Instance()->GetParticle(11/*::kElectron*/)->Mass();
    break;

  case kMuon :
    return 0.1056584; //TDatabasePDG::Instance()->GetParticle(13/*::kMuonMinus*/)->Mass();
    break;

  case kPion :
    return 0.13957; //TDatabasePDG::Instance()->GetParticle(211/*::kPiPlus*/)->Mass();
    break;

  case kKaon :
    return 0.4937; //TDatabasePDG::Instance()->GetParticle(321/*::kKPlus*/)->Mass();
    break;

  case kProton :
    return 0.9382720; //TDatabasePDG::Instance()->GetParticle(2212/*::kProton*/)->Mass();
    break;

  case kDeuteron :
    return 1.8756; //TDatabasePDG::Instance()->GetParticle(1000010020)->Mass();
    break;

  case kTriton :
    return 2.8089; //TDatabasePDG::Instance()->GetParticle(1000010030)->Mass();
    break;

  case kHelium3 :
    return 2.8084; //TDatabasePDG::Instance()->GetParticle(1000020030)->Mass();
    break;

  case kAlpha :
    return 3.7274; //TDatabasePDG::Instance()->GetParticle(1000020040)->Mass();
    break;

  case kUnknown :
    return -999.;
    break;

  default :
    return -999.;
  }
}

//______________________________________________________________________________
Double_t AliAODTrack::E(AODTrkPID_t pid) const
{
  // Returns the energy of the particle of a given pid.
  
  if (pid != kUnknown) { // particle was identified
    Double_t m = M(pid);
    return TMath::Sqrt(P()*P() + m*m);
  } else { // pid unknown
    return -999.;
  }
}

//______________________________________________________________________________
Double_t AliAODTrack::Y(AODTrkPID_t pid) const
{
  // Returns the rapidity of a particle of a given pid.
  
  if (pid != kUnknown) { // particle was identified
    Double_t e = E(pid);
    Double_t pz = Pz();
    if (e>=0 && e!=pz) { // energy was positive (e.g. not -999.) and not equal to pz
      return 0.5*TMath::Log((e+pz)/(e-pz));
    } else { // energy not known or equal to pz
      return -999.;
    }
  } else { // pid unknown
    return -999.;
  }
}

//______________________________________________________________________________
Double_t AliAODTrack::Y(Double_t m) const
{
  // Returns the rapidity of a particle of a given mass.
  
  if (m >= 0.) { // mass makes sense
    Double_t e = E(m);
    Double_t pz = Pz();
    if (e>=0 && e!=pz) { // energy was positive (e.g. not -999.) and not equal to pz
      return 0.5*TMath::Log((e+pz)/(e-pz));
    } else { // energy not known or equal to pz
      return -999.;
    }
  } else { // pid unknown
    return -999.;
  }
}

void AliAODTrack::SetTOFLabel(const Int_t *p) {  
  // Sets  (in TOF)
  for (Int_t i = 0; i < 3; i++) fTOFLabel[i]=p[i];
}

//_______________________________________________________________________
void AliAODTrack::GetTOFLabel(Int_t *p) const {
  // Gets (in TOF)
  for (Int_t i=0; i<3; i++) p[i]=fTOFLabel[i];
}

//______________________________________________________________________________
AliAODTrack::AODTrkPID_t AliAODTrack::GetMostProbablePID() const 
{
  // Returns the most probable PID array element.
  
  Int_t nPID = 10;
  AODTrkPID_t loc = kUnknown;
  Bool_t allTheSame = kTRUE;
  if (fPID) {
    Double_t max = 0.;
    for (Int_t iPID = 0; iPID < nPID; iPID++) {
      if (fPID[iPID] >= max) {
	if (fPID[iPID] > max) {
	  allTheSame = kFALSE;
	  max = fPID[iPID];
	  loc = (AODTrkPID_t)iPID;
	} else {
	  allTheSame = kTRUE;
	}
      }
    }
  }
  return allTheSame ? AODTrkPID_t(GetPIDForTracking()) : loc;
}

//______________________________________________________________________________
void AliAODTrack::ConvertAliPIDtoAODPID()
{
  // Converts AliPID array.
  // The numbering scheme is the same for electrons, muons, pions, kaons, and protons.
  // Everything else has to be set to zero.
  if (fPID) {
    fPID[kDeuteron] = 0.;
    fPID[kTriton]   = 0.;
    fPID[kHelium3]  = 0.;
    fPID[kAlpha]    = 0.;
    fPID[kUnknown]  = 0.;
  }
  return;
}


//______________________________________________________________________________
template <typename T> void AliAODTrack::SetP(const T *p, const Bool_t cartesian) 
{
  // Set the momentum

  if (p) {
    if (cartesian) {
      Double_t pt2 = p[0]*p[0] + p[1]*p[1];
      Double_t pp  = TMath::Sqrt(pt2 + p[2]*p[2]);
      
      fMomentum[0] = TMath::Sqrt(pt2); // pt
      fMomentum[1] = (pt2 != 0.) ? TMath::Pi()+TMath::ATan2(-p[1], -p[0]) : -999; // phi
      fMomentum[2] = (pp != 0.) ? TMath::ACos(p[2] / pp) : -999.; // theta
    } else {
      fMomentum[0] = p[0];  // pt
      fMomentum[1] = p[1];  // phi
      fMomentum[2] = p[2];  // theta
    }
  } else {
    fMomentum[0] = -999.;
    fMomentum[1] = -999.;
    fMomentum[2] = -999.;
  }
}

/*
//______________________________________________________________________________
template <typename T> void AliAODTrack::SetPosition(const T *x, const Bool_t dca) 
{
  // set the position

  if (x) {
    if (!dca) {
      ResetBit(kIsDCA);

      fPosition[0] = x[0];
      fPosition[1] = x[1];
      fPosition[2] = x[2];
    } else {
      SetBit(kIsDCA);
      // don't know any better yet
      fPosition[0] = -999.;
      fPosition[1] = -999.;
      fPosition[2] = -999.;
    }
  } else {
    ResetBit(kIsDCA);

    fPosition[0] = -999.;
    fPosition[1] = -999.;
    fPosition[2] = -999.;
  }
}
*/
//______________________________________________________________________________
void AliAODTrack::SetDCA(Double_t d, Double_t z) 
{
  // set the dca
  fPosition[0] = d;
  fPosition[1] = z;
  fPosition[2] = 0.;
  SetBit(kIsDCA);
}

//______________________________________________________________________________
void AliAODTrack::Print(Option_t* /* option */) const
{
  // prints information about AliAODTrack

  printf("Object name: %s   Track type: %s\n", GetName(), GetTitle()); 
  printf("        px = %f\n", Px());
  printf("        py = %f\n", Py());
  printf("        pz = %f\n", Pz());
  printf("        pt = %f\n", Pt());
  printf("      1/pt = %f\n", OneOverPt());
  printf("     theta = %f\n", Theta());
  printf("       phi = %f\n", Phi());
  printf("  chi2/NDF = %f\n", Chi2perNDF());
  printf("    charge = %d\n", Charge());
}

//______________________________________________________________________________
void AliAODTrack::SetMatchTrigger(Int_t matchTrig)
{
  // Set the MUON trigger information
  switch(matchTrig){
    case 0: // 0 track does not match trigger
      fITSMuonClusterMap=fITSMuonClusterMap&0x3fffffff;
      break;
    case 1: // 1 track match but does not pass pt cut
      fITSMuonClusterMap=(fITSMuonClusterMap&0x3fffffff)|0x40000000;
      break;
    case 2: // 2 track match Low pt cut
      fITSMuonClusterMap=(fITSMuonClusterMap&0x3fffffff)|0x80000000;
      break;
    case 3: // 3 track match High pt cut
      fITSMuonClusterMap=fITSMuonClusterMap|0xc0000000;
      break;
    default:
      fITSMuonClusterMap=fITSMuonClusterMap&0x3fffffff;
      AliWarning(Form("unknown case for matchTrig: %d\n",matchTrig));
  }
}

//______________________________________________________________________________
Bool_t AliAODTrack::HitsMuonChamber(Int_t MuonChamber, Int_t cathode) const
{
  // return kTRUE if the track fires the given tracking or trigger chamber.
  // If the chamber is a trigger one:
  // - if cathode = 0 or 1, the track matches the corresponding cathode
  // - if cathode = -1, the track matches both cathodes
  
  if (MuonChamber < 0) return kFALSE;
  
  if (MuonChamber < 10) return TESTBIT(GetMUONClusterMap(), MuonChamber);
  
  if (MuonChamber < 14) {
    
    if (cathode < 0) return TESTBIT(GetHitsPatternInTrigCh(), 13-MuonChamber) &&
                            TESTBIT(GetHitsPatternInTrigCh(), 13-MuonChamber+4);
    
    if (cathode < 2) return TESTBIT(GetHitsPatternInTrigCh(), 13-MuonChamber+(1-cathode)*4);
    
  }
  
  return kFALSE;
}

//______________________________________________________________________________
Bool_t AliAODTrack::MatchTriggerDigits() const
{
  // return kTRUE if the track matches a digit on both planes of at least 2 trigger chambers
  
  Int_t nMatchedChambers = 0;
  for (Int_t ich=10; ich<14; ich++) if (HitsMuonChamber(ich)) nMatchedChambers++;
  
  return (nMatchedChambers >= 2);
}

//______________________________________________________________________________
Int_t AliAODTrack::GetMuonTrigDevSign() const
{
  /// Return the sign of the  MTR deviation

  Int_t signInfo = (Int_t)((fMUONtrigHitsMapTrg>>30)&0x3);
  // Dummy value for old AODs which do not have the info
  if ( signInfo == 0 ) return -999;
  return signInfo - 2;
}

//______________________________________________________________________________
Bool_t AliAODTrack::PropagateToDCA(const AliVVertex *vtx, 
    Double_t b, Double_t maxd, Double_t dz[2], Double_t covar[3])
{
  // compute impact parameters to the vertex vtx and their covariance matrix
  // b is the Bz, needed to propagate correctly the track to vertex 
  // only the track parameters are update after the propagation (pos and mom),
  // not the covariance matrix. This is OK for propagation over short distance
  // inside the beam pipe.
  // return kFALSE is something went wrong

  // allowed only for tracks inside the beam pipe
  Float_t xstart2 = fPosition[0]*fPosition[0]+fPosition[1]*fPosition[1];
  if(xstart2 > 3.*3.) { // outside beampipe radius
    AliError("This method can be used only for propagation inside the beam pipe");
    return kFALSE; 
  }

  // convert to AliExternalTrackParam
  AliExternalTrackParam etp; etp.CopyFromVTrack(this);  

  // propagate
  if(!etp.PropagateToDCA(vtx,b,maxd,dz,covar)) return kFALSE;

  // update track position and momentum
  Double_t mom[3];
  etp.GetPxPyPz(mom);
  SetP(mom,kTRUE);
  etp.GetXYZ(mom);
  SetPosition(mom,kFALSE);


  return kTRUE;
}

//______________________________________________________________________________
Bool_t AliAODTrack::GetPxPyPz(Double_t p[3]) const 
{
    //---------------------------------------------------------------------
    // This function returns the global track momentum components
    //---------------------------------------------------------------------
  p[0]=Px(); p[1]=Py(); p[2]=Pz();
  return kTRUE;
}


//_______________________________________________________________________
Float_t AliAODTrack::GetTPCClusterInfo(Int_t nNeighbours/*=3*/, Int_t type/*=0*/, Int_t row0, Int_t row1, Int_t bitType ) const
{
  //
  // TPC cluster information 
  // type 0: get fraction of found/findable clusters with neighbourhood definition
  //      1: findable clusters with neighbourhood definition
  //      2: found clusters
  // bitType:
  //      0 - all cluster used
  //      1 - clusters  used for the kalman update
  // definition of findable clusters:
  //            a cluster is defined as findable if there is another cluster
  //           within +- nNeighbours pad rows. The idea is to overcome threshold
  //           effects with a very simple algorithm.
  //

  
  Int_t found=0;
  Int_t findable=0;
  Int_t last=-nNeighbours;
  const TBits & clusterMap = (bitType%2==0) ? fTPCClusterMap : fTPCFitMap;
  
  Int_t upperBound=clusterMap.GetNbits();
  if (upperBound>row1) upperBound=row1;
  for (Int_t i=row0; i<upperBound; ++i){
    //look to current row
    if (clusterMap[i]) {
      last=i;
      ++found;
      ++findable;
      continue;
    }
    //look to nNeighbours before
    if ((i-last)<=nNeighbours) {
      ++findable;
      continue;
    }
    //look to nNeighbours after
    for (Int_t j=i+1; j<i+1+nNeighbours; ++j){
      if (clusterMap[j]){
        ++findable;
        break;
      }
    }
  }
  if (type==2) return found;
  if (type==1) return findable;
  
  if (type==0){
    Float_t fraction=0;
    if (findable>0) 
      fraction=(Float_t)found/(Float_t)findable;
    else 
      fraction=0;
    return fraction;
  }  
  return 0;  // undefined type - default value
}


//______________________________________________________________________________
Double_t  AliAODTrack::GetTRDslice(Int_t plane, Int_t slice) const {
  //
  // return TRD Pid information
  //
  if (!fDetPid) return -1;
  Double32_t *trdSlices=fDetPid->GetTRDslices();
  if (!trdSlices) return -1;
  if ((plane<0) || (plane>=kTRDnPlanes)) {
    return -1.;
  }

  Int_t ns=fDetPid->GetTRDnSlices();
  if ((slice<-1) || (slice>=ns)) {
    return -1.;
  }

  if(slice>=0) return trdSlices[plane*ns + slice];

  // return average of the dEdx measurements
  Double_t q=0.; Double32_t *s = &trdSlices[plane*ns];
  for (Int_t i=0; i<ns; i++, s++) if((*s)>0.) q+=(*s);
  return q/ns;
}

//______________________________________________________________________________
UChar_t AliAODTrack::GetTRDntrackletsPID() const{
  //
  // return number of tracklets calculated from the slices
  //
  if(!fDetPid) return -1;
  return fDetPid->GetTRDntrackletsPID();
}

//______________________________________________________________________________
UChar_t AliAODTrack::GetTRDncls(Int_t layer) const {
  // 
  // return number of TRD clusters
  //
  if(!fDetPid || layer > 5) return -1;
  if(layer < 0) return fDetPid->GetTRDncls();
  else return fDetPid->GetTRDncls(layer);
}

//______________________________________________________________________________
Double_t AliAODTrack::GetTRDmomentum(Int_t plane, Double_t */*sp*/) const
{
  //Returns momentum estimation
  // in TRD layer "plane".

  if (!fDetPid) return -1;
  const Double_t *trdMomentum=fDetPid->GetTRDmomentum();

  if (!trdMomentum) {
    return -1.;
  }
  if ((plane<0) || (plane>=kTRDnPlanes)) {
    return -1.;
  }

  return trdMomentum[plane];
}

//_______________________________________________________________________
Int_t AliAODTrack::GetTOFBunchCrossing(Double_t b, Bool_t) const 
{
  // Returns the number of bunch crossings after trigger (assuming 25ns spacing)
  const double kSpacing = 25e3; // min interbanch spacing
  const double kShift = 0;
  Int_t bcid = kTOFBCNA; // defualt one
  if (!IsOn(kTOFout) || !IsOn(kESDpid)) return bcid; // no info
  //
  double tdif = GetTOFsignal();
  if (IsOn(kTIME)) { // integrated time info is there
    int pid = (int)GetMostProbablePID();
    double ttimes[10]; 
    GetIntegratedTimes(ttimes, pid>=AliPID::kSPECIES ? AliPID::kSPECIESC : AliPID::kSPECIES);
    tdif -= ttimes[pid];
  }
  else { // assume integrated time info from TOF radius and momentum
    const double kRTOF = 385.;
    const double kCSpeed = 3.e-2; // cm/ps
    double p = P();
    if (p<0.001) p = 1.0;
    double m = M();
    double path =  kRTOF;     // mean TOF radius
    if (TMath::Abs(b)>kAlmost0) {  // account for curvature
      double curv = Pt()/(b*kB2C);
      if (curv>kAlmost0) {
	double tgl = Pz()/Pt();
	path = 2./curv*TMath::ASin(kRTOF*curv/2.)*TMath::Sqrt(1.+tgl*tgl);
      }
    }
    tdif -= path/kCSpeed*TMath::Sqrt(1.+m*m/(p*p));
  }
  bcid = TMath::Nint((tdif - kShift)/kSpacing);
  return bcid;
}

void AliAODTrack::SetDetectorPID(const AliDetectorPID *pid)
{
  //
  // Set the detector PID
  //
  if (fDetectorPID) delete fDetectorPID;
  fDetectorPID=pid;
  
}

//_____________________________________________________________________________
Double_t AliAODTrack::GetHMPIDsignal() const
{
  if(fAODEvent->GetHMPIDringForTrackID(fID)) return fAODEvent->GetHMPIDringForTrackID(fID)->GetHmpSignal();
  else return -999.;
}

//_____________________________________________________________________________
Double_t AliAODTrack::GetHMPIDoccupancy() const
{
  if(fAODEvent->GetHMPIDringForTrackID(fID)) return fAODEvent->GetHMPIDringForTrackID(fID)->GetHmpOccupancy();
  else return -999.;
}

//_____________________________________________________________________________
Int_t AliAODTrack::GetHMPIDcluIdx() const
{
  if(fAODEvent->GetHMPIDringForTrackID(fID)) return fAODEvent->GetHMPIDringForTrackID(fID)->GetHmpCluIdx();
  else return -999;
}

//_____________________________________________________________________________
void AliAODTrack::GetHMPIDtrk(Float_t &x, Float_t &y, Float_t &th, Float_t &ph) const
{
  x = -999; y = -999.; th = -999.; ph = -999.;

  const AliAODHMPIDrings *ring=fAODEvent->GetHMPIDringForTrackID(fID);
  if(ring){
    x  = ring->GetHmpTrackX();
    y  = ring->GetHmpTrackY();
    th = ring->GetHmpTrackTheta();
    ph = ring->GetHmpTrackPhi();
  }
}

//_____________________________________________________________________________
void AliAODTrack::GetHMPIDmip(Float_t &x,Float_t &y,Int_t &q, Int_t &nph) const
{
  x = -999; y = -999.; q = -999; nph = -999;
  
  const AliAODHMPIDrings *ring=fAODEvent->GetHMPIDringForTrackID(fID);
  if(ring){
    x   = ring->GetHmpMipX();
    y   = ring->GetHmpMipY();
    q   = (Int_t)ring->GetHmpMipCharge();
    nph = (Int_t)ring->GetHmpNumOfPhotonClusters();
  }
}

//_____________________________________________________________________________
Bool_t AliAODTrack::GetOuterHmpPxPyPz(Double_t *p) const 
{ 
 if(fAODEvent->GetHMPIDringForTrackID(fID)) {fAODEvent->GetHMPIDringForTrackID(fID)->GetHmpMom(p); return kTRUE;}
 
 else return kFALSE;      
}
//_____________________________________________________________________________
Bool_t AliAODTrack::GetXYZAt(Double_t x, Double_t b, Double_t *r) const
{
  //---------------------------------------------------------------------
  // This function returns the global track position extrapolated to
  // the radial position "x" (cm) in the magnetic field "b" (kG)
  //---------------------------------------------------------------------

  //conversion of track parameter representation is
  //based on the implementation of AliExternalTrackParam::Set(...)
  //maybe some of this code can be moved to AliVTrack to avoid code duplication
  Double_t alpha=0.0;
  Double_t radPos2 = fPosition[0]*fPosition[0]+fPosition[1]*fPosition[1];  
  Double_t radMax  = 45.; // approximately ITS outer radius
  if (radPos2 < radMax*radMax) { // inside the ITS     
    alpha = fMomentum[1]; //TMath::ATan2(fMomentum[1],fMomentum[0]); // fMom is pt,phi,theta!
  } else { // outside the ITS
     Float_t phiPos = TMath::Pi()+TMath::ATan2(-fPosition[1], -fPosition[0]);
     alpha = 
     TMath::DegToRad()*(20*((((Int_t)(phiPos*TMath::RadToDeg()))/20))+10);
  }
  //
  // Get the vertex of origin and the momentum
  TVector3 ver(fPosition[0],fPosition[1],fPosition[2]);
  TVector3 mom(Px(),Py(),Pz());
  //
  // Rotate to the local coordinate system
  ver.RotateZ(-alpha);
  mom.RotateZ(-alpha);

  Double_t param0 = ver.Y();
  Double_t param1 = ver.Z();
  Double_t param2 = TMath::Sin(mom.Phi());
  Double_t param3 = mom.Pz()/mom.Pt();
  Double_t param4 = TMath::Sign(1/mom.Pt(),(Double_t)fCharge);

  //calculate the propagated coordinates
  //this is based on AliExternalTrackParam::GetXYZAt(Double_t x, Double_t b, Double_t *r)
  Double_t dx=x-ver.X();
  if(TMath::Abs(dx)<=kAlmost0) return GetXYZ(r);

  Double_t f1=param2;
  Double_t f2=f1 + dx*param4*b*kB2C;

  if (TMath::Abs(f1) >= kAlmost1) return kFALSE;
  if (TMath::Abs(f2) >= kAlmost1) return kFALSE;
  
  Double_t r1=TMath::Sqrt((1.-f1)*(1.+f1)), r2=TMath::Sqrt((1.-f2)*(1.+f2));
  r[0] = x;
  r[1] = param0 + dx*(f1+f2)/(r1+r2);
  r[2] = param1 + dx*(r2 + f2*(f1+f2)/(r1+r2))*param3;//Thanks to Andrea & Peter
  return Local2GlobalPosition(r,alpha);
}

//_____________________________________________________________________________
Bool_t AliAODTrack::GetXYZatR(Double_t xr,Double_t bz, Double_t *xyz, Double_t* alpSect) const
{
  // This method has 3 modes of behaviour
  // 1) xyz[3] array is provided but alpSect pointer is 0: calculate the position of track intersection 
  //    with circle of radius xr and fill it in xyz array
  // 2) alpSect pointer is provided: find alpha of the sector where the track reaches local coordinate xr
  //    Note that in this case xr is NOT the radius but the local coordinate.
  //    If the xyz array is provided, it will be filled by track lab coordinates at local X in this sector
  // 3) Neither alpSect nor xyz pointers are provided: just check if the track reaches radius xr
  //
  //
  Double_t alpha=0.0;
  Double_t radPos2 = fPosition[0]*fPosition[0]+fPosition[1]*fPosition[1];  
  Double_t radMax  = 45.; // approximately ITS outer radius
  if (radPos2 < radMax*radMax) { // inside the ITS     
    alpha = fMomentum[1]; //TMath::ATan2(fMomentum[1],fMomentum[0]); // fMom is pt,phi,theta!
  } else { // outside the ITS
     Float_t phiPos = TMath::Pi()+TMath::ATan2(-fPosition[1], -fPosition[0]);
     alpha = 
     TMath::DegToRad()*(20*((((Int_t)(phiPos*TMath::RadToDeg()))/20))+10);
  }
  //  
  // Get the vertex of origin and the momentum
  TVector3 ver(fPosition[0],fPosition[1],fPosition[2]);
  TVector3 mom(Px(),Py(),Pz());
  //
  // Rotate to the local coordinate system
  ver.RotateZ(-alpha);
  mom.RotateZ(-alpha);
  //
  Double_t fx = ver.X();
  Double_t fy = ver.Y();
  Double_t fz = ver.Z();
  Double_t sn = TMath::Sin(mom.Phi());
  Double_t tgl = mom.Pz()/mom.Pt();
  Double_t crv = TMath::Sign(1/mom.Pt(),(Double_t)fCharge)*bz*kB2C;
  //
  if ( (TMath::Abs(bz))<kAlmost0Field ) crv=0.;
  //
  // general circle parameterization:
  // x = (r0+tR)cos(phi0) - tR cos(t+phi0)
  // y = (r0+tR)sin(phi0) - tR sin(t+phi0)
  // where qb is the sign of the curvature, tR is the track's signed radius and r0 
  // is the DCA of helix to origin
  //
  double tR = 1./crv;            // track radius signed
  double cs = TMath::Sqrt((1-sn)*(1+sn));
  double x0 = fx - sn*tR;        // helix center coordinates
  double y0 = fy + cs*tR;
  double phi0 = TMath::ATan2(y0,x0);  // angle of PCA wrt to the origin
  if (tR<0) phi0 += TMath::Pi();
  if      (phi0 > TMath::Pi()) phi0 -= 2.*TMath::Pi();
  else if (phi0 <-TMath::Pi()) phi0 += 2.*TMath::Pi();
  double cs0 = TMath::Cos(phi0);
  double sn0 = TMath::Sin(phi0);
  double r0 = x0*cs0 + y0*sn0 - tR; // DCA to origin
  double r2R = 1.+r0/tR;
  //
  //
  if (r2R<kAlmost0) return kFALSE;  // helix is centered at the origin, no specific intersection with other concetric circle
  if (!xyz && !alpSect) return kTRUE;
  double xr2R = xr/tR;
  double r2Ri = 1./r2R;
  // the intersection cos(t) = [1 + (r0/tR+1)^2 - (r0/tR)^2]/[2(1+r0/tR)]
  double cosT = 0.5*(r2R + (1-xr2R*xr2R)*r2Ri);
  if ( TMath::Abs(cosT)>kAlmost1 ) {
    //    printf("Does not reach : %f %f\n",r0,tR);
    return kFALSE; // track does not reach the radius xr
  }
  //
  double t = TMath::ACos(cosT);
  if (tR<0) t = -t;
  // intersection point
  double xyzi[3];
  xyzi[0] = x0 - tR*TMath::Cos(t+phi0);
  xyzi[1] = y0 - tR*TMath::Sin(t+phi0);
  if (xyz) { // if postition is requested, then z is needed:
    double t0 = TMath::ATan2(cs,-sn) - phi0;
    double z0 = fz - t0*tR*tgl;    
    xyzi[2] = z0 + tR*t*tgl;
  }
  else xyzi[2] = 0;
  //
  Local2GlobalPosition(xyzi,alpha);
  //
  if (xyz) {
    xyz[0] = xyzi[0];
    xyz[1] = xyzi[1];
    xyz[2] = xyzi[2];
  }
  //
  if (alpSect) {
    double &alp = *alpSect;
    // determine the sector of crossing
    double phiPos = TMath::Pi()+TMath::ATan2(-xyzi[1],-xyzi[0]);
    int sect = ((Int_t)(phiPos*TMath::RadToDeg()))/20;
    alp = TMath::DegToRad()*(20*sect+10);
    double x2r,f1,f2,r1,r2,dx,dy2dx,yloc=0, ylocMax = xr*TMath::Tan(TMath::Pi()/18); // min max Y within sector at given X
    //
    while(1) {
      Double_t ca=TMath::Cos(alp-alpha), sa=TMath::Sin(alp-alpha);
      if ((cs*ca+sn*sa)<0) {
	AliDebug(1,Form("Rotation to target sector impossible: local cos(phi) would become %.2f",cs*ca+sn*sa));
	return kFALSE;
      }
      //
      f1 = sn*ca - cs*sa;
      if (TMath::Abs(f1) >= kAlmost1) {
	AliDebug(1,Form("Rotation to target sector impossible: local sin(phi) would become %.2f",f1));
	return kFALSE;
      }
      //
      double tmpX =  fx*ca + fy*sa;
      double tmpY = -fx*sa + fy*ca;
      //
      // estimate Y at X=xr
      dx=xr-tmpX;
      x2r = crv*dx;
      f2=f1 + x2r;
      if (TMath::Abs(f2) >= kAlmost1) {
	AliDebug(1,Form("Propagation in target sector failed ! %.10e",f2));
	return kFALSE;
      }
      r1 = TMath::Sqrt((1.-f1)*(1.+f1));
      r2 = TMath::Sqrt((1.-f2)*(1.+f2));
      dy2dx = (f1+f2)/(r1+r2);
      yloc = tmpY + dx*dy2dx;
      if      (yloc>ylocMax)  {alp += 2*TMath::Pi()/18; sect++;}
      else if (yloc<-ylocMax) {alp -= 2*TMath::Pi()/18; sect--;}
      else break;
      if      (alp >= TMath::Pi()) alp -= 2*TMath::Pi();
      else if (alp < -TMath::Pi()) alp += 2*TMath::Pi();
      //      if (sect>=18) sect = 0;
      //      if (sect<=0) sect = 17;
    }
    //
    // if alpha was requested, then recalculate the position at intersection in sector
    if (xyz) {
      xyz[0] = xr;
      xyz[1] = yloc;
      if (TMath::Abs(x2r)<0.05) xyz[2] = fz + dx*(r2 + f2*dy2dx)*tgl;
      else {
	// for small dx/R the linear apporximation of the arc by the segment is OK,
	// but at large dx/R the error is very large and leads to incorrect Z propagation
	// angle traversed delta = 2*asin(dist_start_end / R / 2), hence the arc is: R*deltaPhi
	// The dist_start_end is obtained from sqrt(dx^2+dy^2) = x/(r1+r2)*sqrt(2+f1*f2+r1*r2)
	// Similarly, the rotation angle in linear in dx only for dx<<R
	double chord = dx*TMath::Sqrt(1+dy2dx*dy2dx);   // distance from old position to new one
	double rot = 2*TMath::ASin(0.5*chord*crv); // angular difference seen from the circle center
	xyz[2] = fz + rot/crv*tgl;
      }
      Local2GlobalPosition(xyz,alp);
    }
  }
  return kTRUE;    
  //
}

//_______________________________________________________
void  AliAODTrack::GetITSdEdxSamples(Double_t s[4]) const
{
  // get ITS dedx samples
  if (!fDetPid) for (int i=4;i--;) s[i]=0;
  else          for (int i=4;i--;) s[i] = fDetPid->GetITSdEdxSample(i);
}

//_____________________________________________
Double_t AliAODTrack::GetMassForTracking() const
{
  int pid = fPIDForTracking;
  if (pid<AliPID::kPion) pid = AliPID::kPion;
  double m = AliPID::ParticleMass(fPIDForTracking);
  return (fPIDForTracking==AliPID::kHe3 || fPIDForTracking==AliPID::kAlpha) ? -m : m;
}
//_______________________________________________________
const AliTOFHeader* AliAODTrack::GetTOFHeader() const {
  return fAODEvent->GetTOFHeader();
}
  
//_______________________________________________________
Int_t AliAODTrack::GetNcls(Int_t idet) const
{
  // Get number of clusters by subdetector index
  //
  Int_t ncls = 0;
  switch(idet){
  case 0:
    ncls = GetITSNcls();
    break;
  case 1:
    ncls = (Int_t)GetTPCNcls();
    break;
  case 2:
    ncls = (Int_t)GetTRDncls();
    break;
  case 3:
    break;
    /*if (fTOFindex != -1)
      ncls = 1;*/
    break;
  case 4: //PHOS
    break;
  case 5: //HMPID
    break;
    if ((GetHMPIDcluIdx() >= 0) && (GetHMPIDcluIdx() < 7000000)) {
      if ((GetHMPIDcluIdx()%1000000 != 9999) && (GetHMPIDcluIdx()%1000000 != 99999)) {
	ncls = 1;
	}
    }    
    break;
  default:
    break;
  }
  return ncls;
}

Int_t AliAODTrack::GetTrackParam         ( AliExternalTrackParam & ) const {return 0;} 
Int_t AliAODTrack::GetTrackParamRefitted ( AliExternalTrackParam & ) const {return 0;} 
Int_t AliAODTrack::GetTrackParamIp       ( AliExternalTrackParam & ) const {return 0;} 
Int_t AliAODTrack::GetTrackParamTPCInner ( AliExternalTrackParam & ) const {return 0;} 
Int_t AliAODTrack::GetTrackParamOp       ( AliExternalTrackParam & ) const {return 0;} 
Int_t AliAODTrack::GetTrackParamCp       ( AliExternalTrackParam & ) const {return 0;} 
Int_t AliAODTrack::GetTrackParamITSOut   ( AliExternalTrackParam & ) const {return 0;} 

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