128static std::map<RooAbsData*,int>
_dcc ;
137 cout <<
"Composite storage is not a valid *default* storage type." << endl;
185 throw std::runtime_error(
"RooAbsData::initializeVars(): the variables are already initialized!");
189 for (
const auto var : vars) {
190 if (!var->isFundamental()) {
191 coutE(InputArguments) <<
"RooAbsDataStore::initialize(" <<
GetName()
192 <<
"): Data set cannot contain non-fundamental types, ignoring " << var->GetName()
194 throw std::invalid_argument(std::string(
"Only fundamental variables can be placed into datasets. This is violated for ") + var->GetName());
201 for (
auto var :
_vars) {
212 _vars(
"Dataset Variables"),
213 _cachedVars(
"Cached Variables"),
237 TNamed(newname ? newname : other.GetName(),other.GetTitle()),
239 _cachedVars(
"Cached Variables"),
240 _namePtr(newname ?
RooNameReg::instance().constPtr(newname) : other._namePtr)
247 for (
auto var :
_vars) {
256 map<string,RooAbsDataStore*> smap ;
260 smap[itero.first] = dclone->
store();
281 RooPrintable::operator=(other);
289 for (
const auto var :
_vars) {
290 var->attachDataSet(*
this) ;
298 map<string,RooAbsDataStore*> smap ;
302 smap[itero.first] = dclone->
store();
346 delete iter->second ;
367 bool ret =
_dstore->changeObservableName(from,to) ;
410 _dstore->cacheArgs(cacheOwner,varSet,nset,skipZeroWeights) ;
427 _dstore->attachCache(newOwner, cachedVars) ;
434 _dstore->setArgStatus(set,active) ;
471 pc.
defineInt(
"evtStart",
"EventRange",0,0) ;
472 pc.
defineInt(
"evtStop",
"EventRange",1,std::numeric_limits<int>::max()) ;
473 pc.
defineSet(
"varSel",
"SelectVars",0,0) ;
477 pc.
process(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) ;
483 const char* cutRange = pc.
getString(
"cutRange",0,
true) ;
484 const char* cutSpec = pc.
getString(
"cutSpec",0,
true) ;
487 Int_t nStop = pc.
getInt(
"evtStop",std::numeric_limits<int>::max()) ;
490 const char* title = pc.
getString(
"title",0,
true) ;
495 varSubset.
add(*varSet) ;
496 for (
const auto arg : varSubset) {
498 coutW(InputArguments) <<
"RooAbsData::reduce(" <<
GetName() <<
") WARNING: variable "
499 << arg->GetName() <<
" not in dataset, ignored" << endl ;
511 ret =
reduceEng(varSubset,&cutVarTmp,cutRange,nStart,nStop) ;
515 ret =
reduceEng(varSubset,cutVar,cutRange,nStart,nStop) ;
519 if (!ret)
return nullptr;
566 for (
const auto arg : varSubset) {
568 coutW(InputArguments) <<
"RooAbsData::reduce(" <<
GetName() <<
") WARNING: variable "
569 << arg->GetName() <<
" not in dataset, ignored" << endl ;
575 if (cut && strlen(cut)>0) {
577 ret =
reduceEng(varSubset2,&cutVar,0,0,std::numeric_limits<std::size_t>::max());
579 ret =
reduceEng(varSubset2,0,0,0,std::numeric_limits<std::size_t>::max());
598 coutW(InputArguments) <<
"RooAbsData::reduce(" <<
GetName() <<
") WARNING: variable "
599 << arg->GetName() <<
" not in dataset, ignored" << endl ;
604 RooAbsData* ret =
reduceEng(varSubset2,&cutVar,0,0,std::numeric_limits<std::size_t>::max()) ;
666 const auto varNames =
ROOT::Split(varNameList,
",:");
667 RooRealVar* vars[3] = {
nullptr,
nullptr,
nullptr};
669 for (
unsigned int i = 0; i < varNames.size(); ++i) {
671 coutW(InputArguments) <<
"RooAbsData::createHistogram(" <<
GetName() <<
"): Can only create 3-dimensional histograms. Variable "
672 << i <<
" " << varNames[i] <<
" unused." << std::endl;
678 coutE(InputArguments) <<
"RooAbsData::createHistogram(" <<
GetName() <<
") ERROR: dataset does not contain an observable named " << varNames[i] << std::endl;
684 coutE(InputArguments) <<
"RooAbsData::createHistogram(" <<
GetName() <<
"): No variable to be histogrammed in list '" << varNameList <<
"'" << std::endl;
753 const char* cutSpec = pc.
getString(
"cutString",0,
true) ;
754 const char* cutRange = pc.
getString(
"cutRange",0,
true) ;
775 ownedCmds.
Add(bincmd) ;
776 argList.
Replace(autoRD,bincmd) ;
787 ((
RooCmdArg*)argList.
find(
"YVar"))->subArgs().Replace(autoRDY,bincmd) ;
800 ((
RooCmdArg*)argList.
find(
"ZVar"))->subArgs().Replace(autoRDZ,bincmd) ;
822 string prodName(
"(") ;
823 for(
auto * arg : catSet) {
826 else catSet2.
add(*arg) ;
827 if (prodName.length()>1) {
830 prodName += arg->GetName() ;
832 coutW(InputArguments) <<
"RooAbsData::table(" <<
GetName() <<
") non-RooAbsCategory input argument " << arg->GetName() <<
" ignored" << endl ;
838 return table(tmp,cuts,opts) ;
892 if (order==1)
return 0 ;
893 if (order==2)
return 1 ;
910 double offset = order>1 ?
moment(var,1,cutSpec,cutRange) : 0 ;
926 coutE(InputArguments) <<
"RooDataSet::moment(" <<
GetName() <<
") ERROR: unknown variable: " << var.
GetName() << std::endl;
930 auto varPtr =
dynamic_cast<const RooRealVar*
>(arg);
933 coutE(InputArguments) <<
"RooDataSet::moment(" <<
GetName() <<
") ERROR: variable " << var.
GetName() <<
" is not of type RooRealVar" << endl ;
939 coutE(InputArguments) <<
"RooDataSet::moment(" <<
GetName() <<
") WARNING: empty dataset" << endl ;
944 std::unique_ptr<RooFormula> select;
946 select = std::make_unique<RooFormula>(
"select",cutSpec,*
get());
954 if (select && select->eval()==0) continue ;
955 if (cutRange && vars->
allInRange(cutRange)) continue ;
971 coutE(InputArguments) <<
"RooDataSet::" << methodname <<
"(" <<
GetName() <<
") ERROR: variable : " << extVar.
GetName() <<
" is not in data" << endl ;
976 coutE(InputArguments) <<
"RooDataSet::" << methodname <<
"(" <<
GetName() <<
") ERROR: variable : " << extVar.
GetName() <<
" is not of type RooRealVar in data" << endl ;
990 if (!xdata||!ydata)
return 0 ;
994 coutW(InputArguments) <<
"RooDataSet::" << (corr?
"correlation":
"covariance") <<
"(" <<
GetName() <<
") WARNING: empty dataset, returning zero" << endl ;
1002 double xysum(0),xsum(0),ysum(0),x2sum(0),y2sum(0);
1006 if (select && select->
eval()==0) continue ;
1007 if (cutRange && vars->
allInRange(cutRange)) continue ;
1011 ysum +=
weight()*ydata->getVal() ;
1014 y2sum +=
weight()*ydata->getVal()*ydata->getVal() ;
1028 if (select)
delete select ;
1032 return (xysum-xsum*ysum)/(sqrt(x2sum-(xsum*xsum))*sqrt(y2sum-(ysum*ysum))) ;
1034 return (xysum-xsum*ysum);
1044 for(
auto * var : static_range_cast<RooRealVar*>(vars)) {
1049 varList.
add(*datavar) ;
1055 coutW(InputArguments) <<
"RooDataSet::covariance(" <<
GetName() <<
") WARNING: empty dataset, returning zero" << endl ;
1060 std::unique_ptr<RooFormula> select = cutSpec ? std::make_unique<RooFormula>(
"select",cutSpec,*
get()) :
nullptr;
1063 std::vector<double> xsum(varList.
size()) ;
1064 std::vector<double> x2sum(varList.
size()) ;
1069 if (select && select->eval()==0) continue ;
1070 if (cutRange && dvars->
allInRange(cutRange)) continue ;
1072 for(std::size_t ix = 0; ix < varList.
size(); ++ix) {
1073 auto varx =
static_cast<RooRealVar const&
>(varList[ix]);
1074 xsum[ix] +=
weight() * varx.getVal() ;
1076 x2sum[ix] +=
weight() * varx.getVal() * varx.getVal();
1079 for(std::size_t iy = ix; iy < varList.
size(); ++iy) {
1080 auto vary =
static_cast<RooRealVar const&
>(varList[iy]);
1081 xysum(ix,iy) +=
weight() * varx.getVal() * vary.getVal();
1082 xysum(iy,ix) = xysum(ix,iy) ;
1089 for (std::size_t ix=0 ; ix<varList.
size() ; ix++) {
1094 for (std::size_t iy=0 ; iy<varList.
size() ; iy++) {
1095 xysum(ix,iy) /=
sumEntries(cutSpec, cutRange) ;
1101 for (std::size_t ix=0 ; ix<varList.
size() ; ix++) {
1102 for (std::size_t iy=0 ; iy<varList.
size() ; iy++) {
1103 (*C)(ix,iy) = xysum(ix,iy)-xsum[ix]*xsum[iy] ;
1105 (*C)(ix,iy) /= std::sqrt((x2sum[ix]-(xsum[ix]*xsum[ix]))*(x2sum[iy]-(xsum[iy]*xsum[iy]))) ;
1126 std::string
name = std::string{var.
GetName()} +
"Mean";
1127 std::string title = std::string{
"Mean of "} + var.
GetTitle();
1129 meanv->setConstant(
false) ;
1132 std::string label =
"<" + std::string{var.
getPlotLabel()} +
">";
1133 meanv->setPlotLabel(label.c_str());
1136 double meanVal=
moment(var,1,0,cutSpec,cutRange) ;
1139 double rmsVal= sqrt(
moment(var,2,meanVal,cutSpec,cutRange)*
N/(
N-1));
1140 meanv->setVal(meanVal) ;
1141 meanv->setError(
N > 0 ? rmsVal/sqrt(
N) : 0);
1159 std::string
name(var.
GetName()),title(
"RMS of ") ;
1163 rms->setConstant(
false) ;
1168 rms->setPlotLabel(label.c_str());
1171 double meanVal(
moment(var,1,0,cutSpec,cutRange)) ;
1173 double rmsVal= sqrt(
moment(var,2,meanVal,cutSpec,cutRange)*
N/(
N-1));
1174 rms->setVal(rmsVal) ;
1175 rms->setError(rmsVal/sqrt(2*
N));
1230 pc.
defineInt(
"dummy",
"FormatArgs",0,0) ;
1241 const char* label = pc.
getString(
"label") ;
1245 const char* formatStr = pc.
getString(
"formatStr") ;
1249 const char* cutSpec = pc.
getString(
"cutString",0,
true) ;
1250 const char* cutRange = pc.
getString(
"cutRange",0,
true) ;
1254 return statOn(frame,
what,label,0,0,
xmin,
xmax,
ymax,cutSpec,cutRange,formatCmd) ;
1265 const char* cutSpec,
const char* cutRange,
const RooCmdArg* formatCmd)
1267 bool showLabel= (label !=
nullptr && strlen(label) > 0);
1269 std::string whatStr{
what};
1270 std::transform(whatStr.begin(), whatStr.end(), whatStr.begin(), [](
unsigned char c){ return std::toupper(c); });
1271 bool showN = whatStr.find(
'N') != std::string::npos;
1272 bool showR = whatStr.find(
'R') != std::string::npos;
1273 bool showM = whatStr.find(
'M') != std::string::npos;
1280 double dy(0.06),
ymin(
ymax-nPar*dy);
1281 if(showLabel)
ymin-= dy;
1285 if(!
box)
return nullptr;
1287 box->SetFillColor(0);
1288 box->SetBorderSize(1);
1289 box->SetTextAlign(12);
1290 box->SetTextSize(0.04F);
1291 box->SetFillStyle(1001);
1295 N.setPlotLabel(
"Entries") ;
1300 std::unique_ptr<TString> rmsText, meanText, NText;
1302 rmsText.reset(rms->format(sigDigits,options));
1303 meanText.reset(meanv->format(sigDigits,options));
1304 NText.reset(
N.format(sigDigits,options));
1306 rmsText.reset(rms->format(*formatCmd));
1307 meanText.reset(meanv->format(*formatCmd));
1308 NText.reset(
N.format(*formatCmd));
1310 if (showR)
box->AddText(rmsText->Data());
1311 if (showM)
box->AddText(meanText->Data());
1312 if (showN)
box->AddText(NText->Data());
1315 if(showLabel)
box->AddText(label);
1330 if(
nullptr == hist) {
1331 coutE(InputArguments) <<
ClassName() <<
"::" <<
GetName() <<
":fillHistogram: no valid histogram to fill" << endl;
1337 if(hdim != plotVars.
size()) {
1338 coutE(InputArguments) <<
ClassName() <<
"::" <<
GetName() <<
":fillHistogram: plotVars has the wrong dimension" << endl;
1349 if(realVar ==
nullptr) {
1351 <<
"\" of type " << var->
ClassName() << endl;
1360 <<
":fillHistogram: Data does not contain the variable '" << realVar->
GetName() <<
"'." << endl;
1366 localVars.
add(*clone);
1369 localVars.
add(*found);
1374 std::unique_ptr<RooFormula> select;
1375 if (cuts !=
nullptr && strlen(cuts) > 0) {
1376 select = std::make_unique<RooFormula>(cuts, cuts,
_vars,
false);
1377 if (!select || !select->ok()) {
1378 coutE(InputArguments) <<
ClassName() <<
"::" <<
GetName() <<
":fillHistogram: invalid cuts \"" << cuts <<
"\"" << endl;
1401 coutE(InputArguments) <<
ClassName() <<
"::" <<
GetName() <<
":fillHistogram: cannot fill histogram with "
1402 << hdim <<
" dimensions" << endl;
1407 const auto cutVec =
ROOT::Split(cutRange ? cutRange :
"",
",");
1414 for(
Int_t i=0; i < nevent; ++i) {
1421 if (select && select->eval()==0) {
1427 bool selectByRange = true ;
1429 for (
const auto arg :
_vars) {
1430 bool selectThisArg = false ;
1431 for (
auto const& cut : cutVec) {
1432 if (!cut.empty() && arg->inRange(cut.c_str())) {
1433 selectThisArg = true ;
1437 if (!selectThisArg) {
1438 selectByRange = false ;
1444 if (!selectByRange) {
1471 if (we==0) we =
weight() ;
1496struct SplittingSetup {
1500 bool addWeightVar =
false;
1505 SplittingSetup setup;
1509 oocoutE(&
data, InputArguments) <<
"RooTreeData::split(" <<
data.GetName() <<
") ERROR category "
1510 << splitCat.
GetName() <<
" doesn't depend on any variable in this dataset"
1519 setup.cloneCat->attachDataSet(
data);
1522 if (!setup.cloneCat) {
1523 oocoutE(&
data, InputArguments) <<
"RooTreeData::split(" <<
data.GetName() <<
") ERROR category "
1524 << splitCat.
GetName() <<
" is fundamental and does not appear in this dataset"
1531 setup.subsetVars.add(*
data.get());
1533 std::unique_ptr<RooArgSet> vars{splitCat.
getVariables()};
1534 setup.subsetVars.remove(*vars,
true,
true);
1536 setup.subsetVars.remove(splitCat,
true,
true);
1541 setup.addWeightVar =
data.isWeighted();
1547 std::function<
RooAbsData *(
const char *label)> createEmptyData)
1549 auto dsetList =
new TList;
1552 if (createEmptyDataSets) {
1553 for (
const auto &nameIdx : cloneCat) {
1554 dsetList->
Add(createEmptyData(nameIdx.first.c_str()));
1561 for (
Int_t i = 0; i <
data.numEntries(); ++i) {
1566 dsetList->Add(subset);
1594 SplittingSetup setup = initSplit(*
this, splitCat);
1597 if(!setup.cloneCat)
return nullptr;
1599 auto createEmptyData = [&](
const char * label) ->
RooAbsData* {
1600 return emptyClone(label, label, &setup.subsetVars, setup.addWeightVar ?
"weight" :
nullptr);
1603 return splitImpl(*
this, *setup.cloneCat, createEmptyDataSets, createEmptyData);
1619 SplittingSetup setup = initSplit(*
this, splitCat);
1622 if(!setup.cloneCat)
return nullptr;
1626 auto getPdfObservables = [
this, &simpdf](
const char * label) {
1629 catPdf->getObservables(this->
get(), obsSet);
1636 for(
const auto& catPair : splitCat) {
1637 allObservables.
add(getPdfObservables(catPair.first.c_str()));
1639 setup.subsetVars.remove(allObservables,
true,
true);
1641 auto createEmptyData = [&](
const char * label) ->
RooAbsData* {
1643 RooArgSet subsetVarsCat(setup.subsetVars);
1644 subsetVarsCat.
add(getPdfObservables(label));
1645 return this->
emptyClone(label, label, &subsetVarsCat, setup.addWeightVar ?
"weight" :
nullptr);
1648 return splitImpl(*
this, *setup.cloneCat, createEmptyDataSets, createEmptyData);
1754 pc.
defineInt(
"nbins",
"BinningSpec",0,100) ;
1759 pc.
defineInt(
"lineColor",
"LineColor",0,-999) ;
1760 pc.
defineInt(
"lineStyle",
"LineStyle",0,-999) ;
1761 pc.
defineInt(
"lineWidth",
"LineWidth",0,-999) ;
1762 pc.
defineInt(
"markerColor",
"MarkerColor",0,-999) ;
1763 pc.
defineInt(
"markerStyle",
"MarkerStyle",0,-999) ;
1765 pc.
defineInt(
"fillColor",
"FillColor",0,-999) ;
1766 pc.
defineInt(
"fillStyle",
"FillStyle",0,-999) ;
1768 pc.
defineInt(
"histInvisible",
"Invisible",0,0) ;
1769 pc.
defineInt(
"refreshFrameNorm",
"RefreshNorm",0,1) ;
1775 pc.
defineMutex(
"DataError",
"Asymmetry",
"Efficiency") ;
1776 pc.
defineMutex(
"Binning",
"BinningName",
"BinningSpec") ;
1816 coutI(InputArguments) <<
"RooAbsData::plotOn(" <<
GetName()
1817 <<
") INFO: dataset has non-integer weights, auto-selecting SumW2 errors instead of Poisson errors" << endl ;
1823 <<
" to add to in RooPlot" << endl ;
1828 if (!asymCat && !effCat) {
1830 }
else if (asymCat) {
1881 <<
":plotOn: frame does not specify a plot variable" << endl;
1886 const std::string histName = std::string{
GetName()} +
"_plot";
1887 std::unique_ptr<TH1> hist;
1903 <<
":plotOn: fillHistogram() failed" << endl;
1909 double nomBinWidth ;
1920 <<
":plotOn: unable to create a RooHist object" << endl;
1929 std::unique_ptr<RooAbsData> tmp{
const_cast<RooAbsData*
>(
this)->
reduce(*var)};
1930 nEnt = tmp->sumEntries() ;
1935 coutI(Plotting) <<
"RooTreeData::plotOn: plotting " << hist->GetSumOfWeights() <<
" events out of " << nEnt <<
" total events" << endl ;
1936 graph->setRawEntries(nEnt) ;
1943 if (!
graph->hasIdenticalBinning(*otherGraph)) {
1944 coutE(Plotting) <<
"RooTreeData::plotOn: ERROR Histogram to be added to, '" << o.
addToHistName <<
"',has different binning" << endl ;
1958 std::string hname = std::string{
"h_"} +
GetName();
1960 hname += std::string{
"_CutRange["} + o.
cutRange +
"]";
1963 hname += std::string{
"_Cut["} + o.
cuts +
"]";
1965 graph->SetName(hname.c_str()) ;
2001 <<
":plotAsymOn: frame does not specify a plot variable" << endl;
2007 hist1Name +=
"_plot1";
2008 std::unique_ptr<TH1> hist1, hist2;
2009 hist2Name +=
"_plot2";
2023 assert(hist1 && hist2);
2025 std::string cuts1,cuts2 ;
2037 <<
":plotAsymOn: createHistogram() failed" << endl;
2059 graph->SetName(hname.c_str()) ;
2091 <<
":plotEffOn: frame does not specify a plot variable" << endl;
2097 hist1Name +=
"_plot1";
2098 std::unique_ptr<TH1> hist1, hist2;
2099 hist2Name +=
"_plot2";
2113 assert(hist1 && hist2);
2115 std::string cuts1,cuts2 ;
2127 <<
":plotEffOn: createHistogram() failed" << endl;
2149 graph->SetName(hname.c_str()) ;
2171 std::unique_ptr<RooArgSet> tableSet;
2175 <<
" is not in dataset and is also not dependent on data set" << endl ;
2180 tableSet = std::make_unique<RooArgSet>();
2181 if (
RooArgSet(cat).snapshot(*tableSet,
true)) {
2182 coutE(Plotting) <<
"RooTreeData::table(" <<
GetName() <<
") Couldn't deep-clone table category, abort." << std::endl;
2191 std::unique_ptr<RooFormulaVar> cutVar;
2192 std::string tableName{
GetName()};
2193 if (cuts && strlen(cuts)) {
2198 cutVar = std::make_unique<RooFormulaVar>(
"cutVar",cuts,
_vars) ;
2204 for(
Int_t i=0; i < nevent; ++i) {
2207 if (cutVar && cutVar->getVal()==0) continue ;
2225 coutE(InputArguments) <<
"RooDataSet::getRange(" <<
GetName() <<
") ERROR: unknown variable: " << var.
GetName() << endl ;
2229 auto varPtr =
dynamic_cast<const RooRealVar*
>(arg);
2232 coutE(InputArguments) <<
"RooDataSet::getRange(" <<
GetName() <<
") ERROR: variable " << var.
GetName() <<
" is not of type RooRealVar" << endl ;
2238 coutE(InputArguments) <<
"RooDataSet::getRange(" <<
GetName() <<
") WARNING: empty dataset" << endl ;
2247 if (varPtr->getVal()<lowest) {
2248 lowest = varPtr->getVal() ;
2250 if (varPtr->getVal()>highest) {
2251 highest = varPtr->getVal() ;
2256 if (symMode==
false) {
2258 double margin = marginFrac*(highest-lowest) ;
2266 double mom1 =
moment(*varPtr,1) ;
2267 double delta = ((highest-mom1)>(mom1-lowest)?(highest-mom1):(mom1-lowest))*(1+marginFrac) ;
2268 lowest = mom1-delta ;
2269 highest = mom1+delta ;
2292 pruneSet.
remove(*usedObs,
true,
true) ;
2295 for(
auto * var : *
get()) {
2297 pruneSet.
add(*var) ;
2302 if (!pruneSet.
empty()) {
2307 for(
auto const* rrv : dynamic_range_cast<RooRealVar*>(*usedObs)) {
2308 if (rrv && !rrv->getBinning().isShareable()) {
2310 RooAbsReal* loFunc = rrv->getBinning().lowBoundFunc() ;
2311 RooAbsReal* hiFunc = rrv->getBinning().highBoundFunc() ;
2318 if (!depObs.
empty()) {
2319 pruneSet.
remove(depObs,
true,
true) ;
2327 pruneSet.
remove(keepObsList,
true,
true) ;
2329 if (!pruneSet.
empty()) {
2332 cxcoutI(Optimization) <<
"RooTreeData::optimizeReadingForTestStatistic(" <<
GetName() <<
"): Observables " << pruneSet
2333 <<
" 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 ;
2344 bool ret(
true), anyClient(
false) ;
2348 if (!cacheList.
find(client->GetName())) {
2354 return anyClient?ret:false ;
2361 _dstore->attachBuffers(extObs) ;
2431 return _dstore->hasFilledCache() ;
2444 coutW(InputArguments) <<
"RooAbsData::tree(" <<
GetName() <<
") WARNING: is not of StorageType::Tree. "
2445 <<
"Use GetClonedTree() instead or convert to tree storage." << endl;
2483 if (iter.second == obj) {
2484 iter.second =
nullptr;
2500 arg->setAttribute(
"global",
true);
2502 if(
auto lval =
dynamic_cast<RooAbsRealLValue*
>(arg)) lval->setConstant(
true);
2540 if (eventWeights.
empty()) {
2545 for (std::size_t i = 0; i < eventWeights.
size(); ++i) {
2548 return kahanWeight.
Sum();
2578 const char *
name)
const
2593 const char *cuts,
const char *
name)
const
2596 static int counter(0);
2598 std::unique_ptr<RooAbsReal> ownedPlotVarX;
2601 if (plotVarX ==
nullptr) {
2605 <<
" is not in dataset and is also not dependent on data set" << std::endl;
2611 plotVarX = ownedPlotVarX.get();
2617 std::unique_ptr<RooAbsReal> ownedPlotVarY;
2620 if (plotVarY ==
nullptr) {
2624 <<
" is not in dataset and is also not dependent on data set" << std::endl;
2630 plotVarY = ownedPlotVarY.get();
2637 std::unique_ptr<RooFormula> select;
2638 if (0 != cuts && strlen(cuts)) {
2639 select = std::make_unique<RooFormula>(cuts, cuts,
_vars);
2640 if (!select->ok()) {
2645 const std::string histName = std::string{
GetName()} +
"_" +
name +
"_" +
Form(
"%08x", counter++);
2651 coutE(DataHandling) <<
GetName() <<
"::createHistogram: unable to create a new histogram" << endl;
2657 for (
Int_t i = 0; i < nevent; ++i) {
2660 if (select && select->eval() == 0)
2662 histogram->Fill(plotVarX->getVal(), plotVarY->
getVal(),
weight());
static std::map< RooAbsData *, int > _dcc
TMatrixTSym< double > TMatrixDSym
static void indent(ostringstream &buf, int indent_level)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
The Kahan summation is a compensated summation algorithm, which significantly reduces numerical error...
void AddIndexed(T input, std::size_t index)
Add input to the sum.
Roo1DTable implements a one-dimensional table.
void fill(RooAbsCategory &cat, double weight=1.0) override
Increment the counter of the table slot with the name corresponding to that of the current category s...
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
bool dependsOn(const RooAbsCollection &serverList, const RooAbsArg *ignoreArg=nullptr, bool valueOnly=false) const
Test whether we depend on (ie, are served by) any object in the specified collection.
bool recursiveRedirectServers(const RooAbsCollection &newServerList, bool mustReplaceAll=false, bool nameChange=false, bool recurseInNewSet=true)
Recursively replace all servers with the new servers in newSet.
void attachArgs(const RooAbsCollection &set)
Bind this node to objects in set.
RooFit::OwningPtr< RooArgSet > getObservables(const RooArgSet &set, bool valueOnly=true) const
Given a set of possible observables, return the observables that this PDF depends on.
void SetName(const char *name) override
Set the name of the TNamed.
const RefCountList_t & valueClients() const
List of all value clients of this object. Value clients receive value updates.
bool redirectServers(const RooAbsCollection &newServerList, bool mustReplaceAll=false, bool nameChange=false, bool isRecursionStep=false)
Replace all direct servers of this object with the new servers in newServerList.
virtual bool isDerived() const
Does value or shape of this arg depend on any other arg?
RooFit::OwningPtr< RooArgSet > getVariables(bool stripDisconnected=true) const
Return RooArgSet with all variables (tree leaf nodes of expresssion tree)
TObject * Clone(const char *newname=nullptr) const override
Make a clone of an object using the Streamer facility.
void leafNodeServerList(RooAbsCollection *list, const RooAbsArg *arg=nullptr, bool recurseNonDerived=false) const
Fill supplied list with all leaf nodes of the arg tree, starting with ourself as top node.
RooAbsBinning is the abstract base class for RooRealVar binning definitions.
virtual double averageBinWidth() const =0
virtual bool isUniform() const
RooAbsCategoryLValue is the common abstract base class for objects that represent a discrete value th...
A space to attach TBranches.
virtual const char * getCurrentLabel() const
Return label string of current state.
const std::string & lookupName(value_type index) const
Get the name corresponding to the given index.
Roo1DTable * createTable(const char *label) const
Create a table matching the shape of this category.
virtual void removeAll()
Remove all arguments from our set, deleting them if we own them.
virtual bool remove(const RooAbsArg &var, bool silent=false, bool matchByNameOnly=false)
Remove the specified argument from our list.
bool allInRange(const char *rangeSpec) const
Return true if all contained object report to have their value inside the specified range.
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
Storage_t::size_type size() const
virtual RooAbsArg * addClone(const RooAbsArg &var, bool silent=false)
Add a clone of the specified argument to list.
RooAbsArg * find(const char *name) const
Find object with given name in list.
RooAbsDataStore is the abstract base class for data collection that use a TTree as internal storage m...
virtual RooAbsData::CategorySpans getCategoryBatches(std::size_t, std::size_t) const
virtual RooAbsData::RealSpans getBatches(std::size_t first, std::size_t len) const =0
Retrieve batches for all observables in this data store.
RooAbsData is the common abstract base class for binned and unbinned datasets.
virtual double weight() const =0
virtual double sumEntries() const =0
Return effective number of entries in dataset, i.e., sum all weights.
virtual const RooArgSet * get() const
RooRealVar * meanVar(const RooRealVar &var, const char *cutSpec=nullptr, const char *cutRange=nullptr) const
Create a RooRealVar containing the mean of observable 'var' in this dataset.
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Interface for detailed printing of object.
const TNamed * _namePtr
! De-duplicated name pointer. This will be equal for all objects with the same name.
RooAbsData()
Default constructor.
static void setDefaultStorageType(StorageType s)
void SetName(const char *name) override
Set the name of the TNamed.
CategorySpans getCategoryBatches(std::size_t first=0, std::size_t len=std::numeric_limits< std::size_t >::max()) const
RooRealVar * dataRealVar(const char *methodname, const RooRealVar &extVar) const
Internal method to check if given RooRealVar maps to a RooRealVar in this dataset.
virtual Roo1DTable * table(const RooArgSet &catSet, const char *cuts="", const char *opts="") const
Construct table for product of categories in catSet.
void setGlobalObservables(RooArgSet const &globalObservables)
Sets the global observables stored in this data.
RooAbsDataStore * store()
virtual RooAbsData * emptyClone(const char *newName=nullptr, const char *newTitle=nullptr, const RooArgSet *vars=nullptr, const char *wgtVarName=nullptr) const =0
std::map< RooFit::Detail::DataKey, RooSpan< const double > > RealSpans
void printClassName(std::ostream &os) const override
Print class name of dataset.
RooRealVar * rmsVar(const RooRealVar &var, const char *cutSpec=nullptr, const char *cutRange=nullptr) const
Create a RooRealVar containing the RMS of observable 'var' in this dataset.
double standMoment(const RooRealVar &var, double order, const char *cutSpec=nullptr, const char *cutRange=nullptr) const
Calculate standardized moment.
void Draw(Option_t *option="") override
Forward draw command to data store.
virtual bool changeObservableName(const char *from, const char *to)
void printTitle(std::ostream &os) const override
Print title of dataset.
void RecursiveRemove(TObject *obj) override
If one of the TObject we have a referenced to is deleted, remove the reference.
virtual double weightError(ErrorType=Poisson) const
Return the symmetric error on the current weight.
void setDirtyProp(bool flag)
Control propagation of dirty flags from observables in dataset.
virtual TH1 * fillHistogram(TH1 *hist, const RooArgList &plotVars, const char *cuts="", const char *cutRange=nullptr) const
Loop over columns of our tree data and fill the input histogram.
virtual RooPlot * statOn(RooPlot *frame, const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none())
Add a box with statistics information to the specified frame.
virtual void setArgStatus(const RooArgSet &set, bool active)
virtual void cacheArgs(const RooAbsArg *owner, RooArgSet &varSet, const RooArgSet *nset=nullptr, bool skipZeroWeights=false)
Internal method – Cache given set of functions with data.
virtual RooPlot * plotEffOn(RooPlot *frame, const RooAbsCategoryLValue &effCat, PlotOpt o) const
Create and fill a histogram with the efficiency N[1] / ( N[1] + N[0] ), where N(1/0) is the number of...
RealSpans getBatches(std::size_t first=0, std::size_t len=std::numeric_limits< std::size_t >::max()) const
Write information to retrieve data columns into evalData.spans.
virtual void optimizeReadingWithCaching(RooAbsArg &arg, const RooArgSet &cacheList, const RooArgSet &keepObsList)
Prepare dataset for use with cached constant terms listed in 'cacheList' of expression 'arg'.
static void claimVars(RooAbsData *)
static StorageType defaultStorageType
double corrcov(const RooRealVar &x, const RooRealVar &y, const char *cutSpec, const char *cutRange, bool corr) const
Internal method to calculate single correlation and covariance elements.
bool allClientsCached(RooAbsArg *, const RooArgSet &)
Utility function that determines if all clients of object 'var' appear in given list of cached nodes.
std::unique_ptr< RooAbsDataStore > _dstore
Data storage implementation.
void addOwnedComponent(const char *idxlabel, RooAbsData &data)
RooArgSet _vars
Dimensions of this data set.
bool canSplitFast() const
static bool releaseVars(RooAbsData *)
If return value is true variables can be deleted.
virtual RooPlot * plotAsymOn(RooPlot *frame, const RooAbsCategoryLValue &asymCat, PlotOpt o) const
Create and fill a histogram with the asymmetry N[+] - N[-] / ( N[+] + N[-] ), where N(+/-) is the num...
RooAbsData * getSimData(const char *idxstate)
void copyGlobalObservables(const RooAbsData &other)
virtual bool isNonPoissonWeighted() const
bool hasFilledCache() const
double sumEntriesW2() const
Return sum of squared weights of this data.
virtual void attachCache(const RooAbsArg *newOwner, const RooArgSet &cachedVars)
Internal method – Attach dataset copied with cache contents to copied instances of functions.
std::map< RooFit::Detail::DataKey, RooSpan< const RooAbsCategory::value_type > > CategorySpans
void convertToVectorStore()
Convert tree-based storage to vector-based storage.
virtual RooSpan< const double > getWeightBatch(std::size_t first, std::size_t len, bool sumW2=false) const =0
Return event weights of all events in range [first, first+len).
bool getRange(const RooAbsRealLValue &var, double &lowest, double &highest, double marginFrac=0.0, bool symMode=false) const
Fill Doubles 'lowest' and 'highest' with the lowest and highest value of observable 'var' in this dat...
RooArgSet _cachedVars
! External variables cached with this data set
virtual Int_t numEntries() const
Return number of entries in dataset, i.e., count unweighted entries.
virtual void convertToTreeStore()
Convert vector-based storage to tree-based storage.
virtual RooPlot * plotOn(RooPlot *frame, const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none()) const
double moment(const RooRealVar &var, double order, const char *cutSpec=nullptr, const char *cutRange=nullptr) const
Calculate moment of requested order.
RooAbsData & operator=(const RooAbsData &other)
void SetNameTitle(const char *name, const char *title) override
Set all the TNamed parameters (name and title).
virtual void resetCache()
Internal method – Remove cached function values.
virtual TList * split(const RooAbsCategory &splitCat, bool createEmptyDataSets=false) const
Split dataset into subsets based on states of given splitCat in this dataset.
Int_t defaultPrintContents(Option_t *opt) const override
Define default print options, for a given print style.
std::unique_ptr< RooArgSet > _globalObservables
Snapshot of global observables.
virtual double weightSquared() const =0
TTree * GetClonedTree() const
Return a clone of the TTree which stores the data or create such a tree if vector storage is used.
RooAbsData * reduce(const RooCmdArg &arg1, const RooCmdArg &arg2=RooCmdArg(), const RooCmdArg &arg3=RooCmdArg(), const RooCmdArg &arg4=RooCmdArg(), const RooCmdArg &arg5=RooCmdArg(), const RooCmdArg &arg6=RooCmdArg(), const RooCmdArg &arg7=RooCmdArg(), const RooCmdArg &arg8=RooCmdArg())
Create a reduced copy of this dataset.
void attachBuffers(const RooArgSet &extObs)
virtual RooAbsData * reduceEng(const RooArgSet &varSubset, const RooFormulaVar *cutVar, const char *cutRange=nullptr, std::size_t nStart=0, std::size_t=std::numeric_limits< std::size_t >::max())=0
std::map< std::string, RooAbsData * > _ownedComponents
Owned external components.
TH1 * createHistogram(const char *name, const RooAbsRealLValue &xvar, const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none()) const
Calls createHistogram(const char *name, const RooAbsRealLValue& xvar, const RooLinkedList& argList) c...
static StorageType getDefaultStorageType()
void Streamer(TBuffer &) override
Stream an object of class RooAbsData.
TMatrixDSym * corrcovMatrix(const RooArgList &vars, const char *cutSpec, const char *cutRange, bool corr) const
Return covariance matrix from data for given list of observables.
void printName(std::ostream &os) const override
Print name of dataset.
const TTree * tree() const
Return a pointer to the TTree which stores the data.
void initializeVars(RooArgSet const &vars)
~RooAbsData() override
Destructor.
RooAbsRealLValue is the common abstract base class for objects that represent a real value that may a...
virtual Int_t getBins(const char *name=nullptr) const
Get number of bins of currently defined range.
virtual const RooAbsBinning & getBinning(const char *name=nullptr, bool verbose=true, bool createOnTheFly=false) const =0
Retrive binning configuration with given name or default binning.
virtual double getMax(const char *name=nullptr) const
Get maximum of currently defined range.
virtual double getMin(const char *name=nullptr) const
Get minimum of currently defined range.
TH1 * createHistogram(const char *name, const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none()) const
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
double getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
const char * getPlotLabel() const
Get the label associated with the variable.
void setPlotLabel(const char *label)
Set the label associated with this variable.
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooAbsArg * at(Int_t idx) const
Return object at given index, or nullptr if index is out of range.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
RooArgSet * snapshot(bool deepCopy=true) const
Use RooAbsCollection::snapshot(), but return as RooArgSet.
RooCategory is an object to represent discrete states.
RooCmdArg is a named container for two doubles, two integers two object points and three string point...
double getDouble(Int_t idx) const
Return double stored in slot idx.
Int_t getInt(Int_t idx) const
TObject * Clone(const char *newName=nullptr) const override
Make a clone of an object using the Streamer facility.
Class RooCmdConfig is a configurable parser for RooCmdArg named arguments.
bool defineObject(const char *name, const char *argName, Int_t setNum, const TObject *obj=nullptr, bool isArray=false)
Define TObject property name 'name' mapped to object in slot 'setNum' in RooCmdArg with name argName ...
double getDouble(const char *name, double defaultValue=0.0)
Return double property registered with name 'name'.
RooArgSet * getSet(const char *name, RooArgSet *set=nullptr)
Return RooArgSet property registered with name 'name'.
void defineMutex(const char *head, Args_t &&... tail)
Define arguments where any pair is mutually exclusive.
bool process(const RooCmdArg &arg)
Process given RooCmdArg.
bool hasProcessed(const char *cmdName) const
Return true if RooCmdArg with name 'cmdName' has been processed.
Int_t getInt(const char *name, Int_t defaultValue=0)
Return integer property registered with name 'name'.
static void stripCmdList(RooLinkedList &cmdList, const char *cmdsToPurge)
Utility function that strips command names listed (comma separated) in cmdsToPurge from cmdList.
bool defineInt(const char *name, const char *argName, Int_t intNum, Int_t defValue=0)
Define integer property name 'name' mapped to integer in slot 'intNum' in RooCmdArg with name argName...
bool defineString(const char *name, const char *argName, Int_t stringNum, const char *defValue="", bool appendMode=false)
Define double property name 'name' mapped to double in slot 'stringNum' in RooCmdArg with name argNam...
bool ok(bool verbose) const
Return true of parsing was successful.
TObject * getObject(const char *name, TObject *obj=nullptr)
Return TObject property registered with name 'name'.
const char * getString(const char *name, const char *defaultValue="", bool convEmptyToNull=false)
Return string property registered with name 'name'.
void allowUndefined(bool flag=true)
If flag is true the processing of unrecognized RooCmdArgs is not considered an error.
bool defineSet(const char *name, const char *argName, Int_t setNum, const RooArgSet *set=nullptr)
Define TObject property name 'name' mapped to object in slot 'setNum' in RooCmdArg with name argName ...
bool defineDouble(const char *name, const char *argName, Int_t doubleNum, double defValue=0.0)
Define double property name 'name' mapped to double in slot 'doubleNum' in RooCmdArg with name argNam...
RooCompositeDataStore combines several disjunct datasets into one.
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 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 constexpr double infinity()
Return internal infinity representation.
A RooPlot is a plot frame and a container for graphics objects within that frame.
TObject * findObject(const char *name, const TClass *clas=nullptr) const
Find the named object in our list of items and return a pointer to it.
void addObject(TObject *obj, Option_t *drawOptions="", bool invisible=false)
Add a generic object to this plot.
double getFitRangeNEvt() const
Return the number of events in the fit range.
TAttLine * getAttLine(const char *name=nullptr) const
Return a pointer to the line attributes of the named object in this plot, or zero if the named object...
TAttFill * getAttFill(const char *name=nullptr) const
Return a pointer to the fill attributes of the named object in this plot, or zero if the named object...
RooAbsRealLValue * getPlotVar() const
TAttMarker * getAttMarker(const char *name=nullptr) const
Return a pointer to the marker attributes of the named object in this plot, or zero if the named obje...
void updateNormVars(const RooArgSet &vars)
Install the given set of observables are reference normalization variables for this frame.
void addPlotable(RooPlotable *plotable, Option_t *drawOptions="", bool invisible=false, bool refreshNorm=false)
Add the specified plotable object to our plot.
double getFitRangeBinW() const
Return the bin width that is being used to normalise the PDF.
RooPlotable is a 'mix-in' base class that define the standard RooFit plotting and printing methods.
RooRealVar represents a variable that can be changed from the outside.
RooSimultaneous facilitates simultaneous fitting of multiple PDFs to subsets of a given dataset.
RooAbsPdf * getPdf(RooStringView catName) const
Return the p.d.f associated with the given index category name.
const RooAbsCategoryLValue & indexCat() const
A simple container to hold a batch of data values.
constexpr std::size_t size() const noexcept
constexpr bool empty() const noexcept
The RooStringView is a wrapper around a C-syle string that can also be constructed from a std::string...
static void destroy(const TObject *obj)
Register deletion of object 'obj'.
static void create(const TObject *obj)
Register creation of object 'obj'.
RooTreeDataStore is a TTree-backed data storage.
RooVectorDataStore uses std::vectors to store data columns.
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
Buffer base class used for serializing objects.
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=nullptr)=0
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
TH1 is the base class of all histogram classes in ROOT.
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
virtual Int_t GetDimension() const
virtual void SetBinError(Int_t bin, Double_t error)
Set the bin Error Note that this resets the bin eror option to be of Normal Type and for the non-empt...
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
virtual TArrayD * GetSumw2()
virtual Int_t FindBin(Double_t x, Double_t y=0, Double_t z=0)
Return Global bin number corresponding to x,y,z.
virtual void Sumw2(Bool_t flag=kTRUE)
Create structure to store sum of squares of weights.
2-D histogram with a float per channel (see TH1 documentation)}
Service class for 2-D histogram classes.
The 3-D histogram classes derived from the 1-D histogram classes.
void Add(TObject *obj) override
The TNamed class is the base class for all named ROOT classes.
TObject * Clone(const char *newname="") const override
Make a clone of an object using the Streamer facility.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.
virtual void SetName(const char *name)
Set the name of the TNamed.
TNamed & operator=(const TNamed &rhs)
TNamed assignment operator.
Mother of all ROOT objects.
virtual void Clear(Option_t *="")
virtual const char * ClassName() const
Returns name of class to which the object belongs.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
A Pave (see TPave) with text, lines or/and boxes inside.
A TTree represents a columnar dataset.
virtual TTree * CloneTree(Long64_t nentries=-1, Option_t *option="")
Create a clone of this tree and copy nentries.
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
RooCmdArg YVar(const RooAbsRealLValue &var, const RooCmdArg &arg=RooCmdArg::none())
RooCmdArg ZVar(const RooAbsRealLValue &var, const RooCmdArg &arg=RooCmdArg::none())
RooCmdArg AxisLabel(const char *name)
RooCmdArg Binning(const RooAbsBinning &binning)
std::vector< std::string > Split(std::string_view str, std::string_view delims, bool skipEmpty=false)
Splits a string at each character in delims.
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Returns x raised to the power y.
const char * addToHistName
RooAbsData::ErrorType etype
static uint64_t sum(uint64_t i)