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 RooAbsArg;
35class RooCategory ;
36class RooPlot;
37class RooAbsLValue ;
38
39class RooDataHist : public RooAbsData, public RooDirItem {
40public:
41
42 // Constructors, factory methods etc.
43 RooDataHist() ;
44 RooDataHist(RooStringView name, RooStringView title, const RooArgSet& vars, const char* binningName=nullptr) ;
45 RooDataHist(RooStringView name, RooStringView title, const RooArgSet& vars, const RooAbsData& data, double initWgt=1.0) ;
46 RooDataHist(RooStringView name, RooStringView title, const RooArgList& vars, const TH1* hist, double initWgt=1.0) ;
47 RooDataHist(RooStringView name, RooStringView title, const RooArgList& vars, RooCategory& indexCat, std::map<std::string,TH1*> histMap, double initWgt=1.0) ;
48 RooDataHist(RooStringView name, RooStringView title, const RooArgList& vars, RooCategory& indexCat, std::map<std::string,RooDataHist*> dhistMap, double wgt=1.0) ;
49 //RooDataHist(const char *name, const char *title, const RooArgList& vars, double initWgt=1.0) ;
50 RooDataHist(RooStringView name, RooStringView title, const RooArgList& vars, const RooCmdArg& arg1, const RooCmdArg& arg2=RooCmdArg(), const RooCmdArg& arg3=RooCmdArg(),
51 const RooCmdArg& arg4=RooCmdArg(),const RooCmdArg& arg5=RooCmdArg(),const RooCmdArg& arg6=RooCmdArg(),const RooCmdArg& arg7=RooCmdArg(),const RooCmdArg& arg8=RooCmdArg()) ;
53
54 RooDataHist(const RooDataHist& other, const char* newname = nullptr) ;
55 TObject* Clone(const char* newname="") const override {
56 return new RooDataHist(*this, newname && newname[0] != '\0' ? newname : GetName());
57 }
58 ~RooDataHist() override ;
59
60 /// Return empty clone of this RooDataHist.
61 RooAbsData* emptyClone(const char* newName=nullptr, const char* newTitle=nullptr, const RooArgSet*vars=nullptr, const char* /*wgtVarName*/=nullptr) const override {
62 return new RooDataHist(newName?newName:GetName(),newTitle?newTitle:GetTitle(),vars?*vars:*get()) ;
63 }
64
65 /// Add `wgt` to the bin content enclosed by the coordinates passed in `row`.
66 virtual void add(const RooArgSet& row, double wgt=1.0) { add(row,wgt,-1.); }
67 void add(const RooArgSet& row, double weight, double sumw2) override ;
68 void set(std::size_t binNumber, double weight, double wgtErr);
69 void set(const RooArgSet& row, double weight, double wgtErr=-1.) ;
70 void set(const RooArgSet& row, double weight, double wgtErrLo, double wgtErrHi) ;
71
72 void add(const RooAbsData& dset, const RooFormulaVar* cutVar=nullptr, double weight=1.0 ) ;
73 void add(const RooAbsData& dset, const char* cut, double weight=1.0 ) ;
74
75 /// Get bin centre of current bin.
76 const RooArgSet* get() const override { return &_vars; }
77 const RooArgSet* get(Int_t binNumber) const override;
78 virtual const RooArgSet* get(const RooArgSet& coord) const;
79 double sumEntries() const override;
80 double sumEntries(const char* cutSpec, const char* cutRange=nullptr) const override;
81
82 /// Always returns true as all histograms use event weights.
83 bool isWeighted() const override { return true; }
84 bool isNonPoissonWeighted() const override ;
85
86 RooSpan<const double> getWeightBatch(std::size_t first, std::size_t len, bool sumW2=false) const override;
87
88 /// Retrieve all bin volumes. Bins are indexed according to getIndex().
89 RooSpan<const double> binVolumes(std::size_t first, std::size_t len) const {
90 return {_binv + first, len};
91 }
92
93 double sum(bool correctForBinSize, bool inverseCorr=false) const ;
94 double sum(const RooArgSet& sumSet, const RooArgSet& sliceSet, bool correctForBinSize, bool inverseCorr=false) ;
95 double sum(const RooArgSet& sumSet,
96 const RooArgSet& sliceSet,
97 bool correctForBinSize,
98 bool inverseCorr,
99 const std::map<const RooAbsArg*, std::pair<double, double> >& ranges,
100 std::function<double(int)> getBinScale = [](int){ return 1.0; } );
101
102 void weights(double* output, RooSpan<double const> xVals, int intOrder, bool correctForBinSize, bool cdfBoundaries);
103 /// Return weight of i-th bin. \see getIndex()
104 double weight(std::size_t i) const { return _wgt[i]; }
105 double weightFast(const RooArgSet& bin, int intOrder, bool correctForBinSize, bool cdfBoundaries);
106 double weight(const RooArgSet& bin, Int_t intOrder=1, bool correctForBinSize=false, bool cdfBoundaries=false, bool oneSafe=false);
107 /// Return squared weight sum of i-th bin. \see getIndex(). If sumw2 is not
108 /// being tracked, assume that all previous fill operations had a
109 /// weight of 1, i.e., return the bare weight of the bin.
110 double weightSquared(std::size_t i) const { return _sumw2 ? _sumw2[i] : _wgt[i]; }
111 /// Return bin volume of i-th bin. \see getIndex()
112 double binVolume(std::size_t i) const { return _binv[i]; }
113 double binVolume(const RooArgSet& bin) const;
114
115 TIterator* sliceIterator(RooAbsArg& sliceArg, const RooArgSet& otherArgs) ;
116
117 void weightError(double& lo, double& hi, ErrorType etype=Poisson) const override;
118 /// \copydoc RooAbsData::weightError(RooAbsData::ErrorType) const
119 double weightError(ErrorType etype=Poisson) const override {
120 // Return symmetric error on current bin calculated either from Poisson statistics or from SumOfWeights
121 double lo,hi ;
122 weightError(lo,hi,etype) ;
123 return (lo+hi)/2 ;
124 }
125
126 using RooAbsData::plotOn ;
127 RooPlot *plotOn(RooPlot *frame, PlotOpt o) const override;
128
129 void reset() override;
130
131 void printMultiline(std::ostream& os, Int_t content, bool verbose=false, TString indent="") const override;
132 void printArgs(std::ostream& os) const override;
133 void printValue(std::ostream& os) const override;
134 void printDataHistogram(std::ostream& os, RooRealVar* obs) const;
135
136 void SetName(const char *name) override;
137 void SetNameTitle(const char *name, const char* title) override;
138
139 Int_t getIndex(const RooAbsCollection& coord, bool fast = false) const;
140 /// \copydoc getIndex(const RooAbsCollection&,bool) const
141 ///
142 /// \note This overload only exists because there is an implicit conversion from RooAbsArg
143 /// to RooArgSet, and this needs to remain supported. This enables code like
144 /// ```
145 /// RooRealVar x(...);
146 /// dataHist.getIndex(x);
147 /// ```
148 /// It is, however, recommended to use
149 /// ```
150 /// dataHist.getIndex(RooArgSet(x));
151 /// ```
152 /// in this case.
153 Int_t getIndex(const RooArgSet& coord, bool fast = false) const {
154 return getIndex(static_cast<const RooAbsCollection&>(coord), fast);
155 }
156
158
159
160 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
161 /// @name Deprecated functions
162 /// These functions rely on the fact that an event has been loaded before they are called. It is advised
163 /// to switch to their counterparts that take bin numbers as arguments. In this way, code like,
164 /// ```
165 /// const RooArgSet* coordinates = dataHist.get(i); // Need this to achieve side effect on next call of weight() - bad.
166 /// const double weight = dataHist.weight();
167 /// processEvent(coordinates, weight);
168 /// ```
169 /// becomes
170 /// ```
171 /// processEvent(dataHist.get(i), dataHist.weight(i));
172 /// ```
173 /// The index of a set of coordinates can be computed using getIndex().
174 /// @{
175
176 /// Return weight of last bin that was requested with get().
177 /// \deprecated Use the safer weight(std::size_t) const.
178 double weight() const override
179 R__SUGGEST_ALTERNATIVE("Use the safer weight(std::size_t) const.")
180 { return _wgt[_curIndex]; }
181 /// Return squared weight of last bin that was requested with get().
182 /// \deprecated Use the safer weightSquared(std::size_t) const.
183 double weightSquared() const override
184 R__SUGGEST_ALTERNATIVE("Use the safer weightSquared(std::size_t) const.")
185 { return weightSquared(_curIndex); }
186 /// Return volume of current bin. \deprecated Use binVolume(std::size_t) const.
187 double binVolume() const
188 R__SUGGEST_ALTERNATIVE("Use binVolume(std::size_t) const.")
189 { return _binv[_curIndex]; }
190 /// Write `weight` into current bin. \deprecated Use set(std::size_t,double,double)
191 void set(double wgt, double wgtErr=-1)
192 R__SUGGEST_ALTERNATIVE("Use set(std::size_t,double,double).");
193
194 ///@}
195 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
196
197 /// Structure to cache information on the histogram variable that is
198 /// frequently used for histogram weights retrieval.
199 struct VarInfo {
200 size_t nRealVars = 0;
201 size_t realVarIdx1 = 0;
202 size_t realVarIdx2 = 0;
203 bool initialized = false;
204 };
205
206 std::vector<std::unique_ptr<const RooAbsBinning>> const& getBinnings() const { return _lvbins; }
207
208 double const* weightArray() const { return _wgt; }
209 double const* wgtErrLoArray() const { return _errLo; }
210 double const* wgtErrHiArray() const { return _errHi; }
211 double const* sumW2Array() const { return _sumw2; }
212
213protected:
214
215 friend class RooDataHistSliceIter ;
216
217 std::size_t calcTreeIndex(const RooAbsCollection& coords, bool fast) const;
218 /// Legacy overload to calculate the tree index from the current value of `_vars`.
219 /// \deprecated Use calcTreeIndex(const RooArgSet&,bool) const.
220 Int_t calcTreeIndex() const { return static_cast<Int_t>(calcTreeIndex(_vars, true)); }
221
222 void initialize(const char* binningName=nullptr,bool fillTree=true) ;
223 RooAbsData* reduceEng(const RooArgSet& varSubset, const RooFormulaVar* cutVar, const char* cutRange=nullptr,
224 std::size_t nStart=0, std::size_t nStop=std::numeric_limits<std::size_t>::max()) override;
225 double interpolateDim(int iDim, double xval, size_t centralIdx, int intOrder, bool correctForBinSize, bool cdfBoundaries) ;
226 const std::vector<double>& calculatePartialBinVolume(const RooArgSet& dimSet) const ;
227 void checkBinBounds() const;
228
229 void adjustBinning(const RooArgList& vars, const TH1& href, Int_t* offset=nullptr) ;
230 void importTH1(const RooArgList& vars, const TH1& histo, double initWgt, bool doDensityCorrection) ;
231 void importTH1Set(const RooArgList& vars, RooCategory& indexCat, std::map<std::string,TH1*> hmap, double initWgt, bool doDensityCorrection) ;
232 void importDHistSet(const RooArgList& vars, RooCategory& indexCat, std::map<std::string,RooDataHist*> dmap, double initWgt) ;
233
234 Int_t _arrSize{0}; // Size of member arrays.
235 std::vector<Int_t> _idxMult ; // Multiplier jump table for index calculation
236
237 double* _wgt {nullptr}; ///<[_arrSize] Weight array
238 mutable double* _errLo{nullptr}; ///<[_arrSize] Low-side error on weight array
239 mutable double* _errHi{nullptr}; ///<[_arrSize] High-side error on weight array
240 mutable double* _sumw2{nullptr}; ///<[_arrSize] Sum of weights^2
241 double* _binv {nullptr}; ///<[_arrSize] Bin volume array
242
243 mutable ULong64_t _curIndex{std::numeric_limits<ULong64_t>::max()}; ///< Current index
244
245 mutable std::unordered_map<int,std::vector<double>> _pbinvCache ; ///<! Cache for arrays of partial bin volumes
246 std::vector<RooAbsLValue*> _lvvars ; ///<! List of observables casted as RooAbsLValue
247 std::vector<std::unique_ptr<const RooAbsBinning>> _lvbins ; ///<! List of used binnings associated with lvalues
248 mutable std::vector<std::vector<double> > _binbounds; ///<! list of bin bounds per dimension
249
251 mutable Int_t _cache_sum_valid{kInvalid}; ///<! Is cache sum valid? Needs to be Int_t instead of CacheSumState_t for subclasses.
252 mutable double _cache_sum{0.}; ///<! Cache for sum of entries ;
253
254private:
255 void interpolateQuadratic(double* output, RooSpan<const double> xVals, bool correctForBinSize, bool cdfBoundaries);
256 void interpolateLinear(double* output, RooSpan<const double> xVals, bool correctForBinSize, bool cdfBoundaries);
257 double weightInterpolated(const RooArgSet& bin, int intOrder, bool correctForBinSize, bool cdfBoundaries);
258
259 void _adjustBinning(RooRealVar &theirVar, const TAxis &axis, RooRealVar *ourVar, Int_t *offset);
261 void initializeAsymErrArrays() const;
262 VarInfo const& getVarInfo();
263
264 static std::unique_ptr<RooAbsDataStore> makeDefaultDataStore(const char* name, const char* title, RooArgSet const& vars);
265
267 std::vector<double> _interpolationBuffer; ///<! Buffer to contain values used for weight interpolation
268
269 ClassDefOverride(RooDataHist, 8) // Binned data set
270};
271
272#endif
#define R__SUGGEST_ALTERNATIVE(ALTERNATIVE)
Definition RConfig.hxx:527
unsigned long long ULong64_t
Definition RtypesCore.h:81
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
static void indent(ostringstream &buf, int indent_level)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
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:74
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:59
RooArgSet _vars
Dimensions of this data set.
Definition RooAbsData.h:361
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:55
RooCategory is an object to represent discrete states.
Definition RooCategory.h:28
RooCmdArg is a named container for two doubles, two integers two object points and three string point...
Definition RooCmdArg.h:26
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:39
double sum(bool correctForBinSize, bool inverseCorr=false) const
Return the sum of the weights of all bins in the histogram.
virtual void add(const RooArgSet &row, double wgt=1.0)
Add wgt to the bin content enclosed by the coordinates passed in row.
Definition RooDataHist.h:66
RooAbsData * reduceEng(const RooArgSet &varSubset, const RooFormulaVar *cutVar, const char *cutRange=nullptr, std::size_t nStart=0, std::size_t nStop=std::numeric_limits< std::size_t >::max()) override
Implementation of RooAbsData virtual method that drives the RooAbsData::reduce() methods.
static std::unique_ptr< RooAbsDataStore > makeDefaultDataStore(const char *name, const char *title, RooArgSet const &vars)
Int_t _cache_sum_valid
! Is cache sum valid? Needs to be Int_t instead of CacheSumState_t for subclasses.
double interpolateDim(int iDim, double xval, size_t centralIdx, int intOrder, bool correctForBinSize, bool cdfBoundaries)
Perform boundary safe 'intOrder'-th interpolation of weights in dimension 'dim' at current value 'xva...
double weightSquared() const override
Return squared weight of last bin that was requested with get().
std::vector< std::unique_ptr< const RooAbsBinning > > const & getBinnings() const
void importTH1(const RooArgList &vars, const TH1 &histo, double initWgt, bool doDensityCorrection)
Import data from given TH1/2/3 into this RooDataHist.
void printDataHistogram(std::ostream &os, RooRealVar *obs) const
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:55
double _cache_sum
! Cache for sum of entries ;
double const * sumW2Array() const
double const * weightArray() const
void initialize(const char *binningName=nullptr, bool fillTree=true)
Initialization procedure: allocate weights array, calculate multipliers needed for N-space to 1-dim a...
VarInfo _varInfo
!
Int_t getIndex(const RooAbsCollection &coord, bool fast=false) const
Calculate bin number of the given coordinates.
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...
void weights(double *output, RooSpan< double const > xVals, int intOrder, bool correctForBinSize, bool cdfBoundaries)
A vectorized version of RooDataHist::weight() for one dimensional histograms with up to one dimension...
double weightInterpolated(const RooArgSet &bin, int intOrder, bool correctForBinSize, bool cdfBoundaries)
Return the weight at given coordinates with interpolation.
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
! Cache for arrays of partial bin volumes
void checkBinBounds() const
void initializeAsymErrArrays() const
double weight(std::size_t i) const
Return weight of i-th bin.
RooAbsData * emptyClone(const char *newName=nullptr, const char *newTitle=nullptr, const RooArgSet *vars=nullptr, const char *=nullptr) const override
Return empty clone of this RooDataHist.
Definition RooDataHist.h:61
void set(std::size_t binNumber, double weight, double wgtErr)
Set bin content of bin that was last loaded with get(std::size_t).
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:89
void weightError(double &lo, double &hi, ErrorType etype=Poisson) const override
Return the asymmetric errors on the current weight.
double * _errHi
[_arrSize] High-side error on weight array
void importTH1Set(const RooArgList &vars, RooCategory &indexCat, std::map< std::string, TH1 * > hmap, double initWgt, bool doDensityCorrection)
Import data from given set of TH1/2/3 into this RooDataHist.
void adjustBinning(const RooArgList &vars, const TH1 &href, Int_t *offset=nullptr)
Adjust binning specification on first and optionally second and third observable to binning in given ...
double * _binv
[_arrSize] Bin volume array
RooDataHist()
Default constructor.
bool isWeighted() const override
Always returns true as all histograms use event weights.
Definition RooDataHist.h:83
void removeSelfFromDir()
double weightSquared(std::size_t i) const
Return squared weight sum of i-th bin.
double const * wgtErrHiArray() const
ULong64_t _curIndex
Current index.
double weightFast(const RooArgSet &bin, int intOrder, bool correctForBinSize, bool cdfBoundaries)
A faster version of RooDataHist::weight that assumes the passed arguments are aligned with the histog...
RooPlot * plotOn(RooPlot *frame, PlotOpt o) const override
Back end function to plotting functionality.
double weight() const override
Return weight of last bin that was requested with get().
std::vector< std::vector< double > > _binbounds
! list of bin bounds per dimension
void printArgs(std::ostream &os) const override
Print argument of dataset, i.e. the observable names.
void importDHistSet(const RooArgList &vars, RooCategory &indexCat, std::map< std::string, RooDataHist * > dmap, double initWgt)
Import data from given set of TH1/2/3 into this RooDataHist.
void _adjustBinning(RooRealVar &theirVar, const TAxis &axis, RooRealVar *ourVar, Int_t *offset)
Helper doing the actual work of adjustBinning().
void printMultiline(std::ostream &os, Int_t content, bool verbose=false, TString indent="") const override
Print the details on the dataset contents.
double * _sumw2
[_arrSize] Sum of weights^2
TIterator * sliceIterator(RooAbsArg &sliceArg, const RooArgSet &otherArgs)
Create an iterator over all bins in a slice defined by the subset of observables listed in sliceArg.
void interpolateQuadratic(double *output, RooSpan< const double > xVals, bool correctForBinSize, bool cdfBoundaries)
A vectorized version of interpolateDim for boundary safe quadratic interpolation of one dimensional h...
Int_t calcTreeIndex() const
Legacy overload to calculate the tree index from the current value of _vars.
~RooDataHist() override
Destructor.
bool isNonPoissonWeighted() const override
Returns true if dataset contains entries with a non-integer weight.
RooDataHist & operator=(const RooDataHist &)=delete
Int_t getIndex(const RooArgSet &coord, bool fast=false) const
Calculate bin number of the given coordinates.
double binVolume(std::size_t i) const
Return bin volume of i-th bin.
std::vector< RooAbsLValue * > _lvvars
! List of observables casted as RooAbsLValue
double weightError(ErrorType etype=Poisson) const override
Return the symmetric error on the current weight.
double const * wgtErrLoArray() const
void SetName(const char *name) override
Change the name of the RooDataHist.
std::vector< std::unique_ptr< const RooAbsBinning > > _lvbins
! List of used binnings associated with lvalues
std::vector< double > _interpolationBuffer
! Buffer to contain values used for weight interpolation
std::vector< Int_t > _idxMult
void registerWeightArraysToDataStore() const
Hand over pointers to our weight arrays to the data store implementation.
void reset() override
Reset all bin weights to zero.
double * _errLo
[_arrSize] Low-side error on weight array
double * _wgt
[_arrSize] Weight array
void printValue(std::ostream &os) const override
Print value of the dataset, i.e. the sum of weights contained in the dataset.
VarInfo const & getVarInfo()
Return reference to VarInfo struct with cached histogram variable information that is frequently used...
const RooArgSet * get() const override
Get bin centre of current bin.
Definition RooDataHist.h:76
double binVolume() const
Return volume of current bin.
void interpolateLinear(double *output, RooSpan< const double > xVals, bool correctForBinSize, bool cdfBoundaries)
A vectorized version of interpolateDim for boundary safe linear interpolation of one dimensional hist...
double sumEntries() const override
Sum the weights of all bins.
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:43
RooRealVar represents a variable that can be changed from the outside.
Definition RooRealVar.h:40
A simple container to hold a batch of data values.
Definition RooSpan.h:34
The RooStringView is a wrapper around a C-syle string that can also be constructed from a std::string...
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
const char * GetName() const override
Returns name of object.
Definition TNamed.h:47
const char * GetTitle() const override
Returns title of object.
Definition TNamed.h:48
Mother of all ROOT objects.
Definition TObject.h:41
Basic string class.
Definition TString.h:139
Definition first.py:1
Structure to cache information on the histogram variable that is frequently used for histogram weight...
static void output()