//-------------------------------------------------------------------------
#include "AliLog.h"
+#include "AliExternalTrackParam.h"
+#include "AliVVertex.h"
#include "AliAODTrack.h"
ClassImp(AliAODTrack)
//______________________________________________________________________________
AliAODTrack::AliAODTrack() :
AliVTrack(),
+ fRAtAbsorberEnd(0.),
fChi2perNDF(-999.),
fChi2MatchTrigger(0.),
fFlags(0),
fLabel(-999),
fITSMuonClusterMap(0),
fFilterMap(0),
+ fTPCClusterMap(),
+ fTPCSharedMap(),
+ fTPCnclsF(0),
fID(-999),
fCharge(-99),
fType(kUndef),
UInt_t selectInfo,
Float_t chi2perNDF) :
AliVTrack(),
+ fRAtAbsorberEnd(0.),
fChi2perNDF(chi2perNDF),
fChi2MatchTrigger(0.),
fFlags(0),
fLabel(label),
fITSMuonClusterMap(0),
fFilterMap(selectInfo),
+ fTPCClusterMap(),
+ fTPCSharedMap(),
+ fTPCnclsF(0),
fID(id),
fCharge(charge),
fType(ttype),
UInt_t selectInfo,
Float_t chi2perNDF) :
AliVTrack(),
+ fRAtAbsorberEnd(0.),
fChi2perNDF(chi2perNDF),
fChi2MatchTrigger(0.),
fFlags(0),
fLabel(label),
fITSMuonClusterMap(0),
fFilterMap(selectInfo),
+ fTPCClusterMap(),
+ fTPCSharedMap(),
+ fTPCnclsF(0),
fID(id),
fCharge(charge),
fType(ttype),
//______________________________________________________________________________
AliAODTrack::AliAODTrack(const AliAODTrack& trk) :
AliVTrack(trk),
+ fRAtAbsorberEnd(trk.fRAtAbsorberEnd),
fChi2perNDF(trk.fChi2perNDF),
fChi2MatchTrigger(trk.fChi2MatchTrigger),
fFlags(trk.fFlags),
fLabel(trk.fLabel),
fITSMuonClusterMap(trk.fITSMuonClusterMap),
fFilterMap(trk.fFilterMap),
+ fTPCClusterMap(trk.fTPCClusterMap),
+ fTPCSharedMap(trk.fTPCSharedMap),
+ fTPCnclsF(trk.fTPCnclsF),
fID(trk.fID),
fCharge(trk.fCharge),
fType(trk.fType),
SetXYAtDCA(trk.XAtDCA(), trk.YAtDCA());
SetPxPyPzAtDCA(trk.PxAtDCA(), trk.PyAtDCA(), trk.PzAtDCA());
+ fRAtAbsorberEnd = trk.fRAtAbsorberEnd;
+
fChi2perNDF = trk.fChi2perNDF;
fChi2MatchTrigger = trk.fChi2MatchTrigger;
// Returns the most probable PID array element.
Int_t nPID = 10;
- if (fPID) {
- AODTrkPID_t loc = kUnknown;
- Double_t max = 0.;
- Bool_t allTheSame = kTRUE;
-
- for (Int_t iPID = 0; iPID < nPID; iPID++) {
- if (fPID[iPID] >= max) {
- if (fPID[iPID] > max) {
- allTheSame = kFALSE;
- max = fPID[iPID];
- loc = (AODTrkPID_t)iPID;
- } else {
- allTheSame = kTRUE;
- }
+ AODTrkPID_t loc = kUnknown;
+ Double_t max = 0.;
+ Bool_t allTheSame = kTRUE;
+
+ for (Int_t iPID = 0; iPID < nPID; iPID++) {
+ if (fPID[iPID] >= max) {
+ if (fPID[iPID] > max) {
+ allTheSame = kFALSE;
+ max = fPID[iPID];
+ loc = (AODTrkPID_t)iPID;
+ } else {
+ allTheSame = kTRUE;
}
}
-
- return allTheSame ? kUnknown : loc;
- } else {
- return kUnknown;
}
+ return allTheSame ? kUnknown : loc;
}
//______________________________________________________________________________
return (nMatchedChambers >= 2);
}
+//______________________________________________________________________________
+Bool_t AliAODTrack::PropagateToDCA(const AliVVertex *vtx,
+ Double_t b, Double_t maxd, Double_t dz[2], Double_t covar[3])
+{
+ // compute impact parameters to the vertex vtx and their covariance matrix
+ // b is the Bz, needed to propagate correctly the track to vertex
+ // only the track parameters are update after the propagation (pos and mom),
+ // not the covariance matrix. This is OK for propagation over short distance
+ // inside the beam pipe.
+ // return kFALSE is something went wrong
+
+ // convert to AliExternalTrackParam
+ AliExternalTrackParam etp(this);
+
+ Float_t xstart = etp.GetX();
+ if(xstart>3.) {
+ AliError("This method can be used only for propagation inside the beam pipe");
+ return kFALSE;
+ }
+
+ if(!etp.PropagateToDCA(vtx,b,maxd,dz,covar)) return kFALSE;
+
+ // update track position and momentum
+ Double_t mom[3];
+ etp.GetPxPyPz(mom);
+ SetP(mom,kTRUE);
+ etp.GetXYZ(mom);
+ SetPosition(mom,kFALSE);
+
+
+ return kTRUE;
+}
+
+//______________________________________________________________________________
+Bool_t AliAODTrack::GetPxPyPz(Double_t p[3]) const
+{
+ //---------------------------------------------------------------------
+ // This function returns the global track momentum components
+ //---------------------------------------------------------------------
+ p[0]=Px(); p[1]=Py(); p[2]=Pz();
+ return kTRUE;
+}