ROOT
6.30.04
Reference Guide
All
Namespaces
Files
Pages
rf512_wsfactory_oper.C
Go to the documentation of this file.
1
/// \file
2
/// \ingroup tutorial_roofit
3
/// \notebook -nodraw
4
/// Organization and simultaneous fits: operator expressions and expression-based basic p.d.f.s in the workspace factory
5
/// syntax
6
///
7
/// \macro_output
8
/// \macro_code
9
/// \author 04/2009 - Wouter Verkerke
10
11
#include "
RooRealVar.h
"
12
#include "
RooDataSet.h
"
13
#include "
RooGaussian.h
"
14
#include "
RooConstVar.h
"
15
#include "
RooChebychev.h
"
16
#include "
RooAddPdf.h
"
17
#include "
RooWorkspace.h
"
18
#include "
RooPlot.h
"
19
#include "
TCanvas.h
"
20
#include "
TAxis.h
"
21
using namespace
RooFit;
22
23
void
rf512_wsfactory_oper()
24
{
25
RooWorkspace *w =
new
RooWorkspace(
"w"
);
26
27
// You can define typedefs for even shorter construction semantics
28
w->factory(
"$Typedef(Gaussian,Gaus)"
);
29
w->factory(
"$Typedef(Chebychev,Cheby)"
);
30
31
// O p e r a t o r p . d . f . e x a m p l e s
32
// ------------------------------------------------
33
34
// PDF addition is done with SUM (coef1*pdf1,pdf2)
35
w->factory(
"SUM::summodel( f[0,1]*Gaussian::gx(x[-10,10],m[0],1.0), Chebychev::ch(x,{0.1,0.2,-0.3}) )"
);
36
37
// Extended PDF addition is done with SUM (yield1*pdf1,yield2*pdf2)
38
w->factory(
"SUM::extsummodel( Nsig[0,1000]*gx, Nbkg[0,1000]*ch )"
);
39
40
// PDF multiplication is done with PROD ( pdf1, pdf2 )
41
w->factory(
"PROD::gxz( gx, Gaussian::gz(z[-10,10],0,1) )"
);
42
43
// Conditional p.d.f multiplication is done with PROD ( pdf1|obs, pdf2 )
44
w->factory(
"Gaussian::gy( y[-10,10], x, 1.0 )"
);
45
w->factory(
"PROD::gxycond( gy|x, gx )"
);
46
47
// Convolution (numeric/ fft) is done with NCONV/FCONV (obs,pdf1,pdf2)
48
w->factory(
"FCONV::lxg( x, Gaussian::g(x,mg[0],1), Landau::lc(x,0,1) )"
);
49
50
// Simultaneous p.d.f.s are constructed with SIMUL( index, state1=pdf1, state2=pdf2,...)
51
w->factory(
"SIMUL::smodel( c[A=0,B=1], A=Gaussian::gs(x,m,s[1]), B=Landau::ls(x,0,1) )"
);
52
53
// O p e r a t o r f u n c t i o n e x a m p l e s
54
// ---------------------------------------------------
55
56
// Function multiplication is done with prod (func1, func2,...)
57
w->factory(
"prod::uv(u[10],v[10])"
);
58
59
// Function addition is done with sum(func1,func2)
60
w->factory(
"sum::uv2(u,v)"
);
61
62
// I n t e r p r e t e d a n d c o m p i l e d e x p r e s s i o n b a s e d p . d . f . s .
63
// ---------------------------------------------------------------------------------------------------
64
65
// Create a RooGenericPdf interpreted p.d.f. You can use single quotes to pass the expression string argument
66
w->factory(
"EXPR::G('x*x+1',x)"
);
67
68
// Create a custom compiled p.d.f similar to the above interpreted p.d.f.
69
// The code required to make this p.d.f. is automatically embedded in the workspace
70
w->factory(
"CEXPR::GC('x*x+a',{x,a[1]})"
);
71
72
// Compiled and interpreted functions (rather than p.d.f.s) can be made with the lower case
73
// 'expr' and 'cexpr' types
74
75
// Print workspace contents
76
w->Print();
77
78
// Make workspace visible on command line
79
gDirectory->Add(w);
80
}
RooRealVar.h
RooGaussian.h
TCanvas.h
RooConstVar.h
RooAddPdf.h
RooPlot.h
RooWorkspace.h
TAxis.h
RooDataSet.h
RooChebychev.h
tutorials
roofit
rf512_wsfactory_oper.C
Generated on Tue May 5 2020 14:03:49 for ROOT by
1.8.5