On Tue, 31 Jul 2001 10:43:49 -0400 Christy <skow@holley.physics.brown.edu> wrote concerning ": [ROOT] help reading data files": > Hi > I want to read a very large number of root data files out of a > directory. Is there any easy way of doing this without having to > explicitly write the name of each data file in my macro? Thanks very > much. Here's a skeleton to get a TObjArray of TObjString containing file names that match the regular expression "pattern". void *dir = gSystem->OpenDirectory(dirname); if (!dir) { cerr << "couldn't open directory << dirname << endl; return 0; } TObjArray* fileList = new TObjArray; const char* file; TString fileName; TRegexp regexp(pattern); while ((file = gSystem->GetDirEntry(dir))) { fileName = file; if (!fileName.CompareTo(".") || !fileName.CompareTo("..")) continue; if (fileName.Index(regexp) != kNPOS) fileList->Add(new TObjString(fileName)); } gSystem->FreeDirectory(dir); You can now loop ever the TObjArray, doing TIter next(fileList); TObjString* fn = 0; while((fn = (TObjString*)next())) { TFile* f = TFile::Open(fn.Data()); if (!f) continue; // do what ever f->Close(); } Hope that's what you want. Yours, Christian ----------------------------------------------------------- Holm Christensen Phone: (+45) 35 35 96 91 Sankt Hansgade 23, 1. th. Office: (+45) 353 25 305 DK-2200 Copenhagen N Web: www.nbi.dk/~cholm Denmark Email: cholm@nbi.dk
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:53 MET