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/io/tree directory
TString
filedir
=
gROOT
->GetTutorialDir();
filedir
+=
TString
(
"/io/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 io/tree/tree500_cernbuild.C
if
(
fileNotFound
) {
TString
macroName
=
filedir
+
"tree500_cernbuild.C"
;
if
(!
gInterpreter
->IsLoaded(
macroName
))
gInterpreter
->LoadMacro(
macroName
);
gROOT
->ProcessLineFast(
"tree500_cernbuild()"
);
}
auto
file = std::unique_ptr<TFile>(
TFile::Open
(
filename
,
"READ"
));
if
(!file) {
Error
(
"hist006_TH1_bar_charts"
,
"file cernstaff.root not found"
);
return
nullptr
;
}
// Retrieve the TTree named "T" contained in the file
auto
TTree>(
"T"
);
if
(!tree) {
Error
(
"hist006_TH1_bar_charts"
,
"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);
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
;
}
TRangeDynCast
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Definition
TCollection.h:358
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:571
gROOT
#define gROOT
Definition
TROOT.h:406
gSystem
R__EXTERN TSystem * gSystem
Definition
TSystem.h:572
ROOT::Detail::TRangeCast
Definition
TCollection.h:311
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:4131
TH1F
1-D histogram with a float per channel (see TH1 documentation)
Definition
TH1.h:650
TH1
TH1 is the base class of all histogram classes in ROOT.
Definition
TH1.h:59
TLegend
This class displays a legend box (TPaveText) containing several legend entries.
Definition
TLegend.h:23
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:1308
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:195
TMVA_SOFIE_GNN_Parser.tree
tree
Definition
TMVA_SOFIE_GNN_Parser.py:176
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 Mon May 12 2025 16:33:00 (GVA Time) using Doxygen 1.10.0