25 using namespace RooFit;
27 void rf403_weightedevts()
33 RooRealVar x(
"x",
"x", -10, 10);
37 RooPolynomial p0(
"px",
"px", x);
40 RooDataSet *data = p0.generate(x, 1000);
46 RooFormulaVar wFunc(
"w",
"event weight",
"(x*x+10)", x);
49 RooRealVar *w = (RooRealVar *)data->addColumn(wFunc);
55 RooDataSet wdata(data->GetName(), data->GetTitle(), data, *data->get(), 0, w->GetName());
64 RooRealVar a0(
"a0",
"a0", 1);
65 RooRealVar a1(
"a1",
"a1", 0, -1, 1);
66 RooRealVar a2(
"a2",
"a2", 1, 0, 10);
67 RooPolynomial p2(
"p2",
"p2", x, RooArgList(a0, a1, a2), 0);
76 RooFitResult *r_ml_wgt = p2.fitTo(wdata, Save());
91 RooFitResult *r_ml_wgt_corr = p2.fitTo(wdata, Save(), SumW2Error(kTRUE));
97 RooPlot *frame = x.frame(Title(
"Unbinned ML fit, binned chi^2 fit to weighted data"));
100 wdata.plotOn(frame, DataError(RooAbsData::SumW2));
109 RooGenericPdf genPdf(
"genPdf",
"x*x+10", x);
112 RooDataSet *data2 = genPdf.generate(x, 1000);
115 RooDataSet *data3 = genPdf.generate(x, 43000);
118 RooFitResult *r_ml_unw10 = p2.fitTo(*data2, Save());
119 RooFitResult *r_ml_unw43 = p2.fitTo(*data3, Save());
125 RooDataHist *binnedData = wdata.binnedClone();
126 binnedData->Print(
"v");
133 RooChi2Var chi2(
"chi2",
"chi2", p2, *binnedData, DataError(RooAbsData::SumW2));
134 RooMinimizer m(chi2);
139 RooFitResult *r_chi2_wgt = m.save();
140 p2.plotOn(frame, LineStyle(kDashed), LineColor(kRed));
149 cout <<
"==> ML Fit results on 1K unweighted events" << endl;
151 cout <<
"==> ML Fit results on 43K unweighted events" << endl;
153 cout <<
"==> ML Fit results on 1K weighted events with a summed weight of 43K" << endl;
155 cout <<
"==> Corrected ML Fit results on 1K weighted events with a summed weight of 43K" << endl;
156 r_ml_wgt_corr->Print();
157 cout <<
"==> Chi2 Fit results on 1K weighted events with a summed weight of 43K" << endl;
160 new TCanvas(
"rf403_weightedevts",
"rf403_weightedevts", 600, 600);
161 gPad->SetLeftMargin(0.15);
162 frame->GetYaxis()->SetTitleOffset(1.8);