Closed pl0xz0rz closed 1 year ago
Thanks. Could you add also parsed name to the dictionary? I think we will have name and c++ name (hashed) to avoid clash with the global namespace
In [7]: pprint.pprint(parsed)
{'dependencies': ['array1D0', 'array1D2'],
'implementation': 'ROOT::VecOps::RVec<float> arrayD(ROOT::VecOps::RVec<float> '
'&array1D0, ROOT::VecOps::RVec<float> &array1D2)){\n'
' ROOT::VecOps::RVec<float> result(10);\n'
' for(size_t i=0; i<10; i++){\n'
' result[i] = (array1D0[1+i*1]) - '
'(array1D2[0+i*2]);\n'
' }\n'
' \n'
' return result;\n'
'} ',
'type': 'ROOT::VecOps::RVec<float>'}
There are 2 brackets - the compilation is failing now
In [9]: ROOT.gInterpreter.Declare( parsed["implementation"])
input_line_81:1:107: error: expected function body after function declarator
ROOT::VecOps::RVec<float> arrayD(ROOT::VecOps::RVec<float> &array1D0, ROOT::VecOps::RVec<float> &array1D2)){
^
Out[9]: False
In [3]: pprint.pprint(parsed)
{'dependencies': ['array1D0', 'array1D2'],
'implementation': 'ROOT::VecOps::RVec<float> arrayD(ROOT::VecOps::RVec<float> '
'&array1D0, ROOT::VecOps::RVec<float> &array1D2){\n'
' ROOT::VecOps::RVec<float> result(10);\n'
' for(size_t i=0; i<10; i++){\n'
' result[i] = (array1D0[1+i*1]) - '
'(array1D2[0+i*2]);\n'
' }\n'
' \n'
' return result;\n'
'} ',
'name': 'arrayD',
'type': 'ROOT::VecOps::RVec<float>'}
parsed= makeDefine("arrayD","array1D0[1:10]-array1D2[:20:2]", rdf,3, True) # working
rdf = makeDefineRDFv2("arrayD0", parsed["name"], parsed, rdf, verbose=1) # working warning seconda time
rdf.Snapshot("makeTestRDataFrame","makeTestRDataFrameD0.root")
parsed= makeDefine("arrayDAll","array1D0[:]-array1D2[:]", rdf,3, True) # working
rdf = makeDefineRDFv2("arrayDAall", parsed["name"], parsed, rdf, verbose=1) # working warning second time
rdf.Snapshot("makeTestRDataFrame","makeTestRDataFrameDAll.root")
parsed = makeDefine("arrayCos","cos(array1D0[1:10])", rdf,3, True);
rdf = makeDefineRDFv2("arrayCos0", parsed["name"], parsed, rdf, verbose=1)
rdf.Snapshot("makeTestRDataFrame","makeTestRDataFrameCos0.root");
parsed = makeDefine("arrayCosAll","cos(array1D0[:])", rdf,3, True);
rdf = makeDefineRDFv2("arrayCosAll", parsed["name"], parsed, rdf, verbose=1)
rdf.Snapshot("makeTestRDataFrame","makeTestRDataFrameCosAll.root");
# test 4 - 1D member function failing
parsed = makeDefine("arrayPx","array1DTrack[1:10].Px()", rdf,3, True);
rdf = makeDefineRDFv2("arrayPx", parsed["name"], parsed, rdf, verbose=1)
rdf.Snapshot("makeTestRDataFrame","makeTestRDataFrameArrayPx.root");
In [9]: val = getClassMethod("TParticle","Px")
In [10]: val
Out[10]: ('double ', 'double TParticle::Px()')
Tests are OK. Merging
This PR: