79using std::cout, std::endl, std::string, std::ostream;
 
   93std::unique_ptr<RooAbsDataStore>
 
   97             ? 
static_cast<std::unique_ptr<RooAbsDataStore>
>(std::make_unique<RooTreeDataStore>(
name, title, vars))
 
   98             : 
static_cast<std::unique_ptr<RooAbsDataStore>
>(std::make_unique<RooVectorDataStore>(
name, title, vars));
 
 
  196          std::map<string,RooDataHist*> 
dhistMap, 
double wgt) :
 
 
  225    errorMsgStream << 
"RooDataHist::ctor(" << 
GetName() << 
") ERROR: dimension of input histogram must match " 
  226                   << 
"number of dimension variables";
 
  229    throw std::invalid_argument(
errorMsg);
 
 
  279  RooAbsData(
name,title,
RooArgSet(vars,
static_cast<
RooAbsArg*>(
RooCmdConfig::decodeObjOnTheFly(
"RooDataHist::RooDataHist", 
"IndexCat",0,nullptr,
arg1,
arg2,
arg3,
arg4,
arg5,
arg6,
arg7,
arg8))))
 
  287  pc.
defineInt(
"impDens",
"ImportHisto",0) ;
 
  289  pc.
defineObject(
"impSliceData",
"ImportDataSlice",0,
nullptr,
true) ; 
 
  290  pc.
defineString(
"impSliceState",
"ImportDataSlice",0,
"",
true) ; 
 
  293  pc.
defineSet(
"glObs",
"GlobalObservables",0,
nullptr) ;
 
  306    throw std::invalid_argument(
"Invalid command arguments passed to RooDataHist constructor!");
 
  324  } 
