109 RooAbsData(
name,title,vars), _wgt(0), _binValid(0), _curWeight(0), _curVolume(1), _pbinv(0), _pbinvCacheMgr(0,10), _cache_sum_valid(0)
146 RooAbsData(
name,title,vars), _wgt(0), _binValid(0), _curWeight(0), _curVolume(1), _pbinv(0), _pbinvCacheMgr(0,10), _cache_sum_valid(0)
172 map<string,TH1*> histMap,
Double_t wgt) :
174 _wgt(0), _binValid(0), _curWeight(0), _curVolume(1), _pbinv(0), _pbinvCacheMgr(0,10), _cache_sum_valid(0)
198 map<string,RooDataHist*> dhistMap,
Double_t wgt) :
200 _wgt(0), _binValid(0), _curWeight(0), _curVolume(1), _pbinv(0), _pbinvCacheMgr(0,10), _cache_sum_valid(0)
221 RooAbsData(
name,title,vars), _wgt(0), _binValid(0), _curWeight(0), _curVolume(1), _pbinv(0), _pbinvCacheMgr(0,10), _cache_sum_valid(0)
230 <<
"number of dimension variables" << endl ;
278 RooAbsData(
name,title,
RooArgSet(vars,(
RooAbsArg*)
RooCmdConfig::decodeObjOnTheFly(
"RooDataHist::RooDataHist",
"IndexCat",0,0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8))),
279 _wgt(0), _binValid(0), _curWeight(0), _curVolume(1), _pbinv(0), _pbinvCacheMgr(0,10), _cache_sum_valid(0)
287 pc.defineObject(
"impHist",
"ImportHisto",0) ;
288 pc.defineInt(
"impDens",
"ImportHisto",0) ;
289 pc.defineObject(
"indexCat",
"IndexCat",0) ;
290 pc.defineObject(
"impSliceHist",
"ImportHistoSlice",0,0,
kTRUE) ;
291 pc.defineString(
"impSliceState",
"ImportHistoSlice",0,
"",
kTRUE) ;
292 pc.defineObject(
"impSliceDHist",
"ImportDataHistSlice",0,0,
kTRUE) ;
293 pc.defineString(
"impSliceDState",
"ImportDataHistSlice",0,
"",
kTRUE) ;
294 pc.defineDouble(
"weight",
"Weight",0,1) ;
295 pc.defineObject(
"dummy1",
"ImportDataHistSliceMany",0) ;
296 pc.defineObject(
"dummy2",
"ImportHistoSliceMany",0) ;
297 pc.defineMutex(
"ImportHisto",
"ImportHistoSlice",
"ImportDataHistSlice") ;
298 pc.defineDependency(
"ImportHistoSlice",
"IndexCat") ;
299 pc.defineDependency(
"ImportDataHistSlice",
"IndexCat") ;
314 TH1* impHist =
static_cast<TH1*
>(
pc.getObject(
"impHist")) ;
315 Bool_t impDens =
pc.getInt(
"impDens") ;
317 const char* impSliceNames =
pc.getString(
"impSliceState",
"",
kTRUE) ;
318 const RooLinkedList& impSliceHistos =
pc.getObjectList(
"impSliceHist") ;
320 const char* impSliceDNames =
pc.getString(
"impSliceDState",
"",
kTRUE) ;
321 const RooLinkedList& impSliceDHistos =
pc.getObjectList(
"impSliceDHist") ;
327 importTH1(vars,*impHist,initWgt, impDens) ;
329 }
else if (indexCat) {
332 if (impSliceHistos.
GetSize()>0) {
335 map<string,TH1*> hmap ;
338 auto histo =
static_cast<TH1*
>(hiter->
Next());
346 map<string,RooDataHist*> dmap ;
377 Int_t offset[3]{0, 0, 0};
407 Int_t ix(0),iy(0),iz(0) ;
408 for (ix=0 ; ix < xvar->
getBins() ; ix++) {
411 for (iy=0 ; iy < yvar->
getBins() ; iy++) {
414 for (iz=0 ; iz < zvar->
getBins() ; iz++) {
447 for (map<string,TH1*>::iterator hiter = hmap.begin() ; hiter!=hmap.end() ; ++hiter) {
450 histo = hiter->second ;
453 if (!indexCat.
lookupType(hiter->first.c_str())) {
455 coutI(
InputArguments) <<
"RooDataHist::importTH1Set(" <<
GetName() <<
") defining state \"" << hiter->first <<
"\" in index category " << indexCat.
GetName() << endl ;
457 if (!icat->
lookupType(hiter->first.c_str())) {
465 <<
"number of continuous variables" << endl ;
502 Int_t ic(0),ix(0),iy(0),iz(0) ;
503 for (ic=0 ; ic < icat->
numBins(0) ; ic++) {
506 for (ix=0 ; ix < xvar->
getBins() ; ix++) {
509 for (iy=0 ; iy < yvar->
getBins() ; iy++) {
512 for (iz=0 ; iz < zvar->
getBins() ; iz++) {
542 for (map<string,RooDataHist*>::iterator diter = dmap.begin() ; diter!=dmap.end() ; ++diter) {
545 if (!indexCat.
lookupType(diter->first.c_str())) {
547 coutI(
InputArguments) <<
"RooDataHist::importDHistSet(" <<
GetName() <<
") defining state \"" << diter->first <<
"\" in index category " << indexCat.
GetName() << endl ;
549 if (!icat->
lookupType(diter->first.c_str())) {
558 for (map<string,RooDataHist*>::iterator diter = dmap.begin() ; diter!=dmap.end() ; ++diter) {
562 icat->
setLabel(diter->first.c_str()) ;
584 const double xlo = theirVar.
getMin();
585 const double xhi = theirVar.
getMax();
599 if (
true ||
fabs(xloAdj - xlo) > tolerance ||
fabs(xhiAdj - xhi) > tolerance) {
600 coutI(
DataHandling)<<
"RooDataHist::adjustBinning(" <<
GetName() <<
"): fit range of variable " << ourVar->
GetName() <<
" expanded to nearest bin boundaries: [" << xlo <<
"," << xhi <<
"] --> [" << xloAdj <<
"," << xhiAdj <<
"]" << endl;
620 if (
fabs(xloAdj - xlo) > tolerance ||
fabs(xhiAdj - xhi) > tolerance) {
621 coutI(
DataHandling)<<
"RooDataHist::adjustBinning(" <<
GetName() <<
"): fit range of variable " << ourVar->
GetName() <<
" expanded to nearest bin boundaries: [" << xlo <<
"," << xhi <<
"] --> [" << xloAdj <<
"," << xhiAdj <<
"]" << endl;
674 for (
const auto real :
_vars) {
679 for (
const auto rvarg :
_vars) {
699 for (
const auto var :
_vars) {
703 for (i=0 ; i<
n ; i++) {
734 if (!fillTree) return ;
740 for (ibin=0 ; ibin<
_arrSize ; ibin++) {
741 Int_t j(0), idx(0), tmp(ibin) ;
743 for (
auto arg2 :
_vars) {
748 theBinVolume *= arglv->getBinWidth(idx) ;
751 _binv[ibin] = theBinVolume ;
765 for (std::vector<const RooAbsBinning*>::const_iterator it =
_lvbins.begin();
767 _binbounds.push_back(std::vector<Double_t>());
769 std::vector<Double_t>& bounds =
_binbounds.back();
770 bounds.reserve(2 * (*it)->numBins());
771 for (
Int_t i = 0; i < (*it)->numBins(); ++i) {
772 bounds.push_back((*it)->binLow(i));
773 bounds.push_back((*it)->binHigh(i));
783 RooAbsData(other,newname),
RooDirItem(), _idxMult(other._idxMult), _binValid(0), _curWeight(0), _curVolume(1), _pbinv(0), _pbinvCacheMgr(other._pbinvCacheMgr,0), _cache_sum_valid(0)
803 for (
const auto arg :
_vars) {
808 for (
const auto rvarg :
_vars) {
836 _wgt(0), _binValid(0), _curWeight(0), _curVolume(1), _pbinv(0), _pbinvCacheMgr(0,10), _cache_sum_valid(0)
848 _wgt[i] =
h->_wgt[i] ;
872 delete selCacheVars ;
883 std::size_t nStart, std::size_t nStop,
Bool_t )
896 coutE(
DataHandling) <<
"RooDataHist::reduceEng(" <<
GetName() <<
") Couldn't deep-clone cut variable, abort," << endl ;
904 const std::size_t nevt = nStop < static_cast<std::size_t>(
numEntries()) ? nStop :
static_cast<std::size_t
>(
numEntries());
905 for (
auto i=nStart; i<nevt ; i++) {
910 for (
auto arg : *
get()) {
911 if (!arg->inRange(cutRange)) {
917 if (!doSelect) continue ;
919 if (!cloneVar || cloneVar->
getVal()) {
945 vector<const RooAbsBinning*>::iterator iter =
_lvbins.begin() ;
981 for (
unsigned int i=0; i <
_lvvars.size(); ++i) {
997 cout <<
"_arrSize = " <<
_arrSize << endl ;
999 cout <<
"wgt[" << i <<
"] = " <<
_wgt[i] <<
"sumw2[" << i <<
"] = " <<
_sumw2[i] <<
" vol[" << i <<
"] = " <<
_binv[i] << endl ;
1023 <<
":plotOn: frame does not specify a plot variable" << endl;
1030 <<
":plotOn: dataset doesn't contain plot frame variable" << endl;
1075 if (correctForBinSize) {
1104 Int_t ybinC = realY->getBin() ;
1105 Int_t ybinLo = ybinC-intOrder/2 - ((yval<realY->getBinning().binCenter(ybinC))?1:0) ;
1106 Int_t ybinM = realY->numBins() ;
1112 for (i=ybinLo ; i<=intOrder+ybinLo ; i++) {
1114 if (i>=0 && i<ybinM) {
1117 realY->setBin(ibin) ;
1118 xarr[i-ybinLo] = realY->getVal() ;
1119 }
else if (i>=ybinM) {
1121 ibin = 2*ybinM-i-1 ;
1122 realY->setBin(ibin) ;
1123 xarr[i-ybinLo] = 2*realY->getMax()-realY->getVal() ;
1127 realY->setBin(ibin) ;
1128 xarr[i-ybinLo] = 2*realY->getMin()-realY->getVal() ;
1134 cout <<
"RooDataHist interpolating data is" << endl ;
1136 for (
int q=0;
q<=intOrder ;
q++) cout << xarr[
q] <<
" " ;
1137 cout <<
" yarr = " ;
1138 for (
int q=0;
q<=intOrder ;
q++) cout << yarr[
q] <<
" " ;
1174 throw string(
Form(
"RooDataHist::weightError(%s) error type Auto not allowed here",
GetName())) ;
1178 throw string(
Form(
"RooDataHist::weightError(%s) error type Expected not allowed here",
GetName())) ;
1223 Int_t fbinLo = fbinC-intOrder/2 - ((xval<binning->
binCenter(fbinC))?1:0) ;
1230 for (i=fbinLo ; i<=intOrder+fbinLo ; i++) {
1232 if (i>=0 && i<fbinM) {
1237 xarr[i-fbinLo] = dim.
getVal() ;
1239 yarr[i - fbinLo] =
get_wgt(idx);
1240 if (correctForBinSize) yarr[i-fbinLo] /=
_binv[idx] ;
1241 }
else if (i>=fbinM) {
1243 ibin = 2*fbinM-i-1 ;
1246 if (cdfBoundaries) {
1247 xarr[i-fbinLo] = dim.
getMax()+1
e-10*(i-fbinM+1) ;
1248 yarr[i-fbinLo] = 1.0 ;
1252 yarr[i - fbinLo] =
get_wgt(idx);
1253 if (correctForBinSize)
1254 yarr[i - fbinLo] /=
_binv[idx];
1261 if (cdfBoundaries) {
1262 xarr[i-fbinLo] = dim.
getMin()-ibin*(1
e-10) ; ;
1263 yarr[i-fbinLo] = 0.0 ;
1267 yarr[i - fbinLo] =
get_wgt(idx);
1268 if (correctForBinSize)
1269 yarr[i - fbinLo] /=
_binv[idx];
1300 _sumw2[idx] += (sumw2>0?sumw2:wgt*wgt) ;
1360 _sumw2[idx] = wgtErr*wgtErr ;
1375 add(dset,&cutVar,wgt) ;
1406 if (!cloneVar || cloneVar->
getVal()) {
1433 Int_t cache_code = 1 + (correctForBinSize?1:0) + ((correctForBinSize&&inverseBinCor)?1:0) ;
1442 Double_t theBinVolume = correctForBinSize ? (inverseBinCor ? 1/
_binv[i] :
_binv[i]) : 1.0 ;
1481 _vars = *sliceOnlySet ;
1483 delete sliceOnlySet ;
1489 for (
unsigned int i = 0; i <
_vars.
size(); ++i) {
1490 const auto arg =
_vars[i];
1492 if (sumSet.
find(*arg)) {
1496 refBin[i] =
dynamic_cast<RooAbsLValue*
>(arg)->getBin();
1503 for (ibin=0 ; ibin<
_arrSize ; ibin++) {
1505 Int_t idx(0), tmp(ibin), ivar(0) ;
1509 for (
unsigned int i = 0; !skip && i <
_vars.
size(); ++i) {
1512 if (mask[ivar] && idx!=refBin[ivar]) skip=
kTRUE ;
1553 const std::map<
const RooAbsArg*, std::pair<Double_t, Double_t> >& ranges)
1562 _vars = sliceOnlySet;
1569 std::vector<Double_t> rangeLo(
_vars.
getSize(), -std::numeric_limits<Double_t>::infinity());
1570 std::vector<Double_t> rangeHi(
_vars.
getSize(), +std::numeric_limits<Double_t>::infinity());
1572 for (std::size_t i = 0; i <
_vars.
size(); ++i) {
1573 const auto arg =
_vars[i];
1580 refBin[i] = argLV->getBin();
1583 auto it = ranges.find(sumsetv ? sumsetv : slicesetv);
1584 if (ranges.end() != it) {
1585 rangeLo[i] = it->second.first;
1586 rangeHi[i] = it->second.second;
1595 for (
int ivar = 0, tmp = ibin; !skip && ivar <
int(
_vars.
size()); ++ivar) {
1598 if (mask[ivar] && idx!=refBin[ivar]) skip=
kTRUE;
1611 if (binHi < rangeLo[ivar] || binLo > rangeHi[ivar]) {
1617 (std::min(rangeHi[ivar], binHi) - std::max(rangeLo[ivar], binLo));
1620 if (0. == corrPartial)
continue;
1621 const Double_t corr = correctForBinSize ? (inverseBinCor ? 1. /
_binv[ibin] :
_binv[ibin] ) : 1.0;
1650 pbinv =
new vector<Double_t>(
_arrSize) ;
1655 for (
const auto v :
_vars) {
1661 for (ibin=0 ; ibin<
_arrSize ; ibin++) {
1662 Int_t j(0), idx(0), tmp(ibin) ;
1664 for (
const auto absArg :
_vars) {
1672 theBinVolume *= arg->getBinWidth(idx) ;
1675 (*pbinv)[ibin] = theBinVolume ;
1710 carry = (t -
n) -
y;
1728 if (cutSpec==0 && cutRange==0) {
1743 if (select && select->
eval()==0.) continue ;
1749 carry = (t - sumw) -
y;
1754 if (select)
delete select ;
1854 coutE(
InputArguments) <<
"RooDataHist::sliceIterator() variable " << sliceArg.
GetName() <<
" is not part of this RooDataHist" << endl ;
1901 for (
const auto arg :
_vars) {
1907 os << arg->GetName() ;
1982 os <<
indent <<
" Observables " <<
_vars << endl ;
1984 os <<
indent <<
" Observables: " ;
2000void RooDataHist::Streamer(
TBuffer &R__b)
2023 RooAbsData::Streamer(R__b);
2024 TTree* X_tree(0) ; R__b >> X_tree;
2025 RooArgSet X_truth ; X_truth.Streamer(R__b);
2026 TString X_blindString ; X_blindString.Streamer(R__b);
2036 RooDirItem::Streamer(R__b);
static void indent(ostringstream &buf, int indent_level)
static unsigned int total
float type_of_call hi(const int &, const int &)
double pow(double, double)
char * Form(const char *fmt,...)
RooAbsArg is the common abstract base class for objects that represent a value (of arbitrary type) an...
virtual Bool_t inRange(const char *) const
void attachDataSet(const RooAbsData &set)
Replace server nodes with names matching the dataset variable names with those data set variables,...
RooAbsBinning is the abstract base class for RooRealVar binning definitions This class defines the in...
virtual RooAbsBinning * clone(const char *name=0) const =0
virtual Double_t binCenter(Int_t bin) const =0
virtual void setBin(Int_t ibin, const char *rangeName=0)
Set category to i-th fit bin, which is the i-th registered state.
virtual Int_t numBins(const char *rangeName) const
Return the number of fit bins ( = number of types )
virtual const char * getCurrentLabel() const
Return label string of current state.
const RooCatType * lookupType(value_type index, Bool_t printError=kFALSE) const
Find our type corresponding to the specified index, or return nullptr for no match.
RooAbsCollection * selectCommon(const RooAbsCollection &refColl) const
Create a subset of the current collection, consisting only of those elements that are contained as we...
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.
Storage_t::size_type size() const
void assignFast(const RooAbsCollection &other, Bool_t setValDirty=kTRUE)
Functional equivalent of operator=() but assumes this and other collection have same layout.
Bool_t allInRange(const char *rangeSpec) const
Return true if all contained object report to have their value inside the specified range.
virtual Bool_t remove(const RooAbsArg &var, Bool_t silent=kFALSE, Bool_t matchByNameOnly=kFALSE)
Remove the specified argument from our list.
TIterator * createIterator(Bool_t dir=kIterForward) const
TIterator-style iteration over contained elements.
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 void setExternalWeightArray(const Double_t *, const Double_t *, const Double_t *, const Double_t *)
virtual void checkInit() const
RooAbsData is the common abstract base class for binned and unbinned datasets.
virtual const RooArgSet * get() const
void printMultiline(std::ostream &os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const
Interface for detailed printing of object.
virtual Double_t weight() const =0
static StorageType defaultStorageType
virtual Double_t weightSquared() const =0
virtual void attachCache(const RooAbsArg *newOwner, const RooArgSet &cachedVars)
Internal method – Attach dataset copied with cache contents to copied instances of functions.
virtual Int_t numEntries() const
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
Calls RooPlot* plotOn(RooPlot* frame, const RooLinkedList& cmdList) const ;.
RooAbsDataStore * _dstore
External variables cached with this data set.
Abstract base class for objects that are lvalues, i.e.
virtual Int_t getBin(const char *rangeName=0) const =0
virtual void setBin(Int_t ibin, const char *rangeName=0)=0
RooAbsRealLValue is the common abstract base class for objects that represent a real value that may a...
virtual Double_t getMax(const char *name=0) const
Get maximum of currently defined range.
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...
virtual Int_t numBins(const char *rangeName=0) const
virtual Int_t getBins(const char *name=0) const
Get number of bins of currently defined range.
virtual Double_t getMin(const char *name=0) const
Get miniminum of currently defined range.
virtual Int_t getBin(const char *rangeName=0) 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...
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Double_t 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.
virtual Bool_t add(const RooAbsCollection &col, Bool_t silent=kFALSE)
Add a collection of arguments to this collection by calling add() for each element in the source coll...
virtual void addClone(const RooAbsCollection &col, Bool_t silent=kFALSE)
Add a collection of arguments to this collection by calling addOwned() for each element in the source...
Class RooBinning is an implements RooAbsBinning in terms of an array of boundary values,...
virtual void setRange(Double_t xlo, Double_t xhi)
Change the defined range associated with this binning.
virtual Int_t binNumber(Double_t x) const
Return sequential bin number that contains value x where bin zero is the first bin with an upper boun...
virtual Double_t averageBinWidth() const
virtual Double_t binLow(Int_t bin) const
Return the lower bound of the requested bin.
virtual Int_t rawBinNumber(Double_t x) const
Return sequential bin number that contains value x where bin zero is the first bin that is defined,...
void addUniform(Int_t nBins, Double_t xlo, Double_t xhi)
Add array of nbins uniformly sized bins in range [xlo,xhi].
virtual Double_t binHigh(Int_t bin) const
Return the upper bound of the requested bin.
RooCategory is an object to represent discrete states.
bool defineType(const std::string &label)
Define a state with given name.
virtual Bool_t setLabel(const char *label, bool printError=true) override
Set value by specifying the name of the desired state.
RooCmdArg is a named container for two doubles, two integers two object points and three string point...
Class RooCmdConfig is a configurable parser for RooCmdArg named arguments.
The RooDataHist is a container class to hold N-dimensional binned data.
std::vector< Double_t > * _pbinv
Double_t sum(Bool_t correctForBinSize, Bool_t inverseCorr=kFALSE) const
Return the sum of the weights of all hist bins.
virtual void printArgs(std::ostream &os) const
Print argument of dataset, i.e. the observable names.
virtual void reset()
Reset all bin weights to zero.
void dump2()
Debug stuff, should go...
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...
virtual Double_t weight() const
Int_t _cache_sum_valid
list of bin bounds per dimension
void SetNameTitle(const char *name, const char *title)
Change the title of this RooDataHist.
Double_t _curWeight
Valid bins with current range definition.
friend class RooDataHistSliceIter
void set(Double_t weight, Double_t wgtErr=-1)
Set the weight and weight error of the bin enclosing the current (i.e.
virtual Double_t sumEntries() const
Double_t weightSquared() const
RooCacheManager< std::vector< Double_t > > _pbinvCacheMgr
Partial bin volume array.
void checkBinBounds() const
virtual void weightError(Double_t &lo, Double_t &hi, ErrorType etype=Poisson) const
Return the error on current weight.
virtual Int_t numEntries() const
Return the number of bins.
Double_t get_wgt(const Int_t &idx) const
virtual RooAbsData * cacheClone(const RooAbsArg *newCacheOwner, const RooArgSet *newCacheVars, const char *newName=0)
Construct a clone of this dataset that contains only the cached variables.
virtual void add(const RooArgSet &row, Double_t wgt=1.0)
std::vector< const RooAbsBinning * > _lvbins
List of observables casted as RooAbsLValue.
RooDataHist()
Default constructor.
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.
virtual void printValue(std::ostream &os) const
Print value of the dataset, i.e. the sum of weights contained in the dataset.
virtual Bool_t isNonPoissonWeighted() const
Returns true if datasets contains entries with a non-integer weight.
Int_t getIndex(const RooArgSet &coord, Bool_t fast=kFALSE)
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...
void _adjustBinning(RooRealVar &theirVar, const TAxis &axis, RooRealVar *ourVar, Int_t *offset)
Cache for sum of entries ;.
std::vector< std::vector< Double_t > > _binbounds
List of used binnings associated with lvalues.
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.
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 const RooArgSet * get() const
Int_t calcTreeIndex() const
Calculate the index for the weights array corresponding to to the bin enclosing the current coordinat...
virtual void printMultiline(std::ostream &os, Int_t content, Bool_t verbose=kFALSE, TString indent="") const
Print the details on the dataset contents.
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)
Implementation of RooAbsData virtual method that drives the RooAbsData::reduce() methods.
void setAllWeights(Double_t value)
Set all the event weight of all bins to the specified value.
virtual ~RooDataHist()
Destructor.
virtual RooPlot * plotOn(RooPlot *frame, PlotOpt o) const
Back end function to plotting functionality.
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.
std::vector< RooAbsLValue * > _lvvars
Cache manager for arrays of partial bin volumes.
virtual Bool_t valid() const
Return true if currently loaded coordinate is considered valid within the current range definitions o...
void cacheValidEntries()
Cache the datahist entries with bin centers that are inside/outside the current observable definitio.
std::vector< Int_t > _idxMult
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 ...
void SetName(const char *name)
Change the name of the RooDataHist.
Double_t _cache_sum
Is cache sum valid.
Double_t binVolume() const
void calculatePartialBinVolume(const RooArgSet &dimSet) const
Fill the transient cache with partial bin volumes with up-to-date values for the partial volume speci...
RooDirItem is a utility base class for RooFit objects that are to be attached to ROOT directories.
void appendToDir(TObject *obj, Bool_t forceMemoryResident=kFALSE)
Append object to directory.
void removeFromDir(TObject *obj)
Remove object from directory it was added to.
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.
static const RooHistError & instance()
Return a reference to a singleton object that is created the first time this method is called.
RooLinkedList is an collection class for internal use, storing a collection of RooAbsArg pointers in ...
TIterator * MakeIterator(Bool_t forward=kTRUE) const
Create a TIterator for this list.
static Double_t interpolate(Double_t yArr[], Int_t nOrder, Double_t x)
A RooPlot is a 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,...
RooRealVar represents a variable that can be changed from the outside.
void setRange(const char *name, Double_t min, Double_t max)
Set a fit or plotting range.
const RooAbsBinning & getBinning(const char *name=0, Bool_t verbose=kTRUE, Bool_t createOnTheFly=kFALSE) const
Return binning definition with name.
void setBinning(const RooAbsBinning &binning, const char *name=0)
Add given binning under name 'name' with this variable.
RooTreeDataStore is a TTree-backed data storage.
RooVectorDataStore is the abstract base class for data collection that use a TTree as internal storag...
const Double_t * GetArray() const
Class to manage histogram axis.
const TArrayD * GetXbins() const
Buffer base class used for serializing objects.
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
virtual void ReadFastArray(Bool_t *b, Int_t n)=0
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
virtual TList * GetList() const
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
virtual Int_t GetDimension() const
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
Iterator abstract base class.
virtual TObject * Next()=0
virtual void Add(TObject *obj)
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual void SetName(const char *name)
Set the name of the TNamed.
virtual const char * GetTitle() const
Returns title of object.
virtual const char * GetName() const
Returns name of object.
virtual void SetNameTitle(const char *name, const char *title)
Set all the TNamed parameters (name and title).
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.
EvaluateInfo init(std::vector< RooRealProxy > parameters, std::vector< ArrayWrapper * > wrappers, std::vector< double * > arrays, size_t begin, size_t batchSize)
VecExpr< UnaryOp< Fabs< T >, VecExpr< A, T, D >, T >, T, D > fabs(const VecExpr< A, T, D > &rhs)
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.
static constexpr double pc
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Bool_t correctForBinWidth