Hi Mariusz, call tree->Fill, not branch->Fill. I assume that your RunHeader branch is small. The overhead of copying this info at each event into the run branch buffer should be small. The compression algorithm will take care of automatically removing duplicate data in the buffer. Just try! If the Runheader has a non negligible overhead, make a separate tree with an entry per run. Rene Brun On Mon, 30 Sep 2002, Mariusz Sapinski wrote: > > Hello Rene, > thank you, in fact i had a bug in makefile. > Just another small question: RunHeader should be filled only once, while > Event should be filled every event. tree->Fill() fills all branches at the > same time. I tried branch->Fill() but it seems not to work correctly. Is > there any way to fill branches independently? > > A+, > > Mariusz > > > > On Mon, 30 Sep 2002, Rene Brun wrote: > > > Hi Mariusz, > > > > You forgot to generate/link the dictionary. > > You can see an example in the $ROOTSYS/test/Makefile > > or simply in the few lines below; > > > > g++ -g -Wall -fPIC -I$ROOTSYS/include -c MainEvent.cxx > > rootcint -f EventDict.cxx -c Event.h EventLinkDef.h > > g++ -g -Wall -fPIC -I$ROOTSYS/include -c EventDict.cxx > > g++ -g -Wall -fPIC -I$ROOTSYS/include -c Event.cxx > > g++ -shared -O Event.o EventDict.o -o libEvent.so > > g++ -o Event MainEvent.o Event.o EventDict.o -L$ROOTSYS/lib \ > > -lCore -lCint -lTree -lHist -lMatrix -lPhysics -lGraf -lm -ldl > > > > Rene Brun > > > > On Mon, 30 Sep 2002, Mariusz Sapinski wrote: > > > > > > > > Hello Rooters, > > > > > > I'd like to create a tree with RunHeader (one per run, ie. one per root > > > file) and with Events. I've created 2 classes: RunHeader and Event, both > > > following the example in $ROOTSYS/tests/. For both of them i can produce > > > dictionary and shared library. But when i link whole program i get the > > > message: > > > RunHeader.o: In function `RunHeader::Dictionary(void)': > > > RunHeader.o(.text+0x32): undefined reference to `RunHeader::Class_Name(void)' > > > RunHeader.o: In function `operator>>(TBuffer &, RunHeader const *&)': > > > RunHeader.o(.text+0x6d): undefined reference to `operator>>(TBuffer &, > > > RunHeader *&)' > > > RunHeader.o(.gnu.linkonce.d.__vt_9RunHeader+0xc0): undefined reference to > > > `RunHeader::ShowMembers(TMemberInspector &, char *)' > > > RunHeader.o(.gnu.linkonce.d.__vt_9RunHeader+0xc4): undefined reference to > > > `RunHeader::Streamer(TBuffer &)' > > > RunHeader.o: In function `RunHeader::StreamerNVirtual(TBuffer &)': > > > RunHeader.o(.RunHeader::gnu.linkonce.t.StreamerNVirtual(TBuffer &)+0x1d): > > > undefined reference to `RunHeader::Streamer(TBuffer &)' > > > collect2: ld returned 1 exit status > > > > > > So in principle i got 2 questions. > > > 1. Is my approach correct (to have 2 classes, both heritaging from > > > TObject) > > > 2. if(1 == 'yes') { printf("where is the source of my problem?\n"); } > > > > > > Thanks in advance (i always get an answer here so i can safely thank in > > > advance), > > > > > > Mariusz > > > > > > >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:12 MET