28 using namespace RooFit;
30 void rf802_mcstudy_addons()
37 RooRealVar x(
"x",
"x", -10, 10);
39 RooRealVar mean(
"mean",
"mean of gaussian", 0, -2., 1.8);
40 RooRealVar sigma(
"sigma",
"width of gaussian", 5, 1, 10);
43 RooGaussian gauss(
"gauss",
"gaussian PDF", x, mean, sigma);
49 RooMCStudy *mcs =
new RooMCStudy(gauss, x, Silence(), Binned());
52 RooChi2MCSModule chi2mod;
53 mcs->addModule(chi2mod);
56 mcs->generateAndFit(2000, 1000);
60 TH1 *hist_chi2 = mcs->fitParDataSet().createHistogram(
"chi2");
61 hist_chi2->SetTitle(
"#chi^{2} values of all toy runs;#chi^{2}");
62 TH1 *hist_prob = mcs->fitParDataSet().createHistogram(
"prob");
63 hist_prob->SetTitle(
"Corresponding #chi^{2} probability;Prob(#chi^{2},ndof)");
70 RooRealVar mean2(
"mean2",
"mean of gaussian 2", 2.);
71 RooGaussian gauss2(
"gauss2",
"gaussian PDF2", x, mean2, sigma);
77 RooMCStudy *mcs2 =
new RooMCStudy(gauss2, x, FitModel(gauss), Silence(), Binned());
80 RooChi2MCSModule chi2mod2;
81 mcs2->addModule(chi2mod2);
84 mcs2->generateAndFit(2000, 1000);
92 auto pullMeanFrame = mcs2->plotPull(mean);
96 TH1 *hist2_chi2 = mcs2->fitParDataSet().createHistogram(
"chi2");
97 TH1 *hist2_prob = mcs2->fitParDataSet().createHistogram(
"prob");
98 hist2_chi2->SetLineColor(kRed);
99 hist2_prob->SetLineColor(kRed);
102 leg.AddEntry(hist_chi2,
"Optimal fit",
"L");
103 leg.AddEntry(hist2_chi2,
"Biased fit",
"L");
104 leg.SetBorderSize(0);
107 TCanvas *c =
new TCanvas(
"rf802_mcstudy_addons",
"rf802_mcstudy_addons", 800, 400);
110 gPad->SetLeftMargin(0.15);
111 hist_chi2->GetYaxis()->SetTitleOffset(1.4);
113 hist2_chi2->Draw(
"esame");
116 gPad->SetLeftMargin(0.15);
117 hist_prob->GetYaxis()->SetTitleOffset(1.4);
119 hist2_prob->Draw(
"esame");
121 pullMeanFrame->Draw();
126 gDirectory->Add(mcs);