126static std::map<RooAbsData*,int>
_dcc ;
135 cout <<
"Composite storage is not a valid *default* storage type." << endl;
183 throw std::runtime_error(
"RooAbsData::initializeVars(): the variables are already initialized!");
187 for (
const auto var : vars) {
188 if (!var->isFundamental()) {
189 coutE(InputArguments) <<
"RooAbsDataStore::initialize(" <<
GetName()
190 <<
"): Data set cannot contain non-fundamental types, ignoring " << var->GetName()
192 throw std::invalid_argument(std::string(
"Only fundamental variables can be placed into datasets. This is violated for ") + var->GetName());
199 for (
auto var :
_vars) {
210 _vars(
"Dataset Variables"),
211 _cachedVars(
"Cached Variables"),
235 TNamed(newname ? newname : other.GetName(),other.GetTitle()),
237 _cachedVars(
"Cached Variables"),
238 _namePtr(newname ?
RooNameReg::instance().constPtr(newname) : other._namePtr)
245 for (
auto var :
_vars) {
254 map<string,RooAbsDataStore*> smap ;
258 smap[itero.first] = dclone->
store();
279 RooPrintable::operator=(other);
287 for (
const auto var :
_vars) {
288 var->attachDataSet(*
this) ;
296 map<string,RooAbsDataStore*> smap ;
300 smap[itero.first] = dclone->
store();
344 delete iter->second ;
365 bool ret =
_dstore->changeObservableName(from,to) ;
408 _dstore->cacheArgs(cacheOwner,varSet,nset,skipZeroWeights) ;
425 _dstore->attachCache(newOwner, cachedVars) ;
432 _dstore->setArgStatus(set,active) ;
469 pc.
defineInt(
"evtStart",
"EventRange",0,0) ;
470 pc.
defineInt(
"evtStop",
"EventRange",1,std::numeric_limits<int>::max()) ;
471 pc.
defineSet(
"varSel",
"SelectVars",0,0) ;
475 pc.
process(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) ;
481 const char* cutRange = pc.
getString(
"cutRange",0,
true) ;
482 const char* cutSpec = pc.
getString(
"cutSpec",0,
true) ;
485 Int_t nStop = pc.
getInt(
"evtStop",std::numeric_limits<int>::max()) ;
488 const char* title = pc.
getString(
"title",0,
true) ;
493 varSubset.
add(*varSet) ;
494 for (
const auto arg : varSubset) {
496 coutW(InputArguments) <<
"RooAbsData::reduce(" <<
GetName() <<
") WARNING: variable "
497 << arg->GetName() <<
" not in dataset, ignored" << endl ;
509 ret =
reduceEng(varSubset,&cutVarTmp,cutRange,nStart,nStop) ;
513 ret =
reduceEng(varSubset,cutVar,cutRange,nStart,nStop) ;
517 if (!ret)
return nullptr;
564 for (
const auto arg : varSubset) {
566 coutW(InputArguments) <<
"RooAbsData::reduce(" <<
GetName() <<
") WARNING: variable "
567 << arg->GetName() <<
" not in dataset, ignored" << endl ;
573 if (cut && strlen(cut)>0) {
575 ret =
reduceEng(varSubset2,&cutVar,0,0,std::numeric_limits<std::size_t>::max());
577 ret =
reduceEng(varSubset2,0,0,0,std::numeric_limits<std::size_t>::max());
596 coutW(InputArguments) <<
"RooAbsData::reduce(" <<
GetName() <<
") WARNING: variable "
597 << arg->GetName() <<
" not in dataset, ignored" << endl ;
602 RooAbsData* ret =
reduceEng(varSubset2,&cutVar,0,0,std::numeric_limits<std::size_t>::max()) ;
635 coutW(DataHandling) <<
"'RooAbsData::createHistogram' is deprecated and will be removed in ROOT v6.30: "
636 <<
"Use the overload of 'RooAbsData::createHistogram' that takes RooFit command arguments."
640 const auto varNames =
ROOT::Split(varNameList,
",:");
642 RooRealVar* vars[3] = {
nullptr,
nullptr,
nullptr};
644 for (
unsigned int i = 0; i < varNames.size(); ++i) {
646 coutW(InputArguments) <<
"RooAbsData::createHistogram(" <<
GetName() <<
"): Can only create 3-dimensional histograms. Variable "
647 << i <<
" " << varNames[i] <<
" unused." << std::endl;
653 coutE(InputArguments) <<
"RooAbsData::createHistogram(" <<
GetName() <<
") ERROR: dataset does not contain an observable named " << varNames[i] << std::endl;
659 coutE(InputArguments) <<
"RooAbsData::createHistogram(" <<
GetName() <<
"): No variable to be histogrammed in list '" << varNameList <<
"'" << std::endl;
663 if (xbins<=0 || !vars[0]->hasMax() || !vars[0]->hasMin() ) {
670 if (ybins<=0 || !vars[1]->hasMax() || !vars[1]->
hasMin() ) {
677 if (zbins<=0 || !vars[2]->hasMax() || !vars[2]->
hasMin() ) {
738 const auto varNames =
ROOT::Split(varNameList,
",:");
739 RooRealVar* vars[3] = {
nullptr,
nullptr,
nullptr};
741 for (
unsigned int i = 0; i < varNames.size(); ++i) {
743 coutW(InputArguments) <<
"RooAbsData::createHistogram(" <<
GetName() <<
"): Can only create 3-dimensional histograms. Variable "
744 << i <<
" " << varNames[i] <<
" unused." << std::endl;
750 coutE(InputArguments) <<
"RooAbsData::createHistogram(" <<
GetName() <<
") ERROR: dataset does not contain an observable named " << varNames[i] << std::endl;
756 coutE(InputArguments) <<
"RooAbsData::createHistogram(" <<
GetName() <<
"): No variable to be histogrammed in list '" << varNameList <<
"'" << std::endl;
825 const char* cutSpec = pc.
getString(
"cutString",0,
true) ;
826 const char* cutRange = pc.
getString(
"cutRange",0,
true) ;
847 ownedCmds.
Add(bincmd) ;
848 argList.
Replace(autoRD,bincmd) ;
859 ((
RooCmdArg*)argList.
find(
"YVar"))->subArgs().Replace(autoRDY,bincmd) ;
872 ((
RooCmdArg*)argList.
find(
"ZVar"))->subArgs().Replace(autoRDZ,bincmd) ;
894 string prodName(
"(") ;
895 for(
auto * arg : catSet) {
898 if (varsArg != 0) catSet2.
add(*varsArg) ;
899 else catSet2.
add(*arg) ;
900 if (prodName.length()>1) {
903 prodName += arg->GetName() ;
905 coutW(InputArguments) <<
"RooAbsData::table(" <<
GetName() <<
") non-RooAbsCategory input argument " << arg->GetName() <<
" ignored" << endl ;
911 return table(tmp,cuts,opts) ;
965 if (order==1)
return 0 ;
966 if (order==2)
return 1 ;
983 double offset = order>1 ?
moment(var,1,cutSpec,cutRange) : 0 ;
999 coutE(InputArguments) <<
"RooDataSet::moment(" <<
GetName() <<
") ERROR: unknown variable: " << var.
GetName() << std::endl;
1003 auto varPtr =
dynamic_cast<const RooRealVar*
>(arg);
1006 coutE(InputArguments) <<
"RooDataSet::moment(" <<
GetName() <<
") ERROR: variable " << var.
GetName() <<
" is not of type RooRealVar" << endl ;
1012 coutE(InputArguments) <<
"RooDataSet::moment(" <<
GetName() <<
") WARNING: empty dataset" << endl ;
1017 std::unique_ptr<RooFormula> select;
1019 select = std::make_unique<RooFormula>(
"select",cutSpec,*
get());
1027 if (select && select->eval()==0) continue ;
1028 if (cutRange && vars->
allInRange(cutRange)) continue ;
1044 coutE(InputArguments) <<
"RooDataSet::" << methodname <<
"(" <<
GetName() <<
") ERROR: variable : " << extVar.
GetName() <<
" is not in data" << endl ;
1049 coutE(InputArguments) <<
"RooDataSet::" << methodname <<
"(" <<
GetName() <<
") ERROR: variable : " << extVar.
GetName() <<
" is not of type RooRealVar in data" << endl ;
1063 if (!xdata||!ydata)
return 0 ;
1067 coutW(InputArguments) <<
"RooDataSet::" << (corr?
"correlation":
"covariance") <<
"(" <<
GetName() <<
") WARNING: empty dataset, returning zero" << endl ;
1075 double xysum(0),xsum(0),ysum(0),x2sum(0),y2sum(0);
1079 if (select && select->
eval()==0) continue ;
1080 if (cutRange && vars->
allInRange(cutRange)) continue ;
1084 ysum +=
weight()*ydata->getVal() ;
1087 y2sum +=
weight()*ydata->getVal()*ydata->getVal() ;
1101 if (select)
delete select ;
1105 return (xysum-xsum*ysum)/(sqrt(x2sum-(xsum*xsum))*sqrt(y2sum-(ysum*ysum))) ;
1107 return (xysum-xsum*ysum);
1117 for(
auto * var : static_range_cast<RooRealVar*>(vars)) {
1122 varList.
add(*datavar) ;
1128 coutW(InputArguments) <<
"RooDataSet::covariance(" <<
GetName() <<
") WARNING: empty dataset, returning zero" << endl ;
1133 std::unique_ptr<RooFormula> select = cutSpec ? std::make_unique<RooFormula>(
"select",cutSpec,*
get()) :
nullptr;
1136 std::vector<double> xsum(varList.
size()) ;
1137 std::vector<double> x2sum(varList.
size()) ;
1142 if (select && select->eval()==0) continue ;
1143 if (cutRange && dvars->
allInRange(cutRange)) continue ;
1145 for(std::size_t ix = 0; ix < varList.
size(); ++ix) {
1146 auto varx =
static_cast<RooRealVar const&
>(varList[ix]);
1147 xsum[ix] +=
weight() * varx.getVal() ;
1149 x2sum[ix] +=
weight() * varx.getVal() * varx.getVal();
1152 for(std::size_t iy = ix; iy < varList.
size(); ++iy) {
1153 auto vary =
static_cast<RooRealVar const&
>(varList[iy]);
1154 xysum(ix,iy) +=
weight() * varx.getVal() * vary.getVal();
1155 xysum(iy,ix) = xysum(ix,iy) ;
1162 for (std::size_t ix=0 ; ix<varList.
size() ; ix++) {
1167 for (std::size_t iy=0 ; iy<varList.
size() ; iy++) {
1168 xysum(ix,iy) /=
sumEntries(cutSpec, cutRange) ;
1174 for (std::size_t ix=0 ; ix<varList.
size() ; ix++) {
1175 for (std::size_t iy=0 ; iy<varList.
size() ; iy++) {
1176 (*C)(ix,iy) = xysum(ix,iy)-xsum[ix]*xsum[iy] ;
1178 (*C)(ix,iy) /= std::sqrt((x2sum[ix]-(xsum[ix]*xsum[ix]))*(x2sum[iy]-(xsum[iy]*xsum[iy]))) ;
1199 std::string
name = std::string{var.
GetName()} +
"Mean";
1200 std::string title = std::string{
"Mean of "} + var.
GetTitle();
1202 meanv->setConstant(
false) ;
1205 std::string label =
"<" + std::string{var.
getPlotLabel()} +
">";
1206 meanv->setPlotLabel(label.c_str());
1209 double meanVal=
moment(var,1,0,cutSpec,cutRange) ;
1212 double rmsVal= sqrt(
moment(var,2,meanVal,cutSpec,cutRange)*
N/(
N-1));
1213 meanv->setVal(meanVal) ;
1214 meanv->setError(
N > 0 ? rmsVal/sqrt(
N) : 0);
1232 std::string
name(var.
GetName()),title(
"RMS of ") ;
1236 rms->setConstant(
false) ;
1241 rms->setPlotLabel(label.c_str());
1244 double meanVal(
moment(var,1,0,cutSpec,cutRange)) ;
1246 double rmsVal= sqrt(
moment(var,2,meanVal,cutSpec,cutRange)*
N/(
N-1));
1247 rms->setVal(rmsVal) ;
1248 rms->setError(rmsVal/sqrt(2*
N));
1303 pc.
defineInt(
"dummy",
"FormatArgs",0,0) ;
1314 const char* label = pc.
getString(
"label") ;
1318 const char* formatStr = pc.
getString(
"formatStr") ;
1322 const char* cutSpec = pc.
getString(
"cutString",0,
true) ;
1323 const char* cutRange = pc.
getString(
"cutRange",0,
true) ;
1327 return statOn(frame,
what,label,0,0,
xmin,
xmax,
ymax,cutSpec,cutRange,formatCmd) ;
1338 const char* cutSpec,
const char* cutRange,
const RooCmdArg* formatCmd)
1340 bool showLabel= (label !=
nullptr && strlen(label) > 0);
1342 std::string whatStr{
what};
1343 std::transform(whatStr.begin(), whatStr.end(), whatStr.begin(), [](
unsigned char c){ return std::toupper(c); });
1344 bool showN = whatStr.find(
'N') != std::string::npos;
1345 bool showR = whatStr.find(
'R') != std::string::npos;
1346 bool showM = whatStr.find(
'M') != std::string::npos;
1353 double dy(0.06),
ymin(
ymax-nPar*dy);
1354 if(showLabel)
ymin-= dy;
1358 if(!
box)
return nullptr;
1360 box->SetFillColor(0);
1361 box->SetBorderSize(1);
1362 box->SetTextAlign(12);
1363 box->SetTextSize(0.04F);
1364 box->SetFillStyle(1001);
1368 N.setPlotLabel(
"Entries") ;
1373 std::unique_ptr<TString> rmsText, meanText, NText;
1375 rmsText.reset(rms->format(sigDigits,options));
1376 meanText.reset(meanv->format(sigDigits,options));
1377 NText.reset(
N.format(sigDigits,options));
1379 rmsText.reset(rms->format(*formatCmd));
1380 meanText.reset(meanv->format(*formatCmd));
1381 NText.reset(
N.format(*formatCmd));
1383 if (showR)
box->AddText(rmsText->Data());
1384 if (showM)
box->AddText(meanText->Data());
1385 if (showN)
box->AddText(NText->Data());
1388 if(showLabel)
box->AddText(label);
1403 if(
nullptr == hist) {
1404 coutE(InputArguments) <<
ClassName() <<
"::" <<
GetName() <<
":fillHistogram: no valid histogram to fill" << endl;
1410 if(hdim != plotVars.
size()) {
1411 coutE(InputArguments) <<
ClassName() <<
"::" <<
GetName() <<
":fillHistogram: plotVars has the wrong dimension" << endl;
1424 <<
"\" of type " << var->
ClassName() << endl;
1433 <<
":fillHistogram: Data does not contain the variable '" << realVar->
GetName() <<
"'." << endl;
1439 localVars.
add(*clone);
1442 localVars.
add(*found);
1447 std::unique_ptr<RooFormula> select;
1448 if (cuts !=
nullptr && strlen(cuts) > 0) {
1449 select = std::make_unique<RooFormula>(cuts, cuts,
_vars,
false);
1450 if (!select || !select->ok()) {
1451 coutE(InputArguments) <<
ClassName() <<
"::" <<
GetName() <<
":fillHistogram: invalid cuts \"" << cuts <<
"\"" << endl;
1474 coutE(InputArguments) <<
ClassName() <<
"::" <<
GetName() <<
":fillHistogram: cannot fill histogram with "
1475 << hdim <<
" dimensions" << endl;
1480 const auto cutVec =
ROOT::Split(cutRange ? cutRange :
"",
",");
1487 for(
Int_t i=0; i < nevent; ++i) {
1494 if (select && select->eval()==0) {
1500 bool selectByRange = true ;
1502 for (
const auto arg :
_vars) {
1503 bool selectThisArg = false ;
1504 for (
auto const& cut : cutVec) {
1505 if (!cut.empty() && arg->inRange(cut.c_str())) {
1506 selectThisArg = true ;
1510 if (!selectThisArg) {
1511 selectByRange = false ;
1517 if (!selectByRange) {
1544 if (we==0) we =
weight() ;
1569struct SplittingSetup {
1573 bool addWeightVar =
false;
1578 SplittingSetup setup;
1582 oocoutE(&
data, InputArguments) <<
"RooTreeData::split(" <<
data.GetName() <<
") ERROR category "
1583 << splitCat.
GetName() <<
" doesn't depend on any variable in this dataset"
1592 setup.cloneCat->attachDataSet(
data);
1595 if (!setup.cloneCat) {
1596 oocoutE(&
data, InputArguments) <<
"RooTreeData::split(" <<
data.GetName() <<
") ERROR category "
1597 << splitCat.
GetName() <<
" is fundamental and does not appear in this dataset"
1604 setup.subsetVars.add(*
data.get());
1606 std::unique_ptr<RooArgSet> vars{splitCat.
getVariables()};
1607 setup.subsetVars.remove(*vars,
true,
true);
1609 setup.subsetVars.remove(splitCat,
true,
true);
1614 setup.addWeightVar =
data.isWeighted();
1620 std::function<
RooAbsData *(
const char *label)> createEmptyData)
1622 auto dsetList =
new TList;
1625 if (createEmptyDataSets) {
1626 for (
const auto &nameIdx : cloneCat) {
1627 dsetList->
Add(createEmptyData(nameIdx.first.c_str()));
1632 for (
Int_t i = 0; i <
data.numEntries(); ++i) {
1637 dsetList->Add(subset);
1639 subset->add(*row,
data.weight(),
data.weightError());
1658 SplittingSetup setup = initSplit(*
this, splitCat);
1661 if(!setup.cloneCat)
return nullptr;
1663 auto createEmptyData = [&](
const char * label) ->
RooAbsData* {
1664 return emptyClone(label, label, &setup.subsetVars, setup.addWeightVar ?
"weight" :
nullptr);
1667 return splitImpl(*
this, *setup.cloneCat, createEmptyDataSets, createEmptyData);
1683 SplittingSetup setup = initSplit(*
this, splitCat);
1686 if(!setup.cloneCat)
return nullptr;
1690 auto getPdfObservables = [
this, &simpdf](
const char * label) {
1693 catPdf->getObservables(this->
get(), obsSet);
1700 for(
const auto& catPair : splitCat) {
1701 allObservables.
add(getPdfObservables(catPair.first.c_str()));
1703 setup.subsetVars.remove(allObservables,
true,
true);
1705 auto createEmptyData = [&](
const char * label) ->
RooAbsData* {
1707 RooArgSet subsetVarsCat(setup.subsetVars);
1708 subsetVarsCat.
add(getPdfObservables(label));
1709 return this->
emptyClone(label, label, &subsetVarsCat, setup.addWeightVar ?
"weight" :
nullptr);
1712 return splitImpl(*
this, *setup.cloneCat, createEmptyDataSets, createEmptyData);
1818 pc.
defineInt(
"nbins",
"BinningSpec",0,100) ;
1823 pc.
defineInt(
"lineColor",
"LineColor",0,-999) ;
1824 pc.
defineInt(
"lineStyle",
"LineStyle",0,-999) ;
1825 pc.
defineInt(
"lineWidth",
"LineWidth",0,-999) ;
1826 pc.
defineInt(
"markerColor",
"MarkerColor",0,-999) ;
1827 pc.
defineInt(
"markerStyle",
"MarkerStyle",0,-999) ;
1829 pc.
defineInt(
"fillColor",
"FillColor",0,-999) ;
1830 pc.
defineInt(
"fillStyle",
"FillStyle",0,-999) ;
1832 pc.
defineInt(
"histInvisible",
"Invisible",0,0) ;
1833 pc.
defineInt(
"refreshFrameNorm",
"RefreshNorm",0,1) ;
1839 pc.
defineMutex(
"DataError",
"Asymmetry",
"Efficiency") ;
1840 pc.
defineMutex(
"Binning",
"BinningName",
"BinningSpec") ;
1880 coutI(InputArguments) <<
"RooAbsData::plotOn(" <<
GetName()
1881 <<
") INFO: dataset has non-integer weights, auto-selecting SumW2 errors instead of Poisson errors" << endl ;
1887 <<
" to add to in RooPlot" << endl ;
1892 if (!asymCat && !effCat) {
1894 }
else if (asymCat) {
1945 <<
":plotOn: frame does not specify a plot variable" << endl;
1950 const std::string histName = std::string{
GetName()} +
"_plot";
1951 std::unique_ptr<TH1> hist;
1967 <<
":plotOn: fillHistogram() failed" << endl;
1973 double nomBinWidth ;
1984 <<
":plotOn: unable to create a RooHist object" << endl;
1993 std::unique_ptr<RooAbsData> tmp{
const_cast<RooAbsData*
>(
this)->
reduce(*var)};
1994 nEnt = tmp->sumEntries() ;
1999 coutI(Plotting) <<
"RooTreeData::plotOn: plotting " << hist->GetSumOfWeights() <<
" events out of " << nEnt <<
" total events" << endl ;
2000 graph->setRawEntries(nEnt) ;
2007 if (!
graph->hasIdenticalBinning(*otherGraph)) {
2008 coutE(Plotting) <<
"RooTreeData::plotOn: ERROR Histogram to be added to, '" << o.
addToHistName <<
"',has different binning" << endl ;
2022 std::string hname = std::string{
"h_"} +
GetName();
2024 hname += std::string{
"_CutRange["} + o.
cutRange +
"]";
2027 hname += std::string{
"_Cut["} + o.
cuts +
"]";
2029 graph->SetName(hname.c_str()) ;
2065 <<
":plotAsymOn: frame does not specify a plot variable" << endl;
2071 hist1Name +=
"_plot1";
2072 std::unique_ptr<TH1> hist1, hist2;
2073 hist2Name +=
"_plot2";
2087 assert(hist1 && hist2);
2089 std::string cuts1,cuts2 ;
2101 <<
":plotAsymOn: createHistogram() failed" << endl;
2123 graph->SetName(hname.c_str()) ;
2155 <<
":plotEffOn: frame does not specify a plot variable" << endl;
2161 hist1Name +=
"_plot1";
2162 std::unique_ptr<TH1> hist1, hist2;
2163 hist2Name +=
"_plot2";
2177 assert(hist1 && hist2);
2179 std::string cuts1,cuts2 ;
2191 <<
":plotEffOn: createHistogram() failed" << endl;
2213 graph->SetName(hname.c_str()) ;
2235 std::unique_ptr<RooArgSet> tableSet;
2239 <<
" is not in dataset and is also not dependent on data set" << endl ;
2246 coutE(Plotting) <<
"RooTreeData::table(" <<
GetName() <<
") Couldn't deep-clone table category, abort." << std::endl;
2255 std::unique_ptr<RooFormulaVar> cutVar;
2256 std::string tableName{
GetName()};
2257 if (cuts && strlen(cuts)) {
2262 cutVar = std::make_unique<RooFormulaVar>(
"cutVar",cuts,
_vars) ;
2268 for(
Int_t i=0; i < nevent; ++i) {
2271 if (cutVar && cutVar->getVal()==0) continue ;
2289 coutE(InputArguments) <<
"RooDataSet::getRange(" <<
GetName() <<
") ERROR: unknown variable: " << var.
GetName() << endl ;
2293 auto varPtr =
dynamic_cast<const RooRealVar*
>(arg);
2296 coutE(InputArguments) <<
"RooDataSet::getRange(" <<
GetName() <<
") ERROR: variable " << var.
GetName() <<
" is not of type RooRealVar" << endl ;
2302 coutE(InputArguments) <<
"RooDataSet::getRange(" <<
GetName() <<
") WARNING: empty dataset" << endl ;
2311 if (varPtr->getVal()<lowest) {
2312 lowest = varPtr->getVal() ;
2314 if (varPtr->getVal()>highest) {
2315 highest = varPtr->getVal() ;
2320 if (symMode==
false) {
2322 double margin = marginFrac*(highest-lowest) ;
2330 double mom1 =
moment(*varPtr,1) ;
2331 double delta = ((highest-mom1)>(mom1-lowest)?(highest-mom1):(mom1-lowest))*(1+marginFrac) ;
2332 lowest = mom1-delta ;
2333 highest = mom1+delta ;
2356 pruneSet.
remove(*usedObs,
true,
true) ;
2359 for(
auto * var : *
get()) {
2361 pruneSet.
add(*var) ;
2366 if (!pruneSet.
empty()) {
2371 for(
auto const* rrv : dynamic_range_cast<RooRealVar*>(*usedObs)) {
2372 if (rrv && !rrv->getBinning().isShareable()) {
2374 RooAbsReal* loFunc = rrv->getBinning().lowBoundFunc() ;
2375 RooAbsReal* hiFunc = rrv->getBinning().highBoundFunc() ;
2382 if (!depObs.
empty()) {
2383 pruneSet.
remove(depObs,
true,
true) ;
2391 pruneSet.
remove(keepObsList,
true,
true) ;
2393 if (!pruneSet.
empty()) {
2396 cxcoutI(Optimization) <<
"RooTreeData::optimizeReadingForTestStatistic(" <<
GetName() <<
"): Observables " << pruneSet
2397 <<
" in dataset are either not used at all, orserving exclusively p.d.f nodes that are now cached, disabling reading of these observables for TTree" << endl ;
2408 bool ret(
true), anyClient(
false) ;
2412 if (!cacheList.
find(client->GetName())) {
2418 return anyClient?ret:false ;
2425 _dstore->attachBuffers(extObs) ;
2495 return _dstore->hasFilledCache() ;
2508 coutW(InputArguments) <<
"RooAbsData::tree(" <<
GetName() <<
") WARNING: is not of StorageType::Tree. "
2509 <<
"Use GetClonedTree() instead or convert to tree storage." << endl;
2547 if (iter.second == obj) {
2548 iter.second =
nullptr;
2564 arg->setAttribute(
"global",
true);
2566 if(
auto lval =
dynamic_cast<RooAbsRealLValue*
>(arg)) lval->setConstant(
true);
2604 if (eventWeights.
empty()) {
2609 for (std::size_t i = 0; i < eventWeights.
size(); ++i) {
2612 return kahanWeight.
Sum();
2642 const char *
name)
const
2657 const char *cuts,
const char *
name)
const
2660 static int counter(0);
2662 std::unique_ptr<RooAbsReal> ownedPlotVarX;
2665 if (plotVarX ==
nullptr) {
2669 <<
" is not in dataset and is also not dependent on data set" << std::endl;
2675 plotVarX = ownedPlotVarX.get();
2681 std::unique_ptr<RooAbsReal> ownedPlotVarY;
2684 if (plotVarY ==
nullptr) {
2688 <<
" is not in dataset and is also not dependent on data set" << std::endl;
2694 plotVarY = ownedPlotVarY.get();
2701 std::unique_ptr<RooFormula> select;
2702 if (0 != cuts && strlen(cuts)) {
2703 select = std::make_unique<RooFormula>(cuts, cuts,
_vars);
2704 if (!select->ok()) {
2709 const std::string histName = std::string{
GetName()} +
"_" +
name +
"_" +
Form(
"%08x", counter++);
2715 coutE(DataHandling) <<
GetName() <<
"::createHistogram: unable to create a new histogram" << endl;
2721 for (
Int_t i = 0; i < nevent; ++i) {
2724 if (select && select->eval() == 0)
2726 histogram->Fill(plotVarX->getVal(), plotVarY->
getVal(),
weight());
static std::map< RooAbsData *, int > _dcc
TMatrixTSym< double > TMatrixDSym
static void indent(ostringstream &buf, int indent_level)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
The Kahan summation is a compensated summation algorithm, which significantly reduces numerical error...
void AddIndexed(T input, std::size_t index)
Add input to the sum.
Roo1DTable implements a one-dimensional table.
void fill(RooAbsCategory &cat, double weight=1.0) override
Increment the counter of the table slot with the name corresponding to that of the current category s...
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
bool dependsOn(const RooAbsCollection &serverList, const RooAbsArg *ignoreArg=nullptr, bool valueOnly=false) const
Test whether we depend on (ie, are served by) any object in the specified collection.
bool recursiveRedirectServers(const RooAbsCollection &newServerList, bool mustReplaceAll=false, bool nameChange=false, bool recurseInNewSet=true)
Recursively replace all servers with the new servers in newSet.
void attachArgs(const RooAbsCollection &set)
Bind this node to objects in set.
RooFit::OwningPtr< RooArgSet > getObservables(const RooArgSet &set, bool valueOnly=true) const
Given a set of possible observables, return the observables that this PDF depends on.
void SetName(const char *name) override
Set the name of the TNamed.
const RefCountList_t & valueClients() const
List of all value clients of this object. Value clients receive value updates.
bool redirectServers(const RooAbsCollection &newServerList, bool mustReplaceAll=false, bool nameChange=false, bool isRecursionStep=false)
Replace all direct servers of this object with the new servers in newServerList.
virtual bool isDerived() const
Does value or shape of this arg depend on any other arg?
RooFit::OwningPtr< RooArgSet > getVariables(bool stripDisconnected=true) const
Return RooArgSet with all variables (tree leaf nodes of expresssion tree)
TObject * Clone(const char *newname=nullptr) const override
Make a clone of an object using the Streamer facility.
void leafNodeServerList(RooAbsCollection *list, const RooAbsArg *arg=nullptr, bool recurseNonDerived=false) const
Fill supplied list with all leaf nodes of the arg tree, starting with ourself as top node.
RooAbsBinning is the abstract base class for RooRealVar binning definitions.
virtual double averageBinWidth() const =0
virtual bool isUniform() const
RooAbsCategoryLValue is the common abstract base class for objects that represent a discrete value th...
A space to attach TBranches.
virtual const char * getCurrentLabel() const
Return label string of current state.
const std::string & lookupName(value_type index) const
Get the name corresponding to the given index.
Roo1DTable * createTable(const char *label) const
Create a table matching the shape of this category.
virtual void removeAll()
Remove all arguments from our set, deleting them if we own them.
virtual bool remove(const RooAbsArg &var, bool silent=false, bool matchByNameOnly=false)
Remove the specified argument from our list.
bool allInRange(const char *rangeSpec) const
Return true if all contained object report to have their value inside the specified range.
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
Storage_t::size_type size() const
virtual RooAbsArg * addClone(const RooAbsArg &var, bool silent=false)
Add a clone of the specified argument to list.
RooAbsArg * find(const char *name) const
Find object with given name in list.
RooAbsDataStore is the abstract base class for data collection that use a TTree as internal storage m...
virtual RooAbsData::CategorySpans getCategoryBatches(std::size_t, std::size_t) const
virtual RooAbsData::RealSpans getBatches(std::size_t first, std::size_t len) const =0
Retrieve batches for all observables in this data store.
RooAbsData is the common abstract base class for binned and unbinned datasets.
virtual double weight() const =0
virtual double sumEntries() const =0
Return effective number of entries in dataset, i.e., sum all weights.
virtual const RooArgSet * get() const
RooRealVar * meanVar(const RooRealVar &var, const char *cutSpec=nullptr, const char *cutRange=nullptr) const
Create a RooRealVar containing the mean of observable 'var' in this dataset.
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Interface for detailed printing of object.
const TNamed * _namePtr
! De-duplicated name pointer. This will be equal for all objects with the same name.
RooAbsData()
Default constructor.
static void setDefaultStorageType(StorageType s)
void SetName(const char *name) override
Set the name of the TNamed.
CategorySpans getCategoryBatches(std::size_t first=0, std::size_t len=std::numeric_limits< std::size_t >::max()) const
RooRealVar * dataRealVar(const char *methodname, const RooRealVar &extVar) const
Internal method to check if given RooRealVar maps to a RooRealVar in this dataset.
virtual Roo1DTable * table(const RooArgSet &catSet, const char *cuts="", const char *opts="") const
Construct table for product of categories in catSet.
void setGlobalObservables(RooArgSet const &globalObservables)
Sets the global observables stored in this data.
RooAbsDataStore * store()
virtual RooAbsData * emptyClone(const char *newName=nullptr, const char *newTitle=nullptr, const RooArgSet *vars=nullptr, const char *wgtVarName=nullptr) const =0
std::map< RooFit::Detail::DataKey, RooSpan< const double > > RealSpans
void printClassName(std::ostream &os) const override
Print class name of dataset.
RooRealVar * rmsVar(const RooRealVar &var, const char *cutSpec=nullptr, const char *cutRange=nullptr) const
Create a RooRealVar containing the RMS of observable 'var' in this dataset.
double standMoment(const RooRealVar &var, double order, const char *cutSpec=nullptr, const char *cutRange=nullptr) const
Calculate standardized moment.
void Draw(Option_t *option="") override
Forward draw command to data store.
virtual bool changeObservableName(const char *from, const char *to)
void printTitle(std::ostream &os) const override
Print title of dataset.
void RecursiveRemove(TObject *obj) override
If one of the TObject we have a referenced to is deleted, remove the reference.
virtual double weightError(ErrorType=Poisson) const
Return the symmetric error on the current weight.
void setDirtyProp(bool flag)
Control propagation of dirty flags from observables in dataset.
virtual TH1 * fillHistogram(TH1 *hist, const RooArgList &plotVars, const char *cuts="", const char *cutRange=nullptr) const
Loop over columns of our tree data and fill the input histogram.
virtual RooPlot * statOn(RooPlot *frame, const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none())
Add a box with statistics information to the specified frame.
virtual void setArgStatus(const RooArgSet &set, bool active)
virtual void cacheArgs(const RooAbsArg *owner, RooArgSet &varSet, const RooArgSet *nset=nullptr, bool skipZeroWeights=false)
Internal method – Cache given set of functions with data.
virtual RooPlot * plotEffOn(RooPlot *frame, const RooAbsCategoryLValue &effCat, PlotOpt o) const
Create and fill a histogram with the efficiency N[1] / ( N[1] + N[0] ), where N(1/0) is the number of...
RealSpans getBatches(std::size_t first=0, std::size_t len=std::numeric_limits< std::size_t >::max()) const
Write information to retrieve data columns into evalData.spans.
virtual void optimizeReadingWithCaching(RooAbsArg &arg, const RooArgSet &cacheList, const RooArgSet &keepObsList)
Prepare dataset for use with cached constant terms listed in 'cacheList' of expression 'arg'.
static void claimVars(RooAbsData *)
static StorageType defaultStorageType
double corrcov(const RooRealVar &x, const RooRealVar &y, const char *cutSpec, const char *cutRange, bool corr) const
Internal method to calculate single correlation and covariance elements.
bool allClientsCached(RooAbsArg *, const RooArgSet &)
Utility function that determines if all clients of object 'var' appear in given list of cached nodes.
std::unique_ptr< RooAbsDataStore > _dstore
Data storage implementation.
void addOwnedComponent(const char *idxlabel, RooAbsData &data)
RooArgSet _vars
Dimensions of this data set.
bool canSplitFast() const
static bool releaseVars(RooAbsData *)
If return value is true variables can be deleted.
virtual RooPlot * plotAsymOn(RooPlot *frame, const RooAbsCategoryLValue &asymCat, PlotOpt o) const
Create and fill a histogram with the asymmetry N[+] - N[-] / ( N[+] + N[-] ), where N(+/-) is the num...
RooAbsData * getSimData(const char *idxstate)
void copyGlobalObservables(const RooAbsData &other)
virtual bool isNonPoissonWeighted() const
bool hasFilledCache() const
double sumEntriesW2() const
Return sum of squared weights of this data.
virtual void attachCache(const RooAbsArg *newOwner, const RooArgSet &cachedVars)
Internal method – Attach dataset copied with cache contents to copied instances of functions.
std::map< RooFit::Detail::DataKey, RooSpan< const RooAbsCategory::value_type > > CategorySpans
void convertToVectorStore()
Convert tree-based storage to vector-based storage.
virtual RooSpan< const double > getWeightBatch(std::size_t first, std::size_t len, bool sumW2=false) const =0
Return event weights of all events in range [first, first+len).
bool getRange(const RooAbsRealLValue &var, double &lowest, double &highest, double marginFrac=0.0, bool symMode=false) const
Fill Doubles 'lowest' and 'highest' with the lowest and highest value of observable 'var' in this dat...
RooArgSet _cachedVars
! External variables cached with this data set
virtual Int_t numEntries() const
Return number of entries in dataset, i.e., count unweighted entries.
virtual void convertToTreeStore()
Convert vector-based storage to tree-based storage.
virtual RooPlot * plotOn(RooPlot *frame, const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none()) const
double moment(const RooRealVar &var, double order, const char *cutSpec=nullptr, const char *cutRange=nullptr) const
Calculate moment of requested order.
RooAbsData & operator=(const RooAbsData &other)
void SetNameTitle(const char *name, const char *title) override
Set all the TNamed parameters (name and title).
virtual void resetCache()
Internal method – Remove cached function values.
virtual TList * split(const RooAbsCategory &splitCat, bool createEmptyDataSets=false) const
Split dataset into subsets based on states of given splitCat in this dataset.
Int_t defaultPrintContents(Option_t *opt) const override
Define default print options, for a given print style.
std::unique_ptr< RooArgSet > _globalObservables
Snapshot of global observables.
virtual double weightSquared() const =0
TTree * GetClonedTree() const
Return a clone of the TTree which stores the data or create such a tree if vector storage is used.
RooAbsData * reduce(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())
Create a reduced copy of this dataset.
void attachBuffers(const RooArgSet &extObs)
virtual RooAbsData * reduceEng(const RooArgSet &varSubset, const RooFormulaVar *cutVar, const char *cutRange=nullptr, std::size_t nStart=0, std::size_t=std::numeric_limits< std::size_t >::max())=0
std::map< std::string, RooAbsData * > _ownedComponents
Owned external components.
TH1 * createHistogram(const char *name, const RooAbsRealLValue &xvar, const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none()) const
Calls createHistogram(const char *name, const RooAbsRealLValue& xvar, const RooLinkedList& argList) c...
static StorageType getDefaultStorageType()
void Streamer(TBuffer &) override
Stream an object of class RooAbsData.
TMatrixDSym * corrcovMatrix(const RooArgList &vars, const char *cutSpec, const char *cutRange, bool corr) const
Return covariance matrix from data for given list of observables.
void printName(std::ostream &os) const override
Print name of dataset.
const TTree * tree() const
Return a pointer to the TTree which stores the data.
void initializeVars(RooArgSet const &vars)
~RooAbsData() override
Destructor.
RooAbsRealLValue is the common abstract base class for objects that represent a real value that may a...
virtual Int_t getBins(const char *name=nullptr) const
Get number of bins of currently defined range.
virtual const RooAbsBinning & getBinning(const char *name=nullptr, bool verbose=true, bool createOnTheFly=false) const =0
Retrive binning configuration with given name or default binning.
virtual double getMax(const char *name=nullptr) const
Get maximum of currently defined range.
virtual double getMin(const char *name=nullptr) const
Get minimum of currently defined range.
TH1 * createHistogram(const char *name, const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none()) const
bool hasMin(const char *name=nullptr) const
Check if variable has a lower bound.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
double getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
const char * getPlotLabel() const
Get the label associated with the variable.
void setPlotLabel(const char *label)
Set the label associated with this variable.
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooAbsArg * at(Int_t idx) const
Return object at given index, or nullptr if index is out of range.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
RooArgSet * snapshot(bool deepCopy=true) const
Use RooAbsCollection::snapshot(), but return as RooArgSet.
RooCategory is an object to represent discrete states.
RooCmdArg is a named container for two doubles, two integers two object points and three string point...
double getDouble(Int_t idx) const
Return double stored in slot idx.
Int_t getInt(Int_t idx) const
TObject * Clone(const char *newName=nullptr) const override
Make a clone of an object using the Streamer facility.
Class RooCmdConfig is a configurable parser for RooCmdArg named arguments.
bool defineObject(const char *name, const char *argName, Int_t setNum, const TObject *obj=nullptr, bool isArray=false)
Define TObject property name 'name' mapped to object in slot 'setNum' in RooCmdArg with name argName ...
double getDouble(const char *name, double defaultValue=0.0)
Return double property registered with name 'name'.
RooArgSet * getSet(const char *name, RooArgSet *set=nullptr)
Return RooArgSet property registered with name 'name'.
void defineMutex(const char *head, Args_t &&... tail)
Define arguments where any pair is mutually exclusive.
bool process(const RooCmdArg &arg)
Process given RooCmdArg.
bool hasProcessed(const char *cmdName) const
Return true if RooCmdArg with name 'cmdName' has been processed.
Int_t getInt(const char *name, Int_t defaultValue=0)
Return integer property registered with name 'name'.
static void stripCmdList(RooLinkedList &cmdList, const char *cmdsToPurge)
Utility function that strips command names listed (comma separated) in cmdsToPurge from cmdList.
bool defineInt(const char *name, const char *argName, Int_t intNum, Int_t defValue=0)
Define integer property name 'name' mapped to integer in slot 'intNum' in RooCmdArg with name argName...
bool defineString(const char *name, const char *argName, Int_t stringNum, const char *defValue="", bool appendMode=false)
Define double property name 'name' mapped to double in slot 'stringNum' in RooCmdArg with name argNam...
bool ok(bool verbose) const
Return true of parsing was successful.
TObject * getObject(const char *name, TObject *obj=nullptr)
Return TObject property registered with name 'name'.
const char * getString(const char *name, const char *defaultValue="", bool convEmptyToNull=false)
Return string property registered with name 'name'.
void allowUndefined(bool flag=true)
If flag is true the processing of unrecognized RooCmdArgs is not considered an error.
bool defineSet(const char *name, const char *argName, Int_t setNum, const RooArgSet *set=nullptr)
Define TObject property name 'name' mapped to object in slot 'setNum' in RooCmdArg with name argName ...
bool defineDouble(const char *name, const char *argName, Int_t doubleNum, double defValue=0.0)
Define double property name 'name' mapped to double in slot 'doubleNum' in RooCmdArg with name argNam...
RooCompositeDataStore combines several disjunct datasets into one.
A RooHist is a graphical representation of binned data based on the TGraphAsymmErrors class.
RooLinkedList is an collection class for internal use, storing a collection of RooAbsArg pointers in ...
bool Replace(const TObject *oldArg, const TObject *newArg)
Replace object 'oldArg' in collection with new object 'newArg'.
void Delete(Option_t *o=nullptr) override
Remove all elements in collection and delete all elements NB: Collection does not own elements,...
TObject * find(const char *name) const
Return pointer to object with given name in collection.
virtual void Add(TObject *arg)
TObject * FindObject(const char *name) const override
Return pointer to obejct with given name.
RooMultiCategory connects several RooAbsCategory objects into a single category.
RooNameReg is a registry for const char* names.
@ kRenamedArg
TNamed flag to indicate that some RooAbsArg has been renamed (flag set in new name)
const TNamed * constPtr(const char *stringPtr)
Return a unique TNamed pointer for given C++ string.
static RooNameReg & instance()
Return reference to singleton instance.
static void incrementRenameCounter()
The renaming counter has to be incremented every time a RooAbsArg is renamed.
static constexpr double infinity()
Return internal infinity representation.
A RooPlot is a plot frame and a container for graphics objects within that frame.
TObject * findObject(const char *name, const TClass *clas=nullptr) const
Find the named object in our list of items and return a pointer to it.
void addObject(TObject *obj, Option_t *drawOptions="", bool invisible=false)
Add a generic object to this plot.
double getFitRangeNEvt() const
Return the number of events in the fit range.
TAttLine * getAttLine(const char *name=nullptr) const
Return a pointer to the line attributes of the named object in this plot, or zero if the named object...
TAttFill * getAttFill(const char *name=nullptr) const
Return a pointer to the fill attributes of the named object in this plot, or zero if the named object...
RooAbsRealLValue * getPlotVar() const
TAttMarker * getAttMarker(const char *name=nullptr) const
Return a pointer to the marker attributes of the named object in this plot, or zero if the named obje...
void updateNormVars(const RooArgSet &vars)
Install the given set of observables are reference normalization variables for this frame.
void addPlotable(RooPlotable *plotable, Option_t *drawOptions="", bool invisible=false, bool refreshNorm=false)
Add the specified plotable object to our plot.
double getFitRangeBinW() const
Return the bin width that is being used to normalise the PDF.
RooPlotable is a 'mix-in' base class that define the standard RooFit plotting and printing methods.
RooRealVar represents a variable that can be changed from the outside.
RooSimultaneous facilitates simultaneous fitting of multiple PDFs to subsets of a given dataset.
RooAbsPdf * getPdf(RooStringView catName) const
Return the p.d.f associated with the given index category name.
const RooAbsCategoryLValue & indexCat() const
A simple container to hold a batch of data values.
constexpr std::size_t size() const noexcept
constexpr bool empty() const noexcept
The RooStringView is a wrapper around a C-syle string that can also be constructed from a std::string...
static void destroy(const TObject *obj)
Register deletion of object 'obj'.
static void create(const TObject *obj)
Register creation of object 'obj'.
RooTreeDataStore is a TTree-backed data storage.
RooVectorDataStore uses std::vectors to store data columns.
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
Buffer base class used for serializing objects.
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=nullptr)=0
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
TH1 is the base class of all histogram classes in ROOT.
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
virtual Int_t GetDimension() const
virtual void SetBinError(Int_t bin, Double_t error)
Set the bin Error Note that this resets the bin eror option to be of Normal Type and for the non-empt...
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
virtual TArrayD * GetSumw2()
virtual Int_t FindBin(Double_t x, Double_t y=0, Double_t z=0)
Return Global bin number corresponding to x,y,z.
virtual void Sumw2(Bool_t flag=kTRUE)
Create structure to store sum of squares of weights.
2-D histogram with a float per channel (see TH1 documentation)}
Service class for 2-D histogram classes.
The 3-D histogram classes derived from the 1-D histogram classes.
void Add(TObject *obj) override
The TNamed class is the base class for all named ROOT classes.
TObject * Clone(const char *newname="") const override
Make a clone of an object using the Streamer facility.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.
virtual void SetName(const char *name)
Set the name of the TNamed.
TNamed & operator=(const TNamed &rhs)
TNamed assignment operator.
Mother of all ROOT objects.
virtual void Clear(Option_t *="")
virtual const char * ClassName() const
Returns name of class to which the object belongs.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
A Pave (see TPave) with text, lines or/and boxes inside.
A TTree represents a columnar dataset.
virtual TTree * CloneTree(Long64_t nentries=-1, Option_t *option="")
Create a clone of this tree and copy nentries.
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
RooCmdArg YVar(const RooAbsRealLValue &var, const RooCmdArg &arg=RooCmdArg::none())
RooCmdArg ZVar(const RooAbsRealLValue &var, const RooCmdArg &arg=RooCmdArg::none())
RooCmdArg AutoBinning(Int_t nbins=100, double marginFactor=0.1)
RooCmdArg AxisLabel(const char *name)
RooCmdArg Binning(const RooAbsBinning &binning)
std::vector< std::string > Split(std::string_view str, std::string_view delims, bool skipEmpty=false)
Splits a string at each character in delims.
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Returns x raised to the power y.
const char * addToHistName
RooAbsData::ErrorType etype
static uint64_t sum(uint64_t i)