20using std::cout, std::swap;
 
   51#define STATCLASSES Experimental::RHistStatContent, Experimental::RHistStatUncertainty 
   55   using TimePoint_t = 
decltype(std::chrono::high_resolution_clock::now());
 
   61   Timer(
const char *title, 
size_t count)
 
 
   67      using namespace std::chrono;
 
   68      auto end = high_resolution_clock::now();
 
 
 
   92      double x[
fNBinsX] = {0., 0.1, 0.3, 1.};
 
   93      double y[
fNBinsY] = {0., 0.1, 0.2, 0.3, 1.};
 
   95      for (
size_t i = 0; i < 
fNBinsX; ++i)
 
   97      for (
size_t i = 0; i < 
fNBinsY; ++i)
 
 
 
  111   if (minVal > maxVal) {
 
  112      std::swap(minVal, maxVal);
 
  114   T 
range = maxVal - minVal;
 
  118      *
c = minVal + 
range * 
r.Rndm();
 
 
  126      std::string(
version) + 
" " + std::string(
histname) + 
" " + std::string(title) + 
" [" + std::string(axis) + 
"]";
 
 
  130template <
int dim, 
typename type>
 
  158template <
typename T, 
unsigned short kNDim>
 
  164   constexpr static unsigned short kNDim = 2;
 
  170      static constexpr const char *
const gType = 
"regular bin size  ";
 
  172      template <FillFunc_t filler>
 
  173      static long Execute(std::vector<double> &
input, 
double minVal, 
double maxVal)
 
  176         ExpTH2 hist({100, minVal, maxVal}, {5, minVal, maxVal});
 
 
 
  182      static constexpr const char *
const gType = 
"irregular bin size";
 
  184      template <FillFunc_t filler>
 
  185      static long Execute(std::vector<double> &
input, 
double minVal, 
double maxVal)
 
 
 
  198      array_t *values = (array_t *)(&
input[0]);
 
  204         for (
size_t i = 0; i < (
input.size() - (
stride * 2 - 1)); i += (
stride * 2), values += 32) {
 
  205            std::span<array_t> coords(values, 32);
 
  209      return hist.GetNDim();
 
 
  218         for (
size_t i = 0; i < 
input.size() - 1; i += 2)
 
  219            filler.Fill({input[i], input[i + 1]});
 
  221      return hist.GetNDim();
 
 
  229         for (
size_t i = 0; i < 
input.size() - 1; i += 2)
 
  230            hist.Fill({input[i], input[i + 1]});
 
  232      return hist.GetNDim();
 
 
 
  239   constexpr static unsigned short kNDim = 1;
 
  245      static constexpr const char *
const gType = 
"regular bin size  ";
 
  247      template <FillFunc_t filler>
 
  248      static long Execute(std::vector<double> &
input, 
double minVal, 
double maxVal)
 
  251         for (
unsigned short i = 0; i < 
gRepeat; ++i) {
 
  252            ExpTH1 hist({100, minVal, maxVal});
 
 
 
  260      static constexpr const char *
const gType = 
"irregular bin size";
 
  262      template <FillFunc_t filler>
 
  263      static long Execute(std::vector<double> &
input, 
double minVal, 
double maxVal)
 
  268         for (
unsigned short i = 0; i < 
gRepeat; ++i) {
 
 
 
  280      array_t *values = (array_t *)(&
input[0]);
 
  286         for (
size_t i = 0; i < (
input.size() - (
stride - 1)); i += (
stride), values += 32) {
 
  287            std::span<array_t> coords(values, 32);
 
  291      return hist.GetNDim();
 
 
  300         for (
size_t i = 0; i < 
input.size(); ++i)
 
  303      return hist.GetNDim();
 
 
  311         for (
size_t i = 0; i < 
input.size(); ++i)
 
  312            hist.Fill({input[i]});
 
  314      return hist.GetNDim();
 
 
 
 
  323template <
int ndim, 
typename T>
 
  342template <
typename T, 
int kNDim>
 
  348   constexpr static unsigned short kNDim = 2;
 
  355      static constexpr const char *
const gType = 
"regular bin size  ";
 
  357      template <FillFunc_t filler>
 
  358      static long Execute(std::vector<double> &
input, 
double minVal, 
double maxVal)
 
  362         for (
unsigned short i = 0; i < 
gRepeat; ++i) {
 
  363            HistType_t hist(
"a", 
"a hist", 100, minVal, maxVal, 5, minVal, maxVal);
 
 
 
  372      static constexpr const char *
const gType = 
"irregular bin size";
 
  374      template <FillFunc_t filler>
 
  375      static long Execute(std::vector<double> &
input, 
double minVal, 
double maxVal)
 
  379         for (
unsigned short i = 0; i < 
gRepeat; ++i) {
 
 
 
  394         for (
size_t i = 0; i < 
input.size() - 1; i += 2)
 
  397      return (
long)hist.GetEntries();
 
 
  410      return (
long)hist.GetEntries();
 
 
  419         for (
size_t i = 0; i < 
input.size() - 1; i += 2)
 
  422      return (
long)hist.GetEntries();
 
 
 
  429   constexpr static unsigned short kNDim = 1;
 
  436      static constexpr const char *
const gType = 
"regular bin size  ";
 
  438      template <FillFunc_t filler>
 
  439      static long Execute(std::vector<double> &
input, 
double minVal, 
double maxVal)
 
  443         for (
unsigned short i = 0; i < 
gRepeat; ++i) {
 
  444            HistType_t hist(
"a", 
"a hist", 100, minVal, maxVal);
 
 
 
  453      static constexpr const char *
const gType = 
"irregular bin size";
 
  455      template <FillFunc_t filler>
 
  456      static long Execute(std::vector<double> &
input, 
double minVal, 
double maxVal)
 
  460         for (
unsigned short i = 0; i < 
gRepeat; ++i) {
 
 
 
  475         for (
size_t i = 0; i < 
input.size() - 1; ++i)
 
  478      return (
long)hist.GetEntries();
 
 
  491      return (
long)hist.GetEntries();
 
 
  500         for (
size_t i = 0; i < 
input.size(); ++i)
 
  503      return (
long)hist.GetEntries();
 
 
 
 
  508template <
typename T, 
unsigned short kNDim>
 
  515   static constexpr unsigned short kNDim = 2;
 
  519   std::vector<double> 
input; 
 
  522   double minVal = -5.0;
 
  523   double maxVal = +5.0;
 
 
  575   constexpr unsigned short kNDim = 2;
 
  579   std::vector<double> 
input; 
 
  582   double minVal = -5.0;
 
  583   double maxVal = +5.0;
 
 
  631   static constexpr unsigned short kNDim = 1;
 
  635   std::vector<double> 
input; 
 
  638   double minVal = -5.0;
 
  639   double maxVal = +5.0;
 
 
  687   static constexpr unsigned short kNDim = 1;
 
  691   std::vector<double> 
input; 
 
  694   double minVal = -5.0;
 
  695   double maxVal = +5.0;
 
 
  755   int what = 1 | 2 | 4 | 8;
 
  757      iter = atof(
argv[1]);
 
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void input
 
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 r
 
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 result
 
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
 
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 type
 
Objects used to configure the different axis types.
 
Histogram class for histograms with DIMENSIONS dimensions, where each bin count is stored by a value ...
 
const_iterator begin() const
 
const_iterator end() const
 
1-D histogram with a double per channel (see TH1 documentation)
 
1-D histogram with a float per channel (see TH1 documentation)
 
static Int_t GetDefaultBufferSize()
Static function return the default buffer size for automatic histograms the parameter fgBufferSize ma...
 
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
 
2-D histogram with a double per channel (see TH1 documentation)
 
2-D histogram with a float per channel (see TH1 documentation)
 
Random number generator class based on M.
 
const char * GetHist< 1, double >()
 
void speedtest(size_t count=(size_t)(1e6))
 
const char * GetHist< 2, double >()
 
void speedtest< double, 1 >(size_t count)
 
constexpr unsigned short gRepeat
 
void speedtest< float, 1 >(size_t count)
 
const char * GetHist< 2, float >()
 
const char * GetHist< 1, float >()
 
void histspeedtest(size_t iter=1e6, int what=255)
 
void GenerateInput(std::vector< T > &numbers, double minVal, double maxVal, UInt_t seed)
 
std::string MakeTitle(std::string_view version, std::string_view histname, std::string_view title, std::string_view axis)
 
void speedtest< double, 2 >(size_t count)
 
void speedtest< float, 2 >(size_t count)
 
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
 
static constexpr size_t fNBinsY
 
Experimental::RAxisConfig AConf_t
 
BinEdges(double minValue, double maxValue)
 
static constexpr size_t fNBinsX
 
AConf_t GetConfigY() const
 
AConf_t GetConfigX() const
 
static long Execute(std::vector< double > &input, double minVal, double maxVal)
 
static long Execute(std::vector< double > &input, double minVal, double maxVal)
 
static long fill(HistType_t &hist, std::vector< double > &input, std::string_view gType)
 
typename Redirect< kNDim, T >::HistType_t HistType_t
 
static long fillN(HistType_t &hist, std::vector< double > &input, std::string_view gType)
 
std::add_pointer_t< long(HistType_t &hist, std::vector< double > &input, std::string_view type)> FillFunc_t
 
static long fillBuffered(HistType_t &hist, std::vector< double > &input, std::string_view gType)
 
static long Execute(std::vector< double > &input, double minVal, double maxVal)
 
static long Execute(std::vector< double > &input, double minVal, double maxVal)
 
std::add_pointer_t< long(HistType_t &hist, std::vector< double > &input, std::string_view type)> FillFunc_t
 
static long fillBuffered(HistType_t &hist, std::vector< double > &input, std::string_view gType)
 
typename Redirect< kNDim, T >::HistType_t HistType_t
 
static long fillN(HistType_t &hist, std::vector< double > &input, std::string_view gType)
 
static long fill(HistType_t &hist, std::vector< double > &input, std::string_view gType)
 
static long Execute(std::vector< double > &input, double minVal, double maxVal)
 
static long Execute(std::vector< double > &input, double minVal, double maxVal)
 
static long fillN(ExpTH1 &hist, std::vector< double > &input, std::string_view gType)
 
Experimental::RHist< kNDim, T, Experimental::RHistStatContent, Experimental::RHistStatUncertainty > ExpTH1
 
static long fillBuffered(ExpTH1 &hist, std::vector< double > &input, std::string_view gType)
 
static long fill(ExpTH1 &hist, std::vector< double > &input, std::string_view gType)
 
std::add_pointer_t< long(ExpTH1 &hist, std::vector< double > &input, std::string_view type)> FillFunc_t
 
static long Execute(std::vector< double > &input, double minVal, double maxVal)
 
static long Execute(std::vector< double > &input, double minVal, double maxVal)
 
Experimental::RHist< kNDim, T, Experimental::RHistStatContent, Experimental::RHistStatUncertainty > ExpTH2
 
std::add_pointer_t< long(ExpTH2 &hist, std::vector< double > &input, std::string_view type)> FillFunc_t
 
static long fillBuffered(ExpTH2 &hist, std::vector< double > &input, std::string_view gType)
 
static long fillN(ExpTH2 &hist, std::vector< double > &input, std::string_view gType)
 
static long fill(ExpTH2 &hist, std::vector< double > &input, std::string_view gType)
 
Timer(const char *title, size_t count)
 
decltype(std::chrono::high_resolution_clock::now()) TimePoint_t