Re: [ROOT] How to list files

From: Satoru KAMEOKA (kameoka@lambda.phys.tohoku.ac.jp)
Date: Fri Aug 01 2003 - 05:06:46 MEST


Hi, Valeriy.

Now it works fine.
Thank you very much!

      Best regards,
      Satoru Kameoka

From: "Valeriy Onuchin" <Valeri.Onoutchine@cern.ch>
Subject: Re: [ROOT] How to list files
Date: Thu, 31 Jul 2003 15:50:20 +0200
Message-ID: <01d201c3576a$aeefd910$c1848a89@cern.ch>

> Hi Satoru,
> 
> void lf()
> {
>    TIter next(gROOT->GetListOfGlobals(1));
>    TGlobal *global;
>    while ((global=(TGlobal*)next())) {
>      TString type = global->GetTypeName();
>      if (type=="TFile") {
>        TFile *file = (TFile*)gInterpreter->Calc(global->GetName());
>        if (file && file->IsOpen())
>          printf("%s: %s\n", global->GetName(),file->GetName());
>      }
>    }
>  }
> HTH. Regards. Valeriy
> (I appologize if you receive this  message twice. 
> I had e-mail problems recently)
> 
> 
> > Hi, Valeriy,
> > thank you for reply.
> > 
> > I wrote your solution as a function in rootalias.C with a little
> > modification to avoid SegV when no file is opened.
> > 
> > void lf()
> > {
> >   TIter next(gROOT->GetListOfGlobals());
> >   TGlobal *global;
> >   while ((global=(TGlobal*)next())) {
> >     TString type = global->GetTypeName();
> >     if (type=="TFile") {
> >       TFile *file = (TFile*)gInterpreter->Calc(global->GetName());
> >       if (file && file->IsOpen())
> > printf("%s: %s\n", global->GetName(),file->GetName());
> >     }
> >   }
> > }
> > 
> > But, unfortunately, this does not always work properly.
> > 
> >   *******************************************
> >   *                                         *
> >   *        W E L C O M E  to  R O O T       *
> >   *                                         *
> >   *   Version   3.05/05       15 May 2003   *
> >   *                                         *
> >   *  You are welcome to visit our Web site  *
> >   *          http://root.cern.ch            *
> >   *                                         *
> >   *******************************************
> > 
> > FreeType Engine v2.1.3 used to render TrueType fonts.
> > Compiled for linux with thread support.
> > 
> > CINT/ROOT C/C++ Interpreter version 5.15.86, Apr 29 2003
> > Type ? for help. Commands must be C++ statements.
> > Enclose multiple statements between { }.
> > root [0] TFile f("foo.root")
> > root [1] lf()
> > gFile: foo.root
> > f: foo.root
> > root [2] f.Close()
> > root [3] lf()
> > root [4] lf()
> > root [5] lf()
> > root [6] TFile f("foo.root")
> > root [7] lf()
> > gFile: foo.root
> > f: foo.root
> > root [8] TFile f2("bar.root")
> > root [9] lf()
> > gFile: bar.root
> > f: foo.root
> > root [10] 
> > 
> > "f2" is not listed now.
> > Is this an unreasonable demand?
> > 
> >    Best regards,
> >    Satoru Kameoka
> > 
> > 
> > From: "Valeriy Onuchin" <Valeri.Onoutchine@cern.ch>
> > Subject: Re: [ROOT] How to list files
> > Date: Tue, 29 Jul 2003 15:52:26 +0200
> > Message-ID: <066001c355d8$a50ebfd0$c1848a89@cern.ch>
> > 
> > >  Hi Satoru KAMEOKA,
> > > 
> > > TIter next(gROOT->GetListOfGlobals());
> > > TGlobal *global;
> > > TFile *file;
> > > while ((global=(TGlobal*)next())) {
> > >     TString type;
> > >     type = global->GetTypeName();
> > >     if (type=="TFile") {
> > >         file = (TFile*)gInterpreter->Calc(global->GetName());
> > >         printf("%s: %s\n", global->GetName(),file->GetName());
> > >     }
> > > }
> > > 
> > > HTH. Regards. Valeriy
> > > 
> > > > Hi, Valeriy,
> > > > Thank you for reply.
> > > > The way you taught surely shows file name and its contents, but not
> > > > associated object "instance name". 
> > > > 
> > > > What I hope is, when some files are opened,
> > > > root[] TFile f1("foo.root")
> > > > root[] TFile f2("bar.root")
> > > > root[] TFile f3("hoge.root")
> > > > 
> > > > some command can show the list as below.
> > > > root[] some_command
> > > > f1     "foo.root"
> > > > f2     "bar.root"
> > > > f3     "hoge.root"
> > > > 
> > > > Yes, I can understand that we can easily retrieve TFile object pointer
> > > > from file name even if I've fogotten the instance names(f1, f2, f3).
> > > > But I feel such command would be useful, because I sometimes attempt
> > > > to use already connected TFile object by mistake and cause
> > > > segmentation violation, like
> > > > root[] TFile f("A_file.root")
> > > > root[] TFile f("Another_file.root")
> > > > 
> > > > Anyway, thanks a lot.
> > > > 
> > > > Best regards,
> > > > S.Kameoka
> > > > 
> > > > From: "Valeriy Onuchin" <Valeri.Onoutchine@cern.ch>
> > > > Subject: Re: [ROOT] How to list files
> > > > Date: Mon, 28 Jul 2003 17:07:52 +0200
> > > > Message-ID: <028001c3551a$04c250a0$c1848a89@cern.ch>
> > > > 
> > > > >  Hi Satoru,
> > > > > 
> > > > > TIter next(gROOT->GetListOfFiles());
> > > > > TObject *obj;
> > > > > while ((obj=next())) obj->ls();
> > > > > 
> > > > > HTH. Regards. Valeriy
> > > > > 
> > > > > > Dear ROOT developers and users,
> > > > > > 
> > > > > > is there any way to list currently opened files?
> > > > > > I found gROOT->GetListOfFiles()->Print() prints file names,
> > > > > > but I want to know also associated TFile object instance names
> > > > > > as "ldir //" command of PAW shows file name and LUN.
> > > > > > 
> > > > > > 
> > > > > >    Best regards,
> > > > > >    Satoru Kameoka
> > > > > >    
> > > > > > 
> > > > > 
> > > > 
> > > 
> > 
> 
> 



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