#include #include #include #include #include struct Event { Int_t nels; Double_t val1[100]; //[nels] Double_t val2[100]; //[nels] }; void complextree() { TFile *file = new TFile("complextree.root","recreate"); TTree *mytree = new TTree("mytree","My data tree"); Event *myevent = new Event; mytree->Branch("DATA",0,"nels/I:val1[nels]/D:val2[nels]/D"); TBranch *branch = mytree->GetBranch("DATA"); branch->GetLeaf("nels")->SetAddress(&myevent->nels); branch->GetLeaf("val1")->SetAddress(myevent->val1); branch->GetLeaf("val2")->SetAddress(myevent->val2); Int_t nevts=10; for (Int_t i=0;inels = gRandom->Poisson(10); for (Int_t j=0;jnels&&j<100;++j) { myevent->val1[j] = gRandom->Uniform(0,1); myevent->val2[j] = gRandom->Gaus(); } mytree->Fill(); } mytree->Write(); mytree->SetDirectory(gROOT); file->Close(); }