]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Added functionality to retrieve a list of TPC-only from the original esd tracks
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 3 Jul 2008 07:59:33 +0000 (07:59 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 3 Jul 2008 07:59:33 +0000 (07:59 +0000)
ANALYSIS/AliESDtrackCuts.cxx
ANALYSIS/AliESDtrackCuts.h

index addaefb47e18b40b9980bad1eea93099be1ba415..ec144cc15085b4ff79a393d60ba9d068a1845cea 100644 (file)
@@ -387,16 +387,12 @@ void AliESDtrackCuts::Copy(TObject &c) const
 Long64_t AliESDtrackCuts::Merge(TCollection* list) {
   // Merge a list of AliESDtrackCuts objects with this (needed for PROOF)
   // Returns the number of merged objects (including this)
-
   if (!list)
     return 0;
-  
   if (list->IsEmpty())
     return 1;
-
   if (!fHistogramsOn)
     return 0;
-
   TIterator* iter = list->MakeIterator();
   TObject* obj;
 
@@ -444,7 +440,6 @@ Long64_t AliESDtrackCuts::Merge(TCollection* list) {
 
     count++;
   }
-
   return count+1;
 }
 
@@ -458,6 +453,7 @@ Float_t AliESDtrackCuts::GetSigmaToVertex(AliESDtrack* esdTrack)
   Float_t bRes[2];
   Float_t bCov[3];
   esdTrack->GetImpactParameters(b,bCov);
+  
   if (bCov[0]<=0 || bCov[2]<=0) {
     AliDebug(1, "Estimated b resolution lower or equal zero!");
     bCov[0]=0; bCov[2]=0;
@@ -537,6 +533,7 @@ AliESDtrackCuts::AcceptTrack(AliESDtrack* esdTrack) {
   // fTracks.fP   //GetMass
   // fTracks.fKinkIndexes
 
+
   UInt_t status = esdTrack->GetStatus();
 
   // dummy array
@@ -546,15 +543,12 @@ AliESDtrackCuts::AcceptTrack(AliESDtrack* esdTrack) {
   Int_t nClustersITS = esdTrack->GetITSclusters(fIdxInt);
   Int_t nClustersTPC = esdTrack->GetTPCclusters(fIdxInt);
   
-
-
   Float_t chi2PerClusterITS = -1;
   Float_t chi2PerClusterTPC = -1;
   if (nClustersITS!=0)
     chi2PerClusterITS = esdTrack->GetITSchi2()/Float_t(nClustersITS);
   if (nClustersTPC!=0)
     chi2PerClusterTPC = esdTrack->GetTPCchi2()/Float_t(nClustersTPC);
-
   Double_t extCov[15];
   esdTrack->GetExternalCovariance(extCov);
 
@@ -565,6 +559,7 @@ AliESDtrackCuts::AcceptTrack(AliESDtrack* esdTrack) {
   // (assuming the mass is known)
   Double_t p[3];
   esdTrack->GetPxPyPz(p);
+
   Float_t momentum = TMath::Sqrt(TMath::Power(p[0],2) + TMath::Power(p[1],2) + TMath::Power(p[2],2));
   Float_t pt       = TMath::Sqrt(TMath::Power(p[0],2) + TMath::Power(p[1],2));
   Float_t energy   = TMath::Sqrt(TMath::Power(esdTrack->GetMass(),2) + TMath::Power(momentum,2));
@@ -639,7 +634,6 @@ AliESDtrackCuts::AcceptTrack(AliESDtrack* esdTrack) {
   // filling histograms
   if (fHistogramsOn) {
     fhCutStatistics->Fill(fhCutStatistics->GetBinCenter(fhCutStatistics->GetXaxis()->FindBin("n tracks")));
-    
     if (cut)
       fhCutStatistics->Fill(fhCutStatistics->GetBinCenter(fhCutStatistics->GetXaxis()->FindBin("n cut tracks")));
     
@@ -674,6 +668,7 @@ AliESDtrackCuts::AcceptTrack(AliESDtrack* esdTrack) {
     Float_t bRes[2];
     Float_t bCov[3];
     esdTrack->GetImpactParameters(b,bCov);
+
     if (bCov[0]<=0 || bCov[2]<=0) {
       AliDebug(1, "Estimated b resolution lower or equal zero!");
       bCov[0]=0; bCov[2]=0;
@@ -750,17 +745,17 @@ TObjArray* AliESDtrackCuts::GetAcceptedTracks(AliESD* esd)
 
   TObjArray* acceptedTracks = new TObjArray();
 
+
   // loop over esd tracks
   for (Int_t iTrack = 0; iTrack < esd->GetNumberOfTracks(); iTrack++) {
     AliESDtrack* track = esd->GetTrack(iTrack);
-
     if (AcceptTrack(track))
-      acceptedTracks->Add(track);
+       acceptedTracks->Add(track);
   }
-
   return acceptedTracks;
 }
 
+
 //____________________________________________________________________
 Int_t AliESDtrackCuts::CountAcceptedTracks(AliESD* esd)
 {
@@ -782,11 +777,12 @@ Int_t AliESDtrackCuts::CountAcceptedTracks(AliESD* esd)
 }
 
 //____________________________________________________________________
-TObjArray* AliESDtrackCuts::GetAcceptedTracks(AliESDEvent* esd)
+TObjArray* AliESDtrackCuts::GetAcceptedTracks(AliESDEvent* esd,Bool_t bTPC)
 {
   //
   // returns an array of all tracks that pass the cuts
-  //
+  // or an array of TPC only tracks (propagated to the TPC vertex during reco)
+  // tracks that pass the cut
 
   TObjArray* acceptedTracks = new TObjArray();
 
@@ -794,10 +790,39 @@ TObjArray* AliESDtrackCuts::GetAcceptedTracks(AliESDEvent* esd)
   for (Int_t iTrack = 0; iTrack < esd->GetNumberOfTracks(); iTrack++) {
     AliESDtrack* track = esd->GetTrack(iTrack);
 
-    if (AcceptTrack(track))
+    if(bTPC){
+      if(!esd->GetPrimaryVertexTPC())return acceptedTracks; // No TPC vertex no TPC tracks
+
+      AliESDtrack *tpcTrack = new AliESDtrack();
+      bool bAdd = false;
+      Double_t pTPC[2],covTPC[3];
+      // 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
+
+      if(track->FillTPCOnlyTrack(*tpcTrack)){ // only true if we have a tpc track
+       // propagate to Vertex
+       // not needed for normal reconstructed ESDs...
+       //      if(tpcTrack->PropagateToDCA(esd->GetPrimaryVertexTPC(), esd->GetMagneticField(), 10000,  pTPC, covTPC))
+       if(AcceptTrack(tpcTrack)){
+         acceptedTracks->Add(tpcTrack);
+         bAdd = true;
+       }      
+      }
+      if(!bAdd)delete tpcTrack;
+    }
+    else if(AcceptTrack(track)){// we cut by passing the original track
+      // default case
       acceptedTracks->Add(track);
-  }
-
+    } 
+  } 
+  if(bTPC)acceptedTracks->SetOwner(kTRUE);
   return acceptedTracks;
 }
 
@@ -813,7 +838,6 @@ Int_t AliESDtrackCuts::CountAcceptedTracks(AliESDEvent* esd)
   // loop over esd tracks
   for (Int_t iTrack = 0; iTrack < esd->GetNumberOfTracks(); iTrack++) {
     AliESDtrack* track = esd->GetTrack(iTrack);
-
     if (AcceptTrack(track))
       count++;
   }
index 0f3fbbc5e5f467a4215e73b15edeb01b965ff8f5..2336956a7dbf422f33d89fa447d3b024cdea3e17 100644 (file)
@@ -38,13 +38,15 @@ class AliESDtrackCuts : public AliAnalysisCuts
 public:
   AliESDtrackCuts(const Char_t* name = "AliESDtrackCuts", const Char_t* title = "");
   virtual ~AliESDtrackCuts();
+
   Bool_t IsSelected(TObject* obj)
        {return AcceptTrack((AliESDtrack*)obj);}
   Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
+
   Bool_t AcceptTrack(AliESDtrack* esdTrack);
   TObjArray* GetAcceptedTracks(AliESD* esd);
   Int_t CountAcceptedTracks(AliESD* esd);
-  TObjArray* GetAcceptedTracks(AliESDEvent* esd);
+  TObjArray* GetAcceptedTracks(AliESDEvent* esd,Bool_t bTPC = kFALSE);
   Int_t CountAcceptedTracks(AliESDEvent* esd);
 
   virtual Long64_t Merge(TCollection* list);