I’m encountering a TypeError when creating a RooDataSet from a TTree, using code that previously worked without issues a few months ago.
The problematic line seems to be:
R.RooDataSet('data', 'data', t_data, vars)
where
vars = R.RooArgList( mass, mva_score )
...
f_data = R.TFile.Open(file_path)
t_data = f_data.Get("DecayTree")
This used to run fine, but now I get the following error:
Traceback (most recent call last):
File "/data/bfys/mgalati/RapidSim/scripts/PDFandMC.py", line 191, in <module>
pdf_list, N_list = pdfmaker.make_PDFandYields(PDFdecays, vars)
File "/data/bfys/mgalati/RapidSim/scripts/PDFandMC.py", line 152, in make_PDFandYields
pdf_model_X = self.make_PDF(decay, vars)
File "/data/bfys/mgalati/RapidSim/scripts/PDFandMC.py", line 132, in make_PDF
data = R.RooDataSet('data', 'data', t_data, vars) # RooDataSet: holds unbinned data
File "/data/bfys/mgalati/RapidSim/miniforge/envs/bc2taunu/lib/python3.9/site-packages/ROOT/_pythonization/_roofit/_roodataset.py", line 43, in __init__
self._init(*args, **kwargs)
TypeError: none of the 5 overloaded methods succeeded. Full details:
RooDataSet::RooDataSet(RooStringView name, RooStringView title, const RooArgSet& vars, const RooCmdArg& arg1 = {}, const RooCmdArg& arg2 = {}, const RooCmdArg& arg3 = {}, const RooCmdArg& arg4 = {}, const RooCmdArg& arg5 = {}, const RooCmdArg& arg6 = {}, const RooCmdArg& arg7 = {}, const RooCmdArg& arg8 = {}) =>
TypeError: could not convert argument 1
RooDataSet::RooDataSet(RooStringView name, RooStringView title, RooDataSet* data, const RooArgSet& vars, const RooFormulaVar& cutVar, const char* wgtVarName = nullptr) =>
TypeError: takes at least 5 arguments (4 given)
RooDataSet::RooDataSet(RooStringView name, RooStringView title, RooDataSet* data, const RooArgSet& vars, const char* cuts = nullptr, const char* wgtVarName = nullptr) =>
TypeError: could not convert argument 1
RooDataSet::RooDataSet(const RooDataSet& other, const char* newname = nullptr) =>
TypeError: takes at most 2 arguments (4 given)
RooDataSet::RooDataSet() =>
TypeError: takes at most 0 arguments (4 given)
Has something changed recently in PyROOT or ROOT that would explain this?