Basic attributes
binedges
: Get the bin edges of the histogram, for 1D histogram, it returns just a vector. For others, it returns a tuple of vectors. If you need a tuple of vectors, use h.binedges at your own risk.bincounts
: Get the bin counts (weights) of the histogram.sumw2
: Get the sum of weights squared of the histogram, it has the same shape asbincounts(h)
.nentries
: Get the number of times a histogram is filled (push!
ed)
Derived attributes
bincenters
: Get the bin centers of the histogram, for 1D histogram, it returns just a vector. For others, it returns a tuple of vectors.binerrors
: Get the error of each bin of the histogram. By default it callssqrt()
on each entry ofsumw2
as an approximation.mean
,std
,median
,quantile
, weighted by histogrambincounts()
.
FHist.integral
— Functionintegral(h; width=false)
Get the integral a histogram; width
means multiply each bincount by their bin width when calculating the integral.
Manipulating histogram
This section includes adding data to histogram, and other operations that return a histogram (may with reduced dimensionality)
FHist.atomic_push!
— Functionpush!(h::Hist1D, val::Real, wgt::Real=1)
atomic_push!(h::Hist1D, val::Real, wgt::Real=1)
Adding one value at a time into histogram. sumw2
(sum of weights^2) accumulates wgt^2
with a default weight of 1. atomic_push!
is a slower version of push!
that is thread-safe.
N.B. To append multiple values at once, use broadcasting via push!.(h, [-3.0, -2.9, -2.8])
or push!.(h, [-3.0, -2.9, -2.8], 2.0)
push!(h::Hist2D, valx::Real, valy::Real, wgt::Real=1)
atomic_push!(h::Hist2D, valx::Real, valy::Real, wgt::Real=1)
Adding one value at a time into histogram. sumw2
(sum of weights^2) accumulates wgt^2
with a default weight of 1. atomic_push!
is a slower version of push!
that is thread-safe.
push!(h::Hist3D, valx::Real, valy::Real, wgt::Real=1)
atomic_push!(h::Hist3D, valx::Real, valy::Real, wgt::Real=1)
Adding one value at a time into histogram. sumw2
(sum of weights^2) accumulates wgt^2
with a default weight of 1. atomic_push!
is a slower version of push!
that is thread-safe.
FHist.cumulative
— Functioncumulative(h::Hist1D; forward=true)
Create a cumulative histogram. If forward
, start summing from the left.
FHist.rebin
— Functionrebin(h::Hist1D, n::Int=1)
rebin(n::Int) = h::Hist1D -> rebin(h, n)
Merges n
consecutive bins into one. The returned histogram will have nbins(h)/n
bins.
rebin(h::Hist2D, nx::Int=1, ny::Int=nx)
rebin(nx::Int, ny::Int) = h::Hist2D -> rebin(h, nx, ny)
Merges nx
(ny
) consecutive bins into one along the x (y) axis by summing.
FHist.restrict
— Functionrestrict(h::Hist1D, low=-Inf, high=Inf)
restrict(low=-Inf, high=Inf) = h::Hist1D -> restrict(h, low, high)
Returns a new histogram with a restricted x-axis. restrict(h, 0, 3)
(or h |> restrict(0, 3)
) will return a slice of h
where the bin centers are in [0, 3]
(inclusive).
restrict(h::Hist2D, xlow=-Inf, xhigh=Inf, ylow=-Inf, yhigh=Inf)
restrict(xlow=-Inf, xhigh=Inf, ylow=-Inf, yhigh=Inf) = h::Hist2D -> restrict(h, xlow, xhigh, ylow, yhigh)
Returns a new histogram with a restricted x-axis. restrict(h, 0, 3)
(or h |> restrict(0, 3)
) will return a slice of h
where the bin centers are in [0, 3]
(inclusive).
FHist.profile
— Functionprofile(h::Hist2D, axis::Symbol=:x)
profile(axis::Symbol=:x) = h::Hist2D -> profile(h, axis)
Returns the axis
-profile of the 2D histogram by calculating the weighted mean over the other axis. profile(h, :x)
will return a Hist1D
with the y-axis edges of h
.
FHist.project
— Functionproject(h::Hist2D, axis::Symbol=:x)
project(axis::Symbol=:x) = h::Hist2D -> project(h, axis)
Computes the :x
(:y
) axis projection of the 2D histogram by summing over the y (x) axis. Returns a Hist1D
.
project(h::Hist3D, axis::Symbol=:x)
project(axis::Symbol=:x) = h::Hist3D -> project(h, axis)
Computes the :x
/:y
/:z
axis projection of the 3D histogram by summing over the specified axis. Returns a Hist2D
.