]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
2 more steps in efficiency container for PID efficiency
authorjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 7 Mar 2013 13:02:43 +0000 (13:02 +0000)
committerjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 7 Mar 2013 13:02:43 +0000 (13:02 +0000)
PWGCF/Correlations/Base/AliAnalyseLeadingTrackUE.cxx
PWGCF/Correlations/Base/AliAnalyseLeadingTrackUE.h
PWGCF/Correlations/Base/AliUEHist.cxx
PWGCF/Correlations/Base/AliUEHistograms.cxx
PWGCF/Correlations/Base/AliUEHistograms.h
PWGCF/Correlations/DPhi/AliAnalysisTaskLeadingTrackUE.cxx
PWGCF/Correlations/DPhi/AliAnalysisTaskPhiCorrelations.cxx

index e3b68f5a6d943284065542fa4a1e5577bd3ce531..cbc1b08c01e38f5593cdb9e034e51e2b8a370a11 100644 (file)
@@ -369,11 +369,12 @@ void AliAnalyseLeadingTrackUE::RemoveWeakDecays(TObjArray* tracks, TObject* mcOb
 }
 
 //-------------------------------------------------------------------
-TObjArray* AliAnalyseLeadingTrackUE::GetAcceptedParticles(TObject* obj, TObject* arrayMC, Bool_t onlyprimaries, Int_t particleSpecies, Bool_t useEtaPtCuts)
+TObjArray* AliAnalyseLeadingTrackUE::GetAcceptedParticles(TObject* obj, TObject* arrayMC, Bool_t onlyprimaries, Int_t particleSpecies, Bool_t useEtaPtCuts, Bool_t speciesOnTracks)
 {
   // Returns an array of particles that pass the cuts, if arrayMC is given each reconstructed particle is replaced by its corresponding MC particles, depending on the parameter onlyprimaries only for primaries 
   // particleSpecies: -1 all particles are returned
   //                  0 (pions) 1 (kaons) 2 (protons) 3 (others) particles
+  // speciesOnTracks if kFALSE, particleSpecies is only applied on the matched MC particle (not on the track itself)
 
   Int_t nTracks = NParticles(obj);
   TObjArray* tracks = new TObjArray;
@@ -388,7 +389,7 @@ TObjArray* AliAnalyseLeadingTrackUE::GetAcceptedParticles(TObject* obj, TObject*
  
   // Loop over tracks or jets
   for (Int_t ipart=0; ipart<nTracks; ++ipart) {
-    AliVParticle* part = ParticleWithCuts( obj, ipart, onlyprimaries, particleSpecies );
+    AliVParticle* part = ParticleWithCuts( obj, ipart, onlyprimaries, (speciesOnTracks) ? particleSpecies : -1);
     if (!part) continue;
     
     if (useEtaPtCuts)
index 9fe73c5bcaa60cc22cbd7bceba108f34c5ae5191..f6c0386e5933274edd0ab27b36db6d0b1b51181a 100644 (file)
@@ -57,7 +57,7 @@ class AliAnalyseLeadingTrackUE : public TObject {
   AliVParticle*  ParticleWithCuts(TObject* obj, Int_t ipart, Bool_t onlyprimaries = kTRUE, Int_t particleSpecies = -1);                     // Returns track or MC particle at position "ipart" if passes selection criteria
   void          QSortTracks(TObjArray &a, Int_t first, Int_t last);               // Sort by pT an array of AliVParticles 
   TObjArray*     SortRegions(const AliVParticle* leading, TObject* obj, TObject* arrayMC, Bool_t onlyprimaries = kTRUE); // Assign particles to towards, away or transverse regions
-  TObjArray*     GetAcceptedParticles(TObject* obj, TObject* arrayMC, Bool_t onlyprimaries = kTRUE, Int_t particleSpecies = -1, Bool_t useEtaPtCuts = kFALSE); 
+  TObjArray*     GetAcceptedParticles(TObject* obj, TObject* arrayMC, Bool_t onlyprimaries = kTRUE, Int_t particleSpecies = -1, Bool_t useEtaPtCuts = kFALSE, Bool_t speciesOnTracks = kTRUE); 
   TObjArray*     GetFakeParticles(TObject* obj, TObject* arrayMC, Bool_t onlyprimaries, Int_t particleSpecies, Bool_t useEtaPtCuts);
   Bool_t         TriggerSelection(const TObject* obj);                                   // Select good triggers with AliPhysicsSelection class
   Bool_t         VertexSelection(const TObject* obj, Int_t ntracks, Double_t zed);       // Vertex selection: see implementation
index 756340268ea68a698d936b17efa78e2a071800c0..1344e487eedc4a71f0b3409a5b72e74cbfd24d25 100644 (file)
@@ -261,7 +261,7 @@ AliUEHist::AliUEHist(const char* reqHist, const char* binning) :
   iTrackBin[2] = kNSpeciesBins;
   iTrackBin[4] = nVertexBinsEff;
 
-  fTrackHistEfficiency = new AliCFContainer("fTrackHistEfficiency", "Tracking efficiency", 4, 5, iTrackBin);
+  fTrackHistEfficiency = new AliCFContainer("fTrackHistEfficiency", "Tracking efficiency", 6, 5, iTrackBin);
   fTrackHistEfficiency->SetBinLimits(0, trackBins[0]);
   fTrackHistEfficiency->SetVarTitle(0, trackAxisTitle[0]);
   fTrackHistEfficiency->SetBinLimits(1, pTBinsFine);
@@ -2316,7 +2316,7 @@ TH2D* AliUEHist::GetTrackingEfficiency()
 //____________________________________________________________________
 TH2D* AliUEHist::GetFakeRate()
 {
-  return dynamic_cast<TH2D*> (GetTrackEfficiency(kCFStepTracked, kCFStepReconstructed, 0, 1));
+  return dynamic_cast<TH2D*> (GetTrackEfficiency(kCFStepTracked, (CFStep) (kCFStepTracked+3), 0, 1));
 }
 
 //____________________________________________________________________
@@ -2342,7 +2342,7 @@ TH1D* AliUEHist::GetTrackingEfficiency(Int_t axis)
 //____________________________________________________________________
 TH1D* AliUEHist::GetFakeRate(Int_t axis)
 {
-  return dynamic_cast<TH1D*> (GetTrackEfficiency(kCFStepTracked, kCFStepReconstructed, axis));
+  return dynamic_cast<TH1D*> (GetTrackEfficiency(kCFStepTracked, (CFStep) (kCFStepTracked+3), axis));
 }
 //____________________________________________________________________
 TH2D* AliUEHist::GetTrackingCorrection()
index 884f9d14e2a2dd71720a5c25403fd93aa39483ae..429ee61faa2dc05e76cbf21ba650d839e67f5c58 100644 (file)
@@ -859,16 +859,18 @@ void AliUEHistograms::FillCorrelations(Double_t centrality, Float_t zVtx, AliUEH
 }
   
 //____________________________________________________________________
-void AliUEHistograms::FillTrackingEfficiency(TObjArray* mc, TObjArray* recoPrim, TObjArray* recoAll, TObjArray* fake, Int_t particleType, Double_t centrality, Double_t zVtx)
+void AliUEHistograms::FillTrackingEfficiency(TObjArray* mc, TObjArray* recoPrim, TObjArray* recoAll, TObjArray* recoPrimPID, TObjArray* recoAllPID, TObjArray* fake, Int_t particleType, Double_t centrality, Double_t zVtx)
 {
   // fills the tracking efficiency objects
   //
   // mc: all primary MC particles
   // recoPrim: reconstructed primaries (again MC particles)
   // recoAll: reconstructed (again MC particles)
+  // recoPrim: reconstructed primaries with checks on PID (again MC particles)
+  // recoAll: reconstructed with checks on PID (again MC particles)
   // particleType is: 0 for pion, 1 for kaon, 2 for proton, 3 for others
  
-  for (Int_t step=0; step<4; step++)
+  for (Int_t step=0; step<6; step++)
   {
     TObjArray* list = mc;
     if (step == 1)
@@ -876,6 +878,10 @@ void AliUEHistograms::FillTrackingEfficiency(TObjArray* mc, TObjArray* recoPrim,
     else if (step == 2)
       list = recoAll;
     else if (step == 3)
+      list = recoPrimPID;
+    else if (step == 4)
+      list = recoAllPID;
+    else if (step == 5)
       list = fake;
     
     if (!list)
index 5c589d3c7ac3835314bc86d1eeadc8c919b4418b..ad394d66ba423968f23755c3c69d725178bef329 100644 (file)
@@ -34,7 +34,7 @@ class AliUEHistograms : public TNamed
   void Fill(AliVParticle* leadingMC, AliVParticle* leadingReco);
   void FillEvent(Int_t eventType, Int_t step);
   void FillEvent(Double_t centrality, Int_t step);
-  void FillTrackingEfficiency(TObjArray* mc, TObjArray* recoPrim, TObjArray* recoAll, TObjArray* fake, Int_t particleType, Double_t centrality = 0, Double_t zVtx = 0);
+  void FillTrackingEfficiency(TObjArray* mc, TObjArray* recoPrim, TObjArray* recoAll, TObjArray* recoPrimPID, TObjArray* recoAllPID, TObjArray* fake, Int_t particleType, Double_t centrality = 0, Double_t zVtx = 0);
   void FillFakePt(TObjArray* fake, Double_t centrality);
  
   void CopyReconstructedData(AliUEHistograms* from);
index 4762ea4ce867fa667f507d7522af7f78a7a29a2b..3607b24501f53b978b32ccdd6cdf7803e6377020 100644 (file)
@@ -401,7 +401,7 @@ void  AliAnalysisTaskLeadingTrackUE::AnalyseCorrectionMode()
                TObjArray* primRecoTracksMatched = fAnalyseUE->GetAcceptedParticles(fAOD, fArrayMC, kTRUE, particleSpecies);
                TObjArray* allRecoTracksMatched = fAnalyseUE->GetAcceptedParticles(fAOD, fArrayMC, kFALSE, particleSpecies);
 
-               fHistosUE->FillTrackingEfficiency(primMCParticles, primRecoTracksMatched, allRecoTracksMatched, 0, particleSpecies);
+               fHistosUE->FillTrackingEfficiency(primMCParticles, primRecoTracksMatched, allRecoTracksMatched, 0, 0, 0, particleSpecies);
               
                delete primMCParticles;
                delete primRecoTracksMatched;
index fc3f270baaf2c30ba07b567346b5451a15a3f221..5c808bcf6026d2a54d113c684ebcf93563a1f361 100644 (file)
@@ -589,12 +589,22 @@ void  AliAnalysisTaskPhiCorrelations::AnalyseCorrectionMode()
       for (Int_t particleSpecies = 0; particleSpecies < 4; particleSpecies++)
       {
         TObjArray* primMCParticles = fAnalyseUE->GetAcceptedParticles(mc, 0x0, kTRUE, particleSpecies, kTRUE);
-        TObjArray* primRecoTracksMatched = fAnalyseUE->GetAcceptedParticles(inputEvent, mc, kTRUE, particleSpecies, kTRUE);
-        TObjArray* allRecoTracksMatched =  fAnalyseUE->GetAcceptedParticles(inputEvent, mc, kFALSE, particleSpecies, kTRUE);
+        TObjArray* primRecoTracksMatched = fAnalyseUE->GetAcceptedParticles(inputEvent, mc, kTRUE, particleSpecies, kTRUE, kFALSE);
+        TObjArray* allRecoTracksMatched  = fAnalyseUE->GetAcceptedParticles(inputEvent, mc, kFALSE, particleSpecies, kTRUE, kFALSE);
+        TObjArray* primRecoTracksMatchedPID = 0;
+        TObjArray* allRecoTracksMatchedPID  = 0;
+       
+       if (fHelperPID)
+       {
+         primRecoTracksMatchedPID = fAnalyseUE->GetAcceptedParticles(inputEvent, mc, kTRUE, particleSpecies, kTRUE, kTRUE);
+         allRecoTracksMatchedPID  = fAnalyseUE->GetAcceptedParticles(inputEvent, mc, kFALSE, particleSpecies, kTRUE, kTRUE);
+       }
        
        CleanUp(primMCParticles, mc, skipParticlesAbove);
        CleanUp(primRecoTracksMatched, mc, skipParticlesAbove);
        CleanUp(allRecoTracksMatched, mc, skipParticlesAbove);
+       CleanUp(primRecoTracksMatchedPID, mc, skipParticlesAbove);
+       CleanUp(allRecoTracksMatchedPID, mc, skipParticlesAbove);
        
        // select charges
        if (fTriggerSelectCharge != 0)
@@ -602,9 +612,11 @@ void  AliAnalysisTaskPhiCorrelations::AnalyseCorrectionMode()
          SelectCharge(primMCParticles);
          SelectCharge(primRecoTracksMatched);
          SelectCharge(allRecoTracksMatched);
+         SelectCharge(primRecoTracksMatchedPID);
+         SelectCharge(allRecoTracksMatchedPID);
        }
       
-        fHistos->FillTrackingEfficiency(primMCParticles, primRecoTracksMatched, allRecoTracksMatched, 0, particleSpecies, centrality, zVtx);
+        fHistos->FillTrackingEfficiency(primMCParticles, primRecoTracksMatched, allRecoTracksMatched, primRecoTracksMatchedPID, allRecoTracksMatchedPID, 0, particleSpecies, centrality, zVtx);
         
 //     Printf("%d --> %d %d %d", particleSpecies, primMCParticles->GetEntries(), primRecoTracksMatched->GetEntries(), allRecoTracksMatched->GetEntries());
 
@@ -617,7 +629,7 @@ void  AliAnalysisTaskPhiCorrelations::AnalyseCorrectionMode()
       CleanUp((TObjArray*) fakeParticles->At(0), mc, skipParticlesAbove);
       CleanUp((TObjArray*) fakeParticles->At(1), mc, skipParticlesAbove);
 
-      fHistos->FillTrackingEfficiency(0, 0, 0, (TObjArray*) fakeParticles->At(2), -1, centrality, zVtx);
+      fHistos->FillTrackingEfficiency(0, 0, 0, 0, 0, (TObjArray*) fakeParticles->At(2), 0, centrality, zVtx);
       fHistos->FillFakePt(fakeParticles, centrality);
 //       Printf(">>>>> %d %d %d fakes", ((TObjArray*) fakeParticles->At(0))->GetEntriesFast(), ((TObjArray*) fakeParticles->At(1))->GetEntriesFast(), ((TObjArray*) fakeParticles->At(2))->GetEntriesFast());
       delete fakeParticles;
@@ -1145,6 +1157,9 @@ void AliAnalysisTaskPhiCorrelations::CleanUp(TObjArray* tracks, TObject* mcObj,
 {
   // calls RemoveInjectedSignals, RemoveWeakDecays and RemoveDuplicates
   
+  if (!tracks)
+    return;
+  
   if (fInjectedSignals)
     fAnalyseUE->RemoveInjectedSignals(tracks, mcObj, maxLabel);
   if (fRemoveWeakDecays)
@@ -1158,6 +1173,9 @@ void AliAnalysisTaskPhiCorrelations::SelectCharge(TObjArray* tracks)
 {
   // remove particles with charge not selected (depending on fTriggerSelectCharge)
   
+  if (!tracks)
+    return;
+  
   Int_t before = tracks->GetEntriesFast();
 
   for (Int_t i=0; i<before; ++i)