void makePlot(const TString& title, TGraphAsymmErrors* graph_Data_passed, TF1* fit_Data_passed, const TString& legendEntry_Data_passed, TGraphAsymmErrors* graph_mcSum_passed, TF1* fit_mcSum_passed, const TString& legendEntry_mcSum_passed, TGraphAsymmErrors* graph_Data_failed, TF1* fit_Data_failed, const TString& legendEntry_Data_failed, TGraphAsymmErrors* graph_mcSum_failed, TF1* fit_mcSum_failed, const TString& legendEntry_mcSum_failed, const TString& outputFileName) { TCanvas* canvas = new TCanvas("canvas", "canvas", 800, 900); canvas->SetFillColor(10); canvas->SetBorderSize(2); canvas->SetLeftMargin(0.12); canvas->SetBottomMargin(0.12); //TPad* topPad = new TPad("topPad", "topPad", 0.00, 0.35, 1.00, 1.00); TPad* topPad = new TPad("topPad", "topPad", 0.00, 1.00 - 0.65*(0.93/0.84), 1.00, 1.00); topPad->SetFillColor(10); topPad->SetTopMargin(0.04); topPad->SetLeftMargin(0.15); //topPad->SetBottomMargin(0.03); topPad->SetBottomMargin(0.12); topPad->SetRightMargin(0.05); topPad->SetGridx(); topPad->SetGridy(); canvas->cd(); topPad->Draw(); topPad->cd(); TH1* dummyHistogram_top = new TH1D("dummyHistogram_top", "dummyHistogram_top", 10, 0., 100.); dummyHistogram_top->SetTitle(""); dummyHistogram_top->SetStats(false); dummyHistogram_top->SetMaximum(1.2); dummyHistogram_top->SetMinimum(0.); TAxis* xAxis_top = dummyHistogram_top->GetXaxis(); xAxis_top->SetTitle("calo-E_{T}^{miss} / GeV"); xAxis_top->SetTitleOffset(1.15); //xAxis_top->SetLabelColor(10); //xAxis_top->SetTitleColor(10); TAxis* yAxis_top = dummyHistogram_top->GetYaxis(); yAxis_top->SetTitle("#varepsilon"); yAxis_top->SetTitleOffset(1.2); dummyHistogram_top->Draw(); //dummyHistogram_top->Draw("axis"); //graph_Data_passed->SetLineColor(4); //graph_Data_passed->SetMarkerColor(4); //graph_Data_passed->SetMarkerStyle(20); //graph_Data_passed->Draw("p"); //fit_Data_passed->SetLineColor(graph_Data_passed->GetLineColor()); //fit_Data_passed->SetLineWidth(2); //fit_Data_passed->Draw("same"); graph_mcSum_passed->SetLineColor(7); graph_mcSum_passed->SetMarkerColor(7); graph_mcSum_passed->SetMarkerStyle(24); graph_mcSum_passed->Draw("p"); fit_mcSum_passed->SetLineColor(graph_mcSum_passed->GetLineColor()); fit_mcSum_passed->SetLineWidth(2); fit_mcSum_passed->Draw("same"); graph_Data_failed->SetLineColor(2); graph_Data_failed->SetMarkerColor(2); graph_Data_failed->SetMarkerStyle(21); //graph_Data_failed->Draw("p"); fit_Data_failed->SetLineColor(graph_Data_failed->GetLineColor()); fit_Data_failed->SetLineWidth(2); //fit_Data_failed->Draw("same"); graph_mcSum_failed->SetLineColor(6); graph_mcSum_failed->SetMarkerColor(6); graph_mcSum_failed->SetMarkerStyle(25); graph_mcSum_failed->Draw("p"); fit_mcSum_failed->SetLineColor(graph_mcSum_failed->GetLineColor()); fit_mcSum_failed->SetLineWidth(2); fit_mcSum_failed->Draw("same"); TLegend* legend = new TLegend(0.61, 0.16, 0.89, 0.47, "", "brNDC"); legend->SetBorderSize(0); legend->SetFillColor(0); //legend->AddEntry(graph_Data_passed, legendEntry_Data_passed.Data(), "p"); legend->AddEntry(graph_mcSum_passed, legendEntry_mcSum_passed.Data(), "p"); //legend->AddEntry(graph_Data_failed, legendEntry_Data_failed.Data(), "p"); legend->AddEntry(graph_mcSum_failed, legendEntry_mcSum_failed.Data(), "p"); legend->Draw(); TPaveText* label = 0; if ( title.Length() > 0 ) { label = new TPaveText(0.175, 0.89, 0.48, 0.94, "NDC"); label->AddText(title.Data()); label->SetTextAlign(13); label->SetTextSize(0.045); label->SetFillStyle(0); label->SetBorderSize(0); label->Draw(); } TPad* bottomPad = new TPad("bottomPad", "bottomPad", 0.00, 0.00, 1.00, 0.35); bottomPad->SetFillColor(10); bottomPad->SetTopMargin(0.02); bottomPad->SetLeftMargin(0.15); bottomPad->SetBottomMargin(0.24); bottomPad->SetRightMargin(0.05); bottomPad->SetGridx(); bottomPad->SetGridy(); canvas->cd(); bottomPad->Draw(); bottomPad->cd(); TH1* dummyHistogram_bottom = new TH1D("dummyHistogram_bottom", "dummyHistogram_bottom", 10, 0., 100.); dummyHistogram_bottom->SetMinimum(-1.0); dummyHistogram_bottom->SetMaximum(+1.0); TAxis* xAxis_bottom = dummyHistogram_bottom->GetXaxis(); xAxis_bottom->SetTitle("calo-E_{T}^{miss} / GeV"); xAxis_bottom->SetTitleOffset(1.20); xAxis_bottom->SetLabelColor(1); xAxis_bottom->SetTitleColor(1); xAxis_bottom->SetTitleSize(0.08); xAxis_bottom->SetLabelOffset(0.02); xAxis_bottom->SetLabelSize(0.08); xAxis_bottom->SetTickLength(0.055); TAxis* yAxis_bottom = dummyHistogram_bottom->GetYaxis(); yAxis_bottom->SetTitle("#frac{Data-Simulation}{Simulation}"); yAxis_bottom->SetTitleOffset(0.85); yAxis_bottom->SetNdivisions(505); yAxis_bottom->CenterTitle(); yAxis_bottom->SetTitleSize(0.08); yAxis_bottom->SetLabelSize(0.08); yAxis_bottom->SetTickLength(0.04); dummyHistogram_bottom->SetTitle(""); dummyHistogram_bottom->SetStats(false); dummyHistogram_bottom->Draw("axis"); TGraphAsymmErrors* graph_Data_div_mc_passed = makeGraph_data_div_mc(graph_Data_passed, graph_mcSum_passed); graph_Data_div_mc_passed->SetLineColor(graph_Data_passed->GetLineColor()); graph_Data_div_mc_passed->SetMarkerColor(graph_Data_passed->GetMarkerColor()); graph_Data_div_mc_passed->SetMarkerStyle(graph_Data_passed->GetMarkerStyle()); graph_Data_div_mc_passed->Draw("p"); TF1* fit_Data_div_mc_passed = new TF1("fit_Data_div_mc_passed", &integralCrystalBall_f_div_f, fit_mcSum_passed->GetMinimumX(), fit_mcSum_passed->GetMaximumX(), 2*fit_mcSum_passed->GetNpar()); for ( int iPar = 0; iPar < fit_mcSum_passed->GetNpar(); ++iPar ) { fit_Data_div_mc_passed->SetParameter(iPar, fit_Data_passed->GetParameter(iPar)); fit_Data_div_mc_passed->SetParameter(iPar + fit_mcSum_passed->GetNpar(), fit_mcSum_passed->GetParameter(iPar)); } fit_Data_div_mc_passed->SetLineColor(graph_Data_div_mc_passed->GetLineColor()); fit_Data_div_mc_passed->SetLineWidth(2); fit_Data_div_mc_passed->Draw("same"); TGraphAsymmErrors* graph_Data_div_mc_failed = makeGraph_data_div_mc(graph_Data_failed, graph_mcSum_failed); graph_Data_div_mc_failed->SetLineColor(graph_Data_failed->GetLineColor()); graph_Data_div_mc_failed->SetMarkerColor(graph_Data_failed->GetMarkerColor()); graph_Data_div_mc_failed->SetMarkerStyle(graph_Data_failed->GetMarkerStyle()); graph_Data_div_mc_failed->Draw("p"); TF1* fit_Data_div_mc_failed = new TF1("fit_Data_div_mc_failed", &integralCrystalBall_f_div_f, fit_mcSum_failed->GetMinimumX(), fit_mcSum_failed->GetMaximumX(), 2*fit_mcSum_failed->GetNpar()); for ( int iPar = 0; iPar < fit_mcSum_failed->GetNpar(); ++iPar ) { fit_Data_div_mc_failed->SetParameter(iPar, fit_Data_failed->GetParameter(iPar)); fit_Data_div_mc_failed->SetParameter(iPar + fit_mcSum_failed->GetNpar(), fit_mcSum_failed->GetParameter(iPar)); } fit_Data_div_mc_failed->SetLineColor(graph_Data_div_mc_failed->GetLineColor()); fit_Data_div_mc_failed->SetLineWidth(2); fit_Data_div_mc_failed->Draw("same"); topPad->RedrawAxis(); bottomPad->RedrawAxis(); canvas->Update(); size_t idx = outputFileName.Last('.'); std::string outputFileName_plot = std::string(outputFileName.Data(), 0, idx); if ( idx != std::string::npos ) canvas->Print(std::string(outputFileName_plot).append(std::string(outputFileName.Data(), idx)).data()); //canvas->Print(std::string(outputFileName_plot).append(".png").data()); //canvas->Print(std::string(outputFileName_plot).append(".pdf").data()); topPad->Print(std::string(outputFileName_plot).append(".png").data()); topPad->Print(std::string(outputFileName_plot).append(".pdf").data()); delete legend; delete label; delete dummyHistogram_top; delete topPad; delete dummyHistogram_bottom; delete bottomPad; delete canvas; }