53 _xlo(0), _xhi(0), _ownBoundLo(
kTRUE), _ownBoundHi(
kTRUE),
83 setRange(boundaries[0], boundaries[nbins]);
111 std::vector<Double_t>::iterator it =
140 std::vector<Double_t>::iterator it = std::lower_bound(
_boundaries.begin(),
175 addBoundary((
double(nbins - i) /
double(nbins)) * xlo +
176 (double(i) / double(nbins)) * xhi);
196 std::vector<Double_t>::const_iterator it = std::lower_bound(
258 std::vector<Double_t>::const_iterator it = std::lower_bound(
271 if (0 > bin || bin >=
_nbins) {
285 if (
binEdges(bin, xlo, xhi))
return 0;
286 return 0.5 * (xlo + xhi);
295 if (
binEdges(bin, xlo, xhi))
return 0;
305 if (
binEdges(bin, xlo, xhi))
return 0;
315 if (
binEdges(bin, xlo, xhi))
return 0;
322 void RooBinning::Streamer(
TBuffer &R__b)
339 RooAbsBinning::Streamer(R__b);
359 throw std::string(
"Unknown class version!");
virtual void setRange(Double_t xlo, Double_t xhi)
Change the defined range associated with this binning.
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
static Vc_ALWAYS_INLINE int_v min(const int_v &x, const int_v &y)
virtual Double_t * array() const
Return array of boundary values.
Int_t _blo
Array of boundaries.
RooBinning(Double_t xlo=-RooNumber::infinity(), Double_t xhi=RooNumber::infinity(), const char *name=0)
Constructor for an initially empty binning defining the range [xlo,xhi].
Buffer base class used for serializing objects.
virtual Double_t binHigh(Int_t bin) const
Return the upper bound of the requested bin.
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
void addUniform(Int_t nBins, Double_t xlo, Double_t xhi)
Add array of nbins uniformly sized bins in range [xlo,xhi].
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...
Bool_t addBoundary(Double_t boundary)
Add bin boundary at given value.
Iterator abstract base class.
virtual Int_t numBoundaries() const
virtual Double_t nearestBoundary(Double_t x) const
Return the value of the nearest boundary to x.
static Vc_ALWAYS_INLINE Vector< T > abs(const Vector< T > &x)
virtual Double_t binWidth(Int_t bin) const
Return the width of the requested bin.
Bool_t binEdges(Int_t bin, Double_t &xlo, Double_t &xhi) const
Return upper and lower bound of bin 'bin'.
virtual TIterator * MakeIterator(Bool_t dir=kIterForward) const
Return a list iterator.
Bool_t hasBoundary(Double_t boundary)
Check if boundary exists at given value.
void updateBinCount()
Update the internal bin counter.
std::vector< Double_t > _boundaries
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 Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
static Vc_ALWAYS_INLINE int_v max(const int_v &x, const int_v &y)
virtual Double_t binLow(Int_t bin) const
Return the lower bound of the requested bin.
Bool_t removeBoundary(Double_t boundary)
Remove boundary at given value.
virtual TObject * Next()=0
void addBoundaryPair(Double_t boundary, Double_t mirrorPoint=0)
Add pair of boundaries: one at 'boundary' and one at 2*mirrorPoint-boundary.
virtual Int_t GetSize() const
virtual Double_t binCenter(Int_t bin) const
Return the position of the center of bin 'bin'.
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0