- //if ( !(((AliAODTrack*)part)->TestFilterBit(fFilterBit)) && !(((AliAODTrack*)part)->TestFilterBit(32)) ) return 0;
- // only primary candidates
- //if ( ((AliAODTrack*)part)->IsPrimaryCandidate() )return 0;
+ if (fTrackStatus != 0 && !CheckTrack(part)) return 0;
+
+ // DCA XY
+ if (fDCAXYCut)
+ {
+ const AliVVertex* vertex = aodEvent->GetPrimaryVertex();
+ if (!vertex)
+ return 0;
+
+ Double_t pos[2];
+ Double_t covar[3];
+ AliAODTrack* clone = (AliAODTrack*) part->Clone();
+ Bool_t success = clone->PropagateToDCA(vertex, aodEvent->GetHeader()->GetMagneticField(), 3, pos, covar);
+ delete clone;
+ if (!success)
+ return 0;
+
+// Printf("%f", ((AliAODTrack*)part)->DCA());
+// Printf("%f", pos[0]);
+ if (TMath::Abs(pos[0]) > fDCAXYCut->Eval(part->Pt()))
+ return 0;
+ }
+
+ if (fSharedClusterCut >= 0)
+ {
+ Double_t frac = Double_t(((AliAODTrack*)part)->GetTPCnclsS()) / Double_t(((AliAODTrack*)part)->GetTPCncls());
+ if (frac > fSharedClusterCut)
+ return 0;
+ }
+
+ if (fCrossedRowsCut >= 0)
+ {
+ if (((AliAODTrack*) part)->GetTPCNCrossedRows() < fCrossedRowsCut)
+ return 0;
+ }
+
+ if (fFoundFractionCut >= 0)
+ {
+ UInt_t findableClusters = ((AliAODTrack*) part)->GetTPCNclsF();
+ if (findableClusters == 0)
+ return 0;
+ if (((Double_t) ((AliAODTrack*) part)->GetTPCNCrossedRows() / findableClusters) < fFoundFractionCut)
+ return 0;
+ }
+