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);