The Gaudi Framework  master (594c33fa)
Gaudi::NTuple::Writer< std::tuple< OUTPUTs... >(const INPUTs &...), Traits_ > Struct Template Reference

#include </builds/gaudi/Gaudi/GaudiUtils/include/Gaudi/NTuple/Writer.h>

Inheritance diagram for Gaudi::NTuple::Writer< std::tuple< OUTPUTs... >(const INPUTs &...), Traits_ >:
Collaboration diagram for Gaudi::NTuple::Writer< std::tuple< OUTPUTs... >(const INPUTs &...), Traits_ >:

Public Types

using Consumer_t = Gaudi::Functional::Consumer< void(const INPUTs &...), Traits_ >
 

Public Member Functions

virtual StatusCode initialize () override
 
void operator() (const INPUTs &... args) const override
 
virtual StatusCode finalize () override
 
- Public Member Functions inherited from Gaudi::NTuple::WriterMixin< std::tuple< OUTPUTs... >(const INPUTs &...)>
virtual std::tuple< OUTPUTs... > transform (const INPUTs &... inputs) const =0
 Transform input data to the desired output format. More...
 
void initTree (const std::unique_ptr< TFile > &file, const gsl::span< std::string, sizeof...(OUTPUTs)> branchNames, const Gaudi::Algorithm &algRef)
 
template<std::size_t... Is>
void createBranchesForOutputs (const gsl::span< std::string, sizeof...(OUTPUTs)> branchNames, const std::index_sequence< Is... >, const Gaudi::Algorithm &algRef) const
 
void fillTree (const INPUTs &... inputs) const
 
void writeTree (const std::unique_ptr< TFile > &file, const Gaudi::Algorithm &algRef)
 
virtual ~WriterMixin ()=default
 

Public Attributes

Gaudi::Property< std::stringm_filename
 
Gaudi::Property< std::array< std::string, sizeof...(OUTPUTs)> > m_branchNames
 
std::unique_ptr< TFile > m_file = nullptr
 
std::mutex m_mtx
 
- Public Attributes inherited from Gaudi::NTuple::WriterMixin< std::tuple< OUTPUTs... >(const INPUTs &...)>
TTree * m_tree = nullptr
 
std::array< std::string, sizeof...(OUTPUTs)> m_branchNames
 
std::vector< details::BranchWrapperm_branchWrappers {}
 

Detailed Description

template<typename... OUTPUTs, typename... INPUTs, typename Traits_>
struct Gaudi::NTuple::Writer< std::tuple< OUTPUTs... >(const INPUTs &...), Traits_ >

Definition at line 129 of file Writer.h.

Member Typedef Documentation

◆ Consumer_t

template<typename... OUTPUTs, typename... INPUTs, typename Traits_ >
using Gaudi::NTuple::Writer< std::tuple< OUTPUTs... >(const INPUTs &...), Traits_ >::Consumer_t = Gaudi::Functional::Consumer<void( const INPUTs&... ), Traits_>

Definition at line 132 of file Writer.h.

Member Function Documentation

◆ finalize()

template<typename... OUTPUTs, typename... INPUTs, typename Traits_ >
virtual StatusCode Gaudi::NTuple::Writer< std::tuple< OUTPUTs... >(const INPUTs &...), Traits_ >::finalize ( )
inlineoverridevirtual

Definition at line 165 of file Writer.h.

165  {
166  this->writeTree( m_file, *this );
167  return Consumer_t::finalize();
168  }

◆ initialize()

template<typename... OUTPUTs, typename... INPUTs, typename Traits_ >
virtual StatusCode Gaudi::NTuple::Writer< std::tuple< OUTPUTs... >(const INPUTs &...), Traits_ >::initialize ( )
inlineoverridevirtual

Definition at line 143 of file Writer.h.

143  {
144  return Consumer_t::initialize().andThen( [this]() {
145  m_file = std::make_unique<TFile>( m_filename.value().c_str(), "RECREATE" );
146  if ( !m_file || m_file->IsZombie() ) {
147  throw GaudiException(
148  fmt::format( "Failed to open file '{}'. Check file path and permissions.", m_filename.value() ),
149  this->name(), StatusCode::FAILURE );
150  }
151 
152  this->initTree( m_file, m_branchNames.value(), *this );
153 
154  return StatusCode::SUCCESS;
155  } );
156  }

