using namespace RooFit; void GaussGauss() { TFile * f = new TFile("signal.root", "Read"); TTree * t = (TTree*)f -> Get("signal"); TCanvas * c1 = new TCanvas("c1", "c1", 1); c1->SetLogy(); t->Draw("var1"); RooRealVar var1("var1","var1",5.24,5.29); //DICHIARO IL DATASET RooDataSet data("data","data", t, RooArgSet(var1)); RooRealVar mean1("mean1", "mean of fist Gaussian", 5.275, 5.270, 5.290); RooRealVar sigma1("sigma1", "width of first Gaussian", 0.001, 0, 2); RooGaussian gauss1("gauss", "First Gaussian PDF", var1, mean1, sigma1); RooRealVar mean2("mean2", "mean of 2nd Gaussian", 5.275, 5.260, 5.290); RooRealVar sigma2("sigma2", "width of 2nd Gaussian", 0.00001, 0, 2); RooGaussian gauss2("gauss2", "2nd Gaussian PDF", var1, mean2, sigma2); RooRealVar fraction("fraction", "fraction", 0.2, 0.0, 1.0); RooAddPdf * sum = new RooAddPdf("sum", "Total sig PDF", RooArgList(gauss1,gauss2), RooArgList(fraction)); sum->fitTo(data, Minos(kFALSE)); c1->cd(); RooPlot * var1frame = var1.frame(Title("MC var1 signal data")); data.plotOn (var1frame, Name("Hist")); sum->plotOn(var1frame, Name("Fitpdf")); sum->plotOn(var1frame,Components(gauss1), LineStyle(kDashed)); sum->plotOn(var1frame, Components(gauss2), LineStyle(kDotted)); sum->paramOn(var1frame); var1frame->Draw(); Double_t chi2 = var1frame->chiSquare("Fitpdf", "Hist"); cout<<"chi2 = " << chi2 << endl; }