]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Reco and pid efficiencies in two separate functions
authorpchrist <pchrist@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 10 Apr 2009 14:20:31 +0000 (14:20 +0000)
committerpchrist <pchrist@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 10 Apr 2009 14:20:31 +0000 (14:20 +0000)
PWG2/SPECTRA/AliAnalysisTaskProtonsQA.cxx
PWG2/SPECTRA/AliProtonQAAnalysis.cxx
PWG2/SPECTRA/AliProtonQAAnalysis.h

index def16d08170476e2b328f72b4328d560c513dd37..0e8f3d6e54772771119a14a9deb7e76c823bd2a9 100644 (file)
@@ -145,8 +145,8 @@ void AliAnalysisTaskProtonsQA::Exec(Option_t *) {
     if(vertex) {
       fProtonQAAnalysis->RunQAAnalysis(stack, fESD, vertex);
       fProtonQAAnalysis->RunMCAnalysis(stack);
     if(vertex) {
       fProtonQAAnalysis->RunQAAnalysis(stack, fESD, vertex);
       fProtonQAAnalysis->RunMCAnalysis(stack);
-      //fProtonQAAnalysis->RunEfficiencyAnalysis(stack, fESD, vertex);
-      fProtonQAAnalysis->RunEfficiencyAnalysis(fMC, fESD, vertex);
+      fProtonQAAnalysis->RunPIDEfficiencyAnalysis(stack, fESD);
+      fProtonQAAnalysis->RunReconstructionEfficiencyAnalysis(fMC, fESD, vertex);
     }//accepted vertex
   }//triggered event
   
     }//accepted vertex
   }//triggered event
   
index 3563e7339bfaaab7251c1119f4fdc9434bb7b1bb..9bb6687da7ebce01b89234e3272484bfe4a06f1f 100644 (file)
@@ -2808,9 +2808,9 @@ void AliProtonQAAnalysis::InitQA() {
 }
 
 //____________________________________________________________________//
 }
 
 //____________________________________________________________________//
-void AliProtonQAAnalysis::RunEfficiencyAnalysis(AliMCEvent *const mcEvent, 
-                                               AliESDEvent *esd,
-                                               const AliESDVertex *vertex) {
+void AliProtonQAAnalysis::RunReconstructionEfficiencyAnalysis(AliMCEvent *const mcEvent, 
+                                                             AliESDEvent *esd,
+                                                             const AliESDVertex *vertex) {
   //Run the reconstruction efficiency code (primaries & secondaries)
   AliStack *stack = mcEvent->Stack();
 
   //Run the reconstruction efficiency code (primaries & secondaries)
   AliStack *stack = mcEvent->Stack();
 
@@ -3074,39 +3074,7 @@ void AliProtonQAAnalysis::RunEfficiencyAnalysis(AliMCEvent *const mcEvent,
                                                          particle->Pt());
            }//hadronic interactions
          }//secondaries
                                                          particle->Pt());
            }//hadronic interactions
          }//secondaries
-       }//initial antiprotons
-       
-       //pid
-       if(fProtonAnalysisBase->IsProton(track)) {
-         if(fProtonAnalysisBase->GetEtaMode())
-           ((TH2D *)(fEfficiencyList->At(14)))->Fill(particle->Eta(),
-                                                     particle->Pt());
-         else
-           ((TH2D *)(fEfficiencyList->At(14)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
-                                                              particle->Py(),
-                                                              particle->Pz()),
-                                                     particle->Pt());
-         if(TMath::Abs(pdgcode) == 2212) {
-           if(fProtonAnalysisBase->GetEtaMode())
-             ((TH2D *)(fEfficiencyList->At(13)))->Fill(particle->Eta(),
-                                                       particle->Pt());
-           else
-             ((TH2D *)(fEfficiencyList->At(13)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
-                                                                particle->Py(),
-                                                                particle->Pz()),
-                                                       particle->Pt());
-         }//properly identified as proton
-         else {
-           if(fProtonAnalysisBase->GetEtaMode())
-             ((TH2D *)(fEfficiencyList->At(15)))->Fill(particle->Eta(),
-                                                       particle->Pt());
-           else
-             ((TH2D *)(fEfficiencyList->At(15)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
-                                                                particle->Py(),
-                                                                particle->Pz()),
-                                                       particle->Pt());
-         }//contamination
-       }//identified as proton
+       }//initial antiprotons  
       }//TPC only tracks
       else {
        Int_t label = TMath::Abs(track->GetLabel());
       }//TPC only tracks
       else {
        Int_t label = TMath::Abs(track->GetLabel());
@@ -3231,36 +3199,6 @@ void AliProtonQAAnalysis::RunEfficiencyAnalysis(AliMCEvent *const mcEvent,
          }//secondaries
        }//initial antiprotons
        
          }//secondaries
        }//initial antiprotons
        
