using namespace RooFit; using namespace RooStats; simpleWindow_1(){ RooWorkspace w("w",true); w.factory("{mass[178.5,191],S[0,-10000,10000],B[800000,0,1000000]}"); w.factory("Polynomial::polyA(mass,{a1[1,-inf,inf],a2[1,-inf,inf],a3[1,-inf,inf]})"); w.factory("Bernstein::polyB(mass,{b1[1,-inf,inf],b2[1,-inf,inf],b3[1,-inf,inf]})"); w.factory("Chebychev::polyC(mass,{c1[0.1,-inf,inf],c2[0.1,-inf,inf],c3[0.1,-inf,inf]})"); w.factory("Gaussian::sigPdf(mass,mA[184.75,178.5,191],sigma[1.0])"); w::mA.setConstant(); w::sigma.setConstant(); w.factory("SUM::modelA(S*sigPdf,B*polyA)"); w.factory("SUM::modelB(S*sigPdf,B*polyB)"); w.factory("SUM::modelC(S*sigPdf,B*polyC)"); w::mass.setBins(25); w.factory("Polynomial::sourcePoly(mass,{d1[-0.433993],d2[88.1453],d3[44.9810]})"); //dataLim = w::sourcePoly.generate(w::mass,800000); dataLim = w::sourcePoly.generateBinned(w::mass,800000); frame = w::mass.frame(); dataLim->plotOn(frame); RooMsgService::instance().setGlobalKillBelow(RooFit::FATAL); w::polyA.fitTo(*dataLim); w::polyA.plotOn(frame,LineColor(kOrange),LineStyle(kDashed)); w::polyB.fitTo(*dataLim); w::polyB.plotOn(frame,LineColor(kRed),LineStyle(kDashed)); w::polyC.fitTo(*dataLim); w::polyC.plotOn(frame,LineColor(kYellow),LineStyle(kDashed)); fitA = w::modelA.fitTo(*dataLim,Save()); w::modelA.plotOn(frame,LineColor(kBlue),LineStyle(kDashed)); fitB = w::modelB.fitTo(*dataLim,Save()); w::modelB.plotOn(frame,LineColor(kBlue+1),LineStyle(kDashed)); fitC = w::modelC.fitTo(*dataLim,Save()); w::modelC.plotOn(frame,LineColor(kBlue+2),LineStyle(kDashed)); frame->Draw(); cout << " " << endl; cout << " Polynomial: " << fitA->printValue(cout) << endl; cout << " Bernstein: " << fitB->printValue(cout) << endl; cout << " Chebychev: " << fitC->printValue(cout) << endl; cout << " \n" << endl; }