50 using namespace RooFit;
52 void JeffreysPriorDemo()
55 w.factory(
"Uniform::u(x[0,1])");
56 w.factory(
"mu[100,1,200]");
57 w.factory(
"ExtendPdf::p(u,mu)");
59 RooDataHist *asimov = w.pdf(
"p")->generateBinned(*w.var(
"x"), ExpectedData());
61 RooFitResult *res = w.pdf(
"p")->fitTo(*asimov, Save(), SumW2Error(kTRUE));
65 TMatrixDSym cov = res->covarianceMatrix();
66 cout <<
"variance = " << (cov.Determinant()) << endl;
67 cout <<
"stdev = " << sqrt(cov.Determinant()) << endl;
69 cout <<
"jeffreys = " << sqrt(cov.Determinant()) << endl;
71 w.defineSet(
"poi",
"mu");
72 w.defineSet(
"obs",
"x");
74 RooJeffreysPrior pi(
"jeffreys",
"jeffreys", *w.pdf(
"p"), *w.set(
"poi"), *w.set(
"obs"));
76 RooGenericPdf *test =
new RooGenericPdf(
"Expected",
"Expected = 1/#sqrt{#mu}",
"1./sqrt(mu)",
79 TCanvas *c1 =
new TCanvas;
80 RooPlot *plot = w.var(
"mu")->frame();
82 test->plotOn(plot, LineColor(kRed), LineStyle(kDashDotted));
85 auto legend = plot->BuildLegend();
90 void TestJeffreysGaussMean()
93 w.factory(
"Gaussian::g(x[0,-20,20],mu[0,-5.,5],sigma[1,0,10])");
94 w.factory(
"n[10,.1,200]");
95 w.factory(
"ExtendPdf::p(g,n)");
96 w.var(
"sigma")->setConstant();
97 w.var(
"n")->setConstant();
99 RooDataHist *asimov = w.pdf(
"p")->generateBinned(*w.var(
"x"), ExpectedData());
101 RooFitResult *res = w.pdf(
"p")->fitTo(*asimov, Save(), SumW2Error(kTRUE));
105 TMatrixDSym cov = res->covarianceMatrix();
106 cout <<
"variance = " << (cov.Determinant()) << endl;
107 cout <<
"stdev = " << sqrt(cov.Determinant()) << endl;
109 cout <<
"jeffreys = " << sqrt(cov.Determinant()) << endl;
111 w.defineSet(
"poi",
"mu");
112 w.defineSet(
"obs",
"x");
114 RooJeffreysPrior pi(
"jeffreys",
"jeffreys", *w.pdf(
"p"), *w.set(
"poi"), *w.set(
"obs"));
116 const RooArgSet *temp = w.set(
"poi");
117 pi.getParameters(*temp)->Print();
120 RooGenericPdf *test =
new RooGenericPdf(
"constant",
"Expected = constant",
"1", *w.set(
"poi"));
122 TCanvas *c1 =
new TCanvas;
123 RooPlot *plot = w.var(
"mu")->frame();
125 test->plotOn(plot, LineColor(kRed), LineStyle(kDashDotted));
128 auto legend = plot->BuildLegend();
133 void TestJeffreysGaussSigma()
141 w.factory(
"Gaussian::g(x[0,-20,20],mu[0,-5,5],sigma[1,1,5])");
142 w.factory(
"n[100,.1,2000]");
143 w.factory(
"ExtendPdf::p(g,n)");
145 w.var(
"mu")->setConstant();
146 w.var(
"n")->setConstant();
147 w.var(
"x")->setBins(301);
149 RooDataHist *asimov = w.pdf(
"p")->generateBinned(*w.var(
"x"), ExpectedData());
151 RooFitResult *res = w.pdf(
"p")->fitTo(*asimov, Save(), SumW2Error(kTRUE));
155 TMatrixDSym cov = res->covarianceMatrix();
156 cout <<
"variance = " << (cov.Determinant()) << endl;
157 cout <<
"stdev = " << sqrt(cov.Determinant()) << endl;
159 cout <<
"jeffreys = " << sqrt(cov.Determinant()) << endl;
161 w.defineSet(
"poi",
"sigma");
162 w.defineSet(
"obs",
"x");
164 RooJeffreysPrior pi(
"jeffreys",
"jeffreys", *w.pdf(
"p"), *w.set(
"poi"), *w.set(
"obs"));
166 const RooArgSet *temp = w.set(
"poi");
167 pi.getParameters(*temp)->Print();
169 RooGenericPdf *test =
new RooGenericPdf(
"test",
"Expected = #sqrt{2}/#sigma",
"sqrt(2.)/sigma", *w.set(
"poi"));
171 TCanvas *c1 =
new TCanvas;
172 RooPlot *plot = w.var(
"sigma")->frame();
174 test->plotOn(plot, LineColor(kRed), LineStyle(kDashDotted));
177 auto legend = plot->BuildLegend();
182 void TestJeffreysGaussMeanAndSigma()
190 w.factory(
"Gaussian::g(x[0,-20,20],mu[0,-5,5],sigma[1,1.,5.])");
191 w.factory(
"n[100,.1,2000]");
192 w.factory(
"ExtendPdf::p(g,n)");
194 w.var(
"n")->setConstant();
195 w.var(
"x")->setBins(301);
197 RooDataHist *asimov = w.pdf(
"p")->generateBinned(*w.var(
"x"), ExpectedData());
199 RooFitResult *res = w.pdf(
"p")->fitTo(*asimov, Save(), SumW2Error(kTRUE));
203 TMatrixDSym cov = res->covarianceMatrix();
204 cout <<
"variance = " << (cov.Determinant()) << endl;
205 cout <<
"stdev = " << sqrt(cov.Determinant()) << endl;
207 cout <<
"jeffreys = " << sqrt(cov.Determinant()) << endl;
209 w.defineSet(
"poi",
"mu,sigma");
210 w.defineSet(
"obs",
"x");
212 RooJeffreysPrior pi(
"jeffreys",
"jeffreys", *w.pdf(
"p"), *w.set(
"poi"), *w.set(
"obs"));
214 const RooArgSet *temp = w.set(
"poi");
215 pi.getParameters(*temp)->Print();
218 TCanvas *c1 =
new TCanvas;
219 TH1 *Jeff2d = pi.createHistogram(
"2dJeffreys", *w.var(
"mu"), Binning(10, -5., 5), YVar(*w.var(
"sigma"), Binning(10, 1., 5.)));
220 Jeff2d->Draw(
"surf");