133 std::cout <<
"Composite storage is not a valid *default* storage type." << std::endl;
159 throw std::runtime_error(
"RooAbsData::initializeVars(): the variables are already initialized!");
163 for (
const auto var : vars) {
164 if (!var->isFundamental()) {
165 coutE(InputArguments) <<
"RooAbsDataStore::initialize(" <<
GetName()
166 <<
"): Data set cannot contain non-fundamental types, ignoring " << var->GetName()
168 throw std::invalid_argument(std::string(
"Only fundamental variables can be placed into datasets. This is violated for ") + var->GetName());
186 _vars(
"Dataset Variables"),
187 _cachedVars(
"Cached Variables"),
212 for (
auto var :
_vars) {
220 std::map<std::string, RooAbsDataStore *> smap;
224 smap[itero.first] = dclone->
store();
247 :
TNamed{newName ? newName : other.GetName(), other.GetTitle()},
249 _cachedVars{
"Cached Variables"}
259 RooPrintable::operator=(other);
306 bool ret =
_dstore->changeObservableName(from,to) ;
349 _dstore->cacheArgs(cacheOwner,varSet,nset,skipZeroWeights) ;
366 _dstore->attachCache(newOwner, cachedVars) ;
373 _dstore->setArgStatus(set,active) ;
410 pc.
defineInt(
"evtStart",
"EventRange",0,0) ;
411 pc.
defineInt(
"evtStop",
"EventRange",1,std::numeric_limits<int>::max()) ;
412 pc.
defineSet(
"varSel",
"SelectVars",0,
nullptr) ;
416 pc.
process(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) ;
422 const char* cutRange = pc.
getString(
"cutRange",
nullptr,
true) ;
423 const char* cutSpec = pc.
getString(
"cutSpec",
nullptr,
true) ;
425 int nStart = pc.
getInt(
"evtStart",0) ;
426 int nStop = pc.
getInt(
"evtStop",std::numeric_limits<int>::max()) ;
429 const char* title = pc.
getString(
"title",
nullptr,
true) ;
434 varSubset.
add(*varSet) ;
435 for (
const auto arg : varSubset) {
437 coutW(InputArguments) <<
"RooAbsData::reduce(" <<
GetName() <<
") WARNING: variable "
438 << arg->GetName() <<
" not in dataset, ignored" << std::endl ;
446 std::unique_ptr<RooAbsData> ret;
450 ret =
reduceEng(varSubset,&cutVarTmp,cutRange,nStart,nStop) ;
454 ret =
reduceEng(varSubset,cutVar,cutRange,nStart,nStop) ;
458 if (!ret)
return nullptr;
461 if (title) ret->SetTitle(title) ;
463 ret->copyGlobalObservables(*
this);
476 auto ret =
reduceEng(*
get(),&cutVar,
nullptr,0,std::numeric_limits<std::size_t>::max()) ;
477 ret->copyGlobalObservables(*
this);
488 auto ret =
reduceEng(*
get(),&cutVar,
nullptr,0,std::numeric_limits<std::size_t>::max()) ;
489 ret->copyGlobalObservables(*
this);
505 for (
const auto arg : varSubset) {
507 coutW(InputArguments) <<
"RooAbsData::reduce(" <<
GetName() <<
") WARNING: variable "
508 << arg->GetName() <<
" not in dataset, ignored" << std::endl ;
513 std::unique_ptr<RooAbsData> ret;
514 if (cut && strlen(cut)>0) {
516 ret =
reduceEng(varSubset2,&cutVar,
nullptr,0,std::numeric_limits<std::size_t>::max());
518 ret =
reduceEng(varSubset2,
nullptr,
nullptr,0,std::numeric_limits<std::size_t>::max());
520 ret->copyGlobalObservables(*
this);
537 coutW(InputArguments) <<
"RooAbsData::reduce(" <<
GetName() <<
") WARNING: variable "
538 << arg->GetName() <<
" not in dataset, ignored" << std::endl ;
543 auto ret =
reduceEng(varSubset2,&cutVar,
nullptr,0,std::numeric_limits<std::size_t>::max()) ;
544 ret->copyGlobalObservables(*
this);
605 const auto varNames =
ROOT::Split(varNameList,
",:");
606 RooRealVar* vars[3] = {
nullptr,
nullptr,
nullptr};
608 for (
unsigned int i = 0; i < varNames.size(); ++i) {
610 coutW(InputArguments) <<
"RooAbsData::createHistogram(" <<
GetName() <<
"): Can only create 3-dimensional histograms. Variable "
611 << i <<
" " << varNames[i] <<
" unused." << std::endl;
617 coutE(InputArguments) <<
"RooAbsData::createHistogram(" <<
GetName() <<
") ERROR: dataset does not contain an observable named " << varNames[i] << std::endl;
623 coutE(InputArguments) <<
"RooAbsData::createHistogram(" <<
GetName() <<
"): No variable to be histogrammed in list '" << varNameList <<
"'" << std::endl;
692 const char* cutSpec = pc.
getString(
"cutString",
nullptr,
true) ;
693 const char* cutRange = pc.
getString(
"cutRange",
nullptr,
true) ;
714 ownedCmds.
Add(bincmd) ;
715 argList.
Replace(autoRD,bincmd) ;
726 ((
RooCmdArg*)argList.
find(
"YVar"))->subArgs().Replace(autoRDY,bincmd) ;
739 ((
RooCmdArg*)argList.
find(
"ZVar"))->subArgs().Replace(autoRDZ,bincmd) ;
761 std::string prodName(
"(") ;
762 for(
auto * arg : catSet) {
765 else catSet2.
add(*arg) ;
766 if (prodName.length()>1) {
769 prodName += arg->GetName() ;
771 coutW(InputArguments) <<
"RooAbsData::table(" <<
GetName() <<
") non-RooAbsCategory input argument " << arg->GetName() <<
" ignored" << std::endl ;
777 return table(tmp,cuts,opts) ;
831 if (order==1)
return 0 ;
832 if (order==2)
return 1 ;
849 double offset = order>1 ?
moment(var,1,cutSpec,cutRange) : 0 ;
865 coutE(InputArguments) <<
"RooDataSet::moment(" <<
GetName() <<
") ERROR: unknown variable: " << var.
GetName() << std::endl;
869 auto varPtr =
dynamic_cast<const RooRealVar*
>(arg);
872 coutE(InputArguments) <<
"RooDataSet::moment(" <<
GetName() <<
") ERROR: variable " << var.
GetName() <<
" is not of type RooRealVar" << std::endl ;
878 coutE(InputArguments) <<
"RooDataSet::moment(" <<
GetName() <<
") WARNING: empty dataset" << std::endl ;
883 std::unique_ptr<RooFormula> select;
885 select = std::make_unique<RooFormula>(
"select",cutSpec,*
get());
893 if (select && select->eval()==0) continue ;
894 if (cutRange && vars->
allInRange(cutRange)) continue ;
910 coutE(InputArguments) <<
"RooDataSet::" << methodname <<
"(" <<
GetName() <<
") ERROR: variable : " << extVar.
GetName() <<
" is not in data" << std::endl ;
915 coutE(InputArguments) <<
"RooDataSet::" << methodname <<
"(" <<
GetName() <<
") ERROR: variable : " << extVar.
GetName() <<
" is not of type RooRealVar in data" << std::endl ;
929 if (!xdata||!ydata)
return 0 ;
933 coutW(InputArguments) <<
"RooDataSet::" << (corr?
"correlation":
"covariance") <<
"(" <<
GetName() <<
") WARNING: empty dataset, returning zero" << std::endl ;
938 std::unique_ptr<RooFormula> select;
939 if (cutSpec) select = std::make_unique<RooFormula>(
"select",cutSpec,*
get());
942 double xysum(0),xsum(0),ysum(0),x2sum(0),y2sum(0);
946 if (select && select->eval()==0) continue ;
947 if (cutRange && vars->
allInRange(cutRange)) continue ;
951 ysum +=
weight()*ydata->getVal() ;
954 y2sum +=
weight()*ydata->getVal()*ydata->getVal() ;
969 return (xysum-xsum*ysum)/(sqrt(x2sum-(xsum*xsum))*sqrt(y2sum-(ysum*ysum))) ;
971 return (xysum-xsum*ysum);
981 for(
auto * var : static_range_cast<RooRealVar*>(vars)) {
986 varList.
add(*datavar) ;
992 coutW(InputArguments) <<
"RooDataSet::covariance(" <<
GetName() <<
") WARNING: empty dataset, returning zero" << std::endl ;
997 std::unique_ptr<RooFormula> select = cutSpec ? std::make_unique<RooFormula>(
"select",cutSpec,*
get()) :
nullptr;
1000 std::vector<double> xsum(varList.
size()) ;
1001 std::vector<double> x2sum(varList.
size()) ;
1006 if (select && select->eval()==0) continue ;
1007 if (cutRange && dvars->
allInRange(cutRange)) continue ;
1009 for(std::size_t ix = 0; ix < varList.
size(); ++ix) {
1010 auto varx =
static_cast<RooRealVar const&
>(varList[ix]);
1011 xsum[ix] +=
weight() * varx.getVal() ;
1013 x2sum[ix] +=
weight() * varx.getVal() * varx.getVal();
1016 for(std::size_t iy = ix; iy < varList.
size(); ++iy) {
1017 auto vary =
static_cast<RooRealVar const&
>(varList[iy]);
1018 xysum(ix,iy) +=
weight() * varx.getVal() * vary.getVal();
1019 xysum(iy,ix) = xysum(ix,iy) ;
1026 for (std::size_t ix=0 ; ix<varList.
size() ; ix++) {
1031 for (std::size_t iy=0 ; iy<varList.
size() ; iy++) {
1032 xysum(ix,iy) /=
sumEntries(cutSpec, cutRange) ;
1037 auto C = std::make_unique<TMatrixDSym>(varList.
size()) ;
1038 for (std::size_t ix=0 ; ix<varList.
size() ; ix++) {
1039 for (std::size_t iy=0 ; iy<varList.
size() ; iy++) {
1040 (*C)(ix,iy) = xysum(ix,iy)-xsum[ix]*xsum[iy] ;
1042 (*C)(ix,iy) /= std::sqrt((x2sum[ix]-(xsum[ix]*xsum[ix]))*(x2sum[iy]-(xsum[iy]*xsum[iy]))) ;
1063 std::string
name = std::string{var.
GetName()} +
"Mean";
1064 std::string title = std::string{
"Mean of "} + var.
GetTitle();
1066 meanv->setConstant(
false) ;
1069 std::string label =
"<" + std::string{var.
getPlotLabel()} +
">";
1070 meanv->setPlotLabel(label.c_str());
1073 double meanVal=
moment(var,1,0,cutSpec,cutRange) ;
1076 double rmsVal= sqrt(
moment(var,2,meanVal,cutSpec,cutRange)*
N/(
N-1));
1077 meanv->setVal(meanVal) ;
1078 meanv->setError(
N > 0 ? rmsVal/sqrt(
N) : 0);
1096 std::string
name(var.
GetName()),title(
"RMS of ") ;
1100 rms->setConstant(
false) ;
1105 rms->setPlotLabel(label.c_str());
1108 double meanVal(
moment(var,1,0,cutSpec,cutRange)) ;
1110 double rmsVal= sqrt(
moment(var,2,meanVal,cutSpec,cutRange)*
N/(
N-1));
1111 rms->setVal(rmsVal) ;
1112 rms->setError(rmsVal/sqrt(2*
N));
1164 pc.
defineInt(
"ymaxi",
"Layout",0,
int(0.95*10000)) ;
1167 pc.
defineInt(
"dummy",
"FormatArgs",0,0) ;
1178 const char* label = pc.
getString(
"label") ;
1182 const char* formatStr = pc.
getString(
"formatStr") ;
1183 int sigDigit = pc.
getInt(
"sigDigit") ;
1186 const char* cutSpec = pc.
getString(
"cutString",
nullptr,
true) ;
1187 const char* cutRange = pc.
getString(
"cutRange",
nullptr,
true) ;
1191 return statOn(frame,
what,label,0,
nullptr,
xmin,
xmax,
ymax,cutSpec,cutRange,formatCmd) ;
1202 const char* cutSpec,
const char* cutRange,
const RooCmdArg* formatCmd)
1204 bool showLabel= (label !=
nullptr && strlen(label) > 0);
1206 std::string whatStr{
what};
1207 std::transform(whatStr.begin(), whatStr.end(), whatStr.begin(), [](
unsigned char c){ return std::toupper(c); });
1208 bool showN = whatStr.find(
'N') != std::string::npos;
1209 bool showR = whatStr.find(
'R') != std::string::npos;
1210 bool showM = whatStr.find(
'M') != std::string::npos;
1217 double dy(0.06),
ymin(
ymax-nPar*dy);
1218 if(showLabel)
ymin-= dy;
1222 if(!
box)
return nullptr;
1224 box->SetFillColor(0);
1225 box->SetBorderSize(1);
1226 box->SetTextAlign(12);
1227 box->SetTextSize(0.04F);
1228 box->SetFillStyle(1001);
1232 N.setPlotLabel(
"Entries") ;
1237 std::unique_ptr<TString> rmsText, meanText, NText;
1239 rmsText.reset(rms->format(sigDigits,options));
1240 meanText.reset(meanv->format(sigDigits,options));
1241 NText.reset(
N.format(sigDigits,options));
1243 rmsText.reset(rms->format(*formatCmd));
1244 meanText.reset(meanv->format(*formatCmd));
1245 NText.reset(
N.format(*formatCmd));
1247 if (showR)
box->AddText(rmsText->Data());
1248 if (showM)
box->AddText(meanText->Data());
1249 if (showN)
box->AddText(NText->Data());
1252 if(showLabel)
box->AddText(label);
1267 if(
nullptr == hist) {
1268 coutE(InputArguments) <<
ClassName() <<
"::" <<
GetName() <<
":fillHistogram: no valid histogram to fill" << std::endl;
1274 if(hdim != plotVars.
size()) {
1275 coutE(InputArguments) <<
ClassName() <<
"::" <<
GetName() <<
":fillHistogram: plotVars has the wrong dimension" << std::endl;
1286 if(realVar ==
nullptr) {
1288 <<
"\" of type " << var->
ClassName() << std::endl;
1294 assert(
nullptr !=
clone);
1297 <<
":fillHistogram: Data does not contain the variable '" << realVar->
GetName() <<
"'." << std::endl;
1306 localVars.
add(*found);
1311 std::unique_ptr<RooFormula> select;
1312 if (cuts !=
nullptr && strlen(cuts) > 0) {
1313 select = std::make_unique<RooFormula>(cuts, cuts,
_vars,
false);
1314 if (!select || !select->ok()) {
1315 coutE(InputArguments) <<
ClassName() <<
"::" <<
GetName() <<
":fillHistogram: invalid cuts \"" << cuts <<
"\"" << std::endl;
1327 assert(
nullptr != zvar);
1331 assert(
nullptr != yvar);
1335 assert(
nullptr != xvar);
1338 coutE(InputArguments) <<
ClassName() <<
"::" <<
GetName() <<
":fillHistogram: cannot fill histogram with "
1339 << hdim <<
" dimensions" << std::endl;
1344 const auto cutVec =
ROOT::Split(cutRange ? cutRange :
"",
",");
1351 for(
int i=0; i < nevent; ++i) {
1358 if (select && select->eval()==0) {
1364 bool selectByRange = true ;
1366 for (
const auto arg :
_vars) {
1367 bool selectThisArg = false ;
1368 for (
auto const& cut : cutVec) {
1369 if (!cut.empty() && arg->inRange(cut.c_str())) {
1370 selectThisArg = true ;
1374 if (!selectThisArg) {
1375 selectByRange = false ;
1381 if (!selectByRange) {
1408 if (we==0) we =
weight() ;
1433struct SplittingSetup {
1437 bool addWeightVar =
false;
1442 SplittingSetup setup;
1446 oocoutE(&
data, InputArguments) <<
"RooTreeData::split(" <<
data.GetName() <<
") ERROR category "
1447 << splitCat.
GetName() <<
" doesn't depend on any variable in this dataset"
1456 setup.cloneCat->attachDataSet(
data);
1459 if (!setup.cloneCat) {
1460 oocoutE(&
data, InputArguments) <<
"RooTreeData::split(" <<
data.GetName() <<
") ERROR category "
1461 << splitCat.
GetName() <<
" is fundamental and does not appear in this dataset"
1468 setup.subsetVars.add(*
data.get());
1470 std::unique_ptr<RooArgSet> vars{splitCat.
getVariables()};
1471 setup.subsetVars.remove(*vars,
true,
true);
1473 setup.subsetVars.remove(splitCat,
true,
true);
1478 setup.addWeightVar =
data.isWeighted();
1484 std::function<std::unique_ptr<RooAbsData>(
const char *label)> createEmptyData)
1486 auto dsetList = std::make_unique<TList>();
1489 if (createEmptyDataSets) {
1490 for (
const auto &nameIdx : cloneCat) {
1491 dsetList->Add(createEmptyData(nameIdx.first.c_str()).release());
1498 for (
int i = 0; i <
data.numEntries(); ++i) {
1503 dsetList->Add(subset);
1545 SplittingSetup setup = initSplit(*
this, splitCat);
1548 if (!setup.cloneCat)
1551 auto createEmptyData = [&](
const char *label) -> std::unique_ptr<RooAbsData> {
1552 return std::unique_ptr<RooAbsData>{
1553 emptyClone(label, label, &setup.subsetVars, setup.addWeightVar ?
"weight" :
nullptr)};
1556 return splitImpl(*
this, *setup.cloneCat, createEmptyDataSets, createEmptyData);
1579 SplittingSetup setup = initSplit(*
this, splitCat);
1582 if (!setup.cloneCat)
1587 auto getPdfObservables = [
this, &simPdf](
const char *label) {
1590 catPdf->getObservables(this->
get(), obsSet);
1597 for (
const auto &catPair : splitCat) {
1598 allObservables.
add(getPdfObservables(catPair.first.c_str()));
1600 setup.subsetVars.remove(allObservables,
true,
true);
1602 auto createEmptyData = [&](
const char *label) -> std::unique_ptr<RooAbsData> {
1604 RooArgSet subsetVarsCat(setup.subsetVars);
1605 subsetVarsCat.
add(getPdfObservables(label));
1606 return std::unique_ptr<RooAbsData>{
1607 this->
emptyClone(label, label, &subsetVarsCat, setup.addWeightVar ?
"weight" :
nullptr)};
1610 return splitImpl(*
this, *setup.cloneCat, createEmptyDataSets, createEmptyData);
1716 pc.
defineInt(
"nbins",
"BinningSpec",0,100) ;
1721 pc.
defineInt(
"lineColor",
"LineColor",0,-999) ;
1722 pc.
defineInt(
"lineStyle",
"LineStyle",0,-999) ;
1723 pc.
defineInt(
"lineWidth",
"LineWidth",0,-999) ;
1724 pc.
defineInt(
"markerColor",
"MarkerColor",0,-999) ;
1725 pc.
defineInt(
"markerStyle",
"MarkerStyle",0,-999) ;
1727 pc.
defineInt(
"fillColor",
"FillColor",0,-999) ;
1728 pc.
defineInt(
"fillStyle",
"FillStyle",0,-999) ;
1730 pc.
defineInt(
"histInvisible",
"Invisible",0,0) ;
1731 pc.
defineInt(
"refreshFrameNorm",
"RefreshNorm",0,1) ;
1737 pc.
defineMutex(
"DataError",
"Asymmetry",
"Efficiency") ;
1738 pc.
defineMutex(
"Binning",
"BinningName",
"BinningSpec") ;
1778 coutI(InputArguments) <<
"RooAbsData::plotOn(" <<
GetName()
1779 <<
") INFO: dataset has non-integer weights, auto-selecting SumW2 errors instead of Poisson errors" << std::endl ;
1785 <<
" to add to in RooPlot" << std::endl ;
1790 if (!asymCat && !effCat) {
1792 }
else if (asymCat) {
1798 int lineColor = pc.
getInt(
"lineColor") ;
1799 int lineStyle = pc.
getInt(
"lineStyle") ;
1800 int lineWidth = pc.
getInt(
"lineWidth") ;
1801 int markerColor = pc.
getInt(
"markerColor") ;
1802 int markerStyle = pc.
getInt(
"markerStyle") ;
1804 int fillColor = pc.
getInt(
"fillColor") ;
1805 int fillStyle = pc.
getInt(
"fillStyle") ;
1836 if(
nullptr == frame) {
1841 if(
nullptr == var) {
1843 <<
":plotOn: frame does not specify a plot variable" << std::endl;
1848 const std::string histName = std::string{
GetName()} +
"_plot";
1849 std::unique_ptr<TH1> hist;
1865 <<
":plotOn: fillHistogram() failed" << std::endl;
1871 double nomBinWidth ;
1880 if(
nullptr ==
graph) {
1882 <<
":plotOn: unable to create a RooHist object" << std::endl;
1891 std::unique_ptr<RooAbsData> tmp{
const_cast<RooAbsData*
>(
this)->
reduce(*var)};
1892 nEnt = tmp->sumEntries() ;
1897 coutI(Plotting) <<
"RooTreeData::plotOn: plotting " << hist->GetSumOfWeights() <<
" events out of " << nEnt <<
" total events" << std::endl ;
1898 graph->setRawEntries(nEnt) ;
1905 if (!
graph->hasIdenticalBinning(*otherGraph)) {
1906 coutE(Plotting) <<
"RooTreeData::plotOn: ERROR Histogram to be added to, '" << o.
addToHistName <<
"',has different binning" << std::endl ;
1920 std::string hname = std::string{
"h_"} +
GetName();
1922 hname += std::string{
"_CutRange["} + o.
cutRange +
"]";
1925 hname += std::string{
"_Cut["} + o.
cuts +
"]";
1927 graph->SetName(hname.c_str()) ;
1956 if(
nullptr == frame) {
1961 if(
nullptr == var) {
1963 <<
":plotAsymOn: frame does not specify a plot variable" << std::endl;
1969 hist1Name +=
"_plot1";
1970 std::unique_ptr<TH1> hist1, hist2;
1971 hist2Name +=
"_plot2";
1985 assert(hist1 && hist2);
1987 std::string cuts1,cuts2 ;
1999 <<
":plotAsymOn: createHistogram() failed" << std::endl;
2021 graph->SetName(hname.c_str()) ;
2046 if(
nullptr == frame) {
2051 if(
nullptr == var) {
2053 <<
":plotEffOn: frame does not specify a plot variable" << std::endl;
2059 hist1Name +=
"_plot1";
2060 std::unique_ptr<TH1> hist1, hist2;
2061 hist2Name +=
"_plot2";
2075 assert(hist1 && hist2);
2077 std::string cuts1,cuts2 ;
2089 <<
":plotEffOn: createHistogram() failed" << std::endl;
2111 graph->SetName(hname.c_str()) ;
2133 std::unique_ptr<RooArgSet> tableSet;
2137 <<
" is not in dataset and is also not dependent on data set" << std::endl ;
2142 tableSet = std::make_unique<RooArgSet>();
2143 if (
RooArgSet(cat).snapshot(*tableSet,
true)) {
2144 coutE(Plotting) <<
"RooTreeData::table(" <<
GetName() <<
") Couldn't deep-clone table category, abort." << std::endl;
2153 std::unique_ptr<RooFormulaVar> cutVar;
2154 std::string tableName{
GetName()};
2155 if (cuts && strlen(cuts)) {
2160 cutVar = std::make_unique<RooFormulaVar>(
"cutVar",cuts,
_vars) ;
2166 for(
int i=0; i < nevent; ++i) {
2169 if (cutVar && cutVar->getVal()==0) continue ;
2187 coutE(InputArguments) <<
"RooDataSet::getRange(" <<
GetName() <<
") ERROR: unknown variable: " << var.
GetName() << std::endl ;
2191 auto varPtr =
dynamic_cast<const RooRealVar*
>(arg);
2194 coutE(InputArguments) <<
"RooDataSet::getRange(" <<
GetName() <<
") ERROR: variable " << var.
GetName() <<
" is not of type RooRealVar" << std::endl ;
2200 coutE(InputArguments) <<
"RooDataSet::getRange(" <<
GetName() <<
") WARNING: empty dataset" << std::endl ;
2209 if (varPtr->getVal()<lowest) {
2210 lowest = varPtr->getVal() ;
2212 if (varPtr->getVal()>highest) {
2213 highest = varPtr->getVal() ;
2218 if (symMode==
false) {
2220 double margin = marginFrac*(highest-lowest) ;
2228 double mom1 =
moment(*varPtr,1) ;
2229 double delta = ((highest-mom1)>(mom1-lowest)?(highest-mom1):(mom1-lowest))*(1+marginFrac) ;
2230 lowest = mom1-delta ;
2231 highest = mom1+delta ;
2254 pruneSet.
remove(*usedObs,
true,
true) ;
2257 for(
auto * var : *
get()) {
2259 pruneSet.
add(*var) ;
2264 if (!pruneSet.
empty()) {
2269 for(
auto const* rrv : dynamic_range_cast<RooRealVar*>(*usedObs)) {
2270 if (rrv && !rrv->getBinning().isShareable()) {
2272 RooAbsReal* loFunc = rrv->getBinning().lowBoundFunc() ;
2273 RooAbsReal* hiFunc = rrv->getBinning().highBoundFunc() ;
2280 if (!depObs.
empty()) {
2281 pruneSet.
remove(depObs,
true,
true) ;
2289 pruneSet.
remove(keepObsList,
true,
true) ;
2291 if (!pruneSet.
empty()) {
2294 cxcoutI(Optimization) <<
"RooTreeData::optimizeReadingForTestStatistic(" <<
GetName() <<
"): Observables " << pruneSet
2295 <<
" 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" << std::endl ;
2306 bool ret(
true), anyClient(
false) ;
2310 if (!cacheList.
find(client->GetName())) {
2316 return anyClient?ret:false ;
2323 _dstore->attachBuffers(extObs) ;
2393 return _dstore->hasFilledCache() ;
2406 coutW(InputArguments) <<
"RooAbsData::tree(" <<
GetName() <<
") WARNING: is not of StorageType::Tree. "
2407 <<
"Use GetClonedTree() instead or convert to tree storage." << std::endl;
2445 if (iter.second == obj) {
2446 iter.second =
nullptr;
2462 arg->setAttribute(
"global",
true);
2464 if(
auto lval =
dynamic_cast<RooAbsRealLValue*
>(arg)) lval->setConstant(
true);
2502 if (eventWeights.empty()) {
2507 for (std::size_t i = 0; i < eventWeights.size(); ++i) {
2510 return kahanWeight.
Sum();
2540 const char *
name)
const
2555 const char *cuts,
const char *
name)
const
2558 static int counter(0);
2560 std::unique_ptr<RooAbsReal> ownedPlotVarX;
2563 if (plotVarX ==
nullptr) {
2567 <<
" is not in dataset and is also not dependent on data set" << std::endl;
2573 plotVarX = ownedPlotVarX.get();
2579 std::unique_ptr<RooAbsReal> ownedPlotVarY;
2582 if (plotVarY ==
nullptr) {
2586 <<
" is not in dataset and is also not dependent on data set" << std::endl;
2592 plotVarY = ownedPlotVarY.get();
2599 std::unique_ptr<RooFormula> select;
2600 if (
nullptr != cuts && strlen(cuts)) {
2601 select = std::make_unique<RooFormula>(cuts, cuts,
_vars);
2602 if (!select->ok()) {
2607 const std::string histName = std::string{
GetName()} +
"_" +
name +
"_" +
Form(
"%08x", counter++);
2613 coutE(DataHandling) <<
GetName() <<
"::createHistogram: unable to create a new histogram" << std::endl;
2619 for (
int i = 0; i < nevent; ++i) {
2622 if (select && select->eval() == 0)
2624 histogram->Fill(plotVarX->getVal(), plotVarY->
getVal(),
weight());
TObject * clone(const char *newname) const override
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.
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...
Common abstract base class for objects that represent a value and a "shape" in RooFit.
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 expression 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
Abstract base class for objects that represent a discrete value that can be set from the outside,...
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.
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
std::map< RooFit::Detail::DataKey, std::span< const double > > RealSpans
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
RooFit::OwningPtr< TMatrixDSym > corrcovMatrix(const RooArgList &vars, const char *cutSpec, const char *cutRange, bool corr) const
Return covariance matrix from data for given list of observables.
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()
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 RooFit::OwningPtr< TList > split(const RooAbsCategory &splitCat, bool createEmptyDataSets=false) const
Split the dataset into subsets based on states of a categorical variable in this 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.
RooFit::OwningPtr< RooAbsData > reduce(const RooCmdArg &arg1, const RooCmdArg &arg2={}, const RooCmdArg &arg3={}, const RooCmdArg &arg4={}, const RooCmdArg &arg5={}, const RooCmdArg &arg6={}, const RooCmdArg &arg7={}, const RooCmdArg &arg8={})
Create a reduced copy of this dataset.
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'.
virtual RooPlot * plotOn(RooPlot *frame, const RooCmdArg &arg1={}, const RooCmdArg &arg2={}, const RooCmdArg &arg3={}, const RooCmdArg &arg4={}, const RooCmdArg &arg5={}, const RooCmdArg &arg6={}, const RooCmdArg &arg7={}, const RooCmdArg &arg8={}) const
static StorageType defaultStorageType
std::map< RooFit::Detail::DataKey, std::span< const RooAbsCategory::value_type > > CategorySpans
virtual std::span< 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).
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
virtual RooPlot * statOn(RooPlot *frame, const RooCmdArg &arg1={}, const RooCmdArg &arg2={}, const RooCmdArg &arg3={}, const RooCmdArg &arg4={}, const RooCmdArg &arg5={}, const RooCmdArg &arg6={}, const RooCmdArg &arg7={}, const RooCmdArg &arg8={})
Add a box with statistics information to the specified frame.
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.
void convertToVectorStore()
Convert tree-based storage to vector-based storage.
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.
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)
virtual RooFit::OwningPtr< RooAbsData > emptyClone(const char *newName=nullptr, const char *newTitle=nullptr, const RooArgSet *vars=nullptr, const char *wgtVarName=nullptr) const =0
void SetNameTitle(const char *name, const char *title) override
Set all the TNamed parameters (name and title).
void copyImpl(const RooAbsData &other, const char *newname)
virtual void resetCache()
Internal method – Remove cached function values.
virtual std::unique_ptr< 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
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.
void attachBuffers(const RooArgSet &extObs)
std::map< std::string, RooAbsData * > _ownedComponents
Owned external components.
static StorageType getDefaultStorageType()
void Streamer(TBuffer &) override
Stream an object of class RooAbsData.
TH1 * createHistogram(const char *name, const RooAbsRealLValue &xvar, const RooCmdArg &arg1={}, const RooCmdArg &arg2={}, const RooCmdArg &arg3={}, const RooCmdArg &arg4={}, const RooCmdArg &arg5={}, const RooCmdArg &arg6={}, const RooCmdArg &arg7={}, const RooCmdArg &arg8={}) const
Calls createHistogram(const char *name, const RooAbsRealLValue& xvar, const RooLinkedList& argList) c...
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.
Abstract interface for all probability density functions.
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
Retrieve binning configuration with given name or default binning.
virtual double getMax(const char *name=nullptr) const
Get maximum of currently defined range.
TH1 * createHistogram(const char *name, const RooCmdArg &arg1={}, const RooCmdArg &arg2={}, const RooCmdArg &arg3={}, const RooCmdArg &arg4={}, const RooCmdArg &arg5={}, const RooCmdArg &arg6={}, const RooCmdArg &arg7={}, const RooCmdArg &arg8={}) const
virtual double getMin(const char *name=nullptr) const
Get minimum of currently defined range.
Abstract base class for objects that represent a real value and implements functionality common to al...
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.
Object to represent discrete states.
Named container for two doubles, two integers two object points and three string pointers that can be...
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.
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.
double getDouble(const char *name, double defaultValue=0.0) const
Return double property registered with name 'name'.
bool defineDouble(const char *name, const char *argName, int doubleNum, double defValue=0.0)
Define double property name 'name' mapped to double in slot 'doubleNum' in RooCmdArg with name argNam...
static void stripCmdList(RooLinkedList &cmdList, const char *cmdsToPurge)
Utility function that strips command names listed (comma separated) in cmdsToPurge from cmdList.
RooArgSet * getSet(const char *name, RooArgSet *set=nullptr) const
Return RooArgSet property registered with name 'name'.
bool defineSet(const char *name, const char *argName, int setNum, const RooArgSet *set=nullptr)
Define TObject property name 'name' mapped to object in slot 'setNum' in RooCmdArg with name argName ...
bool ok(bool verbose) const
Return true of parsing was successful.
bool defineObject(const char *name, const char *argName, int setNum, const TObject *obj=nullptr, bool isArray=false)
Define TObject property name 'name' mapped to object in slot 'setNum' in RooCmdArg with name argName ...
const char * getString(const char *name, const char *defaultValue="", bool convEmptyToNull=false) const
Return string property registered with name 'name'.
bool defineString(const char *name, const char *argName, int stringNum, const char *defValue="", bool appendMode=false)
Define double property name 'name' mapped to double in slot 'stringNum' in RooCmdArg with name argNam...
bool defineInt(const char *name, const char *argName, int intNum, int defValue=0)
Define integer property name 'name' mapped to integer in slot 'intNum' in RooCmdArg with name argName...
void allowUndefined(bool flag=true)
If flag is true the processing of unrecognized RooCmdArgs is not considered an error.
int getInt(const char *name, int defaultValue=0) const
Return integer property registered with name 'name'.
TObject * getObject(const char *name, TObject *obj=nullptr) const
Return TObject property registered with name 'name'.
RooCompositeDataStore combines several disjunct datasets into one.
The RooDataHist is a container class to hold N-dimensional binned data.
RooDataSet is a container class to hold unbinned data.
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 object with given name.
RooMultiCategory connects several RooAbsCategory objects into a single category.
@ 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.
void addObject(TObject *obj, Option_t *drawOptions="", bool invisible=false)
Add a generic object to this plot.
TObject * findObject(const char *name, const TClass *tClass=nullptr) const
Find the named object in our list of items and return a pointer to it.
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.
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
The RooStringView is a wrapper around a C-style string that can also be constructed from a std::strin...
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.
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 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 ZVar(const RooAbsRealLValue &var, const RooCmdArg &arg={})
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.
OwningPtr< T > owningPtr(std::unique_ptr< T > &&ptr)
Internal helper to turn a std::unique_ptr<T> into an OwningPtr.
T * OwningPtr
An alias for raw pointers for indicating that the return type of a RooFit function is an owning point...
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)