Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
rf509_wsinteractive.C File Reference

Detailed Description

View in nbviewer Open in SWAN Organization and simultaneous fits: easy interactive access to workspace contents - CINT to CLING code migration

␛[1mRooFit v3.60 -- Developed by Wouter Verkerke and David Kirkby␛[0m
Copyright (C) 2000-2013 NIKHEF, University of California & Stanford University
All rights reserved, please read http://roofit.sourceforge.net/license.txt
[#1] INFO:ObjectHandling -- RooWorkspace::exportToCint(w) INFO: references to all objects in this workspace will be created in CINT in 'namespace w'
[#0] WARNING:InputArguments -- The parameter 'sigma1' with range [-1e+30, 1e+30] of the RooGaussian 'sig1' exceeds the safe range of (0, inf). Advise to limit its range.
[#0] WARNING:InputArguments -- The parameter 'sigma2' with range [-1e+30, 1e+30] of the RooGaussian 'sig2' exceeds the safe range of (0, inf). Advise to limit its range.
[#1] INFO:ObjectHandling -- RooWorkspace::import(w) importing RooAddPdf::model
[#1] INFO:ObjectHandling -- RooWorkspace::import(w) importing RooChebychev::bkg
[#1] INFO:ObjectHandling -- RooWorkspace::import(w) importing RooRealVar::x
[#1] INFO:ObjectHandling -- RooWorkspace::import(w) importing RooRealVar::a0
[#1] INFO:ObjectHandling -- RooWorkspace::import(w) importing RooRealVar::a1
[#1] INFO:ObjectHandling -- RooWorkspace::import(w) importing RooRealVar::bkgfrac
[#1] INFO:ObjectHandling -- RooWorkspace::import(w) importing RooAddPdf::sig
[#1] INFO:ObjectHandling -- RooWorkspace::import(w) importing RooGaussian::sig1
[#1] INFO:ObjectHandling -- RooWorkspace::import(w) importing RooRealVar::mean
[#1] INFO:ObjectHandling -- RooWorkspace::import(w) importing RooRealVar::sigma1
[#1] INFO:ObjectHandling -- RooWorkspace::import(w) importing RooRealVar::sig1frac
[#1] INFO:ObjectHandling -- RooWorkspace::import(w) importing RooGaussian::sig2
[#1] INFO:ObjectHandling -- RooWorkspace::import(w) importing RooRealVar::sigma2
RooWorkspace(w) w contents
variables
---------
(a0,a1,bkgfrac,mean,sig1frac,sigma1,sigma2,x)
p.d.f.s
-------
RooChebychev::bkg[ x=x coefList=(a0,a1) ] = 0.8
RooAddPdf::model[ bkgfrac * bkg + [%] * sig ] = 0.9
RooAddPdf::sig[ sig1frac * sig1 + [%] * sig2 ] = 1
RooGaussian::sig1[ x=x mean=mean sigma=sigma1 ] = 1
RooGaussian::sig2[ x=x mean=mean sigma=sigma2 ] = 1
[#0] WARNING:Eval -- Evaluating RooAddPdf without a defined normalization set. This can lead to ambiguos coefficients definition and incorrect results. Use RooAddPdf::fixCoefNormalization(nset) to provide a normalization set for defining uniquely RooAddPdf coefficients!
[#1] INFO:Minization -- createNLL: caching constraint set under name CONSTR_OF_PDF_model_FOR_OBS_x with 0 entries
[#1] INFO:Minization -- RooMinimizer::optimizeConst: activating const optimization
[#1] INFO:Minization -- The following expressions will be evaluated in cache-and-track mode: (bkg,sig1,sig2)
**********
** 1 **SET PRINT 1
**********
**********
** 2 **SET NOGRAD
**********
PARAMETER DEFINITIONS:
NO. NAME VALUE STEP SIZE LIMITS
1 a0 5.00000e-01 1.00000e-01 0.00000e+00 1.00000e+00
2 a1 2.00000e-01 1.00000e-01 0.00000e+00 1.00000e+00
3 bkgfrac 5.00000e-01 1.00000e-01 0.00000e+00 1.00000e+00
4 mean 5.00000e+00 1.00000e+00 0.00000e+00 1.00000e+01
5 sig1frac 8.00000e-01 1.00000e-01 0.00000e+00 1.00000e+00
**********
** 3 **SET ERR 0.5
**********
**********
** 4 **SET PRINT 1
**********
**********
** 5 **SET STR 1
**********
NOW USING STRATEGY 1: TRY TO BALANCE SPEED AGAINST RELIABILITY
**********
** 6 **MIGRAD 2500 1
**********
FIRST CALL TO USER FUNCTION AT NEW START POINT, WITH IFLAG=4.
START MIGRAD MINIMIZATION. STRATEGY 1. CONVERGENCE WHEN EDM .LT. 1.00e-03
FCN=1962.68 FROM MIGRAD STATUS=INITIATE 14 CALLS 15 TOTAL
EDM= unknown STRATEGY= 1 NO ERROR MATRIX
EXT PARAMETER CURRENT GUESS STEP FIRST
NO. NAME VALUE ERROR SIZE DERIVATIVE
1 a0 5.00000e-01 1.00000e-01 2.01358e-01 5.55984e+00
2 a1 2.00000e-01 1.00000e-01 2.57889e-01 -1.57464e+00
3 bkgfrac 5.00000e-01 1.00000e-01 2.01358e-01 1.16417e+00
4 mean 5.00000e+00 1.00000e+00 2.01358e-01 -6.91026e+01
5 sig1frac 8.00000e-01 1.00000e-01 2.57889e-01 -2.02114e+00
ERR DEF= 0.5
MIGRAD MINIMIZATION HAS CONVERGED.
MIGRAD WILL VERIFY CONVERGENCE AND ERROR MATRIX.
COVARIANCE MATRIX CALCULATED SUCCESSFULLY
FCN=1962.14 FROM MIGRAD STATUS=CONVERGED 92 CALLS 93 TOTAL
EDM=0.000129539 STRATEGY= 1 ERROR MATRIX ACCURATE
EXT PARAMETER STEP FIRST
NO. NAME VALUE ERROR SIZE DERIVATIVE
1 a0 4.38576e-01 7.35996e-02 4.50487e-03 3.73392e-02
2 a1 2.02416e-01 1.18128e-01 5.73699e-03 4.39091e-02
3 bkgfrac 5.03388e-01 3.60691e-02 1.24369e-03 4.03363e-02
4 mean 5.01610e+00 3.15061e-02 1.91674e-04 7.40455e-01
5 sig1frac 8.35115e-01 1.17067e-01 5.93647e-03 2.37022e-02
ERR DEF= 0.5
EXTERNAL ERROR MATRIX. NDIM= 25 NPAR= 5 ERR DEF=0.5
5.457e-03 1.116e-03 -2.768e-04 -2.327e-04 -9.105e-04
1.116e-03 1.438e-02 -3.249e-03 5.690e-05 -9.716e-03
-2.768e-04 -3.249e-03 1.303e-03 -5.364e-05 3.285e-03
-2.327e-04 5.690e-05 -5.364e-05 9.926e-04 -1.964e-04
-9.105e-04 -9.716e-03 3.285e-03 -1.964e-04 1.419e-02
PARAMETER CORRELATION COEFFICIENTS
NO. GLOBAL 1 2 3 4 5
1 0.16490 1.000 0.126 -0.104 -0.100 -0.103
2 0.77006 0.126 1.000 -0.751 0.015 -0.680
3 0.82650 -0.104 -0.751 1.000 -0.047 0.764
4 0.12324 -0.100 0.015 -0.047 1.000 -0.052
5 0.78139 -0.103 -0.680 0.764 -0.052 1.000
**********
** 7 **SET ERR 0.5
**********
**********
** 8 **SET PRINT 1
**********
**********
** 9 **HESSE 2500
**********
COVARIANCE MATRIX CALCULATED SUCCESSFULLY
FCN=1962.14 FROM HESSE STATUS=OK 31 CALLS 124 TOTAL
EDM=0.000129401 STRATEGY= 1 ERROR MATRIX ACCURATE
EXT PARAMETER INTERNAL INTERNAL
NO. NAME VALUE ERROR STEP SIZE VALUE
1 a0 4.38576e-01 7.35914e-02 9.00974e-04 -1.23159e-01
2 a1 2.02416e-01 1.17686e-01 1.14740e-03 -6.37473e-01
3 bkgfrac 5.03388e-01 3.59545e-02 2.48738e-04 6.77613e-03
4 mean 5.01610e+00 3.15052e-02 3.83348e-05 3.22075e-03
5 sig1frac 8.35115e-01 1.16789e-01 1.18729e-03 7.34520e-01
ERR DEF= 0.5
EXTERNAL ERROR MATRIX. NDIM= 25 NPAR= 5 ERR DEF=0.5
5.456e-03 1.105e-03 -2.735e-04 -2.327e-04 -9.006e-04
1.105e-03 1.427e-02 -3.217e-03 5.664e-05 -9.623e-03
-2.735e-04 -3.217e-03 1.295e-03 -5.354e-05 3.261e-03
-2.327e-04 5.664e-05 -5.354e-05 9.926e-04 -1.946e-04
-9.006e-04 -9.623e-03 3.261e-03 -1.946e-04 1.412e-02
PARAMETER CORRELATION COEFFICIENTS
NO. GLOBAL 1 2 3 4 5
1 0.16425 1.000 0.125 -0.103 -0.100 -0.103
2 0.76801 0.125 1.000 -0.748 0.015 -0.678
3 0.82527 -0.103 -0.748 1.000 -0.047 0.763
4 0.12301 -0.100 0.015 -0.047 1.000 -0.052
5 0.78016 -0.103 -0.678 0.763 -0.052 1.000
[#1] INFO:Minization -- RooMinimizer::optimizeConst: deactivating const optimization
[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) directly selected PDF components: (bkg)
[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) indirectly selected PDF components: ()
using namespace RooFit;
void fillWorkspace(RooWorkspace &w);
{
// C r e a t e a n d f i l l w o r k s p a c e
// ------------------------------------------------
// Create a workspace named 'w'
// With CINT w could exports its contents to
// a same-name C++ namespace in CINT 'namespace w'.
// but this does not work anymore in CLING.
// so this tutorial is an example on how to
// change the code
RooWorkspace *w1 = new RooWorkspace("w", kTRUE);
// Fill workspace with pdf and data in a separate function
fillWorkspace(*w1);
// Print workspace contents
w1->Print();
// this does not work anymore with CLING
// use normal workspace functionality
// U s e w o r k s p a c e c o n t e n t s
// ----------------------------------------------
// Old syntax to use the name space prefix operator to access the workspace contents
//
// RooDataSet* d = w::model.generate(w::x,1000) ;
// RooFitResult* r = w::model.fitTo(*d) ;
// use normal workspace methods
RooAbsPdf *model = w1->pdf("model");
RooRealVar *x = w1->var("x");
RooDataSet *d = model->generate(*x, 1000);
RooFitResult *r = model->fitTo(*d);
// old syntax to access the variable x
// RooPlot* frame = w::x.frame() ;
RooPlot *frame = x->frame();
d->plotOn(frame);
// OLD syntax to omit x::
// NB: The 'w::' prefix can be omitted if namespace w is imported in local namespace
// in the usual C++ way
//
// using namespace w;
// model.plotOn(frame) ;
// model.plotOn(frame,Components(bkg),LineStyle(kDashed)) ;
// new correct syntax
RooAbsPdf *bkg = w1->pdf("bkg");
model->plotOn(frame);
model->plotOn(frame, Components(*bkg), LineStyle(kDashed));
// Draw the frame on the canvas
new TCanvas("rf509_wsinteractive", "rf509_wsinteractive", 600, 600);
gPad->SetLeftMargin(0.15);
frame->GetYaxis()->SetTitleOffset(1.4);
frame->Draw();
}
void fillWorkspace(RooWorkspace &w)
{
// 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
// --------------------------------------------------------
// Declare observable x
RooRealVar x("x", "x", 0, 10);
// Create two Gaussian PDFs g1(x,mean1,sigma) anf g2(x,mean2,sigma) and their parameters
RooRealVar mean("mean", "mean of gaussians", 5, 0, 10);
RooRealVar sigma1("sigma1", "width of gaussians", 0.5);
RooRealVar sigma2("sigma2", "width of gaussians", 1);
RooGaussian sig1("sig1", "Signal component 1", x, mean, sigma1);
RooGaussian sig2("sig2", "Signal component 2", x, mean, sigma2);
// Build Chebychev polynomial pdf
RooRealVar a0("a0", "a0", 0.5, 0., 1.);
RooRealVar a1("a1", "a1", 0.2, 0., 1.);
RooChebychev bkg("bkg", "Background", x, RooArgSet(a0, a1));
// Sum the signal components into a composite signal pdf
RooRealVar sig1frac("sig1frac", "fraction of component 1 in signal", 0.8, 0., 1.);
RooAddPdf sig("sig", "Signal", RooArgList(sig1, sig2), sig1frac);
// Sum the composite signal and background
RooRealVar bkgfrac("bkgfrac", "fraction of background", 0.5, 0., 1.);
RooAddPdf model("model", "g1+g2+a", RooArgList(bkg, sig), bkgfrac);
w.import(model);
}
ROOT::R::TRInterface & r
Definition Object.C:4
#define d(i)
Definition RSha256.hxx:102
const Bool_t kTRUE
Definition RtypesCore.h:91
@ kDashed
Definition TAttLine.h:48
#define gPad
RooDataSet * generate(const RooArgSet &whatVars, Int_t nEvents, const RooCmdArg &arg1, const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none())
See RooAbsPdf::generate(const RooArgSet&,const RooCmdArg&,const RooCmdArg&,const RooCmdArg&,...
Definition RooAbsPdf.h:58
virtual RooFitResult * fitTo(RooAbsData &data, const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none())
Fit PDF to given dataset.
virtual RooPlot * plotOn(RooPlot *frame, const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none(), const RooCmdArg &arg9=RooCmdArg::none(), const RooCmdArg &arg10=RooCmdArg::none()) const
Helper calling plotOn(RooPlot*, RooLinkedList&) const.
Definition RooAbsPdf.h:121
RooAddPdf is an efficient implementation of a sum of PDFs of the form.
Definition RooAddPdf.h:32
RooArgList is a container object that can hold multiple RooAbsArg objects.
Definition RooArgList.h:21
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:29
Chebychev polynomial p.d.f.
RooDataSet is a container class to hold unbinned data.
Definition RooDataSet.h:33
RooFitResult is a container class to hold the input and output of a PDF fit to a dataset.
Plain Gaussian p.d.f.
Definition RooGaussian.h:24
A RooPlot is a plot frame and a container for graphics objects within that frame.
Definition RooPlot.h:44
TAxis * GetYaxis() const
Definition RooPlot.cxx:1263
static RooPlot * frame(const RooAbsRealLValue &var, Double_t xmin, Double_t xmax, Int_t nBins)
Create a new frame for a given variable in x.
Definition RooPlot.cxx:249
virtual void Draw(Option_t *options=0)
Draw this plot and all of the elements it contains.
Definition RooPlot.cxx:691
RooRealVar represents a variable that can be changed from the outside.
Definition RooRealVar.h:39
The RooWorkspace is a persistable container for RooFit projects.
void Print(Option_t *opts=0) const
Print contents of the workspace.
RooRealVar * var(const char *name) const
Retrieve real-valued variable (RooRealVar) with given name. A null pointer is returned if not found.
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.
RooAbsPdf * pdf(const char *name) const
Retrieve p.d.f (RooAbsPdf) 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:293
The Canvas class.
Definition TCanvas.h:23
Double_t x[n]
Definition legend1.C:17
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
Date
April 2009
Author
Wouter Verkerke

Definition in file rf509_wsinteractive.C.