aodTrack->SetTPCSharedMap (esdCascadeBach->GetTPCSharedMap());
aodTrack->SetChi2perNDF(Chi2perNDF(esdCascadeBach));
aodTrack->SetTPCPointsF(esdCascadeBach->GetTPCNclsF());
+ aodTrack->SetTPCNCrossedRows(UShort_t(esdCascadeBach->GetTPCCrossedRows()));
fAODTrackRefs->AddAt(aodTrack,idxBachFromCascade);
if (esdCascadeBach->GetSign() > 0) ++fNumberOfPositiveTracks;
aodTrack->SetTPCSharedMap (esdCascadePos->GetTPCSharedMap());
aodTrack->SetChi2perNDF(Chi2perNDF(esdCascadePos));
aodTrack->SetTPCPointsF(esdCascadePos->GetTPCNclsF());
+ aodTrack->SetTPCNCrossedRows(UShort_t(esdCascadePos->GetTPCCrossedRows()));
fAODTrackRefs->AddAt(aodTrack,idxPosFromV0Dghter);
if (esdCascadePos->GetSign() > 0) ++fNumberOfPositiveTracks;
aodTrack->SetTPCSharedMap (esdCascadeNeg->GetTPCSharedMap());
aodTrack->SetChi2perNDF(Chi2perNDF(esdCascadeNeg));
aodTrack->SetTPCPointsF(esdCascadeNeg->GetTPCNclsF());
+ aodTrack->SetTPCNCrossedRows(UShort_t(esdCascadeNeg->GetTPCCrossedRows()));
fAODTrackRefs->AddAt(aodTrack,idxNegFromV0Dghter);
if (esdCascadeNeg->GetSign() > 0) ++fNumberOfPositiveTracks;
aodTrack->SetTPCSharedMap (esdV0Pos->GetTPCSharedMap());
aodTrack->SetChi2perNDF(Chi2perNDF(esdV0Pos));
aodTrack->SetTPCPointsF(esdV0Pos->GetTPCNclsF());
+ aodTrack->SetTPCNCrossedRows(UShort_t(esdV0Pos->GetTPCCrossedRows()));
fAODTrackRefs->AddAt(aodTrack,posFromV0);
// if (fDebug > 0) printf("-------------------Bo: pos track from original pt %.3f \n",aodTrack->Pt());
if (esdV0Pos->GetSign() > 0) ++fNumberOfPositiveTracks;
aodTrack->SetTPCSharedMap (esdV0Neg->GetTPCSharedMap());
aodTrack->SetChi2perNDF(Chi2perNDF(esdV0Neg));
aodTrack->SetTPCPointsF(esdV0Neg->GetTPCNclsF());
+ aodTrack->SetTPCNCrossedRows(UShort_t(esdV0Neg->GetTPCCrossedRows()));
fAODTrackRefs->AddAt(aodTrack,negFromV0);
// if (fDebug > 0) printf("-------------------Bo: neg track from original pt %.3f \n",aodTrack->Pt());
aodTrack->SetFlags(track->GetStatus());
aodTrack->SetTPCPointsF(track->GetTPCNclsF());
+ aodTrack->SetTPCNCrossedRows(UShort_t(track->GetTPCCrossedRows()));
//Perform progagation of tracks if needed
if(fDoPropagateTrackToEMCal) PropagateTrackToEMCal(esdTrack);
aodTrack->SetFlags(esdTrack->GetStatus());
aodTrack->SetTPCPointsF(esdTrack->GetTPCNclsF());
+ aodTrack->SetTPCNCrossedRows(UShort_t(esdTrack->GetTPCCrossedRows()));
if(isHybridGC){
// only copy AOD information for hybrid, no duplicate information
aodTrack->SetTPCSharedMap (esdTrack->GetTPCSharedMap());
aodTrack->SetChi2perNDF(Chi2perNDF(esdTrack));
aodTrack->SetTPCPointsF(esdTrack->GetTPCNclsF());
+ aodTrack->SetTPCNCrossedRows(UShort_t(esdTrack->GetTPCCrossedRows()));
if(esdTrack->IsEMCAL()) aodTrack->SetEMCALcluster(esdTrack->GetEMCALcluster());
if(esdTrack->IsPHOS()) aodTrack->SetPHOScluster(esdTrack->GetPHOScluster());
mother->SetTPCSharedMap (esdTrackM->GetTPCSharedMap());
mother->SetChi2perNDF(Chi2perNDF(esdTrackM));
mother->SetTPCPointsF(esdTrackM->GetTPCNclsF());
+ mother->SetTPCNCrossedRows(UShort_t(esdTrackM->GetTPCCrossedRows()));
fAODTrackRefs->AddAt(mother, imother);
daughter->SetTPCClusterMap(esdTrackD->GetTPCClusterMap());
daughter->SetTPCSharedMap (esdTrackD->GetTPCSharedMap());
daughter->SetTPCPointsF(esdTrackD->GetTPCNclsF());
+ daughter->SetTPCNCrossedRows(UShort_t(esdTrackD->GetTPCCrossedRows()));
fAODTrackRefs->AddAt(daughter, idaughter);
if (esdTrackD->GetSign() > 0) ++fNumberOfPositiveTracks;
aodpid->SetTRDncls(track->GetTRDncls());
aodpid->SetTRDntrackletsPID(track->GetTRDntrackletsPID());
+ aodpid->SetTRDChi2(track->GetTRDchi2());
+
//TOF PID
Double_t times[AliAODPid::kSPECIES]; track->GetIntegratedTimes(times);
aodpid->SetIntegratedTimes(times);
fTRDnSlices(0),
fTRDntls(0),
fTRDslices(0x0),
+ fTRDChi2(0x0),
fTOFesdsignal(0),
fTPCdEdxInfo(0)
{
fTRDnSlices(pid.fTRDnSlices),
fTRDntls(pid.fTRDntls),
fTRDslices(0x0),
+ fTRDChi2(pid.fTRDChi2),
fTOFesdsignal(pid.fTOFesdsignal),
fTPCdEdxInfo(0x0)
{
fTRDncls[i] = pid.fTRDncls[i];
}
+ fTRDChi2 = pid.fTRDChi2;
+
fTOFesdsignal=pid.fTOFesdsignal;
for (Int_t i = 0; i < 5; i++) fTOFpidResolution[i]=pid.fTOFpidResolution[i];
for (Int_t i = 0; i < 5; i++) fIntTime[i]=pid.fIntTime[i];
void SetTRDmomentum(Int_t nplane, Float_t trdMom) {fTRDmomentum[nplane]=trdMom;}
inline void SetTRDncls(UChar_t ncls, Int_t layer = -1);
void SetTRDntrackletsPID(UChar_t ntls) {fTRDntls = ntls;}
+ void SetTRDChi2(Double_t chi2) {fTRDChi2 = chi2;}
void SetTOFsignal(Double_t tof) {fTOFesdsignal=tof;}
void SetTOFpidResolution(Double_t tofPIDres[5]);
void SetIntegratedTimes(Double_t timeint[5]);
Double_t GetTPCmomentum() const {return fTPCmomentum;}
Int_t GetTRDnSlices() const {return fTRDnSlices;}
Double_t* GetTRDsignal() const {return fTRDslices;}
+ Double_t GetTRDChi2() const {return fTRDChi2;}
const Double_t* GetTRDmomentum() const {return fTRDmomentum;}
UChar_t GetTRDncls(UChar_t layer) const { if(layer > 5) return 0; return fTRDncls[layer];}
inline UChar_t GetTRDncls() const;
UChar_t fTRDncls[6]; // number of clusters used for dE/dx calculation
Double32_t* fTRDslices; //[fTRDnSlices][0.,0.,10]
Double32_t fTRDmomentum[6]; //[0.,0.,10] momentum at the TRD layers
+ Double32_t fTRDChi2; //TRD chi2
Double32_t fTOFesdsignal; //[0.,0.,20] TOF signal - t0 (T0 interaction time)
Double32_t fTOFpidResolution[5]; //[0.,0.,20] TOF pid resolution for each mass hypotesys
AliTPCdEdxInfo * fTPCdEdxInfo; // object containing dE/dx information for different pad regions
- ClassDef(AliAODPid, 11);
+ ClassDef(AliAODPid, 12);
};
//_____________________________________________________________
fTPCClusterMap(),
fTPCSharedMap(),
fTPCnclsF(0),
+ fTPCNCrossedRows(0),
fID(-999),
fCharge(-99),
fType(kUndef),
fTPCClusterMap(),
fTPCSharedMap(),
fTPCnclsF(0),
+ fTPCNCrossedRows(0),
fID(id),
fCharge(charge),
fType(ttype),
fTPCClusterMap(),
fTPCSharedMap(),
fTPCnclsF(0),
+ fTPCNCrossedRows(0),
fID(id),
fCharge(charge),
fType(ttype),
fTPCClusterMap(trk.fTPCClusterMap),
fTPCSharedMap(trk.fTPCSharedMap),
fTPCnclsF(trk.fTPCnclsF),
+ fTPCNCrossedRows(trk.fTPCNCrossedRows),
fID(trk.fID),
fCharge(trk.fCharge),
fType(trk.fType),
fTPCClusterMap = trk.fTPCClusterMap;
fTPCSharedMap = trk.fTPCSharedMap;
fTPCnclsF = trk.fTPCnclsF;
+ fTPCNCrossedRows = trk.fTPCNCrossedRows;
fID = trk.fID;
fCharge = trk.fCharge;
fType = trk.fType;
void SetTPCSharedMap(const TBits amap) {fTPCSharedMap = amap;}
void SetTPCFitMap(const TBits amap) {fTPCFitMap = amap;}
void SetTPCPointsF(UShort_t findable){fTPCnclsF = findable;}
+ void SetTPCNCrossedRows(UInt_t n) {fTPCNCrossedRows = n;}
UShort_t GetTPCNclsF() const { return fTPCnclsF;}
+ UShort_t GetTPCNCrossedRows() const { return fTPCNCrossedRows;}
+ Float_t GetTPCFoundFraction() const { return fTPCNCrossedRows>0 ? float(GetTPCNcls())/fTPCNCrossedRows : 0;}
// Calorimeter Cluster
Int_t GetEMCALcluster() const {return fCaloIndex;}
void GetIntegratedTimes(Double_t *times) const {if (fDetPid) fDetPid->GetIntegratedTimes(times); }
Double_t GetTRDslice(Int_t plane, Int_t slice) const;
Double_t GetTRDmomentum(Int_t plane, Double_t */*sp*/=0x0) const;
+ Double_t GetTRDChi2() const {return fDetPid ? fDetPid->GetTRDChi2() : -1;}
UChar_t GetTRDncls(Int_t layer = -1) const;
UChar_t GetTRDntrackletsPID() const;
Int_t GetNumberOfTRDslices() const { return fDetPid?fDetPid->GetTRDnSlices():0; }
TBits fTPCSharedMap; // Map of clusters, one bit per padrow; 1 if has a shared cluster on given padrow
UShort_t fTPCnclsF; // findable clusters
+ UShort_t fTPCNCrossedRows; // n crossed rows
Short_t fID; // unique track ID, points back to the ESD track
const AliAODEvent* fAODEvent; //!
- ClassDef(AliAODTrack, 18);
+ ClassDef(AliAODTrack, 19);
};
inline Bool_t AliAODTrack::IsPrimaryCandidate() const