Hey there. I’m looking to do something like a DataFrame apply to a RooDataSet in order to add a new column.
Vectorised operations can be done on pandas DataFrames in ways like the following:
import pandas as pd
df = pd.DataFrame(columns = ['a', 'b'])
df['a'] = [1, 2, 3]
df['b'] = [1, 2, 3]
df['c'] = df['a'] + df['b']
df['d'] = df.apply(lambda row: row['c']**2, axis=1)
Particularly, the apply method can be used to add a new column in a vectorised sort of way, avoiding looping over rows and so on.
How might a column be added to a RooDataSet in a similar sort of way?
from ROOT import RooArgSet, RooDataSet, RooRealVar
a = RooRealVar('a', 'a', -10, 10)
b = RooRealVar('b', 'b', -10, 10)
varset = RooArgSet(a, b)
ds = RooDataSet('ds', 'dataset', varset)
for entry in [1, 2, 3]:
a.setVal(entry)
b.setVal(entry)
ds.add(RooArgSet(a, b))
for row_index in list(range(0, ds.numEntries())):
ds.get(row_index)
row.Print('v')