24template <
typename Hist,
typename T>
25std::unique_ptr<Hist> ConvertToTH1Impl(
const RHistEngine<T> &engine)
28 throw std::invalid_argument(
"TH1 requires one dimension");
31 auto ret = std::make_unique<Hist>();
32 ret->SetDirectory(
nullptr);
39 if constexpr (std::is_same_v<T, RBinWithError>) {
40 if (sumw2 ==
nullptr) {
42 sumw2 =
ret->GetSumw2()->GetArray();
45 ret->GetArray()[i] =
c.fSum;
49 ret->GetArray()[i] = engine.GetBinContent(index);
54 const auto &axis = engine.GetAxes()[0];
55 for (
auto index : axis.GetFullRange()) {
56 if (index.IsUnderflow()) {
57 copyBinContent(0, index);
58 }
else if (index.IsOverflow()) {
59 copyBinContent(axis.GetNNormalBins() + 1, index);
61 assert(index.IsNormal());
62 copyBinContent(index.GetIndex() + 1, index);
69template <
typename Hist>
94 return ConvertToTH1Impl<TH1C>(engine);
99 return ConvertToTH1Impl<TH1S>(engine);
104 return ConvertToTH1Impl<TH1I>(engine);
109 return ConvertToTH1Impl<TH1L>(engine);
114 return ConvertToTH1Impl<TH1L>(engine);
119 return ConvertToTH1Impl<TH1F>(engine);
124 return ConvertToTH1Impl<TH1D>(engine);
129 return ConvertToTH1Impl<TH1D>(engine);
int Int_t
Signed integer 4 bytes (int).
double Double_t
Double 8 bytes.
A bin index with special values for underflow and overflow bins.
A histogram data structure to bin data along multiple dimensions.
const std::vector< RAxisVariant > & GetAxes() const
std::size_t GetNDimensions() const
Histogram statistics of unbinned values.
const RDimensionStats & GetDimensionStats(std::size_t dim=0) const
Get the statistics object for one dimension.
std::uint64_t GetNEntries() const
A histogram for aggregation of data along multiple dimensions.
const RHistStats & GetStats() const
const RHistEngine< BinContentType > & GetEngine() const
void ConvertAxis(TAxis &dst, const RAxisVariant &src)
Convert a single axis object to TAxis.
std::unique_ptr< TH1I > ConvertToTH1I(const RHistEngine< int > &engine)
Convert a one-dimensional histogram to TH1I.
std::unique_ptr< TH1S > ConvertToTH1S(const RHistEngine< short > &engine)
Convert a one-dimensional histogram to TH1S.
std::unique_ptr< TH1L > ConvertToTH1L(const RHistEngine< long > &engine)
Convert a one-dimensional histogram to TH1L.
std::unique_ptr< TH1F > ConvertToTH1F(const RHistEngine< float > &engine)
Convert a one-dimensional histogram to TH1F.
std::unique_ptr< TH1C > ConvertToTH1C(const RHistEngine< char > &engine)
Convert a one-dimensional histogram to TH1C.
std::unique_ptr< TH1D > ConvertToTH1D(const RHistEngine< double > &engine)
Convert a one-dimensional histogram to TH1D.
Namespace for ROOT features in testing.