HepMC3 event record library
|
GenEvent I/O serialization for structured text files.
Definition at line 25 of file WriterAscii.h.
#include <WriterAscii.h>
Public Member Functions | |
WriterAscii (const std::string &filename, std::shared_ptr< GenRunInfo > run=std::shared_ptr< GenRunInfo >()) | |
Constructor. More... | |
WriterAscii (std::ostream &stream, std::shared_ptr< GenRunInfo > run=std::shared_ptr< GenRunInfo >()) | |
Constructor from ostream. More... | |
~WriterAscii () | |
Destructor. More... | |
void | write_event (const GenEvent &evt) override |
Write event to file. More... | |
void | write_run_info () |
Write the GenRunInfo object to file. More... | |
bool | failed () override |
Return status of the stream. More... | |
void | close () override |
Close file stream. More... | |
void | set_precision (const int &prec) |
Set output precision. More... | |
int | precision () const |
Return output precision. More... | |
void | set_run_info (std::shared_ptr< GenRunInfo > run) |
Set the global GenRunInfo object. More... | |
std::shared_ptr< GenRunInfo > | run_info () const |
Get the global GenRunInfo object. More... | |
void | set_options (const std::map< std::string, std::string > &options) |
Set options. More... | |
std::map< std::string, std::string > | get_options () const |
Set options. More... | |
Protected Attributes | |
std::map< std::string, std::string > | m_options |
options More... | |
Private Member Functions | |
Buffer management | |
void | allocate_buffer () |
Attempts to allocate buffer of the chosen size. More... | |
void | set_buffer_size (const size_t &size) |
Set buffer size (in bytes) More... | |
std::string | escape (const std::string &s) const |
Escape '\' and ' ' characters in string. More... | |
void | flush () |
Inline function flushing buffer to output stream when close to buffer capacity. More... | |
void | forced_flush () |
Inline function forcing flush to the output stream. More... | |
Private Attributes | |
std::shared_ptr< GenRunInfo > | m_run_info |
The global GenRunInfo object. More... | |
Write helpers | |
std::ofstream | m_file |
Output file. More... | |
std::ostream * | m_stream |
Output stream. More... | |
int | m_precision |
Output precision. More... | |
char * | m_buffer |
Stream buffer. More... | |
char * | m_cursor |
Cursor inside stream buffer. More... | |
unsigned long | m_buffer_size |
Buffer size. More... | |
std::string | m_float_printf_specifier |
the specifier of printf used for floats More... | |
std::string | m_particle_printf_specifier |
the specifier of printf used for floats More... | |
std::string | m_vertex_short_printf_specifier |
the specifier of printf used for zero vertices More... | |
std::string | m_vertex_long_printf_specifier |
the specifier of printf used for vertices More... | |
void | write_string (const std::string &str) |
Inline function for writing strings. More... | |
void | write_vertex (ConstGenVertexPtr v) |
Write vertex. More... | |
void | write_particle (ConstGenParticlePtr p, int second_field) |
Write particle. More... | |
WriterAscii | ( | const std::string & | filename, |
std::shared_ptr< GenRunInfo > | run = std::shared_ptr<GenRunInfo>() |
||
) |
Constructor.
Definition at line 24 of file WriterAscii.cc.
References HEPMC3_ERROR, WriterAscii::m_file, WriterAscii::m_float_printf_specifier, WriterAscii::m_particle_printf_specifier, WriterAscii::m_precision, WriterAscii::m_vertex_long_printf_specifier, WriterAscii::m_vertex_short_printf_specifier, Writer::run_info(), Writer::set_run_info(), HepMC3::version(), and WriterAscii::write_run_info().
WriterAscii | ( | std::ostream & | stream, |
std::shared_ptr< GenRunInfo > | run = std::shared_ptr<GenRunInfo>() |
||
) |
Constructor from ostream.
Definition at line 52 of file WriterAscii.cc.
References WriterAscii::m_float_printf_specifier, WriterAscii::m_particle_printf_specifier, WriterAscii::m_precision, WriterAscii::m_vertex_long_printf_specifier, WriterAscii::m_vertex_short_printf_specifier, Writer::run_info(), Writer::set_run_info(), HepMC3::version(), and WriterAscii::write_run_info().
~WriterAscii | ( | ) |
Destructor.
Definition at line 76 of file WriterAscii.cc.
References WriterAscii::close(), and WriterAscii::m_buffer.
|
private |
Attempts to allocate buffer of the chosen size.
This function can be called manually by the user or will be called before first read/write operation
Definition at line 195 of file WriterAscii.cc.
References HEPMC3_ERROR, HEPMC3_WARNING, WriterAscii::m_buffer, WriterAscii::m_buffer_size, and WriterAscii::m_cursor.
|
overridevirtual |
Close file stream.
Implements Writer.
Definition at line 338 of file WriterAscii.cc.
References WriterAscii::forced_flush(), and WriterAscii::m_stream.
|
private |
Escape '\' and '
' characters in string.
Definition at line 215 of file WriterAscii.cc.
|
overridevirtual |
Return status of the stream.
Implements Writer.
Definition at line 345 of file WriterAscii.cc.
References WriterAscii::m_file.
|
inlineprivate |
Inline function flushing buffer to output stream when close to buffer capacity.
Definition at line 253 of file WriterAscii.cc.
References WriterAscii::m_buffer, WriterAscii::m_buffer_size, WriterAscii::m_cursor, and WriterAscii::m_stream.
|
inlineprivate |
Inline function forcing flush to the output stream.
Definition at line 265 of file WriterAscii.cc.
References WriterAscii::m_buffer, WriterAscii::m_cursor, and WriterAscii::m_stream.
|
inlineinherited |
int precision | ( | ) | const |
Return output precision.
Definition at line 352 of file WriterAscii.cc.
References WriterAscii::m_precision.
|
inlineinherited |
Get the global GenRunInfo object.
Definition at line 47 of file Writer.h.
References Writer::m_run_info.
|
private |
Set buffer size (in bytes)
Default is 256kb. Minimum is 256b. Size can only be changed before first read/write operation.
Definition at line 356 of file WriterAscii.cc.
References WriterAscii::m_buffer, and WriterAscii::m_buffer_size.
|
inlineinherited |
void set_precision | ( | const int & | prec | ) |
Set output precision.
So far available range is [2,24]. Default is 16.
Definition at line 347 of file WriterAscii.cc.
References WriterAscii::m_precision.
|
inlineinherited |
Set the global GenRunInfo object.
Definition at line 42 of file Writer.h.
References Writer::m_run_info.
|
overridevirtual |
Write event to file.
[in] | evt | Event to be serialized |
Implements Writer.
Definition at line 82 of file WriterAscii.cc.
References WriterAscii::allocate_buffer(), GenEvent::attributes(), WriterAscii::escape(), GenEvent::event_number(), GenEvent::event_pos(), WriterAscii::flush(), WriterAscii::forced_flush(), HEPMC3_WARNING, FourVector::is_zero(), GenEvent::length_unit(), WriterAscii::m_buffer, WriterAscii::m_cursor, WriterAscii::m_float_printf_specifier, Writer::m_options, WriterAscii::m_particle_printf_specifier, WriterAscii::m_precision, WriterAscii::m_vertex_long_printf_specifier, WriterAscii::m_vertex_short_printf_specifier, GenEvent::momentum_unit(), Units::name(), GenEvent::particles(), GenEvent::run_info(), Writer::run_info(), Writer::set_run_info(), FourVector::t(), GenEvent::vertices(), GenEvent::weights(), WriterAscii::write_particle(), WriterAscii::write_run_info(), WriterAscii::write_string(), WriterAscii::write_vertex(), FourVector::x(), FourVector::y(), and FourVector::z().
|
private |
Write particle.
Helper routine for writing single particle to file
Definition at line 316 of file WriterAscii.cc.
References WriterAscii::flush(), WriterAscii::m_cursor, and WriterAscii::m_particle_printf_specifier.
void write_run_info | ( | ) |
Write the GenRunInfo object to file.
Definition at line 272 of file WriterAscii.cc.
References WriterAscii::allocate_buffer(), WriterAscii::escape(), WriterAscii::flush(), HEPMC3_WARNING, WriterAscii::m_cursor, Writer::run_info(), Writer::set_run_info(), and WriterAscii::write_string().
|
inlineprivate |
Inline function for writing strings.
Since strings can be long (maybe even longer than buffer) they have to be dealt with separately.
Definition at line 323 of file WriterAscii.cc.
References WriterAscii::flush(), WriterAscii::forced_flush(), WriterAscii::m_buffer, WriterAscii::m_buffer_size, WriterAscii::m_cursor, and WriterAscii::m_stream.
|
private |
Write vertex.
Helper routine for writing single vertex to file
Definition at line 233 of file WriterAscii.cc.
References WriterAscii::flush(), FourVector::is_zero(), WriterAscii::m_cursor, WriterAscii::m_vertex_long_printf_specifier, WriterAscii::m_vertex_short_printf_specifier, FourVector::t(), FourVector::x(), FourVector::y(), and FourVector::z().
|
private |
Stream buffer.
Definition at line 119 of file WriterAscii.h.
|
private |
Buffer size.
Definition at line 121 of file WriterAscii.h.
|
private |
Cursor inside stream buffer.
Definition at line 120 of file WriterAscii.h.
|
private |
Output file.
Definition at line 115 of file WriterAscii.h.
|
private |
the specifier of printf used for floats
Definition at line 122 of file WriterAscii.h.
|
protectedinherited |
|
private |
the specifier of printf used for floats
Definition at line 123 of file WriterAscii.h.
|
private |
Output precision.
Definition at line 118 of file WriterAscii.h.
|
privateinherited |
The global GenRunInfo object.
|
private |
Output stream.
Definition at line 116 of file WriterAscii.h.
|
private |
the specifier of printf used for vertices
Definition at line 125 of file WriterAscii.h.
|
private |
the specifier of printf used for zero vertices
Definition at line 124 of file WriterAscii.h.