13#ifndef ROOT_RNTupleDrawVisitor
14#define ROOT_RNTupleDrawVisitor
41 template <
typename ViewT>
44 fHist = std::make_unique<TH1F>(
"hdraw",
fTitle.c_str(), 100, 0, 0);
45 fHist->SetDirectory(
nullptr);
47 auto bufsize = (
fHist->GetBufferSize() - 1) / 2;
55 for (
auto i : view.GetFieldRange()) {
57 if (++cnt == bufsize) {
71 auto view =
fNtplReader->GetDirectAccessView<T>(field.GetOnDiskId());
84 std::map<std::string, std::uint64_t> values;
89 for (
auto i : view.GetFieldRange()) {
90 std::string
v = view(i);
92 auto iter = values.find(
v);
93 if (iter != values.end())
95 else if (values.size() >= 50)
102 fHist = std::make_unique<TH1F>(
"h",
fTitle.c_str(), 3, 0, 3);
103 fHist->SetDirectory(
nullptr);
107 for (
auto &entry : values)
108 fHist->Fill(entry.first.c_str(), entry.second);
109 fHist->LabelsDeflate();
137 if (
const auto f32 = field.As32Bit()) {
139 }
else if (
const auto f64 = field.As64Bit()) {
Abstract base class for classes implementing the visitor design pattern.
RNTupleDrawVisitor(std::shared_ptr< ROOT::RNTupleReader > ntplReader, const std::string &title)
void VisitDoubleField(const ROOT::RField< double > &field) final
void VisitStringField(const ROOT::RField< std::string > &field) final
void VisitUInt32Field(const ROOT::RIntegralField< std::uint32_t > &field) final
void VisitField(const ROOT::RFieldBase &) final
void VisitInt64Field(const ROOT::RIntegralField< std::int64_t > &field) final
void FillHistogramImpl(ViewT &view)
void VisitInt8Field(const ROOT::RIntegralField< std::int8_t > &field) final
void FillStringHistogram(const ROOT::RField< std::string > &field)
void VisitUInt8Field(const ROOT::RIntegralField< std::uint8_t > &field) final
void VisitInt32Field(const ROOT::RIntegralField< std::int32_t > &field) final
void VisitInt16Field(const ROOT::RIntegralField< std::int16_t > &field) final
void VisitCharField(const ROOT::RField< char > &field) final
std::unique_ptr< TH1 > fHist
void VisitUInt64Field(const ROOT::RIntegralField< std::uint64_t > &field) final
void VisitUInt16Field(const ROOT::RIntegralField< std::uint16_t > &field) final
void VisitBoolField(const ROOT::RField< bool > &field) final
void VisitCardinalityField(const ROOT::RCardinalityField &field) final
void VisitFloatField(const ROOT::RField< float > &field) final
std::shared_ptr< ROOT::RNTupleReader > fNtplReader
void FillHistogram(const ROOT::RIntegralField< T > &field)
void TestHistBuffer()
Test collected entries if it looks like integer values and one can use better binning.
void FillHistogram(const ROOT::RField< T > &field)
An artificial field that transforms an RNTuple column that contains the offset of collections into co...
A field translates read and write calls from/to underlying columns to/from tree values.
ROOT::DescriptorId_t GetOnDiskId() const
Classes with dictionaries that can be inspected by TClass.
TH1 is the base class of all histogram classes in ROOT.