From: pchrist Date: Fri, 10 Apr 2009 14:20:31 +0000 (+0000) Subject: Reco and pid efficiencies in two separate functions X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=c20898dec7706dc9bb1b32fbcdfc63655e6a34e0;ds=sidebyside Reco and pid efficiencies in two separate functions --- diff --git a/PWG2/SPECTRA/AliAnalysisTaskProtonsQA.cxx b/PWG2/SPECTRA/AliAnalysisTaskProtonsQA.cxx index def16d08170..0e8f3d6e547 100644 --- a/PWG2/SPECTRA/AliAnalysisTaskProtonsQA.cxx +++ b/PWG2/SPECTRA/AliAnalysisTaskProtonsQA.cxx @@ -145,8 +145,8 @@ void AliAnalysisTaskProtonsQA::Exec(Option_t *) { 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 diff --git a/PWG2/SPECTRA/AliProtonQAAnalysis.cxx b/PWG2/SPECTRA/AliProtonQAAnalysis.cxx index 3563e7339bf..9bb6687da7e 100644 --- a/PWG2/SPECTRA/AliProtonQAAnalysis.cxx +++ b/PWG2/SPECTRA/AliProtonQAAnalysis.cxx @@ -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(); @@ -3074,39 +3074,7 @@ void AliProtonQAAnalysis::RunEfficiencyAnalysis(AliMCEvent *const mcEvent, 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()); @@ -3231,36 +3199,6 @@ void AliProtonQAAnalysis::RunEfficiencyAnalysis(AliMCEvent *const mcEvent, }//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(); @@ -3269,6 +3207,56 @@ void AliProtonQAAnalysis::RunEfficiencyAnalysis(AliMCEvent *const mcEvent, 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, diff --git a/PWG2/SPECTRA/AliProtonQAAnalysis.h b/PWG2/SPECTRA/AliProtonQAAnalysis.h index 594b0b21506..7c85819102e 100644 --- a/PWG2/SPECTRA/AliProtonQAAnalysis.h +++ b/PWG2/SPECTRA/AliProtonQAAnalysis.h @@ -56,9 +56,11 @@ class AliProtonQAAnalysis : public TObject { 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);