using namespace RooFit; void GaussFlat() { RooRealVar x("x", "x", -10, 10); RooRealVar mean("mean", "mean of Gaussian", 5., -10, 10); RooRealVar sigma("sigma", "width of Gaussian", 3, -10, 10); RooGaussian gauss("gauss", "Gaussian PDF", x, mean, sigma); TCanvas * c1 = new TCanvas("c1", "Curva Gaussiana"); TCanvas * c2 = new TCanvas("c2", "Flat"); TCanvas * c3 = new TCanvas("c3", "Gaussiana+Flat"); TCanvas * c4 = new TCanvas("c4", "Dati-model Fit"); //Generate a toy MC sample RooDataSet * data = gauss.generate(x, 10000); c1->cd(); RooPlot * xframe = x.frame(Title("MC Gaussian data")); data->plotOn (xframe); xframe->Draw(); RooRealVar coeff1("coeff1", "Line coefficient 1", 0); RooPolynomial flat("flat", "flat", x, coeff1); RooDataSet * data1 = flat.generate(x, 10000); c2->cd(); RooPlot * xframe = x.frame(Title("MC flat data")); data1-> plotOn (xframe); xframe->Draw(); RooRealVar f("f","fraction", 0.3, 0.0, 1.0); RooAddPdf sum ("sum", "", RooArgList(gauss, flat), RooArgList(f)); RooDataSet * data2 = sum.generate(x,10000); c3-> cd(); RooPlot * xframe = x.frame(Title("Gauss _flat MC data")); data2->plotOn(xframe); xframe-> Draw(); //ML fit of gauss to data c4->cd(); sum.fitTo(*data2); mean.Print(); sigma.Print(); RooPlot * xframe = x.frame(Title("Fit to MC data (Gauss+Flat)")); data2->plotOn(xframe, Name("myHist")); sum.plotOn(xframe, Name("myCurve")); gauss.paramOn(xframe); xframe->Draw(); Double_t chi2 = xframe->chiSquare("myCurve", "myHist"); cout<< "chi2 = " <