Warning, file /include/root/ROOT/RDF/RTreeColumnReader.hxx was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
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 template <typename T>
0027 class TTreeReaderValue;
0028
0029 namespace ROOT {
0030 namespace Internal {
0031
0032 class TTreeReaderOpaqueValue;
0033 class TTreeReaderUntypedArray;
0034 class TTreeReaderUntypedValue;
0035
0036 namespace RDF {
0037
0038 class R__CLING_PTRCHECK(off) RTreeOpaqueColumnReader final : public ROOT::Detail::RDF::RColumnReaderBase {
0039 std::unique_ptr<ROOT::Internal::TTreeReaderOpaqueValue> fTreeValue;
0040
0041 void *GetImpl(Long64_t) override;
0042
0043 public:
0044
0045 RTreeOpaqueColumnReader(TTreeReader &r, std::string_view colName);
0046
0047
0048
0049 RTreeOpaqueColumnReader(const RTreeOpaqueColumnReader &) = delete;
0050 RTreeOpaqueColumnReader &operator=(const RTreeOpaqueColumnReader &) = delete;
0051 RTreeOpaqueColumnReader(RTreeOpaqueColumnReader &&) = delete;
0052 RTreeOpaqueColumnReader &operator=(RTreeOpaqueColumnReader &&) = delete;
0053 ~RTreeOpaqueColumnReader() final;
0054 };
0055
0056
0057 class R__CLING_PTRCHECK(off) RTreeUntypedValueColumnReader final : public ROOT::Detail::RDF::RColumnReaderBase {
0058 std::unique_ptr<ROOT::Internal::TTreeReaderUntypedValue> fTreeValue;
0059
0060 void *GetImpl(Long64_t) override;
0061
0062 public:
0063 RTreeUntypedValueColumnReader(TTreeReader &r, std::string_view colName, std::string_view typeName);
0064
0065
0066
0067 RTreeUntypedValueColumnReader(const RTreeUntypedValueColumnReader &) = delete;
0068 RTreeUntypedValueColumnReader &operator=(const RTreeUntypedValueColumnReader &) = delete;
0069 RTreeUntypedValueColumnReader(RTreeUntypedValueColumnReader &&) = delete;
0070 RTreeUntypedValueColumnReader &operator=(RTreeUntypedValueColumnReader &&) = delete;
0071 ~RTreeUntypedValueColumnReader() final;
0072 };
0073
0074
0075 class R__CLING_PTRCHECK(off) RTreeUntypedArrayColumnReader final : public ROOT::Detail::RDF::RColumnReaderBase {
0076 public:
0077 enum class ECollectionType {
0078 kRVec,
0079 kStdArray,
0080 kRVecBool
0081 };
0082
0083 RTreeUntypedArrayColumnReader(TTreeReader &r, std::string_view colName, std::string_view valueTypeName,
0084 ECollectionType collType);
0085
0086
0087
0088 RTreeUntypedArrayColumnReader(const RTreeUntypedArrayColumnReader &) = delete;
0089 RTreeUntypedArrayColumnReader &operator=(const RTreeUntypedArrayColumnReader &) = delete;
0090 RTreeUntypedArrayColumnReader(RTreeUntypedArrayColumnReader &&) = delete;
0091 RTreeUntypedArrayColumnReader &operator=(RTreeUntypedArrayColumnReader &&) = delete;
0092 ~RTreeUntypedArrayColumnReader() final;
0093
0094 private:
0095 std::unique_ptr<ROOT::Internal::TTreeReaderUntypedArray> fTreeArray;
0096 ECollectionType fCollectionType;
0097
0098 using Byte_t = std::byte;
0099
0100 RVec<Byte_t> fRVec{};
0101
0102 Long64_t fLastEntry = -1;
0103
0104
0105 std::size_t fValueSize{};
0106
0107
0108 bool fCopyWarningPrinted = false;
0109
0110 void *GetImpl(Long64_t entry) override;
0111 };
0112
0113 class R__CLING_PTRCHECK(off) RMaskedColumnReader : public ROOT::Detail::RDF::RColumnReaderBase {
0114 std::unique_ptr<ROOT::Detail::RDF::RColumnReaderBase> fValueReader;
0115 std::unique_ptr<TTreeReaderValue<uint64_t>> fTreeValueMask;
0116 unsigned int fMaskIndex = 0;
0117
0118 void *GetImpl(Long64_t) override;
0119
0120 public:
0121 RMaskedColumnReader(TTreeReader &r, std::unique_ptr<ROOT::Detail::RDF::RColumnReaderBase> valueReader,
0122 std::string_view maskName, unsigned int maskIndex);
0123 ~RMaskedColumnReader() override;
0124 void SetColumnReader(std::unique_ptr<ROOT::Detail::RDF::RColumnReaderBase> reader)
0125 {
0126 fValueReader = std::move(reader);
0127 }
0128 };
0129
0130 }
0131 }
0132 }
0133
0134 #endif