5#ifndef RNTUPLEWRITERHELPER_H
6#define RNTUPLEWRITERHELPER_H
10#include "ROOT/REntry.hxx"
11#include "ROOT/RField.hxx"
12#include "ROOT/RNTuple.hxx"
13#include "ROOT/RNTupleWriteOptions.hxx"
14#include "ROOT/RNTupleWriter.hxx"
24 bool enableBufferedWrite,
bool enableMetrics);
38 void addField(
const std::string& field_name,
const std::string& attr_type);
72 std::unique_ptr<ROOT::RNTupleModel>
m_model;
const std::string & getName() const
Name of the RNTuple.
void increaseClientCount()
Keep track of how many APR containers are writing to this RNTuple.
void addAttribute(const attrDataTuple &in)
std::unique_ptr< ROOT::RNTupleModel > m_model
Internal cache for the RNTuple model Before first commit the fields are added to the model At the fir...
bool m_collectMetrics
Enable/Disable Metric Collection.
void close()
Close the writer.
int m_clients
Count how many APR Containers are writing to this RNTuple (more than one makes a Group)
bool isGrouped() const
Is this RNTuple used by more than one APR container?
~RNTupleWriterHelper()=default
Default Destructor.
void makeNewEntry()
Create a new empty RNTuple row with the current model (fields)
ROOT::RNTupleWriteOptions m_opts
size_t size() const
Size of the RNTuple.
std::tuple< std::string, std::string, void * > attrDataTuple
Add a new field to the RNTuple, collect the data pointer for the commit.
int commit()
Commit the data.
RNTupleWriterHelper(TFile *file, const std::string &ntupleName, bool enableBufferedWrite, bool enableMetrics)
Constructor.
void addFieldValue(const std::string &field_name, void *attr_data)
Supply data address for a given field.
std::unique_ptr< ROOT::RNTupleWriter > m_ntupleWriter
Internal cache for the native RNTupleWriter.
void addField(const std::string &field_name, const std::string &attr_type)
Add a new field to the RNTuple.
std::unique_ptr< ROOT::REntry > m_entry
Internal cache for the RNEntry.
bool needsCommit() const
Check if any data needs to be committed.
std::map< std::string, void * > m_attrDataMap
Store data ptr for the first row, when only creating the model.
AthMessaging wrapper to set the output level in APR components.