[ROOT] read in ntuples from different directories/files

From: daan (hubert@hep.iihe.ac.be)
Date: Thu Jun 05 2003 - 16:01:29 MEST


hi,

i'm quite new to the philosophy of C++ (and thus root), so the solution
should be obvious for my problem, but i can't find it. poor me... :p

i have some files in the following structure on my disk
/corsika/light/file1.nt
	      file2.nt
        /noise/file3.nt
/wimp/light/file4.nt
...

i want to get all these *.nt files (each of these have 4 columns of
floats) in one structure in root with the same hierarchy as on disk. is an
ntuple the best way to do it? i do not plan to add histograms or
non-float stuff to the root files.

the problem is that i don't know how to list directories and put them in
some sort of loop. gSystem->Exec("ls ") gives the dirs, but how do i put
them in a loop?

in this loop, i would again need to list all files in the directory and
fill them in ntuples. the filling of ntuples would go in the following way
(found on root site)


in.open("files/corsika/light/light.muon.L2.ama.mmc.corama.pcors.700XX.simu2001.AMAII.gz.nt");
Float_t om,adc,le,tot;
Int_t nlines = 0;
// put ntuple in this dir in rootfile
corsika->cd();
TNtuple *ntuple = new TNtuple("file1","light from L2.pcors","om:adc:le:tot");
while (1) {
  in >> om >> adc >> le >> tot;
  if (!in.good()) break;
  ntuple->Fill(om,adc,le,tot);
  nlines++;
}


every time i have a new file, i would change this in the
in.open("newfile"), change to the appropriate dir, and redo the ntuples
filling


how can i do this in practice? help is very welcome for this c++/root
beginner.


daan



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:12 MET