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