Directories in TFile.

From: Alexander Zvyagin (zvyagin@mx.ihep.su)
Date: Mon May 17 1999 - 14:32:26 MEST


                                           IHEP, Protvino, Russia, 17-MAY-1999

    Dear ROOT developers and ROOT users,

The macro is attached below and it shows problem with TDirectory::Get()
function. I do not undenstand what object (global variable
gDirectory or local TFile variable) should I use in my programs. What are
recommendations?

With best wishes,
Alexander.

Try to run this macro by:
.x a.c("")        <-- It's all right.
.x a.c("a")       <-- Problem.

void a(const char *dir)
{
  TNamed o1("","");
  TFile f1("f.root","RECREATE");
  if( strlen(dir)>0 )
  {
    f1.mkdir(dir);
    f1.cd(dir);
  }
  o1.Write("o");
  f1.Write();
  f1.Close();
  
  //////////////
  
  TFile f2("f.root");        // Local variable
  f2.cd(dir);
  
  f2.pwd();                                       // f.root:/
  printf("Object:  %p\n",         f2.Get("o"));   // Object is NULL!

  gDirectory->pwd();                              // f.root:/a
  printf("Object:  %p\n",gDirectory->Get("o"));   // OK.
}



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:33 MET