Special pdf's: unbinned maximum likelihood fit of an efficiency eff(x) function to a dataset D(x,cut), cut is a category encoding a selection, which the efficiency as function of x should be described by eff(x)
import ROOT
model =
ROOT.RooProdPdf(
"model",
"model", {shapePdf}, Conditional=({effPdf}, {cut}))
effPdf.fitTo(data, ConditionalObservables={x}, PrintLevel=-1)
frame1 =
x.frame(Bins=20, Title=
"Data (all, accepted)")
data.plotOn(frame1, Cut=
"cut==cut::accept", MarkerColor=
"r", LineColor=
"r")
frame2 =
x.frame(Bins=20, Title=
"Fitted efficiency")
ca =
ROOT.TCanvas(
"rf701_efficiency",
"rf701_efficiency", 800, 400)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
[#1] INFO:Fitting -- RooAbsPdf::fitTo(effPdf_over_effPdf_Int[cut]) fixing normalization set for coefficient determination to observables in data
[#1] INFO:Fitting -- using CPU computation library compiled with -mavx512
[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_effPdf_over_effPdf_Int[cut]_modelData) Summation contains a RooNLLVar, using its error level
[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: activating const optimization
[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: deactivating const optimization
[#1] INFO:Plotting -- RooTreeData::plotOn: plotting 8176 events out of 10000 total events
- Date
- February 2018
- Authors
- Clemens Lange, Wouter Verkerke (C++ version)
Definition in file rf701_efficiencyfit.py.