ROOT logo
#ifndef ALIESDTRACK_H
#define ALIESDTRACK_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id: AliESDtrack.h 64153 2013-09-09 09:33:47Z akalweit $ */

//-------------------------------------------------------------------------
//                          Class AliESDtrack
//   This is the class to deal with during the physics analysis of data
//      
//         Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
//-------------------------------------------------------------------------
/*****************************************************************************
 *  Use GetExternalParameters() and GetExternalCovariance() to access the    *
 *      track information regardless of its internal representation.         *
 * This formation is now fixed in the following way:                         *
 *      external param0:   local Y-coordinate of a track (cm)                *
 *      external param1:   local Z-coordinate of a track (cm)                *
 *      external param2:   local sine of the track momentum azimuthal angle  *
 *      external param3:   tangent of the track momentum dip angle           *
 *      external param4:   1/pt (1/(GeV/c))                                  *
 *                                                                           *
 * The Get*Label() getters return the label of the associated MC particle.   *
 * The absolute value of this label is the index of the particle within the  *
 * MC stack. If the label is negative, this track was assigned a certain     *
 * number of clusters that did not in fact belong to this track.             *
 *****************************************************************************/

#include <TBits.h>
#include "AliExternalTrackParam.h"
#include "AliVTrack.h"
#include "AliESDTOFCluster.h"
#include "AliPID.h"
#include "AliESDfriendTrack.h"
#include "AliTPCdEdxInfo.h"

class TParticle;
class AliESDVertex;
class AliKalmanTrack;
class AliTrackPointArray;
class TPolyMarker3D;
class AliDetectorPID;
class TTreeSRedirector;
class AliESDEvent;

class AliESDtrack : public AliExternalTrackParam {
public:
  //
  enum {kNITSchi2Std=3};
  //
  AliESDtrack();
  AliESDtrack(const AliESDtrack& track);
  AliESDtrack(const AliVTrack* track);
  AliESDtrack(TParticle * part);
  virtual ~AliESDtrack();
  virtual void Copy(TObject &obj) const;
  const AliESDfriendTrack *GetFriendTrack() const {return fFriendTrack;}
  void SetFriendTrack(const AliESDfriendTrack *t) {
    delete fFriendTrack; fFriendTrack=new AliESDfriendTrack(*t);
  }
  void ReleaseESDfriendTrack() { delete fFriendTrack;  fFriendTrack=0; }
  void AddCalibObject(TObject * object);     // add calib object to the list
  TObject *  GetCalibObject(Int_t index);    // return calib objct at given position
  void MakeMiniESDtrack();
  void SetID(Short_t id);
  Int_t GetID() const { return fID;}
  void SetVertexID(Char_t id) { fVertexID=id;}
  Char_t GetVertexID() const { return fVertexID;}
  void SetStatus(ULong_t flags) {fFlags|=flags;}
  void ResetStatus(ULong_t flags) {fFlags&=~flags;}
  Bool_t UpdateTrackParams(const AliKalmanTrack *t, ULong_t flags);
  void SetIntegratedLength(Double_t l) {fTrackLength=l;}
  void SetIntegratedTimes(const Double_t *times);
  void SetESDpid(const Double_t *p);
  void GetESDpid(Double_t *p) const;
  virtual const Double_t *PID() const { return fR; }

  Bool_t IsOn(Int_t mask) const {return (fFlags&mask)>0;}
  ULong_t GetStatus() const {return fFlags;}
  Int_t GetLabel() const {return fLabel;}
  void SetLabel(Int_t label) {fLabel = label;}

  void GetExternalParameters(Double_t &x, Double_t p[5]) const;
  void GetExternalCovariance(Double_t cov[15]) const;

  Double_t GetIntegratedLength() const;
  Double_t GetIntegratedLengthOld() const {return fTrackLength;}
  void GetIntegratedTimes(Double_t *times, Int_t nspec=AliPID::kSPECIES) const;
  Double_t GetIntegratedTimesOld(Int_t i) const {if(fTrackTime) return fTrackTime[i]; else return 0;};
  Int_t    GetPID(Bool_t tpcOnly=kFALSE)  const;
  Int_t    GetTOFBunchCrossing(Double_t b=0, Bool_t pidTPConly=kTRUE) const;
  Double_t GetMass(Bool_t tpcOnly=kFALSE) const {return AliPID::ParticleMass(GetPID(tpcOnly));}
  Double_t GetMassForTracking() const;
  void     SetPIDForTracking(Int_t pid) {fPIDForTracking = pid;}
  Int_t    GetPIDForTracking() const    {return fPIDForTracking;}
  Double_t M() const;
  Double_t E() const;
  Double_t Y() const;
 
