fCutMaxC55(0),
fCutMaxRel1PtUncertainty(0),
fCutAcceptKinkDaughters(0),
+ fCutAcceptSharedTPCClusters(0),
+ fCutMaxFractionSharedTPCClusters(0),
fCutRequireTPCRefit(0),
fCutRequireTPCStandAlone(0),
fCutRequireITSRefit(0),
fCutMaxC55(0),
fCutMaxRel1PtUncertainty(0),
fCutAcceptKinkDaughters(0),
+ fCutAcceptSharedTPCClusters(0),
+ fCutMaxFractionSharedTPCClusters(0),
fCutRequireTPCRefit(0),
fCutRequireTPCStandAlone(0),
fCutRequireITSRefit(0),
fCutMaxRel1PtUncertainty = 0;
fCutAcceptKinkDaughters = 0;
+ fCutAcceptSharedTPCClusters = 0;
+ fCutMaxFractionSharedTPCClusters = 0;
fCutRequireTPCRefit = 0;
fCutRequireTPCStandAlone = 0;
fCutRequireITSRefit = 0;
target.fCutMaxRel1PtUncertainty = fCutMaxRel1PtUncertainty;
target.fCutAcceptKinkDaughters = fCutAcceptKinkDaughters;
+ target.fCutAcceptSharedTPCClusters = fCutAcceptSharedTPCClusters;
+ target.fCutMaxFractionSharedTPCClusters = fCutMaxFractionSharedTPCClusters;
target.fCutRequireTPCRefit = fCutRequireTPCRefit;
target.fCutRequireTPCStandAlone = fCutRequireTPCStandAlone;
target.fCutRequireITSRefit = fCutRequireITSRefit;
nClustersTPC = esdTrack->GetTPCclusters(0);
}
+ Int_t nClustersTPCShared = esdTrack->GetTPCnclsS();
+ Float_t fracClustersTPCShared = -1.;
+
Float_t chi2PerClusterITS = -1;
Float_t chi2PerClusterTPC = -1;
if (nClustersITS!=0)
} else {
chi2PerClusterTPC = esdTrack->GetTPCchi2()/Float_t(nClustersTPC);
}
+ fracClustersTPCShared = Float_t(nClustersTPCShared)/Float_t(nClustersTPC);
}
Double_t extCov[15];
cuts[28+i] = !CheckITSClusterRequirement(fCutClusterRequirementITS[i], esdTrack->HasPointOnITSLayer(i*2), esdTrack->HasPointOnITSLayer(i*2+1));
if (fCutRequireITSStandAlone && ((status & AliESDtrack::kITSin) == 0 || (status & AliESDtrack::kTPCin)))
- cuts[31]=kTRUE;
+ cuts[31] = kTRUE;
if (relUncertainty1Pt > fCutMaxRel1PtUncertainty)
- cuts[32]=kTRUE;
-
+ cuts[32] = kTRUE;
+
+ if (!fCutAcceptSharedTPCClusters && nClustersTPCShared!=0)
+ cuts[33] = kTRUE;
+
+ if (fracClustersTPCShared > fCutMaxFractionSharedTPCClusters)
+ cuts[34] = kTRUE;
+
Bool_t cut=kFALSE;
for (Int_t i=0; i<kNCuts; i++)
if (cuts[i]) {cut = kTRUE;}
-
//########################################################################
// filling histograms
if (fHistogramsOn) {
//____________________________________________________________________
AliESDtrack* AliESDtrackCuts::GetTPCOnlyTrack(AliESDEvent* esd, Int_t iTrack)
{
- // creates a TPC only track from the given esd track
- // the track has to be deleted by the user
+
+ // Utility function to
+ // create a TPC only track from the given esd track
+ //
+ // IMPORTANT: The track has to be deleted by the user
//
// NB. most of the functionality to get a TPC only track from an ESD track is in AliESDtrack, where it should be
// there are only missing propagations here that are needed for old data
AliESDtrack *tpcTrack = new AliESDtrack();
- // This should have been done during the reconstruction
- // fixed by Juri in r26675
- // but recalculate for older data CKB
- Float_t p[2],cov[3];
- track->GetImpactParametersTPC(p,cov);
- if(p[0]==0&&p[1]==0)
- track->RelateToVertexTPC(esd->GetPrimaryVertexTPC(),esd->GetMagneticField(),kVeryBig);
- // BKC
-
// only true if we have a tpc track
if (!track->FillTPCOnlyTrack(*tpcTrack))
{