Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RooDataHist.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * File: $Id: RooDataHist.h,v 1.37 2007/05/11 09:11:30 verkerke Exp $
5 * Authors: *
6 * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7 * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8 * *
9 * Copyright (c) 2000-2005, Regents of the University of California *
10 * and Stanford University. All rights reserved. *
11 * *
12 * Redistribution and use in source and binary forms, *
13 * with or without modification, are permitted according to the terms *
14 * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15 *****************************************************************************/
16#ifndef ROO_DATA_HIST
17#define ROO_DATA_HIST
18
19#include "RooAbsData.h"
20#include "RooDirItem.h"
21#include "RooArgSet.h"
22
23#include "ROOT/RStringView.hxx"
24#include "Rtypes.h"
25
26#include <map>
27#include <vector>
28#include <string>
29#include <functional>
30#include <memory>
31#include <unordered_map>
32
33class TAxis ;
34class TObject ;
35class RooAbsArg;
36class RooCategory ;
37class RooPlot;
38class RooAbsLValue ;
39namespace RooFit {
40namespace TestStatistics {
41class RooAbsL;
42}
43}
44
45class RooDataHist : public RooAbsData, public RooDirItem {
46public:
47
48 // Constructors, factory methods etc.
49 RooDataHist() ;
50 RooDataHist(std::string_view name, std::string_view title, const RooArgSet& vars, const char* binningName=0) ;
51 RooDataHist(std::string_view name, std::string_view title, const RooArgSet& vars, const RooAbsData& data, Double_t initWgt=1.0) ;
52 RooDataHist(std::string_view name, std::string_view title, const RooArgList& vars, const TH1* hist, Double_t initWgt=1.0) ;
53 RooDataHist(std::string_view name, std::string_view title, const RooArgList& vars, RooCategory& indexCat, std::map<std::string,TH1*> histMap, Double_t initWgt=1.0) ;
54 RooDataHist(std::string_view name, std::string_view title, const RooArgList& vars, RooCategory& indexCat, std::map<std::string,RooDataHist*> dhistMap, Double_t wgt=1.0) ;
55 //RooDataHist(const char *name, const char *title, const RooArgList& vars, Double_t initWgt=1.0) ;
56 RooDataHist(std::string_view name, std::string_view title, const RooArgList& vars, const RooCmdArg& arg1, const RooCmdArg& arg2=RooCmdArg(), const RooCmdArg& arg3=RooCmdArg(),
57 const RooCmdArg& arg4=RooCmdArg(),const RooCmdArg& arg5=RooCmdArg(),const RooCmdArg& arg6=RooCmdArg(),const RooCmdArg& arg7=RooCmdArg(),const RooCmdArg& arg8=RooCmdArg()) ;
59
61
62 RooDataHist(const RooDataHist& other, const char* newname = 0) ;
63 TObject* Clone(const char* newname="") const override {
64 return new RooDataHist(*this, newname && newname[0] != '\0' ? newname : GetName());
65 }
66 ~RooDataHist() override ;
67
68 /// Return empty clone of this RooDataHist.
69 RooAbsData* emptyClone(const char* newName=0, const char* newTitle=0, const RooArgSet*vars=0, const char* /*wgtVarName*/=0) const override {
70 return new RooDataHist(newName?newName:GetName(),newTitle?newTitle:GetTitle(),vars?*vars:*get()) ;
71 }
72
73 /// Add `wgt` to the bin content enclosed by the coordinates passed in `row`.
74 virtual void add(const RooArgSet& row, Double_t wgt=1.0) { add(row,wgt,-1.); }
75 void add(const RooArgSet& row, Double_t weight, Double_t sumw2) override ;
76 void set(std::size_t binNumber, double weight, double wgtErr);
77 void set(const RooArgSet& row, Double_t weight, Double_t wgtErr=-1.) ;
78 void set(const RooArgSet& row, Double_t weight, Double_t wgtErrLo, Double_t wgtErrHi) ;
79
80 void add(const RooAbsData& dset, const RooFormulaVar* cutVar=0, Double_t weight=1.0 ) ;
81 void add(const RooAbsData& dset, const char* cut, Double_t weight=1.0 ) ;
82
83 /// Get bin centre of current bin.
84 const RooArgSet* get() const override { return &_vars; }
85 const RooArgSet* get(Int_t binNumber) const override;
86 virtual const RooArgSet* get(const RooArgSet& coord) const;
87 Int_t numEntries() const override;
88 Double_t sumEntries() const override;
89 Double_t sumEntries(const char* cutSpec, const char* cutRange=0) const override;
90
91 /// Always returns true as all histograms use event weights.
92 Bool_t isWeighted() const override { return true; }
93 Bool_t isNonPoissonWeighted() const override ;
94
95 RooSpan<const double> getWeightBatch(std::size_t first, std::size_t len, bool sumW2=false) const override;
96
97 /// Retrieve all bin volumes. Bins are indexed according to getIndex().
98 RooSpan<const double> binVolumes(std::size_t first, std::size_t len) const {
99 return {_binv + first, len};
100 }
101
102 Double_t sum(bool correctForBinSize, bool inverseCorr=false) const ;
103 Double_t sum(const RooArgSet& sumSet, const RooArgSet& sliceSet, bool correctForBinSize, bool inverseCorr=false) ;
104 Double_t sum(const RooArgSet& sumSet,
105 const RooArgSet& sliceSet,
106 bool correctForBinSize,
107 bool inverseCorr,
108 const std::map<const RooAbsArg*, std::pair<double, double> >& ranges,
109 std::function<double(int)> getBinScale = [](int){ return 1.0; } );
110
111 /// Return weight of i-th bin. \see getIndex()
112 double weight(std::size_t i) const { return _wgt[i]; }
113 double weightFast(const RooArgSet& bin, int intOrder, bool correctForBinSize, bool cdfBoundaries);
114 Double_t weight(const RooArgSet& bin, Int_t intOrder=1, Bool_t correctForBinSize=kFALSE, Bool_t cdfBoundaries=kFALSE, Bool_t oneSafe=kFALSE);
115 /// Return squared weight sum of i-th bin. \see getIndex()
116 double weightSquared(std::size_t i) const { return get_sumw2(i); }
117 /// Return bin volume of i-th bin. \see getIndex()
118 double binVolume(std::size_t i) const { return _binv[i]; }
119 double binVolume(const RooArgSet& bin) const;
120 /// Return true if bin `i` is considered valid within the current range definitions of all observables. \see getIndex()
121 bool valid(std::size_t i) const { return i <= static_cast<std::size_t>(_arrSize) && (_maskedWeights.empty() || _maskedWeights[i] != 0.);}
122
123 TIterator* sliceIterator(RooAbsArg& sliceArg, const RooArgSet& otherArgs) ;
124
125 void weightError(double& lo, double& hi, ErrorType etype=Poisson) const override;
126 /// \copydoc RooAbsData::weightError(RooAbsData::ErrorType) const
127 double weightError(ErrorType etype=Poisson) const override {
128 // Return symmetric error on current bin calculated either from Poisson statistics or from SumOfWeights
129 Double_t lo,hi ;
130 weightError(lo,hi,etype) ;
131 return (lo+hi)/2 ;
132 }
133
134 using RooAbsData::plotOn ;
135 RooPlot *plotOn(RooPlot *frame, PlotOpt o) const override;
136
137 void reset() override;
138
139 virtual void printMultiline(std::ostream& os, Int_t content, Bool_t verbose=kFALSE, TString indent="") const override;
140 virtual void printArgs(std::ostream& os) const override;
141 virtual void printValue(std::ostream& os) const override;
142 void printDataHistogram(std::ostream& os, RooRealVar* obs) const;
143
144 void SetName(const char *name) override;
145 void SetNameTitle(const char *name, const char* title) override;
146
147 Int_t getIndex(const RooAbsCollection& coord, Bool_t fast = false) const;
148 /// \copydoc getIndex(const RooAbsCollection&,Bool_t) const
149 ///
150 /// \note This overload only exists because there is an implicit conversion from RooAbsArg
151 /// to RooArgSet, and this needs to remain supported. This enables code like
152 /// ```
153 /// RooRealVar x(...);
154 /// dataHist.getIndex(x);
155 /// ```
156 /// It is, however, recommended to use
157 /// ```
158 /// dataHist.getIndex(RooArgSet(x));
159 /// ```
160 /// in this case.
161 Int_t getIndex(const RooArgSet& coord, Bool_t fast = false) const {
162 return getIndex(static_cast<const RooAbsCollection&>(coord), fast);
163 }
164
166
167 // A shortcut function only for RooAbsOptTestStatistic.
168 void cacheValidEntries();
169
170
171 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
172 /// @name Deprecated functions
173 /// These functions rely on the fact that an event has been loaded before they are called. It is advised
174 /// to switch to their counterparts that take bin numbers as arguments. In this way, code like,
175 /// ```
176 /// const RooArgSet* coordinates = dataHist.get(i); // Need this to achieve side effect on next call of weight() - bad.
177 /// const double weight = dataHist.weight();
178 /// processEvent(coordinates, weight);
179 /// ```
180 /// becomes
181 /// ```
182 /// processEvent(dataHist.get(i), dataHist.weight(i));
183 /// ```
184 /// The index of a set of coordinates can be computed using getIndex().
185 /// @{
186
187 /// Return weight of last bin that was requested with get().
188 /// \deprecated Use the safer weight(std::size_t) const.
189 Double_t weight() const override
190 R__SUGGEST_ALTERNATIVE("Use the safer weight(std::size_t) const.")
191 { return get_curWeight(); }
192 /// Return squared weight of last bin that was requested with get().
193 /// \deprecated Use the safer weightSquared(std::size_t) const.
194 Double_t weightSquared() const override
195 R__SUGGEST_ALTERNATIVE("Use the safer weightSquared(std::size_t) const.")
196 { return get_curSumW2(); }
197 /// Return volume of current bin. \deprecated Use binVolume(std::size_t) const.
199 R__SUGGEST_ALTERNATIVE("Use binVolume(std::size_t) const.")
200 { return _binv[_curIndex]; }
201 /// Write `weight` into current bin. \deprecated Use set(std::size_t,double,double)
202 void set(Double_t weight, Double_t wgtErr=-1)
203 R__SUGGEST_ALTERNATIVE("Use set(std::size_t,double,double).");
204
205 /// Return true if currently loaded coordinate is considered valid within
206 /// the current range definitions of all observables.
207 /// \deprecated Use the safer valid(std::size_t) const.
208 bool valid() const override
209 R__SUGGEST_ALTERNATIVE("Use valid(std::size_t).")
210 { return _curIndex <= static_cast<std::size_t>(_arrSize) && (_maskedWeights.empty() || _maskedWeights[_curIndex] != 0.);}
211
212 void dump2();
213
214 ///@}
215 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
216
217 /// Structure to cache information on the histogram variable that is
218 /// frequently used for histogram weights retrieval.
219 struct VarInfo {
220 size_t nRealVars = 0;
221 size_t realVarIdx1 = 0;
222 size_t realVarIdx2 = 0;
223 bool initialized = false;
224 };
225
226 std::vector<std::unique_ptr<const RooAbsBinning>> const& getBinnings() const { return _lvbins; }
227
228 double const* weightArray() const { return _wgt; }
229 double const* wgtErrLoArray() const { return _errLo; }
230 double const* wgtErrHiArray() const { return _errHi; }
231 double const* sumW2Array() const { return _sumw2; }
232
233protected:
234
235 friend class RooAbsCachedPdf ;
236 friend class RooAbsCachedReal ;
237 friend class RooDataHistSliceIter ;
238 // for access into copied dataset:
240
241 std::size_t calcTreeIndex(const RooAbsCollection& coords, bool fast) const;
242 /// Legacy overload to calculate the tree index from the current value of `_vars`.
243 /// \deprecated Use calcTreeIndex(const RooArgSet&,bool) const.
244 Int_t calcTreeIndex() const { return static_cast<Int_t>(calcTreeIndex(_vars, true)); }
245
246 void setAllWeights(Double_t value) ;
247
248 void initialize(const char* binningName=0,Bool_t fillTree=kTRUE) ;
249 RooDataHist(std::string_view name, std::string_view title, RooDataHist* h, const RooArgSet& varSubset,
250 const RooFormulaVar* cutVar, const char* cutRange, Int_t nStart, Int_t nStop, Bool_t copyCache) ;
251 RooAbsData* reduceEng(const RooArgSet& varSubset, const RooFormulaVar* cutVar, const char* cutRange=0,
252 std::size_t nStart=0, std::size_t nStop=std::numeric_limits<std::size_t>::max(), Bool_t copyCache=kTRUE) override;
253 double interpolateDim(int iDim, double xval, size_t centralIdx, int intOrder, bool correctForBinSize, bool cdfBoundaries) ;
254 const std::vector<double>& calculatePartialBinVolume(const RooArgSet& dimSet) const ;
255 void checkBinBounds() const;
256
257 void adjustBinning(const RooArgList& vars, const TH1& href, Int_t* offset=0) ;
258 void importTH1(const RooArgList& vars, const TH1& histo, Double_t initWgt, Bool_t doDensityCorrection) ;
259 void importTH1Set(const RooArgList& vars, RooCategory& indexCat, std::map<std::string,TH1*> hmap, Double_t initWgt, Bool_t doDensityCorrection) ;
260 void importDHistSet(const RooArgList& vars, RooCategory& indexCat, std::map<std::string,RooDataHist*> dmap, Double_t initWgt) ;
261
262 RooAbsData* cacheClone(const RooAbsArg* newCacheOwner, const RooArgSet* newCacheVars, const char* newName=0) override ;
263
264 Double_t get_wgt(std::size_t idx) const { return _wgt[idx]; }
265 Double_t get_errLo(std::size_t idx) const { return _errLo ? _errLo[idx] : -1.; }
266 Double_t get_errHi(std::size_t idx) const { return _errHi ? _errHi[idx] : -1.; }
267 // If sumw2 is not being tracked, assume that all previous fill operations had a weight of 1, i.e., return the bare weight of the bin.
268 Double_t get_sumw2(std::size_t idx) const { return _sumw2 ? _sumw2[idx] : _wgt[idx]; }
269
274
275 Int_t get_curIndex() const { return _curIndex; }
276
277 Int_t _arrSize{0}; // Size of member arrays.
278 std::vector<Int_t> _idxMult ; // Multiplier jump table for index calculation
279
280 double* _wgt {nullptr}; //[_arrSize] Weight array
281 mutable double* _errLo{nullptr}; //[_arrSize] Low-side error on weight array
282 mutable double* _errHi{nullptr}; //[_arrSize] High-side error on weight array
283 mutable double* _sumw2{nullptr}; //[_arrSize] Sum of weights^2
284 double* _binv {nullptr}; //[_arrSize] Bin volume array
285
286 mutable std::vector<double> _maskedWeights; //! Copy of _wgt, but masked events have a weight of zero.
287 mutable std::vector<double> _maskedSumw2; //! Copy of _sumW2, but masked events have a weight of zero.
288
289 mutable ULong64_t _curIndex{std::numeric_limits<ULong64_t>::max()}; // Current index
290
291 mutable std::unordered_map<int,std::vector<double>> _pbinvCache ; //! Cache for arrays of partial bin volumes
292 std::vector<RooAbsLValue*> _lvvars ; //! List of observables casted as RooAbsLValue
293 std::vector<std::unique_ptr<const RooAbsBinning>> _lvbins ; //! List of used binnings associated with lvalues
294 mutable std::vector<std::vector<Double_t> > _binbounds; //! list of bin bounds per dimension
295
297 mutable Int_t _cache_sum_valid{kInvalid}; //! Is cache sum valid? Needs to be Int_t instead of CacheSumState_t for subclasses.
298 mutable Double_t _cache_sum{0.}; //! Cache for sum of entries ;
299
300private:
301 double weightInterpolated(const RooArgSet& bin, int intOrder, bool correctForBinSize, bool cdfBoundaries);
302
303 void _adjustBinning(RooRealVar &theirVar, const TAxis &axis, RooRealVar *ourVar, Int_t *offset);
305
307 VarInfo const& getVarInfo();
308
309 ClassDefOverride(RooDataHist, 8) // Binned data set
310};
311
312#endif
313
#define R__SUGGEST_ALTERNATIVE(ALTERNATIVE)
Definition RConfig.hxx:524
#define h(i)
Definition RSha256.hxx:106
#define WRITE_TSTRING_COMPATIBLE_CONSTRUCTOR(Class_t)
Definition RooAbsData.h:69
const Bool_t kFALSE
Definition RtypesCore.h:101
double Double_t
Definition RtypesCore.h:59
unsigned long long ULong64_t
Definition RtypesCore.h:81
const Bool_t kTRUE
Definition RtypesCore.h:100
#define ClassDefOverride(name, id)
Definition Rtypes.h:329
static void indent(ostringstream &buf, int indent_level)
char name[80]
Definition TGX11.cxx:110
#define hi
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
Definition RooAbsArg.h:69
RooAbsCachedPdf is the abstract base class for p.d.f.s that need or want to cache their evaluate() ou...
RooAbsCachedReal is the abstract base class for functions that need or want to cache their evaluate()...
RooAbsCollection is an abstract container object that can hold multiple RooAbsArg objects.
RooAbsData is the common abstract base class for binned and unbinned datasets.
Definition RooAbsData.h:82
RooArgSet _vars
Definition RooAbsData.h:372
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
Abstract base class for objects that are lvalues, i.e.
RooArgList is a container object that can hold multiple RooAbsArg objects.
Definition RooArgList.h:22
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:35
RooCategory is an object to represent discrete states.
Definition RooCategory.h:27
RooCmdArg is a named container for two doubles, two integers two object points and three string point...
Definition RooCmdArg.h:27
RooDataHistSliceIter iterates over all bins in a RooDataHist that occur in a slice defined by the bin...
The RooDataHist is a container class to hold N-dimensional binned data.
Definition RooDataHist.h:45
void dump2()
Debug stuff, should go...
Int_t getIndex(const RooAbsCollection &coord, Bool_t fast=false) const
Calculate bin number of the given coordinates.
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...
Int_t _cache_sum_valid
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...
std::vector< std::unique_ptr< const RooAbsBinning > > const & getBinnings() const
void printDataHistogram(std::ostream &os, RooRealVar *obs) const
void SetNameTitle(const char *name, const char *title) override
Change the title of this RooDataHist.
TObject * Clone(const char *newname="") const override
Make a clone of an object using the Streamer facility.
Definition RooDataHist.h:63
double const * sumW2Array() const
double const * weightArray() const
std::vector< double > _maskedWeights
VarInfo _varInfo
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.
Double_t get_curWeight() const
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...
Double_t weight() const override
Return weight of last bin that was requested with get().
double weightInterpolated(const RooArgSet &bin, int intOrder, bool correctForBinSize, bool cdfBoundaries)
Cache for sum of entries ;.
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.
RooSpan< 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).
std::unordered_map< int, std::vector< double > > _pbinvCache
void checkBinBounds() const
double weight(std::size_t i) const
Return weight of i-th bin.
void set(std::size_t binNumber, double weight, double wgtErr)
Set bin content of bin that was last loaded with get(std::size_t).
RooAbsData * emptyClone(const char *newName=0, const char *newTitle=0, const RooArgSet *vars=0, const char *=0) const override
Return empty clone of this RooDataHist.
Definition RooDataHist.h:69
Double_t sumEntries() const override
Sum the weights of all bins.
Double_t weightSquared() const override
Return squared weight of last bin that was requested with get().
RooSpan< const double > binVolumes(std::size_t first, std::size_t len) const
Retrieve all bin volumes. Bins are indexed according to getIndex().
Definition RooDataHist.h:98
virtual void add(const RooArgSet &row, Double_t wgt=1.0)
Add wgt to the bin content enclosed by the coordinates passed in row.
Definition RooDataHist.h:74
void weightError(double &lo, double &hi, ErrorType etype=Poisson) const override
Return the asymmetric errors on the current weight.
double * _errHi
double * _binv
RooDataHist()
Default constructor.
Double_t get_curWgtErrLo() const
void removeSelfFromDir()
double weightSquared(std::size_t i) const
Return squared weight sum of i-th bin.
virtual void printMultiline(std::ostream &os, Int_t content, Bool_t verbose=kFALSE, TString indent="") const override
Print the details on the dataset contents.
double const * wgtErrHiArray() const
ULong64_t _curIndex
Copy of _sumW2, but masked events have a weight of zero.
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.
Int_t getIndex(const RooArgSet &coord, Bool_t fast=false) const
Calculate bin number of the given coordinates.
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_t get_curSumW2() const
Double_t get_errHi(std::size_t idx) const
Bool_t isNonPoissonWeighted() const override
Returns true if dataset contains entries with a non-integer weight.
virtual void printArgs(std::ostream &os) const override
Print argument of dataset, i.e. the observable names.
bool valid(std::size_t i) const
Return true if bin i is considered valid within the current range definitions of all observables.
void _adjustBinning(RooRealVar &theirVar, const TAxis &axis, RooRealVar *ourVar, Int_t *offset)
Helper doing the actual work of adjustBinning().
std::vector< std::vector< Double_t > > _binbounds
List of used binnings associated with lvalues.
double * _sumw2
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.
Bool_t isWeighted() const override
Always returns true as all histograms use event weights.
Definition RooDataHist.h:92
Int_t calcTreeIndex() const
Legacy overload to calculate the tree index from the current value of _vars.
Double_t get_curWgtErrHi() const
~RooDataHist() override
Destructor.
void setAllWeights(Double_t value)
Set all the event weight of all bins to the specified value.
RooDataHist & operator=(const RooDataHist &)=delete
Double_t get_wgt(std::size_t idx) const
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.
double binVolume(std::size_t i) const
Return bin volume of i-th bin.
std::vector< RooAbsLValue * > _lvvars
Cache for arrays of partial bin volumes.
double weightError(ErrorType etype=Poisson) const override
Return the symmetric error on the current weight.
double const * wgtErrLoArray() const
Int_t numEntries() const override
Return the number of bins.
void cacheValidEntries()
Compute which bins of the dataset are part of the currently set fit range.
void SetName(const char *name) override
Change the name of the RooDataHist.
std::vector< std::unique_ptr< const RooAbsBinning > > _lvbins
List of observables casted as RooAbsLValue.
Int_t get_curIndex() const
bool valid() const override
Return true if currently loaded coordinate is considered valid within the current range definitions o...
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_t get_errLo(std::size_t idx) const
double * _errLo
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 ...
double * _wgt
std::vector< double > _maskedSumw2
Copy of _wgt, but masked events have a weight of zero.
CacheSumState_t
list of bin bounds per dimension
virtual void printValue(std::ostream &os) const override
Print value of the dataset, i.e. the sum of weights contained in the dataset.
Double_t _cache_sum
Is cache sum valid? Needs to be Int_t instead of CacheSumState_t for subclasses.
VarInfo const & getVarInfo()
Return reference to VarInfo struct with cached histogram variable information that is frequently used...
Double_t binVolume() const
Return volume of current bin.
const RooArgSet * get() const override
Get bin centre of current bin.
Definition RooDataHist.h:84
Double_t get_sumw2(std::size_t idx) const
Double_t sum(bool correctForBinSize, bool inverseCorr=false) const
Return the sum of the weights of all bins in the histogram.
RooDirItem is a utility base class for RooFit objects that are to be attached to ROOT directories.
Definition RooDirItem.h:22
void removeFromDir(TObject *obj)
Remove object from directory it was added to.
A RooFormulaVar is a generic implementation of a real-valued object, which takes a RooArgList of serv...
A RooPlot is a plot frame and a container for graphics objects within that frame.
Definition RooPlot.h:44
RooRealVar represents a variable that can be changed from the outside.
Definition RooRealVar.h:39
A simple container to hold a batch of data values.
Definition RooSpan.h:34
Class to manage histogram axis.
Definition TAxis.h:30
TH1 is the base class of all histogram classes in ROOT.
Definition TH1.h:58
Iterator abstract base class.
Definition TIterator.h:30
virtual const char * GetTitle() const
Returns title of object.
Definition TNamed.h:48
virtual const char * GetName() const
Returns name of object.
Definition TNamed.h:47
Mother of all ROOT objects.
Definition TObject.h:41
Basic string class.
Definition TString.h:136
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
Definition Common.h:18
Definition first.py:1
Structure to cache information on the histogram variable that is frequently used for histogram weight...