void rf501_simultaneouspdf()
{
RooRealVar mean_ctl(
"mean_ctl",
"mean_ctl", -3, -8, 8);
RooRealVar a0_ctl(
"a0_ctl",
"a0_ctl", -0.1, -1, 1);
RooRealVar a1_ctl(
"a1_ctl",
"a1_ctl", 0.5, -0.1, 1);
std::unique_ptr<RooDataSet> data{model.generate({
x}, 1000)};
std::unique_ptr<RooDataSet> data_ctl{model_ctl.generate({
x}, 2000)};
sample.defineType("physics");
sample.defineType("control");
RooDataSet combData(
"combData",
"combined data",
x, Index(sample),
Import({{
"physics", data.get()}, {
"control", data_ctl.get()}}));
RooSimultaneous simPdf(
"simPdf",
"simultaneous pdf", {{
"physics", &model}, {
"control", &model_ctl}}, sample);
std::unique_ptr<RooFitResult> fitResult{simPdf.fitTo(combData,
Save(),
PrintLevel(-1))};
std::unique_ptr<RooAbsData> slicedData1{combData.reduce(
Cut(
"sample==sample::physics"))};
slicedData1->plotOn(frame1);
simPdf.getPdf("physics")->plotOn(frame1);
std::unique_ptr<RooAbsData> slicedData2{combData.reduce(
Cut(
"sample==sample::control"))};
slicedData2->plotOn(frame2);
simPdf.plotOn(frame2,
ProjWData(sample, *slicedData2));
combData.plotOn(frame3);
simPdf.plotOn(frame3,
ProjWData(sample, combData));
TCanvas *
c =
new TCanvas(
"rf501_simultaneouspdf",
"rf403_simultaneouspdf", 1200, 400);
auto draw = [&](
int i,
RooPlot & frame) {
gPad->SetLeftMargin(0.15);
frame.GetYaxis()->SetTitleOffset(1.4);
frame.Draw();
};
draw(1, *frame1);
draw(2, *frame2);
draw(3, *frame3);
}
void Print(Option_t *options=nullptr) const override
Print the object to the defaultPrintStream().
Efficient implementation of a sum of PDFs of the form.
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Object to represent discrete states.
Chebychev polynomial p.d.f.
Container class to hold unbinned data.
Plot frame and a container for graphics objects within that frame.
Variable that can be changed from the outside.
Facilitates simultaneous fitting of multiple PDFs to subsets of a given dataset.
RooCmdArg Title(const char *name)
RooCmdArg Bins(Int_t nbin)
RooCmdArg Import(const char *state, TH1 &histo)
RooCmdArg Save(bool flag=true)
RooCmdArg PrintLevel(Int_t code)
RooCmdArg Components(Args_t &&... argsOrArgSet)
RooCmdArg ProjWData(const RooAbsData &projData, bool binData=false)
RooCmdArg Cut(const char *cutSpec)
RooCmdArg LineStyle(Style_t style)
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
[#1] INFO:Fitting -- RooAbsPdf::fitTo(simPdf) fixing normalization set for coefficient determination to observables in data
[#1] INFO:Fitting -- using generic CPU library compiled with no vectorizations
[#1] INFO:Fitting -- Creation of NLL object took 2.03572 ms
[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_simPdf_combData) Summation contains a RooNLLVar, using its error level
[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: activating const optimization
[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only
[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: deactivating const optimization
RooFitResult: minimized FCN value: 8630.62, estimated distance to minimum: 0.000174671
covariance matrix quality: Full, accurate covariance matrix
Status : MINIMIZE=0 HESSE=0
Floating Parameter FinalValue +/- Error
-------------------- --------------------------
a0 6.7634e-02 +/- 6.04e-02
a0_ctl -1.5627e-01 +/- 5.53e-02
a1 -3.8353e-03 +/- 6.32e-02
a1_ctl 3.8442e-01 +/- 4.35e-02
f 1.7952e-01 +/- 1.55e-02
f_ctl 5.2710e-01 +/- 1.25e-02
mean 1.4991e-02 +/- 3.34e-02
mean_ctl -3.0079e+00 +/- 1.04e-02
sigma 3.0450e-01 +/- 8.33e-03
[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) directly selected PDF components: (px)
[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) indirectly selected PDF components: ()
[#1] INFO:Plotting -- RooSimultaneous::plotOn(simPdf) plot on x averages with data index category (sample)
[#1] INFO:Plotting -- RooSimultaneous::plotOn(simPdf) plot on x averages with data index category (sample)
[#1] INFO:Plotting -- RooAbsPdf::plotOn(simPdf) directly selected PDF components: (px_ctl)
[#1] INFO:Plotting -- RooAbsPdf::plotOn(simPdf) indirectly selected PDF components: (model_ctl)
[#1] INFO:Plotting -- RooSimultaneous::plotOn(simPdf) plot on x averages with data index category (sample)
[#1] INFO:Plotting -- RooSimultaneous::plotOn(simPdf) plot on x averages with data index category (sample)
[#1] INFO:Plotting -- RooAbsPdf::plotOn(simPdf) directly selected PDF components: (px,px_ctl)
[#1] INFO:Plotting -- RooAbsPdf::plotOn(simPdf) indirectly selected PDF components: (model_ctl,model)