]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliESDtrackCuts.cxx
removing obsolete code, for propagation of TPC only track
[u/mrichter/AliRoot.git] / ANALYSIS / AliESDtrackCuts.cxx
index 75943f7a64d90c86af2071d5566c19a80ae16c1a..8c142a131de207670fd24fe5856ee09e58d04f70 100644 (file)
@@ -81,6 +81,8 @@ AliESDtrackCuts::AliESDtrackCuts(const Char_t* name, const Char_t* title) : AliA
   fCutMaxC55(0),
   fCutMaxRel1PtUncertainty(0),
   fCutAcceptKinkDaughters(0),
+  fCutAcceptSharedTPCClusters(0),
+  fCutMaxFractionSharedTPCClusters(0),
   fCutRequireTPCRefit(0),
   fCutRequireTPCStandAlone(0),
   fCutRequireITSRefit(0),
@@ -163,6 +165,8 @@ AliESDtrackCuts::AliESDtrackCuts(const AliESDtrackCuts &c) : AliAnalysisCuts(c),
   fCutMaxC55(0),
   fCutMaxRel1PtUncertainty(0),
   fCutAcceptKinkDaughters(0),
+  fCutAcceptSharedTPCClusters(0),
+  fCutMaxFractionSharedTPCClusters(0),
   fCutRequireTPCRefit(0),
   fCutRequireTPCStandAlone(0),
   fCutRequireITSRefit(0),
@@ -286,6 +290,8 @@ void AliESDtrackCuts::Init()
   fCutMaxRel1PtUncertainty = 0;
 
   fCutAcceptKinkDaughters = 0;
+  fCutAcceptSharedTPCClusters = 0;
+  fCutMaxFractionSharedTPCClusters = 0;
   fCutRequireTPCRefit = 0;
   fCutRequireTPCStandAlone = 0;
   fCutRequireITSRefit = 0;
@@ -392,6 +398,8 @@ void AliESDtrackCuts::Copy(TObject &c) const
   target.fCutMaxRel1PtUncertainty = fCutMaxRel1PtUncertainty;
 
   target.fCutAcceptKinkDaughters = fCutAcceptKinkDaughters;
+  target.fCutAcceptSharedTPCClusters = fCutAcceptSharedTPCClusters;
+  target.fCutMaxFractionSharedTPCClusters = fCutMaxFractionSharedTPCClusters;
   target.fCutRequireTPCRefit = fCutRequireTPCRefit;
   target.fCutRequireTPCStandAlone = fCutRequireTPCStandAlone;
   target.fCutRequireITSRefit = fCutRequireITSRefit;
@@ -669,6 +677,9 @@ Bool_t AliESDtrackCuts::AcceptTrack(AliESDtrack* esdTrack)
     nClustersTPC = esdTrack->GetTPCclusters(0);
   }
 
+  Int_t nClustersTPCShared = esdTrack->GetTPCnclsS();
+  Float_t fracClustersTPCShared = -1.;
+
   Float_t chi2PerClusterITS = -1;
   Float_t chi2PerClusterTPC = -1;
   if (nClustersITS!=0)
@@ -679,6 +690,7 @@ Bool_t AliESDtrackCuts::AcceptTrack(AliESDtrack* esdTrack)
     } else {
       chi2PerClusterTPC = esdTrack->GetTPCchi2()/Float_t(nClustersTPC);
     }
+    fracClustersTPCShared = Float_t(nClustersTPCShared)/Float_t(nClustersTPC);
   }
 
   Double_t extCov[15];
@@ -801,17 +813,22 @@ Bool_t AliESDtrackCuts::AcceptTrack(AliESDtrack* esdTrack)
     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) {
@@ -907,8 +924,11 @@ Bool_t AliESDtrackCuts::CheckITSClusterRequirement(ITSClusterRequirement req, Bo
 //____________________________________________________________________
 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
@@ -928,15 +948,6 @@ AliESDtrack* AliESDtrackCuts::GetTPCOnlyTrack(AliESDEvent* esd, Int_t iTrack)
 
   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))
   {