Hi Christian,
You do not give enough information to process your problem.
In particular, you do not show where/how you create your file(s).
I suggest a simplification of your program as shown below.
Could you implement it and let me know
Rene Brun
//-------------------------
// Create trees and store in list
TTree *tree = 0;
MyClass *mycl = new MyClass();
fList->Clear();
for (Int_t i=0; i<numtrees; i++) {
tree = new TTree(name[i], "");
tree->Branch("MyBr", "MyClass", &mycl, 64000, 99);
fList->Add(tree);
}//for_i
// Fill trees with data
for (Int_t i=0; i<numtrees; i++) {
tree = (TTree*)fList->At(i);
for (Int_t id=0; id<numentries; id++) {
mycl->SetData(data[id][i]);
tree->Fill();
}//for_id
}//for_i
// Write trees to file
for (Int_t i=0; i<numtrees; i++) {
tree = (TTree*)fList->At(i);
tree->AutoSave();
delete tree;
}//for_i
//-------------------------
On Fri, 20 Dec 2002, cstrato wrote:
> Dear Rooters
>
> I would like to fill many trees at once, i.e. a list
> of trees, with data and tried the following code:
>
> //-------------------------
> // Create trees and store in list
> TTree *tree = 0;
> MyClass *mycl = 0;
> fList->Clear();
> for (Int_t i=0; i<numtrees; i++) {
> tree = new TTree(name[i], "");
> mycl = new MyClass();
> tree->Branch("MyBr", "MyClass", &mycl, 64000, 99);
>
> fList->Add(tree);
> SafeDelete(mycl);
> }//for_i
>
> // Fill trees with data
> for (Int_t id=0; id<numentries; id++) {
> for (Int_t i=0; i<numtrees; i++) {
> tree = (TTree*)fList->At(i);
> mycl = 0;
> TBranch *br = tree->FindBranch("MyBr");
> br->SetAddress(&mycl);
> // tree->SetBranchAddress("MyBr", &mycl);
> mycl->SetData(data[id][i]);
> br->Fill();
> }//for_i
> }//for_id
>
> // Write trees to file
> for (Int_t i=0; i<numtrees; i++) {
> tree = (TTree*)fList->At(i);
> // mycl = 0;
> // tree->SetBranchAddress("MyBr", &mycl);
>
> // write tree to file
> tree->Write("", TObject::kOverwrite);
> tree->Delete(""); //delete tree from memory
> tree = 0;
> }//for_i
> //-------------------------
>
> Although I do not get any error message, the trees are
> never written to the root file, and trying to open the
> file with TBrowser results in a bus error.
>
> Can you tell me what is wrong with my code and how to
> fill many trees at once?
> (I am running root 3.04/01 on MacOS X 1.1.2)
>
> Thank you in advance for your help.
>
> Best regards
> Christian
> _._._._._._._._._._._._._._._._
> C.h.i.s.t.i.a.n S.t.r.a.t.o.w.a
> V.i.e.n.n.a A.u.s.t.r.i.a
> _._._._._._._._._._._._._._._._
>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:24 MET