File indexing completed on 2025-09-18 09:31:59
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef ROOT_RDF_RTREECOLUMNREADER
0013 #define ROOT_RDF_RTREECOLUMNREADER
0014
0015 #include "RColumnReaderBase.hxx"
0016 #include <ROOT/RVec.hxx>
0017 #include "ROOT/RDF/Utils.hxx"
0018 #include <Rtypes.h> // Long64_t, R__CLING_PTRCHECK
0019
0020 #include <array>
0021 #include <memory>
0022 #include <string>
0023 #include <cstddef>
0024
0025 class TTreeReader;
0026
0027 namespace ROOT {
0028 namespace Internal {
0029
0030 class TTreeReaderOpaqueValue;
0031 class TTreeReaderUntypedArray;
0032 class TTreeReaderUntypedValue;
0033
0034 namespace RDF {
0035
0036 class R__CLING_PTRCHECK(off) RTreeOpaqueColumnReader final : public ROOT::Detail::RDF::RColumnReaderBase {
0037 std::unique_ptr<ROOT::Internal::TTreeReaderOpaqueValue> fTreeValue;
0038
0039 void *GetImpl(Long64_t);
0040
0041 public:
0042
0043 RTreeOpaqueColumnReader(TTreeReader &r, std::string_view colName);
0044
0045
0046
0047 RTreeOpaqueColumnReader(const RTreeOpaqueColumnReader &) = delete;
0048 RTreeOpaqueColumnReader &operator=(const RTreeOpaqueColumnReader &) = delete;
0049 RTreeOpaqueColumnReader(RTreeOpaqueColumnReader &&) = delete;
0050 RTreeOpaqueColumnReader &operator=(RTreeOpaqueColumnReader &&) = delete;
0051 ~RTreeOpaqueColumnReader() final;
0052 };
0053
0054
0055 class R__CLING_PTRCHECK(off) RTreeUntypedValueColumnReader final : public ROOT::Detail::RDF::RColumnReaderBase {
0056 std::unique_ptr<ROOT::Internal::TTreeReaderUntypedValue> fTreeValue;
0057
0058 void *GetImpl(Long64_t);
0059
0060 public:
0061 RTreeUntypedValueColumnReader(TTreeReader &r, std::string_view colName, std::string_view typeName);
0062
0063
0064
0065 RTreeUntypedValueColumnReader(const RTreeUntypedValueColumnReader &) = delete;
0066 RTreeUntypedValueColumnReader &operator=(const RTreeUntypedValueColumnReader &) = delete;
0067 RTreeUntypedValueColumnReader(RTreeUntypedValueColumnReader &&) = delete;
0068 RTreeUntypedValueColumnReader &operator=(RTreeUntypedValueColumnReader &&) = delete;
0069 ~RTreeUntypedValueColumnReader() final;
0070 };
0071
0072
0073 class R__CLING_PTRCHECK(off) RTreeUntypedArrayColumnReader final : public ROOT::Detail::RDF::RColumnReaderBase {
0074 public:
0075 enum class ECollectionType {
0076 kRVec,
0077 kStdArray,
0078 kRVecBool
0079 };
0080
0081 RTreeUntypedArrayColumnReader(TTreeReader &r, std::string_view colName, std::string_view valueTypeName,
0082 ECollectionType collType);
0083
0084
0085
0086 RTreeUntypedArrayColumnReader(const RTreeUntypedArrayColumnReader &) = delete;
0087 RTreeUntypedArrayColumnReader &operator=(const RTreeUntypedArrayColumnReader &) = delete;
0088 RTreeUntypedArrayColumnReader(RTreeUntypedArrayColumnReader &&) = delete;
0089 RTreeUntypedArrayColumnReader &operator=(RTreeUntypedArrayColumnReader &&) = delete;
0090 ~RTreeUntypedArrayColumnReader() final;
0091
0092 private:
0093 std::unique_ptr<ROOT::Internal::TTreeReaderUntypedArray> fTreeArray;
0094 ECollectionType fCollectionType;
0095
0096 using Byte_t = std::byte;
0097
0098 RVec<Byte_t> fRVec{};
0099
0100 Long64_t fLastEntry = -1;
0101
0102
0103 std::size_t fValueSize{};
0104
0105
0106 bool fCopyWarningPrinted = false;
0107
0108 void *GetImpl(Long64_t entry);
0109 };
0110
0111 }
0112 }
0113 }
0114
0115 #endif