Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RTreeColumnReader.hxx
Go to the documentation of this file.
1// Author: Enrico Guiraud CERN 09/2020
2// Author: Vincenzo Eduardo Padulano CERN 09/2024
3
4/*************************************************************************
5 * Copyright (C) 1995-2024, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_RDF_RTREECOLUMNREADER
13#define ROOT_RDF_RTREECOLUMNREADER
14
15#include "RColumnReaderBase.hxx"
16#include <ROOT/RVec.hxx>
17#include "ROOT/RDF/Utils.hxx"
18#include <Rtypes.h> // Long64_t, R__CLING_PTRCHECK
19
20#include <array>
21#include <memory>
22#include <string>
23#include <cstddef>
24
25class TTreeReader;
26
27namespace ROOT {
28namespace Internal {
29
30class TTreeReaderOpaqueValue;
31class TTreeReaderUntypedArray;
32class TTreeReaderUntypedValue;
33
34namespace RDF {
35
37 std::unique_ptr<ROOT::Internal::TTreeReaderOpaqueValue> fTreeValue;
38
39 void *GetImpl(Long64_t);
40
41public:
42 /// Construct the RTreeColumnReader. Actual initialization is performed lazily by the Init method.
43 RTreeOpaqueColumnReader(TTreeReader &r, std::string_view colName);
44
45 // Rule of five
46
51 ~RTreeOpaqueColumnReader() final; // Define destructor when data member type is fully defined
52};
53
54/// RTreeColumnReader specialization for TTree values read via TTreeReaderUntypedValue
56 std::unique_ptr<ROOT::Internal::TTreeReaderUntypedValue> fTreeValue;
57
58 void *GetImpl(Long64_t);
59
60public:
61 RTreeUntypedValueColumnReader(TTreeReader &r, std::string_view colName, std::string_view typeName);
62
63 // Rule of five
64
69 ~RTreeUntypedValueColumnReader() final; // Define destructor when data member type is fully defined
70};
71
72/// RTreeColumnReader specialization for TTree values read via TTreeReaderUntypedValue
74public:
75 enum class ECollectionType {
76 kRVec,
77 kStdArray,
78 kRVecBool
79 };
80
81 RTreeUntypedArrayColumnReader(TTreeReader &r, std::string_view colName, std::string_view valueTypeName,
82 ECollectionType collType);
83
84 // Rule of five
85
90 ~RTreeUntypedArrayColumnReader() final; // Define destructor when data member type is fully defined
91
93 std::unique_ptr<ROOT::Internal::TTreeReaderUntypedArray> fTreeArray;
94 ECollectionType fCollectionType;
95
96 using Byte_t = std::byte;
97 /// We return a reference to this RVec to clients, to guarantee a stable address and contiguous memory layout.
98 RVec<Byte_t> fRVec{};
99
100 Long64_t fLastEntry = -1;
101
102 /// The size of the collection value type.
103 std::size_t fValueSize{};
104
105 /// Whether we already printed a warning about performing a copy of the TTreeReaderArray contents
106 bool fCopyWarningPrinted = false;
107
108 void *GetImpl(Long64_t entry);
109};
110
111} // namespace RDF
112} // namespace Internal
113} // namespace ROOT
114
115#endif
size_t fValueSize
long long Long64_t
Definition RtypesCore.h:69
#define R__CLING_PTRCHECK(ONOFF)
Definition Rtypes.h:481
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
RTreeOpaqueColumnReader(const RTreeOpaqueColumnReader &)=delete
RTreeOpaqueColumnReader & operator=(const RTreeOpaqueColumnReader &)=delete
RTreeOpaqueColumnReader & operator=(RTreeOpaqueColumnReader &&)=delete
RTreeOpaqueColumnReader(RTreeOpaqueColumnReader &&)=delete
std::unique_ptr< ROOT::Internal::TTreeReaderOpaqueValue > fTreeValue
RTreeColumnReader specialization for TTree values read via TTreeReaderUntypedValue.
RTreeUntypedArrayColumnReader & operator=(RTreeUntypedArrayColumnReader &&)=delete
RTreeUntypedArrayColumnReader(const RTreeUntypedArrayColumnReader &)=delete
RTreeUntypedArrayColumnReader(RTreeUntypedArrayColumnReader &&)=delete
RTreeUntypedArrayColumnReader & operator=(const RTreeUntypedArrayColumnReader &)=delete
RTreeColumnReader specialization for TTree values read via TTreeReaderUntypedValue.
RTreeUntypedValueColumnReader(RTreeUntypedValueColumnReader &&)=delete
RTreeUntypedValueColumnReader & operator=(const RTreeUntypedValueColumnReader &)=delete
std::unique_ptr< ROOT::Internal::TTreeReaderUntypedValue > fTreeValue
RTreeUntypedValueColumnReader(const RTreeUntypedValueColumnReader &)=delete
RTreeUntypedValueColumnReader & operator=(RTreeUntypedValueColumnReader &&)=delete
A "std::vector"-like collection of values implementing handy operation to analyse them.
Definition RVec.hxx:1529
A simple, robust and fast interface to read values from ROOT columnar datasets such as TTree,...
Definition TTreeReader.h:46
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...