An RNTuple that gets filled with entries (data) and writes them to storage.
An output ntuple can be filled with entries. The caller has to make sure that the data that gets filled into an ntuple is not modified for the time of the Fill() call. The fill call serializes the C++ object into the column format and writes data into the corresponding column page buffers. Writing of the buffers to storage is deferred and can be triggered by FlushCluster() or by destructing the writer. On I/O errors, an exception is thrown.
Definition at line 58 of file RNTupleWriter.hxx.
Public Member Functions | |
RNTupleWriter (const RNTupleWriter &)=delete | |
~RNTupleWriter () | |
void | CommitCluster (bool commitClusterGroup=false) |
Ensure that the data from the so far seen Fill calls has been written to storage. | |
void | CommitDataset () |
Closes the underlying file (page sink) and expires the model. | |
std::unique_ptr< ROOT::REntry > | CreateEntry () const |
std::unique_ptr< ROOT::RNTupleModel::RUpdater > | CreateModelUpdater () |
Get a RNTupleModel::RUpdater that provides limited support for incremental updates to the underlying model, e.g. | |
std::unique_ptr< Experimental::Detail::RRawPtrWriteEntry > | CreateRawPtrWriteEntry () const |
void | EnableMetrics () |
std::size_t | Fill () |
The simplest user interface if the default entry that comes with the ntuple model is used. | |
std::size_t | Fill (Experimental::Detail::RRawPtrWriteEntry &entry) |
Fill an RRawPtrWriteEntry into this ntuple. | |
std::size_t | Fill (ROOT::REntry &entry) |
Multiple entries can have been instantiated from the ntuple model. | |
void | FillNoFlush (Experimental::Detail::RRawPtrWriteEntry &entry, RNTupleFillStatus &status) |
Fill an RRawPtrWriteEntry into this ntuple, but don't commit the cluster. | |
void | FillNoFlush (ROOT::REntry &entry, RNTupleFillStatus &status) |
Fill an entry into this ntuple, but don't commit the cluster. | |
void | FlushCluster () |
Flush so far filled entries to storage. | |
void | FlushColumns () |
Flush column data, preparing for CommitCluster or to reduce memory usage. | |
ROOT::NTupleSize_t | GetLastCommitted () const |
Return the entry number that was last committed in a cluster. | |
ROOT::NTupleSize_t | GetLastCommittedClusterGroup () const |
Return the entry number that was last committed in a cluster group. | |
ROOT::NTupleSize_t | GetLastFlushed () const |
Return the entry number that was last flushed in a cluster. | |
const Experimental::Detail::RNTupleMetrics & | GetMetrics () const |
const ROOT::RNTupleModel & | GetModel () const |
ROOT::NTupleSize_t | GetNEntries () const |
Return the number of entries filled so far. | |
RNTupleWriter & | operator= (const RNTupleWriter &)=delete |
Static Public Member Functions | |
static std::unique_ptr< RNTupleWriter > | Append (std::unique_ptr< ROOT::RNTupleModel > model, std::string_view ntupleName, TDirectory &fileOrDirectory, const ROOT::RNTupleWriteOptions &options=ROOT::RNTupleWriteOptions()) |
Throws an exception if the model is null. | |
static std::unique_ptr< RNTupleWriter > | Recreate (std::initializer_list< std::pair< std::string_view, std::string_view > > fields, std::string_view ntupleName, std::string_view storage, const ROOT::RNTupleWriteOptions &options=ROOT::RNTupleWriteOptions()) |
static std::unique_ptr< RNTupleWriter > | Recreate (std::unique_ptr< ROOT::RNTupleModel > model, std::string_view ntupleName, std::string_view storage, const ROOT::RNTupleWriteOptions &options=ROOT::RNTupleWriteOptions()) |
Throws an exception if the model is null. | |
Private Member Functions | |
RNTupleWriter (std::unique_ptr< ROOT::RNTupleModel > model, std::unique_ptr< Internal::RPageSink > sink) | |
void | CommitClusterGroup () |
Internal::RPageSink & | GetSink () |
ROOT::RNTupleModel & | GetUpdatableModel () |
Static Private Member Functions | |
static std::unique_ptr< RNTupleWriter > | Create (std::unique_ptr< ROOT::RNTupleModel > model, std::unique_ptr< Internal::RPageSink > sink, const ROOT::RNTupleWriteOptions &options) |
Create a writer, potentially wrapping the sink in a RPageSinkBuf. | |
Private Attributes | |
Experimental::RNTupleFillContext | fFillContext |
ROOT::NTupleSize_t | fLastCommittedClusterGroup = 0 |
Experimental::Detail::RNTupleMetrics | fMetrics |
std::unique_ptr< Internal::RPageStorage::RTaskScheduler > | fZipTasks |
The page sink's parallel page compression scheduler if IMT is on. | |
Friends | |
std::unique_ptr< RNTupleWriter > | Internal::CreateRNTupleWriter (std::unique_ptr< ROOT::RNTupleModel >, std::unique_ptr< Internal::RPageSink >) |
#include <ROOT/RNTupleWriter.hxx>
|
private |
Definition at line 31 of file RNTupleWriter.cxx.
|
delete |
ROOT::RNTupleWriter::~RNTupleWriter | ( | ) |
Definition at line 46 of file RNTupleWriter.cxx.
|
static |
Throws an exception if the model is null.
Definition at line 98 of file RNTupleWriter.cxx.
Ensure that the data from the so far seen Fill calls has been written to storage.
Definition at line 129 of file RNTupleWriter.hxx.
|
private |
Definition at line 115 of file RNTupleWriter.cxx.
void ROOT::RNTupleWriter::CommitDataset | ( | ) |
Closes the underlying file (page sink) and expires the model.
Automatically called on destruct. Once the dataset is committed, calls to Fill(), [Commit|Flush]Cluster(), FlushColumns(), CreateEntry(), and model updating fail.
Definition at line 131 of file RNTupleWriter.cxx.
|
staticprivate |
Create a writer, potentially wrapping the sink in a RPageSinkBuf.
Definition at line 55 of file RNTupleWriter.cxx.
|
inline |
Definition at line 140 of file RNTupleWriter.hxx.
|
inline |
Get a RNTupleModel::RUpdater that provides limited support for incremental updates to the underlying model, e.g.
addition of new fields.
Example: add a new field after the model has been used to construct a RNTupleWriter
object
Definition at line 177 of file RNTupleWriter.hxx.
|
inline |
Definition at line 141 of file RNTupleWriter.hxx.
|
inline |
Definition at line 155 of file RNTupleWriter.hxx.
|
inline |
The simplest user interface if the default entry that comes with the ntuple model is used.
Definition at line 103 of file RNTupleWriter.hxx.
|
inline |
Fill an RRawPtrWriteEntry into this ntuple.
This method will check the entry's model ID to ensure it comes from the writer's own model or throw an exception otherwise.
Definition at line 115 of file RNTupleWriter.hxx.
|
inline |
Multiple entries can have been instantiated from the ntuple model.
This method will check the entry's model ID to ensure it comes from the writer's own model or throw an exception otherwise.
Definition at line 107 of file RNTupleWriter.hxx.
|
inline |
Fill an RRawPtrWriteEntry into this ntuple, but don't commit the cluster.
The calling code must pass an RNTupleFillStatus and check RNTupleFillStatus::ShouldFlushCluster.
Definition at line 118 of file RNTupleWriter.hxx.
|
inline |
Fill an entry into this ntuple, but don't commit the cluster.
The calling code must pass an RNTupleFillStatus and check RNTupleFillStatus::ShouldFlushCluster.
Definition at line 110 of file RNTupleWriter.hxx.
|
inline |
Flush so far filled entries to storage.
Definition at line 127 of file RNTupleWriter.hxx.
|
inline |
Flush column data, preparing for CommitCluster or to reduce memory usage.
This will trigger compression of pages, but not actually write to storage (unless buffered writing is turned off).
Definition at line 125 of file RNTupleWriter.hxx.
|
inline |
Return the entry number that was last committed in a cluster.
Definition at line 149 of file RNTupleWriter.hxx.
|
inline |
Return the entry number that was last committed in a cluster group.
Definition at line 151 of file RNTupleWriter.hxx.
|
inline |
Return the entry number that was last flushed in a cluster.
Definition at line 147 of file RNTupleWriter.hxx.
|
inline |
Definition at line 156 of file RNTupleWriter.hxx.
|
inline |
Definition at line 158 of file RNTupleWriter.hxx.
|
inline |
Return the number of entries filled so far.
Definition at line 153 of file RNTupleWriter.hxx.
|
inlineprivate |
Definition at line 75 of file RNTupleWriter.hxx.
|
private |
Definition at line 123 of file RNTupleWriter.cxx.
|
delete |
|
static |
Definition at line 82 of file RNTupleWriter.cxx.
|
static |
Throws an exception if the model is null.
Definition at line 74 of file RNTupleWriter.cxx.
|
friend |
|
private |
Definition at line 67 of file RNTupleWriter.hxx.
|
private |
Definition at line 70 of file RNTupleWriter.hxx.
|
private |
Definition at line 68 of file RNTupleWriter.hxx.
|
private |
The page sink's parallel page compression scheduler if IMT is on.
Needs to be destructed after the page sink (in the fill context) is destructed and so declared before.
Definition at line 66 of file RNTupleWriter.hxx.