// $Id$ // // Modified track class to be able to store cached quantities. // // Author: C.Loizides #include "AliEsdTrackExt.h" #include #include "AliESDEvent.h" //_________________________________________________________________________________________________ AliEsdTrackExt::AliEsdTrackExt() : AliESDtrack(), fEmcEta(-10), fEmcPhi(-10), fNCrossedRows(-10), fChi2TPCConstrainedVsGlobal(-10) { // Default constructor. } //_________________________________________________________________________________________________ AliEsdTrackExt::AliEsdTrackExt(const AliESDtrack &t) : AliESDtrack(t), fEmcEta(-10), fEmcPhi(-10), fNCrossedRows(-10), fChi2TPCConstrainedVsGlobal(-10) { // Constructor. const AliExternalTrackParam *outp = GetOuterParam(); if (outp&&IsEMCAL()) { Double_t trkPos[3] = {0.,0.,0.}; if (outp->GetXYZ(trkPos)) { TVector3 vec(trkPos[0],trkPos[1],trkPos[2]); Double_t veta = vec.Eta(); Double_t vphi = vec.Phi(); if(vphi<0) vphi += 2*TMath::Pi(); fEmcEta = veta; fEmcPhi = vphi; } } fNCrossedRows = GetTPCCrossedRows(); const AliESDVertex* vertex = 0; vertex = fESDEvent->GetPrimaryVertexTracks(); if (!vertex || !vertex->GetStatus()) vertex = fESDEvent->GetPrimaryVertexSPD(); if (vertex) { fChi2TPCConstrainedVsGlobal = GetChi2TPCConstrainedVsGlobal(vertex); fCacheChi2TPCConstrainedVsGlobalVertex = vertex; } } //_________________________________________________________________________________________________ void AliEsdTrackExt::DeleteParams() { // Delete the unneeded params. delete fIp; fIp = 0; delete fTPCInner; fTPCInner = 0; delete fHMPIDp; fHMPIDp = 0; delete fFriendTrack; fFriendTrack = 0; if (!IsEMCAL()) { delete fOp; fOp = 0; } } //_________________________________________________________________________________________________ void AliEsdTrackExt::MakeMiniTrack(Bool_t dall, Bool_t dcon, Bool_t dtrp, Bool_t dmap, Bool_t dits, Bool_t dtpc, Bool_t dtrd, Bool_t dtof, Bool_t dhmp) { // Make mini track depending on what should be reset. if (fCp && !dcon) fCp->ResetCovariance(1); if (dtrp) { if (dcon) { delete fCp; fCp = 0; } delete fIp; fIp = 0; delete fTPCInner; fTPCInner = 0; delete fOp; fOp = 0; delete fHMPIDp; fHMPIDp = 0; delete fFriendTrack; fFriendTrack = 0; } if (dmap) { fTPCFitMap.Clear(); fTPCClusterMap.Clear(); fTPCSharedMap.Clear(); } // Reset ITS track related information if (dits) { if (dall) { fITSchi2 = 0; fITSncls = 0; fITSClusterMap = 0; fITSSharedMap = 0; fITSsignal = 0; } fITSLabel = 0; for (Int_t i=0;i<4;++i) fITSdEdxSamples[i] = 0.; for (Int_t i=0;iGetPrimaryVertexTracks(); if (!vertex || !vertex->GetStatus()) vertex = fESDEvent->GetPrimaryVertexSPD(); if (vertex) { fCacheChi2TPCConstrainedVsGlobal = fChi2TPCConstrainedVsGlobal; fCacheChi2TPCConstrainedVsGlobalVertex = vertex; } }