Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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_code
9/// \macro_output
10///
11/// \date April 2009
12/// \author Wouter Verkerke
13
14using namespace RooFit;
15
16void 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", true);
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 // use normal workspace methods
44 RooAbsPdf *model = w1->pdf("model");
45 RooRealVar *x = w1->var("x");
46
47 std::unique_ptr<RooDataSet> d{ model->generate(*x, 1000)};
48 std::unique_ptr<RooFitResult> r{model->fitTo(*d, PrintLevel(-1))};
49
50 // old syntax to access the variable x
51 // RooPlot* frame = w::x.frame() ;
52
53 RooPlot *frame = x->frame();
54 d->plotOn(frame);
55
56 // OLD syntax to omit x::
57 // NB: The 'w::' prefix can be omitted if namespace w is imported in local namespace
58 // in the usual C++ way
59 //
60 // using namespace w;
61 // model.plotOn(frame) ;
62 // model.plotOn(frame,Components(bkg),LineStyle(kDashed)) ;
63
64 // new correct syntax
65 RooAbsPdf *bkg = w1->pdf("bkg");
66 model->plotOn(frame);
67 model->plotOn(frame, Components(*bkg), LineStyle(kDashed));
68
69 // Draw the frame on the canvas
70 new TCanvas("rf509_wsinteractive", "rf509_wsinteractive", 600, 600);
71 gPad->SetLeftMargin(0.15);
72 frame->GetYaxis()->SetTitleOffset(1.4);
73 frame->Draw();
74}
75
76void fillWorkspace(RooWorkspace &w)
77{
78 // 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
79 // --------------------------------------------------------
80
81 // Declare observable x
82 RooRealVar x("x", "x", 0, 10);
83
84 // Create two Gaussian PDFs g1(x,mean1,sigma) anf g2(x,mean2,sigma) and their parameters
85 RooRealVar mean("mean", "mean of gaussians", 5, 0, 10);
86 RooRealVar sigma1("sigma1", "width of gaussians", 0.5);
87 RooRealVar sigma2("sigma2", "width of gaussians", 1);
88
89 RooGaussian sig1("sig1", "Signal component 1", x, mean, sigma1);
90 RooGaussian sig2("sig2", "Signal component 2", x, mean, sigma2);
91
92 // Build Chebychev polynomial pdf
93 RooRealVar a0("a0", "a0", 0.5, 0., 1.);
94 RooRealVar a1("a1", "a1", 0.2, 0., 1.);
95 RooChebychev bkg("bkg", "Background", x, RooArgSet(a0, a1));
96
97 // Sum the signal components into a composite signal pdf
98 RooRealVar sig1frac("sig1frac", "fraction of component 1 in signal", 0.8, 0., 1.);
99 RooAddPdf sig("sig", "Signal", RooArgList(sig1, sig2), sig1frac);
100
101 // Sum the composite signal and background
102 RooRealVar bkgfrac("bkgfrac", "fraction of background", 0.5, 0., 1.);
103 RooAddPdf model("model", "g1+g2+a", RooArgList(bkg, sig), bkgfrac);
104
105 w.import(model);
106}
#define d(i)
Definition RSha256.hxx:102
@ kDashed
Definition TAttLine.h:48
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
#define gPad
Abstract interface for all probability density functions.
Definition RooAbsPdf.h:40
RooPlot * plotOn(RooPlot *frame, const RooCmdArg &arg1={}, const RooCmdArg &arg2={}, const RooCmdArg &arg3={}, const RooCmdArg &arg4={}, const RooCmdArg &arg5={}, const RooCmdArg &arg6={}, const RooCmdArg &arg7={}, const RooCmdArg &arg8={}, const RooCmdArg &arg9={}, const RooCmdArg &arg10={}) const override
Helper calling plotOn(RooPlot*, RooLinkedList&) const.
Definition RooAbsPdf.h:124
RooFit::OwningPtr< RooFitResult > fitTo(RooAbsData &data, CmdArgs_t const &... cmdArgs)
Fit PDF to given dataset.
Definition RooAbsPdf.h:157
RooFit::OwningPtr< RooDataSet > generate(const RooArgSet &whatVars, Int_t nEvents, const RooCmdArg &arg1, const RooCmdArg &arg2={}, const RooCmdArg &arg3={}, const RooCmdArg &arg4={}, const RooCmdArg &arg5={})
See RooAbsPdf::generate(const RooArgSet&,const RooCmdArg&,const RooCmdArg&,const RooCmdArg&,...
Definition RooAbsPdf.h:57
Efficient implementation of a sum of PDFs of the form.
Definition RooAddPdf.h:33
RooArgList is a container object that can hold multiple RooAbsArg objects.
Definition RooArgList.h:22
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:55
Chebychev polynomial p.d.f.
Plain Gaussian p.d.f.
Definition RooGaussian.h:24
Plot frame and a container for graphics objects within that frame.
Definition RooPlot.h:43
static RooPlot * frame(const RooAbsRealLValue &var, double xmin, double xmax, Int_t nBins)
Create a new frame for a given variable in x.
Definition RooPlot.cxx:237
TAxis * GetYaxis() const
Definition RooPlot.cxx:1276
void Draw(Option_t *options=nullptr) override
Draw this plot and all of the elements it contains.
Definition RooPlot.cxx:649
Variable that can be changed from the outside.
Definition RooRealVar.h:37
Persistable container for RooFit projects.
void Print(Option_t *opts=nullptr) const override
Print contents of the workspace.
RooAbsPdf * pdf(RooStringView name) const
Retrieve p.d.f (RooAbsPdf) with given name. A null pointer is returned if not found.
RooRealVar * var(RooStringView name) const
Retrieve real-valued variable (RooRealVar) with given name. A null pointer is returned if not found.
virtual void SetTitleOffset(Float_t offset=1)
Set distance between the axis and the axis title.
Definition TAttAxis.cxx:298
The Canvas class.
Definition TCanvas.h:23
RooCmdArg PrintLevel(Int_t code)
RooCmdArg Components(Args_t &&... argsOrArgSet)
RooCmdArg LineStyle(Style_t style)
Double_t x[n]
Definition legend1.C:17
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
Definition JSONIO.h:26