using namespace RooFit ; void ex13() { gSystem->Load("libRooFit") ; TFile* f = TFile::Open("ex13.root") ; TH1* h_sig_up = f->Get("h_sig_up") ; TH1* h_sig = f->Get("h_sig") ; TH1* h_sig_dn = f->Get("h_sig_dn") ; TH1* h_bkg = f->Get("h_bkg") ; TH1* h_data = f->Get("h_data") ; // Create a workspace with observable x[0,120] RooWorkspace w("w",1) ; w.factory("x[20,120]") ; // Tie TF1 h_sig to observable x in RooFit binned dataset dh_sig RooDataHist dh_sig_up("dh_sig_up","dh_sig_up",*w.var("x"),h_sig_up) ; RooDataHist dh_sig("dh_sig" ,"dh_sig" ,*w.var("x"),h_sig) ; RooDataHist dh_sig_dn("dh_sig_dn","dh_sig_dn",*w.var("x"),h_sig_dn) ; RooDataHist dh_bkg("dh_bkg","dh_bkg",*w.var("x"),h_bkg) ; RooDataHist data("data","data",*w.var("x"),h_data) ; // Import both datasets in the workspace w.import(dh_sig_up) ; w.import(dh_sig) ; w.import(dh_sig_dn) ; w.import(dh_bkg) ; w.factory("HistFunc::hf_sig(x,dh_sig)") ; w.factory("HistFunc::hf_bkg(x,dh_bkg)") ; w.factory("ASUM::model(prod(mu[1,0,5],binw[1])*hf_sig,prod(nu[1],binw)*hf_bkg)") ; w.pdf("model")->fitTo(data) ; RooPlot* frame = w.var("x")->frame(); data.plotOn(frame) ; w.pdf("model")->plotOn(frame) ; w.pdf("model")->plotOn(frame,Components("hf_bkg"),LineStyle(kDashed)) ; frame->Draw() ; }