Home | News | Documentation | Download

Hadd no dictionary for class is available


Please read tips for efficient and successful posting and posting code

I am wondering how to clean the warning message when merging root file contains custom class. For example, I use $ROOTSYS/tutorials/tree/jets.C to generate 2 JetEvent.root (copy and rename), and I want to add them using hadd

hadd JetEventCombine.root JetEvent*.root

The output will give warn like

hadd Target file: JetEventCombine.root
hadd compression setting for all output: 1
hadd Source file 1: JetEvent1.root
Warning in <TClass::Init>: no dictionary for class JetEvent is available
Warning in <TClass::Init>: no dictionary for class Jet is available
Warning in <TClass::Init>: no dictionary for class Track is available
Warning in <TClass::Init>: no dictionary for class Hit is available
hadd Source file 2: JetEvent2.root
hadd Target path: JetEventCombine.root:/

Could these message be ignored or be cleaned by making hadd know where the dictionary of the custom class is placed before running.

ROOT Version: 6.22.06
Platform: Scientific Linux 7
Compiler: gcc 9.1.0


@pcanal could you give a suggestion if these messages are ignored or dictionary should be available at this point, please?

Those classes (from the tutorials directory) do not have any customization of the I/O and thus it is safe to ignore those error. Furthermore hadd is in this case using the fast cloning with does not even stream the object (it just copy the compressed bytes).

In general to remove those error you will have to make sure that a library (and its rootmap file, for older releases) that implements the classes is on the LD_LIBRARY_PATH.