126static std::map<RooAbsData*,int>
_dcc ;
135 cout <<
"Composite storage is not a valid *default* storage type." << endl;
186 _vars(
"Dataset Variables"),
187 _cachedVars(
"Cached Variables"),
201 for (
const auto var : vars) {
202 if (!var->isFundamental()) {
204 <<
"): Data set cannot contain non-fundamental types, ignoring " << var->GetName()
206 throw std::invalid_argument(std::string(
"Only fundamental variables can be placed into datasets. This is violated for ") + var->GetName());
213 for (
auto var :
_vars) {
226 TNamed(newname ? newname : other.GetName(),other.GetTitle()),
228 _cachedVars(
"Cached Variables"),
236 for (
auto var :
_vars) {
245 map<string,RooAbsDataStore*> smap ;
249 smap[itero.first] = dclone->
store();
278 for (
const auto var :
_vars) {
279 var->attachDataSet(*
this) ;
287 map<string,RooAbsDataStore*> smap ;
291 smap[itero.first] = dclone->
store();
335 delete iter->second ;
356 bool ret =
_dstore->changeObservableName(from,to) ;
399 _dstore->cacheArgs(cacheOwner,varSet,nset,skipZeroWeights) ;
416 _dstore->attachCache(newOwner, cachedVars) ;
423 _dstore->setArgStatus(set,active) ;
455 pc.defineString(
"name",
"Name",0,
"") ;
456 pc.defineString(
"title",
"Title",0,
"") ;
457 pc.defineString(
"cutRange",
"CutRange",0,
"") ;
458 pc.defineString(
"cutSpec",
"CutSpec",0,
"") ;
459 pc.defineObject(
"cutVar",
"CutVar",0,0) ;
460 pc.defineInt(
"evtStart",
"EventRange",0,0) ;
461 pc.defineInt(
"evtStop",
"EventRange",1,std::numeric_limits<int>::max()) ;
462 pc.defineSet(
"varSel",
"SelectVars",0,0) ;
463 pc.defineMutex(
"CutVar",
"CutSpec") ;
466 pc.process(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) ;
472 const char* cutRange =
pc.getString(
"cutRange",0,
true) ;
473 const char* cutSpec =
pc.getString(
"cutSpec",0,
true) ;
475 Int_t nStart =
pc.getInt(
"evtStart",0) ;
476 Int_t nStop =
pc.getInt(
"evtStop",std::numeric_limits<int>::max()) ;
478 const char*
name =
pc.getString(
"name",0,
true) ;
479 const char* title =
pc.getString(
"title",0,
true) ;
484 varSubset.
add(*varSet) ;
485 for (
const auto arg : varSubset) {
488 << arg->GetName() <<
" not in dataset, ignored" << endl ;
489 varSubset.remove(*arg) ;
500 ret =
reduceEng(varSubset,&cutVarTmp,cutRange,nStart,nStop) ;
504 ret =
reduceEng(varSubset,cutVar,cutRange,nStart,nStop) ;
508 if (!ret)
return nullptr;
555 for (
const auto arg : varSubset) {
558 << arg->GetName() <<
" not in dataset, ignored" << endl ;
564 if (cut && strlen(cut)>0) {
566 ret =
reduceEng(varSubset2,&cutVar,0,0,std::numeric_limits<std::size_t>::max());
568 ret =
reduceEng(varSubset2,0,0,0,std::numeric_limits<std::size_t>::max());
588 << arg->GetName() <<
" not in dataset, ignored" << endl ;
593 RooAbsData* ret =
reduceEng(varSubset2,&cutVar,0,0,std::numeric_limits<std::size_t>::max()) ;
655 const auto varNames =
ROOT::Split(varNameList,
",:");
656 RooRealVar* vars[3] = {
nullptr,
nullptr,
nullptr};
658 for (
unsigned int i = 0; i < varNames.size(); ++i) {
660 coutW(
InputArguments) <<
"RooAbsData::createHistogram(" <<
GetName() <<
"): Can only create 3-dimensional histograms. Variable "
661 << i <<
" " << varNames[i] <<
" unused." << std::endl;
667 coutE(
InputArguments) <<
"RooAbsData::createHistogram(" <<
GetName() <<
") ERROR: dataset does not contain an observable named " << varNames[i] << std::endl;
673 coutE(
InputArguments) <<
"RooAbsData::createHistogram(" <<
GetName() <<
"): No variable to be histogrammed in list '" << varNameList <<
"'" << std::endl;
730 pc.defineString(
"cutRange",
"CutRange",0,
"",
true) ;
731 pc.defineString(
"cutString",
"CutSpec",0,
"") ;
732 pc.defineObject(
"yvar",
"YVar",0,0) ;
733 pc.defineObject(
"zvar",
"ZVar",0,0) ;
734 pc.allowUndefined() ;
737 pc.process(argList) ;
742 const char* cutSpec =
pc.getString(
"cutString",0,
true) ;
743 const char* cutRange =
pc.getString(
"cutRange",0,
true) ;
764 ownedCmds.
Add(bincmd) ;
765 argList.
Replace(autoRD,bincmd) ;
776 ((
RooCmdArg*)argList.
find(
"YVar"))->subArgs().Replace(autoRDY,bincmd) ;
789 ((
RooCmdArg*)argList.
find(
"ZVar"))->subArgs().Replace(autoRDZ,bincmd) ;
811 string prodName(
"(") ;
812 for(
auto * arg : catSet) {
815 if (varsArg != 0) catSet2.
add(*varsArg) ;
816 else catSet2.
add(*arg) ;
817 if (prodName.length()>1) {
820 prodName += arg->GetName() ;
822 coutW(
InputArguments) <<
"RooAbsData::table(" <<
GetName() <<
") non-RooAbsCategory input argument " << arg->GetName() <<
" ignored" << endl ;
828 return table(tmp,cuts,opts) ;
882 if (order==1)
return 0 ;
883 if (order==2)
return 1 ;
900 double offset = order>1 ?
moment(var,1,cutSpec,cutRange) : 0 ;
920 auto varPtr =
dynamic_cast<const RooRealVar*
>(arg);
934 std::unique_ptr<RooFormula> select;
944 if (select && select->eval()==0) continue ;
945 if (cutRange && vars->
allInRange(cutRange)) continue ;
966 coutE(
InputArguments) <<
"RooDataSet::" << methodname <<
"(" <<
GetName() <<
") ERROR: variable : " << extVar.
GetName() <<
" is not of type RooRealVar in data" << endl ;
980 if (!xdata||!ydata)
return 0 ;
984 coutW(
InputArguments) <<
"RooDataSet::" << (corr?
"correlation":
"covariance") <<
"(" <<
GetName() <<
") WARNING: empty dataset, returning zero" << endl ;
992 double xysum(0),xsum(0),ysum(0),x2sum(0),y2sum(0);
996 if (select && select->
eval()==0) continue ;
997 if (cutRange && vars->
allInRange(cutRange)) continue ;
1018 if (select)
delete select ;
1022 return (xysum-xsum*ysum)/(
sqrt(x2sum-(xsum*xsum))*
sqrt(y2sum-(ysum*ysum))) ;
1024 return (xysum-xsum*ysum);
1034 for(
auto * var : static_range_cast<RooRealVar*>(vars)) {
1039 varList.
add(*datavar) ;
1050 std::unique_ptr<RooFormula> select = cutSpec ? std::make_unique<RooFormula>(
"select",cutSpec,*
get()) :
nullptr;
1053 std::vector<double> xsum(varList.
size()) ;
1054 std::vector<double> x2sum(varList.
size()) ;
1059 if (select && select->eval()==0) continue ;
1060 if (cutRange && dvars->
allInRange(cutRange)) continue ;
1062 for(std::size_t ix = 0; ix < varList.
size(); ++ix) {
1063 auto varx =
static_cast<RooRealVar const&
>(varList[ix]);
1064 xsum[ix] +=
weight() * varx.getVal() ;
1066 x2sum[ix] +=
weight() * varx.getVal() * varx.getVal();
1069 for(std::size_t iy = ix; iy < varList.
size(); ++iy) {
1070 auto vary =
static_cast<RooRealVar const&
>(varList[iy]);
1071 xysum(ix,iy) +=
weight() * varx.getVal() * vary.getVal();
1072 xysum(iy,ix) = xysum(ix,iy) ;
1079 for (std::size_t ix=0 ; ix<varList.
size() ; ix++) {
1084 for (std::size_t iy=0 ; iy<varList.
size() ; iy++) {
1085 xysum(ix,iy) /=
sumEntries(cutSpec, cutRange) ;
1091 for (std::size_t ix=0 ; ix<varList.
size() ; ix++) {
1092 for (std::size_t iy=0 ; iy<varList.
size() ; iy++) {
1093 (*C)(ix,iy) = xysum(ix,iy)-xsum[ix]*xsum[iy] ;
1095 (*C)(ix,iy) /=
std::sqrt((x2sum[ix]-(xsum[ix]*xsum[ix]))*(x2sum[iy]-(xsum[iy]*xsum[iy]))) ;
1116 std::string
name = std::string{var.
GetName()} +
"Mean";
1117 std::string title = std::string{
"Mean of "} + var.
GetTitle();
1119 meanv->setConstant(
false) ;
1122 std::string label =
"<" + std::string{var.
getPlotLabel()} +
">";
1123 meanv->setPlotLabel(label.c_str());
1126 double meanVal=
moment(var,1,0,cutSpec,cutRange) ;
1129 double rmsVal=
sqrt(
moment(var,2,meanVal,cutSpec,cutRange)*
N/(
N-1));
1130 meanv->setVal(meanVal) ;
1131 meanv->setError(
N > 0 ? rmsVal/
sqrt(
N) : 0);
1149 std::string
name(var.
GetName()),title(
"RMS of ") ;
1153 rms->setConstant(
false) ;
1158 rms->setPlotLabel(label.c_str());
1161 double meanVal(
moment(var,1,0,cutSpec,cutRange)) ;
1163 double rmsVal=
sqrt(
moment(var,2,meanVal,cutSpec,cutRange)*
N/(
N-1));
1164 rms->setVal(rmsVal) ;
1165 rms->setError(rmsVal/
sqrt(2*
N));
1213 pc.defineString(
"what",
"What",0,
"MNR") ;
1214 pc.defineString(
"label",
"Label",0,
"") ;
1215 pc.defineDouble(
"xmin",
"Layout",0,0.65) ;
1216 pc.defineDouble(
"xmax",
"Layout",1,0.99) ;
1217 pc.defineInt(
"ymaxi",
"Layout",0,
Int_t(0.95*10000)) ;
1218 pc.defineString(
"formatStr",
"Format",0,
"NELU") ;
1219 pc.defineInt(
"sigDigit",
"Format",0,2) ;
1220 pc.defineInt(
"dummy",
"FormatArgs",0,0) ;
1221 pc.defineString(
"cutRange",
"CutRange",0,
"",
true) ;
1222 pc.defineString(
"cutString",
"CutSpec",0,
"") ;
1223 pc.defineMutex(
"Format",
"FormatArgs") ;
1226 pc.process(cmdList) ;
1231 const char* label =
pc.getString(
"label") ;
1232 double xmin =
pc.getDouble(
"xmin") ;
1233 double xmax =
pc.getDouble(
"xmax") ;
1234 double ymax =
pc.getInt(
"ymaxi") / 10000. ;
1235 const char* formatStr =
pc.getString(
"formatStr") ;
1236 Int_t sigDigit =
pc.getInt(
"sigDigit") ;
1237 const char*
what =
pc.getString(
"what") ;
1239 const char* cutSpec =
pc.getString(
"cutString",0,
true) ;
1240 const char* cutRange =
pc.getString(
"cutRange",0,
true) ;
1242 if (
pc.hasProcessed(
"FormatArgs")) {
1244 return statOn(frame,
what,label,0,0,
xmin,
xmax,
ymax,cutSpec,cutRange,formatCmd) ;
1255 const char* cutSpec,
const char* cutRange,
const RooCmdArg* formatCmd)
1257 bool showLabel= (label !=
nullptr && strlen(label) > 0);
1259 std::string whatStr{
what};
1260 std::transform(whatStr.begin(), whatStr.end(), whatStr.begin(), [](
unsigned char c){ return std::toupper(c); });
1261 bool showN = whatStr.find(
'N') != std::string::npos;
1262 bool showR = whatStr.find(
'R') != std::string::npos;
1263 bool showM = whatStr.find(
'M') != std::string::npos;
1270 double dy(0.06),
ymin(
ymax-nPar*dy);
1271 if(showLabel)
ymin-= dy;
1275 if(!
box)
return nullptr;
1277 box->SetFillColor(0);
1278 box->SetBorderSize(1);
1279 box->SetTextAlign(12);
1280 box->SetTextSize(0.04F);
1281 box->SetFillStyle(1001);
1285 N.setPlotLabel(
"Entries") ;
1290 std::unique_ptr<TString> rmsText, meanText, NText;
1292 rmsText.reset(rms->format(sigDigits,options));
1293 meanText.reset(meanv->format(sigDigits,options));
1294 NText.reset(
N.format(sigDigits,options));
1296 rmsText.reset(rms->format(*formatCmd));
1297 meanText.reset(meanv->format(*formatCmd));
1298 NText.reset(
N.format(*formatCmd));
1300 if (showR)
box->AddText(rmsText->Data());
1301 if (showM)
box->AddText(meanText->Data());
1302 if (showN)
box->AddText(NText->Data());
1305 if(showLabel)
box->AddText(label);
1320 if(
nullptr == hist) {
1327 if(hdim != plotVars.
size()) {
1341 <<
"\" of type " << var->
ClassName() << endl;
1350 <<
":fillHistogram: Data does not contain the variable '" << realVar->
GetName() <<
"'." << endl;
1356 localVars.
add(*clone);
1359 localVars.
add(*found);
1364 std::unique_ptr<RooFormula> select;
1365 if (cuts !=
nullptr && strlen(cuts) > 0) {
1366 select = std::make_unique<RooFormula>(cuts, cuts,
_vars,
false);
1367 if (!select || !select->ok()) {
1392 << hdim <<
" dimensions" << endl;
1397 const auto cutVec =
ROOT::Split(cutRange ? cutRange :
"",
",");
1404 for(
Int_t i=0; i < nevent; ++i) {
1411 if (select && select->eval()==0) {
1417 bool selectByRange = true ;
1419 for (
const auto arg :
_vars) {
1420 bool selectThisArg = false ;
1421 for (
auto const& cut : cutVec) {
1422 if (!cut.empty() && arg->inRange(cut.c_str())) {
1423 selectThisArg = true ;
1427 if (!selectThisArg) {
1428 selectByRange = false ;
1434 if (!selectByRange) {
1461 if (we==0) we =
weight() ;
1486struct SplittingSetup {
1490 bool addWeightVar =
false;
1495 SplittingSetup setup;
1500 << splitCat.
GetName() <<
" doesn't depend on any variable in this dataset"
1509 setup.cloneCat->attachDataSet(
data);
1512 if (!setup.cloneCat) {
1514 << splitCat.
GetName() <<
" is fundamental and does not appear in this dataset"
1521 setup.subsetVars.add(*
data.get());
1523 std::unique_ptr<RooArgSet> vars{splitCat.
getVariables()};
1524 setup.subsetVars.remove(*vars,
true,
true);
1526 setup.subsetVars.remove(splitCat,
true,
true);
1532 auto newweight = std::make_unique<RooRealVar>(
"weight",
"weight", -1e9, 1e9);
1533 setup.subsetVars.add(*newweight);
1534 setup.addWeightVar =
true;
1535 setup.ownedSet.addOwned(std::move(newweight));
1544 auto dsetList =
new TList;
1547 if (createEmptyDataSets) {
1548 for (
const auto &nameIdx : cloneCat) {
1549 RooAbsData *subset = createEmptyData(nameIdx.first.c_str());
1555 const bool propWeightSquared =
data.isWeighted();
1556 for (
Int_t i = 0; i <
data.numEntries(); ++i) {
1560 subset = createEmptyData(cloneCat.getCurrentLabel());
1563 subset->
add(*row,
data.weight(), propWeightSquared ?
data.weightSquared() : 0.0);
1582 SplittingSetup setup = initSplit(*
this, splitCat);
1585 if(!setup.cloneCat)
return nullptr;
1587 auto createEmptyData = [&](
const char * label) ->
RooAbsData* {
1588 return emptyClone(label, label, &setup.subsetVars, setup.addWeightVar ?
"weight" :
nullptr);
1591 return splitImpl(*
this, *setup.cloneCat, createEmptyDataSets, createEmptyData);
1607 SplittingSetup setup = initSplit(*
this, splitCat);
1610 if(!setup.cloneCat)
return nullptr;
1614 auto getPdfObservables = [
this, &simpdf](
const char * label) {
1617 catPdf->getObservables(this->
get(), obsSet);
1624 for(
const auto& catPair : splitCat) {
1625 allObservables.
add(getPdfObservables(catPair.first.c_str()));
1627 setup.subsetVars.remove(allObservables,
true,
true);
1629 auto createEmptyData = [&](
const char * label) ->
RooAbsData* {
1631 RooArgSet subsetVarsCat(setup.subsetVars);
1632 subsetVarsCat.
add(getPdfObservables(label));
1633 return this->
emptyClone(label, label, &subsetVarsCat, setup.addWeightVar ?
"weight" :
nullptr);
1636 return splitImpl(*
this, *setup.cloneCat, createEmptyDataSets, createEmptyData);
1735 pc.defineString(
"drawOption",
"DrawOption",0,
"P") ;
1736 pc.defineString(
"cutRange",
"CutRange",0,
"",
true) ;
1737 pc.defineString(
"cutString",
"CutSpec",0,
"") ;
1738 pc.defineString(
"histName",
"Name",0,
"") ;
1739 pc.defineObject(
"cutVar",
"CutVar",0) ;
1740 pc.defineObject(
"binning",
"Binning",0) ;
1741 pc.defineString(
"binningName",
"BinningName",0,
"") ;
1742 pc.defineInt(
"nbins",
"BinningSpec",0,100) ;
1743 pc.defineDouble(
"xlo",
"BinningSpec",0,0) ;
1744 pc.defineDouble(
"xhi",
"BinningSpec",1,1) ;
1745 pc.defineObject(
"asymCat",
"Asymmetry",0) ;
1746 pc.defineObject(
"effCat",
"Efficiency",0) ;
1747 pc.defineInt(
"lineColor",
"LineColor",0,-999) ;
1748 pc.defineInt(
"lineStyle",
"LineStyle",0,-999) ;
1749 pc.defineInt(
"lineWidth",
"LineWidth",0,-999) ;
1750 pc.defineInt(
"markerColor",
"MarkerColor",0,-999) ;
1751 pc.defineInt(
"markerStyle",
"MarkerStyle",0,-999) ;
1752 pc.defineDouble(
"markerSize",
"MarkerSize",0,-999) ;
1753 pc.defineInt(
"fillColor",
"FillColor",0,-999) ;
1754 pc.defineInt(
"fillStyle",
"FillStyle",0,-999) ;
1756 pc.defineInt(
"histInvisible",
"Invisible",0,0) ;
1757 pc.defineInt(
"refreshFrameNorm",
"RefreshNorm",0,1) ;
1758 pc.defineString(
"addToHistName",
"AddTo",0,
"") ;
1759 pc.defineDouble(
"addToWgtSelf",
"AddTo",0,1.) ;
1760 pc.defineDouble(
"addToWgtOther",
"AddTo",1,1.) ;
1761 pc.defineDouble(
"xErrorSize",
"XErrorSize",0,1.) ;
1762 pc.defineDouble(
"scaleFactor",
"Rescale",0,1.) ;
1763 pc.defineMutex(
"DataError",
"Asymmetry",
"Efficiency") ;
1764 pc.defineMutex(
"Binning",
"BinningName",
"BinningSpec") ;
1767 pc.process(argList) ;
1776 o.
cuts =
pc.getString(
"cutString") ;
1777 if (
pc.hasProcessed(
"Binning")) {
1779 }
else if (
pc.hasProcessed(
"BinningName")) {
1781 }
else if (
pc.hasProcessed(
"BinningSpec")) {
1782 double xlo =
pc.getDouble(
"xlo") ;
1783 double xhi =
pc.getDouble(
"xhi") ;
1792 o.
cutRange =
pc.getString(
"cutRange",0,
true) ;
1793 o.
histName =
pc.getString(
"histName",0,
true) ;
1805 <<
") INFO: dataset has non-integer weights, auto-selecting SumW2 errors instead of Poisson errors" << endl ;
1811 <<
" to add to in RooPlot" << endl ;
1816 if (!asymCat && !effCat) {
1818 }
else if (asymCat) {
1824 Int_t lineColor =
pc.getInt(
"lineColor") ;
1825 Int_t lineStyle =
pc.getInt(
"lineStyle") ;
1826 Int_t lineWidth =
pc.getInt(
"lineWidth") ;
1827 Int_t markerColor =
pc.getInt(
"markerColor") ;
1828 Int_t markerStyle =
pc.getInt(
"markerStyle") ;
1829 Size_t markerSize =
pc.getDouble(
"markerSize") ;
1830 Int_t fillColor =
pc.getInt(
"fillColor") ;
1831 Int_t fillStyle =
pc.getInt(
"fillStyle") ;
1841 if (
pc.hasProcessed(
"BinningSpec")) {
1869 <<
":plotOn: frame does not specify a plot variable" << endl;
1874 const std::string histName = std::string{
GetName()} +
"_plot";
1875 std::unique_ptr<TH1> hist;
1891 <<
":plotOn: fillHistogram() failed" << endl;
1897 double nomBinWidth ;
1908 <<
":plotOn: unable to create a RooHist object" << endl;
1917 std::unique_ptr<RooAbsData> tmp{
const_cast<RooAbsData*
>(
this)->
reduce(*var)};
1918 nEnt = tmp->sumEntries() ;
1923 coutI(
Plotting) <<
"RooTreeData::plotOn: plotting " << hist->GetSumOfWeights() <<
" events out of " << nEnt <<
" total events" << endl ;
1924 graph->setRawEntries(nEnt) ;
1931 if (!
graph->hasIdenticalBinning(*otherGraph)) {
1932 coutE(
Plotting) <<
"RooTreeData::plotOn: ERROR Histogram to be added to, '" << o.
addToHistName <<
"',has different binning" << endl ;
1946 std::string hname = std::string{
"h_"} +
GetName();
1948 hname += std::string{
"_CutRange["} + o.
cutRange +
"]";
1951 hname += std::string{
"_Cut["} + o.
cuts +
"]";
1953 graph->SetName(hname.c_str()) ;
1989 <<
":plotAsymOn: frame does not specify a plot variable" << endl;
1995 hist1Name +=
"_plot1";
1996 std::unique_ptr<TH1> hist1, hist2;
1997 hist2Name +=
"_plot2";
2011 assert(hist1 && hist2);
2013 std::string cuts1,cuts2 ;
2025 <<
":plotAsymOn: createHistogram() failed" << endl;
2047 graph->SetName(hname.c_str()) ;
2079 <<
":plotEffOn: frame does not specify a plot variable" << endl;
2085 hist1Name +=
"_plot1";
2086 std::unique_ptr<TH1> hist1, hist2;
2087 hist2Name +=
"_plot2";
2101 assert(hist1 && hist2);
2103 std::string cuts1,cuts2 ;
2115 <<
":plotEffOn: createHistogram() failed" << endl;
2137 graph->SetName(hname.c_str()) ;
2159 std::unique_ptr<RooArgSet> tableSet;
2163 <<
" is not in dataset and is also not dependent on data set" << endl ;
2168 tableSet = std::make_unique<RooArgSet>();
2169 if (
RooArgSet(cat).snapshot(*tableSet,
true)) {
2170 coutE(
Plotting) <<
"RooTreeData::table(" <<
GetName() <<
") Couldn't deep-clone table category, abort." << std::endl;
2179 std::unique_ptr<RooFormulaVar> cutVar;
2180 std::string tableName{
GetName()};
2181 if (cuts && strlen(cuts)) {
2186 cutVar = std::make_unique<RooFormulaVar>(
"cutVar",cuts,
_vars) ;
2192 for(
Int_t i=0; i < nevent; ++i) {
2195 if (cutVar && cutVar->getVal()==0) continue ;
2217 auto varPtr =
dynamic_cast<const RooRealVar*
>(arg);
2235 if (varPtr->getVal()<lowest) {
2236 lowest = varPtr->getVal() ;
2238 if (varPtr->getVal()>highest) {
2239 highest = varPtr->getVal() ;
2244 if (symMode==
false) {
2246 double margin = marginFrac*(highest-lowest) ;
2254 double mom1 =
moment(*varPtr,1) ;
2255 double delta = ((highest-mom1)>(mom1-lowest)?(highest-mom1):(mom1-lowest))*(1+marginFrac) ;
2256 lowest = mom1-delta ;
2257 highest = mom1+delta ;
2280 pruneSet.
remove(*usedObs,
true,
true) ;
2283 for(
auto * var : *
get()) {
2285 pruneSet.
add(*var) ;
2290 if (!pruneSet.
empty()) {
2295 for(
auto const* rrv : dynamic_range_cast<RooRealVar*>(*usedObs)) {
2296 if (rrv && !rrv->getBinning().isShareable()) {
2298 RooAbsReal* loFunc = rrv->getBinning().lowBoundFunc() ;
2299 RooAbsReal* hiFunc = rrv->getBinning().highBoundFunc() ;
2306 if (!depObs.
empty()) {
2307 pruneSet.
remove(depObs,
true,
true) ;
2315 pruneSet.
remove(keepObsList,
true,
true) ;
2317 if (!pruneSet.
empty()) {
2321 <<
" 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 ;
2332 bool ret(
true), anyClient(
false) ;
2336 if (!cacheList.
find(client->GetName())) {
2342 return anyClient?ret:false ;
2349 _dstore->attachBuffers(extObs) ;
2419 return _dstore->hasFilledCache() ;
2433 <<
"Use GetClonedTree() instead or convert to tree storage." << endl;
2471 if (iter.second == obj) {
2472 iter.second =
nullptr;
2488 arg->setAttribute(
"global",
true);
2490 if(
auto lval =
dynamic_cast<RooAbsRealLValue*
>(arg)) lval->setConstant(
true);
2528 if (eventWeights.
empty()) {
2533 for (std::size_t i = 0; i < eventWeights.
size(); ++i) {
2536 return kahanWeight.
Sum();
2566 const char *
name)
const
2581 const char *cuts,
const char *
name)
const
2584 static int counter(0);
2586 std::unique_ptr<RooAbsReal> ownedPlotVarX;
2589 if (plotVarX ==
nullptr) {
2593 <<
" is not in dataset and is also not dependent on data set" << std::endl;
2599 plotVarX = ownedPlotVarX.get();
2605 std::unique_ptr<RooAbsReal> ownedPlotVarY;
2608 if (plotVarY ==
nullptr) {
2612 <<
" is not in dataset and is also not dependent on data set" << std::endl;
2618 plotVarY = ownedPlotVarY.get();
2625 std::unique_ptr<RooFormula> select;
2626 if (0 != cuts && strlen(cuts)) {
2627 select = std::make_unique<RooFormula>(cuts, cuts,
_vars);
2628 if (!select->ok()) {
2633 const std::string histName = std::string{
GetName()} +
"_" +
name +
"_" +
Form(
"%08x", counter++);
2645 for (
Int_t i = 0; i < nevent; ++i) {
2648 if (select && select->eval() == 0)
2650 histogram->Fill(plotVarX->getVal(), plotVarY->
getVal(),
weight());
static std::map< RooAbsData *, int > _dcc
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
TMatrixTSym< Double_t > TMatrixDSym
Binding & operator=(OUT(*fun)(void))
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
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.
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.
RooArgSet * getVariables(bool stripDisconnected=true) const
Return RooArgSet with all variables (tree leaf nodes of expresssion tree)
virtual bool isDerived() const
Does value or shape of this arg depend on any other arg?
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.
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 void add(const RooArgSet &row, double weight=1, double weightError=0.0)=0
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.
double sigma(const RooRealVar &var, const char *cutSpec=nullptr, const char *cutRange=nullptr) const
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.
~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
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.
static void stripCmdList(RooLinkedList &cmdList, const char *cmdsToPurge)
Utility function that strips command names listed (comma separated) in cmdsToPurge from cmdList.
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.
const TNamed * constPtr(const char *stringPtr)
Return a unique TNamed pointer for given C++ string.
static RooNameReg & instance()
Return reference to singleton instance.
@ kRenamedArg
TNamed flag to indicate that some RooAbsArg has been renamed (flag set in new name)
static void incrementRenameCounter()
The renaming counter has to be incremented every time a RooAbsArg is renamed.
static 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.
const RooAbsCategoryLValue & indexCat() const
RooAbsPdf * getPdf(const char *catName) const
Return the p.d.f associated with the given index category name.
A simple container to hold a batch of data values.
constexpr std::span< T >::index_type 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.
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.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
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 AxisLabel(const char *name)
RooCmdArg Binning(const RooAbsBinning &binning)
VecExpr< UnaryOp< Sqrt< T >, VecExpr< A, T, D >, T >, T, D > sqrt(const VecExpr< A, T, D > &rhs)
void function(const Char_t *name_, T fun, const Char_t *docstring=0)
std::vector< std::string > Split(std::string_view str, std::string_view delims, bool skipEmpty=false)
Splits a string at each character in delims.
static Roo_reg_AGKInteg1D instance
static constexpr double s
static constexpr double pc
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)