void makeDF(){ auto add_vec_col1 = []( double dummy ){ vector c; c.reserve(10); for( int i = 0; i < 100; ++i){ c.push_back( 1.*i); } return c; }; auto add_vec_col2 = []( double dummy ){ vector c; c.reserve(10); for( int i = 0; i < 100; ++i){ c.push_back( 2.*i); } return c; }; ROOT::RDataFrame df(10); auto last_node = df.Define("dummy", "1."); last_node.Define("val1", add_vec_col1, {"dummy"}) .Define("val2", add_vec_col2, {"dummy"}) .Snapshot("test","test.root"); } using namespace ROOT::VecOps; template class SumVecCol : public ROOT::Detail::RDF::RActionImpl> { public : const int NBSLOTS = N; using Result_t = T; bool m_debug = true; TString m_name; std::shared_ptr fResultSum; std::vector< Result_t > fSumsPerSlot; SumVecCol(TString _name){ m_name = _name; if(m_debug){ std::cout<< "Create with name "<< _name< sum operation? // } } void Initialize() { //No init! Maybe share_ptr making has to go in constructor? } void Finalize(){ std::cout<<"# Booked Custom Action SumVecCol(Finalize)" << std::endl; for( auto & m : fSumsPerSlot){ std::cout<<"Result+=SlotResult"< GetResultPtr() const { // std::cout<<"ResultPtr"<, 100>(); std::cout<<"BOOKIT"<> auto CC = node.Book>(SumVecCol, 100>("test"), {"val1"} ); //.GetValue(); std::cout<<"LOOPING"< res = *CC; for( int i = 0; i < 100; ++i){ std::cout<<"sumW ["<< i << "] = "<< res[i] << std::endl; } }