TTree tree("HiggsTree","The tree cont"); auto nevt = tree.ReadFile("Hgg.txt","x"); if (nevt <= 0) { Error("fitHgg","Error reading data from input file "); } std::cout << "Read " << nevt << " events from the file." << std::endl; RooWorkspace w("Workspace for the Higgs fit"); w.factory("x[110,160]"); // invariant mass // Backround Model w.factory("nbackground[10000, 0, 10000]"); w.var("nbackground")->setVal(nevt); w.var("nbackground")->setMin(0.1*nevt); w.var("nbackground")->setMax(10*nevt); // Create exponential distribution characterised by two components w.factory("a1[ 7.5, -500, 500]"); w.factory("a2[-1.5, -500, 500]"); w.factory("expr::z('-(a1*x/100 + a2*(x/100)^2)', a1, a2, x)"); w.factory("Exponential::bmodel(z, 1)"); // Signal Model w.factory("nsignal[100, 0.0, 1000.0]"); w.factory("mass[130, 110, 150]"); w.factory("width[1, 0.5, 5]"); w.factory("Gaussian::smodel(x, mass, width)"); // Signal + Background Model w.factory("SUM::model(nbackground*bmodel, nsignal*smodel)"); auto smodel = w.pdf("smodel"); auto model = w.pdf("model"); auto x = w.var("x"); RooDataSet dataset("data","data",*x,RooFit::Import(tree) ) w.Print(); auto r = model->fitTo(dataset, RooFit::Minimizer("Minuit"),RooFit::Save(true), RooFit::Offset(true)); auto plot = x->frame(); dataset.plotOn(plot); model->plotOn(plot); model->plotOn(plot, RooFit::Components("bmodel"),RooFit::LineStyle(kDashed)); model->plotOn(plot, RooFit::Components("smodel"),RooFit::LineColor(kRed)); model->paramOn(plot); %jsroot on TCanvas c; plot->Draw(); c.Draw(); w.writeToFile("HiggsModel.root",true);