Multidimensional RHist with different axis types.
#include <cmath>
#include <cstddef>
#include <iostream>
#include <random>
#include <vector>
void hist003_RHist_multi()
{
std::vector<double> etaEdges = {-5.0, -3.0, -2.4, -1.5, 0.0, 1.5, 2.4, 3.0, 5.0};
static constexpr double Pi = 3.14159;
std::cout << "Created a histogram with " << hist.GetNDimensions() << " dimensions and " << hist.GetTotalNBins()
<< " bins\n";
std::mt19937 gen;
std::uniform_real_distribution
dist(0.0, 1.0);
static constexpr double maxE = 1050;
for (std::size_t i = 0; i < 100000; i++) {
double delta = 2 *
Pi *
dist(gen);
double eta = -std::log(std::tan(delta / 2));
double phi = std::acos(2 *
dist(gen) - 1) -
Pi / 2;
double E = maxE *
dist(gen);
hist.Fill(eta, phi, E);
}
std::cout << " ... filled with " << hist.GetNEntries() << " entries.\n\n";
std::cout << "eta in [1.5, 2.4), phi in [0, 0.157), E between 10 GeV and 100 GeV\n";
auto content = hist.GetBinContent(5, 10, 1);
std::cout << " content = " << content << "\n";
std::cout << "eta in [-1.5, 0), phi in [-0.785, -0.628), E between 1 GeV and 10 GeV\n";
content = hist.GetBinContent(3, 5, 0);
std::cout << " content = " << content << "\n";
}
A histogram for aggregation of data along multiple dimensions.
A regular axis with equidistant bins in the interval .
An axis with variable bins defined by their edges.
double Pi()
Mathematical constants.
double dist(Rotation3D const &r1, Rotation3D const &r2)
constexpr Double_t E()
Base of natural log: .
Created a histogram with 3 dimensions and 1000 bins
... filled with 100000 entries.
eta in [1.5, 2.4), phi in [0, 0.157), E between 10 GeV and 100 GeV
content = 29
eta in [-1.5, 0), phi in [-0.785, -0.628), E between 1 GeV and 10 GeV
content = 14