32 #include "TDirectory.h"
104 RooAbsData(name,title,vars), _wgt(0), _binValid(0), _curWeight(0), _curVolume(1), _pbinv(0), _pbinvCacheMgr(0,10), _cache_sum_valid(0)
142 RooAbsData(name,title,vars), _wgt(0), _binValid(0), _curWeight(0), _curVolume(1), _pbinv(0), _pbinvCacheMgr(0,10), _cache_sum_valid(0)
168 map<string,TH1*> histMap,
Double_t wgt) :
170 _wgt(0), _binValid(0), _curWeight(0), _curVolume(1), _pbinv(0), _pbinvCacheMgr(0,10), _cache_sum_valid(0)
194 map<string,RooDataHist*> dhistMap,
Double_t wgt) :
196 _wgt(0), _binValid(0), _curWeight(0), _curVolume(1), _pbinv(0), _pbinvCacheMgr(0,10), _cache_sum_valid(0)
217 RooAbsData(name,title,vars), _wgt(0), _binValid(0), _curWeight(0), _curVolume(1), _pbinv(0), _pbinvCacheMgr(0,10), _cache_sum_valid(0)
226 <<
"number of dimension variables" << endl ;
274 RooAbsData(name,title,
RooArgSet(vars,(
RooAbsArg*)
RooCmdConfig::decodeObjOnTheFly(
"RooDataHist::RooDataHist",
"IndexCat",0,0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8))),
275 _wgt(0), _binValid(0), _curWeight(0), _curVolume(1), _pbinv(0), _pbinvCacheMgr(0,10), _cache_sum_valid(0)
284 pc.
defineInt(
"impDens",
"ImportHisto",0) ;
293 pc.
defineMutex(
"ImportHisto",
"ImportHistoSlice",
"ImportDataHistSlice") ;
313 const char* impSliceNames = pc.
getString(
"impSliceState",
"",
kTRUE) ;
316 const char* impSliceDNames = pc.
getString(
"impSliceDState",
"",
kTRUE) ;
323 importTH1(vars,*impHist,initWgt, impDens) ;
325 }
else if (indexCat) {
328 if (impSliceHistos.
GetSize()>0) {
331 map<string,TH1*> hmap ;
333 strlcpy(tmp,impSliceNames,1024) ;
334 char* token = strtok(tmp,
",") ;
337 hmap[token] = (
TH1*) hiter->
Next() ;
338 token = strtok(0,
",") ;
344 map<string,RooDataHist*> dmap ;
346 strlcpy(tmp,impSliceDNames,1024) ;
347 char* token = strtok(tmp,
",") ;
351 token = strtok(0,
",") ;
410 Int_t ix(0),iy(0),iz(0) ;
411 for (ix=0 ; ix < xvar->
getBins() ; ix++) {
414 for (iy=0 ; iy < yvar->
getBins() ; iy++) {
417 for (iz=0 ; iz < zvar->
getBins() ; iz++) {
450 for (map<string,TH1*>::iterator hiter = hmap.begin() ; hiter!=hmap.end() ; ++hiter) {
453 histo = hiter->second ;
456 if (!indexCat.
lookupType(hiter->first.c_str())) {
458 coutI(
InputArguments) <<
"RooDataHist::importTH1Set(" <<
GetName() <<
") defining state \"" << hiter->first <<
"\" in index category " << indexCat.
GetName() << endl ;
460 if (!icat->
lookupType(hiter->first.c_str())) {
468 <<
"number of continuous variables" << endl ;
505 Int_t ic(0),ix(0),iy(0),iz(0) ;
506 for (ic=0 ; ic < icat->
numBins(0) ; ic++) {
509 for (ix=0 ; ix < xvar->
getBins() ; ix++) {
512 for (iy=0 ; iy < yvar->
getBins() ; iy++) {
515 for (iz=0 ; iz < zvar->
getBins() ; iz++) {
545 for (map<string,RooDataHist*>::iterator diter = dmap.begin() ; diter!=dmap.end() ; ++diter) {
548 if (!indexCat.
lookupType(diter->first.c_str())) {
550 coutI(
InputArguments) <<
"RooDataHist::importDHistSet(" <<
GetName() <<
") defining state \"" << diter->first <<
"\" in index category " << indexCat.
GetName() << endl ;
552 if (!icat->
lookupType(diter->first.c_str())) {
561 for (map<string,RooDataHist*>::iterator diter = dmap.begin() ; diter!=dmap.end() ; ++diter) {
565 icat->
setLabel(diter->first.c_str()) ;
585 if (!dynamic_cast<RooRealVar*>(xvar)) {
600 Double_t xloAdj = xbins.binLow(xbins.binNumber(xlo+tolerance)) ;
601 Double_t xhiAdj = xbins.binHigh(xbins.binNumber(xhi-tolerance)) ;
602 xbins.setRange(xloAdj,xhiAdj) ;
605 if (
fabs(xloAdj-xlo)>tolerance||
fabs(xhiAdj-xhi)<tolerance) {
606 coutI(
DataHandling) <<
"RooDataHist::adjustBinning(" <<
GetName() <<
"): fit range of variable " << xvar->
GetName() <<
" expanded to nearest bin boundaries: ["
607 << xlo <<
"," << xhi <<
"] --> [" << xloAdj <<
"," << xhiAdj <<
"]" << endl ;
611 xmin = xbins.rawBinNumber(xloAdj+tolerance) ;
621 Double_t tolerance = 1e-6*xbins.averageBinWidth() ;
624 Double_t xloAdj = xbins.binLow(xbins.binNumber(xlo+tolerance)) ;
625 Double_t xhiAdj = xbins.binHigh(xbins.binNumber(xhi-tolerance)) ;
626 xbins.setRange(xloAdj,xhiAdj) ;
628 if (
fabs(xloAdj-xlo)>tolerance||
fabs(xhiAdj-xhi)<tolerance) {
629 coutI(
DataHandling) <<
"RooDataHist::adjustBinning(" <<
GetName() <<
"): fit range of variable " << xvar->
GetName() <<
" expanded to nearest bin boundaries: ["
630 << xlo <<
"," << xhi <<
"] --> [" << xloAdj <<
"," << xhiAdj <<
"]" << endl ;
636 xmin = xbins.rawBinNumber(xloAdj+tolerance) ;
651 if (!dynamic_cast<RooRealVar*>(yvar)) {
663 Double_t yloAdj = ybins.binLow(ybins.binNumber(ylo+tolerance)) ;
664 Double_t yhiAdj = ybins.binHigh(ybins.binNumber(yhi-tolerance)) ;
665 ybins.setRange(yloAdj,yhiAdj) ;
667 if (
fabs(yloAdj-ylo)>tolerance||
fabs(yhiAdj-yhi)<tolerance) {
668 coutI(
DataHandling) <<
"RooDataHist::adjustBinning(" <<
GetName() <<
"): fit range of variable " << yvar->
GetName() <<
" expanded to nearest bin boundaries: ["
669 << ylo <<
"," << yhi <<
"] --> [" << yloAdj <<
"," << yhiAdj <<
"]" << endl ;
673 ymin = ybins.rawBinNumber(yloAdj+tolerance) ;
683 Double_t tolerance = 1e-6*ybins.averageBinWidth() ;
686 Double_t yloAdj = ybins.binLow(ybins.binNumber(ylo+tolerance)) ;
687 Double_t yhiAdj = ybins.binHigh(ybins.binNumber(yhi-tolerance)) ;
688 ybins.setRange(yloAdj,yhiAdj) ;
690 if (
fabs(yloAdj-ylo)>tolerance||
fabs(yhiAdj-yhi)<tolerance) {
691 coutI(
DataHandling) <<
"RooDataHist::adjustBinning(" <<
GetName() <<
"): fit range of variable " << yvar->
GetName() <<
" expanded to nearest bin boundaries: ["
692 << ylo <<
"," << yhi <<
"] --> [" << yloAdj <<
"," << yhiAdj <<
"]" << endl ;
697 ymin = ybins.rawBinNumber(yloAdj+tolerance) ;
712 if (!dynamic_cast<RooRealVar*>(zvar)) {
724 Double_t zloAdj = zbins.binLow(zbins.binNumber(zlo+tolerance)) ;
725 Double_t zhiAdj = zbins.binHigh(zbins.binNumber(zhi-tolerance)) ;
726 zbins.setRange(zloAdj,zhiAdj) ;
728 if (
fabs(zloAdj-zlo)>tolerance||
fabs(zhiAdj-zhi)<tolerance) {
729 coutI(
DataHandling) <<
"RooDataHist::adjustBinning(" <<
GetName() <<
"): fit range of variable " << zvar->
GetName() <<
" expanded to nearest bin boundaries: ["
730 << zlo <<
"," << zhi <<
"] --> [" << zloAdj <<
"," << zhiAdj <<
"]" << endl ;
734 zmin = zbins.rawBinNumber(zloAdj+tolerance) ;
744 Double_t tolerance = 1e-6*zbins.averageBinWidth() ;
747 Double_t zloAdj = zbins.binLow(zbins.binNumber(zlo+tolerance)) ;
748 Double_t zhiAdj = zbins.binHigh(zbins.binNumber(zhi-tolerance)) ;
749 zbins.setRange(zloAdj,zhiAdj) ;
751 if (
fabs(zloAdj-zlo)>tolerance||
fabs(zhiAdj-zhi)<tolerance) {
752 coutI(
DataHandling) <<
"RooDataHist::adjustBinning(" <<
GetName() <<
"): fit range of variable " << zvar->
GetName() <<
" expanded to nearest bin boundaries: ["
753 << zlo <<
"," << zhi <<
"] --> [" << zloAdj <<
"," << zhiAdj <<
"]" << endl ;
758 zmin = zbins.rawBinNumber(zloAdj+tolerance) ;
783 if (dynamic_cast<RooAbsReal*>(real))
_realVars.
add(*real);
798 _lvvars.push_back(dynamic_cast<RooAbsLValue*>(rvarg));
812 while((arg=dynamic_cast<RooAbsLValue*>(
_iterator->
Next()))) {
815 for (i=0 ; i<
n ; i++) {
852 for (ibin=0 ; ibin<
_arrSize ; ibin++) {
855 Int_t j(0), idx(0), tmp(ibin) ;
857 while((arg2=dynamic_cast<RooAbsLValue*>(
_iterator->
Next()))) {
865 _binv[ibin] = theBinVolume ;
879 for (std::vector<const RooAbsBinning*>::const_iterator it =
_lvbins.begin();
881 _binbounds.push_back(std::vector<Double_t>());
883 std::vector<Double_t>& bounds =
_binbounds.back();
884 bounds.reserve(2 * (*it)->numBins());
885 for (
Int_t i = 0; i < (*it)->numBins(); ++i) {
886 bounds.push_back((*it)->binLow(i));
887 bounds.push_back((*it)->binHigh(i));
897 RooAbsData(other,newname),
RooDirItem(), _idxMult(other._idxMult), _binValid(0), _curWeight(0), _curVolume(1), _pbinv(0), _pbinvCacheMgr(other._pbinvCacheMgr,0), _cache_sum_valid(0)
920 if (dynamic_cast<RooAbsReal*>(arg))
_realVars.
add(*arg) ;
929 _lvvars.push_back(dynamic_cast<RooAbsLValue*>(rvarg)) ;
955 _wgt(0), _binValid(0), _curWeight(0), _curVolume(1), _pbinv(0), _pbinvCacheMgr(0,10), _cache_sum_valid(0)
991 delete selCacheVars ;
1007 delete myVarSubset ;
1015 coutE(
DataHandling) <<
"RooDataHist::reduceEng(" <<
GetName() <<
") Couldn't deep-clone cut variable, abort," << endl ;
1025 TIterator* vIter =
get()->createIterator() ;
1026 for (i=nStart ; i<nevt ; i++) {
1034 if (!arg->
inRange(cutRange)) {
1042 if (!cloneVar || cloneVar->
getVal()) {
1070 vector<const RooAbsBinning*>::iterator
iter =
_lvbins.begin() ;
1105 Int_t masterIdx(0), i(0) ;
1106 vector<RooAbsLValue*>::const_iterator
iter =
_lvvars.begin() ;
1107 vector<const RooAbsBinning*>::const_iterator biter =
_lvbins.begin() ;
1110 masterIdx +=
_idxMult[i++]*(*iter)->getBin(binning) ;
1123 cout <<
"_arrSize = " << _arrSize << endl ;
1125 cout <<
"wgt[" << i <<
"] = " <<
_wgt[i] <<
"sumw2[" << i <<
"] = " <<
_sumw2[i] <<
" vol[" << i <<
"] = " <<
_binv[i] << endl ;
1149 <<
":plotOn: frame does not specify a plot variable" << endl;
1156 <<
":plotOn: dataset doesn't contain plot frame variable" << endl;
1201 if (correctForBinSize) {
1240 for (i=ybinLo ; i<=intOrder+ybinLo ; i++) {
1242 if (i>=0 && i<ybinM) {
1246 xarr[i-ybinLo] = realY->
getVal() ;
1247 }
else if (i>=ybinM) {
1249 ibin = 2*ybinM-i-1 ;
1262 cout <<
"RooDataHist interpolating data is" << endl ;
1264 for (
int q=0;
q<=intOrder ;
q++) cout << xarr[
q] <<
" " ;
1265 cout <<
" yarr = " ;
1266 for (
int q=0;
q<=intOrder ;
q++) cout << yarr[
q] <<
" " ;
1302 throw string(
Form(
"RooDataHist::weightError(%s) error type Auto not allowed here",
GetName())) ;
1306 throw string(
Form(
"RooDataHist::weightError(%s) error type Expected not allowed here",
GetName())) ;
1310 if (_curWgtErrLo>=0) {
1320 _curWgtErrLo =
weight()-ym ;
1321 _curWgtErrHi = yp-
weight() ;
1329 lo =
sqrt(_curSumW2) ;
1330 hi =
sqrt(_curSumW2) ;
1351 Int_t fbinLo = fbinC-intOrder/2 - ((xval<binning->
binCenter(fbinC))?1:0) ;
1358 for (i=fbinLo ; i<=intOrder+fbinLo ; i++) {
1360 if (i>=0 && i<fbinM) {
1365 xarr[i-fbinLo] = dim.
getVal() ;
1367 yarr[i-fbinLo] =
_wgt[idx] ;
1368 if (correctForBinSize) yarr[i-fbinLo] /=
_binv[idx] ;
1369 }
else if (i>=fbinM) {
1371 ibin = 2*fbinM-i-1 ;
1374 if (cdfBoundaries) {
1375 xarr[i-fbinLo] = dim.
getMax()+1e-10*(i-fbinM+1) ;
1376 yarr[i-fbinLo] = 1.0 ;
1380 yarr[i-fbinLo] =
_wgt[idx] ;
1381 if (correctForBinSize) yarr[i-fbinLo] /=
_binv[idx] ;
1388 if (cdfBoundaries) {
1389 xarr[i-fbinLo] = dim.
getMin()-ibin*(1e-10) ; ;
1390 yarr[i-fbinLo] = 0.0 ;
1394 yarr[i-fbinLo] =
_wgt[idx] ;
1395 if (correctForBinSize) yarr[i-fbinLo] /=
_binv[idx] ;
1426 _sumw2[idx] += (sumw2>0?sumw2:wgt*wgt) ;
1492 _sumw2[idx] = wgtErr*wgtErr ;
1507 add(dset,&cutVar,wgt) ;
1538 if (!cloneVar || cloneVar->
getVal()) {
1565 Int_t cache_code = 1 + (correctForBinSize?1:0) + ((correctForBinSize&&inverseBinCor)?1:0) ;
1574 Double_t theBinVolume = correctForBinSize ? (inverseBinCor ? 1/
_binv[i] :
_binv[i]) : 1.0 ;
1578 carry = (t -
total) - y;
1612 _vars = *sliceOnlySet ;
1614 delete sliceOnlySet ;
1626 if (sumSet.
find(*arg)) {
1631 refBin[i] = (
dynamic_cast<RooAbsLValue*
>(arg))->getBin() ;
1639 for (ibin=0 ; ibin<
_arrSize ; ibin++) {
1641 Int_t idx(0), tmp(ibin), ivar(0) ;
1650 if (mask[ivar] && idx!=refBin[ivar]) skip=
kTRUE ;
1655 Double_t theBinVolume = correctForBinSize ? (inverseBinCor ? 1/(*_pbinv)[i] : (*_pbinv)[i] ) : 1.0 ;
1659 carry = (t -
total) - y;
1691 const std::map<
const RooAbsArg*, std::pair<Double_t, Double_t> >& ranges)
1700 _vars = sliceOnlySet;
1718 refBin[i] = (
dynamic_cast<RooAbsLValue*
>(arg))->getBin();
1720 std::map<const RooAbsArg*, std::pair<Double_t, Double_t> >::const_iterator
1721 it = ranges.find(sumsetv ? sumsetv : slicesetv);
1722 if (ranges.end() != it) {
1723 rangeLo[i] = it->second.first;
1724 rangeHi[i] = it->second.second;
1735 for (
Int_t ivar = 0, tmp = ibin;
1739 if (mask[ivar] && idx!=refBin[ivar]) skip=
kTRUE;
1745 for (
Int_t ivar = 0, tmp = ibin;
1752 if (binHi < rangeLo[ivar] || binLo > rangeHi[ivar]) {
1761 if (0. == corrPartial)
continue;
1762 const Double_t corr = correctForBinSize ? (inverseBinCor ? 1. /
_binv[ibin] :
_binv[ibin] ) : 1.0;
1767 carry = (t -
total) - y;
1791 pbinv =
new vector<Double_t>(
_arrSize) ;
1804 for (ibin=0 ; ibin<
_arrSize ; ibin++) {
1807 Int_t j(0), idx(0), tmp(ibin) ;
1809 while((arg=dynamic_cast<RooAbsLValue*>(
_iterator->
Next()))) {
1817 (*pbinv)[ibin] = theBinVolume ;
1851 carry = (t -
n) - y;
1869 if (cutSpec==0 && cutRange==0) {
1876 select =
new RooFormula(
"select",cutSpec,*
get()) ;
1890 carry = (t - sumw) - y;
1895 if (select)
delete select ;
1935 _curWeight =
_wgt[masterIdx] ;
1936 _curWgtErrLo =
_errLo[masterIdx] ;
1937 _curWgtErrHi =
_errHi[masterIdx] ;
1938 _curSumW2 =
_sumw2[masterIdx] ;
1939 _curVolume =
_binv[masterIdx] ;
1940 _curIndex = masterIdx ;
1995 coutE(
InputArguments) <<
"RooDataHist::sliceIterator() variable " << sliceArg.
GetName() <<
" is not part of this RooDataHist" << endl ;
2121 os << indent <<
"Binned Dataset " <<
GetName() <<
" (" <<
GetTitle() <<
")" << endl ;
2122 os << indent <<
" Contains " <<
numEntries() <<
" bins with a total weight of " <<
sumEntries() << endl;
2125 os << indent <<
" Observables " <<
_vars << endl ;
2127 os << indent <<
" Observables: " ;
2133 os << indent <<
" Caches " <<
_cachedVars << endl ;
2143 void RooDataHist::Streamer(
TBuffer &R__b)
2166 RooAbsData::Streamer(R__b);
2167 TTree* X_tree(0) ; R__b >> X_tree;
2168 RooArgSet X_truth ; X_truth.Streamer(R__b);
2169 TString X_blindString ; X_blindString.Streamer(R__b);
2179 RooDirItem::Streamer(R__b);
static Double_t interpolate(Double_t yArr[], Int_t nOrder, Double_t x)
virtual const char * GetTitle() const
Returns title of object.
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 WriteClassBuffer(const TClass *cl, void *pointer)=0
RooAbsCollection * snapshot(Bool_t deepCopy=kTRUE) const
Take a snap shot of current collection contents: An owning collection is returned containing clones o...
static Vc_ALWAYS_INLINE int_v min(const int_v &x, const int_v &y)
virtual Double_t getBinWidth(Int_t i, const char *rangeName=0) const =0
virtual Int_t numBins(const char *rangeName=0) const
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
Bool_t defineDouble(const char *name, const char *argName, Int_t doubleNum, Double_t defValue=0.)
Define Double_t property name 'name' mapped to Double_t in slot 'doubleNum' in RooCmdArg with name ar...
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, which is interpreted as an OR of 'enum ContentsOptions' values and in the style given by 'enum StyleOption'.
RooAbsCollection * selectCommon(const RooAbsCollection &refColl) const
Create a subset of the current collection, consisting only of those elements that are contained as we...
virtual const RooAbsBinning * getBinningPtr(const char *rangeName) const
virtual Bool_t isNonPoissonWeighted() const
Returns true if datasets contains entries with a non-integer weight.
const char * getString(const char *name, const char *defaultValue="", Bool_t convEmptyToNull=kFALSE)
Return string property registered with name 'name'.
RooFIter fwdIterator() const
void printMultiline(std::ostream &os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const
Interface for detailed printing of object.
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 ~RooDataHist()
Destructor.
virtual Int_t GetDimension() const
virtual void SetName(const char *name)
Change (i.e.
virtual TList * GetList() const
Int_t getIndex(const RooArgSet &coord, Bool_t fast=kFALSE)
void set(Double_t weight, Double_t wgtErr=-1)
Increment the weight of the bin enclosing the coordinates given by 'row' by the specified amount...
Buffer base class used for serializing objects.
RooAbsData * reduceEng(const RooArgSet &varSubset, const RooFormulaVar *cutVar, const char *cutRange=0, Int_t nStart=0, Int_t nStop=2000000000, Bool_t copyCache=kTRUE)
Implementation of RooAbsData virtual method that drives the RooAbsData::reduce() methods.
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
void checkBinBounds() const
const RooAbsBinning & getBinning(const char *name=0, Bool_t verbose=kTRUE, Bool_t createOnTheFly=kFALSE) const
Return binning definition with name.
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 getMin(const char *name=0) const
Double_t _cache_sum
Is cache sum valid.
void importTH1(const RooArgList &vars, TH1 &histo, Double_t initWgt, Bool_t doDensityCorrection)
Import data from given TH1/2/3 into this RooDataHist.
virtual Int_t GetNbinsX() const
TObject * getObject(const char *name, TObject *obj=0)
Return TObject property registered with name 'name'.
TIterator * _iterator
External variables cached with this data set.
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 RooAbsBinning * clone(const char *name=0) const =0
virtual void SetNameTitle(const char *name, const char *title)
Change (i.e. set) all the TNamed parameters (name and title).
void attachDataSet(const RooAbsData &set)
Replace server nodes with names matching the dataset variable names with those data set variables...
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.
Iterator abstract base class.
virtual Double_t averageBinWidth() const
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
virtual Bool_t setLabel(const char *label, Bool_t printError=kTRUE)
Set value by specifying the name of the desired state If printError is set, a message will be printed...
virtual const RooArgSet * get() const
virtual Double_t weightSquared() const =0
void adjustBinning(const RooArgList &vars, TH1 &href, Int_t *offset=0)
Adjust binning specification on first and optionally second and third observable to binning in given ...
void dump2()
Debug stuff, should go...
Bool_t process(const RooCmdArg &arg)
Process given RooCmdArg.
void setBinning(const RooAbsBinning &binning, const char *name=0)
Add given binning under name 'name' with this variable.
std::vector< RooAbsLValue * > _lvvars
Cache manager for arrays of partial bin volumes.
void appendToDir(TObject *obj, Bool_t forceMemoryResident=kFALSE)
Append object to directory.
virtual void attachCache(const RooAbsArg *newOwner, const RooArgSet &cachedVars)
Internal method – Attach dataset copied with cache contents to copied instances of functions...
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...
std::vector< Int_t > _idxMult
T * getObj(const RooArgSet *nset, Int_t *sterileIndex=0, const TNamed *isetRangeName=0)
virtual Int_t getBins(const char *name=0) const
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...
std::map< std::string, std::string >::const_iterator iter
double pow(double, double)
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...
TIterator * createIterator(Bool_t dir=kIterForward) const
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...
if on multiple lines(like in C++).**The" * configuration fragment. * * The "import myobject continue
Parses the configuration file.
Bool_t defineString(const char *name, const char *argName, Int_t stringNum, const char *defValue="", Bool_t appendMode=kFALSE)
Define Double_t property name 'name' mapped to Double_t in slot 'stringNum' in RooCmdArg with name ar...
TIterator * MakeIterator(Bool_t dir=kTRUE) const
Return an iterator over this list.
Double_t getVal(const RooArgSet *set=0) 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
Plot dataset on specified frame.
void assignFast(const RooAbsCollection &other, Bool_t setValDirty=kTRUE)
Functional equivalent of operator=() but assumes this and other collection have same layout...
virtual void weightError(Double_t &lo, Double_t &hi, ErrorType etype=Poisson) const
Return the error on current weight.
Bool_t allInRange(const char *rangeSpec) const
Return true if all contained object report to have their value inside the specified range...
void defineDependency(const char *refArgName, const char *neededArgName)
Define that processing argument name refArgName requires processing of argument named neededArgName t...
Bool_t 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_t * _binValid
Iterator over realVars.
Double_t sum(Bool_t correctForBinSize, Bool_t inverseCorr=kFALSE) const
Return the sum of the weights of all hist bins.
virtual const RooArgSet * get() const
virtual void setBin(Int_t ibin, const char *rangeName=0)=0
void SetName(const char *name)
Change the name of the RooDataHist.
virtual void Add(TObject *arg)
VecExpr< UnaryOp< Fabs< T >, VecExpr< A, T, D >, T >, T, D > fabs(const VecExpr< A, T, D > &rhs)
void calculatePartialBinVolume(const RooArgSet &dimSet) const
Fill the transient cache with partial bin volumes with up-to-date values for the partial volume speci...
void defineMutex(const char *argName1, const char *argName2)
Define arguments named argName1 and argName2 mutually exclusive.
Int_t getInt(const char *name, Int_t defaultValue=0)
Return integer property registered with name 'name'.
virtual void add(const RooArgSet &row, Double_t wgt=1.0)
RooDataHist()
Default constructor.
RooAbsArg * find(const char *name) const
Find object with given name in list.
virtual Double_t weight() const
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual Int_t numBins(const char *rangeName) const
Returm the number of fit bins ( = number of types )
virtual Int_t numEntries() const
char * Form(const char *fmt,...)
static const RooHistError & instance()
Return a reference to a singleton object that is created the first time this method is called...
void SetNameTitle(const char *name, const char *title)
Change the title of this RooDataHist.
virtual Int_t GetNbinsZ() const
virtual const char * GetName() const
Returns name of object.
virtual Bool_t inRange(const char *) const
Int_t calcTreeIndex() const
Calculate the index for the weights array corresponding to to the bin enclosing the current coordinat...
Bool_t ok(Bool_t verbose) const
Return true of parsing was successful.
static void indent(ostringstream &buf, int indent_level)
RooAbsRealLValue * getPlotVar() const
void removeFromDir(TObject *obj)
Remove object from directory it was added to.
Double_t weightSquared() const
virtual void ReadFastArray(Bool_t *b, Int_t n)=0
const Double_t * GetArray() const
Double_t binVolume() const
static unsigned int total
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
std::vector< Double_t > * _pbinv
RooAbsArg * at(Int_t idx) const
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...
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
virtual Double_t binCenter(Int_t bin) const =0
RooAbsDataStore * _dstore
Iterator over cached variables.
Double_t getDouble(const char *name, Double_t defaultValue=0)
Return Double_t property registered with name 'name'.
virtual void printArgs(std::ostream &os) const
Print argument of dataset, i.e. the observable names.
virtual void setExternalWeightArray(Double_t *, Double_t *, Double_t *, Double_t *)
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...
virtual Int_t numEntries() const
Return the number of bins.
const RooLinkedList & getObjectList(const char *name)
Return list of objects registered with name 'name'.
void cacheValidEntries()
Cache the datahist entries with bin centers that are inside/outside the current observable definitio...
static Vc_ALWAYS_INLINE int_v max(const int_v &x, const int_v &y)
static StorageType defaultStorageType
Mother of all ROOT objects.
virtual Bool_t remove(const RooAbsArg &var, Bool_t silent=kFALSE, Bool_t matchByNameOnly=kFALSE)
Remove the specified argument from our list.
virtual Double_t getMax(const char *name=0) const
friend class RooDataHistSliceIter
virtual Int_t GetNbinsY() const
virtual Int_t getBin(const char *rangeName=0) const
virtual void Add(TObject *obj)
virtual Bool_t valid() const
Return true if currently loaded coordinate is considered valid within the current range definitions o...
virtual void printValue(std::ostream &os) const
Print value of the dataset, i.e. the sum of weights contained in the dataset.
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 void reset()
Reset all bin weights to zero.
virtual TObject * Next()=0
virtual Double_t weight() const =0
std::vector< const RooAbsBinning * > _lvbins
List of observables casted as RooAbsLValue.
virtual void checkInit() const
RooCacheManager< std::vector< Double_t > > _pbinvCacheMgr
Partial bin volume array.
Bool_t defineType(const char *label)
Define a state with given name, the lowest available positive integer is assigned as index...
virtual RooAbsArg * addClone(const RooAbsArg &var, Bool_t silent=kFALSE)
Add clone of specified element to an owning set.
A TTree object has a header with a name and a title.
float type_of_call hi(const int &, const int &)
Bool_t defineObject(const char *name, const char *argName, Int_t setNum, const TObject *obj=0, Bool_t isArray=kFALSE)
Define TObject property name 'name' mapped to object in slot 'setNum' in RooCmdArg with name argName ...
const TArrayD * GetXbins() const
Int_t setObj(const RooArgSet *nset, T *obj, const TNamed *isetRangeName=0)
RooAbsArg is the common abstract base class for objects that represent a value (of arbitrary type) an...
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
virtual void SetTitle(const char *title="")
Change (i.e. set) the title of the TNamed.
void setAllWeights(Double_t value)
Set all the event weight of all bins to the specified value.
virtual void printMultiline(std::ostream &os, Int_t content, Bool_t verbose=kFALSE, TString indent="") const
Print the details on the dataset contents.
static char * skip(char **buf, const char *delimiters)
std::vector< std::vector< Double_t > > _binbounds
List of used binnings associated with lvalues.
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Add element to non-owning set.
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
virtual RooPlot * plotOn(RooPlot *frame, PlotOpt o) const
Back end function to plotting functionality.
virtual Int_t numBins(const char *rangeName=0) const =0
Int_t _cache_sum_valid
list of bin bounds per dimension
virtual const char * getLabel() const
Return label string of current state.
Double_t _curWeight
Valid bins with current range definition.
virtual Double_t sumEntries() const
Bool_t correctForBinWidth
const RooCatType * lookupType(Int_t index, Bool_t printError=kFALSE) const
Find our type corresponding to the specified index, or return 0 for no match.