◆ operator()()

template<typename... OUTPUTs, typename... INPUTs, typename Traits_ >
void Gaudi::NTuple::Writer< std::tuple< OUTPUTs... >(const INPUTs &...), Traits_ >::operator() ( const INPUTs &...  args) const
inlineoverride

Definition at line 159 of file Writer.h.

159  {
161  this->fillTree( args... );
162  }

Member Data Documentation

◆ m_branchNames

template<typename... OUTPUTs, typename... INPUTs, typename Traits_ >
Gaudi::Property<std::array<std::string, sizeof...( OUTPUTs )> > Gaudi::NTuple::Writer< std::tuple< OUTPUTs... >(const INPUTs &...), Traits_ >::m_branchNames
Initial value:
{
this, "BranchNames", {}, "Names of the tree branches." }

Definition at line 137 of file Writer.h.

◆ m_file

template<typename... OUTPUTs, typename... INPUTs, typename Traits_ >
std::unique_ptr<TFile> Gaudi::NTuple::Writer< std::tuple< OUTPUTs... >(const INPUTs &...), Traits_ >::m_file = nullptr

Definition at line 139 of file Writer.h.

◆ m_filename

template<typename... OUTPUTs, typename... INPUTs, typename Traits_ >
Gaudi::Property<std::string> Gaudi::NTuple::Writer< std::tuple< OUTPUTs... >(const INPUTs &...), Traits_ >::m_filename
Initial value:
{ this, "TreeFilename", "ntuple_writer_ts_tree.root",
"Filename for the TTree." }

Definition at line 135 of file Writer.h.

◆ m_mtx

template<typename... OUTPUTs, typename... INPUTs, typename Traits_ >
std::mutex Gaudi::NTuple::Writer< std::tuple< OUTPUTs... >(const INPUTs &...), Traits_ >::m_mtx
mutable

Definition at line 140 of file Writer.h.


The documentation for this struct was generated from the following file:
std::lock
T lock(T... args)
Gaudi::NTuple::Writer< std::tuple< OUTPUTs... >(const INPUTs &...), Traits_ >::m_filename
Gaudi::Property< std::string > m_filename
Definition: Writer.h:135
GaudiException
Definition: GaudiException.h:31
std::lock_guard
STL class.
Gaudi::NTuple::WriterMixin< std::tuple< OUTPUTs... >(const INPUTs &...)>::writeTree
void writeTree(const std::unique_ptr< TFile > &file, const Gaudi::Algorithm &algRef)
Definition: Writer.h:97
Gaudi::NTuple::WriterMixin< std::tuple< OUTPUTs... >(const INPUTs &...)>::initTree
void initTree(const std::unique_ptr< TFile > &file, const gsl::span< std::string, sizeof...(OUTPUTs)> branchNames, const Gaudi::Algorithm &algRef)
Definition: Writer.h:63
Gaudi::NTuple::Writer< std::tuple< OUTPUTs... >(const INPUTs &...), Traits_ >::m_branchNames
Gaudi::Property< std::array< std::string, sizeof...(OUTPUTs)> > m_branchNames
Definition: Writer.h:137
Gaudi::Property::value
const ValueType & value() const
Definition: Property.h:239
format
GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".
Definition: MsgStream.cpp:119
Gaudi::NTuple::Writer< std::tuple< OUTPUTs... >(const INPUTs &...), Traits_ >::m_mtx
std::mutex m_mtx
Definition: Writer.h:140
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:100
gaudirun.args
args
Definition: gaudirun.py:336
Gaudi::NTuple::Writer< std::tuple< OUTPUTs... >(const INPUTs &...), Traits_ >::m_file
std::unique_ptr< TFile > m_file
Definition: Writer.h:139
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:101
Gaudi::NTuple::WriterMixin< std::tuple< OUTPUTs... >(const INPUTs &...)>::fillTree
void fillTree(const INPUTs &... inputs) const
Definition: Writer.h:85