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
> 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