[ROOT] Adding Event class for writing TTree with Geant4

From: Christian.Doerr@mpi-hd.mpg.de
Date: Mon Apr 15 2002 - 10:47:54 MEST


Hello everybody!

I think I have a makefile/linking problem with using ROOT classes as part
of a Geant4 simulation.

I'm using a "Recorder class" to collect informations from the simulation
in order to write histograms and save the information in a ROOT Tree. For
transfer the information to the Recorder class and also for filling the
tree, I use my own Event class, named BBRootEvent, derived from TObject
very similar to the Event class from the tutorials. In order to tell
Geant4 that I'm using ROOT I added

CPPFLAGS += `root-config --cflags`
LDFLAGS += `root-config --nonew --libs`

to my Geant4 makefile. Compiling the whole program works fine, but when
trying to link the object files, I get the following message:


Creating/replacing object files in
/home/cdoerr/geant4/tmp/Linux-g++/betabeta/libbetabeta.a
Using global libraries.
Linking betabeta ...
/home/cdoerr/geant4/tmp/Linux-g++/betabeta/libbetabeta.a(BBRootEvent.o):
In function `basic_string<char, string_char_traits<char>,
__default_alloc_template<true, 0> > type_info function':
/home/cdoerr/geant4/betabeta/include/BBRootEvent.hh(.text+0x1f): undefined
reference to `BBRootEvent::Class_Name(void)'
/home/cdoerr/geant4/tmp/Linux-g++/betabeta/libbetabeta.a(BBRootEvent.o):
In function `BBRootEvent::BBRootEvent(void)':
/home/cdoerr/geant4/betabeta/src/BBRootEvent.cc:18: undefined reference to
`BBRootEvent::ShowMembers(TMemberInspector &, char *)'
/home/cdoerr/geant4/betabeta/src/BBRootEvent.cc:18: undefined reference to
`BBRootEvent::Streamer(TBuffer &)'
/home/cdoerr/geant4/tmp/Linux-g++/betabeta/libbetabeta.a(BBRootEvent.o):
In function `basic_string<char, string_char_traits<char>,
__default_alloc_template<true, 0> > type_info function':
/home/cdoerr/geant4/betabeta/include/BBRootEvent.hh(.BBRootEvent::gnu.linkonce.t.StreamerNVirtual(TBuffer
&)+0x12): undefined reference to `BBRootEvent::Streamer(TBuffer &)'
collect2: ld returned 1 exit status
make: *** [/home/cdoerr/bin/Linux-g++/betabeta] Error 1



Everything (except for writing the TTree) works fine if I omit the line

ClassDef(BBRootEvent,1) //BBRootClass


I don't know anything about linking and very little about makefiles, so
I'd be really happy for any kind of advice to solve this problem....
Thanks a lot!!

Cheers, Christian

-----------------------------------------------------------
Christian Doerr
Max-Planck-Institut fuer Kernphysik, Heidelberg
Bothe-Labor, room 232                phone: +49-6221-516-259
email: C.Doerr@mpi-hd.mpg.de         www.christiandoerr.de
-----------------------------------------------------------



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:50 MET