Logo ROOT  
Reference Guide
rf312_multirangefit.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_roofit
3 /// \notebook -nodraw
4 /// Multidimensional models: performing fits in multiple (disjoint) ranges in one or more dimensions
5 ///
6 /// \macro_output
7 /// \macro_code
8 ///
9 /// \date July 2008
10 /// \author Wouter Verkerke
11 
12 #include "RooRealVar.h"
13 #include "RooDataSet.h"
14 #include "RooGaussian.h"
15 #include "RooConstVar.h"
16 #include "RooProdPdf.h"
17 #include "RooAddPdf.h"
18 #include "RooPolynomial.h"
19 #include "TCanvas.h"
20 #include "TAxis.h"
21 #include "RooPlot.h"
22 #include "RooFitResult.h"
23 using namespace RooFit;
24 
26 {
27 
28  // C r e a t e 2 D p d f a n d d a t a
29  // -------------------------------------------
30 
31  // Define observables x,y
32  RooRealVar x("x", "x", -10, 10);
33  RooRealVar y("y", "y", -10, 10);
34 
35  // Construct the signal pdf gauss(x)*gauss(y)
36  RooRealVar mx("mx", "mx", 1, -10, 10);
37  RooRealVar my("my", "my", 1, -10, 10);
38 
39  RooGaussian gx("gx", "gx", x, mx, RooConst(1));
40  RooGaussian gy("gy", "gy", y, my, RooConst(1));
41 
42  RooProdPdf sig("sig", "sig", gx, gy);
43 
44  // Construct the background pdf (flat in x,y)
45  RooPolynomial px("px", "px", x);
46  RooPolynomial py("py", "py", y);
47  RooProdPdf bkg("bkg", "bkg", px, py);
48 
49  // Construct the composite model sig+bkg
50  RooRealVar f("f", "f", 0., 1.);
51  RooAddPdf model("model", "model", RooArgList(sig, bkg), f);
52 
53  // Sample 10000 events in (x,y) from the model
54  RooDataSet *modelData = model.generate(RooArgSet(x, y), 10000);
55 
56  // D e f i n e s i g n a l a n d s i d e b a n d r e g i o n s
57  // -------------------------------------------------------------------
58 
59  // Construct the SideBand1,SideBand2,Signal regions
60  //
61  // |
62  // +-------------+-----------+
63  // | | |
64  // | Side | Sig |
65  // | Band1 | nal |
66  // | | |
67  // --+-------------+-----------+--
68  // | |
69  // | Side |
70  // | Band2 |
71  // | |
72  // +-------------+-----------+
73  // |
74 
75  x.setRange("SB1", -10, +10);
76  y.setRange("SB1", -10, 0);
77 
78  x.setRange("SB2", -10, 0);
79  y.setRange("SB2", 0, +10);
80 
81  x.setRange("SIG", 0, +10);
82  y.setRange("SIG", 0, +10);
83 
84  x.setRange("FULL", -10, +10);
85  y.setRange("FULL", -10, +10);
86 
87  // P e r f o r m f i t s i n i n d i v i d u a l s i d e b a n d r e g i o n s
88  // -------------------------------------------------------------------------------------
89 
90  // Perform fit in SideBand1 region (RooAddPdf coefficients will be interpreted in full range)
91  RooFitResult *r_sb1 = model.fitTo(*modelData, Range("SB1"), Save());
92 
93  // Perform fit in SideBand2 region (RooAddPdf coefficients will be interpreted in full range)
94  RooFitResult *r_sb2 = model.fitTo(*modelData, Range("SB2"), Save());
95 
96  // P e r f o r m f i t s i n j o i n t s i d e b a n d r e g i o n s
97  // -----------------------------------------------------------------------------
98 
99  // Now perform fit to joint 'L-shaped' sideband region 'SB1|SB2'
100  // (RooAddPdf coefficients will be interpreted in full range)
101  RooFitResult *r_sb12 = model.fitTo(*modelData, Range("SB1,SB2"), Save());
102 
103  // Print results for comparison
104  r_sb1->Print();
105  r_sb2->Print();
106  r_sb12->Print();
107 }
RooAddPdf
RooAddPdf is an efficient implementation of a sum of PDFs of the form.
Definition: RooAddPdf.h:32
f
#define f(i)
Definition: RSha256.hxx:104
RooArgList
RooArgList is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgList.h:21
RooGaussian.h
x
Double_t x[n]
Definition: legend1.C:17
RooGaussian
Plain Gaussian p.d.f.
Definition: RooGaussian.h:24
RooAddPdf.h
TCanvas.h
RooDataSet.h
RooFitResult
RooFitResult is a container class to hold the input and output of a PDF fit to a dataset.
Definition: RooFitResult.h:40
RooPolynomial.h
RooProdPdf.h
RooFit
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
Definition: RooCFunction1Binding.h:29
RooPolynomial
RooPolynomial implements a polynomial p.d.f of the form.
Definition: RooPolynomial.h:28
RooPlot.h
y
Double_t y[n]
Definition: legend1.C:17
RooRealVar.h
RooFitResult.h
RooConstVar.h
TAxis.h
RooFit::Range
RooCmdArg Range(const char *rangeName, Bool_t adjustNorm=kTRUE)
Definition: RooGlobalFunc.cxx:53
RooFitResult::Print
virtual void Print(Option_t *options=0) const
Print TNamed name and title.
Definition: RooFitResult.h:66
RooDataSet
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:33
make_cnn_model.model
model
Definition: make_cnn_model.py:6
rf312_multirangefit
Definition: rf312_multirangefit.py:1
RooRealVar
RooRealVar represents a variable that can be changed from the outside.
Definition: RooRealVar.h:37
RooFit::Save
RooCmdArg Save(Bool_t flag=kTRUE)
Definition: RooGlobalFunc.cxx:190
RooProdPdf
RooProdPdf is an efficient implementation of a product of PDFs of the form.
Definition: RooProdPdf.h:37
RooArgSet
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:29
RooFit::RooConst
RooConstVar & RooConst(Double_t val)
Definition: RooGlobalFunc.cxx:347