ROOT
Version v6.34
master
v6.32
v6.30
v6.28
v6.26
v6.24
v6.22
v6.20
v6.18
v6.16
v6.14
v6.12
v6.10
v6.08
v6.06
Reference Guide
▼
ROOT
ROOT Reference Documentation
Tutorials
►
Functional Parts
►
Namespaces
►
All Classes
▼
Files
▼
File List
►
bindings
►
core
►
documentation
►
geom
►
graf2d
►
graf3d
►
gui
►
hist
►
html
►
io
►
main
►
math
►
montecarlo
►
net
►
proof
►
roofit
►
sql
►
tmva
►
tree
▼
tutorials
►
cocoa
►
cont
►
dataframe
►
eve
►
eve7
►
fft
►
fit
►
fitsio
►
foam
►
geom
►
gl
►
graphics
►
graphs
►
gui
►
hist
►
histfactory
►
http
►
image
►
io
►
legacy
►
math
►
matrix
►
mc
►
multicore
►
net
►
physics
►
proof
►
pyroot
►
pythia
►
quadp
►
r
►
rcanvas
▼
roofit
rf101_basics.C
rf101_basics.py
rf102_dataimport.C
rf102_dataimport.py
rf103_interprfuncs.C
rf103_interprfuncs.py
rf104_classfactory.C
rf104_classfactory.py
rf105_funcbinding.C
rf105_funcbinding.py
rf106_plotdecoration.C
rf106_plotdecoration.py
rf107_plotstyles.C
rf107_plotstyles.py
rf108_plotbinning.C
rf108_plotbinning.py
rf109_chi2residpull.C
rf109_chi2residpull.py
rf110_normintegration.C
rf110_normintegration.py
rf111_derivatives.C
rf111_derivatives.py
rf201_composite.C
rf201_composite.py
rf202_extendedmlfit.C
rf202_extendedmlfit.py
rf203_ranges.C
rf203_ranges.py
rf204a_extendedLikelihood.C
rf204a_extendedLikelihood.py
rf204b_extendedLikelihood_rangedFit.C
rf204b_extendedLikelihood_rangedFit.py
rf205_compplot.C
rf205_compplot.py
rf206_treevistools.C
rf206_treevistools.py
rf207_comptools.C
rf207_comptools.py
rf208_convolution.C
rf208_convolution.py
rf209_anaconv.C
rf209_anaconv.py
rf210_angularconv.C
rf210_angularconv.py
rf211_paramconv.C
rf211_paramconv.py
rf212_plottingInRanges_blinding.C
rf212_plottingInRanges_blinding.py
rf301_composition.C
rf301_composition.py
rf302_utilfuncs.C
rf302_utilfuncs.py
rf303_conditional.C
rf303_conditional.py
rf304_uncorrprod.C
rf304_uncorrprod.py
rf305_condcorrprod.C
rf305_condcorrprod.py
rf306_condpereventerrors.C
rf306_condpereventerrors.py
rf307_fullpereventerrors.C
rf307_fullpereventerrors.py
rf308_normintegration2d.C
rf308_normintegration2d.py
rf309_ndimplot.C
rf309_ndimplot.py
rf310_sliceplot.C
rf310_sliceplot.py
rf311_rangeplot.C
rf311_rangeplot.py
rf312_multirangefit.C
rf312_multirangefit.py
rf313_paramranges.C
rf313_paramranges.py
rf314_paramfitrange.C
rf314_paramfitrange.py
rf315_projectpdf.C
rf315_projectpdf.py
rf316_llratioplot.C
rf316_llratioplot.py
rf401_importttreethx.C
rf401_importttreethx.py
rf402_datahandling.C
rf402_datahandling.py
rf403_weightedevts.C
rf403_weightedevts.py
rf404_categories.C
rf404_categories.py
rf405_realtocatfuncs.C
rf405_realtocatfuncs.py
rf406_cattocatfuncs.C
rf406_cattocatfuncs.py
rf407_latextables.C
rf407_latextables.py
rf408_RDataFrameToRooFit.C
rf408_RDataFrameToRooFit.py
rf409_NumPyPandasToRooFit.py
rf501_simultaneouspdf.C
rf501_simultaneouspdf.py
rf502_wspacewrite.C
rf502_wspacewrite.py
rf503_wspaceread.C
rf503_wspaceread.py
rf504_simwstool.C
rf504_simwstool.py
rf505_asciicfg.C
rf505_asciicfg.py
rf506_msgservice.C
rf506_msgservice.py
rf508_listsetmanip.C
rf508_listsetmanip.py
rf509_wsinteractive.C
rf509_wsinteractive.py
rf510_wsnamedsets.C
rf510_wsnamedsets.py
rf511_wsfactory_basic.C
rf511_wsfactory_basic.py
rf512_wsfactory_oper.C
rf512_wsfactory_oper.py
rf513_wsfactory_tools.C
rf513_wsfactory_tools.py
rf514_RooCustomizer.C
rf514_RooCustomizer.py
rf515_hfJSON.py
rf601_intminuit.C
rf601_intminuit.py
rf602_chi2fit.C
rf602_chi2fit.py
rf603_multicpu.C
rf603_multicpu.py
rf604_constraints.C
rf604_constraints.py
rf605_profilell.C
rf605_profilell.py
rf606_nllerrorhandling.C
rf606_nllerrorhandling.py
rf607_fitresult.C
rf607_fitresult.py
rf608_fitresultaspdf.C
rf608_fitresultaspdf.py
rf609_xychi2fit.C
rf609_xychi2fit.py
rf610_visualerror.C
rf610_visualerror.py
rf611_weightedfits.C
rf612_recoverFromInvalidParameters.C
rf612_recoverFromInvalidParameters.py
rf613_global_observables.C
rf613_global_observables.py
rf614_binned_fit_problems.C
rf614_binned_fit_problems.py
rf615_simulation_based_inference.py
rf616_morphing.C
rf616_morphing.py
rf617_simulation_based_inference_multidimensional.py
rf618_mixture_models.py
rf701_efficiencyfit.C
rf701_efficiencyfit.py
rf702_efficiencyfit_2D.C
rf702_efficiencyfit_2D.py
rf703_effpdfprod.C
rf703_effpdfprod.py
rf704_amplitudefit.C
rf704_amplitudefit.py
rf705_linearmorph.C
rf705_linearmorph.py
rf706_histpdf.C
rf706_histpdf.py
rf707_kernelestimation.C
rf707_kernelestimation.py
rf708_bphysics.C
rf708_bphysics.py
rf709_BarlowBeeston.C
rf709_BarlowBeeston.py
rf710_roopoly.C
rf710_roopoly.py
rf711_lagrangianmorph.C
rf711_lagrangianmorph.py
rf712_lagrangianmorphfit.C
rf712_lagrangianmorphfit.py
rf801_mcstudy.C
rf801_mcstudy.py
rf802_mcstudy_addons.C
rf802_mcstudy_addons.py
rf803_mcstudy_addons2.C
rf803_mcstudy_addons2.py
rf804_mcstudy_constr.C
rf804_mcstudy_constr.py
rf901_numintconfig.C
rf901_numintconfig.py
rf902_numgenconfig.C
rf902_numgenconfig.py
rf903_numintcache.C
rf903_numintcache.py
►
roostats
►
spectrum
►
splot
►
sql
►
tmva
►
tree
►
unfold
►
unuran
►
v7
►
vecops
►
webcanv
►
webgui
►
xml
►
.enableImplicitMTWrapper.py
.rootlogon.py
demos.C
demoshelp.C
hsimple.C
rootlogoff.C
rootlogon.C
►
v6-34-00-patches
►
File Members
Release Notes
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Modules
Pages
Loading...
Searching...
No Matches
rf803_mcstudy_addons2.py
Go to the documentation of this file.
1
## \ingroup tutorial_roofit
2
## \notebook
3
##
4
## 'VALIDATION AND MC STUDIES' RooFit tutorial macro #803
5
##
6
## RooMCStudy: Using the randomizer and profile likelihood add-on models
7
##
8
## \macro_image
9
## \macro_code
10
## \macro_output
11
##
12
## \date February 2018
13
## \author Clemens Lange
14
15
16
import
ROOT
17
18
19
# Create model
20
# -----------------------
21
22
# Simulation of signal and background of top quark decaying into
23
# 3 jets with background
24
25
# Observable
26
mjjj =
ROOT.RooRealVar
(
"mjjj"
,
"m(3jet) (GeV)"
, 100, 85.0, 350.0)
27
28
# Signal component (Gaussian)
29
mtop =
ROOT.RooRealVar
(
"mtop"
,
"m(top)"
, 162)
30
wtop =
ROOT.RooRealVar
(
"wtop"
,
"m(top) resolution"
, 15.2)
31
sig =
ROOT.RooGaussian
(
"sig"
,
"top signal"
, mjjj, mtop, wtop)
32
33
# Background component (Chebychev)
34
c0 =
ROOT.RooRealVar
(
"c0"
,
"Chebychev coefficient 0"
, -0.846, -1.0, 1.0)
35
c1 =
ROOT.RooRealVar
(
"c1"
,
"Chebychev coefficient 1"
, 0.112, -1.0, 1.0)
36
c2 =
ROOT.RooRealVar
(
"c2"
,
"Chebychev coefficient 2"
, 0.076, -1.0, 1.0)
37
bkg =
ROOT.RooChebychev
(
"bkg"
,
"combinatorial background"
, mjjj, [c0, c1, c2])
38
39
# Composite model
40
nsig =
ROOT.RooRealVar
(
"nsig"
,
"number of signal events"
, 53, 0, 1e3)
41
nbkg =
ROOT.RooRealVar
(
"nbkg"
,
"number of background events"
, 103, 0, 5e3)
42
model =
ROOT.RooAddPdf
(
"model"
,
"model"
, [sig, bkg], [nsig, nbkg])
43
44
# Create manager
45
# ---------------------------
46
47
# Configure manager to perform binned extended likelihood fits (Binned=True, Extended=True) on data generated
48
# with a Poisson fluctuation on Nobs (Extended=True)
49
mcs =
ROOT.RooMCStudy
(
50
model, {mjjj}, Binned=
True
, Silence=
True
, Extended=
True
, FitOptions={
"Extended"
:
True
,
"PrintEvalErrors"
: -1}
51
)
52
53
# Customize manager
54
# ---------------------------------
55
56
# Add module that randomizes the summed value of nsig+nbkg
57
# sampling from a uniform distribution between 0 and 1000
58
#
59
# In general one can randomize a single parameter, a
60
# sum of N parameters, either a uniform or a Gaussian
61
# distribution. Multiple randomization can be executed
62
# by a single randomizer module
63
64
randModule =
ROOT.RooRandomizeParamMCSModule
()
65
randModule.sampleSumUniform
({nsig, nbkg}, 50, 500)
66
mcs.addModule
(randModule)
67
68
# Add profile likelihood calculation of significance. Redo each
69
# fit while keeping parameter nsig fixed to zero. For each toy,
70
# the difference in -log(L) of both fits is stored, well
71
# a simple significance interpretation of the delta(-logL)
72
# Dnll = 0.5 sigma^2
73
74
sigModule =
ROOT.RooDLLSignificanceMCSModule
(nsig, 0)
75
mcs.addModule
(sigModule)
76
77
# Run manager, make plots
78
# ---------------------------------------------
79
80
# Run 1000 experiments. ROOT.This configuration will generate a fair number
81
# of (harmless) MINUIT warnings due to the instability of the Chebychev polynomial fit
82
# at low statistics.
83
mcs.generateAndFit
(500)
84
85
# Make some plots
86
binning =
ROOT.RooFit.AutoBinning
(40)
87
dll_vs_ngen =
mcs.fitParDataSet
().createHistogram(
"ngen,dll_nullhypo_nsig"
, binning, binning)
88
z_vs_ngen =
mcs.fitParDataSet
().createHistogram(
"ngen,significance_nullhypo_nsig"
, binning, binning)
89
errnsig_vs_ngen =
mcs.fitParDataSet
().createHistogram(
"ngen,nsigerr"
, binning, binning)
90
errnsig_vs_nsig =
mcs.fitParDataSet
().createHistogram(
"nsig,nsigerr"
, binning, binning)
91
92
# Draw plots on canvas
93
c =
ROOT.TCanvas
(
"rf803_mcstudy_addons2"
,
"rf802_mcstudy_addons2"
, 800, 800)
94
c.Divide
(2, 2)
95
c.cd
(1)
96
ROOT.gPad.SetLeftMargin
(0.15)
97
dll_vs_ngen.GetYaxis
().SetTitleOffset(1.6)
98
dll_vs_ngen.Draw
(
"box"
)
99
c.cd
(2)
100
ROOT.gPad.SetLeftMargin
(0.15)
101
z_vs_ngen.GetYaxis
().SetTitleOffset(1.6)
102
z_vs_ngen.Draw
(
"box"
)
103
c.cd
(3)
104
ROOT.gPad.SetLeftMargin
(0.15)
105
errnsig_vs_ngen.GetYaxis
().SetTitleOffset(1.6)
106
errnsig_vs_ngen.Draw
(
"box"
)
107
c.cd
(4)
108
ROOT.gPad.SetLeftMargin
(0.15)
109
errnsig_vs_nsig.GetYaxis
().SetTitleOffset(1.6)
110
errnsig_vs_nsig.Draw
(
"box"
)
111
112
c.SaveAs
(
"rf803_mcstudy_addons2.png"
)
113
114
# Make ROOT.RooMCStudy object available on command line after
115
# macro finishes
116
ROOT.gDirectory.Add
(mcs)
TRangeDynCast
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Definition
TCollection.h:358
tutorials
roofit
rf803_mcstudy_addons2.py
ROOT v6-34 - Reference Guide Generated on Sat Apr 12 2025 16:37:50 (GVA Time) using Doxygen 1.10.0