Logo ROOT   6.07/09
Reference Guide
CrystalBall.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_math
3 /// \notebook
4 /// Example of CrystalBall Function and its distribution (pdf and cdf)
5 ///
6 /// \macro_image
7 /// \macro_code
8 ///
9 /// \author Lorenzo Moneta
10 
11 void CrystalBall() {
12 
13  auto c1 = new TCanvas();
14  c1->Divide(1,3);
15 
16  // crystal ball function
17  c1->cd(1);
18 
19  auto f1 = new TF1("f1","crystalball",-5,5);
20  f1->SetParameters(1, 0, 1, 2, 0.5);
22  f1->Draw();
23  // use directly the functionin ROOT::MATH note that the parameters definition is different is (alpha, n sigma, mu)
24  auto f2 = new TF1("f2","ROOT::Math::crystalball_function(x, 2, 1, 1, 0)",-5,5);
25  f2->SetLineColor(kGreen);
26  f2->Draw("same");
27  auto f3 = new TF1("f3","ROOT::Math::crystalball_function(x, 2, 2, 1, 0)",-5,5);
28  f3->SetLineColor(kBlue);
29  f3->Draw("same");
30 
31  auto legend = new TLegend(0.7,0.6,0.9,1.);
32  legend->AddEntry(f1,"N=0.5 alpha=2","L");
33  legend->AddEntry(f2,"N=1 alpha=2","L");
34  legend->AddEntry(f3,"N=2 alpha=2","L");
35  legend->Draw();
36 
37  c1->cd(2);
38  auto pdf1 = new TF1("pdf","crystalballn",-5,5);
39  pdf1->SetParameters(2, 0, 1, 2, 3);
40  pdf1->Draw();
41  auto pdf2 = new TF1("pdf","ROOT::Math::crystalball_pdf(x, 3, 1.01, 1, 0)",-5,5);
42  pdf2->SetLineColor(kBlue);
43  pdf2->Draw("same");
44  auto pdf3 = new TF1("pdf","ROOT::Math::crystalball_pdf(x, 2, 2, 1, 0)",-5,5);
45  pdf3->SetLineColor(kGreen);
46  pdf3->Draw("same");
47 
48  legend = new TLegend(0.7,0.6,0.9,1.);
49  legend->AddEntry(pdf1,"N=3 alpha=2","L");
50  legend->AddEntry(pdf2,"N=1.01 alpha=3","L");
51  legend->AddEntry(pdf3,"N=2 alpha=3","L");
52  legend->Draw();
53 
54  c1->cd(3);
55  auto cdf = new TF1("cdf","ROOT::Math::crystalball_cdf(x, 1.2, 2, 1, 0)",-5,5);
56  auto cdfc = new TF1("cdfc","ROOT::Math::crystalball_cdf_c(x, 1.2, 2, 1, 0)",-5,5);
57  cdf->SetLineColor(kRed-3);
58  cdf->SetMinimum(0.);
59  cdf->SetMaximum(1.);
60  cdf->Draw();
61  cdfc->SetLineColor(kMagenta);
62  cdfc->Draw("Same");
63 
64  legend = new TLegend(0.7,0.7,0.9,1.);
65  legend->AddEntry(cdf,"N=1.2 alpha=2","L");
66  legend->AddEntry(cdfc,"N=1.2 alpha=2","L");
67  legend->Draw();
68 }
virtual void SetParameters(const Double_t *params)
Definition: TF1.h:439
This class displays a legend box (TPaveText) containing several legend entries.
Definition: TLegend.h:27
return c1
Definition: legend1.C:41
Definition: Rtypes.h:61
virtual void Draw(Option_t *option="")
Draw this legend with its current attributes.
Definition: TLegend.cxx:373
virtual void Draw(Option_t *option="")
Draw this function with its current attributes.
Definition: TF1.cxx:1081
Definition: Rtypes.h:61
TLegend * legend
Definition: pirndm.C:35
double cdf(double *x, double *p)
Definition: unuranDistr.cxx:44
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Definition: TAttLine.h:46
The Canvas class.
Definition: TCanvas.h:41
TLegendEntry * AddEntry(const TObject *obj, const char *label="", Option_t *option="lpf")
Add a new entry to this legend.
Definition: TLegend.cxx:280
double f2(const double *x)
1-Dim function class
Definition: TF1.h:149
TF1 * f1
Definition: legend1.C:11
Definition: Rtypes.h:61