TCanvas* comparePlots2(RooPlot *plot_bC, RooPlot *plot_bS, TH1F *data, TH1F *qcd, std::string title) { RooRealVar x("x", "m_{X} (GeV)", SR_lo, SR_hi); TCanvas *c=new TCanvas(("c_RooFit_"+title).c_str(), "c", 700, 700); TPad *p_1=new TPad("p_1", "p_1", 0, 0.35, 1, 1); gStyle->SetPadGridX(0); gStyle->SetPadGridY(0); gROOT->SetStyle("Plain"); p_1->SetFrameFillColor(0); TPad *p_2 = new TPad("p_2", "p_2",0,0.003740648,0.9975278,0.3391022); p_2->Range(160.1237,-0.8717948,1008.284,2.051282); p_2->SetFillColor(0); p_2->SetBorderMode(0); p_2->SetBorderSize(2); p_2->SetTopMargin(0.02); p_2->SetBottomMargin(0.3); p_2->SetFrameBorderMode(0); p_2->SetFrameBorderMode(0); p_1->Draw(); p_2->Draw(); p_1->cd(); double maxdata=data->GetMaximum(); double maxqcd=qcd->GetMaximum(); double maxy=(maxdata>maxqcd) ? maxdata : maxqcd; title=";m_{X} (GeV); Events / "+itoa(data->GetBinWidth(1))+" GeV"; p_1->DrawFrame(SR_lo, 0, SR_hi, maxy*1., title.c_str()); plot_bS->SetMarkerStyle(20); plot_bS->Draw("same"); // plot_bS->Draw("same"); CMS_lumi( p_1, iPeriod, iPos ); p_2->cd(); /* TH1F *h_ratio=(TH1F*)data->Clone("h_ratio"); h_ratio->GetYaxis()->SetTitle("VR/VSB Ratio"); h_ratio->GetXaxis()->SetTitle("m_{X} (GeV)"); h_ratio->SetTitle("");//("VR/VR-SB Ratio "+title+" ; VR/VR-SB Ratio").c_str()); h_ratio->GetYaxis()->SetTitleSize(0.07); h_ratio->GetYaxis()->SetTitleOffset(0.5); h_ratio->GetXaxis()->SetTitleSize(0.09); h_ratio->GetXaxis()->SetTitleOffset(1.0); h_ratio->GetXaxis()->SetLabelSize(0.07); h_ratio->GetYaxis()->SetLabelSize(0.06); h_ratio->Divide(qcd); h_ratio->SetLineColor(1); h_ratio->SetMarkerStyle(20); h_ratio->GetXaxis()->SetRangeUser(SR_lo, SR_hi-10); h_ratio->GetYaxis()->SetRangeUser(0.,2.); */ RooHist* hpull; hpull = plot_bS->pullHist(); hpull->GetXaxis()->SetRangeUser(SR_lo, SR_hi); RooPlot* frameP = x.frame() ; frameP->SetTitle(""); frameP->GetYaxis()->SetTitle("Pull"); frameP->GetXaxis()->SetRangeUser(SR_lo, SR_hi); frameP->addPlotable(hpull,"P"); frameP->GetYaxis()->SetTitle("Pull"); frameP->GetYaxis()->SetTitleSize(0.07); frameP->GetYaxis()->SetTitleOffset(0.5); frameP->GetXaxis()->SetTitleSize(0.09); frameP->GetXaxis()->SetTitleOffset(1.0); frameP->GetXaxis()->SetLabelSize(0.07); frameP->GetYaxis()->SetLabelSize(0.06); frameP->Draw(); // TLine *m_one_line = new TLine(SR_lo,1,SR_hi,1); // h_ratio->Draw(""); // m_one_line->Draw("same"); p_1->cd(); return c; }
void plot( TString var, TString data, TString pdf, double low=-1, double high=-1 ) { TFile *tf = TFile::Open( "root/FitOut.root" ); RooWorkspace *w = (RooWorkspace*)tf->Get("w"); TCanvas *canv = new TCanvas("c","c",800,800); TPad *upperPad = new TPad(Form("%s_upper",canv->GetName()),"",0.,0.33,1.,1.); TPad *lowerPad = new TPad(Form("%s_lower",canv->GetName()),"",0.,0.,1.,0.33); canv->cd(); upperPad->Draw(); lowerPad->Draw(); if ( low < 0 ) low = w->var(var)->getMin(); if ( high < 0 ) high = w->var(var)->getMax(); RooPlot *plot = w->var(var)->frame(Range(low,high)); w->data(data)->plotOn(plot); w->pdf(pdf)->plotOn(plot); RooHist *underHist = plot->pullHist(); underHist->GetXaxis()->SetRangeUser(plot->GetXaxis()->GetXmin(), plot->GetXaxis()->GetXmax()); underHist->GetXaxis()->SetTitle(plot->GetXaxis()->GetTitle()); underHist->GetYaxis()->SetTitle("Pull"); underHist->GetXaxis()->SetLabelSize(0.12); underHist->GetYaxis()->SetLabelSize(0.12); underHist->GetXaxis()->SetTitleSize(0.2); underHist->GetXaxis()->SetTitleOffset(0.7); underHist->GetYaxis()->SetTitleSize(0.18); underHist->GetYaxis()->SetTitleOffset(0.38); plot->GetXaxis()->SetTitle(""); upperPad->SetBottomMargin(0.1); upperPad->cd(); plot->Draw(); canv->cd(); lowerPad->SetTopMargin(0.05); lowerPad->SetBottomMargin(0.35); lowerPad->cd(); underHist->Draw("AP"); double ymin = underHist->GetYaxis()->GetXmin(); double ymax = underHist->GetYaxis()->GetXmax(); double yrange = Max( Abs( ymin ), Abs( ymax ) ); underHist->GetYaxis()->SetRangeUser( -1.*yrange, 1.*yrange ); double xmin = plot->GetXaxis()->GetXmin(); double xmax = plot->GetXaxis()->GetXmax(); TColor *mycol3sig = gROOT->GetColor( kGray ); mycol3sig->SetAlpha(0.5); TColor *mycol2sig = gROOT->GetColor( kGray+1 ); mycol2sig->SetAlpha(0.5); TColor *mycol1sig = gROOT->GetColor( kGray+2 ); mycol1sig->SetAlpha(0.5); TBox box3sig; box3sig.SetFillColor( mycol3sig->GetNumber() ); //box3sig.SetFillColorAlpha( kGray, 0.5 ); box3sig.SetFillStyle(1001); box3sig.DrawBox( xmin, -3., xmax, 3.); TBox box2sig; box2sig.SetFillColor( mycol2sig->GetNumber() ); //box2sig.SetFillColorAlpha( kGray+1, 0.5 ); box2sig.SetFillStyle(1001); box2sig.DrawBox( xmin, -2., xmax, 2.); TBox box1sig; box1sig.SetFillColor( mycol1sig->GetNumber() ); //box1sig.SetFillColorAlpha( kGray+2, 0.5 ); box1sig.SetFillStyle(1001); box1sig.DrawBox( xmin, -1., xmax, 1.); TLine lineErr; lineErr.SetLineWidth(1); lineErr.SetLineColor(kBlue-9); lineErr.SetLineStyle(2); lineErr.DrawLine(plot->GetXaxis()->GetXmin(),1.,plot->GetXaxis()->GetXmax(),1.); lineErr.DrawLine(plot->GetXaxis()->GetXmin(),-1.,plot->GetXaxis()->GetXmax(),-1.); lineErr.DrawLine(plot->GetXaxis()->GetXmin(),2.,plot->GetXaxis()->GetXmax(),2.); lineErr.DrawLine(plot->GetXaxis()->GetXmin(),-2.,plot->GetXaxis()->GetXmax(),-2.); lineErr.DrawLine(plot->GetXaxis()->GetXmin(),3.,plot->GetXaxis()->GetXmax(),3.); lineErr.DrawLine(plot->GetXaxis()->GetXmin(),-3.,plot->GetXaxis()->GetXmax(),-3.); TLine line; line.SetLineWidth(3); line.SetLineColor(kBlue); line.DrawLine(plot->GetXaxis()->GetXmin(),0.,plot->GetXaxis()->GetXmax(),0.); underHist->Draw("Psame"); RooHist *redPull = new RooHist(); int newp=0; for (int p=0; p<underHist->GetN(); p++) { double x,y; underHist->GetPoint(p,x,y); if ( TMath::Abs(y)>3 ) { redPull->SetPoint(newp,x,y); redPull->SetPointError(newp,0.,0.,underHist->GetErrorYlow(p),underHist->GetErrorYhigh(p)); newp++; } } redPull->SetLineWidth(underHist->GetLineWidth()); redPull->SetMarkerStyle(underHist->GetMarkerStyle()); redPull->SetMarkerSize(underHist->GetMarkerSize()); redPull->SetLineColor(kRed); redPull->SetMarkerColor(kRed); redPull->Draw("Psame"); canv->Print(Form("tmp/%s.pdf",var.Data())); tf->Close(); }