|
ROOT
Reference Guide |
|
Go to the documentation of this file.
172 map<string,TH1*> histMap,
Double_t wgt) :
197 map<string,RooDataHist*> dhistMap,
Double_t wgt) :
228 <<
"number of dimension variables" << endl ;
276 RooAbsData(
name,title,
RooArgSet(vars,(
RooAbsArg*)
RooCmdConfig::decodeObjOnTheFly(
"RooDataHist::RooDataHist",
"IndexCat",0,0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)))
284 pc.defineObject(
"impHist",
"ImportHisto",0) ;
285 pc.defineInt(
"impDens",
"ImportHisto",0) ;
286 pc.defineObject(
"indexCat",
"IndexCat",0) ;
287 pc.defineObject(
"impSliceHist",
"ImportHistoSlice",0,0,
kTRUE) ;
288 pc.defineString(
"impSliceState",
"ImportHistoSlice",0,
"",
kTRUE) ;
289 pc.defineObject(
"impSliceDHist",
"ImportDataHistSlice",0,0,
kTRUE) ;
290 pc.defineString(
"impSliceDState",
"ImportDataHistSlice",0,
"",
kTRUE) ;
291 pc.defineDouble(
"weight",
"Weight",0,1) ;
292 pc.defineObject(
"dummy1",
"ImportDataHistSliceMany",0) ;
293 pc.defineObject(
"dummy2",
"ImportHistoSliceMany",0) ;
294 pc.defineMutex(
"ImportHisto",
"ImportHistoSlice",
"ImportDataHistSlice") ;
295 pc.defineDependency(
"ImportHistoSlice",
"IndexCat") ;
296 pc.defineDependency(
"ImportDataHistSlice",
"IndexCat") ;
311 TH1* impHist =
static_cast<TH1*
>(
pc.getObject(
"impHist")) ;
312 Bool_t impDens =
pc.getInt(
"impDens") ;
314 const char* impSliceNames =
pc.getString(
"impSliceState",
"",
kTRUE) ;
315 const RooLinkedList& impSliceHistos =
pc.getObjectList(
"impSliceHist") ;
317 const char* impSliceDNames =
pc.getString(
"impSliceDState",
"",
kTRUE) ;
318 const RooLinkedList& impSliceDHistos =
pc.getObjectList(
"impSliceDHist") ;
324 importTH1(vars,*impHist,initWgt, impDens) ;
326 }
else if (indexCat) {
329 if (impSliceHistos.
GetSize()>0) {
332 map<string,TH1*> hmap ;
335 auto histo =
static_cast<TH1*
>(hiter.
Next());
343 map<string,RooDataHist*> dmap ;
374 Int_t offset[3]{0, 0, 0};
404 Int_t ix(0),iy(0),iz(0) ;
405 for (ix=0 ; ix < xvar->
getBins() ; ix++) {
408 for (iy=0 ; iy < yvar->
getBins() ; iy++) {
411 for (iz=0 ; iz < zvar->
getBins() ; iz++) {
431 return first->GetDimension() ==
second->GetDimension()
435 &&
first->GetXaxis()->GetXmin() ==
second->GetXaxis()->GetXmin()
436 &&
first->GetXaxis()->GetXmax() ==
second->GetXaxis()->GetXmax()
437 && (
first->GetNbinsY() == 1 || (
first->GetYaxis()->GetXmin() ==
second->GetYaxis()->GetXmin()
438 &&
first->GetYaxis()->GetXmax() ==
second->GetYaxis()->GetXmax() ) )
439 && (
first->GetNbinsZ() == 1 || (
first->GetZaxis()->GetXmin() ==
second->GetZaxis()->GetXmin()
440 &&
first->GetZaxis()->GetXmax() ==
second->GetZaxis()->GetXmax() ) );
456 for (
const auto& hiter : hmap) {
459 histo = hiter.second;
461 if (!checkConsistentAxes(histo, hiter.second)) {
462 coutE(
InputArguments) <<
"Axes of histogram " << hiter.second->GetName() <<
" are not consistent with first processed "
463 <<
"histogram " << histo->
GetName() << std::endl;
464 throw std::invalid_argument(
"Axes of inputs for RooDataHist are inconsistent");
468 if (!indexCat.
hasLabel(hiter.first)) {
470 coutI(
InputArguments) <<
"RooDataHist::importTH1Set(" <<
GetName() <<
") defining state \"" << hiter.first <<
"\" in index category " << indexCat.
GetName() << endl ;
480 <<
"number of continuous variables" << endl ;
481 throw std::invalid_argument(
"Inputs histograms for RooDataHist are not compatible with dimensions of variables.");
517 Int_t ic(0),ix(0),iy(0),iz(0) ;
518 for (ic=0 ; ic < icat->
numBins(0) ; ic++) {
521 for (ix=0 ; ix < xvar->
getBins() ; ix++) {
524 for (iy=0 ; iy < yvar->
getBins() ; iy++) {
527 for (iz=0 ; iz < zvar->
getBins() ; iz++) {
557 for (
const auto& diter : dmap) {
560 if (!indexCat.
hasLabel(diter.first)) {
562 coutI(
InputArguments) <<
"RooDataHist::importDHistSet(" <<
GetName() <<
") defining state \"" << diter.first <<
"\" in index category " << indexCat.
GetName() << endl ;
573 for (
const auto& diter : dmap) {
577 icat->
setLabel(diter.first.c_str()) ;
599 const double xlo = theirVar.
getMin();
600 const double xhi = theirVar.
getMax();
605 const double tolerance = 1
e-6 *
xbins.averageBinWidth();
608 const double xloAdj =
xbins.binLow(
xbins.binNumber(xlo + tolerance));
609 const double xhiAdj =
xbins.binHigh(
xbins.binNumber(xhi - tolerance));
610 xbins.setRange(xloAdj, xhiAdj);
614 if (
true ||
fabs(xloAdj - xlo) > tolerance ||
fabs(xhiAdj - xhi) > tolerance) {
615 coutI(
DataHandling)<<
"RooDataHist::adjustBinning(" <<
GetName() <<
"): fit range of variable " << ourVar->
GetName() <<
" expanded to nearest bin boundaries: [" << xlo <<
"," << xhi <<
"] --> [" << xloAdj <<
"," << xhiAdj <<
"]" << endl;
621 *offset =
xbins.rawBinNumber(xloAdj + tolerance);
627 const double tolerance = 1
e-6 *
xbins.averageBinWidth();
630 const double xloAdj =
xbins.binLow(
xbins.binNumber(xlo + tolerance));
631 const double xhiAdj =
xbins.binHigh(
xbins.binNumber(xhi - tolerance));
632 xbins.setRange(xloAdj, xhiAdj);
635 if (
fabs(xloAdj - xlo) > tolerance ||
fabs(xhiAdj - xhi) > tolerance) {
636 coutI(
DataHandling)<<
"RooDataHist::adjustBinning(" <<
GetName() <<
"): fit range of variable " << ourVar->
GetName() <<
" expanded to nearest bin boundaries: [" << xlo <<
"," << xhi <<
"] --> [" << xloAdj <<
"," << xhiAdj <<
"]" << endl;
643 *offset =
xbins.rawBinNumber(xloAdj + tolerance);
679 void cloneArray(
double*& ours,
const double* theirs, std::size_t
n) {
680 if (ours)
delete[] ours;
683 ours =
new double[
n];
684 std::copy(theirs, theirs+
n, ours);
688 void initArray(
double*& arr, std::size_t
n,
double val) {
689 if (arr)
delete[] arr;
707 for (
const auto real :
_vars) {
715 for (
unsigned int i = 0; i <
_vars.
size(); ++i) {
728 _lvbins.emplace_back(binning ? binning->
clone() :
nullptr);
737 for (
const auto var :
_vars) {
742 for (
unsigned int i = 0u; i<
n; i++) {
766 if (!fillTree) return ;
772 Int_t j(0), idx(0), tmp(ibin) ;
778 theBinVolume *= arg2->getBinWidth(idx) ;
780 _binv[ibin] = theBinVolume ;
795 _binbounds.push_back(std::vector<Double_t>());
797 std::vector<Double_t>& bounds =
_binbounds.back();
798 bounds.reserve(2 * it->numBins());
799 for (
Int_t i = 0; i < it->numBins(); ++i) {
800 bounds.push_back(it->binLow(i));
801 bounds.push_back(it->binHigh(i));
812 RooAbsData(other,newname),
RooDirItem(), _arrSize(other._arrSize), _idxMult(other._idxMult), _pbinvCache(other._pbinvCache)
823 for (
const auto arg :
_vars) {
828 for (
const auto rvarg :
_vars) {
888 delete selCacheVars ;
899 std::size_t nStart, std::size_t nStop,
Bool_t )
912 coutE(
DataHandling) <<
"RooDataHist::reduceEng(" <<
GetName() <<
") Couldn't deep-clone cut variable, abort," << endl ;
920 const std::size_t nevt = nStop < static_cast<std::size_t>(
numEntries()) ? nStop :
static_cast<std::size_t
>(
numEntries());
921 for (
auto i=nStart; i<nevt ; i++) {
926 for (
const auto arg : *row) {
927 if (!arg->inRange(cutRange)) {
933 if (!doSelect) continue ;
935 if (!cloneVar || cloneVar->
getVal()) {
993 if (&
_vars == &coords)
996 std::size_t masterIdx = 0;
998 for (
unsigned int i=0; i <
_vars.
size(); ++i) {
1005 const RooAbsArg* theVar = fast ? coords[i] : coords.
find(*internalVar);
1008 theVar = internalVar;
1011 assert(!fast || strcmp(internalVar->
GetName(), theVar->
GetName()) == 0);
1014 assert(
dynamic_cast<const RooAbsReal*
>(theVar));
1015 const double val =
static_cast<const RooAbsReal*
>(theVar)->getVal();
1021 masterIdx +=
_idxMult[i] * cat->getBin(
static_cast<const char*
>(
nullptr));
1035 cout <<
"_arrSize = " <<
_arrSize << endl ;
1037 cout <<
"wgt[" << i <<
"] = " <<
_wgt[i]
1038 <<
"\tsumw2[" << i <<
"] = " << (
_sumw2 ?
_sumw2[i] : -1.)
1039 <<
"\tvol[" << i <<
"] = " <<
_binv[i] << endl ;
1063 <<
":plotOn: frame does not specify a plot variable" << endl;
1070 <<
":plotOn: dataset doesn't contain plot frame variable" << endl;
1102 if (correctForBinSize) {
1128 Int_t ybinC = realY->getBin() ;
1129 Int_t ybinLo = ybinC-intOrder/2 - ((yval<realY->getBinning().binCenter(ybinC))?1:0) ;
1130 Int_t ybinM = realY->numBins() ;
1136 for (i=ybinLo ; i<=intOrder+ybinLo ; i++) {
1138 if (i>=0 && i<ybinM) {
1141 realY->setBin(ibin) ;
1142 xarr[i-ybinLo] = realY->getVal() ;
1143 }
else if (i>=ybinM) {
1145 ibin = 2*ybinM-i-1 ;
1146 realY->setBin(ibin) ;
1147 xarr[i-ybinLo] = 2*realY->getMax()-realY->getVal() ;
1151 realY->setBin(ibin) ;
1152 xarr[i-ybinLo] = 2*realY->getMin()-realY->getVal() ;
1158 cout <<
"RooDataHist interpolating data is" << endl ;
1160 for (
int q=0;
q<=intOrder ;
q++) cout << xarr[
q] <<
" " ;
1161 cout <<
" yarr = " ;
1162 for (
int q=0;
q<=intOrder ;
q++) cout << yarr[
q] <<
" " ;
1198 throw std::invalid_argument(
Form(
"RooDataHist::weightError(%s) error type Auto not allowed here",
GetName())) ;
1202 throw std::invalid_argument(
Form(
"RooDataHist::weightError(%s) error type Expected not allowed here",
GetName())) ;
1252 Int_t fbinLo = fbinC-intOrder/2 - ((xval<binning->
binCenter(fbinC))?1:0) ;
1259 for (i=fbinLo ; i<=intOrder+fbinLo ; i++) {
1261 if (i>=0 && i<fbinM) {
1266 xarr[i-fbinLo] = dim.
getVal() ;
1268 yarr[i - fbinLo] =
get_wgt(idx);
1269 if (correctForBinSize) yarr[i-fbinLo] /=
_binv[idx] ;
1270 }
else if (i>=fbinM) {
1272 ibin = 2*fbinM-i-1 ;
1275 if (cdfBoundaries) {
1276 xarr[i-fbinLo] = dim.
getMax()+1
e-10*(i-fbinM+1) ;
1277 yarr[i-fbinLo] = 1.0 ;
1281 yarr[i - fbinLo] =
get_wgt(idx);
1282 if (correctForBinSize)
1283 yarr[i - fbinLo] /=
_binv[idx];
1290 if (cdfBoundaries) {
1291 xarr[i-fbinLo] = dim.
getMin()-ibin*(1
e-10) ; ;
1292 yarr[i-fbinLo] = 0.0 ;
1296 yarr[i - fbinLo] =
get_wgt(idx);
1297 if (correctForBinSize)
1298 yarr[i - fbinLo] /=
_binv[idx];
1325 if ((sumw2 > 0. || wgt != 1.) && !
_sumw2) {
1336 if (
_sumw2)
_sumw2[idx] += (sumw2 > 0 ? sumw2 : wgt*wgt);
1378 if (wgtErr > 0. && !
_sumw2) {
1385 _wgt[binNumber] = wgt ;
1400 if (
_curIndex == std::numeric_limits<std::size_t>::max()) {
1427 add(dset,&cutVar,wgt) ;
1458 if (!cloneVar || cloneVar->
getVal()) {
1491 const double theBinVolume = correctForBinSize ? (inverseBinCor ? 1/
_binv[i] :
_binv[i]) : 1.0 ;
1492 kahanSum +=
get_wgt(i) * theBinVolume;
1523 sliceOnlySet.
remove(sumSet,
true,
true) ;
1525 _vars = sliceOnlySet;
1526 std::vector<double>
const * pbinv =
nullptr;
1528 if(correctForBinSize && inverseBinCor) {
1530 }
else if(correctForBinSize && !inverseBinCor) {
1538 for (
unsigned int i = 0; i <
_vars.
size(); ++i) {
1542 if (sumSet.
find(*arg)) {
1546 refBin[i] = argLv->
getBin();
1554 std::size_t tmpibin = ibin;
1558 for (
unsigned int ivar = 0; !skip && ivar <
_vars.
size(); ++ivar) {
1561 if (mask[ivar] && idx!=refBin[ivar])
1566 const double theBinVolume = correctForBinSize ? (inverseBinCor ? 1/(*pbinv)[ibin] : (*pbinv)[ibin] ) : 1.0 ;
1593 bool correctForBinSize,
bool inverseBinCor,
1594 const std::map<
const RooAbsArg*, std::pair<double, double> >& ranges,
1603 sliceOnlySet.
remove(sumSet,
true,
true);
1604 _vars = sliceOnlySet;
1611 std::vector<double> rangeLo(
_vars.
getSize(), -std::numeric_limits<Double_t>::infinity());
1612 std::vector<double> rangeHi(
_vars.
getSize(), +std::numeric_limits<Double_t>::infinity());
1614 for (std::size_t i = 0; i <
_vars.
size(); ++i) {
1623 refBin[i] = argLV->
getBin();
1626 auto it = ranges.find(sumsetv ? sumsetv : slicesetv);
1627 if (ranges.end() != it) {
1628 rangeLo[i] = it->second.first;
1629 rangeHi[i] = it->second.second;
1638 for (
int ivar = 0, tmp = ibin; !skip && ivar <
int(
_vars.
size()); ++ivar) {
1641 if (mask[ivar] && idx!=refBin[ivar]) skip =
true;
1651 Double_t binVolumeSumSetInRange = 1.;
1657 const auto arg =
_vars[ivar];
1658 if (!sumSet.
find(*arg)) {
1665 if (binHi < rangeLo[ivar] || binLo > rangeHi[ivar]) {
1667 binVolumeSumSetInRange = 0.;
1671 binVolumeSumSetFull *= binHi - binLo;
1672 binVolumeSumSetInRange *= std::min(rangeHi[ivar], binHi) - std::max(rangeLo[ivar], binLo);
1674 const Double_t corrPartial = binVolumeSumSetInRange / binVolumeSumSetFull;
1675 if (0. == corrPartial)
continue;
1676 const Double_t corr = correctForBinSize ? (inverseBinCor ? binVolumeSumSetFull /
_binv[ibin] : binVolumeSumSetFull ) : 1.0;
1677 total += getBinScale(ibin)*(
get_wgt(ibin) * corr * corrPartial);
1698 for (
auto const&
v :
_vars) {
1699 code += ((dimSet.
find(*
v) ? 1 : 0) << i) ;
1705 if(!pbinv.empty()) {
1712 for (std::size_t i = 0; i < selDim.size(); ++i) {
1713 selDim[i] = (code >> i) & 1 ;
1718 Int_t idx(0), tmp(ibin) ;
1720 for (
unsigned int j=0; j <
_lvvars.size(); ++j) {
1730 pbinv[ibin] = theBinVolume ;
1770 if (cutSpec==0 && cutRange==0) {
1785 || (select && select->
eval() == 0.)
1792 if (select)
delete select ;
1879 coutE(
InputArguments) <<
"RooDataHist::sliceIterator() variable " << sliceArg.
GetName() <<
" is not part of this RooDataHist" << endl ;
1926 for (
const auto arg :
_vars) {
1932 os << arg->GetName() ;
1950 for (
const auto arg :
_vars) {
1951 if (!arg->inRange(
nullptr)) {
1968 const double wgt =
_wgt[i];
1970 if (
fabs(std::modf(wgt, &intpart)) > 1.E-10)
1989 os <<
indent <<
" Observables " <<
_vars << endl ;
1991 os <<
indent <<
" Observables: " ;
2014 void RooDataHist::Streamer(
TBuffer &R__b) {
2035 RooAbsData::Streamer(R__b);
2036 TTree* X_tree(0) ; R__b >> X_tree;
2037 RooArgSet X_truth ; X_truth.Streamer(R__b);
2038 TString X_blindString ; X_blindString.Streamer(R__b);
2048 RooDirItem::Streamer(R__b);
2103 evalData.
spans[batch.first] = std::move(batch.second);
void removeFromDir(TObject *obj)
Remove object from directory it was added to.
std::vector< std::vector< Double_t > > _binbounds
List of used binnings associated with lvalues.
virtual void setBin(Int_t ibin, const char *rangeName=0)
Set category to i-th fit bin, which is the i-th registered state.
Class to manage histogram axis.
TIterator * MakeIterator(Bool_t forward=kTRUE) const
Create a TIterator for this list.
RooCmdArg is a named container for two doubles, two integers two object points and three string point...
virtual TList * GetList() const
RooAbsArg * addClone(const RooAbsArg &var, Bool_t silent=kFALSE) override
Add clone of specified element to an owning set.
void setAllWeights(Double_t value)
Set all the event weight of all bins to the specified value.
virtual void SetNameTitle(const char *name, const char *title)
Set all the TNamed parameters (name and title).
RooAbsData * cacheClone(const RooAbsArg *newCacheOwner, const RooArgSet *newCacheVars, const char *newName=0) override
Construct a clone of this dataset that contains only the cached variables.
virtual void SetName(const char *name)
Set the name of the TNamed.
RooAbsData is the common abstract base class for binned and unbinned datasets.
double weight(std::size_t i) const
Return weight of i-th bin.
virtual Double_t getMax(const char *name=0) const
Get maximum of currently defined range.
void printMultiline(std::ostream &os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const
Interface for detailed printing of object.
Class RooBinning is an implements RooAbsBinning in terms of an array of boundary values,...
virtual void ReadFastArray(Bool_t *b, Int_t n)=0
char * Form(const char *fmt,...)
virtual const char * GetTitle() const
Returns title of object.
virtual Int_t binNumber(Double_t x) const =0
RooAbsCollection & assignValueOnly(const RooAbsCollection &other, Bool_t oneSafe=kFALSE)
The assignment operator sets the value of any argument in our set that also appears in the other set.
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
RooAbsDataStore * _dstore
External variables cached with this data set.
RooArgList is a container object that can hold multiple RooAbsArg objects.
A TTree represents a columnar dataset.
RooDirItem is a utility base class for RooFit objects that are to be attached to ROOT directories.
virtual Double_t weight() const =0
void importTH1Set(const RooArgList &vars, RooCategory &indexCat, std::map< std::string, TH1 * > hmap, Double_t initWgt, Bool_t doDensityCorrection)
Import data from given set of TH1/2/3 into this RooDataHist.
Double_t getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
Double_t sumEntries() const override
Sum the weights of all bins.
void importTH1(const RooArgList &vars, const TH1 &histo, Double_t initWgt, Bool_t doDensityCorrection)
Import data from given TH1/2/3 into this RooDataHist.
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
static StorageType defaultStorageType
virtual Bool_t remove(const RooAbsArg &var, Bool_t silent=kFALSE, Bool_t matchByNameOnly=kFALSE)
Remove the specified argument from our list.
Bool_t correctForBinWidth
RooAbsArg * find(const char *name) const
Find object with given name in list.
static constexpr double pc
RooSpan< const double > getWeightBatch(std::size_t first, std::size_t len) const override
Return event weights of all events in range [first, first+len).
RooAbsDataStore * store()
static void indent(ostringstream &buf, int indent_level)
Bool_t getPoissonInterval(Int_t n, Double_t &mu1, Double_t &mu2, Double_t nSigma=1) const
Return a confidence interval for the expected number of events given n observed (unweighted) events.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
RooAbsArg * at(Int_t idx) const
Return object at given index, or nullptr if index is out of range.
Buffer base class used for serializing objects.
static KahanSum< T, N > Accumulate(Iterator begin, Iterator end, T initialValue=T{})
Iterate over a range and return an instance of a KahanSum.
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
void weightError(Double_t &lo, Double_t &hi, ErrorType etype=Poisson) const override
Return the error of current weight.
void importDHistSet(const RooArgList &vars, RooCategory &indexCat, std::map< std::string, RooDataHist * > dmap, Double_t initWgt)
Import data from given set of TH1/2/3 into this RooDataHist.
virtual Int_t getBin(const char *rangeName=0) const =0
void setRange(const char *name, Double_t min, Double_t max)
Set a fit or plotting range.
void SetNameTitle(const char *name, const char *title) override
Change the title of this RooDataHist.
void getBatches(RooBatchCompute::RunContext &evalData, std::size_t begin, std::size_t len) const override
Write information to retrieve data columns into evalData.spans.
virtual const char * getCurrentLabel() const
Return label string of current state.
Double_t sum(bool correctForBinSize, bool inverseCorr=false) const
Return the sum of the weights of all bins in the histogram.
bool defineType(const std::string &label)
Define a state with given name.
Double_t _cache_sum
Is cache sum valid? Needs to be Int_t instead of CacheSumState_t for subclasses.
Iterator abstract base class.
virtual Double_t getMin(const char *name=0) const
Get miniminum of currently defined range.
void registerWeightArraysToDataStore() const
Hand over pointers to our weight arrays to the data store implementation.
Double_t weightSquared() const override
Return squared weight of last bin that was requested with get().
virtual void add(const RooArgSet &row, Double_t wgt=1.0)
Add wgt to the bin content enclosed by the coordinates passed in row.
static const RooHistError & instance()
Return a reference to a singleton object that is created the first time this method is called.
virtual Int_t GetDimension() const
Class RooCmdConfig is a configurable parser for RooCmdArg named arguments.
Double_t get_curWgtErrLo() const
virtual Double_t binCenter(Int_t bin) const =0
void checkBinBounds() const
RooArgSet * snapshot(bool deepCopy=true) const
Use RooAbsCollection::snapshot(), but return as RooArgSet.
std::vector< Int_t > _idxMult
static unsigned int total
float type_of_call hi(const int &, const int &)
Double_t binVolume() const
Return volume of current bin.
Double_t interpolateDim(RooRealVar &dim, const RooAbsBinning *binning, Double_t xval, Int_t intOrder, Bool_t correctForBinSize, Bool_t cdfBoundaries)
Perform boundary safe 'intOrder'-th interpolation of weights in dimension 'dim' at current value 'xva...
VecExpr< UnaryOp< Fabs< T >, VecExpr< A, T, D >, T >, T, D > fabs(const VecExpr< A, T, D > &rhs)
Int_t calcTreeIndex() const
Legacy overload to calculate the tree index from the current value of _vars.
virtual Int_t numBins(const char *rangeName) const
Return the number of fit bins ( = number of types )
The RooDataHist is a container class to hold N-dimensional binned data.
virtual Bool_t setLabel(const char *label, bool printError=true) override
Set value by specifying the name of the desired state.
const Double_t * GetArray() const
void dump2()
Debug stuff, should go...
const RooArgSet * get() const override
Get bin centre of current bin.
virtual Int_t numBins(const char *rangeName=0) const
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
std::vector< RooAbsLValue * > _lvvars
Cache for arrays of partial bin volumes.
RooAbsData * reduceEng(const RooArgSet &varSubset, const RooFormulaVar *cutVar, const char *cutRange=0, std::size_t nStart=0, std::size_t nStop=std::numeric_limits< std::size_t >::max(), Bool_t copyCache=kTRUE) override
Implementation of RooAbsData virtual method that drives the RooAbsData::reduce() methods.
void _adjustBinning(RooRealVar &theirVar, const TAxis &axis, RooRealVar *ourVar, Int_t *offset)
Cache for sum of entries ;.
void initialize(const char *binningName=0, Bool_t fillTree=kTRUE)
Initialization procedure: allocate weights array, calculate multipliers needed for N-space to 1-dim a...
static Double_t interpolate(Double_t yArr[], Int_t nOrder, Double_t x)
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
void reset() override
Reset all bin weights to zero.
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
virtual void printArgs(std::ostream &os) const override
Print argument of dataset, i.e. the observable names.
virtual const RooArgSet * get() const
void function(const Char_t *name_, T fun, const Char_t *docstring=0)
Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE) override
Add element to non-owning set.
RooAbsCollection * selectCommon(const RooAbsCollection &refColl) const
Create a subset of the current collection, consisting only of those elements that are contained as we...
virtual void printValue(std::ostream &os) const override
Print value of the dataset, i.e. the sum of weights contained in the dataset.
RooLinkedList is an collection class for internal use, storing a collection of RooAbsArg pointers in ...
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
RooAbsBinning is the abstract base class for RooRealVar binning definitions.
Int_t getIndex(const RooAbsCollection &coord, Bool_t fast=false) const
Calculate bin number of the given coordinates.
virtual void setExternalWeightArray(const Double_t *, const Double_t *, const Double_t *, const Double_t *)
RooAbsCollection is an abstract container object that can hold multiple RooAbsArg objects.
A RooPlot is a plot frame and a container for graphics objects within that frame.
RooDataHist()
Default constructor.
std::vector< std::unique_ptr< const RooAbsBinning > > _lvbins
List of observables casted as RooAbsLValue.
Storage_t::size_type size() const
virtual Int_t numEntries() const
Return number of entries in dataset, i.e., count unweighted entries.
void adjustBinning(const RooArgList &vars, const TH1 &href, Int_t *offset=0)
Adjust binning specification on first and optionally second and third observable to binning in given ...
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.
void cacheValidEntries()
Compute which bins of the dataset are part of the currently set fit range.
std::vector< double > _maskedWeights
Bool_t isNonPoissonWeighted() const override
Returns true if dataset contains entries with a non-integer weight.
void attachDataSet(const RooAbsData &set)
Replace server nodes with names matching the dataset variable names with those data set variables,...
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
void appendToDir(TObject *obj, Bool_t forceMemoryResident=kFALSE)
Append object to directory.
Double_t weight() const override
Return weight of last bin that was requested with get().
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
friend class RooDataHistSliceIter
RooTreeDataStore is a TTree-backed data storage.
std::size_t _curIndex
Copy of _wgtVec, but masked events have a weight of zero.
virtual void printMultiline(std::ostream &os, Int_t content, Bool_t verbose=kFALSE, TString indent="") const override
Print the details on the dataset contents.
void SetName(const char *name) override
Change the name of the RooDataHist.
std::vector< std::string > tokenise(const std::string &str, const std::string &delims, bool returnEmptyToken=true)
Tokenise the string by splitting at the characters in delims.
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...
const RooAbsBinning & getBinning(const char *name=0, Bool_t verbose=kTRUE, Bool_t createOnTheFly=kFALSE) const
Return binning definition with name.
virtual Int_t getBin(const char *rangeName=0) const
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 numEntries() const override
Return the number of bins.
virtual void checkInit() const
virtual void setBinFast(Int_t ibin, const RooAbsBinning &binning)
Set value to center of bin 'ibin' of binning 'rangeName' (or of default binning if no range is specif...
virtual TObject * Remove(TObject *obj)
Remove object from the list.
RooCategory is an object to represent discrete states.
void setBinning(const RooAbsBinning &binning, const char *name=0)
Add given binning under name 'name' with this variable.
virtual Double_t weightSquared() const =0
virtual RooAbsBinning * clone(const char *name=0) const =0
RooVectorDataStore uses std::vectors to store data columns.
virtual void Add(TObject *obj)
Mother of all ROOT objects.
bool hasLabel(const std::string &label) const
Check if a state with name label exists.
TH1 is the base class of all histogram classes in ROOT.
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,...
~RooDataHist() override
Destructor.
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
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
virtual Int_t getBins(const char *name=0) const
Get number of bins of currently defined range.
Abstract base class for objects that are lvalues, i.e.
virtual const char * GetName() const
Returns name of object.
Double_t get_wgt(std::size_t idx) const
RooAbsDataStore is the abstract base class for data collection that use a TTree as internal storage m...
virtual void attachCache(const RooAbsArg *newOwner, const RooArgSet &cachedVars)
Internal method – Attach dataset copied with cache contents to copied instances of functions.
Double_t get_curWgtErrHi() const
RooAbsCategoryLValue is the common abstract base class for objects that represent a discrete value th...
Bool_t allInRange(const char *rangeSpec) const
Return true if all contained object report to have their value inside the specified range.
virtual Double_t getBinWidth(Int_t i, const char *rangeName=0) const =0
RooRealVar represents a variable that can be changed from the outside.
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
const TArrayD * GetXbins() const
CacheSumState_t
list of bin bounds per dimension
double pow(double, double)
RooAbsRealLValue is the common abstract base class for objects that represent a real value that may a...
static constexpr double second
virtual const char * ClassName() const
Returns name of class to which the object belongs.
void printDataHistogram(std::ostream &os, RooRealVar *obs) 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).
RooAbsRealLValue * getPlotVar() const
std::unordered_map< const RooAbsReal *, RooSpan< const double > > spans
Once an object has computed its value(s), the span pointing to the results is registered here.
This struct enables passing computation data around between elements of a computation graph.
Double_t get_curSumW2() const
A simple container to hold a batch of data values.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
const double xbins[xbins_n]
std::unordered_map< int, std::vector< double > > _pbinvCache
virtual void setBin(Int_t ibin, const char *rangeName=0)
Set value to center of bin 'ibin' of binning 'rangeName' (or of default binning if no range is specif...