]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG2/drawProtonQAResults.C
Minor changes in the macros
[u/mrichter/AliRoot.git] / PWG2 / drawProtonQAResults.C
index 77717e37d69b804093bd9311c27f541ca311ac7d..0eb4aec4418c204c5f13732fa49a93b55df695aa 100644 (file)
@@ -1,22 +1,26 @@
-void drawProtonQAResults(const char* filename1 = "Protons.QA.root",
-                        const char* filename2 = "Protons.MC.QA.root",
-                        const char* filename3 = "Protons.Efficiency.root") {
+void drawProtonQAResults(const char *analysisType = "TPC") {
   //Macro to visualize the results of the proton QA task
-  //TCanvas objects: 15
+  //TCanvas objects: 16
   gStyle->SetPalette(1,0);
+  TString filename1 = "Protons.QA.";
+  filename1 += analysisType; filename1 += ".root";
+  TString filename2 = "Protons.MC.QA.";
+  filename2 += analysisType; filename2 += ".root";
+  TString filename3 = "Protons.Efficiency.";
+  filename3 += analysisType; filename3 += ".root",
  
-  TFile *fQA = TFile::Open(filename1);
+  TFile *fQA = TFile::Open(filename1.Data());
   TList *listGlobalQA = (TList *)fQA->Get("globalQAList");
-  drawCutStatistics(listGlobalQA);
+  drawCutStatistics(listGlobalQA,analysisType);
  
-  TFile *fMC = TFile::Open(filename2);
+  TFile *fMC = TFile::Open(filename2.Data());
   TList *listPDG = (TList *)fMC->Get("pdgCodeList");  
   TList *listMCProcesses = (TList *)fMC->Get("mcProcessList");  
   drawMCQA(listPDG,listMCProcesses);
   
-  TFile *fEfficiency = TFile::Open(filename3);
+  TFile *fEfficiency = TFile::Open(filename3.Data());
   TList *listEfficiency = (TList *)fEfficiency->Get("efficiencyList");
-  drawEfficiency(listEfficiency);
+  drawEfficiency(listEfficiency,analysisType);
 
   fQA->Close();
   fMC->Close();
@@ -24,7 +28,8 @@ void drawProtonQAResults(const char* filename1 = "Protons.QA.root",
 }
 
 //________________________________________//
-void drawCutStatistics(TList *list) {
+void drawCutStatistics(TList *list,
+                      const char* analysisType) {
   //Function to display the statistics from the cuts
   //The histogram shows the influence of each cut on the primary
   //and secondary (anti)protons
@@ -378,8 +383,8 @@ void drawCutStatistics(TList *list) {
   c9->SaveAs("CutInfluence-ITS.gif");
   
   //Efficiency - Contamination plots
-  DrawContamination(fQA2DList);
-  DrawCutEfficiency(fQA2DList);
+  DrawContamination(fQA2DList,analysisType);
+  DrawCutEfficiency(fQA2DList,analysisType);
   DrawComposition(gHistYPtPDGProtonsPass,gHistYPtPDGAntiProtonsPass);
 }
 
@@ -448,10 +453,11 @@ void DrawComposition(TH3F *gHistYPtPDGProtons,
 
   TCanvas *c12 = new TCanvas("c12",
                             "Composition of accepted secondaries vs y",
-                           550,550,700,400);
+                            350,350,700,400);
   c12->SetFillColor(10); c12->GetFrame()->SetFillColor(10); c12->Divide(2,1);
   c12->SetHighLightColor(10); c12->cd(1)->SetBottomMargin(0.15);
   c12->cd(1)->SetGridx(); c12->cd(1)->SetGridy();
+  hEmptyY->SetTitle("Protons");
   hEmptyY->DrawCopy();
   for(Int_t iParticle = 0; iParticle < 10; iParticle++) {
     //if((iParticle == 0)||(iParticle == 2)||(iParticle == 5)||(iParticle == 6)||(iParticle == 8))
@@ -469,6 +475,7 @@ void DrawComposition(TH3F *gHistYPtPDGProtons,
 
   c12->SetHighLightColor(10); c12->cd(2)->SetBottomMargin(0.15);
   c12->cd(2)->SetGridx(); c12->cd(2)->SetGridy();
+  hEmptyY->SetTitle("Antiprotons");
   hEmptyY->DrawCopy();
   for(Int_t iParticle = 0; iParticle < 10; iParticle++) {
     if((iParticle == 0)||(iParticle == 6)||(iParticle == 8))
@@ -490,20 +497,26 @@ void DrawComposition(TH3F *gHistYPtPDGProtons,
   hEmptyPt->GetXaxis()->SetTitle("P_{T} [GeV/c]");
 
   TCanvas *c13 = new TCanvas("c13",
-                           "Composition of accepted secondaries vs pT",
-                           600,600,700,400);
+                            "Composition of accepted secondaries vs pT",
+                            400,400,700,400);
   c13->SetFillColor(10); c13->GetFrame()->SetFillColor(10); c13->Divide(2,1);
   c13->SetHighLightColor(10); c13->cd(1)->SetBottomMargin(0.15);
   c13->cd(1)->SetGridx(); c13->cd(1)->SetGridy();
+  hEmptyPt->GetXaxis()->SetRangeUser(gParticleProtonPt[0]->GetXaxis()->GetXmin()-0.2,gParticleProtonPt[0]->GetXaxis()->GetXmax()+0.2);
+  hEmptyPt->SetTitle("Protons");
   hEmptyPt->DrawCopy();
   for(Int_t iParticle = 0; iParticle < 10; iParticle++) {
     if(iParticle < 5) {
-      DrawMarker(0.2, 115-5*iParticle, 20+iParticle, 1.2, 1);
-      t1->DrawLatex(0.3,113-5*iParticle,fParticleName[iParticle]);
+      DrawMarker(gParticleProtonPt[0]->GetXaxis()->GetXmin()+0.1, 
+                115-5*iParticle, 20+iParticle, 1.2, 1);
+      t1->DrawLatex(gParticleProtonPt[0]->GetXaxis()->GetXmin()+0.2,
+                   113-5*iParticle,fParticleName[iParticle]);
     }
     else {
-      DrawMarker(2.2, 115-5*(iParticle-5), 20+iParticle, 1.2, 1);
-      t1->DrawLatex(2.3,113-5*(iParticle-5),fParticleName[iParticle]);
+      DrawMarker(gParticleProtonPt[0]->GetXaxis()->GetXmax()*0.5, 
+                115-5*(iParticle-5), 20+iParticle, 1.2, 1);
+      t1->DrawLatex(gParticleProtonPt[0]->GetXaxis()->GetXmax()*0.5+0.1,
+                   113-5*(iParticle-5),fParticleName[iParticle]);
     }
     if((iParticle == 0)||(iParticle == 2)||(iParticle == 6)||(iParticle == 8))
       gParticleProtonPt[iParticle]->Draw("P");
@@ -511,15 +524,20 @@ void DrawComposition(TH3F *gHistYPtPDGProtons,
 
   c13->SetHighLightColor(10); c13->cd(2)->SetBottomMargin(0.15);
   c13->cd(2)->SetGridx(); c13->cd(2)->SetGridy();
+  hEmptyPt->SetTitle("Antiprotons");
   hEmptyPt->DrawCopy();
   for(Int_t iParticle = 0; iParticle < 10; iParticle++) {
     if(iParticle < 5) {
-      DrawMarker(0.2, 115-5*iParticle, 20+iParticle, 1.2, 1);
-      t1->DrawLatex(0.3,113-5*iParticle,fParticleName[iParticle]);
+      DrawMarker(gParticleProtonPt[0]->GetXaxis()->GetXmin()+0.1, 
+                115-5*iParticle, 20+iParticle, 1.2, 1);
+      t1->DrawLatex(gParticleProtonPt[0]->GetXaxis()->GetXmin()+0.2,
+                   113-5*iParticle,fParticleName[iParticle]);
     }
     else {
-      DrawMarker(2.2, 115-5*(iParticle-5), 20+iParticle, 1.2, 1);
-      t1->DrawLatex(2.3,113-5*(iParticle-5),fParticleName[iParticle]);
+      DrawMarker(gParticleProtonPt[0]->GetXaxis()->GetXmax()*0.5, 
+                115-5*(iParticle-5), 20+iParticle, 1.2, 1);
+      t1->DrawLatex(gParticleProtonPt[0]->GetXaxis()->GetXmax()*0.5+0.1,
+                   113-5*(iParticle-5),fParticleName[iParticle]);
     }
     if((iParticle == 0)||(iParticle == 6)||(iParticle == 8))
       gParticleAntiProtonPt[iParticle]->Draw("P");
@@ -528,7 +546,8 @@ void DrawComposition(TH3F *gHistYPtPDGProtons,
 }
 
 //________________________________________________//
-void DrawContamination(TList *inputList) {
+void DrawContamination(TList *inputList,
+                      const char* analysisType) {
   //loops over the list entries and
   //draws the rapidity and pT dependence
   //of the percentage of primary and secondary
@@ -638,7 +657,7 @@ void DrawContamination(TList *inputList) {
   DrawMarker(0, 55, kFullCircle, 1.2, 1);
   t1->DrawLatex(0.1,53,"Primaries");
   DrawMarker(0, 45, kOpenCircle, 1.2, 1);
-  t1->DrawLatex(0.1,43,"Secondaries");
+  t1->DrawLatex(0.1,41,"Secondaries");
 
   c7->SaveAs("Contamination-Protons-Rapidity.gif");
 
@@ -716,14 +735,15 @@ void DrawContamination(TList *inputList) {
   c8->cd(1)->SetLeftMargin(0.15); 
   c8->cd(1)->SetGridx(); c8->cd(1)->SetGridy();
   hEmptyPt->SetTitle("Protons");
+  hEmptyPt->GetXaxis()->SetRangeUser(gPtPrimaryProtonsPercentage->GetXaxis()->GetXmin()-0.2,gPtPrimaryProtonsPercentage->GetXaxis()->GetXmax()+0.2);
   hEmptyPt->DrawCopy();
   gPtPrimaryProtonsPercentage->DrawCopy("ESAME");
   gPtSecondaryProtonsPercentage->DrawCopy("ESAME");
 
-  DrawMarker(2.0, 55, kFullCircle, 1.2, 1);
-  t1->DrawLatex(2.1,53,"Primaries");
-  DrawMarker(2.0, 45, kOpenCircle, 1.2, 1);
-  t1->DrawLatex(2.1,43,"Secondaries");
+  DrawMarker(0.5, 55, kFullCircle, 1.2, 1);
+  t1->DrawLatex(0.6,53,"Primaries");
+  DrawMarker(0.5, 45, kOpenCircle, 1.2, 1);
+  t1->DrawLatex(0.6,41,"Secondaries");
 
   c8->cd(2)->SetBottomMargin(0.15); 
   c8->cd(2)->SetLeftMargin(0.15); 
@@ -740,7 +760,9 @@ void DrawContamination(TList *inputList) {
 
   c8->SaveAs("Contamination-Protons-Pt.gif");
 
-  TFile *fout = TFile::Open("Contamination.root","recreate");
+  TString outputFileName = "Contamination."; 
+  outputFileName += analysisType; outputFileName += ".root";
+  TFile *fout = TFile::Open(outputFileName.Data(),"recreate");
   gYPrimaryProtonsPercentage->Write();
   gYSecondaryProtonsPercentage->Write();
   gPtPrimaryProtonsPercentage->Write();
@@ -753,7 +775,8 @@ void DrawContamination(TList *inputList) {
 }
 
 //________________________________________________//
-void DrawCutEfficiency(TList *inputList) {
+void DrawCutEfficiency(TList *inputList,
+                      const char* analysisType) {
   //loops over the list entries and
   //draws the rapidity and pT dependence
   //of the percentage of primary and secondary
@@ -861,7 +884,9 @@ void DrawCutEfficiency(TList *inputList) {
 
   c11->SaveAs("CutEfficiency-Protons-Pt.gif");
 
-  TFile *fout = TFile::Open("Efficiency.root","recreate");
+  TString outputFileName = "CutEfficiency.";
+  outputFileName += analysisType; outputFileName += ".root";
+  TFile *fout = TFile::Open(outputFileName.Data(),"recreate");
   gYPrimaryESDProtons->Write();
   gYPrimaryESDAntiProtons->Write();
   gPtPrimaryESDProtons->Write();
@@ -968,7 +993,7 @@ void drawMCQA(TList *listPDG, TList *listMCProcesses) {
   hEmptyY->GetXaxis()->SetTitle("y");
 
   TCanvas *c3 = new TCanvas("c3","MC secondary composition vs y - Protons",
-                           350,350,700,400);
+                           450,450,700,400);
   c3->SetFillColor(10); c3->GetFrame()->SetFillColor(10);
   c3->SetHighLightColor(10); c3->SetBottomMargin(0.15);
   c3->SetGridx(); c3->SetGridy();
@@ -988,7 +1013,7 @@ void drawMCQA(TList *listPDG, TList *listMCProcesses) {
   }
 
   TCanvas *c5 = new TCanvas("c5","MC secondary composition vs y - antiProtons",
-                           400,400,700,400);
+                           500,500,700,400);
   c5->SetFillColor(10); c5->GetFrame()->SetFillColor(10);
   c5->SetHighLightColor(10); c5->SetBottomMargin(0.15);
   c5->SetGridx(); c5->SetGridy();
@@ -1012,7 +1037,7 @@ void drawMCQA(TList *listPDG, TList *listMCProcesses) {
   hEmptyPt->GetXaxis()->SetTitle("P_{T} [GeV/c]");
 
   TCanvas *c4 = new TCanvas("c4","MC secondary composition vs pT - Protons",
-                           450,450,700,400);
+                           550,550,700,400);
   c4->SetFillColor(10); c4->GetFrame()->SetFillColor(10);
   c4->SetHighLightColor(10); c4->SetBottomMargin(0.15);
   c4->SetGridx(); c4->SetGridy();
@@ -1032,7 +1057,7 @@ void drawMCQA(TList *listPDG, TList *listMCProcesses) {
 
   TCanvas *c6 = new TCanvas("c6",
                            "MC secondary composition vs pT - AntiProtons",
-                           500,500,700,400);
+                           600,600,700,400);
   c6->SetFillColor(10); c6->GetFrame()->SetFillColor(10);
   c6->SetHighLightColor(10); c6->SetBottomMargin(0.15);
   c6->SetGridx(); c6->SetGridy();
@@ -1169,7 +1194,8 @@ void SetError(TH1D *hEff, TH1D *hGen) {
 }
 
 //________________________________________//
-void drawEfficiency(TList *list) {
+void drawEfficiency(TList *list,
+                   const char* analysisType) {
   //Function to display the reconstruction and PID efficiencies
   //for protons and antiprotons vs y and pT
 
@@ -1196,7 +1222,7 @@ void drawEfficiency(TList *list) {
   //rapidity dependence
   TCanvas *c14 = new TCanvas("c14",
                             "(Anti)Proton reconstruction efficiency vs y",
-                            600,600,700,400);
+                            650,650,700,400);
   c14->SetFillColor(10); c14->GetFrame()->SetFillColor(10); 
   c14->SetHighLightColor(10); c14->Divide(2,1);
 
@@ -1243,7 +1269,7 @@ void drawEfficiency(TList *list) {
   gYESDProtonsFromHadronic->SetMarkerStyle(22);
   gYESDProtonsFromHadronic->SetMarkerColor(3);
 
-  //AntiProtons from weak decays
+  //AntiProtons from hadronic interactions
   TH1D *gYESDAntiProtonsFromHadronic = (TH1D *)gHistESDYPtAntiProtonsFromHadronic->ProjectionX("gYESDAntiProtonsFromHadronic",0,gHistESDYPtAntiProtonsFromHadronic->GetXaxis()->GetNbins(),"e");
   TH1D *gYMCAntiProtonsFromHadronic = (TH1D *)gHistMCYPtAntiProtonsFromHadronic->ProjectionX("gYMCAntiProtonsFromHadronic",0,gHistMCYPtProtonsFromHadronic->GetXaxis()->GetNbins(),"e");
   gYESDAntiProtonsFromHadronic->Divide(gYMCAntiProtonsFromHadronic);
@@ -1277,7 +1303,7 @@ void drawEfficiency(TList *list) {
   //pT dependence
   TCanvas *c15 = new TCanvas("c15",
                             "(Anti)Proton reconstruction efficiency vs pT",
-                            650,650,700,400);
+                            700,700,700,400);
   c15->SetFillColor(10); c15->GetFrame()->SetFillColor(10); 
   c15->SetHighLightColor(10); c15->Divide(2,1);
 
@@ -1366,7 +1392,7 @@ void drawEfficiency(TList *list) {
 
   TCanvas *c16 = new TCanvas("c16",
                             "(Anti)Proton PID efficiency vs y and pT",
-                            700,700,700,400);
+                            750,750,700,400);
   c16->SetFillColor(10); c16->GetFrame()->SetFillColor(10); 
   c16->SetHighLightColor(10); c16->Divide(2,1);
 
@@ -1423,6 +1449,27 @@ void drawEfficiency(TList *list) {
   gPtESDContamProtons->DrawCopy("ESAME");
 
   c16->SaveAs("PIDEfficiency-Protons.gif");
+
+  TString outputFileName = "Reconstruction-PID-Efficiency.";
+  outputFileName += analysisType; outputFileName += ".root";
+  TFile *fout = TFile::Open(outputFileName.Data(),"recreate");
+  gYPrimariesESDProtons->Write();
+  gYESDProtonsFromWeak->Write();
+  gYESDProtonsFromHadronic->Write();
+  gPtPrimariesESDProtons->Write();
+  gPtESDProtonsFromWeak->Write();
+  gPtESDProtonsFromHadronic->Write();
+  gYPrimariesESDAntiProtons->Write();
+  gYESDAntiProtonsFromWeak->Write();
+  gYESDAntiProtonsFromHadronic->Write();
+  gPtPrimariesESDAntiProtons->Write();
+  gPtESDAntiProtonsFromWeak->Write();
+  gPtESDAntiProtonsFromHadronic->Write();
+  gYESDIdProtons->Write();
+  gYESDContamProtons->Write();
+  gPtESDIdProtons->Write();
+  gPtESDContamProtons->Write();
+  fout->Close();
 }
 
 //________________________________________________//