using namespace RooFit; void MLFitGaussExpo() { // Generate a sample of MC events (Gauss+ Exponential background) and perform an extended ML fit to this sample //Observable x in the range [0,2] RooRealVar x("x","x",0., 2.) ; //Gaussian PDF for signal RooRealVar xmean("xmean","mean of gaussian ",1., 0., 2.) ; RooRealVar xsigma("xsigma","width of gaussian ",0.1, 0., 1.) ; RooGaussian gauss("gauss","gaussian PDF", x, xmean, xsigma); //Exponential PDF for background RooRealVar tau("tau","tau", -1.5, -0., -2.); RooExponential expo("expo","Exponentxsial", x, tau); RooRealVar frac("frac", "fraction", 0.08); RooAddPdf model("model", "model", RooArgList(gauss,expo), frac); //Generate MC simulated (toyMC) sample) RooDataSet *data = model.generate(x, 10000); // simulate a sample of 10000 events //Perform Extended ML fit of PDF model to toyMC data model.fitTo(*data); //ML fit //Plot Toy data and PDF overlaid RooPlot *xframe = x.frame(Title("MC data and PDFs (exp + gauss)")); data->plotOn(xframe); model.plotOn(xframe); model.plotOn(xframe, Components(expo), LineStyle(kDashed)); xframe->Draw(); frac.Print(); }