I’m trying to set up a very simple simultaneous fit, and need a combined RooDataSet with categories. I tried:
from ROOT import RooRealVar, RooPolynomial, RooCategory, RooFit, RooDataSet, RooArgSet
# Declare observable
x = RooRealVar("x","x",2.,-10,10)
x.setBins(40)
# Construction a uniform pdf
p0 = RooPolynomial("px","px",x)
# Sample 1000 events from pdf
data1 = p0.generate(RooArgSet(x),1000)
data2 = p0.generate(RooArgSet(x),1000)
# Define categories
myCats = RooCategory("categories","categories")
myCats.defineType("Cat1")
myCats.defineType("Cat2")
# Make a combined dataset
combData = RooDataSet("combData","combined data" , RooArgSet(x) ,
RooFit.Import("Cat1",data1) ,
RooFit.Import("Cat2",data2) ,
RooFit.Index(myCats) )# , RooFit::WeightVar(weighting) ) ;
But this fails with:
[#0 ] ERROR:InputArguments – RooDataSet::ctor(combData) ERROR: missing arguments: IndexCat
What am I doing wrongly?
Kudos to @chrisburr who solved this for me.
Turns out not all RooCmdArgs are created equal, and the RooFit::Index() command has to come before any RooFit::Import() commands. Actually, it can also come after the first one. From Chris:
combData = RooDataSet("combData","combined data" , RooArgSet(x), RooFit.Index(myCats), RooFit.Import("Cat1",data1), RooFit.Import("Cat2",data2))
Interestingly putting Index in between of the Import arguments also works so there must be a quirk in how the arguments are processed:
combData = RooDataSet("combData","combined data" , RooArgSet(x), RooFit.Import("Cat1",data1), RooFit.Index(myCats), RooFit.Import("Cat2",data2))
ROOT devs, this isn’t obvious from the documentation… can you fix it?
1 Like
moneta
August 28, 2018, 8:30pm
3
Hi,
I guess this is a PyROOT only issue. Have you tried in C++ ?
Lorenzo
Hi,
No, this is a problem with both PyROOT and regular C++ (which is where I first encountered it)
Dan
moneta
August 29, 2018, 9:47pm
5
Hi
Thank you. Could you please then open a JIRA bug for this ?
It is then a bug in the parsing and it should be possible to fix
Lorenzo
system
Closed
September 21, 2018, 11:38am
7
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
This problem is fixed in the soon-to-be-released ROOT v6.16.