-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();
}
//________________________________________//
-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
c9->SaveAs("CutInfluence-ITS.gif");
//Efficiency - Contamination plots
- DrawContamination(fQA2DList);
- DrawCutEfficiency(fQA2DList);
+ DrawContamination(fQA2DList,analysisType);
+ DrawCutEfficiency(fQA2DList,analysisType);
DrawComposition(gHistYPtPDGProtonsPass,gHistYPtPDGAntiProtonsPass);
}
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))
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))
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");
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");
}
//________________________________________________//
-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
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");
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);
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();
}
//________________________________________________//
-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
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();
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();
}
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();
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();
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();
}
//________________________________________//
-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
//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);
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);
//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);
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);
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();
}
//________________________________________________//