Problem with TObjArray

From: Alexander Zvyagin (zvyagin@mx.ihep.su)
Date: Sun Nov 01 1998 - 01:10:44 MET


                                           IHEP, Protvino, Russia,  1-NOV-1998

    Dear ROOTers and ROOT developers,

I have problem in storing TObjArray into ROOT file under ROOT 2.00/12. The
macro is very simple, I try to save TObjArray in ROOT file, then read it back,
and test what have I read. Macro and it output is attached below.

Thanks in advance,
Alexander.



void bug(void)
{
  printf("Example 1:  Storing TObjArray with 0 entries.\n");

  f1 =  new TFile("f.root","RECREATE");
  o1 =  new TObjArray;
  f1 -> ls();
  o1 -> Write("o1");
  f1 -> ls();
  f1 -> Close();

  printf("---------\n");

  // Reding back.
  
  f1 = new TFile("f.root");
  f1 ->ls();
  o1 = (TObjArray*)f1->Get("o1");
  if( NULL==o1 )
    printf("Can not find object\n");
  else
    printf("Entries = %d\n",o1 -> GetEntries());

  printf("===================================\n");

  printf("Example 2:  Storing TObjArray with four entries.\n");

  f1 =  new TFile("f.root","RECREATE");
  o1 =  new TObjArray;
  o1 -> Add(new TObject);
  o1 -> Add(new TObject);
  o1 -> Add(new TObject);
  o1 -> Add(new TObject);
  printf("Entries = %d\n",o1 -> GetEntries());
  f1 -> ls();
  o1 -> Write("o1");
  f1 -> ls();
  f1 -> Close();

  printf("---------\n");

  // Reading back.
  
  f1 = new TFile("f.root");
  f1 ->ls();
  o1 = (TObjArray*)f1->Get("o1");
  if( NULL==o1 )
    printf("Can not find object\n");
  else
    printf("Entries = %d\n",o1 -> GetEntries());

  printf("===================================\n");
}


Output:
root [0] .x bug.C
TFile**         f.root
 TFile*         f.root
TFile**         f.root
 TFile*         f.root
---------
TFile**         f.root
 TFile*         f.root
Can not find object
===================================
Entries = 4
TFile**         f.root
 TFile*         f.root
TFile**         f.root
 TFile*         f.root
  KEY: TObject  o1;2    Basic ROOT object
  KEY: TObject  o1;2    Basic ROOT object
  KEY: TObject  o1;2    Basic ROOT object
  KEY: TObject  o1;1    Basic ROOT object
---------
TFile**         f.root
 TFile*         f.root
  KEY: TObject  o1;2    Basic ROOT object
  KEY: TObject  o1;2    Basic ROOT object
  KEY: TObject  o1;2    Basic ROOT object
  KEY: TObject  o1;1    Basic ROOT object
Entries = 0
===================================
NULL
root [1] .q



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