Loading [MathJax]/extensions/tex2jax.js
Logo ROOT   6.18/05
Reference Guide
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
readCode.C File Reference

Detailed Description

View in nbviewer Open in SWAN Example of script showing how to navigate in a ROOT file with sub-directories and read the objects in each sub-directory.

This example uses the file produced by the tutorial importCode.C

#include "TFile.h"
#include "TKey.h"
#include "TMacro.h"
Int_t nlines = 0;
Int_t nfiles = 0;
Int_t ndirs = 0;
Int_t nh = 0;
Int_t nc = 0;
Int_t nC = 0;
Int_t npy = 0;
void readdir(TDirectory *dir) {
ndirs++;
TIter next(dir->GetListOfKeys());
TKey *key;
while ((key = (TKey*)next())) {
if (key->IsFolder()) {
dir->cd(key->GetName());
readdir(subdir);
dirsav->cd();
continue;
}
TMacro *macro = (TMacro*)key->ReadObj();
nfiles++;
nlines += macro->GetListOfLines()->GetEntries();
if (strstr(key->GetName(),".h")) nh++;
if (strstr(key->GetName(),".c")) nc++;
if (strstr(key->GetName(),".C")) nC++;
if (strstr(key->GetName(),".py")) npy++;
delete macro;
}
}
void readCode() {
TFile *f = new TFile("code.root");
if (f->IsZombie()) {
printf("File code.root does not exist. Run tutorial importCode.C first\n");
return;
}
printf("Reading file ==> code.root\n");
printf("File size in bytes = %lld\n",f->GetEND());
printf("File compression factor = %g\n",f->GetCompressionFactor());
readdir(f);
printf("Number of sub-dirs = %d\n",ndirs);
printf("Number of macro files = %d\n",nfiles);
printf("Number of lines in mac = %d\n",nlines);
printf("Number of cxx,c,cc files = %d\n",nc);
printf("Number of C files = %d\n",nC);
printf("Number of Python files = %d\n",npy);
}
#define f(i)
Definition: RSha256.hxx:104
int Int_t
Definition: RtypesCore.h:41
#define gDirectory
Definition: TDirectory.h:218
virtual Int_t GetEntries() const
Definition: TCollection.h:177
Describe directory structure in memory.
Definition: TDirectory.h:34
virtual Bool_t cd(const char *path=0)
Change current directory to "this" directory.
Definition: TDirectory.cxx:497
virtual TList * GetListOfKeys() const
Definition: TDirectory.h:155
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition: TFile.h:48
Book space in a file, create I/O buffers, to fill them, (un)compress them.
Definition: TKey.h:24
Bool_t IsFolder() const
Check if object referenced by the key is a folder.
Definition: TKey.cxx:648
virtual TObject * ReadObj()
To read a TObject* from the file.
Definition: TKey.cxx:722
Class supporting a collection of lines with C++ code.
Definition: TMacro.h:31
TList * GetListOfLines() const
Definition: TMacro.h:51
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:47
Author
Rene Brun

Definition in file readCode.C.