Logo ROOT  
Reference Guide
rf107_plotstyles.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_roofit
3 /// \notebook -js
4 /// Basic functionality: various plotting styles of data, functions in a RooPlot
5 ///
6 /// \macro_image
7 /// \macro_output
8 /// \macro_code
9 ///
10 /// \date July 2008
11 /// \author Wouter Verkerke
12 
13 #include "RooRealVar.h"
14 #include "RooDataSet.h"
15 #include "RooGaussian.h"
16 #include "TCanvas.h"
17 #include "TAxis.h"
18 #include "RooPlot.h"
19 using namespace RooFit;
20 
21 void rf107_plotstyles()
22 {
23 
24  // S e t u p m o d e l
25  // ---------------------
26 
27  // Create observables
28  RooRealVar x("x", "x", -10, 10);
29 
30  // Create Gaussian
31  RooRealVar sigma("sigma", "sigma", 3, 0.1, 10);
32  RooRealVar mean("mean", "mean", -3, -10, 10);
33  RooGaussian gauss("gauss", "gauss", x, mean, sigma);
34 
35  // Generate a sample of 100 events with sigma=3
36  RooDataSet *data = gauss.generate(x, 100);
37 
38  // Fit pdf to data
39  gauss.fitTo(*data);
40 
41  // M a k e p l o t f r a m e s
42  // -------------------------------
43 
44  // Make four plot frames to demonstrate various plotting features
45  RooPlot *frame1 = x.frame(Name("xframe"), Title("Red Curve / SumW2 Histo errors"), Bins(20));
46  RooPlot *frame2 = x.frame(Name("xframe"), Title("Dashed Curve / No XError bars"), Bins(20));
47  RooPlot *frame3 = x.frame(Name("xframe"), Title("Filled Curve / Blue Histo"), Bins(20));
48  RooPlot *frame4 = x.frame(Name("xframe"), Title("Partial Range / Filled Bar chart"), Bins(20));
49 
50  // D a t a p l o t t i n g s t y l e s
51  // ---------------------------------------
52 
53  // Use sqrt(sum(weights^2)) error instead of Poisson errors
54  data->plotOn(frame1, DataError(RooAbsData::SumW2));
55 
56  // Remove horizontal error bars
57  data->plotOn(frame2, XErrorSize(0));
58 
59  // Blue markers and error bors
60  data->plotOn(frame3, MarkerColor(kBlue), LineColor(kBlue));
61 
62  // Filled bar chart
64 
65  // F u n c t i o n p l o t t i n g s t y l e s
66  // -----------------------------------------------
67 
68  // Change line color to red
69  gauss.plotOn(frame1, LineColor(kRed));
70 
71  // Change line style to dashed
72  gauss.plotOn(frame2, LineStyle(kDashed));
73 
74  // Filled shapes in green color
75  gauss.plotOn(frame3, DrawOption("F"), FillColor(kOrange), MoveToBack());
76 
77  //
78  gauss.plotOn(frame4, Range(-8, 3), LineColor(kMagenta));
79 
80  TCanvas *c = new TCanvas("rf107_plotstyles", "rf107_plotstyles", 800, 800);
81  c->Divide(2, 2);
82  c->cd(1);
83  gPad->SetLeftMargin(0.15);
84  frame1->GetYaxis()->SetTitleOffset(1.6);
85  frame1->Draw();
86  c->cd(2);
87  gPad->SetLeftMargin(0.15);
88  frame2->GetYaxis()->SetTitleOffset(1.6);
89  frame2->Draw();
90  c->cd(3);
91  gPad->SetLeftMargin(0.15);
92  frame3->GetYaxis()->SetTitleOffset(1.6);
93  frame3->Draw();
94  c->cd(4);
95  gPad->SetLeftMargin(0.15);
96  frame4->GetYaxis()->SetTitleOffset(1.6);
97  frame4->Draw();
98 }
c
#define c(i)
Definition: RSha256.hxx:101
RooPlot::Draw
virtual void Draw(Option_t *options=0)
Draw this plot and all of the elements it contains.
Definition: RooPlot.cxx:691
RooFit::Bins
RooCmdArg Bins(Int_t nbin)
Definition: RooGlobalFunc.cxx:177
RooAbsData::SumW2
@ SumW2
Definition: RooAbsData.h:97
RooFit::DataError
RooCmdArg DataError(Int_t)
Definition: RooGlobalFunc.cxx:157
RooGaussian.h
RooFit::XErrorSize
RooCmdArg XErrorSize(Double_t width)
Definition: RooGlobalFunc.cxx:91
kOrange
@ kOrange
Definition: Rtypes.h:67
x
Double_t x[n]
Definition: legend1.C:17
RooGaussian
Plain Gaussian p.d.f.
Definition: RooGaussian.h:24
TCanvas.h
RooFit::FillColor
RooCmdArg FillColor(Color_t color)
Definition: RooGlobalFunc.cxx:60
RooFit::MoveToBack
RooCmdArg MoveToBack()
Definition: RooGlobalFunc.cxx:67
RooDataSet.h
RooFit::DrawOption
RooCmdArg DrawOption(const char *opt)
Definition: RooGlobalFunc.cxx:39
kMagenta
@ kMagenta
Definition: Rtypes.h:66
TGeant4Unit::gauss
static constexpr double gauss
Definition: TGeant4SystemOfUnits.h:263
RooFit
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
Definition: RooCFunction1Binding.h:29
RooAbsData::plotOn
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
Definition: RooAbsData.cxx:547
RooFit::Name
RooCmdArg Name(const char *name)
Definition: RooGlobalFunc.cxx:63
RooPlot.h
RooPlot::GetYaxis
TAxis * GetYaxis() const
Definition: RooPlot.cxx:1258
RooPlot
A RooPlot is a plot frame and a container for graphics objects within that frame.
Definition: RooPlot.h:44
RooRealVar.h
kRed
@ kRed
Definition: Rtypes.h:66
RooAbsData::None
@ None
Definition: RooAbsData.h:97
sigma
const Double_t sigma
Definition: h1analysisProxy.h:11
RooFit::LineColor
RooCmdArg LineColor(Color_t color)
Definition: RooGlobalFunc.cxx:57
TCanvas
The Canvas class.
Definition: TCanvas.h:23
rf107_plotstyles
Definition: rf107_plotstyles.py:1
TAxis.h
RooFit::Range
RooCmdArg Range(const char *rangeName, Bool_t adjustNorm=kTRUE)
Definition: RooGlobalFunc.cxx:53
kBlue
@ kBlue
Definition: Rtypes.h:66
kDashed
@ kDashed
Definition: TAttLine.h:48
gPad
#define gPad
Definition: TVirtualPad.h:287
RooDataSet
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:33
RooFit::MarkerColor
RooCmdArg MarkerColor(Color_t color)
Definition: RooGlobalFunc.cxx:88
kGray
@ kGray
Definition: Rtypes.h:65
RooFit::LineStyle
RooCmdArg LineStyle(Style_t style)
Definition: RooGlobalFunc.cxx:58
TAttAxis::SetTitleOffset
virtual void SetTitleOffset(Float_t offset=1)
Set distance between the axis and the axis title.
Definition: TAttAxis.cxx:293
RooRealVar
RooRealVar represents a variable that can be changed from the outside.
Definition: RooRealVar.h:37
RooFit::Title
RooCmdArg Title(const char *name)
Definition: RooGlobalFunc.cxx:176