  Bool_t GetConstrainedPxPyPz(Double_t *p) const {
    if (!fCp) return kFALSE;
    return fCp->GetPxPyPz(p);
  }
  Bool_t GetConstrainedXYZ(Double_t *r) const {
    if (!fCp) return kFALSE;
    return fCp->GetXYZ(r);
  }
  const AliExternalTrackParam *GetConstrainedParam() const {return fCp;}
  Bool_t GetConstrainedExternalParameters
              (Double_t &alpha, Double_t &x, Double_t p[5]) const;
  Bool_t GetConstrainedExternalCovariance(Double_t cov[15]) const;
  Double_t GetConstrainedChi2() const {return fCchi2;}
  Double_t GetChi2TPCConstrainedVsGlobal(const AliESDVertex* vtx) const;
  //
  
  // global track chi2
  void SetGlobalChi2(Double_t chi2) {fGlobalChi2 = chi2;}
  Double_t GetGlobalChi2() const {return fGlobalChi2;}

  Bool_t GetInnerPxPyPz(Double_t *p) const {
    if (!fIp) return kFALSE;
    return fIp->GetPxPyPz(p);
  }
  const AliExternalTrackParam * GetInnerParam() const { return fIp;}
  const AliExternalTrackParam * GetTPCInnerParam() const {return fTPCInner;}
  Bool_t FillTPCOnlyTrack(AliESDtrack &track);
  Bool_t GetInnerXYZ(Double_t *r) const {
    if (!fIp) return kFALSE;
    return fIp->GetXYZ(r);
  }
  Bool_t GetInnerExternalParameters
        (Double_t &alpha, Double_t &x, Double_t p[5]) const;
  Bool_t GetInnerExternalCovariance(Double_t cov[15]) const;
 
  void SetOuterParam(const AliExternalTrackParam *p, ULong_t flags);

  void SetOuterHmpParam(const AliExternalTrackParam *p, ULong_t flags);

  const AliExternalTrackParam * GetOuterParam() const { return fOp;}

  const AliExternalTrackParam * GetOuterHmpParam() const { return fHMPIDp;}
  
  Bool_t GetOuterPxPyPz(Double_t *p) const {
    if (!fOp) return kFALSE;
    return fOp->GetPxPyPz(p);
  }
  Bool_t GetOuterHmpPxPyPz(Double_t *p) const {
    if (!fHMPIDp) return kFALSE;
    return fHMPIDp->GetPxPyPz(p);
  }
  
  Bool_t GetOuterXYZ(Double_t *r) const {
    if (!fOp) return kFALSE;
    return fOp->GetXYZ(r);
  }
    Bool_t GetOuterHmpXYZ(Double_t *r) const {
    if (!fHMPIDp) return kFALSE;
    return fHMPIDp->GetXYZ(r);
  }

  Bool_t GetOuterExternalParameters
        (Double_t &alpha, Double_t &x, Double_t p[5]) const;
  Bool_t GetOuterExternalCovariance(Double_t cov[15]) const;
  
  Bool_t GetOuterHmpExternalParameters
        (Double_t &alpha, Double_t &x, Double_t p[5]) const;
  Bool_t GetOuterHmpExternalCovariance(Double_t cov[15]) const; 
  
  Int_t GetNcls(Int_t idet) const;
  Int_t GetClusters(Int_t idet, Int_t *idx) const;
 
  void    SetITSpid(const Double_t *p);
  void    GetITSpid(Double_t *p) const;

  Double_t GetITSsignal() const {return fITSsignal;}
  void    SetITSdEdxSamples(const Double_t s[4]);
  void    GetITSdEdxSamples(Double_t s[4]) const;

  Double_t GetITSchi2() const {return fITSchi2;}
  Double_t GetITSchi2Std(Int_t step) const {return (step>-1&&step<kNITSchi2Std) ? fITSchi2Std[step] : -1;}
  void     SetITSchi2Std(Double_t chi2, Int_t step)  { if (step>-1&&step<kNITSchi2Std) fITSchi2Std[step] = chi2;}
  Char_t   GetITSclusters(Int_t *idx) const;
  UChar_t GetITSClusterMap() const {return fITSClusterMap;}
  void     SetITSClusterMap(UChar_t amap) {fITSClusterMap = amap;}

  Char_t   GetITSNcls() const { return fITSncls;}
  UChar_t GetITSSharedMap() const {return fITSSharedMap;}
  void    SetITSSharedFlag(int lr) {fITSSharedMap |= 0x1<<lr;}
  Bool_t  GetITSFakeFlag()   const {return (fITSSharedMap&BIT(7))!=0;}
  void    SetITSFakeFlag(Bool_t v=kTRUE)  {if (v) fITSSharedMap|=BIT(7); else fITSSharedMap&=~BIT(7);}  
  void    SetITSSharedMap(UChar_t map) {fITSSharedMap=map;}
  void    SetITSModuleIndex(Int_t ilayer,Int_t idx) {fITSModule[ilayer]=idx;}
  Int_t   GetITSModuleIndex(Int_t ilayer) const {return fITSModule[ilayer];}
  Bool_t  GetITSModuleIndexInfo(Int_t ilayer,Int_t &idet,Int_t &status,
				Float_t &xloc,Float_t &zloc) const;
  Int_t   GetITSLabel() const {return fITSLabel;}
  void    SetITSLabel(Int_t label) {fITSLabel = label;}
  void    SetITStrack(AliKalmanTrack * track){
    if (fFriendTrack) fFriendTrack->SetITStrack(track);
  }
  AliKalmanTrack *GetITStrack(){
    return fFriendTrack!=NULL?fFriendTrack->GetITStrack():NULL;
  }
  Bool_t  HasPointOnITSLayer(Int_t i) const {return TESTBIT(fITSClusterMap,i);}
  Bool_t  HasSharedPointOnITSLayer(Int_t i) const {return TESTBIT(fITSSharedMap,i);}

