#include <TMath.h>
#include <TParticle.h>
+#include <TDatabasePDG.h>
#include "AliESDVertex.h"
#include "AliESDtrack.h"
fIp(0),
fTPCInner(0),
fOp(0),
+ fHMPIDp(0),
fFriendTrack(new AliESDfriendTrack()),
fTPCClusterMap(159),//number of padrows
fTPCSharedMap(159),//number of padrows
fIp(0),
fTPCInner(0),
fOp(0),
+ fHMPIDp(0),
fFriendTrack(0),
fTPCClusterMap(track.fTPCClusterMap),
fTPCSharedMap(track.fTPCSharedMap),
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.fFriendTrack) fFriendTrack=new AliESDfriendTrack(*(track.fFriendTrack));
}
fIp(0),
fTPCInner(0),
fOp(0),
+ fHMPIDp(0),
fFriendTrack(0),
fTPCClusterMap(159),//number of padrows
fTPCSharedMap(159),//number of padrows
fIp(0),
fTPCInner(0),
fOp(0),
+ fHMPIDp(0),
fFriendTrack(0),
fTPCClusterMap(159),//number of padrows
fTPCSharedMap(159),//number of padrows
delete fIp;
delete fTPCInner;
delete fOp;
+ delete fHMPIDp;
delete fCp;
delete fFriendTrack;
if(fTRDnSlices)
fOp = 0;
}
+
+ if(source.fHMPIDp){
+ // we have the trackparam: assign or copy construct
+ if(fOp) *fHMPIDp = *source.fHMPIDp;
+ else fHMPIDp = new AliExternalTrackParam(*source.fHMPIDp);
+ }
+ else{
+ // no track param delete the old one
+ if(fHMPIDp)delete fHMPIDp;
+ fHMPIDp = 0;
+ }
+
+
// copy also the friend track
// use copy constructor
if(source.fFriendTrack){
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
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;
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 {
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 {
//---------------------------------------------------------------------
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
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();