Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RNTuple.hxx
Go to the documentation of this file.
1/// \file ROOT/RNTuple.hxx
2/// \ingroup NTuple
3/// \author Jakob Blomer <jblomer@cern.ch>
4/// \date 2023-09-19
5
6/*************************************************************************
7 * Copyright (C) 1995-2023, Rene Brun and Fons Rademakers. *
8 * All rights reserved. *
9 * *
10 * For the licensing terms see $ROOTSYS/LICENSE. *
11 * For the list of contributors see $ROOTSYS/README/CREDITS. *
12 *************************************************************************/
13
14#ifndef ROOT_RNTuple
15#define ROOT_RNTuple
16
17#include <Rtypes.h>
18
19#include <cstdint>
20
21class TCollection;
22class TFile;
23class TFileMergeInfo;
24
25namespace ROOT {
26
27class RNTuple;
28
29namespace Internal {
30class RPageSourceFile;
31class RNTupleFileWriter;
32
33RNTuple CreateAnchor(std::uint16_t versionEpoch, std::uint16_t versionMajor, std::uint16_t versionMinor,
34 std::uint16_t versionPatch, std::uint64_t seekHeader, std::uint64_t nbytesHeader,
35 std::uint64_t lenHeader, std::uint64_t seekFooter, std::uint64_t nbytesFooter,
36 std::uint64_t lenFooter, std::uint64_t maxKeySize);
37
38} // namespace Internal
39
40// clang-format off
41/**
42\class ROOT::RNTuple
43\ingroup NTuple
44\brief Representation of an RNTuple data set in a ROOT file
45
46The class points to the header and footer keys, which in turn have the references to the pages (via page lists).
47Only the RNTuple key will be listed in the list of keys. Like TBaskets, the pages are "invisible" keys.
48Byte offset references in the RNTuple header and footer reference directly the data part of page records,
49skipping the TFile key part.
50
51In the list of keys, this object appears as "ROOT::RNTuple".
52It is the user-facing representation of an RNTuple data set in a ROOT file and
53it provides an API entry point to an RNTuple stored in a ROOT file. Its main purpose is to
54construct a page source for an RNTuple, which in turn can be used to read an RNTuple with an RDF or
55an RNTupleReader.
56
57For instance, for an RNTuple called "Events" in a ROOT file, usage can be
58~~~ {.cpp}
59auto f = TFile::Open("data.root");
60auto ntpl = f->Get<ROOT::RNTuple>("Events");
61auto reader = RNTupleReader::Open(ntpl);
62~~~
63*/
64// clang-format on
68
69 friend ROOT::RNTuple
70 Internal::CreateAnchor(std::uint16_t versionEpoch, std::uint16_t versionMajor, std::uint16_t versionMinor,
71 std::uint16_t versionPatch, std::uint64_t seekHeader, std::uint64_t nbytesHeader,
72 std::uint64_t lenHeader, std::uint64_t seekFooter, std::uint64_t nbytesFooter,
73 std::uint64_t lenFooter, std::uint64_t maxKeySize);
74
75public:
76 static constexpr std::uint16_t kVersionEpoch = 1;
77 static constexpr std::uint16_t kVersionMajor = 0;
78 static constexpr std::uint16_t kVersionMinor = 0;
79 static constexpr std::uint16_t kVersionPatch = 1;
80
81private:
82 /// Version of the RNTuple binary format that the writer supports (see specification).
83 /// Changing the epoch indicates backward-incompatible changes
85 /// Changing the major version indicates forward incompatible changes; such changes should correspond to a new
86 /// bit in the feature flag of the RNTuple header.
87 /// For the pre-release epoch 0, indicates the release candidate number
89 /// Changing the minor version indicates new optional fields added to the RNTuple metadata
91 /// Changing the patch version indicates new backported features from newer binary format versions
93 /// The file offset of the header excluding the TKey part
94 std::uint64_t fSeekHeader = 0;
95 /// The size of the compressed ntuple header
96 std::uint64_t fNBytesHeader = 0;
97 /// The size of the uncompressed ntuple header
98 std::uint64_t fLenHeader = 0;
99 /// The file offset of the footer excluding the TKey part
100 std::uint64_t fSeekFooter = 0;
101 /// The size of the compressed ntuple footer
102 std::uint64_t fNBytesFooter = 0;
103 /// The size of the uncompressed ntuple footer
104 std::uint64_t fLenFooter = 0;
105 /// The maximum size for a TKey payload. Payloads bigger than this size will be written as multiple blobs.
106 std::uint64_t fMaxKeySize = 0;
107
108 TFile *fFile = nullptr; ///<! The file from which the ntuple was streamed, registered in the custom streamer
109
110public:
111 RNTuple() = default;
112 ~RNTuple() = default;
113
114 std::uint16_t GetVersionEpoch() const { return fVersionEpoch; }
115 std::uint16_t GetVersionMajor() const { return fVersionMajor; }
116 std::uint16_t GetVersionMinor() const { return fVersionMinor; }
117 std::uint16_t GetVersionPatch() const { return fVersionPatch; }
118
119 std::uint64_t GetSeekHeader() const { return fSeekHeader; }
120 std::uint64_t GetNBytesHeader() const { return fNBytesHeader; }
121 std::uint64_t GetLenHeader() const { return fLenHeader; }
122
123 std::uint64_t GetSeekFooter() const { return fSeekFooter; }
124 std::uint64_t GetNBytesFooter() const { return fNBytesFooter; }
125 std::uint64_t GetLenFooter() const { return fLenFooter; }
126 std::uint64_t GetMaxKeySize() const { return fMaxKeySize; }
127
128 /// RNTuple implements the hadd MergeFile interface
129 /// Merge this NTuple with the input list entries
131
132 /// NOTE: if you change this version you also need to update RTFNTuple::fClassVersion in RMiniFile.cxx
134}; // class RNTuple
135
136} // namespace ROOT
137
138#endif
#define ClassDefNV(name, id)
Definition Rtypes.h:350
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void input
Write RNTuple data blocks in a TFile or a bare file container.
Storage provider that reads ntuple pages from a file.
Representation of an RNTuple data set in a ROOT file.
Definition RNTuple.hxx:65
Long64_t Merge(TCollection *input, TFileMergeInfo *mergeInfo)
RNTuple implements the hadd MergeFile interface Merge this NTuple with the input list entries.
std::uint64_t fSeekFooter
The file offset of the footer excluding the TKey part.
Definition RNTuple.hxx:100
std::uint64_t fNBytesFooter
The size of the compressed ntuple footer.
Definition RNTuple.hxx:102
std::uint64_t GetLenFooter() const
Definition RNTuple.hxx:125
static constexpr std::uint16_t kVersionPatch
Definition RNTuple.hxx:79
std::uint64_t GetSeekHeader() const
Definition RNTuple.hxx:119
std::uint16_t fVersionMinor
Changing the minor version indicates new optional fields added to the RNTuple metadata.
Definition RNTuple.hxx:90
static constexpr std::uint16_t kVersionMajor
Definition RNTuple.hxx:77
RNTuple()=default
std::uint16_t GetVersionMajor() const
Definition RNTuple.hxx:115
std::uint64_t fSeekHeader
The file offset of the header excluding the TKey part.
Definition RNTuple.hxx:94
std::uint64_t GetNBytesFooter() const
Definition RNTuple.hxx:124
static constexpr std::uint16_t kVersionEpoch
Definition RNTuple.hxx:76
std::uint64_t GetNBytesHeader() const
Definition RNTuple.hxx:120
std::uint64_t fMaxKeySize
The maximum size for a TKey payload. Payloads bigger than this size will be written as multiple blobs...
Definition RNTuple.hxx:106
~RNTuple()=default
std::uint16_t GetVersionMinor() const
Definition RNTuple.hxx:116
std::uint64_t fNBytesHeader
The size of the compressed ntuple header.
Definition RNTuple.hxx:96
std::uint64_t fLenHeader
The size of the uncompressed ntuple header.
Definition RNTuple.hxx:98
std::uint16_t GetVersionPatch() const
Definition RNTuple.hxx:117
std::uint64_t fLenFooter
The size of the uncompressed ntuple footer.
Definition RNTuple.hxx:104
std::uint64_t GetMaxKeySize() const
Definition RNTuple.hxx:126
std::uint64_t GetLenHeader() const
Definition RNTuple.hxx:121
std::uint16_t fVersionPatch
Changing the patch version indicates new backported features from newer binary format versions.
Definition RNTuple.hxx:92
TFile * fFile
! The file from which the ntuple was streamed, registered in the custom streamer
Definition RNTuple.hxx:108
std::uint16_t fVersionMajor
Changing the major version indicates forward incompatible changes; such changes should correspond to ...
Definition RNTuple.hxx:88
std::uint64_t GetSeekFooter() const
Definition RNTuple.hxx:123
static constexpr std::uint16_t kVersionMinor
Definition RNTuple.hxx:78
std::uint16_t fVersionEpoch
Version of the RNTuple binary format that the writer supports (see specification).
Definition RNTuple.hxx:84
std::uint16_t GetVersionEpoch() const
Definition RNTuple.hxx:114
Collection abstract base class.
Definition TCollection.h:65
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
Definition TFile.h:131
RNTuple CreateAnchor(std::uint16_t versionEpoch, std::uint16_t versionMajor, std::uint16_t versionMinor, std::uint16_t versionPatch, std::uint64_t seekHeader, std::uint64_t nbytesHeader, std::uint64_t lenHeader, std::uint64_t seekFooter, std::uint64_t nbytesFooter, std::uint64_t lenFooter, std::uint64_t maxKeySize)
Definition RNTuple.cxx:52
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...