+++ /dev/null
-/////////////////////////////////////////////////////////////////////
-// CheckEfficiencies.C (called by AODQAChecks.C) //
-// //
-// Written by John Groh //
-/////////////////////////////////////////////////////////////////////
-
-void CheckEfficiencies(AliSpectraAODHistoManager * hman,
- TCanvas*& cEfficienciesAllRuns,
- TH1F*& EfficiencyPiPlus,
- TH1F*& EfficiencyKPlus,
- TH1F*& EfficiencyProton,
- TH1F*& EfficiencyPiMinus,
- TH1F*& EfficiencyKMinus,
- TH1F*& EfficiencyAntiproton,
- Float_t FixedPtEff,
- Int_t runs[],
- Int_t nRuns,
- Int_t irun)
-{
- // canvas for printing individual runs seperately to Efficiencies.pdf
- TCanvas * cEfficienciesIndiv = new TCanvas("cEfficienciesIndiv","cEfficienciesIndiv");
- cEfficienciesIndiv->Divide(3,2);
-
- // calculate correction factors
- TH1F * CorrFact[nCharge*nPart];
- TLegend * lEfficiencyAllRuns[nCharge*nPart];
- for (Int_t icharge=0; icharge<nCharge; icharge++)
- {
- for (Int_t ipart=0; ipart<nPart; ipart++)
- {
- // get recreated histo and format it
- Int_t index = ipart + nPart*icharge;
- TString hname = Form("hHistPtRecSigma%s%s",Particle[ipart].Data(),Sign[icharge].Data());
- CorrFact[index] = (TH1F*)((TH1F*)hman->GetPtHistogram1D(hname.Data(),-1,-1))->Clone();
- CorrFact[index]->SetName(Form("CorrFact_%s%s",Particle[ipart].Data(),Sign[icharge].Data()));
- CorrFact[index]->SetTitle(Form("CorrFact_%s%s",Particle[ipart].Data(),Sign[icharge].Data()));
- CorrFact[index]->SetMarkerStyle(Marker[index]);
- CorrFact[index]->SetMarkerColor(Color[ipart]);
- CorrFact[index]->SetLineColor(Color[ipart]);
- CorrFact[index]->SetStats(kFALSE);
- CorrFact[index]->GetYaxis()->SetTitle("MC Correction Factor");
-
- // divide it by MC truth histo
- hname = Form("hHistPtGenTruePrimary%s%s",Particle[ipart].Data(),Sign[icharge].Data());
- CorrFact[index]->Divide(CorrFact[index],(TH1F*)((TH1F*)hman->GetPtHistogram1D(hname.Data(),-1,-1))->Clone(),1,1,"B"); // binomial error
-
- // draw efficiency histos for individual runs
- cEfficienciesIndiv->cd(index+1);
- TLegend * lEfficiencyIndiv = new TLegend(.55,.15,.85,.25);
- lEfficiencyIndiv->AddEntry(CorrFact[index],Form("%s, Run %i",Names[index].Data(), runs[irun]),"lpe");
- CorrFact[index]->DrawCopy();
- lEfficiencyIndiv->DrawClone();
-
- // superimpose efficiency histos on a different canvas for all runs
- cEfficienciesAllRuns->cd(index+1);
- if (irun == 0)
- {
- CorrFact[index]->DrawCopy();
- lEfficiencyAllRuns[index] = new TLegend(.15,.75,.35,.85);
- lEfficiencyAllRuns[index]->AddEntry(CorrFact[index],Names[index].Data(),"lpe");
- lEfficiencyAllRuns[index]->SetFillColor(0);
- lEfficiencyAllRuns[index]->DrawClone();
- }
- else CorrFact[index]->DrawCopy("same");
-
- // using the values of FixedPtEff for a fixed pt, plot the correction factors vs the run #
- switch (index)
- {
- case 0: // PiPlus
- EfficiencyPiPlus->SetBinContent(irun+1,CorrFact[index]->GetBinContent(CorrFact[index]->FindBin(FixedPtEff)));
- EfficiencyPiPlus->SetBinError(irun+1,CorrFact[index]->GetBinError(CorrFact[index]->FindBin(FixedPtEff)));
- break;
- case 1: // KPlus
- EfficiencyKPlus->SetBinContent(irun+1,CorrFact[index]->GetBinContent(CorrFact[index]->FindBin(FixedPtEff)));
- EfficiencyKPlus->SetBinError(irun+1,CorrFact[index]->GetBinError(CorrFact[index]->FindBin(FixedPtEff)));
- break;
- case 2: // Proton
- EfficiencyProton->SetBinContent(irun+1,CorrFact[index]->GetBinContent(CorrFact[index]->FindBin(FixedPtEff)));
- EfficiencyProton->SetBinError(irun+1,CorrFact[index]->GetBinError(CorrFact[index]->FindBin(FixedPtEff)));
- break;
- case 3: // PiMinus
- EfficiencyPiMinus->SetBinContent(irun+1,CorrFact[index]->GetBinContent(CorrFact[index]->FindBin(FixedPtEff)));
- EfficiencyPiMinus->SetBinError(irun+1,CorrFact[index]->GetBinError(CorrFact[index]->FindBin(FixedPtEff)));
- break;
- case 4: // KMinus
- EfficiencyKMinus->SetBinContent(irun+1,CorrFact[index]->GetBinContent(CorrFact[index]->FindBin(FixedPtEff)));
- EfficiencyKMinus->SetBinError(irun+1,CorrFact[index]->GetBinError(CorrFact[index]->FindBin(FixedPtEff)));
- break;
- case 5: // Antiproton
- EfficiencyAntiproton->SetBinContent(irun+1,CorrFact[index]->GetBinContent(CorrFact[index]->FindBin(FixedPtEff)));
- EfficiencyAntiproton->SetBinError(irun+1,CorrFact[index]->GetBinError(CorrFact[index]->FindBin(FixedPtEff)));
- break;
- default:
- Printf("\n!!! ERROR in switch statement in CheckEfficiencies.C !!!\n");
- break;
- }
- } // end loop over ipart
- } // end loop over icharge
-
- // save the projections and fits to a pdf file once per run
- if (irun == 0) cEfficienciesIndiv->SaveAs("Plots/MC/AODEfficiencies.pdf(","pdf");
- else if (irun < nRuns-1) cEfficienciesIndiv->SaveAs("Plots/MC/AODEfficiencies.pdf","pdf");
- else if (irun == nRuns-1) cEfficienciesIndiv->SaveAs("Plots/MC/AODEfficiencies.pdf)","pdf");
- cEfficienciesIndiv->Close();
-
-}
-
-
-
-
-
-
-
-
-
-