ATLAS Offline Software
Loading...
Searching...
No Matches
RootStorageSvc::RNTupleWriterHelper Class Reference

#include <RNTupleWriterHelper.h>

Inheritance diagram for RootStorageSvc::RNTupleWriterHelper:
Collaboration diagram for RootStorageSvc::RNTupleWriterHelper:

Public Types

typedef std::tuple< std::string, std::string, void * > attrDataTuple
 Add a new field to the RNTuple, collect the data pointer for the commit.

Public Member Functions

 RNTupleWriterHelper (TFile *file, const std::string &ntupleName, bool enableBufferedWrite, bool enableMetrics)
 Constructor.
 ~RNTupleWriterHelper ()=default
 Default Destructor.
void makeNewEntry ()
 Create a new empty RNTuple row with the current model (fields)
void addAttribute (const attrDataTuple &in)
void addField (const std::string &field_name, const std::string &attr_type)
 Add a new field to the RNTuple.
void addFieldValue (const std::string &field_name, void *attr_data)
 Supply data address for a given field.
int commit ()
 Commit the data.
const std::string & getName () const
 Name of the RNTuple.
size_t size () const
 Size of the RNTuple.
bool needsCommit () const
 Check if any data needs to be committed.
bool isGrouped () const
 Is this RNTuple used by more than one APR container?
void increaseClientCount ()
 Keep track of how many APR containers are writing to this RNTuple.
void close ()
 Close the writer.
bool msgLvl (const MSG::Level lvl) const
 Test the output level.
MsgStream & msg () const
 The standard message stream.
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream.
void setLevel (MSG::Level lvl)
 Change the current logging level.

Private Member Functions

void initMessaging () const
 Initialize our message level and MessageSvc.

Private Attributes

std::map< std::string, void * > m_attrDataMap
 Store data ptr for the first row, when only creating the model.
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 first commit the model passed to the RNTupleWriter which takes its ownership.
std::unique_ptr< ROOT::REntry > m_entry
 Internal cache for the RNEntry.
std::unique_ptr< ROOT::RNTupleWriter > m_ntupleWriter
 Internal cache for the native RNTupleWriter.
std::string m_ntupleName
TFile * m_tfile
ROOT::RNTupleWriteOptions m_opts
int m_rowN = 0
int m_clients = 0
 Count how many APR Containers are writing to this RNTuple (more than one makes a Group)
bool m_needsCommit = false
bool m_collectMetrics
 Enable/Disable Metric Collection.
std::string m_nm
 Message source name.
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels)
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer.
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level.
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging)

Detailed Description

Definition at line 20 of file RNTupleWriterHelper.h.

Member Typedef Documentation

◆ attrDataTuple

typedef std::tuple<std::string, std::string, void*> RootStorageSvc::RNTupleWriterHelper::attrDataTuple

Add a new field to the RNTuple, collect the data pointer for the commit.

Definition at line 34 of file RNTupleWriterHelper.h.

Constructor & Destructor Documentation

◆ RNTupleWriterHelper()

RootStorageSvc::RNTupleWriterHelper::RNTupleWriterHelper ( TFile * file,
const std::string & ntupleName,
bool enableBufferedWrite,
bool enableMetrics )

Constructor.

◆ ~RNTupleWriterHelper()

RootStorageSvc::RNTupleWriterHelper::~RNTupleWriterHelper ( )
default

Default Destructor.

Member Function Documentation

◆ addAttribute()

void RootStorageSvc::RNTupleWriterHelper::addAttribute ( const attrDataTuple & in)

◆ addField()

void RootStorageSvc::RNTupleWriterHelper::addField ( const std::string & field_name,
const std::string & attr_type )

Add a new field to the RNTuple.

◆ addFieldValue()

void RootStorageSvc::RNTupleWriterHelper::addFieldValue ( const std::string & field_name,
void * attr_data )

Supply data address for a given field.

◆ close()

void RootStorageSvc::RNTupleWriterHelper::close ( )

Close the writer.

◆ commit()

int RootStorageSvc::RNTupleWriterHelper::commit ( )

Commit the data.

◆ getName()

const std::string & RootStorageSvc::RNTupleWriterHelper::getName ( ) const
inline

Name of the RNTuple.

Definition at line 47 of file RNTupleWriterHelper.h.

◆ increaseClientCount()

void RootStorageSvc::RNTupleWriterHelper::increaseClientCount ( )
inline

Keep track of how many APR containers are writing to this RNTuple.

Definition at line 59 of file RNTupleWriterHelper.h.

59{ m_clients++; }
int m_clients
Count how many APR Containers are writing to this RNTuple (more than one makes a Group)

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

40{
42 // If user did not set an explicit level, set a default
43 if (m_lvl == MSG::NIL) {
44 m_lvl = m_imsg ?
45 static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
46 MSG::INFO;
47 }
48}
std::string m_nm
Message source name.
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
std::atomic< MSG::Level > m_lvl
Current logging level.
IMessageSvc * getMessageSvc(bool quiet=false)

◆ isGrouped()

