Logo ROOT  
Reference Guide
rf509_wsinteractive.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_roofit
3 /// \notebook -js
4 /// Organization and simultaneous fits: easy interactive access to workspace contents - CINT
5 /// to CLING code migration
6 ///
7 /// \macro_image
8 /// \macro_output
9 /// \macro_code
10 ///
11 /// \date April 2009
12 /// \author Wouter Verkerke
13 
14 using namespace RooFit;
15 
16 void fillWorkspace(RooWorkspace &w);
17 
19 {
20  // C r e a t e a n d f i l l w o r k s p a c e
21  // ------------------------------------------------
22 
23  // Create a workspace named 'w'
24  // With CINT w could exports its contents to
25  // a same-name C++ namespace in CINT 'namespace w'.
26  // but this does not work anymore in CLING.
27  // so this tutorial is an example on how to
28  // change the code
29  RooWorkspace *w1 = new RooWorkspace("w", kTRUE);
30 
31  // Fill workspace with pdf and data in a separate function
32  fillWorkspace(*w1);
33 
34  // Print workspace contents
35  w1->Print();
36 
37  // this does not work anymore with CLING
38  // use normal workspace functionality
39 
40  // U s e w o r k s p a c e c o n t e n t s
41  // ----------------------------------------------
42 
43  // Old syntax to use the name space prefix operator to access the workspace contents
44  //
45  // RooDataSet* d = w::model.generate(w::x,1000) ;
46  // RooFitResult* r = w::model.fitTo(*d) ;
47 
48  // use normal workspace methods
49  RooAbsPdf *model = w1->pdf("model");
50  RooRealVar *x = w1->var("x");
51 
52  RooDataSet *d = model->generate(*x, 1000);
53  RooFitResult *r = model->fitTo(*d);
54 
55  // old syntax to access the variable x
56  // RooPlot* frame = w::x.frame() ;
57 
58  RooPlot *frame = x->frame();
59  d->plotOn(frame);
60 
61  // OLD syntax to omit x::
62  // NB: The 'w::' prefix can be omitted if namespace w is imported in local namespace
63  // in the usual C++ way
64  //
65  // using namespace w;
66  // model.plotOn(frame) ;
67  // model.plotOn(frame,Components(bkg),LineStyle(kDashed)) ;
68 
69  // new correct syntax
70  RooAbsPdf *bkg = w1->pdf("bkg");
71  model->plotOn(frame);
72  model->plotOn(frame, Components(*bkg), LineStyle(kDashed));
73 
74  // Draw the frame on the canvas
75  new TCanvas("rf509_wsinteractive", "rf509_wsinteractive", 600, 600);
76  gPad->SetLeftMargin(0.15);
77  frame->GetYaxis()->SetTitleOffset(1.4);
78  frame->Draw();
79 }
80 
81 void fillWorkspace(RooWorkspace &w)
82 {
83  // C r e a t e p d f a n d f i l l w o r k s p a c e
84  // --------------------------------------------------------
85 
86  // Declare observable x
87  RooRealVar x("x", "x", 0, 10);
88 
89  // Create two Gaussian PDFs g1(x,mean1,sigma) anf g2(x,mean2,sigma) and their parameters
90  RooRealVar mean("mean", "mean of gaussians", 5, 0, 10);
91  RooRealVar sigma1("sigma1", "width of gaussians", 0.5);
92  RooRealVar sigma2("sigma2", "width of gaussians", 1);
93 
94  RooGaussian sig1("sig1", "Signal component 1", x, mean, sigma1);
95  RooGaussian sig2("sig2", "Signal component 2", x, mean, sigma2);
96 
97  // Build Chebychev polynomial pdf
98  RooRealVar a0("a0", "a0", 0.5, 0., 1.);
99  RooRealVar a1("a1", "a1", 0.2, 0., 1.);
100  RooChebychev bkg("bkg", "Background", x, RooArgSet(a0, a1));
101 
102  // Sum the signal components into a composite signal pdf
103  RooRealVar sig1frac("sig1frac", "fraction of component 1 in signal", 0.8, 0., 1.);
104  RooAddPdf sig("sig", "Signal", RooArgList(sig1, sig2), sig1frac);
105 
106  // Sum the composite signal and background
107  RooRealVar bkgfrac("bkgfrac", "fraction of background", 0.5, 0., 1.);
108  RooAddPdf model("model", "g1+g2+a", RooArgList(bkg, sig), bkgfrac);
109 
110  w.import(model);
111 }
RooPlot::Draw
virtual void Draw(Option_t *options=0)
Draw this plot and all of the elements it contains.
Definition: RooPlot.cxx:691
rf509_wsinteractive
Definition: rf509_wsinteractive.py:1
kTRUE
const Bool_t kTRUE
Definition: RtypesCore.h:91
RooAddPdf
RooAddPdf is an efficient implementation of a sum of PDFs of the form.
Definition: RooAddPdf.h:32
RooChebychev
Chebychev polynomial p.d.f.
Definition: RooChebychev.h:25
r
ROOT::R::TRInterface & r
Definition: Object.C:4
RooArgList
RooArgList is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgList.h:21
x
Double_t x[n]
Definition: legend1.C:17
RooGaussian
Plain Gaussian p.d.f.
Definition: RooGaussian.h:25
RooFitResult
RooFitResult is a container class to hold the input and output of a PDF fit to a dataset.
Definition: RooFitResult.h:40
RooWorkspace::import
Bool_t import(const RooAbsArg &arg, const RooCmdArg &arg1=RooCmdArg(), const RooCmdArg &arg2=RooCmdArg(), const RooCmdArg &arg3=RooCmdArg(), const RooCmdArg &arg4=RooCmdArg(), const RooCmdArg &arg5=RooCmdArg(), const RooCmdArg &arg6=RooCmdArg(), const RooCmdArg &arg7=RooCmdArg(), const RooCmdArg &arg8=RooCmdArg(), const RooCmdArg &arg9=RooCmdArg())
Import a RooAbsArg object, e.g.
Definition: RooWorkspace.cxx:361
RooWorkspace::Print
void Print(Option_t *opts=0) const
Print contents of the workspace.
Definition: RooWorkspace.cxx:2194
RooFit
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
Definition: RooCFunction1Binding.h:29
RooPlot::GetYaxis
TAxis * GetYaxis() const
Definition: RooPlot.cxx:1258
RooPlot
A RooPlot is a plot frame and a container for graphics objects within that frame.
Definition: RooPlot.h:44
RooWorkspace::pdf
RooAbsPdf * pdf(const char *name) const
Retrieve p.d.f (RooAbsPdf) with given name. A null pointer is returned if not found.
Definition: RooWorkspace.cxx:1277
RooWorkspace
The RooWorkspace is a persistable container for RooFit projects.
Definition: RooWorkspace.h:43
TCanvas
The Canvas class.
Definition: TCanvas.h:23
d
#define d(i)
Definition: RSha256.hxx:102
kDashed
@ kDashed
Definition: TAttLine.h:48
gPad
#define gPad
Definition: TVirtualPad.h:287
RooWorkspace::var
RooRealVar * var(const char *name) const
Retrieve real-valued variable (RooRealVar) with given name. A null pointer is returned if not found.
Definition: RooWorkspace.cxx:1295
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
RooAbsPdf
Definition: RooAbsPdf.h:43
RooFit::LineStyle
RooCmdArg LineStyle(Style_t style)
Definition: RooGlobalFunc.cxx:58
TAttAxis::SetTitleOffset
virtual void SetTitleOffset(Float_t offset=1)
Set distance between the axis and the axis title.
Definition: TAttAxis.cxx:293
RooRealVar
RooRealVar represents a variable that can be changed from the outside.
Definition: RooRealVar.h:37
RooFit::Components
RooCmdArg Components(const RooArgSet &compSet)
Definition: RooGlobalFunc.cxx:75
RooArgSet
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:29