54T*
generateHist(
const std::string&
name,
const std::string& title,
const std::size_t nDim,
55 const int nBins[],
const double lowerBounds[],
const double upperBounds[],
const int nSteps)
57 if constexpr (std::is_base_of_v<StepTHn, T>) {
58 return new T(
name.data(), title.data(), nSteps, nDim, nBins, lowerBounds, upperBounds);
59 }
else if constexpr (std::is_base_of_v<THnBase, T>) {
60 return new T(
name.data(), title.data(), nDim, nBins, lowerBounds, upperBounds);
61 }
else if constexpr (std::is_base_of_v<TH3, T>) {
62 return (nDim != 3) ? nullptr
63 :
new T(
name.data(), title.data(), nBins[0], lowerBounds[0],
64 upperBounds[0], nBins[1], lowerBounds[1], upperBounds[1],
65 nBins[2], lowerBounds[2], upperBounds[2]);
66 }
else if constexpr (std::is_base_of_v<TH2, T>) {
67 return (nDim != 2) ? nullptr
68 :
new T(
name.data(), title.data(), nBins[0], lowerBounds[0],
69 upperBounds[0], nBins[1], lowerBounds[1], upperBounds[1]);
70 }
else if constexpr (std::is_base_of_v<TH1, T>) {
73 :
new T(
name.data(), title.data(), nBins[0], lowerBounds[0], upperBounds[0]);
100 std::unique_ptr<BASE> hist{generateHist<T>(histSpec.
name, histSpec.
title, nAxes, nBins, lowerBounds, upperBounds, histSpec.
config.
nSteps)};
T * generateHist(const std::string &name, const std::string &title, const std::size_t nDim, const int nBins[], const double lowerBounds[], const double upperBounds[], const int nSteps)
std::variant< std::shared_ptr< THn >, std::shared_ptr< THnSparse >, std::shared_ptr< TH3 >, std::shared_ptr< TH2 >, std::shared_ptr< TH1 >, std::shared_ptr< TProfile3D >, std::shared_ptr< TProfile2D >, std::shared_ptr< TProfile >, std::shared_ptr< StepTHn > > HistPtr