ROOT
master
Reference Guide
Loading...
Searching...
No Matches
hist006_TH1_bar_charts.C File Reference
Tutorials
»
Histograms tutorials
Detailed Description
Draw 1D histograms as bar charts
TCanvas
*hist006_TH1_bar_charts()
{
// Try to open first the file cernstaff.root in tutorials/tree directory
TString
filedir =
gROOT
->GetTutorialDir();
filedir +=
TString
(
"/tree/"
);
TString
filename
=
"cernstaff.root"
;
// Note that `AccessPathName` returns 0 (false) on success!
bool
fileNotFound =
gSystem
->
AccessPathName
(
filename
);
// If the file is not found try to generate it using the macro tree/cernbuild.C
if
(fileNotFound) {
TString
macroName = filedir +
"cernbuild.C"
;
if
(!
gInterpreter
->IsLoaded(macroName))
gInterpreter
->LoadMacro(macroName);
gROOT
->ProcessLineFast(
"cernbuild()"
);
}
auto
file = std::unique_ptr<TFile>(
TFile::Open
(
filename
,
"READ"
));
if
(!file) {
Error
(
"hbars"
,
"file cernstaff.root not found"
);
return
nullptr
;
}
// Retrieve the TTree named "T" contained in the file
auto
tree
= file->Get<
TTree
>(
"T"
);
if
(!tree) {
Error
(
"hbars"
,
"Tree T is not present in file %s"
, file->GetName());
return
nullptr
;
}
tree
->SetFillColor(45);
// Create the canvas to draw on
TCanvas
*
c1
=
new
TCanvas
(
"c1"
,
"histograms with bars"
, 700, 800);
c1
->SetFillColor(42);
// Divide it vertically in 2 sections
int
ndivsX = 1;
int
ndivsY = 2;
c1
->Divide(ndivsX, ndivsY);
// Horizontal bar chart
auto
*curPad =
c1
->cd(1);
// select top section. Section 1 is the first sub-section.
curPad->SetGrid();
curPad->SetLogx();
curPad->SetFrameFillColor(33);
// Use the "hbar2" option to draw the tree as a horizontal bar chart
tree
->Draw(
"Nation"
,
""
,
"hbar2"
);
// Vertical bar chart
curPad =
c1
->cd(2);
curPad->SetGrid();
curPad->SetFrameFillColor(33);
// This line makes the TTree draw its "Division" branch to a new histogram called "hDiv".
// We use "goff" because we don't want to really draw it to screen but we are only interested
// in generating the histogram from it (which we'll display ourselves later).
tree
->Draw(
"Division>>hDiv"
,
""
,
"goff"
);
// Retrieve the generated histogram
TH1F
*hDiv = file->Get<
TH1F
>(
"hDiv"
);
hDiv->
SetStats
(0);
// Clone the histogram into a new one called "hDivFR".
TH1F
*hDivFR =
static_cast<
TH1F
*
>
(hDiv->
Clone
(
"hDivFR"
));
// Overwrite the contents of the newly-cloned histogram to only keep the entries matching our
// selection (second argument of TTree::Draw()).
tree
->Draw(
"Division>>hDivFR"
,
"Nation==\"FR\""
,
"goff"
);
// Now draw both histograms side-by-side ("same" option) as vertical bar charts ("bar2" option)
hDiv->
SetBarWidth
(0.45);
hDiv->
SetBarOffset
(0.1);
hDiv->
SetFillColor
(49);
TH1
*
h1
= hDiv->
DrawCopy
(
"bar2"
);
hDivFR->
SetBarWidth
(0.4);
hDivFR->
SetBarOffset
(0.55);
hDivFR->
SetFillColor
(50);
TH1
*
h2
= hDivFR->
DrawCopy
(
"bar2,same"
);
TLegend
*legend =
new
TLegend
(0.55,0.65,0.76,0.82);
legend->
AddEntry
(
h1
,
"All nations"
,
"f"
);
legend->
AddEntry
(h2,
"French only"
,
"f"
);
legend->
Draw
();
c1
->cd();
return
c1
;
}
Error
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
Definition
TError.cxx:185
filename
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
Definition
TGWin32VirtualXProxy.cxx:232
gInterpreter
#define gInterpreter
Definition
TInterpreter.h:574
gROOT
#define gROOT
Definition
TROOT.h:406
gSystem
R__EXTERN TSystem * gSystem
Definition
TSystem.h:561
TAttFill::SetFillColor
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Definition
TAttFill.h:38
TCanvas
The Canvas class.
Definition
TCanvas.h:23
TFile::Open
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
Definition
TFile.cxx:4086
TH1F
1-D histogram with a float per channel (see TH1 documentation)
Definition
TH1.h:634
TH1
TH1 is the base class of all histogram classes in ROOT.
Definition
TH1.h:59
TH1::SetBarOffset
virtual void SetBarOffset(Float_t offset=0.25)
Set the bar offset as fraction of the bin width for drawing mode "B".
Definition
TH1.h:376
TH1::DrawCopy
virtual TH1 * DrawCopy(Option_t *option="", const char *name_postfix="_copy") const
Copy this histogram and Draw in the current pad.
Definition
TH1.cxx:3102
TH1::Clone
TObject * Clone(const char *newname="") const override
Make a complete copy of the underlying object.
Definition
TH1.cxx:2741
TH1::SetBarWidth
virtual void SetBarWidth(Float_t width=0.5)
Set the width of bars as fraction of the bin width for drawing mode "B".
Definition
TH1.h:377
TH1::SetStats
virtual void SetStats(Bool_t stats=kTRUE)
Set statistics option on/off.
Definition
TH1.cxx:9010
TLegend
This class displays a legend box (TPaveText) containing several legend entries.
Definition
TLegend.h:23
TLegend::AddEntry
TLegendEntry * AddEntry(const TObject *obj, const char *label="", Option_t *option="lpf")
Add a new entry to this legend.
Definition
TLegend.cxx:320
TLegend::Draw
void Draw(Option_t *option="") override
Draw this legend with its current attributes.
Definition
TLegend.cxx:425
TString
Basic string class.
Definition
TString.h:139
TSystem::AccessPathName
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
Definition
TSystem.cxx:1296
TTree
A TTree represents a columnar dataset.
Definition
TTree.h:79
c1
return c1
Definition
legend1.C:41
h1
TH1F * h1
Definition
legend1.C:5
TMVA_SOFIE_GNN_Parser.h2
h2
Definition
TMVA_SOFIE_GNN_Parser.py:188
TMVA_SOFIE_GNN_Parser.tree
tree
Definition
TMVA_SOFIE_GNN_Parser.py:169
Date
November 2024
Author
Rene Brun
Definition in file
hist006_TH1_bar_charts.C
.
tutorials
hist
hist006_TH1_bar_charts.C
ROOT master - Reference Guide Generated on Wed Jan 8 2025 15:06:21 (GVA Time) using Doxygen 1.9.8