This macro illustrates how to create a hierarchy of directories in a Root file.
Ten directories called plane0, plane1, ..., plane9 are created. Each plane directory contains 200 histograms. Note that the macro deletes the TFile object at the end! Connect the file again in read mode:
Root [0] TFile top("top.root");
The hierarchy can be browsed by the Root browser as shown below
Click on the left pane on one of the plane directories. This shows the list of all histograms in this directory. Double click on one histogram to draw it (left mouse button). Select different options with the right mouse button. Instead of using the browser, you can also do:
Root > tof->cd();
Root > plane3->cd();
Root > h3_90N->Draw();
void dirs() {
const Int_t nplanes = 10;
const Int_t ncounters = 100;
char dirname[50];
char hname[20];
char htitle[80];
TH1F *hn[nplanes][ncounters];
TH1F *hs[nplanes][ncounters];
for (i=0;i<nplanes;i++) {
sprintf(dirname,"plane%d",i);
cdplane[i] = cdtof->
mkdir(dirname);
for (j=0;j<ncounters;j++) {
sprintf(hname,"h%d_%dN",i,j);
sprintf(htitle,"hist for counter:%d in plane:%d North",j,i);
hn[i][j] =
new TH1F(hname,htitle,100,0,100);
sprintf(hname,"h%d_%dS",i,j);
sprintf(htitle,"hist for counter:%d in plane:%d South",j,i);
hs[i][j] =
new TH1F(hname,htitle,100,0,100);
}
}
for (i=0;i<nplanes;i++) {
for (j=0;j<ncounters;j++) {
for (k=0;k<100;k++) {
hn[i][j]->
Fill(100*
r.Rndm(),i+j);
hs[i][j]->
Fill(100*
r.Rndm(),i+j+k);
}
}
}
delete top;
}
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 r
TDirectory * mkdir(const char *name, const char *title="", Bool_t returnExistingDirectory=kFALSE) override
Create a sub-directory "a" or a hierarchy of sub-directories "a/b/c/...".
Describe directory structure in memory.
virtual Bool_t cd()
Change current directory to "this" directory.
virtual TDirectory * mkdir(const char *name, const char *title="", Bool_t returnExistingDirectory=kFALSE)
Create a sub-directory "a" or a hierarchy of sub-directories "a/b/c/...".
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
Int_t Write(const char *name=nullptr, Int_t opt=0, Int_t bufsiz=0) override
Write memory objects to this file.
1-D histogram with a float per channel (see TH1 documentation)
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
This is the base class for the ROOT Random number generators.
- Author
- Rene Brun
Definition in file dirs.C.