  void    SetTPCpid(const Double_t *p);
  void    GetTPCpid(Double_t *p) const;
  void    SetTPCPoints(Float_t points[4]){
     for (Int_t i=0;i<4;i++) fTPCPoints[i]=points[i];
  }
  void    SetTPCPointsF(UChar_t  findable){fTPCnclsF = findable;}
  void    SetTPCPointsFIter1(UChar_t  findable){fTPCnclsFIter1 = findable;}
  UShort_t   GetTPCNcls() const { return fTPCncls;}
  UShort_t   GetTPCNclsF() const { return fTPCnclsF;}
  UShort_t   GetTPCNclsIter1() const { return fTPCnclsIter1;}
  UShort_t   GetTPCNclsFIter1() const { return fTPCnclsFIter1;}
  UShort_t   GetTPCnclsS(Int_t i0=0,Int_t i1=159) const;
  UShort_t   GetTPCncls(Int_t row0=0,Int_t row1=159) const;
  Double_t GetTPCPoints(Int_t i) const {return fTPCPoints[i];}
  void    SetKinkIndexes(Int_t points[3]) {
     for (Int_t i=0;i<3;i++) fKinkIndexes[i] = points[i];
  }
  void    SetV0Indexes(Int_t points[3]) {
     for (Int_t i=0;i<3;i++) fV0Indexes[i] = points[i];
  }
  void    SetTPCsignal(Float_t signal, Float_t sigma, UChar_t npoints){ 
     fTPCsignal = signal; fTPCsignalS = sigma; fTPCsignalN = npoints;
  }
  void    SetTPCsignalTunedOnData(Float_t signal){
      fTPCsignalTuned = signal;
  }
  void  SetTPCdEdxInfo(AliTPCdEdxInfo * dEdxInfo); 
  Double_t  GetdEdxInfo(Int_t regionID, Int_t calibID, Int_t qID,Int_t valueID);
  Double_t GetdEdxInfoTRD(Int_t method, Double_t p0, Double_t p1, Double_t p2);

  AliTPCdEdxInfo * GetTPCdEdxInfo() const {return fTPCdEdxInfo;}
  Double_t GetTPCsignal() const {return fTPCsignal;}
  Double_t GetTPCsignalTunedOnData() const {return fTPCsignalTuned;}
  Double_t GetTPCsignalSigma() const {return fTPCsignalS;}
  UShort_t GetTPCsignalN() const {return fTPCsignalN;}
  Double_t GetTPCmomentum() const {return fIp?fIp->GetP():GetP();}
  Double_t GetTPCTgl()      const {return fIp?fIp->GetTgl():GetTgl();}
  Double_t GetTPCchi2() const {return fTPCchi2;}
  Double_t GetTPCchi2Iter1() const {return fTPCchi2Iter1;}
  UShort_t GetTPCclusters(Int_t *idx) const;
  Double_t GetTPCdensity(Int_t row0, Int_t row1) const;
  Int_t   GetTPCLabel() const {return fTPCLabel;}
  Int_t   GetKinkIndex(Int_t i) const { return fKinkIndexes[i];}
  Int_t   GetV0Index(Int_t i) const { return fV0Indexes[i];}
  const TBits& GetTPCFitMap() const {return fTPCFitMap;}
  const TBits* GetTPCFitMapPtr() const {return &fTPCFitMap;}
  const TBits& GetTPCClusterMap() const {return fTPCClusterMap;}
  const TBits* GetTPCClusterMapPtr() const {return &fTPCClusterMap;}
  const TBits& GetTPCSharedMap() const {return fTPCSharedMap;}
  const TBits* GetTPCSharedMapPtr() const {return &fTPCSharedMap;}
  void    SetTPCFitMap(const TBits &amap) {fTPCFitMap = amap;}
  void    SetTPCClusterMap(const TBits &amap) {fTPCClusterMap = amap;}
  void    SetTPCSharedMap(const TBits &amap) {fTPCSharedMap = amap;}
  Float_t GetTPCClusterInfo(Int_t nNeighbours=3, Int_t type=0, Int_t row0=0, Int_t row1=159, Int_t bitType=0 ) const;
  Float_t GetTPCClusterDensity(Int_t nNeighbours=3, Int_t type=0, Int_t row0=0, Int_t row1=159, Int_t bitType=0 ) const;
  Float_t GetTPCCrossedRows() const;
  
  void    SetTRDpid(const Double_t *p);
  void    SetTRDsignal(Double_t sig) {fTRDsignal = sig;}
  void    SetTRDNchamberdEdx(UChar_t nch) {fTRDNchamberdEdx = nch;}
  void    SetTRDNclusterdEdx(UChar_t ncls){fTRDNclusterdEdx = ncls;}
	  
// A.Bercuci
  void    SetTRDntracklets(UChar_t q){fTRDntracklets = q;}
  UChar_t GetTRDntracklets() const {return (fTRDntracklets>>3)&7;}
  UChar_t GetTRDntrackletsPID() const {return fTRDntracklets&7;}
  // TEMPORARY alias asked by the HFE group to allow 
  // reading of the v4-16-Release data with TRUNK related software (A.Bercuci@Apr 30th 09) 
  UChar_t GetTRDpidQuality() const {return GetTRDntrackletsPID();}
  UChar_t GetTRDtrkltOccupancy(Int_t ly) const { return ly<kTRDnPlanes && ly>=0 ? fTRDTimBin[ly] & 0x1F : 0; }
  UChar_t GetTRDtrkltClCross(Int_t ly) const { return ly<kTRDnPlanes && ly>=0 ? (fTRDTimBin[ly] >> 5) & 0x03 : 0; }
  Bool_t IsTRDtrkltChmbGood(Int_t ly) const { return ly<kTRDnPlanes && ly>=0 ? ((fTRDTimBin[ly] >> 7) & 0x01) == 1 : kFALSE;} 
  // end A.Bercuci
  
  void     SetNumberOfTRDslices(Int_t n);
  Int_t    GetNumberOfTRDslices() const;
  void     SetTRDslice(Double_t q, Int_t plane, Int_t slice);
  void     SetTRDmomentum(Double_t p, Int_t plane, Double_t *sp=0x0);
  Double_t GetTRDslice(Int_t plane, Int_t slice=-1) const;
  Double_t GetTRDmomentum(Int_t plane, Double_t *sp=0x0) const;
	
  void    SetTRDQuality(Float_t quality){fTRDQuality=quality;}
  Double_t GetTRDQuality()const {return fTRDQuality;}
  void    SetTRDBudget(Float_t budget){fTRDBudget=budget;}
  Double_t GetTRDBudget()const {return fTRDBudget;}

  void    SetTRDTimBin(Int_t timbin, Int_t i) {fTRDTimBin[i]=timbin;}
  void    GetTRDpid(Double_t *p) const;
  Double_t GetTRDsignal() const {return fTRDsignal;}
  UChar_t GetTRDNchamberdEdx() const {return fTRDNchamberdEdx;}
  UChar_t GetTRDNclusterdEdx() const {return fTRDNclusterdEdx;}
  Char_t   GetTRDTimBin(Int_t i) const {return fTRDTimBin[i];}
  Double_t GetTRDchi2() const {return fTRDchi2;}
  UChar_t   GetTRDclusters(Int_t *idx) const;
  UChar_t   GetTRDncls() const {return fTRDncls;}
  UChar_t   GetTRDncls0() const {return fTRDncls0;}
  UChar_t   GetTRDtracklets(Int_t *idx) const;
  void    SetTRDpid(Int_t iSpecies, Float_t p);
  Double_t GetTRDpid(Int_t iSpecies) const;
  Int_t   GetTRDLabel() const {return fTRDLabel;}

  void    SetTRDtrack(AliKalmanTrack * track){
    if (fFriendTrack) fFriendTrack->SetTRDtrack(track);
  }
  AliKalmanTrack *GetTRDtrack(){
    return fFriendTrack!=NULL?fFriendTrack->GetTRDtrack():NULL;
  }

  // this are methods for manipulating with TOF clusters/matches
  void    SetTOFclusterArray(Int_t ncluster,Int_t *TOFcluster);
  Int_t   *GetTOFclusterArray() const {return fTOFcluster;}
  Int_t   GetNTOFclusters() const {return fNtofClusters;}
  void    SuppressTOFMatches();
  void    ReplaceTOFTrackID(int oldID, int newID);
  void    ReplaceTOFClusterID(int oldID, int newID);
  void    ReplaceTOFMatchID(int oldID, int newID);
  void    AddTOFcluster(Int_t icl);
  void    SortTOFcluster(); // RS? Not to be used?
  void    ReMapTOFcluster(Int_t ncl,Int_t *mapping);  // RS? Not to be used?

  void    SetTOFsignal(Double_t tof);
  Double_t GetTOFsignal() const;
  void    SetTOFsignalToT(Double_t ToT);
  Double_t GetTOFsignalToT() const;
  void    SetTOFsignalRaw(Double_t tof);
  Double_t GetTOFsignalRaw() const;
  void    SetTOFsignalDz(Double_t dz);
  Double_t GetTOFsignalDz() const;
  void    SetTOFsignalDx(Double_t dx);
  Double_t GetTOFsignalDx() const;
  void     SetTOFDeltaBC(Short_t deltaBC);
  Short_t  GetTOFDeltaBC() const;
  void     SetTOFL0L1(Short_t l0l1);
  Short_t  GetTOFL0L1() const;
  Double_t GetTOFchi2() const {return fTOFchi2;};
  void    SetTOFpid(const Double_t *p);
  void    SetTOFLabel(const Int_t *p);
  void    GetTOFpid(Double_t *p) const;
  void    GetTOFLabel(Int_t *p) const;
  void    GetTOFInfo(Float_t *info) const;
  void    SetTOFInfo(Float_t *info);
  Int_t   GetTOFCalChannel() const;
  Int_t   GetTOFcluster() const;
  void    SetTOFcluster(Int_t index) {fTOFindex=index;}
  void    SetTOFCalChannel(Int_t index);
  Int_t   GetTOFclusterN() const;
  Bool_t  IsTOFHitAlreadyMatched() const;
  void    SetTOFsignalTunedOnData(Double_t signal){fTOFsignalTuned=signal;}
  Double_t GetTOFsignalTunedOnData() const {return fTOFsignalTuned;}

// HMPID methodes +++++++++++++++++++++++++++++++++ (kir)
  void    SetHMPIDsignal(Double_t theta) {fHMPIDsignal=theta;}
  Double_t GetHMPIDsignal() const {if(fHMPIDsignal>0) return fHMPIDsignal - (Int_t)fHMPIDsignal; else return fHMPIDsignal;}
  Double_t GetHMPIDoccupancy() const {return (Int_t)fHMPIDsignal/10.0;}
  void    SetHMPIDpid(const Double_t *p);
  void    GetHMPIDpid(Double_t *p) const;  
  void    SetHMPIDchi2(Double_t chi2) {fHMPIDchi2=chi2;}
  Double_t GetHMPIDchi2() const {return fHMPIDchi2;}
  void    SetHMPIDcluIdx(Int_t ch,Int_t idx) {fHMPIDcluIdx=ch*1000000+idx;}
  Int_t   GetHMPIDcluIdx() const {return fHMPIDcluIdx;}
  void    SetHMPIDtrk(Float_t  x, Float_t  y, Float_t  th, Float_t  ph) {
     fHMPIDtrkX=x; fHMPIDtrkY=y; fHMPIDtrkTheta=th; fHMPIDtrkPhi=ph;
  }
  void    GetHMPIDtrk(Float_t &x, Float_t &y, Float_t &th, Float_t &ph) const {
     x=fHMPIDtrkX; y=fHMPIDtrkY; th=fHMPIDtrkTheta; ph=fHMPIDtrkPhi;
  }
  void    SetHMPIDmip(Float_t  x, Float_t  y, Int_t q, Int_t nph=0) {
     fHMPIDmipX=x; fHMPIDmipY=y; fHMPIDqn=1000000*nph+q;
  }
  void    GetHMPIDmip(Float_t &x,Float_t &y,Int_t &q,Int_t &nph) const {
     x=fHMPIDmipX; y=fHMPIDmipY; q=fHMPIDqn%1000000; nph=fHMPIDqn/1000000;
  }
  Bool_t  IsHMPID() const {return fFlags&kHMPIDpid;}
  Bool_t  IsPureITSStandalone() const {return fFlags&kITSpureSA;}
  Bool_t  IsMultPrimary() const {return !(fFlags&kMultSec);}
  Bool_t  IsMultSecondary() const {return (fFlags&kMultSec);}

  Int_t GetEMCALcluster() const {return fCaloIndex;}
  void SetEMCALcluster(Int_t index) {fCaloIndex=index;}
  Bool_t IsEMCAL() const {return fFlags&kEMCALmatch;}
  
  Double_t GetTrackPhiOnEMCal() const {return fTrackPhiOnEMCal;}
  Double_t GetTrackEtaOnEMCal() const {return fTrackEtaOnEMCal;}
  Double_t GetTrackPtOnEMCal() const {return fTrackPtOnEMCal;}
  Double_t GetTrackPOnEMCal() const {return TMath::Abs(fTrackEtaOnEMCal) < 1 ? fTrackPtOnEMCal*TMath::CosH(fTrackEtaOnEMCal) : -999;}
  void SetTrackPhiEtaPtOnEMCal(Double_t phi,Double_t eta,Double_t pt) {fTrackPhiOnEMCal=phi;fTrackEtaOnEMCal=eta;fTrackPtOnEMCal=pt;}

  Int_t GetPHOScluster() const {return fCaloIndex;}
  void SetPHOScluster(Int_t index) {fCaloIndex=index;}
  Bool_t IsPHOS() const {return fFlags&kPHOSmatch;}
  Double_t GetPHOSdx()const{return fCaloDx ;}
  Double_t GetPHOSdz()const{return fCaloDz ;}
  void SetPHOSdxdz(Double_t dx, Double_t dz){fCaloDx=dx,fCaloDz=dz;}


  void SetTrackPointArray(AliTrackPointArray *points) {
    if (fFriendTrack) fFriendTrack->SetTrackPointArray(points);
  }
  const AliTrackPointArray *GetTrackPointArray() const {
    return fFriendTrack!=NULL?fFriendTrack->GetTrackPointArray():NULL; 
  }
  Bool_t RelateToVertexTPC(const AliESDVertex *vtx, Double_t b, Double_t maxd,
                           AliExternalTrackParam *cParam=0);
  Bool_t 
  RelateToVertexTPCBxByBz(const AliESDVertex *vtx, Double_t b[3],Double_t maxd,
                           AliExternalTrackParam *cParam=0);
  void GetImpactParametersTPC(Float_t &xy,Float_t &z) const {xy=fdTPC; z=fzTPC;}
  void GetImpactParametersTPC(Float_t p[2], Float_t cov[3]) const {
    p[0]=fdTPC; p[1]=fzTPC; cov[0]=fCddTPC; cov[1]=fCdzTPC; cov[2]=fCzzTPC;
  }
  Double_t GetConstrainedChi2TPC() const {return fCchi2TPC;}

  Bool_t RelateToVertex(const AliESDVertex *vtx, Double_t b, Double_t maxd,
                        AliExternalTrackParam *cParam=0);
  Bool_t 
  RelateToVertexBxByBz(const AliESDVertex *vtx, Double_t b[3], Double_t maxd,
                        AliExternalTrackParam *cParam=0);
  virtual void GetImpactParameters(Float_t &xy,Float_t &z) const {xy=fD; z=fZ;}
  void GetImpactParameters(Float_t p[2], Float_t cov[3]) const {
    p[0]=fD; p[1]=fZ; cov[0]=fCdd; cov[1]=fCdz; cov[2]=fCzz;
  }
  virtual void Print(Option_t * opt) const ;
  const AliESDEvent* GetESDEvent() const {return fESDEvent;}
  const AliTOFHeader* GetTOFHeader() const;
  const AliVEvent* GetEvent() const {return (AliVEvent*)fESDEvent;}
  void         SetESDEvent(const AliESDEvent* evt) {fESDEvent = evt;}

  // Trasient PID object, is owned by the track
  virtual void  SetDetectorPID(const AliDetectorPID *pid);
  virtual const AliDetectorPID* GetDetectorPID() const { return fDetectorPID; }
  
  //
  // visualization (M. Ivanov)
  //
  void FillPolymarker(TPolyMarker3D *pol, Float_t magf, Float_t minR, Float_t maxR, Float_t stepR);

  //
  // online mode Matthias.Richter@cern.ch
  // in order to optimize AliESDtrack for usage in the online HLT,
  // some functionality is disabled
  // - creation of AliESDfriendTrack
  // - set lengt of bit fields fTPCClusterMap and fTPCSharedMap to 0
  static void OnlineMode(bool mode) {fgkOnlineMode=mode;}
  static bool OnlineMode() {return fgkOnlineMode;}
  static Double_t GetLengthInActiveZone(const AliExternalTrackParam  *paramT, Double_t deltaY, Double_t deltaZ, Double_t bz, Double_t exbPhi =0 , TTreeSRedirector * pcstream =0 );
  Double_t GetLengthInActiveZone( Int_t mode, Double_t deltaY, Double_t deltaZ, Double_t bz, Double_t exbPhi =0 , TTreeSRedirector * pcstream =0 ) const;

  //---------------------------------------------------------------------------
  //--the calibration interface--
  //--to be used in online calibration/QA
  //--should also be implemented in ESD so it works offline as well
  //-----------
  virtual Int_t GetTrackParam         ( AliExternalTrackParam &p ) const {p=*this; return 0;}
  virtual Int_t GetTrackParamRefitted ( AliExternalTrackParam & ) const {return 0;}
  virtual Int_t GetTrackParamITSOut   ( AliExternalTrackParam & ) const {return 0;}

  Int_t GetTrackParamIp       ( AliExternalTrackParam &p ) const {
      if(!GetInnerParam()) return -1;
      p=*GetInnerParam();
      return 0;}

  Int_t GetTrackParamOp       ( AliExternalTrackParam &p ) const {
      if(!GetOuterParam()) return -1;
      p=*GetOuterParam();
      return 0;}

  Int_t GetTrackParamTPCInner ( AliExternalTrackParam &p ) const {
      if(!GetTPCInnerParam()) return -1;
      p=*GetTPCInnerParam();
      return 0;}

  Int_t GetTrackParamCp       ( AliExternalTrackParam &p ) const {
      if(!GetConstrainedParam()) return -1;
      p=*GetConstrainedParam();
      return 0;}


protected:
  
  AliExternalTrackParam *fCp; // Track parameters constrained to the primary vertex
  AliExternalTrackParam *fIp; // Track parameters estimated at the inner wall of TPC
  AliExternalTrackParam *fTPCInner; // Track parameters estimated at the inner wall of TPC using the TPC stand-alone 
  AliExternalTrackParam *fOp; // Track parameters estimated at the point of maximal radial coordinate reached during the tracking
  AliExternalTrackParam *fHMPIDp; // Track parameters at HMPID
  AliESDfriendTrack *fFriendTrack; //! All the complementary information

  TBits    fTPCFitMap;     // Map of clusters, one bit per padrow; 1 if has a cluster on given padrow which is used in the fit
  TBits    fTPCClusterMap; // Map of clusters, one bit per padrow; 1 if has a cluster on given padrow
  TBits    fTPCSharedMap;  // Map of clusters, one bit per padrow; 1 if has a shared cluster on given padrow



  ULong_t   fFlags;          // Reconstruction status flags 
  Int_t     fID;             // Unique ID of the track
  Int_t     fLabel;          // Track label
  Int_t     fITSLabel;       // label according ITS
  Int_t     fITSModule[12];  // modules crossed by the track in the ITS 
  Int_t     fTPCLabel;       // label according TPC
  Int_t     fTRDLabel;       // label according TRD
  Int_t     *fTOFLabel;      //! TOF label 
  Int_t     fTOFCalChannel;  //! Channel Index of the TOF Signal 
  Int_t     fTOFindex;       // index of the assigned TOF cluster
  Int_t     fHMPIDqn;         // 1000000*number of photon clusters + QDC
  Int_t     fHMPIDcluIdx;     // 1000000*chamber id + cluster idx of the assigned MIP cluster
  Int_t     fCaloIndex;       // index of associated EMCAL/PHOS cluster (AliESDCaloCluster)


  Int_t     fKinkIndexes[3]; // array of indexes of posible kink candidates 
  Int_t     fV0Indexes[3];   // array of indexes of posible kink candidates 

  Double32_t   *fR; //! [0.,0.,8] combined "detector response probability"
  Double32_t   *fITSr; //! [0.,0.,8] "detector response probabilities" (for the PID)
  Double32_t   *fTPCr; //! [0.,0.,8] "detector response probabilities" (for the PID)
  Double32_t   *fTRDr; //! [0.,0.,8] "detector response probabilities" (for the PID)  
  Double32_t   *fTOFr; //! [0.,0.,8] "detector response probabilities" (for the PID)
  Double32_t   *fHMPIDr; //! [0.,0.,8] "detector response probabilities" (for the PID)

  Double32_t fHMPIDtrkTheta;//[-2*pi,2*pi,16] theta of the track extrapolated to the HMPID, LORS
  // how much of this is needed?
  Double32_t fHMPIDtrkPhi;     //[-2*pi,2*pi,16] phi of the track extrapolated to the HMPID, LORS
  Double32_t fHMPIDsignal;  // HMPID PID signal (Theta ckov, rad)

  Double32_t   *fTrackTime; //! TOFs estimated by the tracking
  Double32_t   fTrackLength;   //! Track length

  Double32_t   fdTPC;          // TPC-only impact parameter in XY plane
  Double32_t   fzTPC;          // TPC-only impact parameter in Z
  Double32_t   fCddTPC,fCdzTPC,fCzzTPC; // Covariance matrix of the TPC-only impact parameters 
  Double32_t   fCchi2TPC;      // [0.,0.,8] TPC-only chi2 at the primary vertex

  Double32_t   fD;             // Impact parameter in XY plane
  Double32_t   fZ;             // Impact parameter in Z
  Double32_t   fCdd,fCdz,fCzz; // Covariance matrix of the impact parameters 
  Double32_t   fCchi2;          // [0.,0.,8] chi2 at the primary vertex

  Double32_t   fITSchi2Std[kNITSchi2Std];  // [0.,0.,8] standard chi2 in the ITS (with standard errors)
  Double32_t   fITSchi2;        // [0.,0.,8] chi2 in the ITS
  Double32_t   fTPCchi2;        // [0.,0.,8] chi2 in the TPC
  Double32_t   fTPCchi2Iter1;  // [0.,0.,8] chi2 in the TPC
  Double32_t   fTRDchi2;        // [0.,0.,8] chi2 in the TRD
  Double32_t   fTOFchi2;        // [0.,0.,8] chi2 in the TOF
  Double32_t fHMPIDchi2;        // [0.,0.,8] chi2 in the HMPID

  Double32_t fGlobalChi2;       // [0.,0.,8] chi2 of the global track

  Double32_t  fITSsignal;     // [0.,0.,10] detector's PID signal
  Double32_t  fITSdEdxSamples[4]; // [0.,0.,10] ITS dE/dx samples

  Double32_t  fTPCsignal;        // [0.,0.,10] detector's PID signal
  Double32_t  fTPCsignalTuned;   //! [0.,0.,10] detector's PID signal tuned on data when using MC
  Double32_t  fTPCsignalS;       // [0.,0.,10] RMS of dEdx measurement
  AliTPCdEdxInfo * fTPCdEdxInfo; // object containing dE/dx information for different pad regions
  Double32_t  fTPCPoints[4];     // [0.,0.,10] TPC points -first, max. dens, last and max density

  Double32_t fTRDsignal;      // detector's PID signal
  Double32_t fTRDQuality;     // trd quality factor for TOF
  Double32_t fTRDBudget;      // trd material budget

  Double32_t fTOFsignal;      //! detector's PID signal [ps]
  Double32_t fTOFsignalTuned; //! detector's PID signal tuned on data when using MC
  Double32_t fTOFsignalToT;   //! detector's ToT signal [ns]
  Double32_t fTOFsignalRaw;   //! detector's uncorrected time signal [ps]
  Double32_t fTOFsignalDz;    //! local z  of track's impact on the TOF pad [cm]
  Double32_t fTOFsignalDx;    //! local x  of track's impact on the TOF pad [cm]
  Double32_t fTOFInfo[10];    //! TOF informations
  Short_t    fTOFdeltaBC;     //! detector's Delta Bunch Crossing correction
  Short_t    fTOFl0l1;        //! detector's L0L1 latency correction

  Double32_t fCaloDx ;        // [0.,0.,8] distance to calorimeter cluster in calo plain (phi direction)
  Double32_t fCaloDz ;        // [0.,0.,8] distance to calorimeter cluster in calo plain (z direction)

  Double32_t fHMPIDtrkX;       // x of the track impact, LORS 
  Double32_t fHMPIDtrkY;       // y of the track impact, LORS 
  Double32_t fHMPIDmipX;       // x of the MIP in LORS
  Double32_t fHMPIDmipY;       // y of the MIP in LORS


  UShort_t fTPCncls;       // number of clusters assigned in the TPC
  UShort_t fTPCnclsF;      // number of findable clusters in the TPC
  UShort_t fTPCsignalN;    // number of points used for dEdx
  UShort_t fTPCnclsIter1;  // number of clusters assigned in the TPC - iteration 1
  UShort_t fTPCnclsFIter1; // number of findable clusters in the TPC - iteration 1

  Char_t  fITSncls;        // number of clusters assigned in the ITS
  UChar_t fITSClusterMap;  // map of clusters, one bit per a layer
  UChar_t fITSSharedMap;   // map of shared clusters, one bit per a layer
  UChar_t fTRDncls;        // number of clusters assigned in the TRD
  UChar_t fTRDncls0;       // number of clusters assigned in the TRD before first material cross
  UChar_t fTRDntracklets;  // number of TRD tracklets used for tracking/PID
  UChar_t fTRDNchamberdEdx;   // number of chambers used to calculated the TRD truncated mean
  UChar_t fTRDNclusterdEdx;   // number of clusters used to calculated the TRD truncated mean

  Int_t fTRDnSlices;     // number of slices used for PID in the TRD
  Double32_t *fTRDslices;  //[fTRDnSlices] 

  Char_t  fTRDTimBin[kTRDnPlanes];   // Time bin of Max cluster from all six planes
  Char_t  fVertexID; // ID of the primary vertex this track belongs to
  Char_t  fPIDForTracking;           // mass used for tracking

  mutable const AliESDEvent*   fESDEvent; //!Pointer back to event to which the track belongs
  
  mutable Float_t fCacheNCrossedRows; //! Cache for the number of crossed rows
  mutable Float_t fCacheChi2TPCConstrainedVsGlobal; //! Cache for the chi2 of constrained TPC vs global track
  mutable const AliESDVertex* fCacheChi2TPCConstrainedVsGlobalVertex; //! Vertex for which the cache is valid

  mutable const AliDetectorPID* fDetectorPID; //! transient object to cache PID information

  Double_t      fTrackPhiOnEMCal;   // phi of track after being propagated to the EMCal surface (default r = 440 cm)
  Double_t      fTrackEtaOnEMCal;   // eta of track after being propagated to the EMCal surface (default r = 440 cm)
  Double_t      fTrackPtOnEMCal;    // pt of track after being propagated to the EMCal surface (default r = 440 cm)
  

  // new TOF data structure
  Int_t fNtofClusters;              // number of matchable TOF clusters 
  Int_t *fTOFcluster;               //[fNtofClusters]
                                    // TOF clusters matchable with the track

 private:
  static bool fgkOnlineMode; //! indicate the online mode to skip some of the functionality

  AliESDtrack & operator=(const AliESDtrack & );
  ClassDef(AliESDtrack,71)  //ESDtrack 
};



#endif 

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