using namespace RooFit; void stack_test() { RooRealVar var("var","var",2,4,"dim"); RooRealVar sig_mean("sig_mean","mean",3,2.9,3.1"dim"); RooRealVar sig_res("si_res","res",.1,.05,.2,"dim"); RooGaussian sig_pdf("sig_pdf","Signal",var,sig_mean,sig_res); RooRealVar bkg1_shape("bkg1_shape","shape1",-2,-.5,-10,"1/dim"); RooExponential bkg1_pdf("bkg1_pdf","Bkg 1",var,bkg1_shape); RooUniform bkg2_pdf("bkg2_pdf","Bkg 2",var); RooRealVar Fsgn("Fsgn","Signal fraction",.3,.2,.4); RooRealVar Fbkg1("Fbkg1","Frac Bkg 1",.4,.2,.6); RooAddPdf tot_pdf("tot_pdf","Global shape",RooArgList(sig_pdf,bkg1_pdf,bkg2_pdf),RooArgList(Fsgn,Fbkg1)); RooAbsData *data = tot_pdf.generate(var,2000); //tot_pdf.fitTo(*data); TCanvas *canvas_comps = new TCanvas("canvas_comps","Components",1); RooPlot *frame = var.frame(Title("Test"),Name("frame")); data->plotOn(frame,Name("data"),Binning(30)); tot_pdf.plotOn(frame,Name("signal"),LineColor(kBlue),LineStyle(2),Components("sig_pdf")); tot_pdf.plotOn(frame,Name("Bkg1"),LineColor(kViolet),LineStyle(2),Components("bkg1_pdf")); tot_pdf.plotOn(frame,Name("Bkg2"),LineColor(kYellow),LineStyle(2),Components("bkg2_pdf")); tot_pdf.plotOn(frame,Name("total"),LineColor(kRed)); frame->Draw(); TCanvas *canvas_stack = new TCanvas("canvas_stack","Stack",1); RooPlot *frame_stacked = var.frame(Title("Test"),Name("frame_stacked")); data->plotOn(frame_stacked,Name("dataS"),Binning(30)); tot_pdf.plotOn(frame_stacked,Name("Bkg2S"),LineColor(kYellow),LineStyle(2),Components("bkg2_pdf")); tot_pdf.plotOn(frame_stacked,Name("Bkg1S"),LineColor(kViolet),LineStyle(2),Components("bkg1_pdf"),AddTo("Bkg2S",0)); tot_pdf.plotOn(frame_stacked,AddTo("Bkg1S"),Name("signal"),LineColor(kBlue),LineStyle(2),Components("sig_pdf")); tot_pdf.plotOn(frame_stacked,Name("totalS"),LineColor(kRed)); frame->Draw(); }