Warning, file /include/HepMC3/WriterAsciiHepMC2.h was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006 #ifndef HEPMC3_WRITERASCIIHEPMC2_H
0007 #define HEPMC3_WRITERASCIIHEPMC2_H
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #include "HepMC3/Writer.h"
0018 #include "HepMC3/GenEvent.h"
0019 #include "HepMC3/GenRunInfo.h"
0020 #include <string>
0021 #include <fstream>
0022
0023 namespace HepMC3
0024 {
0025
0026 class WriterAsciiHepMC2 : public Writer
0027 {
0028 public:
0029
0030
0031
0032 WriterAsciiHepMC2(const std::string& filename,
0033 std::shared_ptr<GenRunInfo> run = std::shared_ptr<GenRunInfo>());
0034
0035
0036 WriterAsciiHepMC2(std::ostream& stream,
0037 std::shared_ptr<GenRunInfo> run = std::shared_ptr<GenRunInfo>());
0038
0039 WriterAsciiHepMC2(std::shared_ptr<std::ostream> s_stream,
0040 std::shared_ptr<GenRunInfo> run = std::shared_ptr<GenRunInfo>());
0041
0042
0043 ~WriterAsciiHepMC2();
0044
0045
0046
0047
0048 void write_event(const GenEvent& evt) override;
0049
0050
0051 void write_run_info();
0052
0053
0054 bool failed() override;
0055
0056
0057 void close() override;
0058
0059
0060
0061
0062 void set_precision( const int& prec );
0063
0064
0065 int precision() const;
0066 private:
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078 void allocate_buffer();
0079
0080
0081
0082
0083
0084 void set_buffer_size(const size_t& size );
0085
0086
0087 static std::string escape(const std::string& s);
0088
0089
0090 void flush();
0091
0092
0093 void forced_flush();
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105 void write_string(const std::string &str );
0106
0107
0108
0109
0110 void write_vertex(const ConstGenVertexPtr& v);
0111
0112
0113
0114
0115 void write_particle(const ConstGenParticlePtr& p, int second_field);
0116
0117
0118
0119 private:
0120
0121 std::ofstream m_file;
0122 std::shared_ptr<std::ostream> m_shared_stream;
0123 std::ostream* m_stream;
0124 int m_precision = 16;
0125 char* m_buffer = nullptr;
0126 char* m_cursor = nullptr;
0127 unsigned long m_buffer_size = 262144;
0128 unsigned long m_particle_counter = 0;
0129 std::string m_float_printf_specifier;
0130 };
0131
0132
0133 }
0134
0135 #endif