-       //pid
-       if(fProtonAnalysisBase->IsProton(track)) {
-         if(fProtonAnalysisBase->GetEtaMode())
-           ((TH2D *)(fEfficiencyList->At(14)))->Fill(particle->Eta(),
-                                                     particle->Pt());
-         else ((TH2D *)(fEfficiencyList->At(14)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
-                                                                 particle->Py(),
-                                                                 particle->Pz()),
-                                                        particle->Pt());
-         if(TMath::Abs(pdgcode) == 2212) {
-           if(fProtonAnalysisBase->GetEtaMode())
-             ((TH2D *)(fEfficiencyList->At(13)))->Fill(particle->Eta(),
-                                                       particle->Pt());
-           else
-             ((TH2D *)(fEfficiencyList->At(13)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
-                                                                particle->Py(),
-                                                                particle->Pz()),
-                                                       particle->Pt());
-         }//properly identified as proton
-         else {
-           if(fProtonAnalysisBase->GetEtaMode())
-             ((TH2D *)(fEfficiencyList->At(15)))->Fill(particle->Eta(),
-                                                       particle->Pt());
-           else
-             ((TH2D *)(fEfficiencyList->At(15)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),
-                                                                particle->Py(),
-                                                                particle->Pz()),
-                                                       particle->Pt());
-         }//contamination
-       }//identified as proton
       }//global tracking
     }//track loop
     labelArray.Reset();
       }//global tracking
     }//track loop
     labelArray.Reset();
@@ -3269,6 +3207,56 @@ void AliProtonQAAnalysis::RunEfficiencyAnalysis(AliMCEvent *const mcEvent,
   labelMCArray.Reset();
 }
 
   labelMCArray.Reset();
 }
 
+//____________________________________________________________________//
+void AliProtonQAAnalysis::RunPIDEfficiencyAnalysis(AliStack *const stack, 
+                                                  AliESDEvent *esd) {
+  Int_t nGoodTracks = esd->GetNumberOfTracks();
+  TArrayI labelArray(nGoodTracks);
+  Int_t labelCounter = 0;
+  for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) {
+    AliESDtrack* track = esd->GetTrack(iTracks);
+    if(!track) continue;
+    
+    //TPC only
+    if((fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kTPC)||(fProtonAnalysisBase->GetAnalysisMode()==AliProtonAnalysisBase::kHybrid)) {
+      AliExternalTrackParam *tpcTrack = (AliExternalTrackParam *)track->GetTPCInnerParam();
+      if(!tpcTrack) continue;
+    }
+       
+    Int_t label = TMath::Abs(track->GetLabel());
+    if(IsLabelUsed(labelArray,label)) continue;
+    labelArray.AddAt(label,labelCounter);
+    labelCounter += 1;
+               
+    TParticle *particle = stack->Particle(label);
+    if(!particle) continue;
+    Int_t pdgcode = particle->GetPdgCode();
+    
+    //pid
+    if(fProtonAnalysisBase->IsProton(track)) {
+      if(fProtonAnalysisBase->GetEtaMode())
+       ((TH2D *)(fEfficiencyList->At(14)))->Fill(particle->Eta(),
+                                                 particle->Pt());
+      else ((TH2D *)(fEfficiencyList->At(14)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()),particle->Pt());
+      if(TMath::Abs(pdgcode) == 2212) {
+       if(fProtonAnalysisBase->GetEtaMode())
+         ((TH2D *)(fEfficiencyList->At(13)))->Fill(particle->Eta(),
+                                                   particle->Pt());
+       else
+         ((TH2D *)(fEfficiencyList->At(13)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()),particle->Pt());
+      }//properly identified as proton
+      else {
+       if(fProtonAnalysisBase->GetEtaMode())
+         ((TH2D *)(fEfficiencyList->At(15)))->Fill(particle->Eta(),
+                                                   particle->Pt());
+       else
+         ((TH2D *)(fEfficiencyList->At(15)))->Fill(fProtonAnalysisBase->Rapidity(particle->Px(),particle->Py(),particle->Pz()),particle->Pt());
+      }//contamination
+    }//identified as proton
+  }//ESD track loop
+  labelArray.Reset();
+}
+
 //____________________________________________________________________//
 void AliProtonQAAnalysis::RunEfficiencyAnalysis(AliStack *const stack, 
                                                AliESDEvent *esd,
 //____________________________________________________________________//
 void AliProtonQAAnalysis::RunEfficiencyAnalysis(AliStack *const stack, 
                                                AliESDEvent *esd,
index 594b0b21506c4f5fa20956e657fdb41d1791cd7b..7c85819102e8598c0bd29b92179ef3368d6e41d5 100644 (file)
@@ -56,9 +56,11 @@ class AliProtonQAAnalysis : public TObject {
   TList *GetGlobalQAList() const {return fGlobalQAList;}
 
   //Efficiency plots (reconstruction & PID)
   TList *GetGlobalQAList() const {return fGlobalQAList;}
 
   //Efficiency plots (reconstruction & PID)
-  void RunEfficiencyAnalysis(AliMCEvent *mcEvent, 
-                            AliESDEvent *esd,
-                            const AliESDVertex *vertex);
+  void RunReconstructionEfficiencyAnalysis(AliMCEvent *mcEvent, 
+                                          AliESDEvent *esd,
+                                          const AliESDVertex *vertex);
+  void RunPIDEfficiencyAnalysis(AliStack *stack, 
+                               AliESDEvent *esd);
   void RunEfficiencyAnalysis(AliStack *stack, 
                             AliESDEvent *esd,
                             const AliESDVertex *vertex);
   void RunEfficiencyAnalysis(AliStack *stack, 
                             AliESDEvent *esd,
                             const AliESDVertex *vertex);