bool RootStorageSvc::RNTupleWriterHelper::isGrouped ( ) const
inline

Is this RNTuple used by more than one APR container?

Definition at line 56 of file RNTupleWriterHelper.h.

56{ return m_clients > 1; }

◆ makeNewEntry()

void RootStorageSvc::RNTupleWriterHelper::makeNewEntry ( )

Create a new empty RNTuple row with the current model (fields)

◆ msg() [1/2]

MsgStream & AthMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 163 of file AthMessaging.h.

164{
165 MsgStream* ms = m_msg_tls.get();
166 if (!ms) {
167 if (!m_initialized.test_and_set()) initMessaging();
168 ms = new MsgStream(m_imsg,m_nm);
169 m_msg_tls.reset( ms );
170 }
171
172 ms->setLevel (m_lvl);
173 return *ms;
174}
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
void initMessaging() const
Initialize our message level and MessageSvc.

◆ msg() [2/2]

MsgStream & AthMessaging::msg ( const MSG::Level lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 178 of file AthMessaging.h.

179{ return msg() << lvl; }
MsgStream & msg() const
The standard message stream.

◆ msgLvl()

bool AthMessaging::msgLvl ( const MSG::Level lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicating if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 151 of file AthMessaging.h.

152{
153 if (m_lvl <= lvl) {
154 msg() << lvl;
155 return true;
156 } else {
157 return false;
158 }
159}

◆ needsCommit()

bool RootStorageSvc::RNTupleWriterHelper::needsCommit ( ) const
inline

Check if any data needs to be committed.

Definition at line 53 of file RNTupleWriterHelper.h.

◆ setLevel()

void AthMessaging::setLevel ( MSG::Level lvl)
inherited

Change the current logging level.

Use this rather than msg().setLevel() for proper operation with MT.

Definition at line 28 of file AthMessaging.cxx.

29{
30 m_lvl = lvl;
31}

◆ size()

size_t RootStorageSvc::RNTupleWriterHelper::size ( ) const
inline

Size of the RNTuple.

Definition at line 50 of file RNTupleWriterHelper.h.

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
mutableprivateinherited

Messaging initialized (initMessaging)

Definition at line 141 of file AthMessaging.h.

◆ m_attrDataMap

std::map<std::string, void*> RootStorageSvc::RNTupleWriterHelper::m_attrDataMap
private

Store data ptr for the first row, when only creating the model.

Definition at line 66 of file RNTupleWriterHelper.h.

◆ m_clients

int RootStorageSvc::RNTupleWriterHelper::m_clients = 0
private

Count how many APR Containers are writing to this RNTuple (more than one makes a Group)

Definition at line 87 of file RNTupleWriterHelper.h.

◆ m_collectMetrics

bool RootStorageSvc::RNTupleWriterHelper::m_collectMetrics
private

Enable/Disable Metric Collection.

Definition at line 91 of file RNTupleWriterHelper.h.

◆ m_entry

std::unique_ptr<ROOT::REntry> RootStorageSvc::RNTupleWriterHelper::m_entry
private

Internal cache for the RNEntry.

Definition at line 75 of file RNTupleWriterHelper.h.

◆ m_imsg

std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr }
mutableprivateinherited

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

135{ nullptr };

◆ m_lvl

std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL }
mutableprivateinherited

Current logging level.

Definition at line 138 of file AthMessaging.h.

138{ MSG::NIL };

◆ m_model

std::unique_ptr<ROOT::RNTupleModel> RootStorageSvc::RNTupleWriterHelper::m_model
private

Internal cache for the RNTuple model Before first commit the fields are added to the model At the first commit the model passed to the RNTupleWriter which takes its ownership.

Definition at line 72 of file RNTupleWriterHelper.h.

◆ m_msg_tls

boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls
mutableprivateinherited

MsgStream instance (a std::cout like with print-out levels)

Definition at line 132 of file AthMessaging.h.

◆ m_needsCommit

bool RootStorageSvc::RNTupleWriterHelper::m_needsCommit = false
private

Definition at line 88 of file RNTupleWriterHelper.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_ntupleName

std::string RootStorageSvc::RNTupleWriterHelper::m_ntupleName
private

Definition at line 80 of file RNTupleWriterHelper.h.

◆ m_ntupleWriter

std::unique_ptr<ROOT::RNTupleWriter> RootStorageSvc::RNTupleWriterHelper::m_ntupleWriter
private

Internal cache for the native RNTupleWriter.

Definition at line 78 of file RNTupleWriterHelper.h.

◆ m_opts

ROOT::RNTupleWriteOptions RootStorageSvc::RNTupleWriterHelper::m_opts
private

Definition at line 82 of file RNTupleWriterHelper.h.

◆ m_rowN

int RootStorageSvc::RNTupleWriterHelper::m_rowN = 0
private

Definition at line 83 of file RNTupleWriterHelper.h.

◆ m_tfile

TFile* RootStorageSvc::RNTupleWriterHelper::m_tfile
private

Definition at line 81 of file RNTupleWriterHelper.h.


The documentation for this class was generated from the following file: