ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
//-----------------------------------------------------------------
//           Implementation of the ESD track class
//   ESD = Event Summary Data
//   This is the class to deal with during the phisics analysis of data
//      Origin: Iouri Belikov, CERN
//      e-mail: Jouri.Belikov@cern.ch
//
//
//
//  What do you need to know before starting analysis
//  (by Marian Ivanov: marian.ivanov@cern.ch)
//
//
//   AliESDtrack:
//   1.  What is the AliESDtrack
//   2.  What informations do we store
//   3.  How to use the information for analysis
//   
//
//   1.AliESDtrack is the container of the information about the track/particle
//     reconstructed during Barrel Tracking.
//     Content:
//        a.) Track parameters and covariance - AliExternalTrackParam  - snapshots along trajectory at differnt tracking steps 
//            current, fIp, fTPCinner, fCp, fOp, fHMPIDp, + friendTrack (fITSout, fTPCout, fTRDin) 
//        b.) Flags - per detector status bits
//        c.) Track fit quality -chi2, number of clusters
//        d.) Detector PID information
//        d.) Different detector specific information (e.g number of tracklets in TRD, TOF cluster descriptor ...)
//
//
//     The track information is propagated from one tracking detector to 
//     other using the functionality of AliESDtrack (AliExternalTrackParam - current parameters)  
//
//     Barrel tracking uses Kalman filtering technique (no global fit model is used). Kalman provides optimal local 
//     track parameters estimate at given position under certian assumptions. 
//     Following approximations were used:  
//           a.) gaussian Multiple scattering
//           b.) gaussian energy loss
//           c.) gaussian error of the space point residuals  
//             
//     Kalman filter take into account following effects which are 
//     difficult to handle using global fit:
//        a.) Multiple scattering
//        b.) Energy loss
//        c.) Non homogenous magnetic field
//
//     In general case, following barrel detectors are contributing to 
//     the Kalman track information:
//         a. TPC
//         b. ITS
//         c. TRD
//
//      Track findind/fitting procedure is done in 3 steps:
//         1. Cluster2Track(in)   - inward sequence TPC->ITS    
//         2. PropagateBack(out)   - outward sequence ITS->TPC->TRD -> Outer PID detectors
//         3. RefitInward(refit)     - inward sequence TRD->TPC->ITS
//      After each recosntruction step detector status is updated in the data member fFlags
//      fFlags|=k<DetectorName><step> where step={1:in,2:out,3:refit,}
//      For some of detectors a special flags were implemented. Declaration of list of all flags can be find in $ALICE_ROOT/STEER/STEERBase/AliVTrack.h
//
//  
//      The current track parameter is updated after each detector (see bellow).
//      In specical cases a track  snapshots (AliExternalTrackParam) are stored
//
// 
//
//      For some type of analysis (+visualization) track local parameters at 
//      different position are neccesary. A snapshots during the track 
//      propagation are created and stored either in track itself (for analysis purposes) or assiciated friend track (for calibration and debugging purposes)
//      (See AliExternalTrackParam class for desctiption of variables and functionality)
//      Snapshots:
//      a.)  Current parameters (AliESDtrack itself) 
//         Description:  as obtained in the last succesfull tracking step
//         Contributors: best case TRD->TPC->ITS after RefitInward
//         Recomended way to get track parameters. It includes all of the information.
//         NOTICE - By default the track parameters are stored at the DCA point to the primary vertex. 
//                  Optimal for primary tracks, far from optimal for deeply secondary tracks.
//                  To get optimal track parameters at the secondary vertex, OnTheFly V0s with associated track parameters should be used
//
//      b.) Constrained parameters (fCp)
//         Description: 
//            Kalman track  updated with the Primary vertex information with corresponding error (soft  constraint - see http://en.wikipedia.org/wiki/Constraint_(mathematics)#Hard_and_soft_constraints) 
//         Function:  
//            const AliExternalTrackParam *GetConstrainedParam() const {return fCp;}
//         Contributors: best case TRD->TPC->ITS after RefitInward
//         Recommended usage: Use only for tracks selected as primary (check GetConstrainedChi2())
//         NOTICE - not real constraint only soft constraint
//
//      c.) Inner parameters (fIp) -  
//         Description: Track parameters at inner wall of the TPC 
//         Function:
//           const AliExternalTrackParam *GetInnerParam() const { return fIp;}
//         Contributors: general case TRD->TPC (during RefitInward)
//         Recomended usage: To provide momenta for the TPC PID and to estimate quality of the track determination for further 
//
//      d.)  TPCinnerParam (fTPCinner):
//         Description: TPC only parameters at DCA to the primary vertex (corrected for the material between TPC and vertex)
//         Function:
//                const AliExternalTrackParam *GetTPCInnerParam() const {return fTPCInner;}
//         Contributors:  TPC only from in step  1 (Cluster2Tracks)
//         Recomended usage: Requested for HBT study 
//                           (smaller correlations as using also ITS information)
//         NOTICE: Optimal for primary, far from optimal for secondary tracks (similar to track parameters a.) 
//                 ! We should always use the c.) fIp in case of the TPC PID analysis, or undo material budget correction!
//
//      e.) Outer parameters - (fOp)
//         Description: track parameters during PropagateBack in the last sucessfull propagation  
//                  Reason to generate backup  OuterParameters
//                        a.) Local inclination angle bigger than threshold - 
//                            Low momenta tracks 
//                        b.) Catastrofic (large relative>~20 %)energy loss in material outside of the TPC
//                        c.) No additional  space points contributing to track 
//         Function:
//            const AliExternalTrackParam *GetOuterParam() const { return fOp;}
//         Contributors:  general case - ITS-> TPC -> TRD ( during PropagateBack )
//         Recomended usage:             
//              a.) Tracking: Starting parameter for Refit inward 
//              b.) Visualization
//              c.) QA
//         NOTICE: Should be not used for the physic analysis
//         Function:
//            const AliExternalTrackParam *GetOuterParam() const { return fOp;}
//
//-----------------------------------------------------------------

#include <TMath.h>
#include <TParticle.h>
#include <TDatabasePDG.h>
#include <TMatrixD.h>

#include "AliESDVertex.h"
#include "AliESDtrack.h"
#include "AliESDEvent.h"
#include "AliKalmanTrack.h"
#include "AliVTrack.h"
#include "AliLog.h"
#include "AliTrackPointArray.h"
#include "TPolyMarker3D.h"
#include "AliTrackerBase.h"
#include "AliTPCdEdxInfo.h"
#include "AliDetectorPID.h"
#include "TTreeStream.h"
#include "TObjArray.h"

ClassImp(AliESDtrack)

void SetPIDValues(Double_t * dest, const Double_t * src, Int_t n) {
  // This function copies "n" PID weights from "scr" to "dest"
  // and normalizes their sum to 1 thus producing conditional probabilities.
  // The negative weights are set to 0.
  // In case all the weights are non-positive they are replaced by
  // uniform probabilities

  if (n<=0) return;

  Float_t uniform = 1./(Float_t)n;

  Float_t sum = 0;
  for (Int_t i=0; i<n; i++) 
    if (src[i]>=0) {
      sum+=src[i];
      dest[i] = src[i];
    }
    else {
      dest[i] = 0;
    }

  if(sum>0)
    for (Int_t i=0; i<n; i++) dest[i] /= sum;
  else
    for (Int_t i=0; i<n; i++) dest[i] = uniform;
}

//_______________________________________________________________________
AliESDtrack::AliESDtrack() : 
  AliExternalTrackParam(),
  fCp(0),
  fIp(0),
  fTPCInner(0),
  fOp(0),
  fHMPIDp(0),  
  fFriendTrack(NULL),
  fTPCFitMap(159),//number of padrows
  fTPCClusterMap(159),//number of padrows
  fTPCSharedMap(159),//number of padrows
  fFlags(0),
  fID(0),
  fLabel(0),
  fITSLabel(0),
  fTPCLabel(0),
  fTRDLabel(0),
  fTOFLabel(NULL),
  fTOFCalChannel(-1),
  fTOFindex(-1),
  fHMPIDqn(0),
  fHMPIDcluIdx(-1),
  fCaloIndex(kEMCALNoMatch),
  fR(0),
  fITSr(0),
  fTPCr(0),
  fTRDr(0),
  fTOFr(0),
  fHMPIDr(0),
  fHMPIDtrkTheta(0),
  fHMPIDtrkPhi(0),
  fHMPIDsignal(0),
  fTrackTime(0),
  fTrackLength(0),
  fdTPC(0),fzTPC(0),
  fCddTPC(0),fCdzTPC(0),fCzzTPC(0),
  fCchi2TPC(0),
  fD(0),fZ(0),
  fCdd(0),fCdz(0),fCzz(0),
  fCchi2(0),
  fITSchi2(0),
  fTPCchi2(0),
  fTPCchi2Iter1(0),
  fTRDchi2(0),
  fTOFchi2(0),
  fHMPIDchi2(0),
  fGlobalChi2(0),
  fITSsignal(0),
  fTPCsignal(0),
  fTPCsignalTuned(0),
  fTPCsignalS(0),
  fTPCdEdxInfo(0),
  fTRDsignal(0),
  fTRDQuality(0),
  fTRDBudget(0),
  fTOFsignal(99999),
  fTOFsignalTuned(99999),
  fTOFsignalToT(99999),
  fTOFsignalRaw(99999),
  fTOFsignalDz(999),
  fTOFsignalDx(999),
  fTOFdeltaBC(999),
  fTOFl0l1(999),
  fCaloDx(0),
  fCaloDz(0),
  fHMPIDtrkX(0),
  fHMPIDtrkY(0),
  fHMPIDmipX(0),
  fHMPIDmipY(0),
  fTPCncls(0),
  fTPCnclsF(0),
  fTPCsignalN(0),
  fTPCnclsIter1(0),
  fTPCnclsFIter1(0),
  fITSncls(0),
  fITSClusterMap(0),
  fITSSharedMap(0),
  fTRDncls(0),
  fTRDncls0(0),
  fTRDntracklets(0),
  fTRDNchamberdEdx(0),
  fTRDNclusterdEdx(0),
  fTRDnSlices(0),
  fTRDslices(0x0),
  fVertexID(-2),// -2 means an orphan track 
  fPIDForTracking(AliPID::kPion),
  fESDEvent(0),
  fCacheNCrossedRows(-10),
  fCacheChi2TPCConstrainedVsGlobal(-10),
  fCacheChi2TPCConstrainedVsGlobalVertex(0),
  fDetectorPID(0x0),
  fTrackPhiOnEMCal(-999),
  fTrackEtaOnEMCal(-999),
  fTrackPtOnEMCal(-999),
  fNtofClusters(0),
  fTOFcluster(NULL)
{
  //
  // The default ESD constructor 
  //
  if (!OnlineMode()) fFriendTrack=new AliESDfriendTrack();

  Int_t i;
  for (i=kNITSchi2Std;i--;) fITSchi2Std[i] = 0;
  
  for (i=0; i<3; i++)   { fKinkIndexes[i]=0;}
  for (i=0; i<3; i++)   { fV0Indexes[i]=0;}
  for (i=0;i<kTRDnPlanes;i++) {
    fTRDTimBin[i]=0;
  }
  for (i=0;i<4;i++) {fITSdEdxSamples[i]=0.;}
  for (i=0;i<4;i++) {fTPCPoints[i]=0;}
  for (i=0;i<10;i++) {fTOFInfo[i]=0;}
  for (i=0;i<12;i++) {fITSModule[i]=-1;}
}

bool AliESDtrack::fgkOnlineMode=false;

//_______________________________________________________________________
AliESDtrack::AliESDtrack(const AliESDtrack& track):
  AliExternalTrackParam(track),
  fCp(0),
  fIp(0),
  fTPCInner(0),
  fOp(0),
  fHMPIDp(0),  
  fFriendTrack(0),
  fTPCFitMap(track.fTPCFitMap),
  fTPCClusterMap(track.fTPCClusterMap),
  fTPCSharedMap(track.fTPCSharedMap),
  fFlags(track.fFlags),
  fID(track.fID),
  fLabel(track.fLabel),
  fITSLabel(track.fITSLabel),
  fTPCLabel(track.fTPCLabel),
  fTRDLabel(track.fTRDLabel),
  fTOFLabel(NULL),
  fTOFCalChannel(track.fTOFCalChannel),
  fTOFindex(track.fTOFindex),
  fHMPIDqn(track.fHMPIDqn),
  fHMPIDcluIdx(track.fHMPIDcluIdx),
  fCaloIndex(track.fCaloIndex),
  fR(0),
  fITSr(0),
  fTPCr(0),
  fTRDr(0),
  fTOFr(0),
  fHMPIDr(0),
  fHMPIDtrkTheta(track.fHMPIDtrkTheta),
  fHMPIDtrkPhi(track.fHMPIDtrkPhi),
  fHMPIDsignal(track.fHMPIDsignal),
  fTrackTime(NULL),
  fTrackLength(track.fTrackLength),
  fdTPC(track.fdTPC),fzTPC(track.fzTPC),
  fCddTPC(track.fCddTPC),fCdzTPC(track.fCdzTPC),fCzzTPC(track.fCzzTPC),
  fCchi2TPC(track.fCchi2TPC),
  fD(track.fD),fZ(track.fZ),
  fCdd(track.fCdd),fCdz(track.fCdz),fCzz(track.fCzz),
  fCchi2(track.fCchi2),
  fITSchi2(track.fITSchi2),
  fTPCchi2(track.fTPCchi2),
  fTPCchi2Iter1(track.fTPCchi2Iter1),
  fTRDchi2(track.fTRDchi2),
  fTOFchi2(track.fTOFchi2),
  fHMPIDchi2(track.fHMPIDchi2),
  fGlobalChi2(track.fGlobalChi2),
  fITSsignal(track.fITSsignal),
  fTPCsignal(track.fTPCsignal),
  fTPCsignalTuned(track.fTPCsignalTuned),
  fTPCsignalS(track.fTPCsignalS),
  fTPCdEdxInfo(0),
  fTRDsignal(track.fTRDsignal),
  fTRDQuality(track.fTRDQuality),
  fTRDBudget(track.fTRDBudget),
  fTOFsignal(track.fTOFsignal),
  fTOFsignalTuned(track.fTOFsignalTuned),
  fTOFsignalToT(track.fTOFsignalToT),
  fTOFsignalRaw(track.fTOFsignalRaw),
  fTOFsignalDz(track.fTOFsignalDz),
  fTOFsignalDx(track.fTOFsignalDx),
  fTOFdeltaBC(track.fTOFdeltaBC),
  fTOFl0l1(track.fTOFl0l1),
  fCaloDx(track.fCaloDx),
  fCaloDz(track.fCaloDz),
  fHMPIDtrkX(track.fHMPIDtrkX),
  fHMPIDtrkY(track.fHMPIDtrkY),
  fHMPIDmipX(track.fHMPIDmipX),
  fHMPIDmipY(track.fHMPIDmipY),
  fTPCncls(track.fTPCncls),
  fTPCnclsF(track.fTPCnclsF),
  fTPCsignalN(track.fTPCsignalN),
  fTPCnclsIter1(track.fTPCnclsIter1),
  fTPCnclsFIter1(track.fTPCnclsIter1),
  fITSncls(track.fITSncls),
  fITSClusterMap(track.fITSClusterMap),
  fITSSharedMap(track.fITSSharedMap),
  fTRDncls(track.fTRDncls),
  fTRDncls0(track.fTRDncls0),
  fTRDntracklets(track.fTRDntracklets),
  fTRDNchamberdEdx(track.fTRDNchamberdEdx),
  fTRDNclusterdEdx(track.fTRDNclusterdEdx),
  fTRDnSlices(track.fTRDnSlices),
  fTRDslices(0x0),
  fVertexID(track.fVertexID),
  fPIDForTracking(AliPID::kPion),
  fESDEvent(track.fESDEvent),
  fCacheNCrossedRows(track.fCacheNCrossedRows),
  fCacheChi2TPCConstrainedVsGlobal(track.fCacheChi2TPCConstrainedVsGlobal),
  fCacheChi2TPCConstrainedVsGlobalVertex(track.fCacheChi2TPCConstrainedVsGlobalVertex),
  fDetectorPID(0x0),
  fTrackPhiOnEMCal(track.fTrackPhiOnEMCal),
  fTrackEtaOnEMCal(track.fTrackEtaOnEMCal),
  fTrackPtOnEMCal(track.fTrackPtOnEMCal),
  fNtofClusters(track.fNtofClusters),
  fTOFcluster(NULL)
{
  //
  //copy constructor
  //
  for (Int_t i=kNITSchi2Std;i--;) fITSchi2Std[i] = track.fITSchi2Std[i];

  if(track.fTrackTime){
    fTrackTime = new Double32_t[AliPID::kSPECIESC];
    for (Int_t i=0;i<AliPID::kSPECIESC;i++) fTrackTime[i]=track.fTrackTime[i];
  }

  if (track.fR) {
    fR = new Double32_t[AliPID::kSPECIES]; 
    for (Int_t i=AliPID::kSPECIES;i--;)  fR[i]=track.fR[i];
  }
  if (track.fITSr) {
    fITSr = new Double32_t[AliPID::kSPECIES]; 
    for (Int_t i=AliPID::kSPECIES;i--;)  fITSr[i]=track.fITSr[i]; 
  }
  //
  if (track.fTPCr) {
    fTPCr = new Double32_t[AliPID::kSPECIES]; 
    for (Int_t i=AliPID::kSPECIES;i--;) fTPCr[i]=track.fTPCr[i]; 
  }

  for (Int_t i=0;i<4;i++) {fITSdEdxSamples[i]=track.fITSdEdxSamples[i];}
  for (Int_t i=0;i<4;i++) {fTPCPoints[i]=track.fTPCPoints[i];}
  for (Int_t i=0; i<3;i++)   { fKinkIndexes[i]=track.fKinkIndexes[i];}
  for (Int_t i=0; i<3;i++)   { fV0Indexes[i]=track.fV0Indexes[i];}
  //
  for (Int_t i=0;i<kTRDnPlanes;i++) {
    fTRDTimBin[i]=track.fTRDTimBin[i];
  }

  if (fTRDnSlices) {
    fTRDslices=new Double32_t[fTRDnSlices];
    for (Int_t i=0; i<fTRDnSlices; i++) fTRDslices[i]=track.fTRDslices[i];
  }

  if (track.fDetectorPID) fDetectorPID = new AliDetectorPID(*track.fDetectorPID);

  if (track.fTRDr) {
    fTRDr  = new Double32_t[AliPID::kSPECIES];
    for (Int_t i=AliPID::kSPECIES;i--;) fTRDr[i]=track.fTRDr[i]; 
  }

  if (track.fTOFr) {
    fTOFr = new Double32_t[AliPID::kSPECIES];
    for (Int_t i=AliPID::kSPECIES;i--;) fTOFr[i]=track.fTOFr[i];
  }

  if(track.fTOFLabel){
    if(!fTOFLabel) fTOFLabel = new Int_t[3];
    for (Int_t i=0;i<3;i++) fTOFLabel[i]=track.fTOFLabel[i];
  }

  for (Int_t i=0;i<10;i++) fTOFInfo[i]=track.fTOFInfo[i];
  for (Int_t i=0;i<12;i++) fITSModule[i]=track.fITSModule[i];
  
  if (track.fHMPIDr) {
    fHMPIDr = new Double32_t[AliPID::kSPECIES];
    for (Int_t i=AliPID::kSPECIES;i--;) fHMPIDr[i]=track.fHMPIDr[i];
  }

  if (track.fCp) fCp=new AliExternalTrackParam(*track.fCp);
  if (track.fIp) fIp=new AliExternalTrackParam(*track.fIp);
  if (track.fTPCInner) fTPCInner=new AliExternalTrackParam(*track.fTPCInner);
  if (track.fOp) fOp=new AliExternalTrackParam(*track.fOp);
  if (track.fHMPIDp) fHMPIDp=new AliExternalTrackParam(*track.fHMPIDp);
  if (track.fTPCdEdxInfo) fTPCdEdxInfo = new AliTPCdEdxInfo(*track.fTPCdEdxInfo);

  
  if (track.fFriendTrack) fFriendTrack=new AliESDfriendTrack(*(track.fFriendTrack));

  if(fNtofClusters > 0){
    fTOFcluster = new Int_t[fNtofClusters];
        for(Int_t i=0;i < fNtofClusters;i++) fTOFcluster[i] = track.fTOFcluster[i];
  }
}

//_______________________________________________________________________
AliESDtrack::AliESDtrack(const AliVTrack *track) : 
  AliExternalTrackParam(track),
  fCp(0),
  fIp(0),
  fTPCInner(0),
  fOp(0),
  fHMPIDp(0),  
  fFriendTrack(0),
  fTPCFitMap(159),//number of padrows
  fTPCClusterMap(159),//number of padrows
  fTPCSharedMap(159),//number of padrows
  fFlags(0),
  fID(),
  fLabel(0),
  fITSLabel(0),
  fTPCLabel(0),
  fTRDLabel(0),
  fTOFLabel(NULL),
  fTOFCalChannel(-1),
  fTOFindex(-1),
  fHMPIDqn(0),
  fHMPIDcluIdx(-1),
  fCaloIndex(kEMCALNoMatch),
  fR(0),
  fITSr(0),
  fTPCr(0),
  fTRDr(0),
  fTOFr(0),
  fHMPIDr(0),
  fHMPIDtrkTheta(0),
  fHMPIDtrkPhi(0),
  fHMPIDsignal(0),
  fTrackTime(NULL),
  fTrackLength(0),
  fdTPC(0),fzTPC(0),
  fCddTPC(0),fCdzTPC(0),fCzzTPC(0),
  fCchi2TPC(0),
  fD(0),fZ(0),
  fCdd(0),fCdz(0),fCzz(0),
  fCchi2(0),
  fITSchi2(0),
  fTPCchi2(0),
  fTPCchi2Iter1(0),
  fTRDchi2(0),
  fTOFchi2(0),
  fHMPIDchi2(0),
  fGlobalChi2(0),
  fITSsignal(0),
  fTPCsignal(0),
  fTPCsignalTuned(0),
  fTPCsignalS(0),
  fTPCdEdxInfo(0),
  fTRDsignal(0),
  fTRDQuality(0),
  fTRDBudget(0),
  fTOFsignal(99999),
  fTOFsignalTuned(99999),
  fTOFsignalToT(99999),
  fTOFsignalRaw(99999),
  fTOFsignalDz(999),
  fTOFsignalDx(999),
  fTOFdeltaBC(999),
  fTOFl0l1(999),
  fCaloDx(0),
  fCaloDz(0),
  fHMPIDtrkX(0),
  fHMPIDtrkY(0),
  fHMPIDmipX(0),
  fHMPIDmipY(0),
  fTPCncls(0),
  fTPCnclsF(0),
  fTPCsignalN(0),
  fTPCnclsIter1(0),
  fTPCnclsFIter1(0),
  fITSncls(0),
  fITSClusterMap(0),
  fITSSharedMap(0),
  fTRDncls(0),
  fTRDncls0(0),
  fTRDntracklets(0),
  fTRDNchamberdEdx(0),
  fTRDNclusterdEdx(0),
  fTRDnSlices(0),
  fTRDslices(0x0),
  fVertexID(-2),  // -2 means an orphan track
  fPIDForTracking(track->GetPIDForTracking()),
  fESDEvent(0),
  fCacheNCrossedRows(-10),
  fCacheChi2TPCConstrainedVsGlobal(-10),
  fCacheChi2TPCConstrainedVsGlobalVertex(0),
  fDetectorPID(0x0),
  fTrackPhiOnEMCal(-999),
  fTrackEtaOnEMCal(-999),
  fTrackPtOnEMCal(-999),
  fNtofClusters(0),
  fTOFcluster(NULL)
{
  //
  // ESD track from AliVTrack.
  // This is not a copy constructor !
  //

  if (track->InheritsFrom("AliExternalTrackParam")) {
     AliError("This is not a copy constructor. Use AliESDtrack(const AliESDtrack &) !");
     AliWarning("Calling the default constructor...");
     AliESDtrack();
     return;
  }

  // Reset all the arrays
  Int_t i;
  for (i=kNITSchi2Std;i--;) fITSchi2Std[i] = 0;
  
  for (i=0; i<3; i++)   { fKinkIndexes[i]=0;}
  for (i=0; i<3; i++)   { fV0Indexes[i]=-1;}
  for (i=0;i<kTRDnPlanes;i++) {
    fTRDTimBin[i]=0;
  }
  for (i=0;i<4;i++) {fITSdEdxSamples[i]=0.;}
  for (i=0;i<4;i++) {fTPCPoints[i]=0;}
  for (i=0;i<10;i++) {fTOFInfo[i]=0;}
  for (i=0;i<12;i++) {fITSModule[i]=-1;}


  // Set ITS cluster map
  fITSClusterMap=track->GetITSClusterMap();
  fITSSharedMap=0;

  fITSncls=0;
  for(i=0; i<6; i++) {
    if(HasPointOnITSLayer(i)) fITSncls++;
  }

  // Set TPC ncls 
  fTPCncls=track->GetTPCNcls();
  fTPCnclsF=track->GetTPCNclsF();
  // TPC cluster maps
  const TBits* bmap = track->GetTPCClusterMapPtr();
  if (bmap) SetTPCClusterMap(*bmap);
  bmap = GetTPCFitMapPtr();
  if (bmap) SetTPCFitMap(*bmap);
  bmap = GetTPCSharedMapPtr();
  if (bmap) SetTPCSharedMap(*bmap);
  //
  // Set the combined PID
  const Double_t *pid = track->PID();
  if(pid) {
    fR = new Double32_t[AliPID::kSPECIES];
    for (i=AliPID::kSPECIES; i--;) fR[i]=pid[i];
  }
  //
  // calo matched cluster id
  SetEMCALcluster(track->GetEMCALcluster());
  // AliESD track label
  //
  // PID info
  fITSsignal = track->GetITSsignal();
  double itsdEdx[4];
  track->GetITSdEdxSamples(itsdEdx);
  SetITSdEdxSamples(itsdEdx);
  //
  SetTPCsignal(track->GetTPCsignal(),fTPCsignalS,track->GetTPCsignalN()); // No signalS in AODPi
  AliTPCdEdxInfo * dEdxInfo = track->GetTPCdEdxInfo();
  if (dEdxInfo) SetTPCdEdxInfo(new AliTPCdEdxInfo(*dEdxInfo));
  //
  SetTRDsignal(track->GetTRDsignal());
  int ntrdsl = track->GetNumberOfTRDslices();
  if (ntrdsl>0) {
    SetNumberOfTRDslices((ntrdsl+2)*kTRDnPlanes);
    for (int ipl=kTRDnPlanes;ipl--;){
      for (int isl=ntrdsl;isl--;) SetTRDslice(track->GetTRDslice(ipl,isl),ipl,isl);
      Double_t sp, p = track->GetTRDmomentum(ipl, &sp);
      SetTRDmomentum(p, ipl, &sp);
    }
  }
  //
  fTRDncls = track->GetTRDncls();
  fTRDntracklets &= 0xff & track->GetTRDntrackletsPID();
  fTRDchi2 = track->GetTRDchi2();
  //
  SetTOFsignal(track->GetTOFsignal());
  Double_t expt[AliPID::kSPECIESC];
  track->GetIntegratedTimes(expt,AliPID::kSPECIESC);
  SetIntegratedTimes(expt);
  //
  SetTrackPhiEtaPtOnEMCal(track->GetTrackPhiOnEMCal(),track->GetTrackEtaOnEMCal(),track->GetTrackPtOnEMCal());
  //
  SetLabel(track->GetLabel());
  // Set the status
  SetStatus(track->GetStatus());
  //
  // Set the ID
  SetID(track->GetID());
  //
}

//_______________________________________________________________________
AliESDtrack::AliESDtrack(TParticle * part) : 
  AliExternalTrackParam(),
  fCp(0),
  fIp(0),
  fTPCInner(0),
  fOp(0),
  fHMPIDp(0),  
  fFriendTrack(0),
  fTPCFitMap(159),//number of padrows
  fTPCClusterMap(159),//number of padrows
  fTPCSharedMap(159),//number of padrows
  fFlags(0),
  fID(0),
  fLabel(0),
  fITSLabel(0),
  fTPCLabel(0),
  fTRDLabel(0),
  fTOFLabel(NULL),
  fTOFCalChannel(-1),
  fTOFindex(-1),
  fHMPIDqn(0),
  fHMPIDcluIdx(-1),
  fCaloIndex(kEMCALNoMatch),
  fR(0),
  fITSr(0),
  fTPCr(0),
  fTRDr(0),
  fTOFr(0),
  fHMPIDr(0),
  fHMPIDtrkTheta(0),
  fHMPIDtrkPhi(0),
  fHMPIDsignal(0),
  fTrackTime(NULL),
  fTrackLength(0),
  fdTPC(0),fzTPC(0),
  fCddTPC(0),fCdzTPC(0),fCzzTPC(0),
  fCchi2TPC(0),
  fD(0),fZ(0),
  fCdd(0),fCdz(0),fCzz(0),
  fCchi2(0),
  fITSchi2(0),
  fTPCchi2(0),
  fTPCchi2Iter1(0),  
  fTRDchi2(0),
  fTOFchi2(0),
  fHMPIDchi2(0),
  fGlobalChi2(0),
  fITSsignal(0),
  fTPCsignal(0),
  fTPCsignalTuned(0),
  fTPCsignalS(0),
  fTPCdEdxInfo(0),
  fTRDsignal(0),
  fTRDQuality(0),
  fTRDBudget(0),
  fTOFsignal(99999),
  fTOFsignalTuned(99999),
  fTOFsignalToT(99999),
  fTOFsignalRaw(99999),
  fTOFsignalDz(999),
  fTOFsignalDx(999),
  fTOFdeltaBC(999),
  fTOFl0l1(999),
  fCaloDx(0),
  fCaloDz(0),
  fHMPIDtrkX(0),
  fHMPIDtrkY(0),
  fHMPIDmipX(0),
  fHMPIDmipY(0),
  fTPCncls(0),
  fTPCnclsF(0),
  fTPCsignalN(0),
  fTPCnclsIter1(0),
  fTPCnclsFIter1(0),
  fITSncls(0),
  fITSClusterMap(0),
  fITSSharedMap(0),
  fTRDncls(0),
  fTRDncls0(0),
  fTRDntracklets(0),
  fTRDNchamberdEdx(0),
  fTRDNclusterdEdx(0),
  fTRDnSlices(0),
  fTRDslices(0x0),
  fVertexID(-2),  // -2 means an orphan track
  fPIDForTracking(AliPID::kPion),
  fESDEvent(0),
  fCacheNCrossedRows(-10),
  fCacheChi2TPCConstrainedVsGlobal(-10),
  fCacheChi2TPCConstrainedVsGlobalVertex(0),
  fDetectorPID(0x0),
  fTrackPhiOnEMCal(-999),
  fTrackEtaOnEMCal(-999),
  fTrackPtOnEMCal(-999),
  fNtofClusters(0),
  fTOFcluster(NULL)
{
  //
  // ESD track from TParticle
  //

  // Reset all the arrays
  Int_t i;
  for (i=kNITSchi2Std;i--;) fITSchi2Std[i] = 0;
  
  for (i=0; i<3; i++)   { fKinkIndexes[i]=0;}
  for (i=0; i<3; i++)   { fV0Indexes[i]=-1;}
  for (i=0;i<kTRDnPlanes;i++) {
    fTRDTimBin[i]=0;
  }
  for (i=0;i<4;i++) {fITSdEdxSamples[i]=0.;}
  for (i=0;i<4;i++) {fTPCPoints[i]=0;}
  for (i=0;i<10;i++) {fTOFInfo[i]=0;}
  for (i=0;i<12;i++) {fITSModule[i]=-1;}

  // Calculate the AliExternalTrackParam content

  Double_t xref;
  Double_t alpha;
  Double_t param[5];
  Double_t covar[15];

  // Calculate alpha: the rotation angle of the corresponding local system (TPC sector)
  alpha = part->Phi()*180./TMath::Pi();
  if (alpha<0) alpha+= 360.;
  if (alpha>360) alpha -= 360.;

  Int_t sector = (Int_t)(alpha/20.);
  alpha = 10. + 20.*sector;
  alpha /= 180;
  alpha *= TMath::Pi();

  // Covariance matrix: no errors, the parameters are exact
  for (i=0; i<15; i++) covar[i]=0.;

  // Get the vertex of origin and the momentum
  TVector3 ver(part->Vx(),part->Vy(),part->Vz());
  TVector3 mom(part->Px(),part->Py(),part->Pz());

  // Rotate to the local coordinate system (TPC sector)
  ver.RotateZ(-alpha);
  mom.RotateZ(-alpha);

  // X of the referense plane
  xref = ver.X();

  Int_t pdgCode = part->GetPdgCode();

  Double_t charge = 
    TDatabasePDG::Instance()->GetParticle(pdgCode)->Charge();

  param[0] = ver.Y();
  param[1] = ver.Z();
  param[2] = TMath::Sin(mom.Phi());
  param[3] = mom.Pz()/mom.Pt();
  param[4] = TMath::Sign(1/mom.Pt(),charge);

  // Set AliExternalTrackParam
  Set(xref, alpha, param, covar);

  // Set the PID
  Int_t indexPID = 99;
  if (pdgCode<0) pdgCode = -pdgCode;
  for (i=0;i<AliPID::kSPECIESC;i++) if (pdgCode==AliPID::ParticleCode(i)) {indexPID = i; break;}

  if (indexPID < AliPID::kSPECIESC) fPIDForTracking = indexPID;

  // AliESD track label
  SetLabel(part->GetUniqueID());

}

//_______________________________________________________________________
AliESDtrack::~AliESDtrack(){ 
  //
  // This is destructor according Coding Conventrions 
  //
  //printf("Delete track\n");
  delete fIp; 
  delete fTPCInner; 
  delete fOp;
  delete fHMPIDp;
  delete fCp; 
  delete fFriendTrack;
  delete fTPCdEdxInfo;
  if(fTRDnSlices)
    delete[] fTRDslices;

  //Reset cached values - needed for TClonesArray in AliESDInputHandler
  fCacheNCrossedRows = -10.;
  fCacheChi2TPCConstrainedVsGlobal = -10.;
  if(fCacheChi2TPCConstrainedVsGlobalVertex) fCacheChi2TPCConstrainedVsGlobalVertex = 0;

  if(fTOFcluster)
    delete[] fTOFcluster;
  fTOFcluster = NULL;
  fNtofClusters=0;

  delete fDetectorPID;

  delete[] fR;
  delete[] fITSr;
  delete[] fTPCr;
  delete[] fTRDr;
  delete[] fTOFr;
  delete[] fHMPIDr;
  //
  if(fTrackTime) delete[] fTrackTime; 
  if(fTOFLabel) delete[] fTOFLabel;
}

//_______________________________________________________________________
AliESDtrack &AliESDtrack::operator=(const AliESDtrack &source)
{
  // == operator

  if(&source == this) return *this;
  AliExternalTrackParam::operator=(source);

  
  if(source.fCp){
    // we have the trackparam: assign or copy construct
    if(fCp)*fCp = *source.fCp;
    else fCp = new AliExternalTrackParam(*source.fCp);
  }
  else{
    // no track param delete the old one
    delete fCp;
    fCp = 0;
  }

  if(source.fIp){
    // we have the trackparam: assign or copy construct
    if(fIp)*fIp = *source.fIp;
    else fIp = new AliExternalTrackParam(*source.fIp);
  }
  else{
    // no track param delete the old one
    delete fIp;
    fIp = 0;
  }


  if(source.fTPCInner){
    // we have the trackparam: assign or copy construct
    if(fTPCInner) *fTPCInner = *source.fTPCInner;
    else fTPCInner = new AliExternalTrackParam(*source.fTPCInner);
  }
  else{
    // no track param delete the old one
    delete fTPCInner;
    fTPCInner = 0;
  }

  if(source.fTPCdEdxInfo) {
    if(fTPCdEdxInfo) *fTPCdEdxInfo = *source.fTPCdEdxInfo;
    fTPCdEdxInfo = new AliTPCdEdxInfo(*source.fTPCdEdxInfo);
  }

  if(source.fOp){
    // we have the trackparam: assign or copy construct
    if(fOp) *fOp = *source.fOp;
    else fOp = new AliExternalTrackParam(*source.fOp);
  }
  else{
    // no track param delete the old one
    delete fOp;
    fOp = 0;
  }

  
  if(source.fHMPIDp){
    // we have the trackparam: assign or copy construct
    if(fHMPIDp) *fHMPIDp = *source.fHMPIDp;
    else fHMPIDp = new AliExternalTrackParam(*source.fHMPIDp);
  }
  else{
    // no track param delete the old one
    delete fHMPIDp;
    fHMPIDp = 0;
  }

  // copy also the friend track 
  // use copy constructor
  if(source.fFriendTrack){
    // we have the trackparam: assign or copy construct
    delete fFriendTrack; fFriendTrack=new AliESDfriendTrack(*source.fFriendTrack);
  }
  else{
    // no track param delete the old one
    delete fFriendTrack; fFriendTrack= 0;
  }

  fTPCFitMap = source.fTPCFitMap; 
  fTPCClusterMap = source.fTPCClusterMap; 
  fTPCSharedMap  = source.fTPCSharedMap;  
  // the simple stuff
  fFlags    = source.fFlags; 
  fID       = source.fID;             
  fLabel    = source.fLabel;
  fITSLabel = source.fITSLabel;
  for(int i = 0; i< 12;++i){
    fITSModule[i] = source.fITSModule[i];
  }
  fTPCLabel = source.fTPCLabel; 
  fTRDLabel = source.fTRDLabel;
  if(source.fTOFLabel){
    if(!fTOFLabel) fTOFLabel = new Int_t[3];
    for(int i = 0; i< 3;++i){
      fTOFLabel[i] = source.fTOFLabel[i];    
    }
  }
  fTOFCalChannel = source.fTOFCalChannel;
  fTOFindex      = source.fTOFindex;
  fHMPIDqn       = source.fHMPIDqn;
  fHMPIDcluIdx   = source.fHMPIDcluIdx; 
  fCaloIndex    = source.fCaloIndex;
  for (int i=kNITSchi2Std;i--;) fITSchi2Std[i] = source.fITSchi2Std[i];
  for(int i = 0; i< 3;++i){
    fKinkIndexes[i] = source.fKinkIndexes[i]; 
    fV0Indexes[i]   = source.fV0Indexes[i]; 
  }

  if (source.fR) {
    if (!fR) fR = new Double32_t[AliPID::kSPECIES]; 
    for (Int_t i=AliPID::kSPECIES;i--;)  fR[i]=source.fR[i];
  }
  else {delete[] fR; fR = 0;}

  if (source.fITSr) {
    if (!fITSr) fITSr = new Double32_t[AliPID::kSPECIES]; 
    for (Int_t i=AliPID::kSPECIES;i--;)  fITSr[i]=source.fITSr[i]; 
  }
  else {delete[] fITSr; fITSr = 0;}
  //
  if (source.fTPCr) {
    if (!fTPCr) fTPCr = new Double32_t[AliPID::kSPECIES]; 
    for (Int_t i=AliPID::kSPECIES;i--;) fTPCr[i]=source.fTPCr[i]; 
  }
  else {delete[] fTPCr; fTPCr = 0;}

  if (source.fTRDr) {
    if (!fTRDr) fTRDr  = new Double32_t[AliPID::kSPECIES];
    for (Int_t i=AliPID::kSPECIES;i--;) fTRDr[i]=source.fTRDr[i]; 
  }
  else {delete[] fTRDr; fTRDr = 0;}

  if (source.fTOFr) {
    if (!fTOFr) fTOFr = new Double32_t[AliPID::kSPECIES];
    for (Int_t i=AliPID::kSPECIES;i--;) fTOFr[i]=source.fTOFr[i];
  }
  else {delete[] fTOFr; fTOFr = 0;}

  if (source.fHMPIDr) {
    if (!fHMPIDr) fHMPIDr = new Double32_t[AliPID::kSPECIES];
    for (Int_t i=AliPID::kSPECIES;i--;) fHMPIDr[i]=source.fHMPIDr[i];
  }
  else {delete[] fHMPIDr; fHMPIDr = 0;}
  
  fPIDForTracking = source.fPIDForTracking;

  fHMPIDtrkTheta = source.fHMPIDtrkTheta;
  fHMPIDtrkPhi   = source.fHMPIDtrkPhi;
  fHMPIDsignal   = source.fHMPIDsignal; 

  
  if(fTrackTime){
    delete[] fTrackTime;
  }
  if(source.fTrackTime){
    fTrackTime = new Double32_t[AliPID::kSPECIESC];
    for(Int_t i=0;i < AliPID::kSPECIESC;i++)
      fTrackTime[i] = source.fTrackTime[i];  
  }

  fTrackLength   = source. fTrackLength;
  fdTPC  = source.fdTPC; 
  fzTPC  = source.fzTPC; 
  fCddTPC = source.fCddTPC;
  fCdzTPC = source.fCdzTPC;
  fCzzTPC = source.fCzzTPC;
  fCchi2TPC = source.fCchi2TPC;

  fD  = source.fD; 
  fZ  = source.fZ; 
  fCdd = source.fCdd;
  fCdz = source.fCdz;
  fCzz = source.fCzz;
  fCchi2     = source.fCchi2;

  fITSchi2   = source.fITSchi2;             
  fTPCchi2   = source.fTPCchi2;            
  fTPCchi2Iter1   = source.fTPCchi2Iter1;            
  fTRDchi2   = source.fTRDchi2;      
  fTOFchi2   = source.fTOFchi2;      
  fHMPIDchi2 = source.fHMPIDchi2;      

  fGlobalChi2 = source.fGlobalChi2;      

  fITSsignal  = source.fITSsignal;     
  for (Int_t i=0;i<4;i++) {fITSdEdxSamples[i]=source.fITSdEdxSamples[i];}
  fTPCsignal  = source.fTPCsignal;     
  fTPCsignalTuned  = source.fTPCsignalTuned;
  fTPCsignalS = source.fTPCsignalS;    
  for(int i = 0; i< 4;++i){
    fTPCPoints[i] = source.fTPCPoints[i];  
  }
  fTRDsignal = source.fTRDsignal;
  fTRDNchamberdEdx = source.fTRDNchamberdEdx;
  fTRDNclusterdEdx = source.fTRDNclusterdEdx;

  for(int i = 0;i < kTRDnPlanes;++i){
    fTRDTimBin[i] = source.fTRDTimBin[i];   
  }

  if(fTRDnSlices)
    delete[] fTRDslices;
  fTRDslices=0;
  fTRDnSlices=source.fTRDnSlices;
  if (fTRDnSlices) {
    fTRDslices=new Double32_t[fTRDnSlices];
    for(int j = 0;j < fTRDnSlices;++j) fTRDslices[j] = source.fTRDslices[j];
  }

  fTRDQuality =   source.fTRDQuality;     
  fTRDBudget  =   source.fTRDBudget;      
  fTOFsignal  =   source.fTOFsignal;     
  fTOFsignalTuned  = source.fTOFsignalTuned;
  fTOFsignalToT = source.fTOFsignalToT;   
  fTOFsignalRaw = source.fTOFsignalRaw;  
  fTOFsignalDz  = source.fTOFsignalDz;      
  fTOFsignalDx  = source.fTOFsignalDx;      
  fTOFdeltaBC   = source.fTOFdeltaBC;
  fTOFl0l1      = source.fTOFl0l1;
 
  for(int i = 0;i<10;++i){
    fTOFInfo[i] = source.fTOFInfo[i];    
  }

  fHMPIDtrkX = source.fHMPIDtrkX; 
  fHMPIDtrkY = source.fHMPIDtrkY; 
  fHMPIDmipX = source.fHMPIDmipX;
  fHMPIDmipY = source.fHMPIDmipY; 

  fTPCncls    = source.fTPCncls;      
  fTPCnclsF   = source.fTPCnclsF;     
  fTPCsignalN = source.fTPCsignalN;   
  fTPCnclsIter1    = source.fTPCnclsIter1;      
  fTPCnclsFIter1   = source.fTPCnclsFIter1;     

  fITSncls = source.fITSncls;       
  fITSClusterMap = source.fITSClusterMap; 
  fITSSharedMap = source.fITSSharedMap; 
  fTRDncls   = source.fTRDncls;       
  fTRDncls0  = source.fTRDncls0;      
  fTRDntracklets  = source.fTRDntracklets; 
  fVertexID = source.fVertexID;
  fPIDForTracking = source.fPIDForTracking;

  fCacheNCrossedRows = source.fCacheNCrossedRows;
  fCacheChi2TPCConstrainedVsGlobal = source.fCacheChi2TPCConstrainedVsGlobal;
  fCacheChi2TPCConstrainedVsGlobalVertex = source.fCacheChi2TPCConstrainedVsGlobalVertex;

  delete fDetectorPID;
  fDetectorPID=0x0;
  if (source.fDetectorPID) fDetectorPID = new AliDetectorPID(*source.fDetectorPID);
  
  fTrackPhiOnEMCal= source.fTrackPhiOnEMCal;
  fTrackEtaOnEMCal= source.fTrackEtaOnEMCal;
  fTrackPtOnEMCal= source.fTrackPtOnEMCal;

  if(fTOFcluster){
    delete[] fTOFcluster;
  }
  fNtofClusters = source.fNtofClusters;
  if(fNtofClusters > 0){
    fTOFcluster = new Int_t[fNtofClusters];
        for(Int_t i=0;i < fNtofClusters;i++) fTOFcluster[i] = source.fTOFcluster[i];
  }

  return *this;
}



void AliESDtrack::Copy(TObject &obj) const {
  
  // this overwrites the virtual TOBject::Copy()
  // to allow run time copying without casting
  // in AliESDEvent

  if(this==&obj)return;
  AliESDtrack *robj = dynamic_cast<AliESDtrack*>(&obj);
  if(!robj)return; // not an AliESDtrack
  *robj = *this;

}



void AliESDtrack::AddCalibObject(TObject * object){
  //
  // add calib object to the list
  //
  if (!fFriendTrack) fFriendTrack  = new AliESDfriendTrack;
  if (!fFriendTrack) return;
  fFriendTrack->AddCalibObject(object);
}

TObject *  AliESDtrack::GetCalibObject(Int_t index){
  //
  // return calib objct at given position
  //
  if (!fFriendTrack) return 0;
  return fFriendTrack->GetCalibObject(index);
}


Bool_t AliESDtrack::FillTPCOnlyTrack(AliESDtrack &track){
  
  // Fills the information of the TPC-only first reconstruction pass
  // into the passed ESDtrack object. For consistency fTPCInner is also filled
  // again



  // For data produced before r26675
  // RelateToVertexTPC was not properly called during reco
  // so you'll have to call it again, before FillTPCOnlyTrack
  //  Float_t p[2],cov[3];
  // track->GetImpactParametersTPC(p,cov); 
  // if(p[0]==0&&p[1]==0) // <- Default values
  //  track->RelateToVertexTPC(esd->GetPrimaryVertexTPC(),esd->GetMagneticField(),kVeryBig);
  

  if(!fTPCInner)return kFALSE;

  // fill the TPC track params to the global track parameters
  track.Set(fTPCInner->GetX(),fTPCInner->GetAlpha(),fTPCInner->GetParameter(),fTPCInner->GetCovariance());
  track.fD = fdTPC;
  track.fZ = fzTPC;
  track.fCdd = fCddTPC;
  track.fCdz = fCdzTPC;
  track.fCzz = fCzzTPC;

  // copy the inner params
  if(track.fIp) *track.fIp = *fIp;
  else track.fIp = new AliExternalTrackParam(*fIp);

  // copy the TPCinner parameters
  if(track.fTPCInner) *track.fTPCInner = *fTPCInner;
  else track.fTPCInner = new AliExternalTrackParam(*fTPCInner);
  track.fdTPC   = fdTPC;
  track.fzTPC   = fzTPC;
  track.fCddTPC = fCddTPC;
  track.fCdzTPC = fCdzTPC;
  track.fCzzTPC = fCzzTPC;
  track.fCchi2TPC = fCchi2TPC;

  // copy all other TPC specific parameters

  // replace label by TPC label
  track.fLabel    = fTPCLabel;
  track.fTPCLabel = fTPCLabel;

  track.fTPCchi2 = fTPCchi2; 
  track.fTPCchi2Iter1 = fTPCchi2Iter1; 
  track.fTPCsignal = fTPCsignal;
  track.fTPCsignalTuned = fTPCsignalTuned;
  track.fTPCsignalS = fTPCsignalS;
  for(int i = 0;i<4;++i)track.fTPCPoints[i] = fTPCPoints[i];

  track.fTPCncls    = fTPCncls;     
  track.fTPCnclsF   = fTPCnclsF;     
  track.fTPCsignalN =  fTPCsignalN;
  track.fTPCnclsIter1    = fTPCnclsIter1;     
  track.fTPCnclsFIter1   = fTPCnclsFIter1;     

  // PID 
  if (fTPCr) {
    if (!track.fTPCr) track.fTPCr = new Double32_t[AliPID::kSPECIES];
    for(int i=AliPID::kSPECIES;i--;) track.fTPCr[i] = fTPCr[i];
  }
  //
  if (fR) {
    if (!track.fR) track.fR = new Double32_t[AliPID::kSPECIES];
    for(int i=AliPID::kSPECIES;i--;) track.fR[i] = fR[i];
  }
    
  track.fTPCFitMap = fTPCFitMap;
  track.fTPCClusterMap = fTPCClusterMap;
  track.fTPCSharedMap = fTPCSharedMap;


  // reset the flags
  track.fFlags = kTPCin;
  track.fID    = fID;

  track.fFlags |= fFlags & kTPCpid; //copy the TPCpid status flag
 
  for (Int_t i=0;i<3;i++) track.fKinkIndexes[i] = fKinkIndexes[i];
  
  return kTRUE;
    
}

//_______________________________________________________________________
void AliESDtrack::MakeMiniESDtrack(){
  // Resets everything except
  // fFlags: Reconstruction status flags 
  // fLabel: Track label
  // fID:  Unique ID of the track
  // Impact parameter information
  // fR[AliPID::kSPECIES]: combined "detector response probability"
  // Running track parameters in the base class (AliExternalTrackParam)
  
  fTrackLength = 0;

  if(fTrackTime)
    for (Int_t i=0;i<AliPID::kSPECIESC;i++) fTrackTime[i] = 0;

  // Reset track parameters constrained to the primary vertex
  delete fCp;fCp = 0;

  // Reset track parameters at the inner wall of TPC
  delete fIp;fIp = 0;
  delete fTPCInner;fTPCInner=0;
  // Reset track parameters at the inner wall of the TRD
  delete fOp;fOp = 0;
  // Reset track parameters at the HMPID
  delete fHMPIDp;fHMPIDp = 0;


  // Reset ITS track related information
  fITSchi2 = 0;
  fITSncls = 0;       
  fITSClusterMap=0;
  fITSSharedMap=0;
  fITSsignal = 0;     
  for (Int_t i=0;i<4;i++) fITSdEdxSamples[i] = 0.;
  if (fITSr) for (Int_t i=0;i<AliPID::kSPECIES;i++) fITSr[i]=0; 
  fITSLabel = 0;       

  // Reset TPC related track information
  fTPCchi2 = 0;       
  fTPCchi2Iter1 = 0;       
  fTPCncls = 0;       
  fTPCnclsF = 0;       
  fTPCnclsIter1 = 0;       
  fTPCnclsFIter1 = 0;  
  fTPCFitMap = 0;       
  fTPCClusterMap = 0;  
  fTPCSharedMap = 0;  
  fTPCsignal= 0;      
  fTPCsignalTuned= 0;
  fTPCsignalS= 0;      
  fTPCsignalN= 0;      
  if (fTPCr) for (Int_t i=0;i<AliPID::kSPECIES;i++) fTPCr[i] = 0; 
  fTPCLabel=0;       
  for (Int_t i=0;i<4;i++) fTPCPoints[i] = 0;
  for (Int_t i=0; i<3;i++)   fKinkIndexes[i] = 0;
  for (Int_t i=0; i<3;i++)   fV0Indexes[i] = 0;

  // Reset TRD related track information
  fTRDchi2 = 0;        
  fTRDncls = 0;       
  fTRDncls0 = 0;       
  fTRDsignal = 0;      
  fTRDNchamberdEdx = 0;
  fTRDNclusterdEdx = 0;

  for (Int_t i=0;i<kTRDnPlanes;i++) {
    fTRDTimBin[i]  = 0;
  }
  if (fTRDr) for (Int_t i=0;i<AliPID::kSPECIES;i++) fTRDr[i] = 0; 
  fTRDLabel = 0;       
  fTRDQuality  = 0;
  fTRDntracklets = 0;
  if(fTRDnSlices)
    delete[] fTRDslices;
  fTRDslices=0x0;
  fTRDnSlices=0;
  fTRDBudget  = 0;

  // Reset TOF related track information
  fTOFchi2 = 0;        
  fTOFindex = -1;       
  fTOFsignal = 99999;      
  fTOFCalChannel = -1;
  fTOFsignalToT = 99999;
  fTOFsignalRaw = 99999;
  fTOFsignalDz = 999;
  fTOFsignalDx = 999;
  fTOFdeltaBC = 999;
  fTOFl0l1 = 999;
  if (fTOFr) for (Int_t i=0;i<AliPID::kSPECIES;i++) fTOFr[i] = 0;
  for (Int_t i=0;i<10;i++) fTOFInfo[i] = 0;

  // Reset HMPID related track information
  fHMPIDchi2 = 0;     
  fHMPIDqn = 0;     
  fHMPIDcluIdx = -1;     
  fHMPIDsignal = 0;     
  if (fHMPIDr) for (Int_t i=0;i<AliPID::kSPECIES;i++) fHMPIDr[i] = 0;
  fHMPIDtrkTheta = 0;     
  fHMPIDtrkPhi = 0;      
  fHMPIDtrkX = 0;     
  fHMPIDtrkY = 0;      
  fHMPIDmipX = 0;
  fHMPIDmipY = 0;
  fCaloIndex = kEMCALNoMatch;

  // reset global track chi2
  fGlobalChi2 = 0;

  fVertexID = -2; // an orphan track
  fPIDForTracking = AliPID::kPion;
  //
  delete fFriendTrack; fFriendTrack = 0;
} 

//_______________________________________________________________________
Int_t AliESDtrack::GetPID(Bool_t tpcOnly) const 
{
  // Returns the particle most probable id. For backward compatibility first the prob. arrays
  // will be checked, but normally the GetPIDForTracking will be returned
  Int_t i;
  const Double32_t *prob = 0;
  if (tpcOnly) { // check if TPCpid is valid
    if (!fTPCr) return GetPIDForTracking();
    prob = fTPCr;
    for (i=0; i<AliPID::kSPECIES-1; i++) if (prob[i] != prob[i+1]) break;
    if (i == AliPID::kSPECIES-1) prob = 0; // not valid, try with combined pid
  }
  if (!prob) { // either requested TPCpid is not valid or comb.pid is requested 
    if (!fR) return GetPIDForTracking();
    prob = fR;
    for (i=0; i<AliPID::kSPECIES-1; i++) if (prob[i] != prob[i+1]) break;
    if (i == AliPID::kSPECIES-1) return GetPIDForTracking();  // If all the probabilities are equal, return the pion mass
  }
  //
  Float_t max=0.;
  Int_t k=-1;
  for (i=0; i<AliPID::kSPECIES; i++) if (prob[i]>max) {k=i; max=prob[i];}
  //
  if (k==0) { // dE/dx "crossing points" in the TPC
    /*
    Double_t p=GetP();
    if ((p>0.38)&&(p<0.48))
      if (prob[0]<prob[3]*10.) return AliPID::kKaon;
    if ((p>0.75)&&(p<0.85))
      if (prob[0]<prob[4]*10.) return AliPID::kProton;
    */
    return AliPID::kElectron;
  }
  if (k==1) return AliPID::kMuon; 
  if (k==2||k==-1) return AliPID::kPion;
  if (k==3) return AliPID::kKaon;
  if (k==4) return AliPID::kProton;
  //  AliWarning("Undefined PID !");
  return GetPIDForTracking();
}

//_______________________________________________________________________
Int_t AliESDtrack::GetTOFBunchCrossing(Double_t b, Bool_t pidTPConly) 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 = GetPID(pidTPConly);
    Double_t times[AliPID::kSPECIESC];
    // old esd has only AliPID::kSPECIES times
    GetIntegratedTimes(times,pid>=AliPID::kSPECIES ? AliPID::kSPECIESC : AliPID::kSPECIES); 
    tdif -= times[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 = GetP();
    if (p<0.01) return bcid;
    double m = GetMass(pidTPConly);
    double curv = GetC(b);
    double path = TMath::Abs(curv)>kAlmost0 ? // account for curvature
      2./curv*TMath::ASin(kRTOF*curv/2.)*TMath::Sqrt(1.+GetTgl()*GetTgl()) : kRTOF;
    tdif -= path/kCSpeed*TMath::Sqrt(1.+m*m/(p*p));
  }
  bcid = TMath::Nint((tdif - kShift)/kSpacing);
  return bcid;
}

//______________________________________________________________________________
Double_t AliESDtrack::M() const
{
  // Returns the assumed mass
  // (the pion mass, if the particle can't be identified properly).
  static Bool_t printerr=kTRUE;
  if (printerr) {
     AliWarning("WARNING !!! ... THIS WILL BE PRINTED JUST ONCE !!!");
     printerr = kFALSE;
     AliWarning("This is the ESD mass. Use it with care !"); 
  }
  return GetMass(); 
}
  
//______________________________________________________________________________
Double_t AliESDtrack::E() const
{
  // Returns the energy of the particle given its assumed mass.
  // Assumes the pion mass if the particle can't be identified properly.
  
  Double_t m = M();
  Double_t p = P();
  return TMath::Sqrt(p*p + m*m);
}

//______________________________________________________________________________
Double_t AliESDtrack::Y() const
{
  // Returns the rapidity of a particle given its assumed mass.
  // Assumes the pion mass if the particle can't be identified properly.
  
  Double_t e = E();
  Double_t pz = Pz();
  if (e != TMath::Abs(pz)) { // energy was not equal to pz
    return 0.5*TMath::Log((e+pz)/(e-pz));
  } else { // energy was equal to pz
    return -999.;
  }
}

//_______________________________________________________________________
Bool_t AliESDtrack::UpdateTrackParams(const AliKalmanTrack *t, ULong_t flags){
  //
  // This function updates track's running parameters 
  //
  Bool_t rc=kTRUE;

  SetStatus(flags);
  fLabel=t->GetLabel();

  if (t->IsStartedTimeIntegral()) {
    SetStatus(kTIME);
    Double_t times[AliPID::kSPECIESC];
    t->GetIntegratedTimes(times); 
    SetIntegratedTimes(times);
    SetIntegratedLength(t->GetIntegratedLength());
  }

  Set(t->GetX(),t->GetAlpha(),t->GetParameter(),t->GetCovariance());
  if (fFriendTrack) {
  if (flags==kITSout) fFriendTrack->SetITSOut(*t);
  if (flags==kTPCout) fFriendTrack->SetTPCOut(*t);
  if (flags==kTRDrefit) fFriendTrack->SetTRDIn(*t);
  }
  
  switch (flags) {
    
  case kITSin: 
    fITSchi2Std[0] = t->GetChi2();
    //
  case kITSout: 
    fITSchi2Std[1] = t->GetChi2();
  case kITSrefit:
    {
    fITSchi2Std[2] = t->GetChi2();
    fITSClusterMap=0;
    fITSncls=t->GetNumberOfClusters();
    if (fFriendTrack) {
    Int_t* indexITS = new Int_t[AliESDfriendTrack::kMaxITScluster];
    for (Int_t i=0;i<AliESDfriendTrack::kMaxITScluster;i++) {
	indexITS[i]=t->GetClusterIndex(i);

	if (i<fITSncls) {
	  Int_t l=(indexITS[i] & 0xf0000000) >> 28;
           SETBIT(fITSClusterMap,l);                 
        }
    }
    fFriendTrack->SetITSIndices(indexITS,AliESDfriendTrack::kMaxITScluster);
    delete [] indexITS;
    }

    fITSchi2=t->GetChi2();
    fITSsignal=t->GetPIDsignal();
    fITSLabel = t->GetLabel();
    // keep in fOp the parameters outside ITS for ITS stand-alone tracks 
    if (flags==kITSout) { 
      if (!fOp) fOp=new AliExternalTrackParam(*t);
      else 
        fOp->Set(t->GetX(),t->GetAlpha(),t->GetParameter(),t->GetCovariance());
    }   
    }
    break;
    
  case kTPCin: case kTPCrefit:
    {
    fTPCLabel = t->GetLabel();
    if (flags==kTPCin)  {
      fTPCInner=new AliExternalTrackParam(*t); 
      fTPCnclsIter1=t->GetNumberOfClusters();    
      fTPCchi2Iter1=t->GetChi2();
    }
    if (!fIp) fIp=new AliExternalTrackParam(*t);
    else 
      fIp->Set(t->GetX(),t->GetAlpha(),t->GetParameter(),t->GetCovariance());
    }
    // Intentionally no break statement; need to set general TPC variables as well
  case kTPCout:
    {
    if (flags & kTPCout){
      if (!fOp) fOp=new AliExternalTrackParam(*t);
      else 
        fOp->Set(t->GetX(),t->GetAlpha(),t->GetParameter(),t->GetCovariance());
    }
    fTPCncls=t->GetNumberOfClusters();    
    fTPCchi2=t->GetChi2();
    
    if (fFriendTrack) {  // Copy cluster indices
      Int_t* indexTPC = new Int_t[AliESDfriendTrack::kMaxTPCcluster];
      for (Int_t i=0;i<AliESDfriendTrack::kMaxTPCcluster;i++)         
	indexTPC[i]=t->GetClusterIndex(i);
      fFriendTrack->SetTPCIndices(indexTPC,AliESDfriendTrack::kMaxTPCcluster);
      delete [] indexTPC;
    }
    fTPCsignal=t->GetPIDsignal();
    }
    break;

  case kTRDin: case kTRDrefit:
    break;
  case kTRDout:
    {
    fTRDLabel = t->GetLabel(); 
    fTRDchi2  = t->GetChi2();
    fTRDncls  = t->GetNumberOfClusters();
    if (fFriendTrack) {
      Int_t* indexTRD = new Int_t[AliESDfriendTrack::kMaxTRDcluster];
      for (Int_t i=0;i<AliESDfriendTrack::kMaxTRDcluster;i++) indexTRD[i]=-2;
      for (Int_t i=0;i<6;i++) indexTRD[i]=t->GetTrackletIndex(i);
      fFriendTrack->SetTRDIndices(indexTRD,AliESDfriendTrack::kMaxTRDcluster);
      delete [] indexTRD;
    }    
    
    //commented out by Xianguo
    //fTRDsignal=t->GetPIDsignal();
    }
    break;
  case kTRDbackup:
    if (!fOp) fOp=new AliExternalTrackParam(*t);
    else 
      fOp->Set(t->GetX(),t->GetAlpha(),t->GetParameter(),t->GetCovariance());
    fTRDncls0 = t->GetNumberOfClusters(); 
    break;
  case kTOFin: 
    break;
  case kTOFout: 
    break;
  case kTRDStop:
    break;
  case kHMPIDout:
  if (!fHMPIDp) fHMPIDp=new AliExternalTrackParam(*t);
    else 
      fHMPIDp->Set(t->GetX(),t->GetAlpha(),t->GetParameter(),t->GetCovariance());
    break;
  default: 
    AliError("Wrong flag !");
    return kFALSE;
  }

  return rc;
}

//_______________________________________________________________________
void AliESDtrack::GetExternalParameters(Double_t &x, Double_t p[5]) const {
  //---------------------------------------------------------------------
  // This function returns external representation of the track parameters
  //---------------------------------------------------------------------
  x=GetX();
  for (Int_t i=0; i<5; i++) p[i]=GetParameter()[i];
}

//_______________________________________________________________________
void AliESDtrack::GetExternalCovariance(Double_t cov[15]) const {
  //---------------------------------------------------------------------
  // This function returns external representation of the cov. matrix
  //---------------------------------------------------------------------
  for (Int_t i=0; i<15; i++) cov[i]=AliExternalTrackParam::GetCovariance()[i];
}

//_______________________________________________________________________
Bool_t AliESDtrack::GetConstrainedExternalParameters
                 (Double_t &alpha, Double_t &x, Double_t p[5]) const {
  //---------------------------------------------------------------------
  // This function returns the constrained external track parameters
  //---------------------------------------------------------------------
  if (!fCp) return kFALSE;
  alpha=fCp->GetAlpha();
  x=fCp->GetX();
  for (Int_t i=0; i<5; i++) p[i]=fCp->GetParameter()[i];
  return kTRUE;
}

//_______________________________________________________________________
Bool_t 
AliESDtrack::GetConstrainedExternalCovariance(Double_t c[15]) const {
  //---------------------------------------------------------------------
  // This function returns the constrained external cov. matrix
  //---------------------------------------------------------------------
  if (!fCp) return kFALSE;
  for (Int_t i=0; i<15; i++) c[i]=fCp->GetCovariance()[i];
  return kTRUE;
}

Bool_t
AliESDtrack::GetInnerExternalParameters
                 (Double_t &alpha, Double_t &x, Double_t p[5]) const {
  //---------------------------------------------------------------------
  // This function returns external representation of the track parameters 
  // at the inner layer of TPC
  //---------------------------------------------------------------------
  if (!fIp) return kFALSE;
  alpha=fIp->GetAlpha();
  x=fIp->GetX();
  for (Int_t i=0; i<5; i++) p[i]=fIp->GetParameter()[i];
  return kTRUE;
}

Bool_t 
AliESDtrack::GetInnerExternalCovariance(Double_t cov[15]) const {
 //---------------------------------------------------------------------
 // This function returns external representation of the cov. matrix 
 // at the inner layer of TPC
 //---------------------------------------------------------------------
  if (!fIp) return kFALSE;
  for (Int_t i=0; i<15; i++) cov[i]=fIp->GetCovariance()[i];
  return kTRUE;
}

void 
AliESDtrack::SetOuterParam(const AliExternalTrackParam *p, ULong_t flags) {
  //
  // This is a direct setter for the outer track parameters
  //
  SetStatus(flags);
  if (fOp) delete fOp;
  fOp=new AliExternalTrackParam(*p);
}

void 
AliESDtrack::SetOuterHmpParam(const AliExternalTrackParam *p, ULong_t flags) {
  //
  // This is a direct setter for the outer track parameters
  //
  SetStatus(flags);
  if (fHMPIDp) delete fHMPIDp;
  fHMPIDp=new AliExternalTrackParam(*p);
}

Bool_t 
AliESDtrack::GetOuterExternalParameters
                 (Double_t &alpha, Double_t &x, Double_t p[5]) const {
  //---------------------------------------------------------------------
  // This function returns external representation of the track parameters 
  // at the inner layer of TRD
  //---------------------------------------------------------------------
  if (!fOp) return kFALSE;
  alpha=fOp->GetAlpha();
  x=fOp->GetX();
  for (Int_t i=0; i<5; i++) p[i]=fOp->GetParameter()[i];
  return kTRUE;
}

Bool_t 
AliESDtrack::GetOuterHmpExternalParameters
                 (Double_t &alpha, Double_t &x, Double_t p[5]) const {
  //---------------------------------------------------------------------
  // This function returns external representation of the track parameters 
  // at the inner layer of TRD
  //---------------------------------------------------------------------
  if (!fHMPIDp) return kFALSE;
  alpha=fHMPIDp->GetAlpha();
  x=fHMPIDp->GetX();
  for (Int_t i=0; i<5; i++) p[i]=fHMPIDp->GetParameter()[i];
  return kTRUE;
}

Bool_t 
AliESDtrack::GetOuterExternalCovariance(Double_t cov[15]) const {
 //---------------------------------------------------------------------
 // This function returns external representation of the cov. matrix 
 // at the inner layer of TRD
 //---------------------------------------------------------------------
  if (!fOp) return kFALSE;
  for (Int_t i=0; i<15; i++) cov[i]=fOp->GetCovariance()[i];
  return kTRUE;
}

Bool_t 
AliESDtrack::GetOuterHmpExternalCovariance(Double_t cov[15]) const {
 //---------------------------------------------------------------------
 // This function returns external representation of the cov. matrix 
 // at the inner layer of TRD
 //---------------------------------------------------------------------
  if (!fHMPIDp) return kFALSE;
  for (Int_t i=0; i<15; i++) cov[i]=fHMPIDp->GetCovariance()[i];
  return kTRUE;
}

Int_t AliESDtrack::GetNcls(Int_t idet) const
{
  // Get number of clusters by subdetector index
  //
  Int_t ncls = 0;
  switch(idet){
  case 0:
    ncls = fITSncls;
    break;
  case 1:
    ncls = fTPCncls;
    break;
  case 2:
    ncls = fTRDncls;
    break;
  case 3:
    if (fTOFindex != -1)
      ncls = 1;
    break;
  case 4: //PHOS
    break;
  case 5: //HMPID
    if ((fHMPIDcluIdx >= 0) && (fHMPIDcluIdx < 7000000)) {
      if ((fHMPIDcluIdx%1000000 != 9999) && (fHMPIDcluIdx%1000000 != 99999)) {
	ncls = 1;
      }
    }    
    break;
  default:
    break;
  }
  return ncls;
}

Int_t AliESDtrack::GetClusters(Int_t idet, Int_t *idx) const
{
  // Get cluster index array by subdetector index
  //
  Int_t ncls = 0;
  switch(idet){
  case 0:
    ncls = GetITSclusters(idx);
    break;
  case 1:
    ncls = GetTPCclusters(idx);
    break;
  case 2:
    ncls = GetTRDclusters(idx);
    break;
  case 3:
    if (fTOFindex != -1) {
      idx[0] = fTOFindex;
      ncls = 1;
    }
    break;
  case 4: //PHOS
    break;
  case 5:
    if ((fHMPIDcluIdx >= 0) && (fHMPIDcluIdx < 7000000)) {
      if ((fHMPIDcluIdx%1000000 != 9999) && (fHMPIDcluIdx%1000000 != 99999)) {
	idx[0] = GetHMPIDcluIdx();
	ncls = 1;
      }
    }    
    break;
  case 6: //EMCAL
    break;
  default:
    break;
  }
  return ncls;
}

//_______________________________________________________________________
void AliESDtrack::GetIntegratedTimes(Double_t *times, Int_t nspec) const 
{
  // get integrated time for requested N species
  if (nspec<1) return;
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);
    //
    for(int i=tofcl->GetNMatchableTracks();i--;){
      if(tofcl->GetTrackIndex(i) == GetID()) {
	for (int j=nspec; j--;) times[j]=tofcl->GetIntegratedTime(j,i);
	return;
      }
    }
  }
  else if(fNtofClusters>0) 
    AliInfo("No AliESDEvent available here!\n");

  // Returns the array with integrated times for each particle hypothesis
  if(fTrackTime)
    for (int i=nspec; i--;) times[i]=fTrackTime[i];
  else
    for (int i=AliPID::kSPECIESC; i--;) times[i]=0.0;
  //
}
//_______________________________________________________________________
Double_t AliESDtrack::GetIntegratedLength() const{
  Int_t index = -1;
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);

    for(Int_t i=0;i < tofcl->GetNMatchableTracks();i++){
      if(tofcl->GetTrackIndex(i) == GetID()) index = i;
    }
    
    if(fNtofClusters>0 && index > -1)
      return tofcl->GetLength(index);
  }
  else if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");

  return fTrackLength;
}

//_______________________________________________________________________
void AliESDtrack::SetIntegratedTimes(const Double_t *times) 
{
  // Sets the array with integrated times for each particle hypotesis
  if(!fTrackTime) fTrackTime = new Double32_t[AliPID::kSPECIESC];
  for (int i=AliPID::kSPECIESC; i--;) fTrackTime[i]=times[i];
}

//_______________________________________________________________________
void AliESDtrack::SetITSpid(const Double_t *p) 
{
  // Sets values for the probability of each particle type (in ITS)
  if (!fITSr) fITSr = new Double32_t[AliPID::kSPECIESC];
  SetPIDValues(fITSr,p,AliPID::kSPECIES);
  SetStatus(AliESDtrack::kITSpid);
}

//_______________________________________________________________________
void AliESDtrack::GetITSpid(Double_t *p) const {
  // Gets the probability of each particle type (in ITS)
  for (Int_t i=0; i<AliPID::kSPECIES; i++) p[i] = fITSr ? fITSr[i] : 0;
}

//_______________________________________________________________________
Char_t AliESDtrack::GetITSclusters(Int_t *idx) const {
  //---------------------------------------------------------------------
  // This function returns indices of the assgined ITS clusters 
  //---------------------------------------------------------------------
  if (idx && fFriendTrack) {
    Int_t *index=fFriendTrack->GetITSindices();
    for (Int_t i=0; i<AliESDfriendTrack::kMaxITScluster; i++) {
      if ( (i>=fITSncls) && (i<6) ) idx[i]=-1;
      else {
	if (index) {
	  idx[i]=index[i];
	}
	else idx[i]= -2;
      }
    }
  }
  return fITSncls;
}

//_______________________________________________________________________
Bool_t AliESDtrack::GetITSModuleIndexInfo(Int_t ilayer,Int_t &idet,Int_t &status,
					 Float_t &xloc,Float_t &zloc) const {
  //----------------------------------------------------------------------
  // This function encodes in the module number also the status of cluster association
  // "status" can have the following values: 
  // 1 "found" (cluster is associated), 
  // 2 "dead" (module is dead from OCDB), 
  // 3 "skipped" (module or layer forced to be skipped),
  // 4 "outinz" (track out of z acceptance), 
  // 5 "nocls" (no clusters in the road), 
  // 6 "norefit" (cluster rejected during refit), 
  // 7 "deadzspd" (holes in z in SPD)
  // Also given are the coordinates of the crossing point of track and module
  // (in the local module ref. system)
  // WARNING: THIS METHOD HAS TO BE SYNCHRONIZED WITH AliITStrackV2::GetModuleIndexInfo()!
  //----------------------------------------------------------------------

  if(fITSModule[ilayer]==-1) {
    idet = -1;
    status=0;
    xloc=-99.; zloc=-99.;
    return kFALSE;
  }

  Int_t module = fITSModule[ilayer];

  idet = Int_t(module/1000000);

  module -= idet*1000000;

  status = Int_t(module/100000);

  module -= status*100000;

  Int_t signs = Int_t(module/10000);

  module-=signs*10000;

  Int_t xInt = Int_t(module/100);
  module -= xInt*100;

  Int_t zInt = module;

  if(signs==1) { xInt*=1; zInt*=1; }
  if(signs==2) { xInt*=1; zInt*=-1; }
  if(signs==3) { xInt*=-1; zInt*=1; }
  if(signs==4) { xInt*=-1; zInt*=-1; }

  xloc = 0.1*(Float_t)xInt;
  zloc = 0.1*(Float_t)zInt;

  if(status==4) idet = -1;

  return kTRUE;
}

//_______________________________________________________________________
UShort_t AliESDtrack::GetTPCclusters(Int_t *idx) const {
  //---------------------------------------------------------------------
  // This function returns indices of the assgined ITS clusters 
  //---------------------------------------------------------------------
  if (idx && fFriendTrack) {
    Int_t *index=fFriendTrack->GetTPCindices();

    if (index){
      for (Int_t i=0; i<AliESDfriendTrack::kMaxTPCcluster; i++) idx[i]=index[i];
    }
    else {
      for (Int_t i=0; i<AliESDfriendTrack::kMaxTPCcluster; i++) idx[i]=-2;
    }
  }
  return fTPCncls;
}

//_______________________________________________________________________
Float_t AliESDtrack::GetTPCCrossedRows() const
{
  // This function calls GetTPCClusterInfo with some default parameters which are used in the track selection and caches the outcome
  // because GetTPCClusterInfo is quite time-consuming
  
  if (fCacheNCrossedRows > -1)
    return fCacheNCrossedRows;
  
  fCacheNCrossedRows = GetTPCClusterInfo(2, 1);
  return fCacheNCrossedRows;
}

//_______________________________________________________________________
Float_t AliESDtrack::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
}

//_______________________________________________________________________
Float_t AliESDtrack::GetTPCClusterDensity(Int_t nNeighbours/*=3*/, Int_t type/*=0*/, Int_t row0, Int_t row1, Int_t bitType ) const
{
  //
  // TPC cluster density -  only rows where signal before and after given row are used
  //                     -  slower function
  // 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){
    Bool_t isUp=kFALSE;
    Bool_t isDown=kFALSE;
    for (Int_t idelta=1; idelta<=nNeighbours; idelta++){
      if (i-idelta>=0 && clusterMap[i-idelta]) isDown=kTRUE;
      if (i+idelta<upperBound && clusterMap[i+idelta]) isUp=kTRUE;
    }
    if (isUp&&isDown){
      ++findable;
      if (clusterMap[i]) ++found;
    }
  }
  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 AliESDtrack::GetTPCdensity(Int_t row0, Int_t row1) const{
  //
  // GetDensity of the clusters on given region between row0 and row1
  // Dead zone effect takin into acoount
  //
  if (!fFriendTrack) return 0.0;
  Int_t good  = 0;
  Int_t found = 0;
  //  
  Int_t *index=fFriendTrack->GetTPCindices();
  for (Int_t i=row0;i<=row1;i++){     
    Int_t idx = index[i];
    if (idx!=-1)  good++;             // track outside of dead zone
    if (idx>0)    found++;
  }
  Float_t density=0.5;
  if (good>TMath::Max((row1-row0)*0.5,0.0)) density = Float_t(found)/Float_t(good);
  return density;
}

//_______________________________________________________________________
void AliESDtrack::SetTPCpid(const Double_t *p) {  
  // Sets values for the probability of each particle type (in TPC)
  if (!fTPCr) fTPCr = new Double32_t[AliPID::kSPECIES];
  SetPIDValues(fTPCr,p,AliPID::kSPECIES);
  SetStatus(AliESDtrack::kTPCpid);
}

//_______________________________________________________________________
void AliESDtrack::GetTPCpid(Double_t *p) const {
  // Gets the probability of each particle type (in TPC)
  for (Int_t i=0; i<AliPID::kSPECIES; i++) p[i] = fTPCr ? fTPCr[i] : 0;
}

//_______________________________________________________________________
UChar_t AliESDtrack::GetTRDclusters(Int_t *idx) const {
  //---------------------------------------------------------------------
  // This function returns indices of the assgined TRD clusters 
  //---------------------------------------------------------------------
  if (idx && fFriendTrack) {
    Int_t *index=fFriendTrack->GetTRDindices();

    if (index) {
      for (Int_t i=0; i<AliESDfriendTrack::kMaxTRDcluster; i++) idx[i]=index[i];
    }
    else {
      for (Int_t i=0; i<AliESDfriendTrack::kMaxTRDcluster; i++) idx[i]=-2;
    }
  }
  return fTRDncls;
}

//_______________________________________________________________________
UChar_t AliESDtrack::GetTRDtracklets(Int_t *idx) const {
//
// This function returns the number of TRD tracklets used in tracking
// and it fills the indices of these tracklets in the array "idx" as they 
// are registered in the TRD track list. 
// 
// Caution :
//   1. The idx array has to be allocated with a size >= AliESDtrack::kTRDnPlanes
//   2. The idx array store not only the index but also the layer of the tracklet. 
//      Therefore tracks with TRD gaps contain default values for indices [-1] 

  if (!fFriendTrack) return 0;
  if (!idx) return GetTRDntracklets();
  Int_t *index=fFriendTrack->GetTRDindices();
  Int_t n = 0;
  for (Int_t i=0; i<kTRDnPlanes; i++){ 
    if (index){
      if(index[i]>=0) n++;
      idx[i]=index[i];
    }
    else idx[i] = -2;
  }
  return n;
}

//_______________________________________________________________________
void AliESDtrack::SetTRDpid(const Double_t *p) {  
  // Sets values for the probability of each particle type (in TRD)
  if (!fTRDr) fTRDr = new Double32_t[AliPID::kSPECIES];
  SetPIDValues(fTRDr,p,AliPID::kSPECIES);
  SetStatus(AliESDtrack::kTRDpid);
}

//_______________________________________________________________________
void AliESDtrack::GetTRDpid(Double_t *p) const {
  // Gets the probability of each particle type (in TRD)
  for (Int_t i=0; i<AliPID::kSPECIES; i++) p[i] = fTRDr ? fTRDr[i]:0;
}

//_______________________________________________________________________
void    AliESDtrack::SetTRDpid(Int_t iSpecies, Float_t p)
{
  // Sets the probability of particle type iSpecies to p (in TRD)
  if (!fTRDr) {
    fTRDr = new Double32_t[AliPID::kSPECIES];
    for (Int_t i=AliPID::kSPECIES; i--;) fTRDr[i] = 0;
  }
  fTRDr[iSpecies] = p;
}

Double_t AliESDtrack::GetTRDpid(Int_t iSpecies) const
{
  // Returns the probability of particle type iSpecies (in TRD)
  return fTRDr ? fTRDr[iSpecies] : 0;
}

//____________________________________________________
Int_t AliESDtrack::GetNumberOfTRDslices() const 
{
  // built in backward compatibility
  Int_t idx = fTRDnSlices - (kTRDnPlanes<<1);
  return idx<18 ? fTRDnSlices/kTRDnPlanes : idx/kTRDnPlanes;
}

//____________________________________________________
Double_t AliESDtrack::GetTRDmomentum(Int_t plane, Double_t *sp) const
{
//Returns momentum estimation and optional its error (sp)
// in TRD layer "plane".

  if (!fTRDnSlices) {
    AliDebug(2, "No TRD info allocated for this track.");
    return -1.;
  }
  if ((plane<0) || (plane>=kTRDnPlanes)) {
    AliWarning(Form("Request for TRD plane[%d] outside range.", plane)); 
    return -1.;
  }

  Int_t idx = fTRDnSlices-(kTRDnPlanes<<1)+plane;
  // Protection for backward compatibility
  if(idx<(GetNumberOfTRDslices()*kTRDnPlanes)) return -1.;

  if(sp) (*sp) = fTRDslices[idx+kTRDnPlanes];
  return fTRDslices[idx];
}

//____________________________________________________
Double_t  AliESDtrack::GetTRDslice(Int_t plane, Int_t slice) const {
  //Gets the charge from the slice of the plane

  if(!fTRDslices) {
    //AliError("No TRD slices allocated for this track !");
    return -1.;
  }
  if ((plane<0) || (plane>=kTRDnPlanes)) {
    AliError("Info for TRD plane not available !");
    return -1.;
  }
  Int_t ns=GetNumberOfTRDslices();
  if ((slice<-1) || (slice>=ns)) {
    //AliError("Wrong TRD slice !");  
    return -1.;
  }

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

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

//____________________________________________________
void  AliESDtrack::SetNumberOfTRDslices(Int_t n) {
  //Sets the number of slices used for PID 
  if (fTRDnSlices) return;

  fTRDnSlices=n;
  fTRDslices=new Double32_t[fTRDnSlices];
  
  // set-up correctly the allocated memory
  memset(fTRDslices, 0, n*sizeof(Double32_t));
  for (Int_t i=GetNumberOfTRDslices(); i--;) fTRDslices[i]=-1.;
}

//____________________________________________________
void  AliESDtrack::SetTRDslice(Double_t q, Int_t plane, Int_t slice) {
  //Sets the charge q in the slice of the plane
  if(!fTRDslices) {
    AliError("No TRD slices allocated for this track !");
    return;
  }
  if ((plane<0) || (plane>=kTRDnPlanes)) {
    AliError("Info for TRD plane not allocated !");
    return;
  }
  Int_t ns=GetNumberOfTRDslices();
  if ((slice<0) || (slice>=ns)) {
    AliError(Form("Wrong TRD slice %d/%d, NSlices=%d",plane,slice,ns));
    return;
  }
  Int_t n=plane*ns + slice;
  fTRDslices[n]=q;
}


//____________________________________________________
void AliESDtrack::SetTRDmomentum(Double_t p, Int_t plane, Double_t *sp)
{
  if(!fTRDslices) {
    AliError("No TRD slices allocated for this track !");
    return;
  }
  if ((plane<0) || (plane>=kTRDnPlanes)) {
    AliError("Info for TRD plane not allocated !");
    return;
  }

  Int_t idx = fTRDnSlices-(kTRDnPlanes<<1)+plane;
  // Protection for backward compatibility
  if(idx<GetNumberOfTRDslices()*kTRDnPlanes) return;

  if(sp) fTRDslices[idx+kTRDnPlanes] = (*sp);
  fTRDslices[idx] = p;
}


//_______________________________________________________________________
void AliESDtrack::SetTOFpid(const Double_t *p) {  
  // Sets the probability of each particle type (in TOF)
  if (!fTOFr) fTOFr = new Double32_t[AliPID::kSPECIES];
  SetPIDValues(fTOFr,p,AliPID::kSPECIES);
  SetStatus(AliESDtrack::kTOFpid);
}

//_______________________________________________________________________
void AliESDtrack::SetTOFLabel(const Int_t *p) {  

  if(fNtofClusters>0){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);
    AliESDTOFHit* hit = tofcl->GetTOFHit(0);

    if(hit) hit->SetTOFLabel(p);
  }
  else{
    // Sets  (in TOF)
    if(!fTOFLabel) fTOFLabel = new Int_t[3]; 
    for (Int_t i=0; i<3; i++) fTOFLabel[i]=p[i];
  }
}

//_______________________________________________________________________
void AliESDtrack::GetTOFpid(Double_t *p) const {
  // Gets probabilities of each particle type (in TOF)
  for (Int_t i=0; i<AliPID::kSPECIES; i++) p[i] = fTOFr ? fTOFr[i]:0;
}

//_______________________________________________________________________
void AliESDtrack::GetTOFLabel(Int_t *p) const {
  // Gets (in TOF)
  if(fNtofClusters>0){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);

    for (Int_t i=0; i<3; i++) p[i]=tofcl->GetLabel(i);
  }
  else{
    if(fTOFLabel) for (Int_t i=0; i<3; i++) p[i]=fTOFLabel[i];
    else for (int i=3;i--;) p[i] = -1;
  }
}

//_______________________________________________________________________
void AliESDtrack::GetTOFInfo(Float_t *info) const {
  // Gets (in TOF)
  for (Int_t i=0; i<10; i++) info[i]=fTOFInfo[i];
}

//_______________________________________________________________________
void AliESDtrack::SetTOFInfo(Float_t*info) {
  // Gets (in TOF)
  for (Int_t i=0; i<10; i++) fTOFInfo[i]=info[i];
}



//_______________________________________________________________________
void AliESDtrack::SetHMPIDpid(const Double_t *p) {  
  // Sets the probability of each particle type (in HMPID)
  if (!fHMPIDr) fHMPIDr = new Double32_t[AliPID::kSPECIES];
  SetPIDValues(fHMPIDr,p,AliPID::kSPECIES);
  SetStatus(AliESDtrack::kHMPIDpid);
}

//_______________________________________________________________________
void  AliESDtrack::SetTPCdEdxInfo(AliTPCdEdxInfo * dEdxInfo){ 
  if(fTPCdEdxInfo) delete fTPCdEdxInfo;
  fTPCdEdxInfo = dEdxInfo; 
}

//_______________________________________________________________________
void AliESDtrack::GetHMPIDpid(Double_t *p) const {
  // Gets probabilities of each particle type (in HMPID)
  for (Int_t i=0; i<AliPID::kSPECIES; i++) p[i] = fHMPIDr ? fHMPIDr[i]:0;
}



//_______________________________________________________________________
void AliESDtrack::SetESDpid(const Double_t *p) {  
  // Sets the probability of each particle type for the ESD track
  if (!fR) fR = new Double32_t[AliPID::kSPECIES];
  SetPIDValues(fR,p,AliPID::kSPECIES);
  SetStatus(AliESDtrack::kESDpid);
}

//_______________________________________________________________________
void AliESDtrack::GetESDpid(Double_t *p) const {
  // Gets probability of each particle type for the ESD track
  for (Int_t i=0; i<AliPID::kSPECIES; i++) p[i] = fR ? fR[i]:0;
}

//_______________________________________________________________________
Bool_t AliESDtrack::RelateToVertexTPC(const AliESDVertex *vtx, 
Double_t b, Double_t maxd, AliExternalTrackParam *cParam) {
  //
  // Try to relate the TPC-only track parameters to the vertex "vtx", 
  // if the (rough) transverse impact parameter is not bigger then "maxd". 
  //            Magnetic field is "b" (kG).
  //
  // a) The TPC-only paramters are extapolated to the DCA to the vertex.
  // b) The impact parameters and their covariance matrix are calculated.
  // c) An attempt to constrain the TPC-only params to the vertex is done.
  //    The constrained params are returned via "cParam".
  //
  // In the case of success, the returned value is kTRUE
  // otherwise, it's kFALSE)
  // 

  if (!fTPCInner) return kFALSE;
  if (!vtx) return kFALSE;

  Double_t dz[2],cov[3];
  if (!fTPCInner->PropagateToDCA(vtx, b, maxd, dz, cov)) return kFALSE;

  fdTPC = dz[0];
  fzTPC = dz[1];  
  fCddTPC = cov[0];
  fCdzTPC = cov[1];
  fCzzTPC = cov[2];
  
  Double_t covar[6]; vtx->GetCovMatrix(covar);
  Double_t p[2]={GetParameter()[0]-dz[0],GetParameter()[1]-dz[1]};
  Double_t c[3]={covar[2],0.,covar[5]};

  Double_t chi2=GetPredictedChi2(p,c);
  if (chi2>kVeryBig) return kFALSE;

  fCchi2TPC=chi2;

  if (!cParam) return kTRUE;

  *cParam = *fTPCInner;
  if (!cParam->Update(p,c)) return kFALSE;

  return kTRUE;
}

//_______________________________________________________________________
Bool_t AliESDtrack::RelateToVertexTPCBxByBz(const AliESDVertex *vtx, 
Double_t b[3], Double_t maxd, AliExternalTrackParam *cParam) {
  //
  // Try to relate the TPC-only track parameters to the vertex "vtx", 
  // if the (rough) transverse impact parameter is not bigger then "maxd". 
  //
  // All three components of the magnetic field ,"b[3]" (kG), 
  // are taken into account.
  //
  // a) The TPC-only paramters are extapolated to the DCA to the vertex.
  // b) The impact parameters and their covariance matrix are calculated.
  // c) An attempt to constrain the TPC-only params to the vertex is done.
  //    The constrained params are returned via "cParam".
  //
  // In the case of success, the returned value is kTRUE
  // otherwise, it's kFALSE)
  // 

  if (!fTPCInner) return kFALSE;
  if (!vtx) return kFALSE;

  Double_t dz[2],cov[3];
  if (!fTPCInner->PropagateToDCABxByBz(vtx, b, maxd, dz, cov)) return kFALSE;

  fdTPC = dz[0];
  fzTPC = dz[1];  
  fCddTPC = cov[0];
  fCdzTPC = cov[1];
  fCzzTPC = cov[2];
  
  Double_t covar[6]; vtx->GetCovMatrix(covar);
  Double_t p[2]={GetParameter()[0]-dz[0],GetParameter()[1]-dz[1]};
  Double_t c[3]={covar[2],0.,covar[5]};

  Double_t chi2=GetPredictedChi2(p,c);
  if (chi2>kVeryBig) return kFALSE;

  fCchi2TPC=chi2;

  if (!cParam) return kTRUE;

  *cParam = *fTPCInner;
  if (!cParam->Update(p,c)) return kFALSE;

  return kTRUE;
}

//_______________________________________________________________________
Bool_t AliESDtrack::RelateToVertex(const AliESDVertex *vtx, 
Double_t b, Double_t maxd, AliExternalTrackParam *cParam) {
  //
  // Try to relate this track to the vertex "vtx", 
  // if the (rough) transverse impact parameter is not bigger then "maxd". 
  //            Magnetic field is "b" (kG).
  //
  // a) The track gets extapolated to the DCA to the vertex.
  // b) The impact parameters and their covariance matrix are calculated.
  // c) An attempt to constrain this track to the vertex is done.
  //    The constrained params are returned via "cParam".
  //
  // In the case of success, the returned value is kTRUE
  // (otherwise, it's kFALSE)
  //  

  if (!vtx) return kFALSE;

  Double_t dz[2],cov[3];
  if (!PropagateToDCA(vtx, b, maxd, dz, cov)) return kFALSE;

  fD = dz[0];
  fZ = dz[1];  
  fCdd = cov[0];
  fCdz = cov[1];
  fCzz = cov[2];
  
  Double_t covar[6]; vtx->GetCovMatrix(covar);
  Double_t p[2]={GetParameter()[0]-dz[0],GetParameter()[1]-dz[1]};
  Double_t c[3]={covar[2],0.,covar[5]};

  Double_t chi2=GetPredictedChi2(p,c);
  if (chi2>kVeryBig) return kFALSE;

  fCchi2=chi2;


  //--- Could now these lines be removed ? ---
  delete fCp;
  fCp=new AliExternalTrackParam(*this);  

  if (!fCp->Update(p,c)) {delete fCp; fCp=0; return kFALSE;}
  //----------------------------------------

  fVertexID = vtx->GetID();

  if (!cParam) return kTRUE;

  *cParam = *this;
  if (!cParam->Update(p,c)) return kFALSE; 

  return kTRUE;
}

//_______________________________________________________________________
Bool_t AliESDtrack::RelateToVertexBxByBz(const AliESDVertex *vtx, 
Double_t b[3], Double_t maxd, AliExternalTrackParam *cParam) {
  //
  // Try to relate this track to the vertex "vtx", 
  // if the (rough) transverse impact parameter is not bigger then "maxd". 
  //            Magnetic field is "b" (kG).
  //
  // a) The track gets extapolated to the DCA to the vertex.
  // b) The impact parameters and their covariance matrix are calculated.
  // c) An attempt to constrain this track to the vertex is done.
  //    The constrained params are returned via "cParam".
  //
  // In the case of success, the returned value is kTRUE
  // (otherwise, it's kFALSE)
  //  

  if (!vtx) return kFALSE;

  Double_t dz[2],cov[3];
  if (!PropagateToDCABxByBz(vtx, b, maxd, dz, cov)) return kFALSE;

  fD = dz[0];
  fZ = dz[1];  
  fCdd = cov[0];
  fCdz = cov[1];
  fCzz = cov[2];
  
  Double_t covar[6]; vtx->GetCovMatrix(covar);
  Double_t p[2]={GetParameter()[0]-dz[0],GetParameter()[1]-dz[1]};
  Double_t c[3]={covar[2],0.,covar[5]};

  Double_t chi2=GetPredictedChi2(p,c);
  if (chi2>kVeryBig) return kFALSE;

  fCchi2=chi2;


  //--- Could now these lines be removed ? ---
  delete fCp;
  fCp=new AliExternalTrackParam(*this);  

  if (!fCp->Update(p,c)) {delete fCp; fCp=0; return kFALSE;}
  //----------------------------------------

  fVertexID = vtx->GetID();

  if (!cParam) return kTRUE;

  *cParam = *this;
  if (!cParam->Update(p,c)) return kFALSE; 

  return kTRUE;
}

//_______________________________________________________________________
void AliESDtrack::Print(Option_t *) const {
  // Prints info on the track
  AliExternalTrackParam::Print();
  printf("ESD track info\n") ; 
  Double_t p[AliPID::kSPECIES] ;
  Int_t index = 0 ; 
  if( IsOn(kITSpid) ){
    printf("From ITS: ") ; 
    GetITSpid(p) ; 
    for(index = 0 ; index < AliPID::kSPECIES; index++) 
      printf("%f, ", p[index]) ;
    printf("\n           signal = %f\n", GetITSsignal()) ;
  } 
  if( IsOn(kTPCpid) ){
    printf("From TPC: ") ; 
    GetTPCpid(p) ; 
    for(index = 0 ; index < AliPID::kSPECIES; index++) 
      printf("%f, ", p[index]) ;
    printf("\n           signal = %f\n", GetTPCsignal()) ;
  }
  if( IsOn(kTRDpid) ){
    printf("From TRD: ") ; 
    GetTRDpid(p) ; 
    for(index = 0 ; index < AliPID::kSPECIES; index++) 
      printf("%f, ", p[index]) ;
      printf("\n           signal = %f\n", GetTRDsignal()) ;
      printf("\n           NchamberdEdx = %d\n", GetTRDNchamberdEdx()) ;
      printf("\n           NclusterdEdx = %d\n", GetTRDNclusterdEdx()) ;
  }
  if( IsOn(kTOFpid) ){
    printf("From TOF: ") ; 
    GetTOFpid(p) ; 
    for(index = 0 ; index < AliPID::kSPECIES; index++) 
      printf("%f, ", p[index]) ;
    printf("\n           signal = %f\n", GetTOFsignal()) ;
  }
  if( IsOn(kHMPIDpid) ){
    printf("From HMPID: ") ; 
    GetHMPIDpid(p) ; 
    for(index = 0 ; index < AliPID::kSPECIES; index++) 
      printf("%f, ", p[index]) ;
    printf("\n           signal = %f\n", GetHMPIDsignal()) ;
  }
} 


//
// Draw functionality
// Origin: Marian Ivanov, Marian.Ivanov@cern.ch
//
void AliESDtrack::FillPolymarker(TPolyMarker3D *pol, Float_t magF, Float_t minR, Float_t maxR, Float_t stepR){
  //
  // Fill points in the polymarker
  //
  TObjArray arrayRef;
  arrayRef.AddLast(new AliExternalTrackParam(*this));
  if (fIp) arrayRef.AddLast(new AliExternalTrackParam(*fIp));
  if (fOp) arrayRef.AddLast(new AliExternalTrackParam(*fOp));
  if (fHMPIDp) arrayRef.AddLast(new AliExternalTrackParam(*fHMPIDp));
  //
  Double_t mpos[3]={0,0,0};
  Int_t entries=arrayRef.GetEntries();
  for (Int_t i=0;i<entries;i++){
    Double_t pos[3];
    ((AliExternalTrackParam*)arrayRef.At(i))->GetXYZ(pos);
    mpos[0]+=pos[0]/entries;
    mpos[1]+=pos[1]/entries;
    mpos[2]+=pos[2]/entries;    
  }
  // Rotate to the mean position
  //
  Float_t fi= TMath::ATan2(mpos[1],mpos[0]);
  for (Int_t i=0;i<entries;i++){
    Bool_t res = ((AliExternalTrackParam*)arrayRef.At(i))->Rotate(fi);
    if (!res) delete arrayRef.RemoveAt(i);
  }
  Int_t counter=0;
  for (Double_t r=minR; r<maxR; r+=stepR){
    Double_t sweight=0;
    Double_t mlpos[3]={0,0,0};
    for (Int_t i=0;i<entries;i++){
      Double_t point[3]={0,0,0};
      AliExternalTrackParam *param = ((AliExternalTrackParam*)arrayRef.At(i));
      if (!param) continue;
      if (param->GetXYZAt(r,magF,point)){
	Double_t weight = 1./(10.+(r-param->GetX())*(r-param->GetX()));
	sweight+=weight;
	mlpos[0]+=point[0]*weight;
	mlpos[1]+=point[1]*weight;
	mlpos[2]+=point[2]*weight;
      }
    }
    if (sweight>0){
      mlpos[0]/=sweight;
      mlpos[1]/=sweight;
      mlpos[2]/=sweight;      
      pol->SetPoint(counter,mlpos[0],mlpos[1], mlpos[2]);
      //      printf("xyz\t%f\t%f\t%f\n",mlpos[0], mlpos[1],mlpos[2]);
      counter++;
    }
  }
}

//_______________________________________________________________________
void AliESDtrack::SetITSdEdxSamples(const Double_t s[4]) {
  //
  // Store the dE/dx samples measured by the two SSD and two SDD layers.
  // These samples are corrected for the track segment length. 
  //
  for (Int_t i=0; i<4; i++) fITSdEdxSamples[i]=s[i];
}

//_______________________________________________________________________
void AliESDtrack::GetITSdEdxSamples(Double_t s[4]) const {
  //
  // Get the dE/dx samples measured by the two SSD and two SDD layers.  
  // These samples are corrected for the track segment length.
  //
  for (Int_t i=0; i<4; i++) s[i]=fITSdEdxSamples[i];
}


UShort_t   AliESDtrack::GetTPCnclsS(Int_t i0,Int_t i1) const{
  //
  // get number of shared TPC clusters
  //
  return  fTPCSharedMap.CountBits(i0)-fTPCSharedMap.CountBits(i1);
}

UShort_t   AliESDtrack::GetTPCncls(Int_t i0,Int_t i1) const{
  //
  // get number of TPC clusters
  //
  return  fTPCClusterMap.CountBits(i0)-fTPCClusterMap.CountBits(i1);
}

//____________________________________________________________________
Double_t AliESDtrack::GetChi2TPCConstrainedVsGlobal(const AliESDVertex* vtx) const
{
  // Calculates the chi2 between the TPC track (TPCinner) constrained to the primary vertex and the global track
  //
  // Returns -1 in case the calculation failed
  //
  // Value is cached as a non-persistent member.
  //
  // Code adapted from original code by GSI group (Jacek, Marian, Michael)
  
  // cache, ignoring that a different vertex might be passed
  if (fCacheChi2TPCConstrainedVsGlobalVertex == vtx)
    return fCacheChi2TPCConstrainedVsGlobal;
  
  fCacheChi2TPCConstrainedVsGlobal = -1;
  fCacheChi2TPCConstrainedVsGlobalVertex = vtx;
  
  Double_t x[3];
  GetXYZ(x);
  Double_t b[3];
  AliTrackerBase::GetBxByBz(x,b);

  if (!fTPCInner)  { 
    AliWarning("Could not get TPC Inner Param.");
    return fCacheChi2TPCConstrainedVsGlobal;
  }
  
  // clone for constraining
  AliExternalTrackParam* tpcInnerC = new AliExternalTrackParam(*fTPCInner);
  if (!tpcInnerC) { 
    AliWarning("Clone of TPCInnerParam failed.");
    return fCacheChi2TPCConstrainedVsGlobal;  
  }
  
  // transform to the track reference frame 
  Bool_t isOK = tpcInnerC->Rotate(GetAlpha());
  isOK &= tpcInnerC->PropagateTo(GetX(), b[2]);
  if (!isOK) { 
    delete tpcInnerC;
    tpcInnerC = 0; 
    AliWarning("Rotation/Propagation of track failed.") ; 
    return fCacheChi2TPCConstrainedVsGlobal;    
  }  

  // constrain TPCinner 
  isOK = tpcInnerC->ConstrainToVertex(vtx, b);
  
  // transform to the track reference frame 
  isOK &= tpcInnerC->Rotate(GetAlpha());
  isOK &= tpcInnerC->PropagateTo(GetX(), b[2]);

  if (!isOK) {
    AliWarning("ConstrainTPCInner failed.") ;
    delete tpcInnerC;
    tpcInnerC = 0; 
    return fCacheChi2TPCConstrainedVsGlobal;  
  }
  
  // calculate chi2 between vi and vj vectors
  // with covi and covj covariance matrices
  // chi2ij = (vi-vj)^(T)*(covi+covj)^(-1)*(vi-vj)
  TMatrixD deltaT(5,1);
  TMatrixD delta(1,5);
  TMatrixD covarM(5,5);

  for (Int_t ipar=0; ipar<5; ipar++) {
    deltaT(ipar,0) = tpcInnerC->GetParameter()[ipar] - GetParameter()[ipar];
    delta(0,ipar) = tpcInnerC->GetParameter()[ipar] - GetParameter()[ipar];

    for (Int_t jpar=0; jpar<5; jpar++) {
      Int_t index = GetIndex(ipar,jpar);
      covarM(ipar,jpar) = GetCovariance()[index]+tpcInnerC->GetCovariance()[index];
    }
  }
  // chi2 distance TPC constrained and TPC+ITS
  TMatrixD covarMInv = covarM.Invert();
  TMatrixD mat2 = covarMInv*deltaT;
  TMatrixD chi2 = delta*mat2; 
  
  delete tpcInnerC; 
  tpcInnerC = 0;
  
  fCacheChi2TPCConstrainedVsGlobal = chi2(0,0);
  return fCacheChi2TPCConstrainedVsGlobal;
}

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

Double_t AliESDtrack::GetLengthInActiveZone( Int_t mode, Double_t deltaY, Double_t deltaZ, Double_t bz, Double_t exbPhi , TTreeSRedirector * pcstream) const {
  //
  // Input parameters:
  //   mode  - type of external track parameters 
  //   deltaY - user defined "dead region" in cm
  //   deltaZ - user defined "active region" in cm (250 cm drift lenght - 14 cm L1 delay
  //   bz     - magnetic field 
  //   exbPhi - optional rotation due to the ExB effect
  // return value:
  //   the length of the track in cm in "active volume" of the TPC
  //
  if (mode==0) return GetLengthInActiveZone(this, deltaY,deltaZ,bz, exbPhi,pcstream);
  if (mode==1) return GetLengthInActiveZone(fIp, deltaY,deltaZ,bz, exbPhi,pcstream);
  if (mode==2) return GetLengthInActiveZone(fOp, deltaY,deltaZ,bz, exbPhi,pcstream);
  return 0;
}

Double_t AliESDtrack::GetLengthInActiveZone(const AliExternalTrackParam  *paramT, Double_t deltaY, Double_t deltaZ, Double_t bz, Double_t exbPhi , TTreeSRedirector * pcstream) {
  //
  // Numerical code to calculate the length of the track in active region of the TPC
  // ( can be speed up if somebody wants to invest time - analysical version shoult be possible) 
  //
  // Input parameters:
  //   paramT - external track parameters 
  //   deltaY - user defined "dead region" in cm
  //   deltaZ - user defined "active region" in cm (250 cm drift lenght - 14 cm L1 delay
  //   bz     - magnetic field 
  //   exbPhi - optional rotation due to the ExB effect
  // return value:
  //   the length of the track in cm in "active volume" of the TPC
  //
  const Double_t rIn=85;
  const Double_t rOut=245;
  Double_t xyz[3], pxyz[3];
  if (paramT->GetXYZAt(rIn,bz,xyz)){
    paramT->GetPxPyPzAt(rIn,bz,pxyz);
  }else{
    paramT->GetXYZ(xyz);
    paramT->GetPxPyPz(pxyz);
  }
  //
  Double_t dca   = -paramT->GetD(0,0,bz);  // get impact parameter distance to point (0,0)
  Double_t radius= TMath::Abs(1/paramT->GetC(bz));  //
  Double_t sign  = paramT->GetSign();
  Double_t R0    = TMath::Sqrt(xyz[0]*xyz[0]+xyz[1]*xyz[1]);   // radius at current point
  Double_t phiR0 = TMath::ATan2(xyz[1],xyz[0]);                // angle of given point
  Double_t dPhiR0= -TMath::ASin((dca*dca-2*dca*radius*sign+R0*R0)/(2*R0*(dca-radius*sign)));
  Double_t phi0  = phiR0-(dPhiR0);  // global phi offset to be added
  //
  //
  AliExternalTrackParam paramR=(*paramT);
  Double_t length=0;
  for (Double_t R=rIn; R<=rOut; R++){
    Double_t sinPhi=(dca*dca-2*dca*radius*sign+R*R)/(2*R*(dca-radius*sign));
    if (TMath::Abs(sinPhi)>=1) continue;
    Double_t dphi     = -TMath::ASin(sinPhi);
    Double_t phi      = phi0+dphi;                           // global phi
    Int_t    sector   = TMath::Nint(9*phi/(TMath::Pi()));
    Double_t dPhiEdge = phi-(sector*TMath::Pi()/9)+exbPhi;   // distance to sector boundary in rphi
    Double_t dX   = R*TMath::Cos(phi)-xyz[0];
    Double_t dY   = R*TMath::Sin(phi)-xyz[1];
    Double_t deltaPhi = 2*TMath::ASin(0.5*TMath::Sqrt(dX*dX+dY*dY)/radius);
    Double_t z = xyz[2]+deltaPhi*radius*paramT->GetTgl();
    if (TMath::Abs(dPhiEdge*R)>deltaY && TMath::Abs(z)<deltaZ){
      length++;
    }
    //    Double_t deltaZ= dphi*radius; 
    if (pcstream){
      //should we keep debug possibility ?
      AliExternalTrackParam paramTcopy=(*paramT);
      paramR.Rotate(phi);
      paramR.PropagateTo(R,bz);
      (*pcstream)<<"debugEdge"<<
	"R="<<R<<                   // radius
	"dphiEdge="<<dPhiEdge<<     // distance to edge 
	"phi0="<<phi0<<	            // phi0 -phi at the track initial position
	"phi="<<phi<<               // 
	"z="<<z<<
	"pT.="<<&paramTcopy<<
	"pR.="<<&paramR<<
	"\n";
    }
  }
  return length;
}

Double_t AliESDtrack::GetMassForTracking() const
{
  int pid = fPIDForTracking;
  if (pid<AliPID::kPion) pid = AliPID::kPion;
  double m = AliPID::ParticleMass(pid);
  return (fPIDForTracking==AliPID::kHe3 || fPIDForTracking==AliPID::kAlpha) ? -m : m;
}


void    AliESDtrack::SetTOFclusterArray(Int_t /*ncluster*/,Int_t */*TOFcluster*/){
  AliInfo("Method has to be implemented!");
//   fNtofClusters=ncluster;
//   if(TOFcluster == fTOFcluster) return;
//   if(fTOFcluster){ // reset previous content    
//     delete[] fTOFcluster;
//     fTOFcluster = NULL;
//     fNtofClusters=0;
//   }

//   if(ncluster){ // set new content
//     fTOFcluster = new Int_t[fNtofClusters];
//     for(Int_t i=0;i < fNtofClusters;i++) fTOFcluster[i] = TOFcluster[i];
//   }
//   else
//     fTOFcluster = 0;
}

//____________________________________________
void  AliESDtrack::SuppressTOFMatches()
{
  // remove reference to this track from TOF clusters
  if (!fNtofClusters || !GetESDEvent()) return;
  TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
  for (;fNtofClusters--;) {
    AliESDTOFCluster* clTOF = (AliESDTOFCluster*)tofclArray->At(fTOFcluster[fNtofClusters]);
    clTOF->SuppressMatchedTrack(GetID());
    if (!clTOF->GetNMatchableTracks()) { // remove this cluster
      int last = tofclArray->GetEntriesFast()-1;
      AliESDTOFCluster* clTOFL = (AliESDTOFCluster*)tofclArray->At(last);
      if (last != fTOFcluster[fNtofClusters]) {
	*clTOF = *clTOFL; // move last cluster to the place of eliminated one
	// fix the references on this cluster
	clTOF->FixSelfReferences(last,fTOFcluster[fNtofClusters]);
      }
      tofclArray->RemoveAt(last);
    }
  }
}

//____________________________________________
void  AliESDtrack::ReplaceTOFTrackID(int oldID, int newID)
{
  // replace the ID in TOF clusters references to this track
  if (!fNtofClusters || !GetESDEvent()) return;
  TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
  for (int it=fNtofClusters;it--;) {
    AliESDTOFCluster* clTOF = (AliESDTOFCluster*)tofclArray->At(fTOFcluster[it]);
    clTOF->ReplaceMatchedTrackID(oldID,newID);
  }
}

//____________________________________________
void  AliESDtrack::ReplaceTOFClusterID(int oldID, int newID)
{
  // replace the referenc on TOF cluster oldID by newID
  if (!fNtofClusters || !GetESDEvent()) return;
  for (int it=fNtofClusters;it--;) {
    if (fTOFcluster[it] == oldID) {
      fTOFcluster[it] = newID;
      return;
    }
  }
}

//____________________________________________
void  AliESDtrack::ReplaceTOFMatchID(int oldID, int newID)
{
  // replace in the ESDTOFCluster associated with this track the id of the corresponding
  // ESDTOFMatch from oldID to newID
  if (!fNtofClusters || !GetESDEvent()) return;
  TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
  for (int it=fNtofClusters;it--;) {
    AliESDTOFCluster* clTOF = (AliESDTOFCluster*)tofclArray->At(fTOFcluster[it]);
    clTOF->ReplaceMatchID(oldID,newID);
  }
}

//____________________________________________
void AliESDtrack::AddTOFcluster(Int_t icl)
{
  fNtofClusters++;
  
  Int_t *old = fTOFcluster;
  fTOFcluster = new Int_t[fNtofClusters];

  for(Int_t i=0;i < fNtofClusters-1;i++) fTOFcluster[i] = old[i];
  fTOFcluster[fNtofClusters-1] = icl;

  if(fNtofClusters-1)  delete[] old; // delete previous content    
 
}

//____________________________________________
void AliESDtrack::SetTOFsignal(Double_t tof)
{
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);
    AliESDTOFHit* hit = tofcl->GetTOFHit(0);
    if(hit) hit->SetTime(tof);
  }
  else{
    if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");
    fTOFsignal=tof;
  }
}
//____________________________________________
void AliESDtrack::SetTOFCalChannel(Int_t index){
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);
    AliESDTOFHit* hit = tofcl->GetTOFHit(0);
    if(hit) hit->SetTOFchannel(index);
  }
  else{
    if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");
    fTOFCalChannel=index;
  }
}
//____________________________________________
void AliESDtrack::SetTOFsignalToT(Double_t ToT){
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);
    AliESDTOFHit* hit = tofcl->GetTOFHit(0);
    if(hit) hit->SetTOT(ToT);
  }
  else{
    if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");
    fTOFsignalToT=ToT;
  }
}
//____________________________________________
void AliESDtrack::SetTOFsignalRaw(Double_t tof){
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);
    AliESDTOFHit* hit = tofcl->GetTOFHit(0);
    if(hit) hit->SetTimeRaw(tof);
  }
  else{
    if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");
    fTOFsignalRaw=tof;
  }
}
//____________________________________________
void AliESDtrack::SetTOFsignalDz(Double_t dz){
  Int_t index = -1;
  AliESDTOFCluster *tofcl;

  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);

    for(Int_t i=0;i < tofcl->GetNMatchableTracks();i++){
      if(tofcl->GetTrackIndex(i) == GetID()) index = i;
    }

  }
  if(index > -1){
    AliESDTOFMatch* match = tofcl->GetTOFMatch(index);
    if(match){
      match->SetDz(dz);
    }
  }
  else{
    if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");
    fTOFsignalDz=dz;
  }


}
//____________________________________________
void AliESDtrack::SetTOFsignalDx(Double_t dx){
  Int_t index = -1;
  AliESDTOFCluster *tofcl;

  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);

    for(Int_t i=0;i < tofcl->GetNMatchableTracks();i++){
      if(tofcl->GetTrackIndex(i) == GetID()) index = i;
    }

  }
  if(index > -1){
    AliESDTOFMatch* match = tofcl->GetTOFMatch(index);
    if(match){
      match->SetDx(dx);
    }
  }
  else{
    if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");
    fTOFsignalDx=dx;
  }
}
//____________________________________________
void AliESDtrack::SetTOFDeltaBC(Short_t deltaBC){
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);
    AliESDTOFHit* hit = tofcl->GetTOFHit(0);
    if(hit) hit->SetDeltaBC(deltaBC);
  }
  else{
    if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");
    fTOFdeltaBC=deltaBC;
  }
}
//____________________________________________
void AliESDtrack::SetTOFL0L1(Short_t l0l1){
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);
    AliESDTOFHit* hit = tofcl->GetTOFHit(0);
    if(hit) hit->SetL0L1Latency(l0l1);
  }
  else{
    if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");
    fTOFl0l1=l0l1;
  }
}
//____________________________________________
Double_t AliESDtrack::GetTOFsignal() const 
{
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);

    return tofcl->GetTime();
  }
  else if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");

  return fTOFsignal;
}

//____________________________________________
Double_t AliESDtrack::GetTOFsignalToT() const 
{
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);

    return tofcl->GetTOT();
  }
  else if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");

  return fTOFsignalToT;
}

//____________________________________________
Double_t AliESDtrack::GetTOFsignalRaw() const 
{
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);

    return tofcl->GetTimeRaw();
  }
  else if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");

  return fTOFsignalRaw;
}

//____________________________________________
Double_t AliESDtrack::GetTOFsignalDz() const 
{

  AliESDTOFCluster *tofcl;

  Int_t index = -1;
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);

    for(Int_t i=0;i < tofcl->GetNMatchableTracks();i++){
      if(tofcl->GetTrackIndex(i) == GetID()) index = i;
    }
  }
  else if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");

  if(fNtofClusters>0 && index > -1){
    return tofcl->GetDz(index);
  }
  return fTOFsignalDz;
}

//____________________________________________
Double_t AliESDtrack::GetTOFsignalDx() const 
{
  AliESDTOFCluster *tofcl;

  Int_t index = -1;
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);
    for(Int_t i=0;i < tofcl->GetNMatchableTracks();i++){
      if(tofcl->GetTrackIndex(i) == GetID()) index = i;
    }
  }
  else if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");
  if(fNtofClusters>0 && index > -1){
    return tofcl->GetDx(index);
  }
  return fTOFsignalDx;
}

//____________________________________________
Short_t  AliESDtrack::GetTOFDeltaBC() const 
{
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);
    return tofcl->GetDeltaBC();
  }
  else if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");

  return fTOFdeltaBC;
}

//____________________________________________
Short_t  AliESDtrack::GetTOFL0L1() const 
{
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);

    return tofcl->GetL0L1Latency();
  }
  else if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");

  return fTOFl0l1;
}

//____________________________________________
Int_t   AliESDtrack::GetTOFCalChannel() const 
{
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);

    return tofcl->GetTOFchannel();
  }
  else if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");

  return fTOFCalChannel;
}

//____________________________________________
Int_t   AliESDtrack::GetTOFcluster() const 
{
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);

    return tofcl->GetClusterIndex();
  }
  else if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");

  return fTOFindex;
}

//____________________________________________
Int_t   AliESDtrack::GetTOFclusterN() const
{
  return fNtofClusters;
}

//____________________________________________
Bool_t  AliESDtrack::IsTOFHitAlreadyMatched() const{
  if(fNtofClusters>0 && GetESDEvent()){
    TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();
    AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[0]);

    if (tofcl->GetNMatchableTracks() > 1)
      return kTRUE;
  }
  else if(fNtofClusters>0) AliInfo("No AliESDEvent available here!\n");

  return kFALSE;
}

//____________________________________________
void AliESDtrack::ReMapTOFcluster(Int_t ncl,Int_t *mapping){
  for(Int_t i=0;i<fNtofClusters;i++){
    if(fTOFcluster[i]<ncl && fTOFcluster[i]>-1)
      fTOFcluster[i] = mapping[fTOFcluster[i]];
    else
      AliInfo(Form("TOF cluster re-mapping in AliESDtrack: out of range (%i > %i)\n",fTOFcluster[i],ncl));
  }
}

//____________________________________________
void AliESDtrack::SortTOFcluster(){
  TClonesArray *tofclArray = GetESDEvent()->GetESDTOFClusters();

  for(Int_t i=0;i<fNtofClusters-1;i++){
    for(Int_t j=i+1;j<fNtofClusters;j++){
      AliESDTOFCluster *tofcl = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[i]);
      Int_t index1 = -1;
      for(Int_t it=0;it < tofcl->GetNMatchableTracks();it++){
         if(tofcl->GetTrackIndex(it) == GetID()) index1 = it;
      }
      Double_t timedist1 = 10000;
      for(Int_t isp=0; isp< AliPID::kSPECIESC;isp++){
	Double_t timec = TMath::Abs(tofcl->GetTime() - tofcl->GetIntegratedTime(isp));
	if(timec < timedist1) timedist1 = timec;
      }
      timedist1 *= 0.03; // in cm
      Double_t radius1 = tofcl->GetDx(index1)*tofcl->GetDx(index1) + tofcl->GetDz(index1)*tofcl->GetDz(index1) + timedist1*timedist1;

      AliESDTOFCluster *tofcl2 = (AliESDTOFCluster *) tofclArray->At(fTOFcluster[j]);
      Int_t index2 = -1;
      for(Int_t it=0;it < tofcl2->GetNMatchableTracks();it++){
         if(tofcl2->GetTrackIndex(it) == GetID()) index2 = it;
      }
      if(index1 == -1 || index2 == -1){
      }
      Double_t timedist2 = 10000;
      for(Int_t isp=0; isp< AliPID::kSPECIESC;isp++){
	Double_t timec = TMath::Abs(tofcl2->GetTime() - tofcl2->GetIntegratedTime(isp));
	if(timec < timedist2) timedist2 = timec;
      }
      timedist2 *= 0.03; // in cm
      Double_t radius2 = tofcl2->GetDx(index2)*tofcl2->GetDx(index2) + tofcl2->GetDz(index2)*tofcl2->GetDz(index2) + timedist2*timedist2;

      if(radius2 < radius1){
        Int_t change = fTOFcluster[i];
        fTOFcluster[i] = fTOFcluster[j];
        fTOFcluster[j] = change;
      }
    }
  }
}

//____________________________________________
const AliTOFHeader* AliESDtrack::GetTOFHeader() const {
  return fESDEvent->GetTOFHeader();
}

//___________________________________________
void AliESDtrack::SetID(Short_t id) 
{
  // set track ID taking care about dependencies
  if (fNtofClusters) ReplaceTOFTrackID(fID,id); 
  fID=id;
}


Double_t  AliESDtrack::GetdEdxInfo(Int_t regionID, Int_t calibID, Int_t qID, Int_t valueID){
  //
  // Interface to get the calibrated dEdx information 
  // For details of arguments and return values see 
  //     AliTPCdEdxInfo::GetdEdxInfo(Int_t regionID, Int_t calibID, Int_t valueID)
  //
  if (!fTPCdEdxInfo) return 0;
  if (!fIp) return 0;
  return fTPCdEdxInfo->GetdEdxInfo(fIp, regionID, calibID, qID, valueID);
}


Double_t AliESDtrack::GetdEdxInfoTRD(Int_t method, Double_t p0, Double_t p1, Double_t p2){
  //
  // Methods
  // mean values:
  //     0.)   linear
  //     1.)   logarithmic
  //     2.)   1/sqrt
  //     3.)   power()
  // time COG:
  //     4.)   linear
  //     5.)   logarithmic
  //     6.)   square
  Int_t nSlicesPerLayer=GetNumberOfTRDslices();
  Int_t nSlicesAll=GetNumberOfTRDslices()*kTRDnPlanes;

  if (method<=3){
    Double_t sumAmp=0;
    Int_t    sumW=0;
    for (Int_t ibin=0; ibin<nSlicesAll; ibin++){
      if (fTRDslices[ibin]<=0) continue; 
      sumW++;
      if (method==0) sumAmp+=fTRDslices[ibin];
      if (method==1) sumAmp+=TMath::Log(TMath::Abs(fTRDslices[ibin])+p0);
      if (method==2) sumAmp+=1/TMath::Sqrt(TMath::Abs(fTRDslices[ibin])+p0);
      if (method==3) sumAmp+=TMath::Power(TMath::Abs(fTRDslices[ibin])+p0,p1);
    }
    if (sumW==0) return 0;
    Double_t dEdx=sumAmp/sumW;
    if (method==1) dEdx= TMath::Exp(dEdx);
    if (method==2) dEdx= 1/(dEdx*dEdx);
    if (method==3) dEdx= TMath::Power(dEdx,1/p1);
    return dEdx;
  }
  if (method>3){
    Double_t sumWT=0;
    Double_t sumW=0;
    for (Int_t ibin=0; ibin<nSlicesAll; ibin++){
      if (fTRDslices[ibin]<=0) continue; 
      Double_t time=(ibin%nSlicesPerLayer);
      Double_t weight=fTRDslices[ibin];
      if (method==5) weight=TMath::Log((weight+p0)/p0);
      if (method==6) weight=TMath::Power(weight+p0,p1);
      sumWT+=time*weight;
      sumW+=weight;
    }
    if (sumW<=0) return 0;
    Double_t meanTime=sumWT/sumW;
    return meanTime;
  }
  return 0;
}
 AliESDtrack.cxx:1
 AliESDtrack.cxx:2
 AliESDtrack.cxx:3
 AliESDtrack.cxx:4
 AliESDtrack.cxx:5
 AliESDtrack.cxx:6
 AliESDtrack.cxx:7
 AliESDtrack.cxx:8
 AliESDtrack.cxx:9
 AliESDtrack.cxx:10
 AliESDtrack.cxx:11
 AliESDtrack.cxx:12
 AliESDtrack.cxx:13
 AliESDtrack.cxx:14
 AliESDtrack.cxx:15
 AliESDtrack.cxx:16
 AliESDtrack.cxx:17
 AliESDtrack.cxx:18
 AliESDtrack.cxx:19
 AliESDtrack.cxx:20
 AliESDtrack.cxx:21
 AliESDtrack.cxx:22
 AliESDtrack.cxx:23
 AliESDtrack.cxx:24
 AliESDtrack.cxx:25
 AliESDtrack.cxx:26
 AliESDtrack.cxx:27
 AliESDtrack.cxx:28
 AliESDtrack.cxx:29
 AliESDtrack.cxx:30
 AliESDtrack.cxx:31
 AliESDtrack.cxx:32
 AliESDtrack.cxx:33
 AliESDtrack.cxx:34
 AliESDtrack.cxx:35
 AliESDtrack.cxx:36
 AliESDtrack.cxx:37
 AliESDtrack.cxx:38
 AliESDtrack.cxx:39
 AliESDtrack.cxx:40
 AliESDtrack.cxx:41
 AliESDtrack.cxx:42
 AliESDtrack.cxx:43
 AliESDtrack.cxx:44
 AliESDtrack.cxx:45
 AliESDtrack.cxx:46
 AliESDtrack.cxx:47
 AliESDtrack.cxx:48
 AliESDtrack.cxx:49
 AliESDtrack.cxx:50
 AliESDtrack.cxx:51
 AliESDtrack.cxx:52
 AliESDtrack.cxx:53
 AliESDtrack.cxx:54
 AliESDtrack.cxx:55
 AliESDtrack.cxx:56
 AliESDtrack.cxx:57
 AliESDtrack.cxx:58
 AliESDtrack.cxx:59
 AliESDtrack.cxx:60
 AliESDtrack.cxx:61
 AliESDtrack.cxx:62
 AliESDtrack.cxx:63
 AliESDtrack.cxx:64
 AliESDtrack.cxx:65
 AliESDtrack.cxx:66
 AliESDtrack.cxx:67
 AliESDtrack.cxx:68
 AliESDtrack.cxx:69
 AliESDtrack.cxx:70
 AliESDtrack.cxx:71
 AliESDtrack.cxx:72
 AliESDtrack.cxx:73
 AliESDtrack.cxx:74
 AliESDtrack.cxx:75
 AliESDtrack.cxx:76
 AliESDtrack.cxx:77
 AliESDtrack.cxx:78
 AliESDtrack.cxx:79
 AliESDtrack.cxx:80
 AliESDtrack.cxx:81
 AliESDtrack.cxx:82
 AliESDtrack.cxx:83
 AliESDtrack.cxx:84
 AliESDtrack.cxx:85
 AliESDtrack.cxx:86
 AliESDtrack.cxx:87
 AliESDtrack.cxx:88
 AliESDtrack.cxx:89
 AliESDtrack.cxx:90
 AliESDtrack.cxx:91
 AliESDtrack.cxx:92
 AliESDtrack.cxx:93
 AliESDtrack.cxx:94
 AliESDtrack.cxx:95
 AliESDtrack.cxx:96
 AliESDtrack.cxx:97
 AliESDtrack.cxx:98
 AliESDtrack.cxx:99
 AliESDtrack.cxx:100
 AliESDtrack.cxx:101
 AliESDtrack.cxx:102
 AliESDtrack.cxx:103
 AliESDtrack.cxx:104
 AliESDtrack.cxx:105
 AliESDtrack.cxx:106
 AliESDtrack.cxx:107
 AliESDtrack.cxx:108
 AliESDtrack.cxx:109
 AliESDtrack.cxx:110
 AliESDtrack.cxx:111
 AliESDtrack.cxx:112
 AliESDtrack.cxx:113
 AliESDtrack.cxx:114
 AliESDtrack.cxx:115
 AliESDtrack.cxx:116
 AliESDtrack.cxx:117
 AliESDtrack.cxx:118
 AliESDtrack.cxx:119
 AliESDtrack.cxx:120
 AliESDtrack.cxx:121
 AliESDtrack.cxx:122
 AliESDtrack.cxx:123
 AliESDtrack.cxx:124
 AliESDtrack.cxx:125
 AliESDtrack.cxx:126
 AliESDtrack.cxx:127
 AliESDtrack.cxx:128
 AliESDtrack.cxx:129
 AliESDtrack.cxx:130
 AliESDtrack.cxx:131
 AliESDtrack.cxx:132
 AliESDtrack.cxx:133
 AliESDtrack.cxx:134
 AliESDtrack.cxx:135
 AliESDtrack.cxx:136
 AliESDtrack.cxx:137
 AliESDtrack.cxx:138
 AliESDtrack.cxx:139
 AliESDtrack.cxx:140
 AliESDtrack.cxx:141
 AliESDtrack.cxx:142
 AliESDtrack.cxx:143
 AliESDtrack.cxx:144
 AliESDtrack.cxx:145
 AliESDtrack.cxx:146
 AliESDtrack.cxx:147
 AliESDtrack.cxx:148
 AliESDtrack.cxx:149
 AliESDtrack.cxx:150
 AliESDtrack.cxx:151
 AliESDtrack.cxx:152
 AliESDtrack.cxx:153
 AliESDtrack.cxx:154
 AliESDtrack.cxx:155
 AliESDtrack.cxx:156
 AliESDtrack.cxx:157
 AliESDtrack.cxx:158
 AliESDtrack.cxx:159
 AliESDtrack.cxx:160
 AliESDtrack.cxx:161
 AliESDtrack.cxx:162
 AliESDtrack.cxx:163
 AliESDtrack.cxx:164
 AliESDtrack.cxx:165
 AliESDtrack.cxx:166
 AliESDtrack.cxx:167
 AliESDtrack.cxx:168
 AliESDtrack.cxx:169
 AliESDtrack.cxx:170
 AliESDtrack.cxx:171
 AliESDtrack.cxx:172
 AliESDtrack.cxx:173
 AliESDtrack.cxx:174
 AliESDtrack.cxx:175
 AliESDtrack.cxx:176
 AliESDtrack.cxx:177
 AliESDtrack.cxx:178
 AliESDtrack.cxx:179
 AliESDtrack.cxx:180
 AliESDtrack.cxx:181
 AliESDtrack.cxx:182
 AliESDtrack.cxx:183
 AliESDtrack.cxx:184
 AliESDtrack.cxx:185
 AliESDtrack.cxx:186
 AliESDtrack.cxx:187
 AliESDtrack.cxx:188
 AliESDtrack.cxx:189
 AliESDtrack.cxx:190
 AliESDtrack.cxx:191
 AliESDtrack.cxx:192
 AliESDtrack.cxx:193
 AliESDtrack.cxx:194
 AliESDtrack.cxx:195
 AliESDtrack.cxx:196
 AliESDtrack.cxx:197
 AliESDtrack.cxx:198
 AliESDtrack.cxx:199
 AliESDtrack.cxx:200
 AliESDtrack.cxx:201
 AliESDtrack.cxx:202
 AliESDtrack.cxx:203
 AliESDtrack.cxx:204
 AliESDtrack.cxx:205
 AliESDtrack.cxx:206
 AliESDtrack.cxx:207
 AliESDtrack.cxx:208
 AliESDtrack.cxx:209
 AliESDtrack.cxx:210
 AliESDtrack.cxx:211
 AliESDtrack.cxx:212
 AliESDtrack.cxx:213
 AliESDtrack.cxx:214
 AliESDtrack.cxx:215
 AliESDtrack.cxx:216
 AliESDtrack.cxx:217
 AliESDtrack.cxx:218
 AliESDtrack.cxx:219
 AliESDtrack.cxx:220
 AliESDtrack.cxx:221
 AliESDtrack.cxx:222
 AliESDtrack.cxx:223
 AliESDtrack.cxx:224
 AliESDtrack.cxx:225
 AliESDtrack.cxx:226
 AliESDtrack.cxx:227
 AliESDtrack.cxx:228
 AliESDtrack.cxx:229
 AliESDtrack.cxx:230
 AliESDtrack.cxx:231
 AliESDtrack.cxx:232
 AliESDtrack.cxx:233
 AliESDtrack.cxx:234
 AliESDtrack.cxx:235
 AliESDtrack.cxx:236
 AliESDtrack.cxx:237
 AliESDtrack.cxx:238
 AliESDtrack.cxx:239
 AliESDtrack.cxx:240
 AliESDtrack.cxx:241
 AliESDtrack.cxx:242
 AliESDtrack.cxx:243
 AliESDtrack.cxx:244
 AliESDtrack.cxx:245
 AliESDtrack.cxx:246
 AliESDtrack.cxx:247
 AliESDtrack.cxx:248
 AliESDtrack.cxx:249
 AliESDtrack.cxx:250
 AliESDtrack.cxx:251
 AliESDtrack.cxx:252
 AliESDtrack.cxx:253
 AliESDtrack.cxx:254
 AliESDtrack.cxx:255
 AliESDtrack.cxx:256
 AliESDtrack.cxx:257
 AliESDtrack.cxx:258
 AliESDtrack.cxx:259
 AliESDtrack.cxx:260
 AliESDtrack.cxx:261
 AliESDtrack.cxx:262
 AliESDtrack.cxx:263
 AliESDtrack.cxx:264
 AliESDtrack.cxx:265
 AliESDtrack.cxx:266
 AliESDtrack.cxx:267
 AliESDtrack.cxx:268
 AliESDtrack.cxx:269
 AliESDtrack.cxx:270
 AliESDtrack.cxx:271
 AliESDtrack.cxx:272
 AliESDtrack.cxx:273
 AliESDtrack.cxx:274
 AliESDtrack.cxx:275
 AliESDtrack.cxx:276
 AliESDtrack.cxx:277
 AliESDtrack.cxx:278
 AliESDtrack.cxx:279
 AliESDtrack.cxx:280
 AliESDtrack.cxx:281
 AliESDtrack.cxx:282
 AliESDtrack.cxx:283
 AliESDtrack.cxx:284
 AliESDtrack.cxx:285
 AliESDtrack.cxx:286
 AliESDtrack.cxx:287
 AliESDtrack.cxx:288
 AliESDtrack.cxx:289
 AliESDtrack.cxx:290
 AliESDtrack.cxx:291
 AliESDtrack.cxx:292
 AliESDtrack.cxx:293
 AliESDtrack.cxx:294
 AliESDtrack.cxx:295
 AliESDtrack.cxx:296
 AliESDtrack.cxx:297
 AliESDtrack.cxx:298
 AliESDtrack.cxx:299
 AliESDtrack.cxx:300
 AliESDtrack.cxx:301
 AliESDtrack.cxx:302
 AliESDtrack.cxx:303
 AliESDtrack.cxx:304
 AliESDtrack.cxx:305
 AliESDtrack.cxx:306
 AliESDtrack.cxx:307
 AliESDtrack.cxx:308
 AliESDtrack.cxx:309
 AliESDtrack.cxx:310
 AliESDtrack.cxx:311
 AliESDtrack.cxx:312
 AliESDtrack.cxx:313
 AliESDtrack.cxx:314
 AliESDtrack.cxx:315
 AliESDtrack.cxx:316
 AliESDtrack.cxx:317
 AliESDtrack.cxx:318
 AliESDtrack.cxx:319
 AliESDtrack.cxx:320
 AliESDtrack.cxx:321
 AliESDtrack.cxx:322
 AliESDtrack.cxx:323
 AliESDtrack.cxx:324
 AliESDtrack.cxx:325
 AliESDtrack.cxx:326
 AliESDtrack.cxx:327
 AliESDtrack.cxx:328
 AliESDtrack.cxx:329
 AliESDtrack.cxx:330
 AliESDtrack.cxx:331
 AliESDtrack.cxx:332
 AliESDtrack.cxx:333
 AliESDtrack.cxx:334
 AliESDtrack.cxx:335
 AliESDtrack.cxx:336
 AliESDtrack.cxx:337
 AliESDtrack.cxx:338
 AliESDtrack.cxx:339
 AliESDtrack.cxx:340
 AliESDtrack.cxx:341
 AliESDtrack.cxx:342
 AliESDtrack.cxx:343
 AliESDtrack.cxx:344
 AliESDtrack.cxx:345
 AliESDtrack.cxx:346
 AliESDtrack.cxx:347
 AliESDtrack.cxx:348
 AliESDtrack.cxx:349
 AliESDtrack.cxx:350
 AliESDtrack.cxx:351
 AliESDtrack.cxx:352
 AliESDtrack.cxx:353
 AliESDtrack.cxx:354
 AliESDtrack.cxx:355
 AliESDtrack.cxx:356
 AliESDtrack.cxx:357
 AliESDtrack.cxx:358
 AliESDtrack.cxx:359
 AliESDtrack.cxx:360
 AliESDtrack.cxx:361
 AliESDtrack.cxx:362
 AliESDtrack.cxx:363
 AliESDtrack.cxx:364
 AliESDtrack.cxx:365
 AliESDtrack.cxx:366
 AliESDtrack.cxx:367
 AliESDtrack.cxx:368
 AliESDtrack.cxx:369
 AliESDtrack.cxx:370
 AliESDtrack.cxx:371
 AliESDtrack.cxx:372
 AliESDtrack.cxx:373
 AliESDtrack.cxx:374
 AliESDtrack.cxx:375
 AliESDtrack.cxx:376
 AliESDtrack.cxx:377
 AliESDtrack.cxx:378
 AliESDtrack.cxx:379
 AliESDtrack.cxx:380
 AliESDtrack.cxx:381
 AliESDtrack.cxx:382
 AliESDtrack.cxx:383
 AliESDtrack.cxx:384
 AliESDtrack.cxx:385
 AliESDtrack.cxx:386
 AliESDtrack.cxx:387
 AliESDtrack.cxx:388
 AliESDtrack.cxx:389
 AliESDtrack.cxx:390
 AliESDtrack.cxx:391
 AliESDtrack.cxx:392
 AliESDtrack.cxx:393
 AliESDtrack.cxx:394
 AliESDtrack.cxx:395
 AliESDtrack.cxx:396
 AliESDtrack.cxx:397
 AliESDtrack.cxx:398
 AliESDtrack.cxx:399
 AliESDtrack.cxx:400
 AliESDtrack.cxx:401
 AliESDtrack.cxx:402
 AliESDtrack.cxx:403
 AliESDtrack.cxx:404
 AliESDtrack.cxx:405
 AliESDtrack.cxx:406
 AliESDtrack.cxx:407
 AliESDtrack.cxx:408
 AliESDtrack.cxx:409
 AliESDtrack.cxx:410
 AliESDtrack.cxx:411
 AliESDtrack.cxx:412
 AliESDtrack.cxx:413
 AliESDtrack.cxx:414
 AliESDtrack.cxx:415
 AliESDtrack.cxx:416
 AliESDtrack.cxx:417
 AliESDtrack.cxx:418
 AliESDtrack.cxx:419
 AliESDtrack.cxx:420
 AliESDtrack.cxx:421
 AliESDtrack.cxx:422
 AliESDtrack.cxx:423
 AliESDtrack.cxx:424
 AliESDtrack.cxx:425
 AliESDtrack.cxx:426
 AliESDtrack.cxx:427
 AliESDtrack.cxx:428
 AliESDtrack.cxx:429
 AliESDtrack.cxx:430
 AliESDtrack.cxx:431
 AliESDtrack.cxx:432
 AliESDtrack.cxx:433
 AliESDtrack.cxx:434
 AliESDtrack.cxx:435
 AliESDtrack.cxx:436
 AliESDtrack.cxx:437
 AliESDtrack.cxx:438
 AliESDtrack.cxx:439
 AliESDtrack.cxx:440
 AliESDtrack.cxx:441
 AliESDtrack.cxx:442
 AliESDtrack.cxx:443
 AliESDtrack.cxx:444
 AliESDtrack.cxx:445
 AliESDtrack.cxx:446
 AliESDtrack.cxx:447
 AliESDtrack.cxx:448
 AliESDtrack.cxx:449
 AliESDtrack.cxx:450
 AliESDtrack.cxx:451
 AliESDtrack.cxx:452
 AliESDtrack.cxx:453
 AliESDtrack.cxx:454
 AliESDtrack.cxx:455
 AliESDtrack.cxx:456
 AliESDtrack.cxx:457
 AliESDtrack.cxx:458
 AliESDtrack.cxx:459
 AliESDtrack.cxx:460
 AliESDtrack.cxx:461
 AliESDtrack.cxx:462
 AliESDtrack.cxx:463
 AliESDtrack.cxx:464
 AliESDtrack.cxx:465
 AliESDtrack.cxx:466
 AliESDtrack.cxx:467
 AliESDtrack.cxx:468
 AliESDtrack.cxx:469
 AliESDtrack.cxx:470
 AliESDtrack.cxx:471
 AliESDtrack.cxx:472
 AliESDtrack.cxx:473
 AliESDtrack.cxx:474
 AliESDtrack.cxx:475
 AliESDtrack.cxx:476
 AliESDtrack.cxx:477
 AliESDtrack.cxx:478
 AliESDtrack.cxx:479
 AliESDtrack.cxx:480
 AliESDtrack.cxx:481
 AliESDtrack.cxx:482
 AliESDtrack.cxx:483
 AliESDtrack.cxx:484
 AliESDtrack.cxx:485
 AliESDtrack.cxx:486
 AliESDtrack.cxx:487
 AliESDtrack.cxx:488
 AliESDtrack.cxx:489
 AliESDtrack.cxx:490
 AliESDtrack.cxx:491
 AliESDtrack.cxx:492
 AliESDtrack.cxx:493
 AliESDtrack.cxx:494
 AliESDtrack.cxx:495
 AliESDtrack.cxx:496
 AliESDtrack.cxx:497
 AliESDtrack.cxx:498
 AliESDtrack.cxx:499
 AliESDtrack.cxx:500
 AliESDtrack.cxx:501
 AliESDtrack.cxx:502
 AliESDtrack.cxx:503
 AliESDtrack.cxx:504
 AliESDtrack.cxx:505
 AliESDtrack.cxx:506
 AliESDtrack.cxx:507
 AliESDtrack.cxx:508
 AliESDtrack.cxx:509
 AliESDtrack.cxx:510
 AliESDtrack.cxx:511
 AliESDtrack.cxx:512
 AliESDtrack.cxx:513
 AliESDtrack.cxx:514
 AliESDtrack.cxx:515
 AliESDtrack.cxx:516
 AliESDtrack.cxx:517
 AliESDtrack.cxx:518
 AliESDtrack.cxx:519
 AliESDtrack.cxx:520
 AliESDtrack.cxx:521
 AliESDtrack.cxx:522
 AliESDtrack.cxx:523
 AliESDtrack.cxx:524
 AliESDtrack.cxx:525
 AliESDtrack.cxx:526
 AliESDtrack.cxx:527
 AliESDtrack.cxx:528
 AliESDtrack.cxx:529
 AliESDtrack.cxx:530
 AliESDtrack.cxx:531
 AliESDtrack.cxx:532
 AliESDtrack.cxx:533
 AliESDtrack.cxx:534
 AliESDtrack.cxx:535
 AliESDtrack.cxx:536
 AliESDtrack.cxx:537
 AliESDtrack.cxx:538
 AliESDtrack.cxx:539
 AliESDtrack.cxx:540
 AliESDtrack.cxx:541
 AliESDtrack.cxx:542
 AliESDtrack.cxx:543
 AliESDtrack.cxx:544
 AliESDtrack.cxx:545
 AliESDtrack.cxx:546
 AliESDtrack.cxx:547
 AliESDtrack.cxx:548
 AliESDtrack.cxx:549
 AliESDtrack.cxx:550
 AliESDtrack.cxx:551
 AliESDtrack.cxx:552
 AliESDtrack.cxx:553
 AliESDtrack.cxx:554
 AliESDtrack.cxx:555
 AliESDtrack.cxx:556
 AliESDtrack.cxx:557
 AliESDtrack.cxx:558
 AliESDtrack.cxx:559
 AliESDtrack.cxx:560
 AliESDtrack.cxx:561
 AliESDtrack.cxx:562
 AliESDtrack.cxx:563
 AliESDtrack.cxx:564
 AliESDtrack.cxx:565
 AliESDtrack.cxx:566
 AliESDtrack.cxx:567
 AliESDtrack.cxx:568
 AliESDtrack.cxx:569
 AliESDtrack.cxx:570
 AliESDtrack.cxx:571
 AliESDtrack.cxx:572
 AliESDtrack.cxx:573
 AliESDtrack.cxx:574
 AliESDtrack.cxx:575
 AliESDtrack.cxx:576
 AliESDtrack.cxx:577
 AliESDtrack.cxx:578
 AliESDtrack.cxx:579
 AliESDtrack.cxx:580
 AliESDtrack.cxx:581
 AliESDtrack.cxx:582
 AliESDtrack.cxx:583
 AliESDtrack.cxx:584
 AliESDtrack.cxx:585
 AliESDtrack.cxx:586
 AliESDtrack.cxx:587
 AliESDtrack.cxx:588
 AliESDtrack.cxx:589
 AliESDtrack.cxx:590
 AliESDtrack.cxx:591
 AliESDtrack.cxx:592
 AliESDtrack.cxx:593
 AliESDtrack.cxx:594
 AliESDtrack.cxx:595
 AliESDtrack.cxx:596
 AliESDtrack.cxx:597
 AliESDtrack.cxx:598
 AliESDtrack.cxx:599
 AliESDtrack.cxx:600
 AliESDtrack.cxx:601
 AliESDtrack.cxx:602
 AliESDtrack.cxx:603
 AliESDtrack.cxx:604
 AliESDtrack.cxx:605
 AliESDtrack.cxx:606
 AliESDtrack.cxx:607
 AliESDtrack.cxx:608
 AliESDtrack.cxx:609
 AliESDtrack.cxx:610
 AliESDtrack.cxx:611
 AliESDtrack.cxx:612
 AliESDtrack.cxx:613
 AliESDtrack.cxx:614
 AliESDtrack.cxx:615
 AliESDtrack.cxx:616
 AliESDtrack.cxx:617
 AliESDtrack.cxx:618
 AliESDtrack.cxx:619
 AliESDtrack.cxx:620
 AliESDtrack.cxx:621
 AliESDtrack.cxx:622
 AliESDtrack.cxx:623
 AliESDtrack.cxx:624
 AliESDtrack.cxx:625
 AliESDtrack.cxx:626
 AliESDtrack.cxx:627
 AliESDtrack.cxx:628
 AliESDtrack.cxx:629
 AliESDtrack.cxx:630
 AliESDtrack.cxx:631
 AliESDtrack.cxx:632
 AliESDtrack.cxx:633
 AliESDtrack.cxx:634
 AliESDtrack.cxx:635
 AliESDtrack.cxx:636
 AliESDtrack.cxx:637
 AliESDtrack.cxx:638
 AliESDtrack.cxx:639
 AliESDtrack.cxx:640
 AliESDtrack.cxx:641
 AliESDtrack.cxx:642
 AliESDtrack.cxx:643
 AliESDtrack.cxx:644
 AliESDtrack.cxx:645
 AliESDtrack.cxx:646
 AliESDtrack.cxx:647
 AliESDtrack.cxx:648
 AliESDtrack.cxx:649
 AliESDtrack.cxx:650
 AliESDtrack.cxx:651
 AliESDtrack.cxx:652
 AliESDtrack.cxx:653
 AliESDtrack.cxx:654
 AliESDtrack.cxx:655
 AliESDtrack.cxx:656
 AliESDtrack.cxx:657
 AliESDtrack.cxx:658
 AliESDtrack.cxx:659
 AliESDtrack.cxx:660
 AliESDtrack.cxx:661
 AliESDtrack.cxx:662
 AliESDtrack.cxx:663
 AliESDtrack.cxx:664
 AliESDtrack.cxx:665
 AliESDtrack.cxx:666
 AliESDtrack.cxx:667
 AliESDtrack.cxx:668
 AliESDtrack.cxx:669
 AliESDtrack.cxx:670
 AliESDtrack.cxx:671
 AliESDtrack.cxx:672
 AliESDtrack.cxx:673
 AliESDtrack.cxx:674
 AliESDtrack.cxx:675
 AliESDtrack.cxx:676
 AliESDtrack.cxx:677
 AliESDtrack.cxx:678
 AliESDtrack.cxx:679
 AliESDtrack.cxx:680
 AliESDtrack.cxx:681
 AliESDtrack.cxx:682
 AliESDtrack.cxx:683
 AliESDtrack.cxx:684
 AliESDtrack.cxx:685
 AliESDtrack.cxx:686
 AliESDtrack.cxx:687
 AliESDtrack.cxx:688
 AliESDtrack.cxx:689
 AliESDtrack.cxx:690
 AliESDtrack.cxx:691
 AliESDtrack.cxx:692
 AliESDtrack.cxx:693
 AliESDtrack.cxx:694
 AliESDtrack.cxx:695
 AliESDtrack.cxx:696
 AliESDtrack.cxx:697
 AliESDtrack.cxx:698
 AliESDtrack.cxx:699
 AliESDtrack.cxx:700
 AliESDtrack.cxx:701
 AliESDtrack.cxx:702
 AliESDtrack.cxx:703
 AliESDtrack.cxx:704
 AliESDtrack.cxx:705
 AliESDtrack.cxx:706
 AliESDtrack.cxx:707
 AliESDtrack.cxx:708
 AliESDtrack.cxx:709
 AliESDtrack.cxx:710
 AliESDtrack.cxx:711
 AliESDtrack.cxx:712
 AliESDtrack.cxx:713
 AliESDtrack.cxx:714
 AliESDtrack.cxx:715
 AliESDtrack.cxx:716
 AliESDtrack.cxx:717
 AliESDtrack.cxx:718
 AliESDtrack.cxx:719
 AliESDtrack.cxx:720
 AliESDtrack.cxx:721
 AliESDtrack.cxx:722
 AliESDtrack.cxx:723
 AliESDtrack.cxx:724
 AliESDtrack.cxx:725
 AliESDtrack.cxx:726
 AliESDtrack.cxx:727
 AliESDtrack.cxx:728
 AliESDtrack.cxx:729
 AliESDtrack.cxx:730
 AliESDtrack.cxx:731
 AliESDtrack.cxx:732
 AliESDtrack.cxx:733
 AliESDtrack.cxx:734
 AliESDtrack.cxx:735
 AliESDtrack.cxx:736
 AliESDtrack.cxx:737
 AliESDtrack.cxx:738
 AliESDtrack.cxx:739
 AliESDtrack.cxx:740
 AliESDtrack.cxx:741
 AliESDtrack.cxx:742
 AliESDtrack.cxx:743
 AliESDtrack.cxx:744
 AliESDtrack.cxx:745
 AliESDtrack.cxx:746
 AliESDtrack.cxx:747
 AliESDtrack.cxx:748
 AliESDtrack.cxx:749
 AliESDtrack.cxx:750
 AliESDtrack.cxx:751
 AliESDtrack.cxx:752
 AliESDtrack.cxx:753
 AliESDtrack.cxx:754
 AliESDtrack.cxx:755
 AliESDtrack.cxx:756
 AliESDtrack.cxx:757
 AliESDtrack.cxx:758
 AliESDtrack.cxx:759
 AliESDtrack.cxx:760
 AliESDtrack.cxx:761
 AliESDtrack.cxx:762
 AliESDtrack.cxx:763
 AliESDtrack.cxx:764
 AliESDtrack.cxx:765
 AliESDtrack.cxx:766
 AliESDtrack.cxx:767
 AliESDtrack.cxx:768
 AliESDtrack.cxx:769
 AliESDtrack.cxx:770
 AliESDtrack.cxx:771
 AliESDtrack.cxx:772
 AliESDtrack.cxx:773
 AliESDtrack.cxx:774
 AliESDtrack.cxx:775
 AliESDtrack.cxx:776
 AliESDtrack.cxx:777
 AliESDtrack.cxx:778
 AliESDtrack.cxx:779
 AliESDtrack.cxx:780
 AliESDtrack.cxx:781
 AliESDtrack.cxx:782
 AliESDtrack.cxx:783
 AliESDtrack.cxx:784
 AliESDtrack.cxx:785
 AliESDtrack.cxx:786
 AliESDtrack.cxx:787
 AliESDtrack.cxx:788
 AliESDtrack.cxx:789
 AliESDtrack.cxx:790
 AliESDtrack.cxx:791
 AliESDtrack.cxx:792
 AliESDtrack.cxx:793
 AliESDtrack.cxx:794
 AliESDtrack.cxx:795
 AliESDtrack.cxx:796
 AliESDtrack.cxx:797
 AliESDtrack.cxx:798
 AliESDtrack.cxx:799
 AliESDtrack.cxx:800
 AliESDtrack.cxx:801
 AliESDtrack.cxx:802
 AliESDtrack.cxx:803
 AliESDtrack.cxx:804
 AliESDtrack.cxx:805
 AliESDtrack.cxx:806
 AliESDtrack.cxx:807
 AliESDtrack.cxx:808
 AliESDtrack.cxx:809
 AliESDtrack.cxx:810
 AliESDtrack.cxx:811
 AliESDtrack.cxx:812
 AliESDtrack.cxx:813
 AliESDtrack.cxx:814
 AliESDtrack.cxx:815
 AliESDtrack.cxx:816
 AliESDtrack.cxx:817
 AliESDtrack.cxx:818
 AliESDtrack.cxx:819
 AliESDtrack.cxx:820
 AliESDtrack.cxx:821
 AliESDtrack.cxx:822
 AliESDtrack.cxx:823
 AliESDtrack.cxx:824
 AliESDtrack.cxx:825
 AliESDtrack.cxx:826
 AliESDtrack.cxx:827
 AliESDtrack.cxx:828
 AliESDtrack.cxx:829
 AliESDtrack.cxx:830
 AliESDtrack.cxx:831
 AliESDtrack.cxx:832
 AliESDtrack.cxx:833
 AliESDtrack.cxx:834
 AliESDtrack.cxx:835
 AliESDtrack.cxx:836
 AliESDtrack.cxx:837
 AliESDtrack.cxx:838
 AliESDtrack.cxx:839
 AliESDtrack.cxx:840
 AliESDtrack.cxx:841
 AliESDtrack.cxx:842
 AliESDtrack.cxx:843
 AliESDtrack.cxx:844
 AliESDtrack.cxx:845
 AliESDtrack.cxx:846
 AliESDtrack.cxx:847
 AliESDtrack.cxx:848
 AliESDtrack.cxx:849
 AliESDtrack.cxx:850
 AliESDtrack.cxx:851
 AliESDtrack.cxx:852
 AliESDtrack.cxx:853
 AliESDtrack.cxx:854
 AliESDtrack.cxx:855
 AliESDtrack.cxx:856
 AliESDtrack.cxx:857
 AliESDtrack.cxx:858
 AliESDtrack.cxx:859
 AliESDtrack.cxx:860
 AliESDtrack.cxx:861
 AliESDtrack.cxx:862
 AliESDtrack.cxx:863
 AliESDtrack.cxx:864
 AliESDtrack.cxx:865
 AliESDtrack.cxx:866
 AliESDtrack.cxx:867
 AliESDtrack.cxx:868
 AliESDtrack.cxx:869
 AliESDtrack.cxx:870
 AliESDtrack.cxx:871
 AliESDtrack.cxx:872
 AliESDtrack.cxx:873
 AliESDtrack.cxx:874
 AliESDtrack.cxx:875
 AliESDtrack.cxx:876
 AliESDtrack.cxx:877
 AliESDtrack.cxx:878
 AliESDtrack.cxx:879
 AliESDtrack.cxx:880
 AliESDtrack.cxx:881
 AliESDtrack.cxx:882
 AliESDtrack.cxx:883
 AliESDtrack.cxx:884
 AliESDtrack.cxx:885
 AliESDtrack.cxx:886
 AliESDtrack.cxx:887
 AliESDtrack.cxx:888
 AliESDtrack.cxx:889
 AliESDtrack.cxx:890
 AliESDtrack.cxx:891
 AliESDtrack.cxx:892
 AliESDtrack.cxx:893
 AliESDtrack.cxx:894
 AliESDtrack.cxx:895
 AliESDtrack.cxx:896
 AliESDtrack.cxx:897
 AliESDtrack.cxx:898
 AliESDtrack.cxx:899
 AliESDtrack.cxx:900
 AliESDtrack.cxx:901
 AliESDtrack.cxx:902
 AliESDtrack.cxx:903
 AliESDtrack.cxx:904
 AliESDtrack.cxx:905
 AliESDtrack.cxx:906
 AliESDtrack.cxx:907
 AliESDtrack.cxx:908
 AliESDtrack.cxx:909
 AliESDtrack.cxx:910
 AliESDtrack.cxx:911
 AliESDtrack.cxx:912
 AliESDtrack.cxx:913
 AliESDtrack.cxx:914
 AliESDtrack.cxx:915
 AliESDtrack.cxx:916
 AliESDtrack.cxx:917
 AliESDtrack.cxx:918
 AliESDtrack.cxx:919
 AliESDtrack.cxx:920
 AliESDtrack.cxx:921
 AliESDtrack.cxx:922
 AliESDtrack.cxx:923
 AliESDtrack.cxx:924
 AliESDtrack.cxx:925
 AliESDtrack.cxx:926
 AliESDtrack.cxx:927
 AliESDtrack.cxx:928
 AliESDtrack.cxx:929
 AliESDtrack.cxx:930
 AliESDtrack.cxx:931
 AliESDtrack.cxx:932
 AliESDtrack.cxx:933
 AliESDtrack.cxx:934
 AliESDtrack.cxx:935
 AliESDtrack.cxx:936
 AliESDtrack.cxx:937
 AliESDtrack.cxx:938
 AliESDtrack.cxx:939
 AliESDtrack.cxx:940
 AliESDtrack.cxx:941
 AliESDtrack.cxx:942
 AliESDtrack.cxx:943
 AliESDtrack.cxx:944
 AliESDtrack.cxx:945
 AliESDtrack.cxx:946
 AliESDtrack.cxx:947
 AliESDtrack.cxx:948
 AliESDtrack.cxx:949
 AliESDtrack.cxx:950
 AliESDtrack.cxx:951
 AliESDtrack.cxx:952
 AliESDtrack.cxx:953
 AliESDtrack.cxx:954
 AliESDtrack.cxx:955
 AliESDtrack.cxx:956
 AliESDtrack.cxx:957
 AliESDtrack.cxx:958
 AliESDtrack.cxx:959
 AliESDtrack.cxx:960
 AliESDtrack.cxx:961
 AliESDtrack.cxx:962
 AliESDtrack.cxx:963
 AliESDtrack.cxx:964
 AliESDtrack.cxx:965
 AliESDtrack.cxx:966
 AliESDtrack.cxx:967
 AliESDtrack.cxx:968
 AliESDtrack.cxx:969
 AliESDtrack.cxx:970
 AliESDtrack.cxx:971
 AliESDtrack.cxx:972
 AliESDtrack.cxx:973
 AliESDtrack.cxx:974
 AliESDtrack.cxx:975
 AliESDtrack.cxx:976
 AliESDtrack.cxx:977
 AliESDtrack.cxx:978
 AliESDtrack.cxx:979
 AliESDtrack.cxx:980
 AliESDtrack.cxx:981
 AliESDtrack.cxx:982
 AliESDtrack.cxx:983
 AliESDtrack.cxx:984
 AliESDtrack.cxx:985
 AliESDtrack.cxx:986
 AliESDtrack.cxx:987
 AliESDtrack.cxx:988
 AliESDtrack.cxx:989
 AliESDtrack.cxx:990
 AliESDtrack.cxx:991
 AliESDtrack.cxx:992
 AliESDtrack.cxx:993
 AliESDtrack.cxx:994
 AliESDtrack.cxx:995
 AliESDtrack.cxx:996
 AliESDtrack.cxx:997
 AliESDtrack.cxx:998
 AliESDtrack.cxx:999
 AliESDtrack.cxx:1000
 AliESDtrack.cxx:1001
 AliESDtrack.cxx:1002
 AliESDtrack.cxx:1003
 AliESDtrack.cxx:1004
 AliESDtrack.cxx:1005
 AliESDtrack.cxx:1006
 AliESDtrack.cxx:1007
 AliESDtrack.cxx:1008
 AliESDtrack.cxx:1009
 AliESDtrack.cxx:1010
 AliESDtrack.cxx:1011
 AliESDtrack.cxx:1012
 AliESDtrack.cxx:1013
 AliESDtrack.cxx:1014
 AliESDtrack.cxx:1015
 AliESDtrack.cxx:1016
 AliESDtrack.cxx:1017
 AliESDtrack.cxx:1018
 AliESDtrack.cxx:1019
 AliESDtrack.cxx:1020
 AliESDtrack.cxx:1021
 AliESDtrack.cxx:1022
 AliESDtrack.cxx:1023
 AliESDtrack.cxx:1024
 AliESDtrack.cxx:1025
 AliESDtrack.cxx:1026
 AliESDtrack.cxx:1027
 AliESDtrack.cxx:1028
 AliESDtrack.cxx:1029
 AliESDtrack.cxx:1030
 AliESDtrack.cxx:1031
 AliESDtrack.cxx:1032
 AliESDtrack.cxx:1033
 AliESDtrack.cxx:1034
 AliESDtrack.cxx:1035
 AliESDtrack.cxx:1036
 AliESDtrack.cxx:1037
 AliESDtrack.cxx:1038
 AliESDtrack.cxx:1039
 AliESDtrack.cxx:1040
 AliESDtrack.cxx:1041
 AliESDtrack.cxx:1042
 AliESDtrack.cxx:1043
 AliESDtrack.cxx:1044
 AliESDtrack.cxx:1045
 AliESDtrack.cxx:1046
 AliESDtrack.cxx:1047
 AliESDtrack.cxx:1048
 AliESDtrack.cxx:1049
 AliESDtrack.cxx:1050
 AliESDtrack.cxx:1051
 AliESDtrack.cxx:1052
 AliESDtrack.cxx:1053
 AliESDtrack.cxx:1054
 AliESDtrack.cxx:1055
 AliESDtrack.cxx:1056
 AliESDtrack.cxx:1057
 AliESDtrack.cxx:1058
 AliESDtrack.cxx:1059
 AliESDtrack.cxx:1060
 AliESDtrack.cxx:1061
 AliESDtrack.cxx:1062
 AliESDtrack.cxx:1063
 AliESDtrack.cxx:1064
 AliESDtrack.cxx:1065
 AliESDtrack.cxx:1066
 AliESDtrack.cxx:1067
 AliESDtrack.cxx:1068
 AliESDtrack.cxx:1069
 AliESDtrack.cxx:1070
 AliESDtrack.cxx:1071
 AliESDtrack.cxx:1072
 AliESDtrack.cxx:1073
 AliESDtrack.cxx:1074
 AliESDtrack.cxx:1075
 AliESDtrack.cxx:1076
 AliESDtrack.cxx:1077
 AliESDtrack.cxx:1078
 AliESDtrack.cxx:1079
 AliESDtrack.cxx:1080
 AliESDtrack.cxx:1081
 AliESDtrack.cxx:1082
 AliESDtrack.cxx:1083
 AliESDtrack.cxx:1084
 AliESDtrack.cxx:1085
 AliESDtrack.cxx:1086
 AliESDtrack.cxx:1087
 AliESDtrack.cxx:1088
 AliESDtrack.cxx:1089
 AliESDtrack.cxx:1090
 AliESDtrack.cxx:1091
 AliESDtrack.cxx:1092
 AliESDtrack.cxx:1093
 AliESDtrack.cxx:1094
 AliESDtrack.cxx:1095
 AliESDtrack.cxx:1096
 AliESDtrack.cxx:1097
 AliESDtrack.cxx:1098
 AliESDtrack.cxx:1099
 AliESDtrack.cxx:1100
 AliESDtrack.cxx:1101
 AliESDtrack.cxx:1102
 AliESDtrack.cxx:1103
 AliESDtrack.cxx:1104
 AliESDtrack.cxx:1105
 AliESDtrack.cxx:1106
 AliESDtrack.cxx:1107
 AliESDtrack.cxx:1108
 AliESDtrack.cxx:1109
 AliESDtrack.cxx:1110
 AliESDtrack.cxx:1111
 AliESDtrack.cxx:1112
 AliESDtrack.cxx:1113
 AliESDtrack.cxx:1114
 AliESDtrack.cxx:1115
 AliESDtrack.cxx:1116
 AliESDtrack.cxx:1117
 AliESDtrack.cxx:1118
 AliESDtrack.cxx:1119
 AliESDtrack.cxx:1120
 AliESDtrack.cxx:1121
 AliESDtrack.cxx:1122
 AliESDtrack.cxx:1123
 AliESDtrack.cxx:1124
 AliESDtrack.cxx:1125
 AliESDtrack.cxx:1126
 AliESDtrack.cxx:1127
 AliESDtrack.cxx:1128
 AliESDtrack.cxx:1129
 AliESDtrack.cxx:1130
 AliESDtrack.cxx:1131
 AliESDtrack.cxx:1132
 AliESDtrack.cxx:1133
 AliESDtrack.cxx:1134
 AliESDtrack.cxx:1135
 AliESDtrack.cxx:1136
 AliESDtrack.cxx:1137
 AliESDtrack.cxx:1138
 AliESDtrack.cxx:1139
 AliESDtrack.cxx:1140
 AliESDtrack.cxx:1141
 AliESDtrack.cxx:1142
 AliESDtrack.cxx:1143
 AliESDtrack.cxx:1144
 AliESDtrack.cxx:1145
 AliESDtrack.cxx:1146
 AliESDtrack.cxx:1147
 AliESDtrack.cxx:1148
 AliESDtrack.cxx:1149
 AliESDtrack.cxx:1150
 AliESDtrack.cxx:1151
 AliESDtrack.cxx:1152
 AliESDtrack.cxx:1153
 AliESDtrack.cxx:1154
 AliESDtrack.cxx:1155
 AliESDtrack.cxx:1156
 AliESDtrack.cxx:1157
 AliESDtrack.cxx:1158
 AliESDtrack.cxx:1159
 AliESDtrack.cxx:1160
 AliESDtrack.cxx:1161
 AliESDtrack.cxx:1162
 AliESDtrack.cxx:1163
 AliESDtrack.cxx:1164
 AliESDtrack.cxx:1165
 AliESDtrack.cxx:1166
 AliESDtrack.cxx:1167
 AliESDtrack.cxx:1168
 AliESDtrack.cxx:1169
 AliESDtrack.cxx:1170
 AliESDtrack.cxx:1171
 AliESDtrack.cxx:1172
 AliESDtrack.cxx:1173
 AliESDtrack.cxx:1174
 AliESDtrack.cxx:1175
 AliESDtrack.cxx:1176
 AliESDtrack.cxx:1177
 AliESDtrack.cxx:1178
 AliESDtrack.cxx:1179
 AliESDtrack.cxx:1180
 AliESDtrack.cxx:1181
 AliESDtrack.cxx:1182
 AliESDtrack.cxx:1183
 AliESDtrack.cxx:1184
 AliESDtrack.cxx:1185
 AliESDtrack.cxx:1186
 AliESDtrack.cxx:1187
 AliESDtrack.cxx:1188
 AliESDtrack.cxx:1189
 AliESDtrack.cxx:1190
 AliESDtrack.cxx:1191
 AliESDtrack.cxx:1192
 AliESDtrack.cxx:1193
 AliESDtrack.cxx:1194
 AliESDtrack.cxx:1195
 AliESDtrack.cxx:1196
 AliESDtrack.cxx:1197
 AliESDtrack.cxx:1198
 AliESDtrack.cxx:1199
 AliESDtrack.cxx:1200
 AliESDtrack.cxx:1201
 AliESDtrack.cxx:1202
 AliESDtrack.cxx:1203
 AliESDtrack.cxx:1204
 AliESDtrack.cxx:1205
 AliESDtrack.cxx:1206
 AliESDtrack.cxx:1207
 AliESDtrack.cxx:1208
 AliESDtrack.cxx:1209
 AliESDtrack.cxx:1210
 AliESDtrack.cxx:1211
 AliESDtrack.cxx:1212
 AliESDtrack.cxx:1213
 AliESDtrack.cxx:1214
 AliESDtrack.cxx:1215
 AliESDtrack.cxx:1216
 AliESDtrack.cxx:1217
 AliESDtrack.cxx:1218
 AliESDtrack.cxx:1219
 AliESDtrack.cxx:1220
 AliESDtrack.cxx:1221
 AliESDtrack.cxx:1222
 AliESDtrack.cxx:1223
 AliESDtrack.cxx:1224
 AliESDtrack.cxx:1225
 AliESDtrack.cxx:1226
 AliESDtrack.cxx:1227
 AliESDtrack.cxx:1228
 AliESDtrack.cxx:1229
 AliESDtrack.cxx:1230
 AliESDtrack.cxx:1231
 AliESDtrack.cxx:1232
 AliESDtrack.cxx:1233
 AliESDtrack.cxx:1234
 AliESDtrack.cxx:1235
 AliESDtrack.cxx:1236
 AliESDtrack.cxx:1237
 AliESDtrack.cxx:1238
 AliESDtrack.cxx:1239
 AliESDtrack.cxx:1240
 AliESDtrack.cxx:1241
 AliESDtrack.cxx:1242
 AliESDtrack.cxx:1243
 AliESDtrack.cxx:1244
 AliESDtrack.cxx:1245
 AliESDtrack.cxx:1246
 AliESDtrack.cxx:1247
 AliESDtrack.cxx:1248
 AliESDtrack.cxx:1249
 AliESDtrack.cxx:1250
 AliESDtrack.cxx:1251
 AliESDtrack.cxx:1252
 AliESDtrack.cxx:1253
 AliESDtrack.cxx:1254
 AliESDtrack.cxx:1255
 AliESDtrack.cxx:1256
 AliESDtrack.cxx:1257
 AliESDtrack.cxx:1258
 AliESDtrack.cxx:1259
 AliESDtrack.cxx:1260
 AliESDtrack.cxx:1261
 AliESDtrack.cxx:1262
 AliESDtrack.cxx:1263
 AliESDtrack.cxx:1264
 AliESDtrack.cxx:1265
 AliESDtrack.cxx:1266
 AliESDtrack.cxx:1267
 AliESDtrack.cxx:1268
 AliESDtrack.cxx:1269
 AliESDtrack.cxx:1270
 AliESDtrack.cxx:1271
 AliESDtrack.cxx:1272
 AliESDtrack.cxx:1273
 AliESDtrack.cxx:1274
 AliESDtrack.cxx:1275
 AliESDtrack.cxx:1276
 AliESDtrack.cxx:1277
 AliESDtrack.cxx:1278
 AliESDtrack.cxx:1279
 AliESDtrack.cxx:1280
 AliESDtrack.cxx:1281
 AliESDtrack.cxx:1282
 AliESDtrack.cxx:1283
 AliESDtrack.cxx:1284
 AliESDtrack.cxx:1285
 AliESDtrack.cxx:1286
 AliESDtrack.cxx:1287
 AliESDtrack.cxx:1288
 AliESDtrack.cxx:1289
 AliESDtrack.cxx:1290
 AliESDtrack.cxx:1291
 AliESDtrack.cxx:1292
 AliESDtrack.cxx:1293
 AliESDtrack.cxx:1294
 AliESDtrack.cxx:1295
 AliESDtrack.cxx:1296
 AliESDtrack.cxx:1297
 AliESDtrack.cxx:1298
 AliESDtrack.cxx:1299
 AliESDtrack.cxx:1300
 AliESDtrack.cxx:1301
 AliESDtrack.cxx:1302
 AliESDtrack.cxx:1303
 AliESDtrack.cxx:1304
 AliESDtrack.cxx:1305
 AliESDtrack.cxx:1306
 AliESDtrack.cxx:1307
 AliESDtrack.cxx:1308
 AliESDtrack.cxx:1309
 AliESDtrack.cxx:1310
 AliESDtrack.cxx:1311
 AliESDtrack.cxx:1312
 AliESDtrack.cxx:1313
 AliESDtrack.cxx:1314
 AliESDtrack.cxx:1315
 AliESDtrack.cxx:1316
 AliESDtrack.cxx:1317
 AliESDtrack.cxx:1318
 AliESDtrack.cxx:1319
 AliESDtrack.cxx:1320
 AliESDtrack.cxx:1321
 AliESDtrack.cxx:1322
 AliESDtrack.cxx:1323
 AliESDtrack.cxx:1324
 AliESDtrack.cxx:1325
 AliESDtrack.cxx:1326
 AliESDtrack.cxx:1327
 AliESDtrack.cxx:1328
 AliESDtrack.cxx:1329
 AliESDtrack.cxx:1330
 AliESDtrack.cxx:1331
 AliESDtrack.cxx:1332
 AliESDtrack.cxx:1333
 AliESDtrack.cxx:1334
 AliESDtrack.cxx:1335
 AliESDtrack.cxx:1336
 AliESDtrack.cxx:1337
 AliESDtrack.cxx:1338
 AliESDtrack.cxx:1339
 AliESDtrack.cxx:1340
 AliESDtrack.cxx:1341
 AliESDtrack.cxx:1342
 AliESDtrack.cxx:1343
 AliESDtrack.cxx:1344
 AliESDtrack.cxx:1345
 AliESDtrack.cxx:1346
 AliESDtrack.cxx:1347
 AliESDtrack.cxx:1348
 AliESDtrack.cxx:1349
 AliESDtrack.cxx:1350
 AliESDtrack.cxx:1351
 AliESDtrack.cxx:1352
 AliESDtrack.cxx:1353
 AliESDtrack.cxx:1354
 AliESDtrack.cxx:1355
 AliESDtrack.cxx:1356
 AliESDtrack.cxx:1357
 AliESDtrack.cxx:1358
 AliESDtrack.cxx:1359
 AliESDtrack.cxx:1360
 AliESDtrack.cxx:1361
 AliESDtrack.cxx:1362
 AliESDtrack.cxx:1363
 AliESDtrack.cxx:1364
 AliESDtrack.cxx:1365
 AliESDtrack.cxx:1366
 AliESDtrack.cxx:1367
 AliESDtrack.cxx:1368
 AliESDtrack.cxx:1369
 AliESDtrack.cxx:1370
 AliESDtrack.cxx:1371
 AliESDtrack.cxx:1372
 AliESDtrack.cxx:1373
 AliESDtrack.cxx:1374
 AliESDtrack.cxx:1375
 AliESDtrack.cxx:1376
 AliESDtrack.cxx:1377
 AliESDtrack.cxx:1378
 AliESDtrack.cxx:1379
 AliESDtrack.cxx:1380
 AliESDtrack.cxx:1381
 AliESDtrack.cxx:1382
 AliESDtrack.cxx:1383
 AliESDtrack.cxx:1384
 AliESDtrack.cxx:1385
 AliESDtrack.cxx:1386
 AliESDtrack.cxx:1387
 AliESDtrack.cxx:1388
 AliESDtrack.cxx:1389
 AliESDtrack.cxx:1390
 AliESDtrack.cxx:1391
 AliESDtrack.cxx:1392
 AliESDtrack.cxx:1393
 AliESDtrack.cxx:1394
 AliESDtrack.cxx:1395
 AliESDtrack.cxx:1396
 AliESDtrack.cxx:1397
 AliESDtrack.cxx:1398
 AliESDtrack.cxx:1399
 AliESDtrack.cxx:1400
 AliESDtrack.cxx:1401
 AliESDtrack.cxx:1402
 AliESDtrack.cxx:1403
 AliESDtrack.cxx:1404
 AliESDtrack.cxx:1405
 AliESDtrack.cxx:1406
 AliESDtrack.cxx:1407
 AliESDtrack.cxx:1408
 AliESDtrack.cxx:1409
 AliESDtrack.cxx:1410
 AliESDtrack.cxx:1411
 AliESDtrack.cxx:1412
 AliESDtrack.cxx:1413
 AliESDtrack.cxx:1414
 AliESDtrack.cxx:1415
 AliESDtrack.cxx:1416
 AliESDtrack.cxx:1417
 AliESDtrack.cxx:1418
 AliESDtrack.cxx:1419
 AliESDtrack.cxx:1420
 AliESDtrack.cxx:1421
 AliESDtrack.cxx:1422
 AliESDtrack.cxx:1423
 AliESDtrack.cxx:1424
 AliESDtrack.cxx:1425
 AliESDtrack.cxx:1426
 AliESDtrack.cxx:1427
 AliESDtrack.cxx:1428
 AliESDtrack.cxx:1429
 AliESDtrack.cxx:1430
 AliESDtrack.cxx:1431
 AliESDtrack.cxx:1432
 AliESDtrack.cxx:1433
 AliESDtrack.cxx:1434
 AliESDtrack.cxx:1435
 AliESDtrack.cxx:1436
 AliESDtrack.cxx:1437
 AliESDtrack.cxx:1438
 AliESDtrack.cxx:1439
 AliESDtrack.cxx:1440
 AliESDtrack.cxx:1441
 AliESDtrack.cxx:1442
 AliESDtrack.cxx:1443
 AliESDtrack.cxx:1444
 AliESDtrack.cxx:1445
 AliESDtrack.cxx:1446
 AliESDtrack.cxx:1447
 AliESDtrack.cxx:1448
 AliESDtrack.cxx:1449
 AliESDtrack.cxx:1450
 AliESDtrack.cxx:1451
 AliESDtrack.cxx:1452
 AliESDtrack.cxx:1453
 AliESDtrack.cxx:1454
 AliESDtrack.cxx:1455
 AliESDtrack.cxx:1456
 AliESDtrack.cxx:1457
 AliESDtrack.cxx:1458
 AliESDtrack.cxx:1459
 AliESDtrack.cxx:1460
 AliESDtrack.cxx:1461
 AliESDtrack.cxx:1462
 AliESDtrack.cxx:1463
 AliESDtrack.cxx:1464
 AliESDtrack.cxx:1465
 AliESDtrack.cxx:1466
 AliESDtrack.cxx:1467
 AliESDtrack.cxx:1468
 AliESDtrack.cxx:1469
 AliESDtrack.cxx:1470
 AliESDtrack.cxx:1471
 AliESDtrack.cxx:1472
 AliESDtrack.cxx:1473
 AliESDtrack.cxx:1474
 AliESDtrack.cxx:1475
 AliESDtrack.cxx:1476
 AliESDtrack.cxx:1477
 AliESDtrack.cxx:1478
 AliESDtrack.cxx:1479
 AliESDtrack.cxx:1480
 AliESDtrack.cxx:1481
 AliESDtrack.cxx:1482
 AliESDtrack.cxx:1483
 AliESDtrack.cxx:1484
 AliESDtrack.cxx:1485
 AliESDtrack.cxx:1486
 AliESDtrack.cxx:1487
 AliESDtrack.cxx:1488
 AliESDtrack.cxx:1489
 AliESDtrack.cxx:1490
 AliESDtrack.cxx:1491
 AliESDtrack.cxx:1492
 AliESDtrack.cxx:1493
 AliESDtrack.cxx:1494
 AliESDtrack.cxx:1495
 AliESDtrack.cxx:1496
 AliESDtrack.cxx:1497
 AliESDtrack.cxx:1498
 AliESDtrack.cxx:1499
 AliESDtrack.cxx:1500
 AliESDtrack.cxx:1501
 AliESDtrack.cxx:1502
 AliESDtrack.cxx:1503
 AliESDtrack.cxx:1504
 AliESDtrack.cxx:1505
 AliESDtrack.cxx:1506
 AliESDtrack.cxx:1507
 AliESDtrack.cxx:1508
 AliESDtrack.cxx:1509
 AliESDtrack.cxx:1510
 AliESDtrack.cxx:1511
 AliESDtrack.cxx:1512
 AliESDtrack.cxx:1513
 AliESDtrack.cxx:1514
 AliESDtrack.cxx:1515
 AliESDtrack.cxx:1516
 AliESDtrack.cxx:1517
 AliESDtrack.cxx:1518
 AliESDtrack.cxx:1519
 AliESDtrack.cxx:1520
 AliESDtrack.cxx:1521
 AliESDtrack.cxx:1522
 AliESDtrack.cxx:1523
 AliESDtrack.cxx:1524
 AliESDtrack.cxx:1525
 AliESDtrack.cxx:1526
 AliESDtrack.cxx:1527
 AliESDtrack.cxx:1528
 AliESDtrack.cxx:1529
 AliESDtrack.cxx:1530
 AliESDtrack.cxx:1531
 AliESDtrack.cxx:1532
 AliESDtrack.cxx:1533
 AliESDtrack.cxx:1534
 AliESDtrack.cxx:1535
 AliESDtrack.cxx:1536
 AliESDtrack.cxx:1537
 AliESDtrack.cxx:1538
 AliESDtrack.cxx:1539
 AliESDtrack.cxx:1540
 AliESDtrack.cxx:1541
 AliESDtrack.cxx:1542
 AliESDtrack.cxx:1543
 AliESDtrack.cxx:1544
 AliESDtrack.cxx:1545
 AliESDtrack.cxx:1546
 AliESDtrack.cxx:1547
 AliESDtrack.cxx:1548
 AliESDtrack.cxx:1549
 AliESDtrack.cxx:1550
 AliESDtrack.cxx:1551
 AliESDtrack.cxx:1552
 AliESDtrack.cxx:1553
 AliESDtrack.cxx:1554
 AliESDtrack.cxx:1555
 AliESDtrack.cxx:1556
 AliESDtrack.cxx:1557
 AliESDtrack.cxx:1558
 AliESDtrack.cxx:1559
 AliESDtrack.cxx:1560
 AliESDtrack.cxx:1561
 AliESDtrack.cxx:1562
 AliESDtrack.cxx:1563
 AliESDtrack.cxx:1564
 AliESDtrack.cxx:1565
 AliESDtrack.cxx:1566
 AliESDtrack.cxx:1567
 AliESDtrack.cxx:1568
 AliESDtrack.cxx:1569
 AliESDtrack.cxx:1570
 AliESDtrack.cxx:1571
 AliESDtrack.cxx:1572
 AliESDtrack.cxx:1573
 AliESDtrack.cxx:1574
 AliESDtrack.cxx:1575
 AliESDtrack.cxx:1576
 AliESDtrack.cxx:1577
 AliESDtrack.cxx:1578
 AliESDtrack.cxx:1579
 AliESDtrack.cxx:1580
 AliESDtrack.cxx:1581
 AliESDtrack.cxx:1582
 AliESDtrack.cxx:1583
 AliESDtrack.cxx:1584
 AliESDtrack.cxx:1585
 AliESDtrack.cxx:1586
 AliESDtrack.cxx:1587
 AliESDtrack.cxx:1588
 AliESDtrack.cxx:1589
 AliESDtrack.cxx:1590
 AliESDtrack.cxx:1591
 AliESDtrack.cxx:1592
 AliESDtrack.cxx:1593
 AliESDtrack.cxx:1594
 AliESDtrack.cxx:1595
 AliESDtrack.cxx:1596
 AliESDtrack.cxx:1597
 AliESDtrack.cxx:1598
 AliESDtrack.cxx:1599
 AliESDtrack.cxx:1600
 AliESDtrack.cxx:1601
 AliESDtrack.cxx:1602
 AliESDtrack.cxx:1603
 AliESDtrack.cxx:1604
 AliESDtrack.cxx:1605
 AliESDtrack.cxx:1606
 AliESDtrack.cxx:1607
 AliESDtrack.cxx:1608
 AliESDtrack.cxx:1609
 AliESDtrack.cxx:1610
 AliESDtrack.cxx:1611
 AliESDtrack.cxx:1612
 AliESDtrack.cxx:1613
 AliESDtrack.cxx:1614
 AliESDtrack.cxx:1615
 AliESDtrack.cxx:1616
 AliESDtrack.cxx:1617
 AliESDtrack.cxx:1618
 AliESDtrack.cxx:1619
 AliESDtrack.cxx:1620
 AliESDtrack.cxx:1621
 AliESDtrack.cxx:1622
 AliESDtrack.cxx:1623
 AliESDtrack.cxx:1624
 AliESDtrack.cxx:1625
 AliESDtrack.cxx:1626
 AliESDtrack.cxx:1627
 AliESDtrack.cxx:1628
 AliESDtrack.cxx:1629
 AliESDtrack.cxx:1630
 AliESDtrack.cxx:1631
 AliESDtrack.cxx:1632
 AliESDtrack.cxx:1633
 AliESDtrack.cxx:1634
 AliESDtrack.cxx:1635
 AliESDtrack.cxx:1636
 AliESDtrack.cxx:1637
 AliESDtrack.cxx:1638
 AliESDtrack.cxx:1639
 AliESDtrack.cxx:1640
 AliESDtrack.cxx:1641
 AliESDtrack.cxx:1642
 AliESDtrack.cxx:1643
 AliESDtrack.cxx:1644
 AliESDtrack.cxx:1645
 AliESDtrack.cxx:1646
 AliESDtrack.cxx:1647
 AliESDtrack.cxx:1648
 AliESDtrack.cxx:1649
 AliESDtrack.cxx:1650
 AliESDtrack.cxx:1651
 AliESDtrack.cxx:1652
 AliESDtrack.cxx:1653
 AliESDtrack.cxx:1654
 AliESDtrack.cxx:1655
 AliESDtrack.cxx:1656
 AliESDtrack.cxx:1657
 AliESDtrack.cxx:1658
 AliESDtrack.cxx:1659
 AliESDtrack.cxx:1660
 AliESDtrack.cxx:1661
 AliESDtrack.cxx:1662
 AliESDtrack.cxx:1663
 AliESDtrack.cxx:1664
 AliESDtrack.cxx:1665
 AliESDtrack.cxx:1666
 AliESDtrack.cxx:1667
 AliESDtrack.cxx:1668
 AliESDtrack.cxx:1669
 AliESDtrack.cxx:1670
 AliESDtrack.cxx:1671
 AliESDtrack.cxx:1672
 AliESDtrack.cxx:1673
 AliESDtrack.cxx:1674
 AliESDtrack.cxx:1675
 AliESDtrack.cxx:1676
 AliESDtrack.cxx:1677
 AliESDtrack.cxx:1678
 AliESDtrack.cxx:1679
 AliESDtrack.cxx:1680
 AliESDtrack.cxx:1681
 AliESDtrack.cxx:1682
 AliESDtrack.cxx:1683
 AliESDtrack.cxx:1684
 AliESDtrack.cxx:1685
 AliESDtrack.cxx:1686
 AliESDtrack.cxx:1687
 AliESDtrack.cxx:1688
 AliESDtrack.cxx:1689
 AliESDtrack.cxx:1690
 AliESDtrack.cxx:1691
 AliESDtrack.cxx:1692
 AliESDtrack.cxx:1693
 AliESDtrack.cxx:1694
 AliESDtrack.cxx:1695
 AliESDtrack.cxx:1696
 AliESDtrack.cxx:1697
 AliESDtrack.cxx:1698
 AliESDtrack.cxx:1699
 AliESDtrack.cxx:1700
 AliESDtrack.cxx:1701
 AliESDtrack.cxx:1702
 AliESDtrack.cxx:1703
 AliESDtrack.cxx:1704
 AliESDtrack.cxx:1705
 AliESDtrack.cxx:1706
 AliESDtrack.cxx:1707
 AliESDtrack.cxx:1708
 AliESDtrack.cxx:1709
 AliESDtrack.cxx:1710
 AliESDtrack.cxx:1711
 AliESDtrack.cxx:1712
 AliESDtrack.cxx:1713
 AliESDtrack.cxx:1714
 AliESDtrack.cxx:1715
 AliESDtrack.cxx:1716
 AliESDtrack.cxx:1717
 AliESDtrack.cxx:1718
 AliESDtrack.cxx:1719
 AliESDtrack.cxx:1720
 AliESDtrack.cxx:1721
 AliESDtrack.cxx:1722
 AliESDtrack.cxx:1723
 AliESDtrack.cxx:1724
 AliESDtrack.cxx:1725
 AliESDtrack.cxx:1726
 AliESDtrack.cxx:1727
 AliESDtrack.cxx:1728
 AliESDtrack.cxx:1729
 AliESDtrack.cxx:1730
 AliESDtrack.cxx:1731
 AliESDtrack.cxx:1732
 AliESDtrack.cxx:1733
 AliESDtrack.cxx:1734
 AliESDtrack.cxx:1735
 AliESDtrack.cxx:1736
 AliESDtrack.cxx:1737
 AliESDtrack.cxx:1738
 AliESDtrack.cxx:1739
 AliESDtrack.cxx:1740
 AliESDtrack.cxx:1741
 AliESDtrack.cxx:1742
 AliESDtrack.cxx:1743
 AliESDtrack.cxx:1744
 AliESDtrack.cxx:1745
 AliESDtrack.cxx:1746
 AliESDtrack.cxx:1747
 AliESDtrack.cxx:1748
 AliESDtrack.cxx:1749
 AliESDtrack.cxx:1750
 AliESDtrack.cxx:1751
 AliESDtrack.cxx:1752
 AliESDtrack.cxx:1753
 AliESDtrack.cxx:1754
 AliESDtrack.cxx:1755
 AliESDtrack.cxx:1756
 AliESDtrack.cxx:1757
 AliESDtrack.cxx:1758
 AliESDtrack.cxx:1759
 AliESDtrack.cxx:1760
 AliESDtrack.cxx:1761
 AliESDtrack.cxx:1762
 AliESDtrack.cxx:1763
 AliESDtrack.cxx:1764
 AliESDtrack.cxx:1765
 AliESDtrack.cxx:1766
 AliESDtrack.cxx:1767
 AliESDtrack.cxx:1768
 AliESDtrack.cxx:1769
 AliESDtrack.cxx:1770
 AliESDtrack.cxx:1771
 AliESDtrack.cxx:1772
 AliESDtrack.cxx:1773
 AliESDtrack.cxx:1774
 AliESDtrack.cxx:1775
 AliESDtrack.cxx:1776
 AliESDtrack.cxx:1777
 AliESDtrack.cxx:1778
 AliESDtrack.cxx:1779
 AliESDtrack.cxx:1780
 AliESDtrack.cxx:1781
 AliESDtrack.cxx:1782
 AliESDtrack.cxx:1783
 AliESDtrack.cxx:1784
 AliESDtrack.cxx:1785
 AliESDtrack.cxx:1786
 AliESDtrack.cxx:1787
 AliESDtrack.cxx:1788
 AliESDtrack.cxx:1789
 AliESDtrack.cxx:1790
 AliESDtrack.cxx:1791
 AliESDtrack.cxx:1792
 AliESDtrack.cxx:1793
 AliESDtrack.cxx:1794
 AliESDtrack.cxx:1795
 AliESDtrack.cxx:1796
 AliESDtrack.cxx:1797
 AliESDtrack.cxx:1798
 AliESDtrack.cxx:1799
 AliESDtrack.cxx:1800
 AliESDtrack.cxx:1801
 AliESDtrack.cxx:1802
 AliESDtrack.cxx:1803
 AliESDtrack.cxx:1804
 AliESDtrack.cxx:1805
 AliESDtrack.cxx:1806
 AliESDtrack.cxx:1807
 AliESDtrack.cxx:1808
 AliESDtrack.cxx:1809
 AliESDtrack.cxx:1810
 AliESDtrack.cxx:1811
 AliESDtrack.cxx:1812
 AliESDtrack.cxx:1813
 AliESDtrack.cxx:1814
 AliESDtrack.cxx:1815
 AliESDtrack.cxx:1816
 AliESDtrack.cxx:1817
 AliESDtrack.cxx:1818
 AliESDtrack.cxx:1819
 AliESDtrack.cxx:1820
 AliESDtrack.cxx:1821
 AliESDtrack.cxx:1822
 AliESDtrack.cxx:1823
 AliESDtrack.cxx:1824
 AliESDtrack.cxx:1825
 AliESDtrack.cxx:1826
 AliESDtrack.cxx:1827
 AliESDtrack.cxx:1828
 AliESDtrack.cxx:1829
 AliESDtrack.cxx:1830
 AliESDtrack.cxx:1831
 AliESDtrack.cxx:1832
 AliESDtrack.cxx:1833
 AliESDtrack.cxx:1834
 AliESDtrack.cxx:1835
 AliESDtrack.cxx:1836
 AliESDtrack.cxx:1837
 AliESDtrack.cxx:1838
 AliESDtrack.cxx:1839
 AliESDtrack.cxx:1840
 AliESDtrack.cxx:1841
 AliESDtrack.cxx:1842
 AliESDtrack.cxx:1843
 AliESDtrack.cxx:1844
 AliESDtrack.cxx:1845
 AliESDtrack.cxx:1846
 AliESDtrack.cxx:1847
 AliESDtrack.cxx:1848
 AliESDtrack.cxx:1849
 AliESDtrack.cxx:1850
 AliESDtrack.cxx:1851
 AliESDtrack.cxx:1852
 AliESDtrack.cxx:1853
 AliESDtrack.cxx:1854
 AliESDtrack.cxx:1855
 AliESDtrack.cxx:1856
 AliESDtrack.cxx:1857
 AliESDtrack.cxx:1858
 AliESDtrack.cxx:1859
 AliESDtrack.cxx:1860
 AliESDtrack.cxx:1861
 AliESDtrack.cxx:1862
 AliESDtrack.cxx:1863
 AliESDtrack.cxx:1864
 AliESDtrack.cxx:1865
 AliESDtrack.cxx:1866
 AliESDtrack.cxx:1867
 AliESDtrack.cxx:1868
 AliESDtrack.cxx:1869
 AliESDtrack.cxx:1870
 AliESDtrack.cxx:1871
 AliESDtrack.cxx:1872
 AliESDtrack.cxx:1873
 AliESDtrack.cxx:1874
 AliESDtrack.cxx:1875
 AliESDtrack.cxx:1876
 AliESDtrack.cxx:1877
 AliESDtrack.cxx:1878
 AliESDtrack.cxx:1879
 AliESDtrack.cxx:1880
 AliESDtrack.cxx:1881
 AliESDtrack.cxx:1882
 AliESDtrack.cxx:1883
 AliESDtrack.cxx:1884
 AliESDtrack.cxx:1885
 AliESDtrack.cxx:1886
 AliESDtrack.cxx:1887
 AliESDtrack.cxx:1888
 AliESDtrack.cxx:1889
 AliESDtrack.cxx:1890
 AliESDtrack.cxx:1891
 AliESDtrack.cxx:1892
 AliESDtrack.cxx:1893
 AliESDtrack.cxx:1894
 AliESDtrack.cxx:1895
 AliESDtrack.cxx:1896
 AliESDtrack.cxx:1897
 AliESDtrack.cxx:1898
 AliESDtrack.cxx:1899
 AliESDtrack.cxx:1900
 AliESDtrack.cxx:1901
 AliESDtrack.cxx:1902
 AliESDtrack.cxx:1903
 AliESDtrack.cxx:1904
 AliESDtrack.cxx:1905
 AliESDtrack.cxx:1906
 AliESDtrack.cxx:1907
 AliESDtrack.cxx:1908
 AliESDtrack.cxx:1909
 AliESDtrack.cxx:1910
 AliESDtrack.cxx:1911
 AliESDtrack.cxx:1912
 AliESDtrack.cxx:1913
 AliESDtrack.cxx:1914
 AliESDtrack.cxx:1915
 AliESDtrack.cxx:1916
 AliESDtrack.cxx:1917
 AliESDtrack.cxx:1918
 AliESDtrack.cxx:1919
 AliESDtrack.cxx:1920
 AliESDtrack.cxx:1921
 AliESDtrack.cxx:1922
 AliESDtrack.cxx:1923
 AliESDtrack.cxx:1924
 AliESDtrack.cxx:1925
 AliESDtrack.cxx:1926
 AliESDtrack.cxx:1927
 AliESDtrack.cxx:1928
 AliESDtrack.cxx:1929
 AliESDtrack.cxx:1930
 AliESDtrack.cxx:1931
 AliESDtrack.cxx:1932
 AliESDtrack.cxx:1933
 AliESDtrack.cxx:1934
 AliESDtrack.cxx:1935
 AliESDtrack.cxx:1936
 AliESDtrack.cxx:1937
 AliESDtrack.cxx:1938
 AliESDtrack.cxx:1939
 AliESDtrack.cxx:1940
 AliESDtrack.cxx:1941
 AliESDtrack.cxx:1942
 AliESDtrack.cxx:1943
 AliESDtrack.cxx:1944
 AliESDtrack.cxx:1945
 AliESDtrack.cxx:1946
 AliESDtrack.cxx:1947
 AliESDtrack.cxx:1948
 AliESDtrack.cxx:1949
 AliESDtrack.cxx:1950
 AliESDtrack.cxx:1951
 AliESDtrack.cxx:1952
 AliESDtrack.cxx:1953
 AliESDtrack.cxx:1954
 AliESDtrack.cxx:1955
 AliESDtrack.cxx:1956
 AliESDtrack.cxx:1957
 AliESDtrack.cxx:1958
 AliESDtrack.cxx:1959
 AliESDtrack.cxx:1960
 AliESDtrack.cxx:1961
 AliESDtrack.cxx:1962
 AliESDtrack.cxx:1963
 AliESDtrack.cxx:1964
 AliESDtrack.cxx:1965
 AliESDtrack.cxx:1966
 AliESDtrack.cxx:1967
 AliESDtrack.cxx:1968
 AliESDtrack.cxx:1969
 AliESDtrack.cxx:1970
 AliESDtrack.cxx:1971
 AliESDtrack.cxx:1972
 AliESDtrack.cxx:1973
 AliESDtrack.cxx:1974
 AliESDtrack.cxx:1975
 AliESDtrack.cxx:1976
 AliESDtrack.cxx:1977
 AliESDtrack.cxx:1978
 AliESDtrack.cxx:1979
 AliESDtrack.cxx:1980
 AliESDtrack.cxx:1981
 AliESDtrack.cxx:1982
 AliESDtrack.cxx:1983
 AliESDtrack.cxx:1984
 AliESDtrack.cxx:1985
 AliESDtrack.cxx:1986
 AliESDtrack.cxx:1987
 AliESDtrack.cxx:1988
 AliESDtrack.cxx:1989
 AliESDtrack.cxx:1990
 AliESDtrack.cxx:1991
 AliESDtrack.cxx:1992
 AliESDtrack.cxx:1993
 AliESDtrack.cxx:1994
 AliESDtrack.cxx:1995
 AliESDtrack.cxx:1996
 AliESDtrack.cxx:1997
 AliESDtrack.cxx:1998
 AliESDtrack.cxx:1999
 AliESDtrack.cxx:2000
 AliESDtrack.cxx:2001
 AliESDtrack.cxx:2002
 AliESDtrack.cxx:2003
 AliESDtrack.cxx:2004
 AliESDtrack.cxx:2005
 AliESDtrack.cxx:2006
 AliESDtrack.cxx:2007
 AliESDtrack.cxx:2008
 AliESDtrack.cxx:2009
 AliESDtrack.cxx:2010
 AliESDtrack.cxx:2011
 AliESDtrack.cxx:2012
 AliESDtrack.cxx:2013
 AliESDtrack.cxx:2014
 AliESDtrack.cxx:2015
 AliESDtrack.cxx:2016
 AliESDtrack.cxx:2017
 AliESDtrack.cxx:2018
 AliESDtrack.cxx:2019
 AliESDtrack.cxx:2020
 AliESDtrack.cxx:2021
 AliESDtrack.cxx:2022
 AliESDtrack.cxx:2023
 AliESDtrack.cxx:2024
 AliESDtrack.cxx:2025
 AliESDtrack.cxx:2026
 AliESDtrack.cxx:2027
 AliESDtrack.cxx:2028
 AliESDtrack.cxx:2029
 AliESDtrack.cxx:2030
 AliESDtrack.cxx:2031
 AliESDtrack.cxx:2032
 AliESDtrack.cxx:2033
 AliESDtrack.cxx:2034
 AliESDtrack.cxx:2035
 AliESDtrack.cxx:2036
 AliESDtrack.cxx:2037
 AliESDtrack.cxx:2038
 AliESDtrack.cxx:2039
 AliESDtrack.cxx:2040
 AliESDtrack.cxx:2041
 AliESDtrack.cxx:2042
 AliESDtrack.cxx:2043
 AliESDtrack.cxx:2044
 AliESDtrack.cxx:2045
 AliESDtrack.cxx:2046
 AliESDtrack.cxx:2047
 AliESDtrack.cxx:2048
 AliESDtrack.cxx:2049
 AliESDtrack.cxx:2050
 AliESDtrack.cxx:2051
 AliESDtrack.cxx:2052
 AliESDtrack.cxx:2053
 AliESDtrack.cxx:2054
 AliESDtrack.cxx:2055
 AliESDtrack.cxx:2056
 AliESDtrack.cxx:2057
 AliESDtrack.cxx:2058
 AliESDtrack.cxx:2059
 AliESDtrack.cxx:2060
 AliESDtrack.cxx:2061
 AliESDtrack.cxx:2062
 AliESDtrack.cxx:2063
 AliESDtrack.cxx:2064
 AliESDtrack.cxx:2065
 AliESDtrack.cxx:2066
 AliESDtrack.cxx:2067
 AliESDtrack.cxx:2068
 AliESDtrack.cxx:2069
 AliESDtrack.cxx:2070
 AliESDtrack.cxx:2071
 AliESDtrack.cxx:2072
 AliESDtrack.cxx:2073
 AliESDtrack.cxx:2074
 AliESDtrack.cxx:2075
 AliESDtrack.cxx:2076
 AliESDtrack.cxx:2077
 AliESDtrack.cxx:2078
 AliESDtrack.cxx:2079
 AliESDtrack.cxx:2080
 AliESDtrack.cxx:2081
 AliESDtrack.cxx:2082
 AliESDtrack.cxx:2083
 AliESDtrack.cxx:2084
 AliESDtrack.cxx:2085
 AliESDtrack.cxx:2086
 AliESDtrack.cxx:2087
 AliESDtrack.cxx:2088
 AliESDtrack.cxx:2089
 AliESDtrack.cxx:2090
 AliESDtrack.cxx:2091
 AliESDtrack.cxx:2092
 AliESDtrack.cxx:2093
 AliESDtrack.cxx:2094
 AliESDtrack.cxx:2095
 AliESDtrack.cxx:2096
 AliESDtrack.cxx:2097
 AliESDtrack.cxx:2098
 AliESDtrack.cxx:2099
 AliESDtrack.cxx:2100
 AliESDtrack.cxx:2101
 AliESDtrack.cxx:2102
 AliESDtrack.cxx:2103
 AliESDtrack.cxx:2104
 AliESDtrack.cxx:2105
 AliESDtrack.cxx:2106
 AliESDtrack.cxx:2107
 AliESDtrack.cxx:2108
 AliESDtrack.cxx:2109
 AliESDtrack.cxx:2110
 AliESDtrack.cxx:2111
 AliESDtrack.cxx:2112
 AliESDtrack.cxx:2113
 AliESDtrack.cxx:2114
 AliESDtrack.cxx:2115
 AliESDtrack.cxx:2116
 AliESDtrack.cxx:2117
 AliESDtrack.cxx:2118
 AliESDtrack.cxx:2119
 AliESDtrack.cxx:2120
 AliESDtrack.cxx:2121
 AliESDtrack.cxx:2122
 AliESDtrack.cxx:2123
 AliESDtrack.cxx:2124
 AliESDtrack.cxx:2125
 AliESDtrack.cxx:2126
 AliESDtrack.cxx:2127
 AliESDtrack.cxx:2128
 AliESDtrack.cxx:2129
 AliESDtrack.cxx:2130
 AliESDtrack.cxx:2131
 AliESDtrack.cxx:2132
 AliESDtrack.cxx:2133
 AliESDtrack.cxx:2134
 AliESDtrack.cxx:2135
 AliESDtrack.cxx:2136
 AliESDtrack.cxx:2137
 AliESDtrack.cxx:2138
 AliESDtrack.cxx:2139
 AliESDtrack.cxx:2140
 AliESDtrack.cxx:2141
 AliESDtrack.cxx:2142
 AliESDtrack.cxx:2143
 AliESDtrack.cxx:2144
 AliESDtrack.cxx:2145
 AliESDtrack.cxx:2146
 AliESDtrack.cxx:2147
 AliESDtrack.cxx:2148
 AliESDtrack.cxx:2149
 AliESDtrack.cxx:2150
 AliESDtrack.cxx:2151
 AliESDtrack.cxx:2152
 AliESDtrack.cxx:2153
 AliESDtrack.cxx:2154
 AliESDtrack.cxx:2155
 AliESDtrack.cxx:2156
 AliESDtrack.cxx:2157
 AliESDtrack.cxx:2158
 AliESDtrack.cxx:2159
 AliESDtrack.cxx:2160
 AliESDtrack.cxx:2161
 AliESDtrack.cxx:2162
 AliESDtrack.cxx:2163
 AliESDtrack.cxx:2164
 AliESDtrack.cxx:2165
 AliESDtrack.cxx:2166
 AliESDtrack.cxx:2167
 AliESDtrack.cxx:2168
 AliESDtrack.cxx:2169
 AliESDtrack.cxx:2170
 AliESDtrack.cxx:2171
 AliESDtrack.cxx:2172
 AliESDtrack.cxx:2173
 AliESDtrack.cxx:2174
 AliESDtrack.cxx:2175
 AliESDtrack.cxx:2176
 AliESDtrack.cxx:2177
 AliESDtrack.cxx:2178
 AliESDtrack.cxx:2179
 AliESDtrack.cxx:2180
 AliESDtrack.cxx:2181
 AliESDtrack.cxx:2182
 AliESDtrack.cxx:2183
 AliESDtrack.cxx:2184
 AliESDtrack.cxx:2185
 AliESDtrack.cxx:2186
 AliESDtrack.cxx:2187
 AliESDtrack.cxx:2188
 AliESDtrack.cxx:2189
 AliESDtrack.cxx:2190
 AliESDtrack.cxx:2191
 AliESDtrack.cxx:2192
 AliESDtrack.cxx:2193
 AliESDtrack.cxx:2194
 AliESDtrack.cxx:2195
 AliESDtrack.cxx:2196
 AliESDtrack.cxx:2197
 AliESDtrack.cxx:2198
 AliESDtrack.cxx:2199
 AliESDtrack.cxx:2200
 AliESDtrack.cxx:2201
 AliESDtrack.cxx:2202
 AliESDtrack.cxx:2203
 AliESDtrack.cxx:2204
 AliESDtrack.cxx:2205
 AliESDtrack.cxx:2206
 AliESDtrack.cxx:2207
 AliESDtrack.cxx:2208
 AliESDtrack.cxx:2209
 AliESDtrack.cxx:2210
 AliESDtrack.cxx:2211
 AliESDtrack.cxx:2212
 AliESDtrack.cxx:2213
 AliESDtrack.cxx:2214
 AliESDtrack.cxx:2215
 AliESDtrack.cxx:2216
 AliESDtrack.cxx:2217
 AliESDtrack.cxx:2218
 AliESDtrack.cxx:2219
 AliESDtrack.cxx:2220
 AliESDtrack.cxx:2221
 AliESDtrack.cxx:2222
 AliESDtrack.cxx:2223
 AliESDtrack.cxx:2224
 AliESDtrack.cxx:2225
 AliESDtrack.cxx:2226
 AliESDtrack.cxx:2227
 AliESDtrack.cxx:2228
 AliESDtrack.cxx:2229
 AliESDtrack.cxx:2230
 AliESDtrack.cxx:2231
 AliESDtrack.cxx:2232
 AliESDtrack.cxx:2233
 AliESDtrack.cxx:2234
 AliESDtrack.cxx:2235
 AliESDtrack.cxx:2236
 AliESDtrack.cxx:2237
 AliESDtrack.cxx:2238
 AliESDtrack.cxx:2239
 AliESDtrack.cxx:2240
 AliESDtrack.cxx:2241
 AliESDtrack.cxx:2242
 AliESDtrack.cxx:2243
 AliESDtrack.cxx:2244
 AliESDtrack.cxx:2245
 AliESDtrack.cxx:2246
 AliESDtrack.cxx:2247
 AliESDtrack.cxx:2248
 AliESDtrack.cxx:2249
 AliESDtrack.cxx:2250
 AliESDtrack.cxx:2251
 AliESDtrack.cxx:2252
 AliESDtrack.cxx:2253
 AliESDtrack.cxx:2254
 AliESDtrack.cxx:2255
 AliESDtrack.cxx:2256
 AliESDtrack.cxx:2257
 AliESDtrack.cxx:2258
 AliESDtrack.cxx:2259
 AliESDtrack.cxx:2260
 AliESDtrack.cxx:2261
 AliESDtrack.cxx:2262
 AliESDtrack.cxx:2263
 AliESDtrack.cxx:2264
 AliESDtrack.cxx:2265
 AliESDtrack.cxx:2266
 AliESDtrack.cxx:2267
 AliESDtrack.cxx:2268
 AliESDtrack.cxx:2269
 AliESDtrack.cxx:2270
 AliESDtrack.cxx:2271
 AliESDtrack.cxx:2272
 AliESDtrack.cxx:2273
 AliESDtrack.cxx:2274
 AliESDtrack.cxx:2275
 AliESDtrack.cxx:2276
 AliESDtrack.cxx:2277
 AliESDtrack.cxx:2278
 AliESDtrack.cxx:2279
 AliESDtrack.cxx:2280
 AliESDtrack.cxx:2281
 AliESDtrack.cxx:2282
 AliESDtrack.cxx:2283
 AliESDtrack.cxx:2284
 AliESDtrack.cxx:2285
 AliESDtrack.cxx:2286
 AliESDtrack.cxx:2287
 AliESDtrack.cxx:2288
 AliESDtrack.cxx:2289
 AliESDtrack.cxx:2290
 AliESDtrack.cxx:2291
 AliESDtrack.cxx:2292
 AliESDtrack.cxx:2293
 AliESDtrack.cxx:2294
 AliESDtrack.cxx:2295
 AliESDtrack.cxx:2296
 AliESDtrack.cxx:2297
 AliESDtrack.cxx:2298
 AliESDtrack.cxx:2299
 AliESDtrack.cxx:2300
 AliESDtrack.cxx:2301
 AliESDtrack.cxx:2302
 AliESDtrack.cxx:2303
 AliESDtrack.cxx:2304
 AliESDtrack.cxx:2305
 AliESDtrack.cxx:2306
 AliESDtrack.cxx:2307
 AliESDtrack.cxx:2308
 AliESDtrack.cxx:2309
 AliESDtrack.cxx:2310
 AliESDtrack.cxx:2311
 AliESDtrack.cxx:2312
 AliESDtrack.cxx:2313
 AliESDtrack.cxx:2314
 AliESDtrack.cxx:2315
 AliESDtrack.cxx:2316
 AliESDtrack.cxx:2317
 AliESDtrack.cxx:2318
 AliESDtrack.cxx:2319
 AliESDtrack.cxx:2320
 AliESDtrack.cxx:2321
 AliESDtrack.cxx:2322
 AliESDtrack.cxx:2323
 AliESDtrack.cxx:2324
 AliESDtrack.cxx:2325
 AliESDtrack.cxx:2326
 AliESDtrack.cxx:2327
 AliESDtrack.cxx:2328
 AliESDtrack.cxx:2329
 AliESDtrack.cxx:2330
 AliESDtrack.cxx:2331
 AliESDtrack.cxx:2332
 AliESDtrack.cxx:2333
 AliESDtrack.cxx:2334
 AliESDtrack.cxx:2335
 AliESDtrack.cxx:2336
 AliESDtrack.cxx:2337
 AliESDtrack.cxx:2338
 AliESDtrack.cxx:2339
 AliESDtrack.cxx:2340
 AliESDtrack.cxx:2341
 AliESDtrack.cxx:2342
 AliESDtrack.cxx:2343
 AliESDtrack.cxx:2344
 AliESDtrack.cxx:2345
 AliESDtrack.cxx:2346
 AliESDtrack.cxx:2347
 AliESDtrack.cxx:2348
 AliESDtrack.cxx:2349
 AliESDtrack.cxx:2350
 AliESDtrack.cxx:2351
 AliESDtrack.cxx:2352
 AliESDtrack.cxx:2353
 AliESDtrack.cxx:2354
 AliESDtrack.cxx:2355
 AliESDtrack.cxx:2356
 AliESDtrack.cxx:2357
 AliESDtrack.cxx:2358
 AliESDtrack.cxx:2359
 AliESDtrack.cxx:2360
 AliESDtrack.cxx:2361
 AliESDtrack.cxx:2362
 AliESDtrack.cxx:2363
 AliESDtrack.cxx:2364
 AliESDtrack.cxx:2365
 AliESDtrack.cxx:2366
 AliESDtrack.cxx:2367
 AliESDtrack.cxx:2368
 AliESDtrack.cxx:2369
 AliESDtrack.cxx:2370
 AliESDtrack.cxx:2371
 AliESDtrack.cxx:2372
 AliESDtrack.cxx:2373
 AliESDtrack.cxx:2374
 AliESDtrack.cxx:2375
 AliESDtrack.cxx:2376
 AliESDtrack.cxx:2377
 AliESDtrack.cxx:2378
 AliESDtrack.cxx:2379
 AliESDtrack.cxx:2380
 AliESDtrack.cxx:2381
 AliESDtrack.cxx:2382
 AliESDtrack.cxx:2383
 AliESDtrack.cxx:2384
 AliESDtrack.cxx:2385
 AliESDtrack.cxx:2386
 AliESDtrack.cxx:2387
 AliESDtrack.cxx:2388
 AliESDtrack.cxx:2389
 AliESDtrack.cxx:2390
 AliESDtrack.cxx:2391
 AliESDtrack.cxx:2392
 AliESDtrack.cxx:2393
 AliESDtrack.cxx:2394
 AliESDtrack.cxx:2395
 AliESDtrack.cxx:2396
 AliESDtrack.cxx:2397
 AliESDtrack.cxx:2398
 AliESDtrack.cxx:2399
 AliESDtrack.cxx:2400
 AliESDtrack.cxx:2401
 AliESDtrack.cxx:2402
 AliESDtrack.cxx:2403
 AliESDtrack.cxx:2404
 AliESDtrack.cxx:2405
 AliESDtrack.cxx:2406
 AliESDtrack.cxx:2407
 AliESDtrack.cxx:2408
 AliESDtrack.cxx:2409
 AliESDtrack.cxx:2410
 AliESDtrack.cxx:2411
 AliESDtrack.cxx:2412
 AliESDtrack.cxx:2413
 AliESDtrack.cxx:2414
 AliESDtrack.cxx:2415
 AliESDtrack.cxx:2416
 AliESDtrack.cxx:2417
 AliESDtrack.cxx:2418
 AliESDtrack.cxx:2419
 AliESDtrack.cxx:2420
 AliESDtrack.cxx:2421
 AliESDtrack.cxx:2422
 AliESDtrack.cxx:2423
 AliESDtrack.cxx:2424
 AliESDtrack.cxx:2425
 AliESDtrack.cxx:2426
 AliESDtrack.cxx:2427
 AliESDtrack.cxx:2428
 AliESDtrack.cxx:2429
 AliESDtrack.cxx:2430
 AliESDtrack.cxx:2431
 AliESDtrack.cxx:2432
 AliESDtrack.cxx:2433
 AliESDtrack.cxx:2434
 AliESDtrack.cxx:2435
 AliESDtrack.cxx:2436
 AliESDtrack.cxx:2437
 AliESDtrack.cxx:2438
 AliESDtrack.cxx:2439
 AliESDtrack.cxx:2440
 AliESDtrack.cxx:2441
 AliESDtrack.cxx:2442
 AliESDtrack.cxx:2443
 AliESDtrack.cxx:2444
 AliESDtrack.cxx:2445
 AliESDtrack.cxx:2446
 AliESDtrack.cxx:2447
 AliESDtrack.cxx:2448
 AliESDtrack.cxx:2449
 AliESDtrack.cxx:2450
 AliESDtrack.cxx:2451
 AliESDtrack.cxx:2452
 AliESDtrack.cxx:2453
 AliESDtrack.cxx:2454
 AliESDtrack.cxx:2455
 AliESDtrack.cxx:2456
 AliESDtrack.cxx:2457
 AliESDtrack.cxx:2458
 AliESDtrack.cxx:2459
 AliESDtrack.cxx:2460
 AliESDtrack.cxx:2461
 AliESDtrack.cxx:2462
 AliESDtrack.cxx:2463
 AliESDtrack.cxx:2464
 AliESDtrack.cxx:2465
 AliESDtrack.cxx:2466
 AliESDtrack.cxx:2467
 AliESDtrack.cxx:2468
 AliESDtrack.cxx:2469
 AliESDtrack.cxx:2470
 AliESDtrack.cxx:2471
 AliESDtrack.cxx:2472
 AliESDtrack.cxx:2473
 AliESDtrack.cxx:2474
 AliESDtrack.cxx:2475
 AliESDtrack.cxx:2476
 AliESDtrack.cxx:2477
 AliESDtrack.cxx:2478
 AliESDtrack.cxx:2479
 AliESDtrack.cxx:2480
 AliESDtrack.cxx:2481
 AliESDtrack.cxx:2482
 AliESDtrack.cxx:2483
 AliESDtrack.cxx:2484
 AliESDtrack.cxx:2485
 AliESDtrack.cxx:2486
 AliESDtrack.cxx:2487
 AliESDtrack.cxx:2488
 AliESDtrack.cxx:2489
 AliESDtrack.cxx:2490
 AliESDtrack.cxx:2491
 AliESDtrack.cxx:2492
 AliESDtrack.cxx:2493
 AliESDtrack.cxx:2494
 AliESDtrack.cxx:2495
 AliESDtrack.cxx:2496
 AliESDtrack.cxx:2497
 AliESDtrack.cxx:2498
 AliESDtrack.cxx:2499
 AliESDtrack.cxx:2500
 AliESDtrack.cxx:2501
 AliESDtrack.cxx:2502
 AliESDtrack.cxx:2503
 AliESDtrack.cxx:2504
 AliESDtrack.cxx:2505
 AliESDtrack.cxx:2506
 AliESDtrack.cxx:2507
 AliESDtrack.cxx:2508
 AliESDtrack.cxx:2509
 AliESDtrack.cxx:2510
 AliESDtrack.cxx:2511
 AliESDtrack.cxx:2512
 AliESDtrack.cxx:2513
 AliESDtrack.cxx:2514
 AliESDtrack.cxx:2515
 AliESDtrack.cxx:2516
 AliESDtrack.cxx:2517
 AliESDtrack.cxx:2518
 AliESDtrack.cxx:2519
 AliESDtrack.cxx:2520
 AliESDtrack.cxx:2521
 AliESDtrack.cxx:2522
 AliESDtrack.cxx:2523
 AliESDtrack.cxx:2524
 AliESDtrack.cxx:2525
 AliESDtrack.cxx:2526
 AliESDtrack.cxx:2527
 AliESDtrack.cxx:2528
 AliESDtrack.cxx:2529
 AliESDtrack.cxx:2530
 AliESDtrack.cxx:2531
 AliESDtrack.cxx:2532
 AliESDtrack.cxx:2533
 AliESDtrack.cxx:2534
 AliESDtrack.cxx:2535
 AliESDtrack.cxx:2536
 AliESDtrack.cxx:2537
 AliESDtrack.cxx:2538
 AliESDtrack.cxx:2539
 AliESDtrack.cxx:2540
 AliESDtrack.cxx:2541
 AliESDtrack.cxx:2542
 AliESDtrack.cxx:2543
 AliESDtrack.cxx:2544
 AliESDtrack.cxx:2545
 AliESDtrack.cxx:2546
 AliESDtrack.cxx:2547
 AliESDtrack.cxx:2548
 AliESDtrack.cxx:2549
 AliESDtrack.cxx:2550
 AliESDtrack.cxx:2551
 AliESDtrack.cxx:2552
 AliESDtrack.cxx:2553
 AliESDtrack.cxx:2554
 AliESDtrack.cxx:2555
 AliESDtrack.cxx:2556
 AliESDtrack.cxx:2557
 AliESDtrack.cxx:2558
 AliESDtrack.cxx:2559
 AliESDtrack.cxx:2560
 AliESDtrack.cxx:2561
 AliESDtrack.cxx:2562
 AliESDtrack.cxx:2563
 AliESDtrack.cxx:2564
 AliESDtrack.cxx:2565
 AliESDtrack.cxx:2566
 AliESDtrack.cxx:2567
 AliESDtrack.cxx:2568
 AliESDtrack.cxx:2569
 AliESDtrack.cxx:2570
 AliESDtrack.cxx:2571
 AliESDtrack.cxx:2572
 AliESDtrack.cxx:2573
 AliESDtrack.cxx:2574
 AliESDtrack.cxx:2575
 AliESDtrack.cxx:2576
 AliESDtrack.cxx:2577
 AliESDtrack.cxx:2578
 AliESDtrack.cxx:2579
 AliESDtrack.cxx:2580
 AliESDtrack.cxx:2581
 AliESDtrack.cxx:2582
 AliESDtrack.cxx:2583
 AliESDtrack.cxx:2584
 AliESDtrack.cxx:2585
 AliESDtrack.cxx:2586
 AliESDtrack.cxx:2587
 AliESDtrack.cxx:2588
 AliESDtrack.cxx:2589
 AliESDtrack.cxx:2590
 AliESDtrack.cxx:2591
 AliESDtrack.cxx:2592
 AliESDtrack.cxx:2593
 AliESDtrack.cxx:2594
 AliESDtrack.cxx:2595
 AliESDtrack.cxx:2596
 AliESDtrack.cxx:2597
 AliESDtrack.cxx:2598
 AliESDtrack.cxx:2599
 AliESDtrack.cxx:2600
 AliESDtrack.cxx:2601
 AliESDtrack.cxx:2602
 AliESDtrack.cxx:2603
 AliESDtrack.cxx:2604
 AliESDtrack.cxx:2605
 AliESDtrack.cxx:2606
 AliESDtrack.cxx:2607
 AliESDtrack.cxx:2608
 AliESDtrack.cxx:2609
 AliESDtrack.cxx:2610
 AliESDtrack.cxx:2611
 AliESDtrack.cxx:2612
 AliESDtrack.cxx:2613
 AliESDtrack.cxx:2614
 AliESDtrack.cxx:2615
 AliESDtrack.cxx:2616
 AliESDtrack.cxx:2617
 AliESDtrack.cxx:2618
 AliESDtrack.cxx:2619
 AliESDtrack.cxx:2620
 AliESDtrack.cxx:2621
 AliESDtrack.cxx:2622
 AliESDtrack.cxx:2623
 AliESDtrack.cxx:2624
 AliESDtrack.cxx:2625
 AliESDtrack.cxx:2626
 AliESDtrack.cxx:2627
 AliESDtrack.cxx:2628
 AliESDtrack.cxx:2629
 AliESDtrack.cxx:2630
 AliESDtrack.cxx:2631
 AliESDtrack.cxx:2632
 AliESDtrack.cxx:2633
 AliESDtrack.cxx:2634
 AliESDtrack.cxx:2635
 AliESDtrack.cxx:2636
 AliESDtrack.cxx:2637
 AliESDtrack.cxx:2638
 AliESDtrack.cxx:2639
 AliESDtrack.cxx:2640
 AliESDtrack.cxx:2641
 AliESDtrack.cxx:2642
 AliESDtrack.cxx:2643
 AliESDtrack.cxx:2644
 AliESDtrack.cxx:2645
 AliESDtrack.cxx:2646
 AliESDtrack.cxx:2647
 AliESDtrack.cxx:2648
 AliESDtrack.cxx:2649
 AliESDtrack.cxx:2650
 AliESDtrack.cxx:2651
 AliESDtrack.cxx:2652
 AliESDtrack.cxx:2653
 AliESDtrack.cxx:2654
 AliESDtrack.cxx:2655
 AliESDtrack.cxx:2656
 AliESDtrack.cxx:2657
 AliESDtrack.cxx:2658
 AliESDtrack.cxx:2659
 AliESDtrack.cxx:2660
 AliESDtrack.cxx:2661
 AliESDtrack.cxx:2662
 AliESDtrack.cxx:2663
 AliESDtrack.cxx:2664
 AliESDtrack.cxx:2665
 AliESDtrack.cxx:2666
 AliESDtrack.cxx:2667
 AliESDtrack.cxx:2668
 AliESDtrack.cxx:2669
 AliESDtrack.cxx:2670
 AliESDtrack.cxx:2671
 AliESDtrack.cxx:2672
 AliESDtrack.cxx:2673
 AliESDtrack.cxx:2674
 AliESDtrack.cxx:2675
 AliESDtrack.cxx:2676
 AliESDtrack.cxx:2677
 AliESDtrack.cxx:2678
 AliESDtrack.cxx:2679
 AliESDtrack.cxx:2680
 AliESDtrack.cxx:2681
 AliESDtrack.cxx:2682
 AliESDtrack.cxx:2683
 AliESDtrack.cxx:2684
 AliESDtrack.cxx:2685
 AliESDtrack.cxx:2686
 AliESDtrack.cxx:2687
 AliESDtrack.cxx:2688
 AliESDtrack.cxx:2689
 AliESDtrack.cxx:2690
 AliESDtrack.cxx:2691
 AliESDtrack.cxx:2692
 AliESDtrack.cxx:2693
 AliESDtrack.cxx:2694
 AliESDtrack.cxx:2695
 AliESDtrack.cxx:2696
 AliESDtrack.cxx:2697
 AliESDtrack.cxx:2698
 AliESDtrack.cxx:2699
 AliESDtrack.cxx:2700
 AliESDtrack.cxx:2701
 AliESDtrack.cxx:2702
 AliESDtrack.cxx:2703
 AliESDtrack.cxx:2704
 AliESDtrack.cxx:2705
 AliESDtrack.cxx:2706
 AliESDtrack.cxx:2707
 AliESDtrack.cxx:2708
 AliESDtrack.cxx:2709
 AliESDtrack.cxx:2710
 AliESDtrack.cxx:2711
 AliESDtrack.cxx:2712
 AliESDtrack.cxx:2713
 AliESDtrack.cxx:2714
 AliESDtrack.cxx:2715
 AliESDtrack.cxx:2716
 AliESDtrack.cxx:2717
 AliESDtrack.cxx:2718
 AliESDtrack.cxx:2719
 AliESDtrack.cxx:2720
 AliESDtrack.cxx:2721
 AliESDtrack.cxx:2722
 AliESDtrack.cxx:2723
 AliESDtrack.cxx:2724
 AliESDtrack.cxx:2725
 AliESDtrack.cxx:2726
 AliESDtrack.cxx:2727
 AliESDtrack.cxx:2728
 AliESDtrack.cxx:2729
 AliESDtrack.cxx:2730
 AliESDtrack.cxx:2731
 AliESDtrack.cxx:2732
 AliESDtrack.cxx:2733
 AliESDtrack.cxx:2734
 AliESDtrack.cxx:2735
 AliESDtrack.cxx:2736
 AliESDtrack.cxx:2737
 AliESDtrack.cxx:2738
 AliESDtrack.cxx:2739
 AliESDtrack.cxx:2740
 AliESDtrack.cxx:2741
 AliESDtrack.cxx:2742
 AliESDtrack.cxx:2743
 AliESDtrack.cxx:2744
 AliESDtrack.cxx:2745
 AliESDtrack.cxx:2746
 AliESDtrack.cxx:2747
 AliESDtrack.cxx:2748
 AliESDtrack.cxx:2749
 AliESDtrack.cxx:2750
 AliESDtrack.cxx:2751
 AliESDtrack.cxx:2752
 AliESDtrack.cxx:2753
 AliESDtrack.cxx:2754
 AliESDtrack.cxx:2755
 AliESDtrack.cxx:2756
 AliESDtrack.cxx:2757
 AliESDtrack.cxx:2758
 AliESDtrack.cxx:2759
 AliESDtrack.cxx:2760
 AliESDtrack.cxx:2761
 AliESDtrack.cxx:2762
 AliESDtrack.cxx:2763
 AliESDtrack.cxx:2764
 AliESDtrack.cxx:2765
 AliESDtrack.cxx:2766
 AliESDtrack.cxx:2767
 AliESDtrack.cxx:2768
 AliESDtrack.cxx:2769
 AliESDtrack.cxx:2770
 AliESDtrack.cxx:2771
 AliESDtrack.cxx:2772
 AliESDtrack.cxx:2773
 AliESDtrack.cxx:2774
 AliESDtrack.cxx:2775
 AliESDtrack.cxx:2776
 AliESDtrack.cxx:2777
 AliESDtrack.cxx:2778
 AliESDtrack.cxx:2779
 AliESDtrack.cxx:2780
 AliESDtrack.cxx:2781
 AliESDtrack.cxx:2782
 AliESDtrack.cxx:2783
 AliESDtrack.cxx:2784
 AliESDtrack.cxx:2785
 AliESDtrack.cxx:2786
 AliESDtrack.cxx:2787
 AliESDtrack.cxx:2788
 AliESDtrack.cxx:2789
 AliESDtrack.cxx:2790
 AliESDtrack.cxx:2791
 AliESDtrack.cxx:2792
 AliESDtrack.cxx:2793
 AliESDtrack.cxx:2794
 AliESDtrack.cxx:2795
 AliESDtrack.cxx:2796
 AliESDtrack.cxx:2797
 AliESDtrack.cxx:2798
 AliESDtrack.cxx:2799
 AliESDtrack.cxx:2800
 AliESDtrack.cxx:2801
 AliESDtrack.cxx:2802
 AliESDtrack.cxx:2803
 AliESDtrack.cxx:2804
 AliESDtrack.cxx:2805
 AliESDtrack.cxx:2806
 AliESDtrack.cxx:2807
 AliESDtrack.cxx:2808
 AliESDtrack.cxx:2809
 AliESDtrack.cxx:2810
 AliESDtrack.cxx:2811
 AliESDtrack.cxx:2812
 AliESDtrack.cxx:2813
 AliESDtrack.cxx:2814
 AliESDtrack.cxx:2815
 AliESDtrack.cxx:2816
 AliESDtrack.cxx:2817
 AliESDtrack.cxx:2818
 AliESDtrack.cxx:2819
 AliESDtrack.cxx:2820
 AliESDtrack.cxx:2821
 AliESDtrack.cxx:2822
 AliESDtrack.cxx:2823
 AliESDtrack.cxx:2824
 AliESDtrack.cxx:2825
 AliESDtrack.cxx:2826
 AliESDtrack.cxx:2827
 AliESDtrack.cxx:2828
 AliESDtrack.cxx:2829
 AliESDtrack.cxx:2830
 AliESDtrack.cxx:2831
 AliESDtrack.cxx:2832
 AliESDtrack.cxx:2833
 AliESDtrack.cxx:2834
 AliESDtrack.cxx:2835
 AliESDtrack.cxx:2836
 AliESDtrack.cxx:2837
 AliESDtrack.cxx:2838
 AliESDtrack.cxx:2839
 AliESDtrack.cxx:2840
 AliESDtrack.cxx:2841
 AliESDtrack.cxx:2842
 AliESDtrack.cxx:2843
 AliESDtrack.cxx:2844
 AliESDtrack.cxx:2845
 AliESDtrack.cxx:2846
 AliESDtrack.cxx:2847
 AliESDtrack.cxx:2848
 AliESDtrack.cxx:2849
 AliESDtrack.cxx:2850
 AliESDtrack.cxx:2851
 AliESDtrack.cxx:2852
 AliESDtrack.cxx:2853
 AliESDtrack.cxx:2854
 AliESDtrack.cxx:2855
 AliESDtrack.cxx:2856
 AliESDtrack.cxx:2857
 AliESDtrack.cxx:2858
 AliESDtrack.cxx:2859
 AliESDtrack.cxx:2860
 AliESDtrack.cxx:2861
 AliESDtrack.cxx:2862
 AliESDtrack.cxx:2863
 AliESDtrack.cxx:2864
 AliESDtrack.cxx:2865
 AliESDtrack.cxx:2866
 AliESDtrack.cxx:2867
 AliESDtrack.cxx:2868
 AliESDtrack.cxx:2869
 AliESDtrack.cxx:2870
 AliESDtrack.cxx:2871
 AliESDtrack.cxx:2872
 AliESDtrack.cxx:2873
 AliESDtrack.cxx:2874
 AliESDtrack.cxx:2875
 AliESDtrack.cxx:2876
 AliESDtrack.cxx:2877
 AliESDtrack.cxx:2878
 AliESDtrack.cxx:2879
 AliESDtrack.cxx:2880
 AliESDtrack.cxx:2881
 AliESDtrack.cxx:2882
 AliESDtrack.cxx:2883
 AliESDtrack.cxx:2884
 AliESDtrack.cxx:2885
 AliESDtrack.cxx:2886
 AliESDtrack.cxx:2887
 AliESDtrack.cxx:2888
 AliESDtrack.cxx:2889
 AliESDtrack.cxx:2890
 AliESDtrack.cxx:2891
 AliESDtrack.cxx:2892
 AliESDtrack.cxx:2893
 AliESDtrack.cxx:2894
 AliESDtrack.cxx:2895
 AliESDtrack.cxx:2896
 AliESDtrack.cxx:2897
 AliESDtrack.cxx:2898
 AliESDtrack.cxx:2899
 AliESDtrack.cxx:2900
 AliESDtrack.cxx:2901
 AliESDtrack.cxx:2902
 AliESDtrack.cxx:2903
 AliESDtrack.cxx:2904
 AliESDtrack.cxx:2905
 AliESDtrack.cxx:2906
 AliESDtrack.cxx:2907
 AliESDtrack.cxx:2908
 AliESDtrack.cxx:2909
 AliESDtrack.cxx:2910
 AliESDtrack.cxx:2911
 AliESDtrack.cxx:2912
 AliESDtrack.cxx:2913
 AliESDtrack.cxx:2914
 AliESDtrack.cxx:2915
 AliESDtrack.cxx:2916
 AliESDtrack.cxx:2917
 AliESDtrack.cxx:2918
 AliESDtrack.cxx:2919
 AliESDtrack.cxx:2920
 AliESDtrack.cxx:2921
 AliESDtrack.cxx:2922
 AliESDtrack.cxx:2923
 AliESDtrack.cxx:2924
 AliESDtrack.cxx:2925
 AliESDtrack.cxx:2926
 AliESDtrack.cxx:2927
 AliESDtrack.cxx:2928
 AliESDtrack.cxx:2929
 AliESDtrack.cxx:2930
 AliESDtrack.cxx:2931
 AliESDtrack.cxx:2932
 AliESDtrack.cxx:2933
 AliESDtrack.cxx:2934
 AliESDtrack.cxx:2935
 AliESDtrack.cxx:2936
 AliESDtrack.cxx:2937
 AliESDtrack.cxx:2938
 AliESDtrack.cxx:2939
 AliESDtrack.cxx:2940
 AliESDtrack.cxx:2941
 AliESDtrack.cxx:2942
 AliESDtrack.cxx:2943
 AliESDtrack.cxx:2944
 AliESDtrack.cxx:2945
 AliESDtrack.cxx:2946
 AliESDtrack.cxx:2947
 AliESDtrack.cxx:2948
 AliESDtrack.cxx:2949
 AliESDtrack.cxx:2950
 AliESDtrack.cxx:2951
 AliESDtrack.cxx:2952
 AliESDtrack.cxx:2953
 AliESDtrack.cxx:2954
 AliESDtrack.cxx:2955
 AliESDtrack.cxx:2956
 AliESDtrack.cxx:2957
 AliESDtrack.cxx:2958
 AliESDtrack.cxx:2959
 AliESDtrack.cxx:2960
 AliESDtrack.cxx:2961
 AliESDtrack.cxx:2962
 AliESDtrack.cxx:2963
 AliESDtrack.cxx:2964
 AliESDtrack.cxx:2965
 AliESDtrack.cxx:2966
 AliESDtrack.cxx:2967
 AliESDtrack.cxx:2968
 AliESDtrack.cxx:2969
 AliESDtrack.cxx:2970
 AliESDtrack.cxx:2971
 AliESDtrack.cxx:2972
 AliESDtrack.cxx:2973
 AliESDtrack.cxx:2974
 AliESDtrack.cxx:2975
 AliESDtrack.cxx:2976
 AliESDtrack.cxx:2977
 AliESDtrack.cxx:2978
 AliESDtrack.cxx:2979
 AliESDtrack.cxx:2980
 AliESDtrack.cxx:2981
 AliESDtrack.cxx:2982
 AliESDtrack.cxx:2983
 AliESDtrack.cxx:2984
 AliESDtrack.cxx:2985
 AliESDtrack.cxx:2986
 AliESDtrack.cxx:2987
 AliESDtrack.cxx:2988
 AliESDtrack.cxx:2989
 AliESDtrack.cxx:2990
 AliESDtrack.cxx:2991
 AliESDtrack.cxx:2992
 AliESDtrack.cxx:2993
 AliESDtrack.cxx:2994
 AliESDtrack.cxx:2995
 AliESDtrack.cxx:2996
 AliESDtrack.cxx:2997
 AliESDtrack.cxx:2998
 AliESDtrack.cxx:2999
 AliESDtrack.cxx:3000
 AliESDtrack.cxx:3001
 AliESDtrack.cxx:3002
 AliESDtrack.cxx:3003
 AliESDtrack.cxx:3004
 AliESDtrack.cxx:3005
 AliESDtrack.cxx:3006
 AliESDtrack.cxx:3007
 AliESDtrack.cxx:3008
 AliESDtrack.cxx:3009
 AliESDtrack.cxx:3010
 AliESDtrack.cxx:3011
 AliESDtrack.cxx:3012
 AliESDtrack.cxx:3013
 AliESDtrack.cxx:3014
 AliESDtrack.cxx:3015
 AliESDtrack.cxx:3016
 AliESDtrack.cxx:3017
 AliESDtrack.cxx:3018
 AliESDtrack.cxx:3019
 AliESDtrack.cxx:3020
 AliESDtrack.cxx:3021
 AliESDtrack.cxx:3022
 AliESDtrack.cxx:3023
 AliESDtrack.cxx:3024
 AliESDtrack.cxx:3025
 AliESDtrack.cxx:3026
 AliESDtrack.cxx:3027
 AliESDtrack.cxx:3028
 AliESDtrack.cxx:3029
 AliESDtrack.cxx:3030
 AliESDtrack.cxx:3031
 AliESDtrack.cxx:3032
 AliESDtrack.cxx:3033
 AliESDtrack.cxx:3034
 AliESDtrack.cxx:3035
 AliESDtrack.cxx:3036
 AliESDtrack.cxx:3037
 AliESDtrack.cxx:3038
 AliESDtrack.cxx:3039
 AliESDtrack.cxx:3040
 AliESDtrack.cxx:3041
 AliESDtrack.cxx:3042
 AliESDtrack.cxx:3043
 AliESDtrack.cxx:3044
 AliESDtrack.cxx:3045
 AliESDtrack.cxx:3046
 AliESDtrack.cxx:3047
 AliESDtrack.cxx:3048
 AliESDtrack.cxx:3049
 AliESDtrack.cxx:3050
 AliESDtrack.cxx:3051
 AliESDtrack.cxx:3052
 AliESDtrack.cxx:3053
 AliESDtrack.cxx:3054
 AliESDtrack.cxx:3055
 AliESDtrack.cxx:3056
 AliESDtrack.cxx:3057
 AliESDtrack.cxx:3058
 AliESDtrack.cxx:3059
 AliESDtrack.cxx:3060
 AliESDtrack.cxx:3061
 AliESDtrack.cxx:3062
 AliESDtrack.cxx:3063
 AliESDtrack.cxx:3064
 AliESDtrack.cxx:3065
 AliESDtrack.cxx:3066
 AliESDtrack.cxx:3067
 AliESDtrack.cxx:3068
 AliESDtrack.cxx:3069
 AliESDtrack.cxx:3070
 AliESDtrack.cxx:3071
 AliESDtrack.cxx:3072
 AliESDtrack.cxx:3073
 AliESDtrack.cxx:3074
 AliESDtrack.cxx:3075
 AliESDtrack.cxx:3076
 AliESDtrack.cxx:3077
 AliESDtrack.cxx:3078
 AliESDtrack.cxx:3079
 AliESDtrack.cxx:3080
 AliESDtrack.cxx:3081
 AliESDtrack.cxx:3082
 AliESDtrack.cxx:3083
 AliESDtrack.cxx:3084
 AliESDtrack.cxx:3085
 AliESDtrack.cxx:3086
 AliESDtrack.cxx:3087
 AliESDtrack.cxx:3088
 AliESDtrack.cxx:3089
 AliESDtrack.cxx:3090
 AliESDtrack.cxx:3091
 AliESDtrack.cxx:3092
 AliESDtrack.cxx:3093
 AliESDtrack.cxx:3094
 AliESDtrack.cxx:3095
 AliESDtrack.cxx:3096
 AliESDtrack.cxx:3097
 AliESDtrack.cxx:3098
 AliESDtrack.cxx:3099
 AliESDtrack.cxx:3100
 AliESDtrack.cxx:3101
 AliESDtrack.cxx:3102
 AliESDtrack.cxx:3103
 AliESDtrack.cxx:3104
 AliESDtrack.cxx:3105
 AliESDtrack.cxx:3106
 AliESDtrack.cxx:3107
 AliESDtrack.cxx:3108
 AliESDtrack.cxx:3109
 AliESDtrack.cxx:3110
 AliESDtrack.cxx:3111
 AliESDtrack.cxx:3112
 AliESDtrack.cxx:3113
 AliESDtrack.cxx:3114
 AliESDtrack.cxx:3115
 AliESDtrack.cxx:3116
 AliESDtrack.cxx:3117
 AliESDtrack.cxx:3118
 AliESDtrack.cxx:3119
 AliESDtrack.cxx:3120
 AliESDtrack.cxx:3121
 AliESDtrack.cxx:3122
 AliESDtrack.cxx:3123
 AliESDtrack.cxx:3124
 AliESDtrack.cxx:3125
 AliESDtrack.cxx:3126
 AliESDtrack.cxx:3127
 AliESDtrack.cxx:3128
 AliESDtrack.cxx:3129
 AliESDtrack.cxx:3130
 AliESDtrack.cxx:3131
 AliESDtrack.cxx:3132
 AliESDtrack.cxx:3133
 AliESDtrack.cxx:3134
 AliESDtrack.cxx:3135
 AliESDtrack.cxx:3136
 AliESDtrack.cxx:3137
 AliESDtrack.cxx:3138
 AliESDtrack.cxx:3139
 AliESDtrack.cxx:3140
 AliESDtrack.cxx:3141
 AliESDtrack.cxx:3142
 AliESDtrack.cxx:3143
 AliESDtrack.cxx:3144
 AliESDtrack.cxx:3145
 AliESDtrack.cxx:3146
 AliESDtrack.cxx:3147
 AliESDtrack.cxx:3148
 AliESDtrack.cxx:3149
 AliESDtrack.cxx:3150
 AliESDtrack.cxx:3151
 AliESDtrack.cxx:3152
 AliESDtrack.cxx:3153
 AliESDtrack.cxx:3154
 AliESDtrack.cxx:3155
 AliESDtrack.cxx:3156
 AliESDtrack.cxx:3157
 AliESDtrack.cxx:3158
 AliESDtrack.cxx:3159
 AliESDtrack.cxx:3160
 AliESDtrack.cxx:3161
 AliESDtrack.cxx:3162
 AliESDtrack.cxx:3163
 AliESDtrack.cxx:3164
 AliESDtrack.cxx:3165
 AliESDtrack.cxx:3166
 AliESDtrack.cxx:3167
 AliESDtrack.cxx:3168
 AliESDtrack.cxx:3169
 AliESDtrack.cxx:3170
 AliESDtrack.cxx:3171
 AliESDtrack.cxx:3172
 AliESDtrack.cxx:3173
 AliESDtrack.cxx:3174
 AliESDtrack.cxx:3175
 AliESDtrack.cxx:3176
 AliESDtrack.cxx:3177
 AliESDtrack.cxx:3178
 AliESDtrack.cxx:3179
 AliESDtrack.cxx:3180
 AliESDtrack.cxx:3181
 AliESDtrack.cxx:3182
 AliESDtrack.cxx:3183
 AliESDtrack.cxx:3184
 AliESDtrack.cxx:3185
 AliESDtrack.cxx:3186
 AliESDtrack.cxx:3187
 AliESDtrack.cxx:3188
 AliESDtrack.cxx:3189
 AliESDtrack.cxx:3190
 AliESDtrack.cxx:3191
 AliESDtrack.cxx:3192
 AliESDtrack.cxx:3193
 AliESDtrack.cxx:3194
 AliESDtrack.cxx:3195
 AliESDtrack.cxx:3196
 AliESDtrack.cxx:3197
 AliESDtrack.cxx:3198
 AliESDtrack.cxx:3199
 AliESDtrack.cxx:3200
 AliESDtrack.cxx:3201
 AliESDtrack.cxx:3202
 AliESDtrack.cxx:3203
 AliESDtrack.cxx:3204
 AliESDtrack.cxx:3205
 AliESDtrack.cxx:3206
 AliESDtrack.cxx:3207
 AliESDtrack.cxx:3208
 AliESDtrack.cxx:3209
 AliESDtrack.cxx:3210
 AliESDtrack.cxx:3211
 AliESDtrack.cxx:3212
 AliESDtrack.cxx:3213
 AliESDtrack.cxx:3214
 AliESDtrack.cxx:3215
 AliESDtrack.cxx:3216
 AliESDtrack.cxx:3217
 AliESDtrack.cxx:3218
 AliESDtrack.cxx:3219
 AliESDtrack.cxx:3220
 AliESDtrack.cxx:3221
 AliESDtrack.cxx:3222
 AliESDtrack.cxx:3223
 AliESDtrack.cxx:3224
 AliESDtrack.cxx:3225
 AliESDtrack.cxx:3226
 AliESDtrack.cxx:3227
 AliESDtrack.cxx:3228
 AliESDtrack.cxx:3229
 AliESDtrack.cxx:3230
 AliESDtrack.cxx:3231
 AliESDtrack.cxx:3232
 AliESDtrack.cxx:3233
 AliESDtrack.cxx:3234
 AliESDtrack.cxx:3235
 AliESDtrack.cxx:3236
 AliESDtrack.cxx:3237
 AliESDtrack.cxx:3238
 AliESDtrack.cxx:3239
 AliESDtrack.cxx:3240
 AliESDtrack.cxx:3241
 AliESDtrack.cxx:3242
 AliESDtrack.cxx:3243
 AliESDtrack.cxx:3244
 AliESDtrack.cxx:3245
 AliESDtrack.cxx:3246
 AliESDtrack.cxx:3247
 AliESDtrack.cxx:3248
 AliESDtrack.cxx:3249
 AliESDtrack.cxx:3250
 AliESDtrack.cxx:3251
 AliESDtrack.cxx:3252
 AliESDtrack.cxx:3253
 AliESDtrack.cxx:3254
 AliESDtrack.cxx:3255
 AliESDtrack.cxx:3256
 AliESDtrack.cxx:3257
 AliESDtrack.cxx:3258
 AliESDtrack.cxx:3259
 AliESDtrack.cxx:3260
 AliESDtrack.cxx:3261
 AliESDtrack.cxx:3262
 AliESDtrack.cxx:3263
 AliESDtrack.cxx:3264
 AliESDtrack.cxx:3265
 AliESDtrack.cxx:3266
 AliESDtrack.cxx:3267
 AliESDtrack.cxx:3268
 AliESDtrack.cxx:3269
 AliESDtrack.cxx:3270
 AliESDtrack.cxx:3271
 AliESDtrack.cxx:3272
 AliESDtrack.cxx:3273
 AliESDtrack.cxx:3274
 AliESDtrack.cxx:3275
 AliESDtrack.cxx:3276
 AliESDtrack.cxx:3277
 AliESDtrack.cxx:3278
 AliESDtrack.cxx:3279
 AliESDtrack.cxx:3280
 AliESDtrack.cxx:3281
 AliESDtrack.cxx:3282
 AliESDtrack.cxx:3283
 AliESDtrack.cxx:3284
 AliESDtrack.cxx:3285
 AliESDtrack.cxx:3286
 AliESDtrack.cxx:3287
 AliESDtrack.cxx:3288
 AliESDtrack.cxx:3289
 AliESDtrack.cxx:3290
 AliESDtrack.cxx:3291
 AliESDtrack.cxx:3292
 AliESDtrack.cxx:3293
 AliESDtrack.cxx:3294
 AliESDtrack.cxx:3295
 AliESDtrack.cxx:3296
 AliESDtrack.cxx:3297
 AliESDtrack.cxx:3298
 AliESDtrack.cxx:3299
 AliESDtrack.cxx:3300
 AliESDtrack.cxx:3301
 AliESDtrack.cxx:3302
 AliESDtrack.cxx:3303
 AliESDtrack.cxx:3304
 AliESDtrack.cxx:3305
 AliESDtrack.cxx:3306
 AliESDtrack.cxx:3307
 AliESDtrack.cxx:3308
 AliESDtrack.cxx:3309
 AliESDtrack.cxx:3310
 AliESDtrack.cxx:3311
 AliESDtrack.cxx:3312
 AliESDtrack.cxx:3313
 AliESDtrack.cxx:3314
 AliESDtrack.cxx:3315
 AliESDtrack.cxx:3316
 AliESDtrack.cxx:3317
 AliESDtrack.cxx:3318
 AliESDtrack.cxx:3319
 AliESDtrack.cxx:3320
 AliESDtrack.cxx:3321
 AliESDtrack.cxx:3322
 AliESDtrack.cxx:3323
 AliESDtrack.cxx:3324
 AliESDtrack.cxx:3325
 AliESDtrack.cxx:3326
 AliESDtrack.cxx:3327
 AliESDtrack.cxx:3328
 AliESDtrack.cxx:3329
 AliESDtrack.cxx:3330
 AliESDtrack.cxx:3331
 AliESDtrack.cxx:3332
 AliESDtrack.cxx:3333
 AliESDtrack.cxx:3334
 AliESDtrack.cxx:3335
 AliESDtrack.cxx:3336
 AliESDtrack.cxx:3337
 AliESDtrack.cxx:3338
 AliESDtrack.cxx:3339
 AliESDtrack.cxx:3340
 AliESDtrack.cxx:3341
 AliESDtrack.cxx:3342
 AliESDtrack.cxx:3343
 AliESDtrack.cxx:3344
 AliESDtrack.cxx:3345
 AliESDtrack.cxx:3346
 AliESDtrack.cxx:3347
 AliESDtrack.cxx:3348
 AliESDtrack.cxx:3349
 AliESDtrack.cxx:3350
 AliESDtrack.cxx:3351
 AliESDtrack.cxx:3352
 AliESDtrack.cxx:3353
 AliESDtrack.cxx:3354
 AliESDtrack.cxx:3355
 AliESDtrack.cxx:3356
 AliESDtrack.cxx:3357
 AliESDtrack.cxx:3358
 AliESDtrack.cxx:3359
 AliESDtrack.cxx:3360
 AliESDtrack.cxx:3361
 AliESDtrack.cxx:3362
 AliESDtrack.cxx:3363
 AliESDtrack.cxx:3364
 AliESDtrack.cxx:3365
 AliESDtrack.cxx:3366
 AliESDtrack.cxx:3367
 AliESDtrack.cxx:3368
 AliESDtrack.cxx:3369
 AliESDtrack.cxx:3370
 AliESDtrack.cxx:3371
 AliESDtrack.cxx:3372
 AliESDtrack.cxx:3373
 AliESDtrack.cxx:3374
 AliESDtrack.cxx:3375
 AliESDtrack.cxx:3376
 AliESDtrack.cxx:3377
 AliESDtrack.cxx:3378
 AliESDtrack.cxx:3379
 AliESDtrack.cxx:3380
 AliESDtrack.cxx:3381
 AliESDtrack.cxx:3382
 AliESDtrack.cxx:3383
 AliESDtrack.cxx:3384
 AliESDtrack.cxx:3385
 AliESDtrack.cxx:3386
 AliESDtrack.cxx:3387
 AliESDtrack.cxx:3388
 AliESDtrack.cxx:3389
 AliESDtrack.cxx:3390
 AliESDtrack.cxx:3391
 AliESDtrack.cxx:3392
 AliESDtrack.cxx:3393
 AliESDtrack.cxx:3394
 AliESDtrack.cxx:3395
 AliESDtrack.cxx:3396
 AliESDtrack.cxx:3397
 AliESDtrack.cxx:3398
 AliESDtrack.cxx:3399
 AliESDtrack.cxx:3400
 AliESDtrack.cxx:3401
 AliESDtrack.cxx:3402
 AliESDtrack.cxx:3403
 AliESDtrack.cxx:3404
 AliESDtrack.cxx:3405
 AliESDtrack.cxx:3406
 AliESDtrack.cxx:3407
 AliESDtrack.cxx:3408
 AliESDtrack.cxx:3409
 AliESDtrack.cxx:3410
 AliESDtrack.cxx:3411
 AliESDtrack.cxx:3412
 AliESDtrack.cxx:3413
 AliESDtrack.cxx:3414
 AliESDtrack.cxx:3415
 AliESDtrack.cxx:3416
 AliESDtrack.cxx:3417
 AliESDtrack.cxx:3418
 AliESDtrack.cxx:3419
 AliESDtrack.cxx:3420
 AliESDtrack.cxx:3421
 AliESDtrack.cxx:3422
 AliESDtrack.cxx:3423
 AliESDtrack.cxx:3424
 AliESDtrack.cxx:3425
 AliESDtrack.cxx:3426
 AliESDtrack.cxx:3427
 AliESDtrack.cxx:3428
 AliESDtrack.cxx:3429
 AliESDtrack.cxx:3430
 AliESDtrack.cxx:3431
 AliESDtrack.cxx:3432
 AliESDtrack.cxx:3433
 AliESDtrack.cxx:3434
 AliESDtrack.cxx:3435
 AliESDtrack.cxx:3436
 AliESDtrack.cxx:3437
 AliESDtrack.cxx:3438
 AliESDtrack.cxx:3439
 AliESDtrack.cxx:3440
 AliESDtrack.cxx:3441
 AliESDtrack.cxx:3442
 AliESDtrack.cxx:3443
 AliESDtrack.cxx:3444
 AliESDtrack.cxx:3445
 AliESDtrack.cxx:3446
 AliESDtrack.cxx:3447
 AliESDtrack.cxx:3448
 AliESDtrack.cxx:3449
 AliESDtrack.cxx:3450
 AliESDtrack.cxx:3451
 AliESDtrack.cxx:3452
 AliESDtrack.cxx:3453
 AliESDtrack.cxx:3454
 AliESDtrack.cxx:3455
 AliESDtrack.cxx:3456
 AliESDtrack.cxx:3457
 AliESDtrack.cxx:3458
 AliESDtrack.cxx:3459
 AliESDtrack.cxx:3460
 AliESDtrack.cxx:3461
 AliESDtrack.cxx:3462
 AliESDtrack.cxx:3463
 AliESDtrack.cxx:3464
 AliESDtrack.cxx:3465
 AliESDtrack.cxx:3466
 AliESDtrack.cxx:3467
 AliESDtrack.cxx:3468
 AliESDtrack.cxx:3469
 AliESDtrack.cxx:3470
 AliESDtrack.cxx:3471
 AliESDtrack.cxx:3472
 AliESDtrack.cxx:3473
 AliESDtrack.cxx:3474
 AliESDtrack.cxx:3475
 AliESDtrack.cxx:3476
 AliESDtrack.cxx:3477
 AliESDtrack.cxx:3478
 AliESDtrack.cxx:3479
 AliESDtrack.cxx:3480
 AliESDtrack.cxx:3481
 AliESDtrack.cxx:3482
 AliESDtrack.cxx:3483
 AliESDtrack.cxx:3484
 AliESDtrack.cxx:3485
 AliESDtrack.cxx:3486
 AliESDtrack.cxx:3487
 AliESDtrack.cxx:3488
 AliESDtrack.cxx:3489
 AliESDtrack.cxx:3490
 AliESDtrack.cxx:3491
 AliESDtrack.cxx:3492
 AliESDtrack.cxx:3493
 AliESDtrack.cxx:3494
 AliESDtrack.cxx:3495
 AliESDtrack.cxx:3496
 AliESDtrack.cxx:3497
 AliESDtrack.cxx:3498
 AliESDtrack.cxx:3499
 AliESDtrack.cxx:3500
 AliESDtrack.cxx:3501
 AliESDtrack.cxx:3502
 AliESDtrack.cxx:3503
 AliESDtrack.cxx:3504
 AliESDtrack.cxx:3505
 AliESDtrack.cxx:3506
 AliESDtrack.cxx:3507
 AliESDtrack.cxx:3508
 AliESDtrack.cxx:3509
 AliESDtrack.cxx:3510
 AliESDtrack.cxx:3511
 AliESDtrack.cxx:3512
 AliESDtrack.cxx:3513
 AliESDtrack.cxx:3514
 AliESDtrack.cxx:3515
 AliESDtrack.cxx:3516
 AliESDtrack.cxx:3517
 AliESDtrack.cxx:3518
 AliESDtrack.cxx:3519