Hi Zaldy, A short answer to your question(s) TTree has a pointer to the file where the Tree must be written. When calling TTree::Fill, the function will automatically write the buffers to the file where the tree was created. At the end of your job, if you call tree->AutoSave, the Tree header will also be written to the right file. You do not need to do, file->cd(); tree->Write(); although you may want to do it if you want to write the tree header to another file. Rene Brun On Sun, 20 Jul 2003, zaldy wrote: > > Dear ROOT Users, > > > In using the methods tree_ptr->Write() and file_ptr->Write(), how does the > TTree object communicates with the TFile object? > > For instance in writing a root file, I noticed the ff. steps from the > tutorial(filename: tree*.C) or manual (Users Man. 3.05, pp.212-214): > > 1. a declaration of the form > TFile * firstFILEinput = new TFile("INPUT.root",MODE); > TTree * myTree= new TTree("T","Oak Tree"); > > 2. Creating branches; > myTree->Branch(.......arguments.......); > ....... > > 3. Filling the branches with data; > branchName = data_one; > ............. > myTree->Fill(); > > 4. actual writing; > myTree->Write(); > (sometimes: fileOUT->Write(); ) > > Now what about if one has to create another TFile object > > TFile * anotherFileOUTPUT = new TFile("OUTPUT.root",MODE), > > how will the TTree select which TFile's to direct? > (Or, how intelligent this tree is to choose w/c from the two files to > write?) > > I did not see an explicit > declaration on the part of TTree that it has to write to a specific file. > So far in the manual, we are told that it is for writing or reading > through its MODE. > > In otherwords, is it INPUT.root or UTPUT.root ? > Are we assured that it will not overwrite, for instance, the file > "INPUT.root" with mode=>READ? > > My apology for the many questions. > > Thanks. > >
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:13 MET