Hi David, You use a TMatrixD object in your top level branch using the default split mode. A TMatrixD object cannot be split. Your program will work if you replace the line: tree->Branch("data","TVectorD",&data) ; by tree->Branch("data","TVectorD",&data,16000,0) ; Rene Brun On Wed, 20 Mar 2002, David Chamont wrote: > Hi, > > The program below does not work (I use Root 3.03.02) > More or less the same with TVectorD is working fine. > Help welcome. > > David C. > > > > #include <TROOT.h> > #include <TFile.h> > #include <TTree.h> > #include <TMatrixD.h> > #include <iostream> > > void main() > { > TROOT rdummy("dummy","dummy") ; > TFile * file = 0 ; > TTree * tree = 0 ; > TMatrixD * data = 0 ; > > file = new TFile("dummy.root","recreate") ; > tree = new TTree("tree","dummy") ; > tree->Branch("data","TVectorD",&data) ; > data = new TMatrixD(2,2) ; > (*data) = 1 ; > tree->Fill() ; > data = new TMatrixD(3,3) ; > (*data) = 2 ; > tree->Fill() ; > tree->Write() ; > delete data ; > data = 0 ; > delete file ; > > file = new TFile("dummy.root","read") ; > tree = (TTree *)file->Get("tree") ; > tree->SetBranchAddress("data",&data) ; > Int_t nbentries = (Int_t)tree->GetEntries() ; > for ( Int_t entry = 0 ; entry < nbentries ; ++entry ) > { > tree->GetEntry(entry) ; > Int_t nb = data->GetNrows() ; > for ( Int_t i = 0 ; i < nb ; ++i ) > { cout<<((*data)(i,0))<<' ' ; } > cout<<endl ; > } > delete data ; > data = 0 ; > delete file ; > > return 0 ; > } > >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:46 MET