Hi Reiner, All Root containers derive from TCollection (eg TList). You can write all objects in one collection to one single key. see http://root.cern.ch/root/html/TCollection.html#TCollection:Write it says: void Write(const char *name, Int_t option, Int_t bsize) Write all objects in this collection. By default all objects in the collection are written individually (each object gets its own key). To write all objects using one key specify a name and set option to kSingleKey (i.e. 1). Rene Brun ROHLFS Reiner wrote: > > Hi Root - Team, > > Is it possible to write a TList into a ROOT file? I do not understand the > behavior of the macro below. > It seams to me that the TList is not written to the ROOT file but all its > objects by themselves. And I cannot read all objects back into a TList? > > { > gROOT->Reset(); > TFile * file = new TFile("list.root", "recreate"); > > TList * list = new TList; > TNamed * n1, * n2; > > n1 = new TNamed("name1", "title1"); > n2 = new TNamed("name2", "title2"); > > list->Add(n1); > list->Add(n2); > > list->Write("list"); > file->Write(); > > file->ls(); > > printf("number of names in list: %d\n", list->GetSize()); > > list->Delete(); > delete list; > > list = (TList*)file->Get("list"); > printf("number of names in list: %d\n", list->GetSize()); > > n1 = (TNamed*)file->Get("list"); > printf("name: %s title: %s\n", n1->GetName(), n1->GetTitle()); > > delete file; > } > > The output of this macro is > > TFile** list.root > TFile* list.root > KEY: TNamed list;2 title2 > KEY: TNamed list;1 title1 > number of names in list: 2 > number of names in list: 13 > name: name2 title: title2 > > I use ROOT Version 2.23/12 21 February 2000 > > Thanks Reiner.
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:21 MET