Hi, I have a macro that works fine when I use root.exe to launch it and ACLiC to compile it. I normally do:
root “do_ana.C(121)” and do_ana.C contains:
#if defined(__CINT__) && !defined(__MAKECINT__) #include "Utility.C+" #include "JFTrackFit.C+" #include "daqT.C+" #include "MydaqT.C+" #include "t2x.C+" #endif
In JFTrackFit.h I define a POD class called “Hot”, and I use std::map<Int_t, Hot> containers. In MydaqT.C (from MakeClass) I create a TTree and create a branch that stores such an std::map<Int_t, Hot>. This all works as expected.
I am now trying to compile my whole analysis code using clang++ and a Makefile into a separate binary because I wish to analyze it with valgrind and XCode’s Instruments. Everything compiles and links, but I get this error when running:
Error in <TTree::Branch>: The pointer specified for output_vars is not of a class or type known to ROOT Error in <TTree::Branch>: The class requested (map<Int_t,Hot>) for the branch "track_hots" refer to an stl collection and do not have a compiled CollectionProxy. Please generate the dictionary for this class (map<Int_t,Hot>)
Now I know how to generate a dictionary (many examples in ROOTTalk and on the website), and it obviously works when using root.exe and ACLiC. But what can I put in the Makefile to link the dictionary properly so that the map is stored in the TTree? The program runs despite the error, but the produced TTree is not valid and I can’t access its data (if it has any).
I have attached my Makefile so people can see how I compile & link my code.
Thanks for any help.
Makefile.txt (1.06 KB)