ROOT  6.07/01
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
htest.C File Reference

Save histograms in Tree branches. More...

Go to the source code of this file.

Detailed Description

Save histograms in Tree branches.

To run this example, do

root > .L htest.C
root > htw()
root > htr1()
root > htr2()
root > htr3()
pict1_htest.C.png
void htw() {
//create a Tree with a few branches of type histogram
//25000 entries are filled in the Tree
//For each entry, the copy of 3 histograms is written
//The data base will contain 75000 histograms.
gBenchmark->Start("hsimple");
TFile f("ht.root","recreate");
auto T = new TTree("T","test");
auto hpx = new TH1F("hpx","This is the px distribution",100,-4,4);
auto hpxpy = new TH2F("hpxpy","py vs px",40,-4,4,40,-4,4);
auto hprof = new TProfile("hprof","Profile of pz versus px",100,-4,4,0,20);
T->Branch("hpx","TH1F",&hpx,32000,0);
T->Branch("hpxpy","TH2F",&hpxpy,32000,0);
T->Branch("hprof","TProfile",&hprof,32000,0);
for (Int_t i = 0; i < 25000; i++) {
if (i%1000 == 0) printf("at entry: %d\n",i);
gRandom->Rannor(px,py);
pz = px*px + py*py;
hpx->Fill(px);
hpxpy->Fill(px,py);
hprof->Fill(px,pz);
T->Fill();
}
T->Print();
f.Write();
gBenchmark->Show("hsimple");
}
void htr1() {
//connect Tree generated by htw and show histograms for entry 12345
auto f = new TFile("ht.root");
auto T = (TTree*)f->Get("T");
TH1F *hpx = nullptr;
TH2F *hpxpy = nullptr;
TProfile *hprof = nullptr;
T->SetBranchAddress("hpx",&hpx);
T->SetBranchAddress("hpxpy",&hpxpy);
T->SetBranchAddress("hprof",&hprof);
T->GetEntry(12345);
auto c1 = new TCanvas("c1","test",10,10,600,1000);
c1->Divide(1,3);
c1->cd(1);
hpx->Draw();
c1->cd(2);
hpxpy->Draw();
c1->cd(3);
hprof->Draw();
c1->Print("htr1.png");
}
void htr2() {
//connect Tree generated by htw and show histograms for entry 12345
// a variant of htr1
auto f = new TFile("ht.root");
auto T = (TTree*)f->Get("T");
auto c1 = new TCanvas("c1","test",10,10,600,1000);
c1->Divide(1,3);
c1->cd(1);
T->Draw("hpx.Draw()","","goff",1,12345);
c1->cd(2);
T->Draw("hpxpy.Draw()","","goff",1,12345);
c1->cd(3);
T->Draw("hprof.Draw()","","goff",1,12345);
c1->Print("htr2.png");
}
void htr3() {
//connect Tree generated by htw
//read all histograms and plot the RMS of hpx versus the Mean of hprof
//for each of the 25000 entries
auto f = new TFile("ht.root");
auto T = (TTree*)f->Get("T");
T->Draw("hpx.GetRMS():hprof.GetMean()");
gPad->Print("htr3.png");
}
void htest() {
htw();
htr1();
htr2();
htr3();
}
Author
Rene Brun

Definition in file htest.C.