I’m struggling currently with PyROOT and trying to create a RooDataHist from a TH2D. The creation from a TTree works like charm, but when I try to initialize the RooDataHist with the 2D histogram it fails to convert the argument:
hs=getH2FromTree(11,"saveHPS/cands","sumpt:mp","nlep==3",nbin,bmin,bmax,nbin,bmin,bmax,lumi)
mp=RooRealVar("mp","Mass",10,500)
sumpt=RooRealVar("sumpt","Scalar sum of pT",0,500)
data=RooDataHist("data","data",RooArgSet(mp,sumpt),hs)
Traceback (most recent call last):
File "./test2DRooFit.py", line 22, in <module>
data=RooDataHist("data","data",RooArgSet(mp,sumpt),hs)
TypeError: none of the 8 overloaded methods succeeded. Full details:
RooDataHist::RooDataHist() =>
takes at most 0 arguments (4 given)
RooDataHist::RooDataHist(const char* name, const char* title, const RooArgSet& vars, const char* binningName = 0) =>
could not convert argument 4 (expected string or Unicode object, TH2D found)
RooDataHist::RooDataHist(const char* name, const char* title, const RooArgList& vars, const RooCmdArg& arg1, const RooCmdArg& arg2 = RooCmdArg(), const RooCmdArg& arg3 = RooCmdArg(), const RooCmdArg& arg4 = RooCmdArg(), const RooCmdArg& arg5 = RooCmdArg(), const RooCmdArg& arg6 = RooCmdArg(), const RooCmdArg& arg7 = RooCmdArg(), const RooCmdArg& arg8 = RooCmdArg()) =>
could not convert argument 3
RooDataHist::RooDataHist(const RooDataHist& other, const char* newname = 0) =>
takes at most 2 arguments (4 given)
RooDataHist::RooDataHist(const char* name, const char* title, const RooArgSet& vars, const RooAbsData& data, Double_t initWgt = 1.0) =>
could not convert argument 4
RooDataHist::RooDataHist(const char* name, const char* title, const RooArgList& vars, const TH1* hist, Double_t initWgt = 1.0) =>
could not convert argument 3
RooDataHist::RooDataHist(const char* name, const char* title, const RooArgList& vars, RooCategory& indexCat, map<std::string,TH1*> histMap, Double_t initWgt = 1.0) =>
takes at least 5 arguments (4 given)
RooDataHist::RooDataHist(const char* name, const char* title, const RooArgList& vars, RooCategory& indexCat, map<std::string,RooDataHist*> dhistMap, Double_t wgt = 1.0) =>
takes at least 5 arguments (4 given)
The reason I wanted to use TH2D is that it’s a combination of a lot of trees with correct weights. If I can create a RooDataSet with say 10 trees each with a fixed weight attached to it, then that’s an alternative…