I’ve made an RDataframe on TTrees across 1k files within Python so I can define new columns and files. The difficult part is after some Defines / Filters I want to Snapshot the results into a small file so I don’t have to re-filter across my Gbs of data every time.
However, a snapshot fails with:
The class requested (ROOT::VecOps::RVec<vector<double> >) for the branch "pixel_reset" is an instance of an stl collection and does not have a compiled CollectionProxy. Please generate the dictionary for this collection (ROOT::VecOps::RVec<vector<double> >) to avoid to write corrupted data. ___ _Please read [tips for efficient and successful posting](https://root-forum.cern.ch/t/tips-for-efficient-and-successful-posting/28292) and [posting code](https://root-forum.cern.ch/t/posting-code-read-this-first/28293)_
I have tried the following to no avail:
building a G__dictionary against my linkdef:
#include <ROOT/RVec.hxx> #include <vector> #ifdef __ROOTCLING__ #pragma link C++ class vector<vector <float> >+; #pragma link C++ class vector<vector <double> >+; #pragma link C++ class RVec<vector <double> >+; // no linking difference from // #pragma link C++ class ROOT::VecOps::RVec<vector <double> >+; #endif
and loading with
ROOT.gSystem.Load("libmyDict.so") // with pcm file in directory too
Fails with the same error.
Creating an object of the specified type fails.
Given any tree with branch of type:
as shown with:
…How do I get this rdf to snapshot with these branches??
Reproduce by PyROOT:
import ROOT rdf = ROOT.RDrameFrame("myStupidTree", "myPoorlyconstructedFile.root") rdf.Snapshot("whatever", "slightlyLessWorse.root")
ROOT Version: ROOT Version: 6.27/01
Compiler: c++ (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0