Problem with dictionaries in ROOT6

I am using root classes to read G4 output and save it in root file. Code works well in ROOT5, but in ROOT6 during run I have the following error report:

Error in <Error in TClass::LoadClassInfo: no interpreter information for class neudet::RootEvent is available even though it has a TClass initialization routine.
#line 1 “neudetDict dictionary payload”

#ifndef G__VECTOR_HAS_CLASS_ITERATOR
#define G__VECTOR_HAS_CLASS_ITERATOR 1
#endif
#ifndef G4_9_5
#define G4_9_5 1
#endif
#ifndef G4_9_2
#define G4_9_2 1
#endif
#ifndef G4_VER_9
#define G4_VER_9 1
#endif
#ifndef G4LIB_USE_GDML
#define G4LIB_USE_GDML 1
#endif
#ifndef G4VERBOSE
#define G4VERBOSE 1
#endif
#ifndef G4_STORE_TRAJECTORY
#define G4_STORE_TRAJECTORY 1
#endif
#ifndef G4UI_USE_TCSH
#define G4UI_USE_TCSH 1
#endif
#ifndef G4UI_USE
#define G4UI_USE 1
#endif
#ifndef G4VIS_USE_ASCIITREE
#define G4VIS_USE_ASCIITREE 1
#endif
#ifndef G4VIS_USE_DAWNFILE
#define G4VIS_USE_DAWNFILE 1
#endif
#ifndef G4VIS_USE_GMOCRENFILE
#define G4VIS_USE_GMOCRENFILE 1
#endif
#ifndef G4VIS_USE_HEPREPFILE
#define G4VIS_USE_HEPREPFILE 1
#endif
#ifndef G4VIS_USE_RAYTRACER
#define G4VIS_USE_RAYTRACER 1
#endif
#ifndef G4VIS_USE_VRMLFILE
#define G4VIS_USE_VRMLFILE 1
#endif
#ifndef G4VIS_USE_OPENGLX
#define G4VIS_USE_OPENGLX 1
#endif
#ifndef G4VIS_USE_OPENGL
#define G4VIS_USE_OPENGL 1
#endif
#ifndef G4VIS_USE
#define G4VIS_USE 1
#endif

#define _BACKWARD_BACKWARD_WARNING_H
#include “…/include/NeuDetG4/PrimaryParticle.hh”
#include “…/include/NeuDetG4/RootEvent.hh”

#undef _BACKWARD_BACKWARD_WARNING_H

Error in TInterpreter::AutoParse: Error parsing payload code for class neudet::RootConf with content:
TInterpreter::AutoParse>: Error parsing payload code for class neudet::RootEvent with content:
Error in TClass::LoadClassInfo: no interpreter information for class neudet::RootConf is available even though it has a TClass initialization routine.
Error in TTree::Bronch: Cannot find dictionary for class: neudet::RootConf

Dictionary compiled with the command:

rootcling -f neudetDict.cc -c -I…/include -I…/include/NeuDetG4 -I/usr/local_soft/vgm/pro/include -DG4_9_5 -DG4_9_2 -DG4_VER_9 -I/usr/local_soft/geant4/4.10.04
/include/Geant4 -DG4LIB_USE_GDML -DG4VERBOSE -DG4_STORE_TRAJECTORY -DG4UI_USE_TCSH -DG4UI_USE -DG4VIS_USE_ASCIITREE -DG4VIS_USE_DAWNFILE -DG4VIS_USE_GMOCRENFILE -DG
4VIS_USE_HEPREPFILE -DG4VIS_USE_RAYTRACER -DG4VIS_USE_VRMLFILE -DG4VIS_USE_OPENGLX -DG4VIS_USE_OPENGL -DG4VIS_USE -I/usr/local_soft/danss/NeuDetEvent/pro/include
-I/usr/local_soft/danss/NeuDetGeom/pro/include -I/usr/local_soft/danss/TDGen/pro/include -I/usr/local_soft/danss/TDGen/pro/llnl_fission/include -I/usr/local_soft/
gsl/2.4/include -I/usr/local_soft/danss/VerGen/pro/include -I/usr/local_soft/danss/NemoTools/pro/include -I/usr/local_soft/root/v6.10.08/include -I/usr/local_so
ft/clhep/pro/include …/include/NeuDetG4/PrimaryParticle.hh …/include/NeuDetG4/RootEvent.hh …/include/NeuDetG4/neudetg4LinkDef.h

LinkDef:

#ifdef CINT

#pragma link off all globals;
#pragma link off all classes;
#pragma link off all functions;

#pragma link C++ class neudet::Primary+;
#pragma link C++ class neudet::ScinStripHit+;
#pragma link C++ class neudet::RootEvent+;
#pragma link C++ class neudet::RootConf+;
#endif

Code
RootEvent.hh (7.4 KB)

Code
RootEvent.cc (7.7 KB)

Sorry for separate message due to limitation of the forum

Hi,

where are the headers you depend on, namely PrimaryParticle.hh and RootEvent.hh?
They should be in a directory part of the variable ROOT_INCLUDE_PATH, analogous to the LD_LIBRARY_PATH.
This is because headers need to be parsed at realtime.

Cheers,
D

Hi Danilo!

Thanks for answer! I have tried

[shitov@nu76-78 pro]$ export ROOT_INCLUDE_PATH=/usr/local_soft/danss/NeuDetG4/pro/include/NeuDetG4
[shitov@nu76-78 pro]$ ls $ROOT_INCLUDE_PATH/PrimaryParticle.hh
/usr/local_soft/danss/NeuDetG4/pro/include/NeuDetG4/PrimaryParticle.hh
[shitov@nu76-78 pro]$ ls $ROOT_INCLUDE_PATH/RootEvent.hh
/usr/local_soft/danss/NeuDetG4/pro/include/NeuDetG4/RootEvent.hh

and run the executable (standalone with compiled ROOT libs) - it reports the same error messages.

If it helps, the class is compiled in standalone library (Makefile.am code):

lib_LTLIBRARIES = librootevent.la
nodist_librootevent_la_SOURCES =
neudetDict.cc
PrimaryParticle.cc
RootEvent.cc
$(loc_incl)/RootEvent.hh
librootevent_la_CXXFLAGS = $(INCLUDES)

neudetDict.cc:
$(loc_incl)/PrimaryParticle.hh
$(loc_incl)/RootEvent.hh
$(loc_incl)/neudetg4LinkDef.h
rootcling -f $@ -c $(INCLUDES1) $^

and then main program with this lib.

Hi,

could you check that there are no include guards whichare identical for the files included?

Cheers,
D

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.