else if (indexCat) {
 
  328      std::map<std::string,RooDataHist*> 
dmap ;
 
  329      std::map<std::string,TH1*> 
hmap ;
 
  340      if(!
dmap.empty() && !
hmap.empty()) {
 
  342         errorMsgStream << 
"RooDataHist::ctor(" << 
GetName() << 
") ERROR: you can't import mix of TH1 and RooDataHist";
 
  345         throw std::invalid_argument(
errorMsg);
 
 
  469    auto const& 
bng1 = 
var1->getBinning();
 
  470    auto const& 
bng2 = 
var2->getBinning();
 
  473    if(
bng1.numBins() != 
bng2.numBins()) 
return false;
 
  475    std::size_t nBins = 
bng1.numBins();
 
  483    double v1 = 
bng1.binHigh(nBins - 1);
 
  484    double v2 = 
bng2.binHigh(nBins - 1);
 
  501  TH1* histo(
nullptr) ;
 
  506      histo = 
hiter.second;
 
  509        coutE(InputArguments) << 
"Axes of histogram " << 
hiter.second->GetName() << 
" are not consistent with first processed " 
  510            << 
"histogram " << histo->
GetName() << std::endl;
 
  511        throw std::invalid_argument(
"Axes of inputs for RooDataHist are inconsistent");
 
  517      coutI(InputArguments) << 
"RooDataHist::importTH1Set(" << 
GetName() << 
") defining state \"" << 
hiter.first << 
"\" in index category " << indexCat.
GetName() << endl ;
 
  526    coutE(InputArguments) << 
"RooDataHist::importTH1Set(" << 
GetName() << 
"): dimension of input histogram must match " 
  527           << 
"number of continuous variables" << endl ;
 
  528    throw std::invalid_argument(
"Inputs histograms for RooDataHist are not compatible with dimensions of variables.");
 
  552  double volume = 
xvar->getMax()-
xvar->getMin() ;
 
  557    volume *= (
yvar->getMax()-
yvar->getMin()) ;
 
  562    volume *= (
zvar->getMax()-
zvar->getMin()) ;
 
  570  for (
ic=0 ; 
ic < 
icat->numBins(
nullptr) ; 
ic++) {
 
  572    histo = 
hmap[
icat->getCurrentLabel()] ;
 
 
  606                                 std::map<std::string, RooDataHist *> 
dmap, 
double initWgt)
 
  614      std::string 
const &label = 
diter.first;
 
  621            coutE(InputArguments) << 
"Layout or binning of histogram " << 
dhist->GetName()
 
  622                                  << 
" is not consistent with first processed " 
  624            throw std::invalid_argument(
"Layout or binning of inputs for RooDataHist is inconsistent");
 
  631         coutI(InputArguments) << 
"RooDataHist::importDHistSet(" << 
GetName() << 
") defining state \"" << label
 
  632                               << 
"\" in index category " << indexCat.
GetName() << endl;
 
  634      if (!
icat->hasLabel(label)) {
 
  635         icat->defineType(label);
 
  651      std::string 
const &label = 
diter.first;
 
  654      icat->setLabel(label.c_str());
 
  657      for (
Int_t i = 0; i < 
dhist->numEntries(); i++) {
 
 
  678                          << 
" must be real\n";
 
  679    throw std::logic_error(
"Incorrect type object (" + 
ourVarName +
 
  680                           ") passed as argument to RooDataHist::_adjustBinning. Please report this issue.");
 
  683  const double xlo = 
theirVar.getMin();
 
  684  const double xhi = 
theirVar.getMax();
 
  686   const bool isUniform = !axis.
GetXbins()->GetArray();
 
  687   std::unique_ptr<RooAbsBinning> xbins;
 
  690      xbins = std::make_unique<RooBinning>(axis.
GetNbins(), axis.
GetXbins()->GetArray());
 
  695   const double tolerance = 1
e-6 * xbins->averageBinWidth();
 
  713      coutI(DataHandling) << 
"RooDataHist::adjustBinning(" << 
ownName << 
"): fit range of variable " << 
ourVarName 
  714                          << 
" expanded to nearest bin boundaries: [" << xlo << 
"," << xhi << 
"] --> [" << 
xloAdj << 
"," 
  719   ourVar->setBinning(*xbins);
 
 
  763  ours = 
new double[
n];
 
  789  for (
unsigned int i = 0; i < 
_vars.
size(); ++i) {
 
  793        rrv->setBinning(
rrv->getBinning(binningName));
 
  802    _lvbins.emplace_back(binning ? binning->
clone() : 
nullptr);
 
  811  for (
const auto var : 
_vars) {
 
  816    for (
unsigned int i = 0
u; i<
n; i++) {
 
 
  874      bounds.reserve(2 * it->numBins());
 
  875      for (
Int_t i = 0; i < it->numBins(); ++i) {
 
  876        bounds.push_back(it->binLow(i));
 
  877        bounds.push_back(it->binHigh(i));
 
 
  904    _lvbins.emplace_back(binning ? binning->
clone() : 
nullptr) ;
 
 
  925  std::unique_ptr<RooArgSet> tmp;
 
  927    tmp = std::make_unique<RooArgSet>();
 
  930      coutE(DataHandling) << 
"RooDataHist::reduceEng(" << 
GetName() << 
") Couldn't deep-clone cut variable, abort," << endl ;
 
  940  for (
auto i=
nStart; i<nevt ; i++) {
 
  945      for (
const auto arg : *row) {
 
  946        if (!arg->inRange(cutRange)) {
 
  954    if (!cloneVar || cloneVar->
getVal()) {
 
 
 1000      for (std::size_t i = 0; i < vals.size(); ++i) {
 
 1004      for (std::size_t i = 0; i < vals.size(); ++i) {
 
 
 1019   for (std::size_t i = 0; i < 
_vars.
size(); ++i) {
 
 1027         coutE(InputArguments) << 
"RooHistPdf::weight(" << 
GetName()
 
 1028                               << 
") ERROR: Code Squashing currently does not support category values." << std::endl;
 
 1031         coutE(InputArguments) << 
"RooHistPdf::weight(" << 
GetName()
 
 1032                               << 
") ERROR: Code Squashing currently only supports uniformly binned cases." 
 1037      std::string 
const &bin = ctx.
buildCall(
"RooFit::Detail::MathFuncs::getUniformBinning", binning->
lowBound(),
 
 1039      code += 
" + " + std::to_string(
idxMult) + 
" * " + bin;
 
 1046   return "(" + code + 
")";
 
 
 1067  if (&
_vars == &coords)
 
 1072  for (
unsigned int i=0; i < 
_vars.
size(); ++i) {
 
 
 1125    << 
":plotOn: frame does not specify a plot variable" << endl;
 
 1132    << 
":plotOn: dataset doesn't contain plot frame variable" << endl;
 
 
 1160  const std::size_t nEvents = 
xVals.size();
 
 1176      double binWidth = 
_binv[0];
 
 1215  for (std::size_t i = 0; i < nEvents ; ++i) {
 
 
 1267  const std::size_t nEvents = 
xVals.size();
 
 1283      double binWidth = 
_binv[0];
 
 1315  for (std::size_t i = 0; i < nEvents ; ++i) {
 
 
 1353  auto const nEvents = 
xVals.size();
 
 1363    for (std::size_t i=0; i < nEvents; ++i) {
 
 1376    coutE(InputArguments) << 
"RooDataHist::weights(" << 
GetName() << 
") interpolation in " 
 1377                          << 
intOrder << 
" dimensions not yet implemented" << std::endl ;
 
 
 1405    coutE(InputArguments) << 
"RooDataHist::weight(" << 
GetName() << 
") ERROR: interpolation order must be positive" << endl ;
 
 
 1440    coutE(InputArguments) << 
"RooDataHist::weight(" << 
GetName() << 
") ERROR: interpolation order must be positive" << endl ;
 
 
 1485  } 
else if (
varInfo.nRealVars == 2) {
 
 1511      if (i>=0 && i<
ybinM) {
 
 1515      } 
else if (i>=
ybinM) {
 
 1529      cout << 
"RooDataHist interpolating data is" << endl ;
 
 1532      cout << 
" yarr = " ;
 
 1541    coutE(InputArguments) << 
"RooDataHist::weight(" << 
GetName() << 
") interpolation in " 
 1542                          << 
varInfo.nRealVars << 
" dimensions not yet implemented" << endl ;
 
 
 1577    throw std::invalid_argument(
"RooDataHist::weightError(" + std::string(
GetName()) + 
") error type Auto not allowed here");
 
 1581    throw std::invalid_argument(
"RooDataHist::weightError(" + std::string(
GetName()) + 
") error type Expected not allowed here");
 
 
 1645  int fbinM = binning.numBins() ;
 
 1656    if (i>=0 && i<
fbinM) {
 
 1663    } 
else if (i>=
fbinM) {
 
 
 1778  if (
_curIndex == std::numeric_limits<std::size_t>::max()) {
 
 
 1819  std::unique_ptr<RooArgSet> tmp;
 
 1822    tmp = std::make_unique<RooArgSet>();
 
 1824      coutE(DataHandling) << 
"RooDataHist::add(" << 
GetName() << 
") Couldn't deep-clone cut variable, abort," << endl ;
 
 1834  for (i=0 ; i<
dset.numEntries() ; i++) {
 
 1836    if (!cloneVar || cloneVar->
getVal()) {
 
 
 1873  return kahanSum.Sum();
 
 
 1900  std::vector<double> 
const * 
pbinv = 
nullptr;
 
 1912  for (
unsigned int i = 0; i < 
_vars.
size(); ++i) {
 
 
 1968                          const std::map<
const RooAbsArg*, std::pair<double, double> >& ranges,
 
 1985  std::vector<double> rangeLo(
_vars.
size(), -std::numeric_limits<double>::infinity());
 
 1986  std::vector<double> rangeHi(
_vars.
size(), +std::numeric_limits<double>::infinity());
 
 1988  for (std::size_t i = 0; i < 
_vars.
size(); ++i) {
 
 2001    if (ranges.end() != it) {
 
 2002      rangeLo[i] = it->second.first;
 
 2003      rangeHi[i] = it->second.second;
 
 2032      if (!
sumSet.find(*arg)) {
 
 
 2072    for (
auto const& 
v : 
_vars) {
 
 2073      code += ((
dimSet.find(*
v) ? 1 : 0) << i) ;
 
 2079  if(!
pbinv.empty()) {
 
 2086  for (std::size_t i = 0; i < 
selDim.size(); ++i) {
 
 2087    selDim[i] = (code >> i) & 1 ;
 
 2095    for (
unsigned int j=0; 
j < 
_lvvars.size(); ++
j) {
 
 
 2129  if (
cutSpec==
nullptr && cutRange==
nullptr) {
 
 2134    std::unique_ptr<RooFormula> 
select;
 
 2149    return kahanSum.Sum();
 
 
 2220    coutE(InputArguments) << 
"RooDataHist::sliceIterator() variable " << 
sliceArg.GetName() << 
" is not part of this RooDataHist" << endl ;
 
 
 2267  for (
const auto arg : 
_vars) {
 
 2273    os << arg->GetName() ;
 
 
 2288    if (std::abs(std::modf(
wgt, &
intpart)) > 1.E-10)
 
 
 2307    os << 
indent << 
"  Observables " << 
_vars << endl ;
 
 2309    os << 
indent << 
"  Observables: " ;
 
 
 2333  if (
R__b.IsReading()) {
 
 
 2446    for (
unsigned int i=0; i < 
_vars.
size(); ++i) {
 
 2455  info.initialized = 
true;
 
 
static void indent(ostringstream &buf, int indent_level)
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
static unsigned int total
 
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 mask
 
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 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 Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
 
Option_t Option_t TPoint TPoint const char x2
 
Option_t Option_t TPoint TPoint const char x1
 
Option_t Option_t TPoint TPoint const char y2
 
Option_t Option_t TPoint TPoint const char y1
 
The Kahan summation is a compensated summation algorithm, which significantly reduces numerical error...
 
static KahanSum< T, N > Accumulate(Iterator begin, Iterator end, T initialValue=T{})
Iterate over a range and return an instance of a KahanSum.
 
const_iterator begin() const
 
Common abstract base class for objects that represent a value and a "shape" in RooFit.
 
void attachDataSet(const RooAbsData &set)
Replace server nodes with names matching the dataset variable names with those data set variables,...
 
Abstract base class for RooRealVar binning definitions.
 
int binNumber(double x) const
Returns the bin number corresponding to the value x.
 
virtual void binNumbers(double const *x, int *bins, std::size_t n, int coef=1) const =0
Compute the bin indices for multiple values of x.
 
Int_t numBins() const
Return number of bins.
 
virtual bool isUniform() const
 
virtual double highBound() const =0
 
virtual double lowBound() const =0
 
virtual RooAbsBinning * clone(const char *name=nullptr) const =0
 
Abstract base class for objects that represent a discrete value that can be set from the outside,...
 
bool hasLabel(const std::string &label) const
Check if a state with name label exists.
 
Abstract container object that can hold multiple RooAbsArg objects.
 
RooAbsCollection & assignValueOnly(const RooAbsCollection &other, bool forceIfSizeOne=false)
Sets the value of any argument in our set that also appears in the other set.
 
bool allInRange(const char *rangeSpec) const
Return true if all contained object report to have their value inside the specified range.
 
void assign(const RooAbsCollection &other) const
Sets the value, cache and constant attribute of any argument in our set that also appears in the othe...
 
Storage_t::size_type size() const
 
RooAbsArg * find(const char *name) const
Find object with given name in list.
 
Abstract base class for binned and unbinned datasets.
 
virtual const RooArgSet * get() const
 
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Interface for detailed printing of object.
 
void SetName(const char *name) override
Set the name of the TNamed.
 
void setGlobalObservables(RooArgSet const &globalObservables)
Sets the global observables stored in this data.
 
virtual RooPlot * plotOn(RooPlot *frame, const RooCmdArg &arg1={}, const RooCmdArg &arg2={}, const RooCmdArg &arg3={}, const RooCmdArg &arg4={}, const RooCmdArg &arg5={}, const RooCmdArg &arg6={}, const RooCmdArg &arg7={}, const RooCmdArg &arg8={}) const
 
static StorageType defaultStorageType
 
std::unique_ptr< RooAbsDataStore > _dstore
Data storage implementation.
 
RooArgSet _vars
Dimensions of this data set.
 
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.
 
void Streamer(TBuffer &) override
Stream an object of class RooAbsData.
 
Abstract base class for objects that are lvalues, i.e.
 
virtual double getBinWidth(Int_t i, const char *rangeName=nullptr) const =0
 
Abstract base class for objects that represent a real value that may appear on the left hand side of ...
 
virtual Int_t getBins(const char *name=nullptr) const
Get number of bins of currently defined range.
 
void setBin(Int_t ibin, const char *rangeName=nullptr) override
Set value to center of bin 'ibin' of binning 'rangeName' (or of default binning if no range is specif...
 
Abstract base class for objects that represent a real value and implements functionality common to al...
 
double getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
 
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.
 
RooArgSet * selectCommon(const RooAbsCollection &refColl) const
Use RooAbsCollection::selecCommon(), but return as RooArgSet.
 
Object to represent discrete states.
 
bool defineType(const std::string &label)
Define a state with given name.
 
Named container for two doubles, two integers two object points and three string pointers that can be...
 
Configurable parser for RooCmdArg named arguments.
 
void defineMutex(const char *head, Args_t &&... tail)
Define arguments where any pair is mutually exclusive.
 
bool process(const RooCmdArg &arg)
Process given RooCmdArg.
 
double getDouble(const char *name, double defaultValue=0.0) const
Return double property registered with name 'name'.
 
void defineDependency(const char *refArgName, const char *neededArgName)
Define that processing argument name refArgName requires processing of argument named neededArgName t...
 
bool defineDouble(const char *name, const char *argName, int doubleNum, double defValue=0.0)
Define double property name 'name' mapped to double in slot 'doubleNum' in RooCmdArg with name argNam...
 
RooArgSet * getSet(const char *name, RooArgSet *set=nullptr) const
Return RooArgSet property registered with name 'name'.
 
bool defineSet(const char *name, const char *argName, int setNum, const RooArgSet *set=nullptr)
Define TObject property name 'name' mapped to object in slot 'setNum' in RooCmdArg with name argName ...
 
bool ok(bool verbose) const
Return true of parsing was successful.
 
bool defineObject(const char *name, const char *argName, int setNum, const TObject *obj=nullptr, bool isArray=false)
Define TObject property name 'name' mapped to object in slot 'setNum' in RooCmdArg with name argName ...
 
const char * getString(const char *name, const char *defaultValue="", bool convEmptyToNull=false) const
Return string property registered with name 'name'.
 
bool defineString(const char *name, const char *argName, int stringNum, const char *defValue="", bool appendMode=false)
Define double property name 'name' mapped to double in slot 'stringNum' in RooCmdArg with name argNam...
 
const RooLinkedList & getObjectList(const char *name) const
Return list of objects registered with name 'name'.
 
bool defineInt(const char *name, const char *argName, int intNum, int defValue=0)
Define integer property name 'name' mapped to integer in slot 'intNum' in RooCmdArg with name argName...
 
int getInt(const char *name, int defaultValue=0) const
Return integer property registered with name 'name'.
 
TObject * getObject(const char *name, TObject *obj=nullptr) const
Return TObject property registered with name 'name'.
 
Container class to hold N-dimensional binned data.
 
std::span< const double > getWeightBatch(std::size_t first, std::size_t len, bool sumW2=false) const override
Return event weights of all events in range [first, first+len).
 
void interpolateQuadratic(double *output, std::span< const double > xVals, bool correctForBinSize, bool cdfBoundaries)
A vectorized version of interpolateDim for boundary safe quadratic interpolation of one dimensional h...
 
double sum(bool correctForBinSize, bool inverseCorr=false) const
Return the sum of the weights of all bins in the histogram.
 
void weights(double *output, std::span< double const > xVals, int intOrder, bool correctForBinSize, bool cdfBoundaries)
A vectorized version of RooDataHist::weight() for one dimensional histograms with up to one dimension...
 
Int_t _cache_sum_valid
! Is cache sum valid? Needs to be Int_t instead of CacheSumState_t for subclasses.
 
double interpolateDim(int iDim, double xval, size_t centralIdx, int intOrder, bool correctForBinSize, bool cdfBoundaries)
Perform boundary safe 'intOrder'-th interpolation of weights in dimension 'dim' at current value 'xva...
 
double weightSquared() const override
Return squared weight of last bin that was requested with get().
 
friend class RooDataHistSliceIter
 
void importTH1(const RooArgList &vars, const TH1 &histo, double initWgt, bool doDensityCorrection)
Import data from given TH1/2/3 into this RooDataHist.
 
void printDataHistogram(std::ostream &os, RooRealVar *obs) const
 
TClass * IsA() const override
 
void SetNameTitle(const char *name, const char *title) override
Change the title of this RooDataHist.
 
double _cache_sum
! Cache for sum of entries ;
 
void initialize(const char *binningName=nullptr, bool fillTree=true)
Initialization procedure: allocate weights array, calculate multipliers needed for N-space to 1-dim a...
 
std::string calculateTreeIndexForCodeSquash(RooAbsArg const *klass, RooFit::Detail::CodeSquashContext &ctx, const RooAbsCollection &coords, bool reverse=false) const
 
Int_t getIndex(const RooAbsCollection &coord, bool fast=false) const
Calculate bin number of the given coordinates.
 
void add(const RooArgSet &row, double wgt=1.0) override
Add wgt to the bin content enclosed by the coordinates passed in row.
 
const std::vector< double > & calculatePartialBinVolume(const RooArgSet &dimSet) const
Fill the transient cache with partial bin volumes with up-to-date values for the partial volume speci...
 
static std::unique_ptr< RooAbsDataStore > makeDefaultDataStore(RooStringView name, RooStringView title, RooArgSet const &vars)
 
double weightInterpolated(const RooArgSet &bin, int intOrder, bool correctForBinSize, bool cdfBoundaries)
Return the weight at given coordinates with interpolation.
 
std::unordered_map< int, std::vector< double > > _pbinvCache
! Cache for arrays of partial bin volumes
 
void checkBinBounds() const
 
void initializeAsymErrArrays() const
 
void set(std::size_t binNumber, double weight, double wgtErr)
Set bin content of bin that was last loaded with get(std::size_t).
 
void weightError(double &lo, double &hi, ErrorType etype=Poisson) const override
Return the asymmetric errors on the current weight.
 
double * _errHi
[_arrSize] High-side error on weight array
 
void importTH1Set(const RooArgList &vars, RooCategory &indexCat, std::map< std::string, TH1 * > hmap, double initWgt, bool doDensityCorrection)
Import data from given set of TH1/2/3 into this RooDataHist.
 
void adjustBinning(const RooArgList &vars, const TH1 &href, Int_t *offset=nullptr)
Adjust binning specification on first and optionally second and third observable to binning in given ...
 
double * _binv
[_arrSize] Bin volume array
 
RooDataHist()
Default constructor.
 
ULong64_t _curIndex
Current index.
 
double weightFast(const RooArgSet &bin, int intOrder, bool correctForBinSize, bool cdfBoundaries)
A faster version of RooDataHist::weight that assumes the passed arguments are aligned with the histog...
 
RooPlot * plotOn(RooPlot *frame, PlotOpt o) const override
Back end function to plotting functionality.
 
double weight() const override
Return weight of last bin that was requested with get().
 
std::vector< std::vector< double > > _binbounds
! list of bin bounds per dimension
 
void printArgs(std::ostream &os) const override
Print argument of dataset, i.e. the observable names.
 
void importDHistSet(const RooArgList &vars, RooCategory &indexCat, std::map< std::string, RooDataHist * > dmap, double initWgt)
Import data from given set of TH1/2/3 into this RooDataHist.
 
void _adjustBinning(RooRealVar &theirVar, const TAxis &axis, RooRealVar *ourVar, Int_t *offset)
Helper doing the actual work of adjustBinning().
 
void printMultiline(std::ostream &os, Int_t content, bool verbose=false, TString indent="") const override
Print the details on the dataset contents.
 
double * _sumw2
[_arrSize] Sum of weights^2
 
TIterator * sliceIterator(RooAbsArg &sliceArg, const RooArgSet &otherArgs)
Create an iterator over all bins in a slice defined by the subset of observables listed in sliceArg.
 
Int_t calcTreeIndex() const
Legacy overload to calculate the tree index from the current value of _vars.
 
~RooDataHist() override
Destructor.
 
std::string declWeightArrayForCodeSquash(RooFit::Detail::CodeSquashContext &ctx, bool correctForBinSize) const
 
bool isNonPoissonWeighted() const override
Returns true if dataset contains entries with a non-integer weight.
 
std::vector< RooAbsLValue * > _lvvars
! List of observables casted as RooAbsLValue
 
void SetName(const char *name) override
Change the name of the RooDataHist.
 
std::vector< std::unique_ptr< const RooAbsBinning > > _lvbins
! List of used binnings associated with lvalues
 
void Streamer(TBuffer &) override
Stream an object of class RooDataHist.
 
std::vector< double > _interpolationBuffer
! Buffer to contain values used for weight interpolation
 
std::vector< Int_t > _idxMult
 
void registerWeightArraysToDataStore() const
Hand over pointers to our weight arrays to the data store implementation.
 
void reset() override
Reset all bin weights to zero.
 
double * _errLo
[_arrSize] Low-side error on weight array
 
double * _wgt
[_arrSize] Weight array
 
void printValue(std::ostream &os) const override
Print value of the dataset, i.e. the sum of weights contained in the dataset.
 
VarInfo const & getVarInfo()
Return reference to VarInfo struct with cached histogram variable information that is frequently used...
 
std::unique_ptr< RooAbsData > reduceEng(const RooArgSet &varSubset, const RooFormulaVar *cutVar, const char *cutRange=nullptr, std::size_t nStart=0, std::size_t nStop=std::numeric_limits< std::size_t >::max()) override
Implementation of RooAbsData virtual method that drives the RooAbsData::reduce() methods.
 
const RooArgSet * get() const override
Get bin centre of current bin.
 
void interpolateLinear(double *output, std::span< const double > xVals, bool correctForBinSize, bool cdfBoundaries)
A vectorized version of interpolateDim for boundary safe linear interpolation of one dimensional hist...
 
double binVolume() const
Return volume of current bin.
 
double sumEntries() const override
Sum the weights of all bins.
 
Utility base class for RooFit objects that are to be attached to ROOT directories.
 
virtual void Streamer(TBuffer &)
 
void removeFromDir(TObject *obj)
Remove object from directory it was added to.
 
TDirectory * _dir
! Associated directory
 
void appendToDir(TObject *obj, bool forceMemoryResident=false)
Append object to directory.
 
A class to maintain the context for squashing of RooFit models into code.
 
std::string buildCall(std::string const &funcname, Args_t const &...args)
Build the code to call the function with name funcname, passing some arguments.
 
std::string buildArg(RooAbsCollection const &x)
Function to save a RooListProxy as an array in the squashed code.
 
static const RooHistError & instance()
Return a reference to a singleton object that is created the first time this method is called.
 
Collection class for internal use, storing a collection of RooAbsArg pointers in a doubly linked list...
 
static double interpolate(double yArr[], Int_t nOrder, double x)
 
Plot frame and a container for graphics objects within that frame.
 
RooAbsRealLValue * getPlotVar() const
 
virtual void printStream(std::ostream &os, Int_t contents, StyleOption style, TString indent="") const
Print description of object on ostream, printing contents set by contents integer,...
 
Variable that can be changed from the outside.
 
The RooStringView is a wrapper around a C-style string that can also be constructed from a std::strin...
 
Class to manage histogram axis.
 
const TArrayD * GetXbins() const
 
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
 
Buffer base class used for serializing objects.
 
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
 
virtual TList * GetList() const
 
TH1 is the base class of all histogram classes in ROOT.
 
virtual Int_t GetNbinsY() const
 
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
 
virtual Int_t GetNbinsZ() const
 
virtual Int_t GetDimension() const
 
virtual Int_t GetNbinsX() const
 
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
 
Iterator abstract base class.
 
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.
 
Mother of all ROOT objects.
 
virtual const char * ClassName() const
Returns name of class to which the object belongs.
 
A TTree represents a columnar dataset.
 
std::vector< std::string > Split(std::string_view str, std::string_view delims, bool skipEmpty=false)
Splits a string at each character in delims.
 
Structure to cache information on the histogram variable that is frequently used for histogram weight...