void plotRhoEtaSlices(TString str = "RandomConesPF.root", TString tag = "HYDJETMB") { gStyle->SetOptStat(0000); gStyle->SetOptTitle(0); TFile *f = new TFile(str.Data()); TH3F *fh3RhoCentEtaBin = dynamic_cast<TH3F*>(f->Get("fh3RhoCentEtaBin")); TH3F *fh3RhoMCentEtaBin = dynamic_cast<TH3F*>(f->Get("fh3RhoMCentEtaBin")); const int netabins = 7; double etaMin[netabins] = {-5.,-3.,-2.1,-1.3,1.3,2.1,3.}; double etaMax[netabins] = {-3.,-2.1,-1.3,1.3,2.1,3.,5.}; TH2D *h2RhoCent[netabins]; TH2D *h2RhoMCent[netabins]; TH2D *h2RhoJetCent[netabins]; for(int i = 1; i<=netabins; ++i) { fh3RhoCentEtaBin->GetZaxis()->SetRange(i,i); h2RhoCent[i-1] = dynamic_cast<TH2D*>(fh3RhoCentEtaBin->Project3D("yx")); h2RhoCent[i-1]->SetName(Form("hRhoCentEta%d",i)); h2RhoCent[i-1]->SetTitle(Form("hRhoCentEta%d",i)); fh3RhoMCentEtaBin->GetZaxis()->SetRange(i,i); h2RhoMCent[i-1] = dynamic_cast<TH2D*>(fh3RhoMCentEtaBin->Project3D("yx")); h2RhoMCent[i-1]->SetName(Form("hRhoMCentEta%d",i)); h2RhoMCent[i-1]->SetTitle(Form("hRhoMCentEta%d",i)); } TCanvas *c1 = new TCanvas("c1","c1: rho",900,840); c1->Divide(3,3); for(int i = 1; i<=netabins; ++i) { c1->cd(i); TH1F *fr1 = DrawFrame(0.,100.,0.,500.,"centrality (%)","#rho GeV/c"); gPad->SetLogz(); h2RhoCent[i-1]->Draw("colz same"); DrawLatex(0.5,0.77,Form("%.1f<#eta<%.1f",etaMin[i-1],etaMax[i-1])); } c1->SaveAs("RhoCentEtaBins.png"); TCanvas *c2 = new TCanvas("c2","c2: rho_m",900,840); c2->Divide(3,3); for(int i = 1; i<=netabins; ++i) { c2->cd(i); TH1F *fr2 = DrawFrame(0.,100.,0.,2.,"centrality (%)","#rho_{m} GeV/c"); gPad->SetLogz(); h2RhoMCent[i-1]->Draw("colz same"); DrawLatex(0.5,0.77,Form("%.1f<#eta<%.1f",etaMin[i-1],etaMax[i-1])); } c2->SaveAs("RhoMCentEtaBins.png"); }
void drawFigure4a(TString var="Njets") { gInterpreter->ExecuteMacro("GoodStyle.C"); gROOT->LoadMacro("tdrstyle.C"); setTDRStyle(); TString variable = "p_{T,max}^{#font[12]{l}}"; std::ostringstream filename, madname; filename<<"rootfiles/all_unfolding_"<<var<<".root"; TFile* file = new TFile(filename.str().c_str(), "read"); madname<<"hGenXs"<<var<<"_1"; std::cout<<madname.str().c_str()<<std::endl; TH1F* xsValue = (TH1F*)(file->Get("hComb_diff")->Clone("xsValue")); TH1F* xsValue_Madgraph = (TH1F*)(file->Get(madname.str().c_str())->Clone("xsValue_Madgraph")); TH1F* xsValue_MCnlo = (TH1F*)(file->Get("mcfm_tot")->Clone("xsValue_MCnlo")); // Set the data errors- I don't need this because I already have complete error in my plot //---------------------------------------------------------------------------- // Data cosmetics //---------------------------------------------------------------------------- xsValue->SetLineWidth(1); xsValue->SetMarkerSize(_msize); xsValue->SetMarkerStyle(kFullCircle); xsValue->SetMarkerColor(kBlack); xsValue->SetLineColor(kBlack); xsValue->SetFillStyle(1001); xsValue->SetFillColor(kWhite); // Madgraph cosmetics //---------------------------------------------------------------------------- xsValue_Madgraph->SetFillColor(kOrange); //xsValue_Madgraph->SetFillColor(kWhite); xsValue_Madgraph->SetFillStyle(1001); xsValue_Madgraph->SetLineColor(kOrange+7); xsValue_Madgraph->SetLineWidth(1); xsValue_Madgraph->SetMarkerColor(kOrange+7); xsValue_Madgraph->SetMarkerSize(_msize); xsValue_Madgraph->SetMarkerStyle(21); // MCNLO cosmetics //---------------------------------------------------------------------------- xsValue_MCnlo->SetFillColor(kAzure-9); //xsValue_MCnlo->SetFillColor(kWhite); xsValue_MCnlo->SetFillStyle(1001); xsValue_MCnlo->SetLineColor(kAzure); xsValue_MCnlo->SetLineWidth(1); xsValue_MCnlo->SetMarkerColor(kAzure); xsValue_MCnlo->SetMarkerSize(_msize); // xsValue_MCnlo->SetMarkerStyle(21); xsValue_MCnlo->SetMarkerStyle(24); // TCanvas * c1=new TCanvas("c1", "c1"); //xsValue_MCnlo->Draw("pey0"); // Set the canvas and pads //---------------------------------------------------------------------------- TCanvas* canvas = new TCanvas("wwxs", "wwxs", 600, 600); // TCanvas* canvas = new TCanvas("wwxs", "wwxs"); //defalut //TCanvas* canvas = new TCanvas("wwxs", "wwxs", 600, 850); // TPad* pad1 = new TPad("pad1", "pad1", 0, 0.55, 1, 1.000); //TPad* pad2 = new TPad("pad2", "pad2", 0, 0.39, 1, 0.552); //TPad* pad3 = new TPad("pad3", "pad3", 0, 0.23, 1, 0.392); TPad* pad1 = new TPad("pad1", "pad1", 0, 0.49, 1, 1.000); TPad* pad2 = new TPad("pad2", "pad2", 0, 0.33, 1, 0.492); TPad* pad3 = new TPad("pad3", "pad3", 0, 0, 1, 0.332); pad1->SetTopMargin(0.09); pad2->SetTopMargin(0); pad3->SetTopMargin(0); pad1->SetBottomMargin(0); pad2->SetBottomMargin(0); // pad3->SetBottomMargin(0.15); pad3->SetBottomMargin(0.45); pad1->SetLeftMargin(0.16); pad2->SetLeftMargin(0.16); pad3->SetLeftMargin(0.16); pad1->SetRightMargin(0.06); pad2->SetRightMargin(0.06); pad3->SetRightMargin(0.06); // pad1 //---------------------------------------------------------------------------- pad1->Draw(); pad1->cd(); pad1->SetLogy(); // Draw //---------------------------------------------------------------------------- AxisFonts(xsValue->GetXaxis(), variable + " (GeV)"); if (var=="Zpt") AxisFonts(xsValue->GetYaxis(), "d#sigma(WZ#rightarrow3l#nu)/dp_{T}^{Z}"); if (var=="LeadingJetPt") AxisFonts(xsValue->GetYaxis(), "d#sigma(WZ#rightarrow3l#nu)/dp_{T}^{LeadingJet}"); //TH1F* hpowError = (TH1F*)xsValue_Powheg->Clone(); // TH1F* hmadError = (TH1F*)xsValue_Madgraph->Clone(); //TH1F* hmcError = (TH1F*)xsValue_MCnlo->Clone(); xsValue ->Draw("pe"); xsValue_Madgraph->Draw("p,same"); xsValue_MCnlo ->Draw("p,same"); xsValue->SetMinimum(1.1e-4); // Legend //---------------------------------------------------------------------------- DrawLegend(0.718, 0.80, xsValue, " Data", "lp"); DrawLegend(0.718, 0.74, xsValue_Madgraph, " Madgraph", "flp"); DrawLegend(0.718, 0.68, xsValue_MCnlo, " MCFM", "flp"); // Draw text //---------------------------------------------------------------------------- DrawLatex(_cmsTextFont, 0.173, 0.935, 0.065, 11, "CMS"); DrawLatex(_extraTextFont, 0.268, 0.935, 0.035, 11, "Preliminary"); DrawLatex(_lumiTextFont, 0.940, 0.935, 0.050, 31, "19.6 fb^{-1} (8 TeV)"); // Prepare the ratios //---------------------------------------------------------------------------- TH1F* ratio_mad = xsValue_Madgraph->Clone("ratio"); TH1F* ratio_mcnlo = xsValue_Madgraph->Clone("ratio"); // TH1F* ratio_mcnlo = xsValue_MCnlo->Clone("ratio"); TH1F* hratio_mad = xsValue_Madgraph->Clone("ratio"); TH1F* hratio_mcnlo = xsValue_MCnlo->Clone("ratio"); TH1F* ratioErr = xsValue->Clone("ratio"); ratioErr->SetFillColor (kGray+2); ratioErr->SetFillStyle ( 3004); ratioErr->SetLineColor (kGray+2); ratioErr->SetMarkerColor(kGray+2); ratioErr->SetMarkerSize ( 0); // Set the bin content //---------------------------------------------------------------------------- for (UInt_t ibin=1; ibin<=ratio->GetNbinsX(); ibin++) { Double_t madValue = xsValue_Madgraph->GetBinContent(ibin); //Double_t madError = xsValue_Madgraph->GetBinError (ibin); Double_t mcnloValue = xsValue_MCnlo->GetBinContent(ibin); //Double_t mcnloError = xsValue_MCnlo->GetBinError (ibin); Double_t dataValue = xsValue->GetBinContent(ibin); Double_t dataError = xsValue->GetBinError(ibin); Double_t ratioValue_mad = (madValue > 0) ? madValue / dataValue : 0.0; //Double_t ratioError_mad = (madValue > 0) ? madError / dataValue : 0.0; Double_t ratioError_mad = madValue/pow(dataValue,2)*dataError; Double_t ratioValue_mcnlo = (mcnloValue > 0) ? mcnloValue / dataValue : 0.0; // Double_t ratioError_mcnlo = (mcnloValue > 0) ? mcnloError / dataValue : 0.0; Double_t ratioError_mcnlo = mcnloValue/pow(dataValue,2)*dataError; Double_t uncertaintyError = (dataValue > 0) ? dataError / dataValue : 0.0; ratio_mad ->SetBinContent(ibin, ratioValue_mad); hratio_mad->SetBinContent(ibin, ratioValue_mad); hratio_mad->SetBinError (ibin, ratioError_mad); ratio_mcnlo ->SetBinContent(ibin, ratioValue_mcnlo); hratio_mcnlo->SetBinContent(ibin, ratioValue_mcnlo); hratio_mcnlo->SetBinError (ibin, ratioError_mcnlo); ratioErr->SetBinContent(ibin, 1.0); ratioErr->SetBinError (ibin, uncertaintyError); //??? ovo nije bas jasno sto je } // AxisFontsRatio(ratioErr->GetYaxis(), "y", "Theory / Data"); //AxisFontsRatio(ratioErr->GetXaxis(), "x", variable + " (GeV)"); AxisFontsRatio(ratio_mad->GetYaxis(), "y", "Theory / Data"); //AxisFontsRatio(ratio_mad->GetXaxis(), "x", variable + " (GeV)"); AxisFontsRatio(ratio_mcnlo->GetYaxis(), "y", "Theory / Data"); if (var=="Zpt") AxisFontsRatio(ratio_mcnlo->GetXaxis(), "x", "p_{T}^{Z} (GeV)"); if (var=="LeadingJetPt") AxisFontsRatio(ratio_mcnlo->GetXaxis(), "x", "p_{T}^{LeadingJet} (GeV)"); ratio_mcnlo->SetFillColor(kAzure-9); //xsValue_MCnlo->SetFillColor(kWhite); ratio_mcnlo->SetFillStyle(1001); ratio_mcnlo->SetLineColor(kAzure); ratio_mcnlo->SetLineWidth(1); ratio_mcnlo->SetMarkerColor(kAzure); ratio_mcnlo->SetMarkerSize(_msize); // xsValue_MCnlo->SetMarkerStyle(21); ratio_mcnlo->SetMarkerStyle(24); // Draw pad2 //---------------------------------------------------------------------------- canvas->cd(); pad2->Draw(); pad2->cd(); //ratioErr ->Draw("e2"); ratio_mad ->Draw("pz"); hratio_mad->Draw("e2,same"); ratio_mad ->Draw("p, same"); ratio_mad->GetYaxis()->SetRangeUser(0.1, 2.3); pad2->Modified(); DrawLatex(43, 0.2, 0.79, 15.0, 11, "Madgraph+Pythia normalized to #sigma_{NLO}"); // Draw pad3 //---------------------------------------------------------------------------- canvas->cd(); pad3->Draw(); pad3->cd(); std::cout<<"Default option: "<<ratio_mcnlo->GetOption()<<std::endl; //ratioErr ->Draw("e2"); ratio_mcnlo->Draw("pz"); hratio_mcnlo->Draw("e2,same"); ratio_mcnlo ->Draw("pz, same"); ratio_mcnlo->GetYaxis()->SetRangeUser(0.1, 2.3); //ratio_mcnlo->GetYaxis()->SetRangeUser(0.0, 0.5); pad3->Modified(); DrawLatex(43, 0.2, 0.89, 15.0, 11, "MCFM"); // Save //---------------------------------------------------------------------------- pad1->cd(); pad1->GetFrame()->DrawClone(); pad2->cd(); pad2->GetFrame()->DrawClone(); pad3->cd(); pad3->GetFrame()->DrawClone(); canvas->cd(); std::ostringstream saveName, saveName2; saveName << "pdf/unfolded_"<<var<<".pdf"; saveName2 << "png/unfolded_"<<var<<".png"; canvas->SaveAs(saveName.str().c_str()); canvas->SaveAs(saveName2.str().c_str()); }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // drawFigures4and5 // // Zpt // LeadingJetPt // Njets // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void drawFigures4and5(TString var = "Zpt") { gSystem->mkdir("pdf", kTRUE); gSystem->mkdir("png", kTRUE); gInterpreter->ExecuteMacro("WZPaperStyle.C"); Bool_t drawMcfm = (var.EqualTo("Zpt")) ? true : false; TString variable; TString xtitle; TString ytitle; if (var.EqualTo("Zpt")) variable = "Z"; if (var.EqualTo("LeadingJetPt")) variable = "leading jet"; if (var.EqualTo("Njets")) variable = "N_{jets}"; if (var.EqualTo("Njets")) { xtitle = variable; ytitle = "d#sigma(WZ#rightarrow3l#nu)/d" + variable + " (pb)"; } else { xtitle = "p_{T}^{" + variable + "} (GeV)"; ytitle = "d#sigma(WZ#rightarrow3l#nu)/dp_{T}^{" + variable + "} (pb/GeV)"; } TFile* file = new TFile("rootfiles/all_unfolding_" + var + ".root", "read"); TH1D* xsValue = (TH1D*)file->Get("hComb_diff"); TH1D* xsValue_Madgraph = (TH1D*)file->Get("hGenXs" + var + "_1"); TH1D* xsValue_MCnlo; if (drawMcfm) xsValue_MCnlo = (TH1D*)file->Get("mcfm_tot"); // Data cosmetics //---------------------------------------------------------------------------- xsValue->SetFillColor ( kWhite); xsValue->SetFillStyle ( 1001); xsValue->SetLineColor ( kBlack); xsValue->SetLineWidth ( 1); xsValue->SetMarkerColor( kBlack); xsValue->SetMarkerSize ( _msize); xsValue->SetMarkerStyle(kFullCircle); // Madgraph cosmetics //---------------------------------------------------------------------------- xsValue_Madgraph->SetFillColor ( kOrange); xsValue_Madgraph->SetFillStyle ( 1001); xsValue_Madgraph->SetLineColor ( kOrange+7); xsValue_Madgraph->SetLineWidth ( 1); xsValue_Madgraph->SetMarkerColor( kOrange+7); xsValue_Madgraph->SetMarkerSize ( _msize); xsValue_Madgraph->SetMarkerStyle(kFullSquare); // MCNLO cosmetics //---------------------------------------------------------------------------- if (drawMcfm) { xsValue_MCnlo->SetFillColor ( kAzure-9); xsValue_MCnlo->SetFillStyle ( 1001); xsValue_MCnlo->SetLineColor ( kAzure); xsValue_MCnlo->SetLineWidth ( 1); xsValue_MCnlo->SetMarkerColor( kAzure); xsValue_MCnlo->SetMarkerSize ( _msize); xsValue_MCnlo->SetMarkerStyle(kOpenCircle); } // Set the canvas and pads //---------------------------------------------------------------------------- TCanvas* canvas = new TCanvas(var, var); TPad* pad1; TPad* pad2; TPad* pad3; if (drawMcfm) { pad1 = new TPad("pad1" + var, "pad1" + var, 0, 0.49, 1, 1.000); pad2 = new TPad("pad2" + var, "pad2" + var, 0, 0.33, 1, 0.492); pad3 = new TPad("pad3" + var, "pad3" + var, 0, 0.00, 1, 0.332); pad1->SetTopMargin(0.09); pad2->SetTopMargin(0); pad3->SetTopMargin(0); pad1->SetBottomMargin(0); pad2->SetBottomMargin(0); pad3->SetBottomMargin(0.45); pad1->SetLeftMargin(0.16); pad2->SetLeftMargin(0.16); pad3->SetLeftMargin(0.16); pad1->SetRightMargin(0.06); pad2->SetRightMargin(0.06); pad3->SetRightMargin(0.06); } else { pad1 = new TPad("pad1" + var, "pad1" + var, 0, 0.33, 1, 1.000); pad2 = new TPad("pad2" + var, "pad2" + var, 0, 0.00, 1, 0.332); pad1->SetTopMargin(0.09); pad2->SetTopMargin(0); pad1->SetBottomMargin(0); pad2->SetBottomMargin(0.45); pad1->SetLeftMargin(0.16); pad2->SetLeftMargin(0.16); pad1->SetRightMargin(0.06); pad2->SetRightMargin(0.06); } // Draw pad1 //---------------------------------------------------------------------------- pad1->Draw(); pad1->cd(); pad1->SetLogy(); AxisFonts(xsValue->GetXaxis(), xtitle); AxisFonts(xsValue->GetYaxis(), ytitle); xsValue->SetTitle(""); xsValue->Draw("pe"); xsValue_Madgraph->Draw("p,same"); if (drawMcfm) xsValue_MCnlo->Draw("p,same"); xsValue->Draw("pe,same"); if (var.EqualTo("Zpt")) xsValue->SetMinimum(1.1e-4); if (var.EqualTo("LeadingJetPt")) xsValue->SetMinimum(5e-4); if (var.EqualTo("Njets")) xsValue->SetMinimum(2e-2); DrawLatex(_cmsTextFont, 0.173, 0.935, 0.065, 11, "CMS"); DrawLatex(_lumiTextFont, 0.940, 0.935, 0.050, 31, "19.6 fb^{-1} (8 TeV)"); // Legend //---------------------------------------------------------------------------- if (drawMcfm) { DrawLegend(0.72, 0.80, xsValue, " Data", "lp"); DrawLegend(0.72, 0.73, xsValue_Madgraph, " MadGraph", "flp"); DrawLegend(0.72, 0.66, xsValue_MCnlo, " MCFM", "flp"); } else { DrawLegend(0.68, 0.81, xsValue, " Data", "lp"); DrawLegend(0.68, 0.74, xsValue_Madgraph, " MadGraph", "flp"); } // Prepare the ratios //---------------------------------------------------------------------------- TH1D* ratio_mad = (TH1D*)xsValue_Madgraph->Clone("ratio_mad"); TH1D* hratio_mad = (TH1D*)xsValue_Madgraph->Clone("hratio_mad"); TH1D* ratio_mcnlo; TH1D* hratio_mcnlo; if (drawMcfm) { ratio_mcnlo = (TH1D*)xsValue_MCnlo->Clone("ratio_mcnlo"); hratio_mcnlo = (TH1D*)xsValue_MCnlo->Clone("hratio_mcnlo"); } // Set the bin content //---------------------------------------------------------------------------- for (UInt_t ibin=1; ibin<=ratio_mad->GetNbinsX(); ibin++) { Double_t madValue = xsValue_Madgraph->GetBinContent(ibin); Double_t dataValue = xsValue->GetBinContent(ibin); Double_t dataError = xsValue->GetBinError(ibin); Double_t ratioValue_mad = (madValue > 0) ? madValue / dataValue : 0.0; Double_t ratioError_mad = madValue / pow(dataValue,2)*dataError; ratio_mad->SetBinContent(ibin, ratioValue_mad); ratio_mad->SetBinError (ibin, 1e-9); hratio_mad->SetBinContent(ibin, ratioValue_mad); hratio_mad->SetBinError (ibin, ratioError_mad); if (drawMcfm) { Double_t mcnloValue = xsValue_MCnlo->GetBinContent(ibin); Double_t ratioValue_mcnlo = (mcnloValue > 0) ? mcnloValue / dataValue : 0.0; Double_t ratioError_mcnlo = mcnloValue / pow(dataValue,2)*dataError; ratio_mcnlo->SetBinContent(ibin, ratioValue_mcnlo); ratio_mcnlo->SetBinError (ibin, 1e-9); hratio_mcnlo->SetBinContent(ibin, ratioValue_mcnlo); hratio_mcnlo->SetBinError (ibin, ratioError_mcnlo); } } // Draw pad2 //---------------------------------------------------------------------------- AxisFontsRatio(ratio_mad->GetYaxis(), "y", "#frac{Theory}{Data}"); AxisFontsRatio(ratio_mad->GetXaxis(), "x", xtitle); canvas->cd(); pad2->Draw(); pad2->cd(); ratio_mad->SetTitle(""); ratio_mad ->Draw("ep"); hratio_mad->Draw("e2,same"); ratio_mad ->Draw("ep,same"); TLine* line2 = new TLine(ratio_mad->GetXaxis()->GetXmin(), 1.0, ratio_mad->GetXaxis()->GetXmax(), 1.0); line2->SetLineStyle(3); line2->Draw("same"); ratio_mad->GetYaxis()->SetRangeUser(0.01, 2.3); if (drawMcfm) DrawLatex(43, 0.20, 0.785, 15.0, 11, "MadGraph+Pythia normalized to #sigma_{NLO}"); else DrawLatex(43, 0.19, 0.845, 15.0, 11, "MadGraph+Pythia normalized to #sigma_{NLO}"); // Draw pad3 //---------------------------------------------------------------------------- if (drawMcfm) { AxisFontsRatio(ratio_mcnlo->GetYaxis(), "y", "#frac{Theory}{Data}"); AxisFontsRatio(ratio_mcnlo->GetXaxis(), "x", xtitle); canvas->cd(); pad3->Draw(); pad3->cd(); ratio_mcnlo->SetTitle(""); ratio_mcnlo ->Draw("ep"); hratio_mcnlo->Draw("e2,same"); ratio_mcnlo ->Draw("ep,same"); TLine* line3 = new TLine(ratio_mcnlo->GetXaxis()->GetXmin(), 1.0, ratio_mcnlo->GetXaxis()->GetXmax(), 1.0); line3->SetLineStyle(3); line3->Draw("same"); ratio_mcnlo->GetYaxis()->SetRangeUser(0.1, 2.3); pad3->Modified(); DrawLatex(43, 0.2, 0.885, 15.0, 11, "MCFM"); } // Save //---------------------------------------------------------------------------- pad1->cd(); pad1->RedrawAxis(); pad1->GetFrame()->DrawClone(); pad2->cd(); pad2->RedrawAxis(); pad2->GetFrame()->DrawClone(); if (drawMcfm) { pad3->cd(); pad3->RedrawAxis(); pad3->GetFrame()->DrawClone(); } canvas->cd(); canvas->Update(); canvas->SaveAs("pdf/unfolded_" + var + ".pdf"); canvas->SaveAs("png/unfolded_" + var + ".png"); }