Hi Yannick, AS shown in the Event example, you must pass the address of the pointer and not the value when creating the branch. I have modified two lines in your program below. See lines marked //<========= Rene Brun On Fri, 5 Nov 1999, Patois Yannick wrote: > Hi, > > I must have missed someting in the way ROOT class I/O can be > implemented. I really dont understand why this code doesnt work. > > It does compile, link and run, but the values are not stored and/or read > properly. > > I spent a lot of time around this problem, looking into the 'Event' > exemple and such, but I'm really stuck... > > Any idea ? > > >>> File little_test.cpp > > #include <TROOT.h> > #include <TFile.h> > #include <TTree.h> > > #include "my_event.H" > > main ( int argc , char **argv ) { > TROOT manip_event("test","Test analysis"); > my_event *the_event = new my_event; > if (argc<2) { > TFile *root_file = new TFile("toto.root","RECREATE","Test events"); > TTree *test_tree = new TTree("test_tree","Test manip events"); > test_tree->Branch("brut_tsol","my_event",&the_event); //<=========== > for (int i=0;i<10;i++) { > the_event->set(i); > test_tree->Fill(); > } > root_file->Write(); > root_file->Close(); > delete root_file; > } > else { > TFile *hfile = new TFile("toto.root"); > TTree *tree = (TTree*)hfile->Get("test_tree"); > TBranch *branch = tree->GetBranch("brut_tsol"); > branch->SetAddress(&the_event); //<================ > Int_t nentries = (Int_t)tree->GetEntries(); > for (int ev = 0; ev < nentries; ev++) { > tree->GetEvent(ev); > the_event->print(); > } > } > } > > > >>> File my_event.cpp > > #include <iostream.h> > #include <TROOT.h> > #include <TNtuple.h> > #include "my_event.H" > ClassImp(my_event); > my_event:: my_event(void) {;} > my_event::~my_event(void) {;} > void my_event::set(int a) { T1=a; T2=2*a; } > void my_event::print(void) { cout << T1 << " " << T2 << endl; } > > >>> File my_event.H > > #ifndef __my_event__ > #define __my_event__ > class my_event : public TObject { > public: > my_event (void); > ~my_event(void); > public: > Float_t T1; > Float_t T2; > void set (int a); > void print(void); > ClassDef(my_event,1) // The macro > }; > #endif > > >>> File Makefile > > CPC = CC -compat=4 > LD = CC -compat=4 > CPCflags = $(shell root-config --cflags) > ldflags = $(shell root-config --libs) > > OBJTEST = little_test.o my_event.o > OBJDICT = my_event.dict_o > MYTEST = mytest > > all: $(MYTEST) > > $(MYTEST): $(OBJTEST) $(OBJDICT) > @$(LD) $(OBJTEST) $(OBJDICT) $(ldflags) -o $(MYTEST) > > .SUFFIXES : > .SUFFIXES : .cpp .H .C .dict_o .o > > .cpp.o: > @echo compilation of $< > $(CPC) $(CPCflags) $< -c -o $@ > > .H.C: > @echo "Generating dictionary ..." > @rootcint $@ -c $< > > .C.dict_o: > @echo compilation of dico $< > $(CPC) $(CPCflags) $< -c -o $@ > > ------------- > All that was tryed with : > > $ uname -a > SunOS gansrx 5.6 Generic_105181-08 sun4u sparc SUNW,Ultra-1 > > root says: > * Version 2.23/08 2 November 1999 * > (btw, why not adding a --version option to the root program ?) > > I modified the RConfig.h file as Bruce O'NEEL suggested to be able to > compile with the SUN CC5.0 compiler in compat mode. > > > _/ Yannick Patois _________________ Address (home) __________________ > | irc(undernet): Garp on #france25+ | La Villa des Sciences | > | email : patois@ganil.fr | 12, avenue de Cambridge | > | web :http://www.sura.org/~patois/ | 14200 Herouville-Saint-Clair | > | Tel/Fax-home:+33 (0)2 31 94 50 32 | FRANCE | > |___________________________________|__________________________________| > >
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:42 MET