ROOT
git-r3/HEAD
Reference Guide
Loading...
Searching...
No Matches
fit2a.C
Go to the documentation of this file.
1
/// \file
2
/// \ingroup tutorial_fit
3
/// \notebook
4
/// Fitting a 2-D histogram (a variant)
5
/// This tutorial illustrates :
6
/// - how to create a 2-d function
7
/// - fill a 2-d histogram randomly from this function
8
/// - fit the histogram
9
/// - display the fitted function on top of the histogram (lego-plot)
10
/// using a surface plot in a sub-range of the histogram.
11
///
12
/// This example can be executed via the interpreter or/and the compiler
13
///
14
/// ~~~{.cpp}
15
/// root > .x fit2a.C
16
/// root > .x fit2a.C++
17
/// ~~~
18
///
19
/// \macro_image
20
/// \macro_output
21
/// \macro_code
22
///
23
/// \author Rene Brun
24
25
#include "
TF2.h
"
26
#include "
TH2.h
"
27
#include "
TCutG.h
"
28
#include "
TMath.h
"
29
#include "
TCanvas.h
"
30
#include "
TStyle.h
"
31
32
double
g2(
double
*
x
,
double
*par) {
33
double
r1 =
double
((
x
[0]-par[1])/par[2]);
34
double
r2 =
double
((
x
[1]-par[3])/par[4]);
35
return
par[0]*
TMath::Exp
(-0.5*(r1*r1+r2*r2));
36
}
37
double
fun2(
double
*
x
,
double
*par) {
38
double
*p1 = &par[0];
39
double
*p2 = &par[5];
40
double
*p3 = &par[10];
41
double
result = g2(
x
,p1) + g2(
x
,p2) + g2(
x
,p3);
42
return
result;
43
}
44
45
TCanvas
*fit2a() {
46
TCanvas
*
c
=
new
TCanvas
();
47
gStyle
->SetOptStat(
true
);
48
gStyle
->SetPalette(57);
49
const
int
npar = 15;
50
double
f2params[npar] = {100,-3,3,-3,3,160,0,0.8,0,0.9,40,4,0.7,4,0.7};
51
auto
f2 =
new
TF2
(
"f2"
,fun2,-10,10,-10,10, npar);
52
f2->SetParameters(f2params);
53
54
//Create an histogram and fill it randomly with f2
55
auto
h2 =
new
TH2F
(
"h2"
,
"From f2"
,40,-10,10,40,-10,10);
56
int
nentries
= 100000;
57
h2->FillRandom(
"f2"
,
nentries
);
58
//Fit h2 with original function f2
59
float
ratio
= 4*
nentries
/100000;
60
f2params[ 0] *=
ratio
;
61
f2params[ 5] *=
ratio
;
62
f2params[10] *=
ratio
;
63
f2->SetParameters(f2params);
64
h2->Fit(
"f2"
,
"N"
);
65
auto
cutg =
new
TCutG
(
"cutg"
,5);
66
cutg->SetPoint(0,-7,-7);
67
cutg->SetPoint(1, 2,-7);
68
cutg->SetPoint(2, 2, 2);
69
cutg->SetPoint(3,-7, 2);
70
cutg->SetPoint(4,-7,-7);
71
h2->Draw(
"lego2 0"
);
72
h2->SetFillColor(38);
73
f2->SetNpx(80);
74
f2->SetNpy(80);
75
f2->Draw(
"surf1 same bb [cutg]"
);
76
return
c
;
77
}
c
#define c(i)
Definition
RSha256.hxx:101
TCanvas.h
TCutG.h
TF2.h
TH2.h
nentries
int nentries
Definition
THbookFile.cxx:91
TMath.h
TStyle.h
gStyle
externTStyle * gStyle
Definition
TStyle.h:442
TCanvas
The Canvas class.
Definition
TCanvas.h:23
TCutG
Graphical cut class.
Definition
TCutG.h:20
TF2
Definition
TF2.h:29
TH2F
2-D histogram with a float per channel (see TH1 documentation)
Definition
TH2.h:345
double
x
Double_t x[n]
Definition
legend1.C:17
RooFit::Detail::MathFuncs::ratio
double ratio(double numerator, double denominator)
Definition
MathFuncs.h:106
TMath::Exp
Double_t Exp(Double_t x)
Returns the base-e exponential function of x, which is e raised to the power x.
Definition
TMath.h:720
tutorials
math
fit
fit2a.C
ROOTgit-r3/HEAD - Reference Guide Generated on
(GVA Time) using Doxygen 1.16.1