#include <iostream>
#include <memory>
{
std::unique_ptr<RooDataSet> sigData(
g.generate(
x, 50));
std::unique_ptr<RooDataSet> bkgData(u.generate(
x, 1000));
sumData.append(*sigData);
sumData.append(*bkgData);
std::unique_ptr<RooDataHist> dh_sig(
g.generateBinned(
x, 50) );
std::unique_ptr<RooDataHist> dh_bkg( u.generateBinned(
x, 10000) );
true);
true);
true);
auto result0 = model0.fitTo(sumData, PrintLevel(0), Save());
auto result1 = model1.fitTo(sumData, PrintLevel(0), Save());
auto result2 = model2.fitTo(sumData, PrintLevel(0), Save());
auto frame =
x.frame(Title(
"No template uncertainties"));
sumData.plotOn(frame);
model0.plotOn(frame, LineColor(
kBlue), VisualizeError(*result0));
sumData.plotOn(frame);
model0.plotOn(frame, LineColor(
kBlue));
model0.plotOn(frame, Components(p_h_sig), LineColor(
kAzure));
model0.plotOn(frame, Components(p_h_bkg), LineColor(
kRed));
model0.paramOn(frame);
sigData->plotOn(frame, MarkerColor(
kBlue));
"No template uncertainties",
"are taken into account.",
"This leads to low errors",
"for the parameters A, since",
"the only source of errors",
"are the data statistics."}) {
}
frame =
x.frame(
Title(
"Barlow Beeston for Sig & Bkg separately"));
sumData.plotOn(frame);
sumData.plotOn(frame);
"With gamma parameters, the",
"signal & background templates",
"can adapt to the data.",
"Note how the blue signal",
"template changes its shape.",
"This leads to higher errors",
"of the scale parameters A."}) {
}
frame =
x.frame(
Title(
"Barlow Beeston light for (Sig+Bkg)"));
sumData.plotOn(frame);
sumData.plotOn(frame);
"When signal and background",
"template share one gamma para-",
"meter per bin, they adapt less.",
"The errors of the A parameters",
"also shrink slightly."}) {
}
std::cout << "Asig [normal ] = " << Asig0.getVal() << " +/- " << Asig0.getError() << std::endl;
std::cout << "Asig [BB ] = " << Asig1.getVal() << " +/- " << Asig1.getError() << std::endl;
std::cout << "Asig [BBlight] = " << Asig2.getVal() << " +/- " << Asig2.getError() << std::endl;
}
Option_t Option_t TPoint TPoint const char text
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
RooDataSet is a container class to hold unbinned data.
The RooHistConstraint implements constraint terms for a binned PDF with statistical uncertainties.
RooHistFunc implements a real-valued function sampled from a multidimensional histogram.
A histogram function that assigns scale parameters to every bin.
Efficient implementation of a product of PDFs of the form.
Implements a PDF constructed from a sum of functions:
RooRealVar represents a variable that can be changed from the outside.
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
TVirtualPad * cd(Int_t subpadnumber=0) override
Set current canvas & pad.
virtual TObject * DrawClone(Option_t *option="") const
Draw a clone of this object in the current selected pad with: gROOT->SetSelectedPad(c1).
void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0) override
Automatic pad generation by division.
A Pave (see TPave) with text, lines or/and boxes inside.
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
void Clear(Option_t *option="") override
Clear all lines in this pavetext.
virtual void SetBorderSize(Int_t bordersize=4)
void Draw(Option_t *option="") override=0
Default Draw method for all objects.
RooCmdArg Parameters(const RooArgSet ¶ms)
RooCmdArg Conditional(const RooArgSet &pdfSet, const RooArgSet &depSet, bool depsAreCond=false)
RooCmdArg MarkerColor(Color_t color)
RooCmdArg Components(Args_t &&... argsOrArgSet)
RooCmdArg VisualizeError(const RooDataSet ¶mData, double Z=1)
RooCmdArg LineColor(Color_t color)
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
[#0] WARNING:InputArguments -- The parameter 'sigG' with range [-10, 10] of the RooGaussian 'g' exceeds the safe range of (0, inf). Advise to limit its range.
[#1] INFO:Minimization -- p.d.f. provides expected number of events, including extended term in likelihood.
[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: activating const optimization
[#1] INFO:Minimization -- The following expressions have been identified as constant and will be precalculated and cached: (p_h_sig,p_h_bkg)
Minuit2Minimizer: Minimize with max-calls 1000 convergence for edm < 1 strategy 1
Minuit2Minimizer : Valid minimum - status = 0
FVAL = -2388.31039421315518
Edm = 3.25299757922590944e-06
Nfcn = 60
Abkg = 0.0614547 +/- 0.00211669 (limited)
Asig = 0.833778 +/- 0.1898 (limited)
[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: deactivating const optimization
[#1] INFO:Minimization -- p.d.f. provides expected number of events, including extended term in likelihood.
[#1] INFO:Minimization -- Including the following constraint terms in minimization: (hc_sig,hc_bkg)
[#1] INFO:Minimization -- The global observables are not defined , normalize constraints with respect to the parameters (Abkg,Asig,p_ph_bkg_gamma_bin_0,p_ph_bkg_gamma_bin_1,p_ph_bkg_gamma_bin_10,p_ph_bkg_gamma_bin_11,p_ph_bkg_gamma_bin_12,p_ph_bkg_gamma_bin_13,p_ph_bkg_gamma_bin_14,p_ph_bkg_gamma_bin_15,p_ph_bkg_gamma_bin_16,p_ph_bkg_gamma_bin_17,p_ph_bkg_gamma_bin_18,p_ph_bkg_gamma_bin_19,p_ph_bkg_gamma_bin_2,p_ph_bkg_gamma_bin_20,p_ph_bkg_gamma_bin_21,p_ph_bkg_gamma_bin_22,p_ph_bkg_gamma_bin_23,p_ph_bkg_gamma_bin_24,p_ph_bkg_gamma_bin_3,p_ph_bkg_gamma_bin_4,p_ph_bkg_gamma_bin_5,p_ph_bkg_gamma_bin_6,p_ph_bkg_gamma_bin_7,p_ph_bkg_gamma_bin_8,p_ph_bkg_gamma_bin_9,p_ph_sig_gamma_bin_0,p_ph_sig_gamma_bin_1,p_ph_sig_gamma_bin_10,p_ph_sig_gamma_bin_11,p_ph_sig_gamma_bin_12,p_ph_sig_gamma_bin_13,p_ph_sig_gamma_bin_14,p_ph_sig_gamma_bin_15,p_ph_sig_gamma_bin_16,p_ph_sig_gamma_bin_17,p_ph_sig_gamma_bin_18,p_ph_sig_gamma_bin_19,p_ph_sig_gamma_bin_2,p_ph_sig_gamma_bin_20,p_ph_sig_gamma_bin_21,p_ph_sig_gamma_bin_22,p_ph_sig_gamma_bin_23,p_ph_sig_gamma_bin_24,p_ph_sig_gamma_bin_3,p_ph_sig_gamma_bin_4,p_ph_sig_gamma_bin_5,p_ph_sig_gamma_bin_6,p_ph_sig_gamma_bin_7,p_ph_sig_gamma_bin_8,p_ph_sig_gamma_bin_9)
[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_model1_sumData_with_constr) Summation contains a RooNLLVar, using its error level
[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: activating const optimization
[#1] INFO:Minimization -- The following expressions will be evaluated in cache-and-track mode: (p_ph_sig,p_ph_bkg)
Minuit2Minimizer: Minimize with max-calls 16000 convergence for edm < 1 strategy 1
Minuit2Minimizer : Valid minimum - status = 0
FVAL = -2282.22801982066039
Edm = 9.75046667922085591e-08
Nfcn = 1365
Abkg = 0.061372 +/- 0.00222727 (limited)
Asig = 0.850643 +/- 0.234541 (limited)
p_ph_bkg_gamma_bin_0 = 0.998055 +/- 0.0474272 (limited)
p_ph_bkg_gamma_bin_1 = 1.0003 +/- 0.0474806 (limited)
p_ph_bkg_gamma_bin_10 = 0.980305 +/- 0.0456254 (limited)
p_ph_bkg_gamma_bin_11 = 1.00631 +/- 0.0508601 (limited)
p_ph_bkg_gamma_bin_12 = 1.00477 +/- 0.0510228 (limited)
p_ph_bkg_gamma_bin_13 = 0.991229 +/- 0.0489466 (limited)
p_ph_bkg_gamma_bin_14 = 0.99605 +/- 0.0497199 (limited)
p_ph_bkg_gamma_bin_15 = 1.00899 +/- 0.0476474 (limited)
p_ph_bkg_gamma_bin_16 = 1.02997 +/- 0.0492181 (limited)
p_ph_bkg_gamma_bin_17 = 1.00769 +/- 0.0467483 (limited)
p_ph_bkg_gamma_bin_18 = 1.01965 +/- 0.0509664 (limited)
p_ph_bkg_gamma_bin_19 = 0.975013 +/- 0.045874 (limited)
p_ph_bkg_gamma_bin_2 = 0.996158 +/- 0.0468678 (limited)
p_ph_bkg_gamma_bin_20 = 0.999858 +/- 0.0473542 (limited)
p_ph_bkg_gamma_bin_21 = 0.998271 +/- 0.0474906 (limited)
p_ph_bkg_gamma_bin_22 = 0.998324 +/- 0.0487672 (limited)
p_ph_bkg_gamma_bin_23 = 0.98395 +/- 0.0461929 (limited)
p_ph_bkg_gamma_bin_24 = 1.02664 +/- 0.047986 (limited)
p_ph_bkg_gamma_bin_3 = 1.00554 +/- 0.0495906 (limited)
p_ph_bkg_gamma_bin_4 = 0.990585 +/- 0.0483895 (limited)
p_ph_bkg_gamma_bin_5 = 0.992304 +/- 0.0482458 (limited)
p_ph_bkg_gamma_bin_6 = 1.01041 +/- 0.0497109 (limited)
p_ph_bkg_gamma_bin_7 = 0.997207 +/- 0.0460182 (limited)
p_ph_bkg_gamma_bin_8 = 0.980295 +/- 0.0463258 (limited)
p_ph_bkg_gamma_bin_9 = 1.00976 +/- 0.0478226 (limited)
p_ph_sig_gamma_bin_11 = 1.09508 +/- 0.337672 (limited)
p_ph_sig_gamma_bin_12 = 1.07036 +/- 0.220991 (limited)
p_ph_sig_gamma_bin_13 = 0.890729 +/- 0.20285 (limited)
p_ph_sig_gamma_bin_14 = 0.947873 +/- 0.35799 (limited)
p_ph_sig_gamma_bin_15 = 1.14083 +/- 1.11115 (limited)
[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: deactivating const optimization
[#1] INFO:Minimization -- p.d.f. provides expected number of events, including extended term in likelihood.
[#1] INFO:Minimization -- Including the following constraint terms in minimization: (hc_sigbkg)
[#1] INFO:Minimization -- The global observables are not defined , normalize constraints with respect to the parameters (Abkg,Asig,p_ph_sig2_gamma_bin_0,p_ph_sig2_gamma_bin_1,p_ph_sig2_gamma_bin_10,p_ph_sig2_gamma_bin_11,p_ph_sig2_gamma_bin_12,p_ph_sig2_gamma_bin_13,p_ph_sig2_gamma_bin_14,p_ph_sig2_gamma_bin_15,p_ph_sig2_gamma_bin_16,p_ph_sig2_gamma_bin_17,p_ph_sig2_gamma_bin_18,p_ph_sig2_gamma_bin_19,p_ph_sig2_gamma_bin_2,p_ph_sig2_gamma_bin_20,p_ph_sig2_gamma_bin_21,p_ph_sig2_gamma_bin_22,p_ph_sig2_gamma_bin_23,p_ph_sig2_gamma_bin_24,p_ph_sig2_gamma_bin_3,p_ph_sig2_gamma_bin_4,p_ph_sig2_gamma_bin_5,p_ph_sig2_gamma_bin_6,p_ph_sig2_gamma_bin_7,p_ph_sig2_gamma_bin_8,p_ph_sig2_gamma_bin_9)
[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_model2_sumData_with_constr) Summation contains a RooNLLVar, using its error level
[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: activating const optimization
[#1] INFO:Minimization -- The following expressions will be evaluated in cache-and-track mode: (p_ph_sig2,p_ph_bkg2)
Minuit2Minimizer: Minimize with max-calls 13500 convergence for edm < 1 strategy 1
Minuit2Minimizer : Valid minimum - status = 0
FVAL = -2291.45127145603146
Edm = 2.76473089713644995e-05
Nfcn = 1119
Abkg = 0.0614393 +/- 0.00221881 (limited)
Asig = 0.834401 +/- 0.203008 (limited)
p_ph_sig2_gamma_bin_0 = 0.997977 +/- 0.0474184 (limited)
p_ph_sig2_gamma_bin_1 = 1.00022 +/- 0.0474718 (limited)
p_ph_sig2_gamma_bin_10 = 0.980256 +/- 0.045617 (limited)
p_ph_sig2_gamma_bin_11 = 1.01067 +/- 0.0488754 (limited)
p_ph_sig2_gamma_bin_12 = 1.01175 +/- 0.0483914 (limited)
p_ph_sig2_gamma_bin_13 = 0.983606 +/- 0.0466986 (limited)
p_ph_sig2_gamma_bin_14 = 0.9948 +/- 0.0483051 (limited)
p_ph_sig2_gamma_bin_15 = 1.00965 +/- 0.0473307 (limited)
p_ph_sig2_gamma_bin_16 = 1.02983 +/- 0.0492085 (limited)
p_ph_sig2_gamma_bin_17 = 1.00759 +/- 0.0467394 (limited)
p_ph_sig2_gamma_bin_18 = 1.01954 +/- 0.0509568 (limited)
p_ph_sig2_gamma_bin_19 = 0.974972 +/- 0.0458656 (limited)
p_ph_sig2_gamma_bin_2 = 0.996083 +/- 0.0468591 (limited)
p_ph_sig2_gamma_bin_20 = 0.999777 +/- 0.0473454 (limited)
p_ph_sig2_gamma_bin_21 = 0.998193 +/- 0.0474818 (limited)
p_ph_sig2_gamma_bin_22 = 0.998245 +/- 0.0487583 (limited)
p_ph_sig2_gamma_bin_23 = 0.983895 +/- 0.0461844 (limited)
p_ph_sig2_gamma_bin_24 = 1.02651 +/- 0.0479766 (limited)
p_ph_sig2_gamma_bin_3 = 1.00545 +/- 0.0495815 (limited)
p_ph_sig2_gamma_bin_4 = 0.990519 +/- 0.0483808 (limited)
p_ph_sig2_gamma_bin_5 = 0.992236 +/- 0.048237 (limited)
p_ph_sig2_gamma_bin_6 = 1.01031 +/- 0.0497017 (limited)
p_ph_sig2_gamma_bin_7 = 0.99713 +/- 0.0460096 (limited)
p_ph_sig2_gamma_bin_8 = 0.980245 +/- 0.0463173 (limited)
p_ph_sig2_gamma_bin_9 = 1.00966 +/- 0.0478136 (limited)
[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: deactivating const optimization
[#1] INFO:Plotting -- RooAbsPdf::plotOn(model0) directly selected PDF components: (p_h_sig)
[#1] INFO:Plotting -- RooAbsPdf::plotOn(model0) indirectly selected PDF components: ()
[#1] INFO:Plotting -- RooAbsPdf::plotOn(model0) directly selected PDF components: (p_h_bkg)
[#1] INFO:Plotting -- RooAbsPdf::plotOn(model0) indirectly selected PDF components: ()
[#1] INFO:Plotting -- RooPlot::updateFitRangeNorm: New event count of 50 will supersede previous event count of 1050 for normalization of PDF projections
[#1] INFO:Plotting -- RooAbsPdf::plotOn(model1) directly selected PDF components: (p_ph_sig)
[#1] INFO:Plotting -- RooAbsPdf::plotOn(model1) indirectly selected PDF components: (sp_ph)
[#1] INFO:Plotting -- RooAbsPdf::plotOn(model1) directly selected PDF components: (p_ph_bkg)
[#1] INFO:Plotting -- RooAbsPdf::plotOn(model1) indirectly selected PDF components: (sp_ph)
[#1] INFO:Plotting -- RooPlot::updateFitRangeNorm: New event count of 50 will supersede previous event count of 1050 for normalization of PDF projections
[#1] INFO:Plotting -- RooAbsPdf::plotOn(model2) directly selected PDF components: (p_ph_sig2)
[#1] INFO:Plotting -- RooAbsPdf::plotOn(model2) indirectly selected PDF components: (sp_ph)
[#1] INFO:Plotting -- RooAbsPdf::plotOn(model2) directly selected PDF components: (p_ph_bkg2)
[#1] INFO:Plotting -- RooAbsPdf::plotOn(model2) indirectly selected PDF components: (sp_ph)
[#1] INFO:Plotting -- RooPlot::updateFitRangeNorm: New event count of 50 will supersede previous event count of 1050 for normalization of PDF projections
Asig [normal ] = 0.833778 +/- 0.189814
Asig [BB ] = 0.850643 +/- 0.235845
Asig [BBlight] = 0.834401 +/- 0.202972