Multidimensional models: complete example with use of conditional pdf with per-event errors 
  
import ROOT
 
 
 
sigma = 
ROOT.RooRealVar(
"sigma", 
"per-event error scale factor", 1, 0.1, 10)
 
gm = 
ROOT.RooGaussModel(
"gm1", 
"gauss model scaled bt per-event error", dt, bias, sigma, dterr)
 
 
decay_gm = 
ROOT.RooDecay(
"decay_gm", 
"decay", dt, tau, gm, type=
"DoubleSided")
 
 
 
 
 
 
 
 
 
 
frame = 
dt.frame(Title=
"Slices of decay(dt|dterr) at various dterr")
 
for ibin 
in range(0, 100, 20):
 
 
frame2 = 
dt.frame(Title=
"Projection of decay(dt|dterr) on dt")
 
 
 
c = 
ROOT.TCanvas(
"rf306_condpereventerrors", 
"rf306_condperventerrors", 1200, 400)
 
 
c.SaveAs(
"rf306_condpereventerrors.png")
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
  [#1] INFO:Fitting -- RooAbsPdf::fitTo(gm1_conv_exp(-abs(@0)/@1)_dt_tau_[decay_gm]_over_gm1_conv_exp(-abs(@0)/@1)_dt_tau_[decay_gm]_Int[dt]) 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 1.03451 ms
[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_gm1_conv_exp(-abs(@0)/@1)_dt_tau_[decay_gm]_over_gm1_conv_exp(-abs(@0)/@1)_dt_tau_[decay_gm]_Int[dt]_decay_gmData) 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:NumericIntegration -- RooRealIntegral::init(gm1_conv_exp(-abs(@0)/@1)_dt_tau_[decay_gm]_Int[dt,dterr]) using numeric integrator RooIntegrator1D to calculate Int(dterr)
[#1] INFO:Plotting -- RooAbsReal::plotOn(decay_gm) plot on dt averages using data variables (dterr)
- Date
 - February 2018 
 
- Authors
 - Clemens Lange, Wouter Verkerke (C++ version) 
 
Definition in file rf306_condpereventerrors.py.