Dear Rene, I try your example with one more line: br->SetFile("test.clones.root"); and obtained exacly the same result as before: root [0] TFile * f = new TFile("test.root") root [1] TTree * t = (TTree*) f->Get("tree") root [2] t->GetBranch("Clones")->GetFileName() (const char* 0x403ff98c)"" May be I am missing something? Why GetFileName is empty? Dmitri. On Tue, 27 Mar 2001, Rene Brun wrote: > Hi Dimitri, > > TBranch::SetFile acts on one branch only, not on its sub branches. > In the case of a TClonesArray, one has to loop on all the subbranches as shown > in the example below. > Note that in case you have a few entries only, data are buffered in > the branch baskets. If all the buffers fit in memory, they are written > in one single block together with the tree header on the master file. > In this case, the associated files will be empty. > > Rene Brun > > > { > TFile * f = new TFile("test.root","recreate"); > TClonesArray *d = new TClonesArray("TObject",10); > TTree * t = new TTree("tree","a test"); > TBranch *br = t->Branch("Clones",&d,32000); > TIter next(br->GetListOfBranches()); > TBranch *brc; > while((brc=(TBranch*)next())) { > brc->SetFile("test.clones.root"); > } > for (Int_t i=0;i<1000;i++) { > for (Int_t j=0;j<(i%50);j++) { > TObject *obj = new ((*d)[j]) TObject(); > obj->SetUniqueID(100*i+j); > } > t->Fill(); > } > t->Print(); > t->Write(); > } > > > Dimitri Peressounko wrote: > > > > Hi, Rooters! > > > > I am trying to divert branch ot TClonesArray to separate file: > > > > root [0] TFile * f = new TFile("test.root","new") > > root [1] TClonesArray * d = new TClonesArray("TObject",10) > > root [2] TTree * t = new TTree("tree","a test") > > root [3] TBranch * br = t->Branch("Clones",&d,32000); > > root [4] br->SetFile("test.clones.root") > > root [5] t->GetBranch("Clones")->GetFileName() > > (const char* 0x858a01c)"test.clones.root" > > root [6] t->Fill() > > (Int_t)4 > > root [7] t->Write() > > (Int_t)761 > > root [8] .q > > > > Now I am reading back this branch and find, that file = "". > > > > root [0] TFile * f = new TFile("test.root") > > root [1] TTree * t = (TTree *) f->Get("tree") > > root [2] t->GetBranch("Clones")->GetFileName() > > (const char* 0x403ff98c)"" > > > > file test.clones.root is not created as well. > > What I am doing wrong? > > > > Dmitri >
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:40 MET