using namespace RooFit; void minimal_example_fit() { // dataset generated with default shape parameters, and normalizations are: // ngaus_1 = 10000 // ngaus_2 = 1000 // nbkg = 5000 TFile* fileIn = new TFile("minimal_output_generated.root","READONLY"); RooWorkspace* wIn = (RooWorkspace*) fileIn->Get("w") ; RooDataSet *data = (RooDataSet*) wIn->data("data_generated"); RooRealVar x("x","x",0.,1.); RooRealVar mean_1("mean_1","mean 1",0.135,0.134,0.136); RooRealVar sigma_1("sigma_1","sigma 1",0.006,0.005,0.007); RooGaussian gaus_1("gaus_1","gaus 1",x,mean_1,sigma_1); RooRealVar mean_2("mean_2","mean 2",0.548,0.547,0.549); RooRealVar sigma_2("sigma_2","sigma 2",0.0098,0.0097,0.0099); RooGaussian gaus_2("gaus_2","gaus 2",x,mean_2,sigma_2); RooRealVar a0("a0","a0",1.,0.,2.); RooPolynomial bkg("bkg","bkg",x,RooArgSet(a0)); RooRealVar ngaus_1("ngaus_1","ngaus 1",8000.,100,100000); RooRealVar ngaus_2("ngaus_2","ngaus ",2000.,100,100000); RooRealVar nbkg("nbkg","nbkg",8000.,10,10000); RooAddPdf model("model","model",RooArgList(gaus_1,gaus_2,bkg),RooArgList(ngaus_1,ngaus_2,nbkg)); x.setRange("SBLeft", 0., 0.33); x.setRange("SBRight", 0.37 , 1.); //RooFitResult* result = model.fitTo(*data); // success RooFitResult* result = model.fitTo(*data,Range("SBLeft,SBRight")); // fail RooPlot* xframe = x.frame(Title("sideband fit example")) ; data->plotOn(xframe, Binning(500,0,1)) ; model.plotOn(xframe,Normalization(1.0,RooAbsReal::RelativeExpected)) ; model.plotOn(xframe,Components(bkg),LineStyle(kDashed),LineColor(kRed),Normalization(1.0,RooAbsReal::RelativeExpected)) ; model.Print("t") ; TCanvas* canv = new TCanvas("canv","canv",600,600) ; gPad->SetLeftMargin(0.15); gPad->SetLogy(); xframe->GetYaxis()->SetTitleOffset(1.4); xframe->Draw(); canv->Print("minimal_output_fit.pdf"); }