Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
markerwarning.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_graphics
3/// \notebook
4/// This script illustrates the danger of using asymmetric symbols.
5///
6/// \macro_image
7///
8/// Non-symmetric symbols should be used carefully in plotting.
9/// These two graphs show how misleading a careless use of symbols can be.
10/// The two plots represent the same data sets but because of a bad symbol
11/// choice, the two plots on the top appear further apart than for the bottom
12/// example.
13/// \author Olivier Couet
14
15void markerwarning()
16{
17 const int Nph = 14;
18 double np_ph[Nph] = {353.4, 300.2, 254.3, 215.2, 181.0, 151.3, 125.2, 102.7, 83.3, 66.7, 52.5, 40.2, 30.2, 22.0};
19 double nc_ph[Nph] = {3.890, 3.734, 3.592, 3.453, 3.342, 3.247, 3.151,
20 3.047, 2.965, 2.858, 2.701, 2.599, 2.486, 2.328};
21 double npe_ph[Nph] = {10.068, 9.004, 8.086, 7.304, 6.620, 6.026, 5.504,
22 5.054, 4.666, 4.334, 4.050, 3.804, 3.604, 3.440};
23 double nce_ph[Nph] = {0.235, 0.217, 0.210, 0.206, 0.213, 0.223, 0.239,
24 0.260, 0.283, 0.318, 0.356, 0.405, 0.465, 0.545};
25
26 const int Nbr = 6;
27 double np_br[Nbr] = {357.0, 306.0, 239.0, 168.0, 114.0, 73.0};
28 double nc_br[Nbr] = {3.501, 3.275, 3.155, 3.060, 3.053, 3.014};
29 double npe_br[Nbr] = {8.000, 11.000, 10.000, 9.000, 9.000, 8.000};
30 double nce_br[Nbr] = {0.318, 0.311, 0.306, 0.319, 0.370, 0.429};
31
32 TGraphErrors *phUP = new TGraphErrors(Nph, np_ph, nc_ph, npe_ph, nce_ph);
33 TGraphErrors *phDN = new TGraphErrors(Nph, np_ph, nc_ph, npe_ph, nce_ph);
34 TGraphErrors *brUP = new TGraphErrors(Nbr, np_br, nc_br, npe_br, nce_br);
35 TGraphErrors *brDN = new TGraphErrors(Nbr, np_br, nc_br, npe_br, nce_br);
36
37 float Top_margin = 0.;
38 float Left_margin = 0.025;
39 float Right_margin = 0.005;
40 float maxPlotPart = 395;
41 float Marker_Size = 1.3;
42 int Marker_Style = 8;
43
44 float Et_200_Min = 0.71;
45 float Et_200_Max = 3.80;
46 float Et_130_Min = 1.21;
47 float Et_130_Max = 3.29;
48
49 float Nc_200_Min = 1.31;
50 float Nc_200_Max = 4.30;
51 float Nc_130_Min = 1.51;
52 float Nc_130_Max = 3.89;
53
54 TCanvas *canvasNc = new TCanvas("canvasNc", "Multiplicity", 630, 10, 600, 500);
55
57 canvasNc->SetFillColor(10);
58 canvasNc->SetBorderSize(0);
59
60 // Primitives in Nc200 pad
61 TPad *padNcUP = new TPad("padNcUP", "200 GeV", 0.07, 0.60, 1., 1.00);
62 padNcUP->Draw();
63 padNcUP->cd();
64 padNcUP->SetFillColor(10);
65 padNcUP->SetFrameFillColor(10);
66 padNcUP->SetBorderSize(0);
67 padNcUP->SetLeftMargin(Left_margin);
68 padNcUP->SetRightMargin(Right_margin);
69 padNcUP->SetTopMargin(Top_margin + 0.005);
70 padNcUP->SetBottomMargin(0.00);
71
72 TH1F *frameNcUP = new TH1F("frameNcUP", "", 100, 0, maxPlotPart);
73 frameNcUP->GetYaxis()->SetLabelOffset(0.005);
74 frameNcUP->GetYaxis()->SetLabelSize(0.10);
75 frameNcUP->SetMinimum(Nc_200_Min);
76 frameNcUP->SetMaximum(Nc_200_Max);
77 frameNcUP->SetNdivisions(505, "Y");
78 frameNcUP->SetNdivisions(505, "X");
79 frameNcUP->Draw();
80
81 brUP->SetMarkerStyle(22);
82 brUP->SetMarkerSize(2.0);
83 brUP->Draw("P");
84
85 phDN->SetMarkerStyle(23);
86 phDN->SetMarkerSize(2);
87 phDN->Draw("P");
88
89 canvasNc->cd();
90
91 // Primitives in Nc130 pad
92 TPad *padNcDN = new TPad("padNcDN", "130 GeV", 0.07, 0.02, 1., 0.60);
93 padNcDN->Draw();
94 padNcDN->cd();
95 padNcDN->SetFillColor(10);
96 padNcDN->SetFrameFillColor(10);
97 padNcDN->SetBorderSize(0);
98 padNcDN->SetLeftMargin(Left_margin);
99 padNcDN->SetRightMargin(Right_margin);
100 padNcDN->SetTopMargin(Top_margin + 0.005);
101 padNcDN->SetBottomMargin(0.30);
102
103 TH1F *frameNcDN = new TH1F("frameNcDN", "", 100, 0, maxPlotPart);
104 frameNcDN->GetYaxis()->SetLabelOffset(0.005);
105 frameNcDN->GetYaxis()->SetLabelSize(0.07);
106 frameNcDN->GetXaxis()->SetLabelOffset(0.005);
107 frameNcDN->GetXaxis()->SetLabelSize(0.07);
108 frameNcDN->SetMinimum(Nc_200_Min);
109 frameNcDN->SetMaximum(Nc_200_Max);
110 frameNcDN->SetNdivisions(505, "Y");
111 frameNcDN->SetNdivisions(505, "X");
112 frameNcDN->Draw();
113
114 brDN->SetMarkerStyle(23);
115 brDN->SetMarkerSize(2.0);
116 brDN->Draw("P");
117
118 phUP->SetMarkerStyle(22);
119 phUP->SetMarkerSize(2);
120 phUP->Draw("P");
121
122 TLatex t1;
123 t1.SetTextFont(12);
124 t1.SetTextSize(0.0525);
125 t1.DrawLatex(-5, 0.6,
126 "Non-symmetric symbols should be used carefully in plotting."
127 "These two graphs show how misleading");
128 t1.DrawLatex(-5, 0.4,
129 "a careless use of symbols can be. The two plots represent "
130 "the same data sets but because of a bad");
131 t1.DrawLatex(-5, 0.2,
132 "symbol choice, the two plots on the top appear further apart "
133 "than for the bottom example.");
134
135 canvasNc->cd();
136}
R__EXTERN TStyle * gStyle
Definition TStyle.h:436
virtual void SetLabelSize(Float_t size=0.04)
Set size of axis labels.
Definition TAttAxis.cxx:203
virtual void SetLabelOffset(Float_t offset=0.005)
Set distance between the axis and the labels.
Definition TAttAxis.cxx:191
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Definition TAttFill.h:38
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
Definition TAttMarker.h:41
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
Definition TAttMarker.h:46
virtual void SetBottomMargin(Float_t bottommargin)
Set Pad bottom margin in fraction of the pad height.
Definition TAttPad.cxx:99
void SetFrameFillColor(Color_t color=1)
Definition TAttPad.h:73
virtual void SetLeftMargin(Float_t leftmargin)
Set Pad left margin in fraction of the pad width.
Definition TAttPad.cxx:109
virtual void SetRightMargin(Float_t rightmargin)
Set Pad right margin in fraction of the pad width.
Definition TAttPad.cxx:119
virtual void SetTopMargin(Float_t topmargin)
Set Pad top margin in fraction of the pad height.
Definition TAttPad.cxx:129
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
Definition TAttText.h:48
The Canvas class.
Definition TCanvas.h:23
TVirtualPad * cd(Int_t subpadnumber=0) override
Set current canvas & pad.
Definition TCanvas.cxx:719
A TGraphErrors is a TGraph with error bars.
void Draw(Option_t *chopt="") override
Draw this graph with its current attributes.
Definition TGraph.cxx:833
1-D histogram with a float per channel (see TH1 documentation)
Definition TH1.h:634
TAxis * GetXaxis()
Definition TH1.h:336
virtual void SetNdivisions(Int_t n=510, Option_t *axis="X")
Set the number of divisions to draw an axis.
Definition Haxis.cxx:170
virtual void SetMaximum(Double_t maximum=-1111)
Definition TH1.h:416
TAxis * GetYaxis()
Definition TH1.h:337
void Draw(Option_t *option="") override
Draw this histogram with options.
Definition TH1.cxx:3055
virtual void SetMinimum(Double_t minimum=-1111)
Definition TH1.h:417
To draw Mathematical Formula.
Definition TLatex.h:18
The most important graphics class in the ROOT system.
Definition TPad.h:28
void SetBorderSize(Short_t bordersize) override
Definition TPad.h:326
TVirtualPad * cd(Int_t subpadnumber=0) override
Set Current pad.
Definition TPad.cxx:693
void Draw(Option_t *option="") override
Draw Pad in Current pad (re-parent pad if necessary).
Definition TPad.cxx:1364
void SetOptStat(Int_t stat=1)
The type of information printed in the histogram statistics box can be selected via the parameter mod...
Definition TStyle.cxx:1640
auto * t1
Definition textangle.C:20