Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
hist015_TH1_read_and_draw.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_hist
3/// \notebook -js
4/// Read a 1-D histogram from a ROOT File and draw it.
5/// We attach (or generate) the ROOT file in `$ROOTSYS/tutorials/hsimple.root`
6/// or `$PWD/hsimple.root`
7/// We draw one histogram in different formats.
8///
9/// \macro_image
10/// \macro_code
11///
12/// \date August 2021
13/// \author Rene Brun
14
15#include "TInterpreter.h"
16#include "TCanvas.h"
17#include "TSystem.h"
18#include "TFile.h"
19#include "TH2.h"
20#include "TNtuple.h"
21#include "TPaveLabel.h"
22#include "TPaveText.h"
23#include "TFrame.h"
24#include "TSystem.h"
25#include "TInterpreter.h"
26
28{
29 // Fetch and open the hsimple.root File
30 TFile *example = TFile::Open(gROOT->GetTutorialDir() + "/hsimple.root");
31
32 example->ls(); // Show the file contents
33 // Get the histogram from the ROOT File
34 TH1 *hpx = nullptr; // pointer to base class TH1 is enough
35 example->GetObject("hpx", hpx);
36
37 TCanvas *c1 = new TCanvas("c1", "Histogram Drawing Options", 200, 10, 700, 900);
38 TPad *pad1 = new TPad("pad1", "The pad with the function", 0.03, 0.62, 0.50, 0.92);
39 TPad *pad2 = new TPad("pad2", "The pad with the histogram", 0.51, 0.62, 0.98, 0.92);
40 TPad *pad3 = new TPad("pad3", "The pad with the histogram", 0.03, 0.02, 0.97, 0.57);
41 pad1->Draw();
42 pad2->Draw();
43 pad3->Draw();
44
45 // Draw a global picture title
46 TPaveLabel *title = new TPaveLabel(0.1, 0.94, 0.9, 0.98, "Drawing options for one dimensional histograms");
47 title->SetTextFont(52);
48 title->Draw();
49
50 // Draw histogram hpx in first pad with the default option.
51 pad1->cd();
52 pad1->GetFrame()->SetFillColor(18);
53 hpx->SetFillColor(45);
54 hpx->DrawCopy();
55 TPaveLabel *label1 = new TPaveLabel(-3.5, 700, -1, 800, "Default option");
56 label1->Draw();
57
58 // Draw hpx as a lego. Clicking on the lego area will show
59 // a "transparent cube" to guide you rotating the lego in real time.
60 pad2->cd();
61 hpx->DrawCopy("lego1");
62 TPaveLabel *label2 = new TPaveLabel(-0.72, 0.74, -0.22, 0.88, "option Lego1");
63 label2->Draw();
64 TPaveLabel *label2a = new TPaveLabel(-0.93, -1.08, 0.25, -0.92, "Click on lego to rotate");
65 label2a->Draw();
66
67 // Draw hpx with its errors and a marker.
68 pad3->cd();
69 pad3->SetGridx();
70 pad3->SetGridy();
71 hpx->SetMarkerStyle(21);
72 hpx->Draw("e1p");
73 TPaveLabel *label3 = new TPaveLabel(2, 600, 3.5, 650, "option e1p");
74 label3->Draw();
75
76 // The following illustrates how to add comments using a PaveText.
77 // Attributes of text/lines/boxes added to a PaveText can be modified.
78 // The AddText function returns a pointer to the added object.
79 TPaveText *pave = new TPaveText(-3.78, 500, -1.2, 750);
80 TText *t1 = pave->AddText("You can move");
81 t1->SetTextColor(4);
82 t1->SetTextSize(0.05);
83 pave->AddText("Title and Stats pads");
84 pave->AddText("X and Y axis");
85 pave->AddText("You can modify bin contents");
86 pave->Draw();
87 c1->Update();
88}
#define gROOT
Definition TROOT.h:406
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
Definition TAttText.h:48
The Canvas class.
Definition TCanvas.h:23
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
Definition TFile.h:131
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:4130
TH1 is the base class of all histogram classes in ROOT.
Definition TH1.h:59
The most important graphics class in the ROOT system.
Definition TPad.h:28
A Pave (see TPave) with a text centered in the Pave.
Definition TPaveLabel.h:20
void Draw(Option_t *option="") override
Draw this pavelabel with its current attributes.
A Pave (see TPave) with text, lines or/and boxes inside.
Definition TPaveText.h:21
Base class for several text objects.
Definition TText.h:22
return c1
Definition legend1.C:41
auto * t1
Definition textangle.C:20