/usr/include/HepMC/IO_AsciiParticles.h is in libhepmc-dev 2.06.09-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | //--------------------------------------------------------------------------
#ifndef HEPMC_IO_ASCIIPARTICLES_H
#define HEPMC_IO_ASCIIPARTICLES_H
//////////////////////////////////////////////////////////////////////////
// Mikhail.Kirsanov@Cern.CH, 2006
// event input/output in ascii format for eye and machine reading
//////////////////////////////////////////////////////////////////////////
//
// Strategy for reading or writing events as machine readable
// ascii to a file. When instantiating, the mode of file to be created
// must be specified. Options are:
// std::ios::in open file for input
// std::ios::out open file for output
// std::ios::trunc erase old file when opening (i.e. ios::out|ios::trunc
// removes oldfile, and creates a new one for output )
// std::ios::app append output to end of file
// for the purposes of this class, simultaneous input and output mode
// ( std::ios::in | std::ios::out ) is not allowed.
//
// Event listings are preceded by the key:
// "HepMC::IO_AsciiParticles-START_EVENT_LISTING\n"
// and terminated by the key:
// "HepMC::IO_AsciiParticles-END_EVENT_LISTING\n"
// Comments are allowed. They need not be preceded by anything, though if
// a comment is written using write_comment( const string ) then it will be
// preceded by "HepMC::IO_AsciiParticles-COMMENT\n"
// Each event, vertex, particle, particle data is preceded by
// "E ","V ","P ","D " respectively.
// Comments may appear anywhere in the file -- so long as they do not contain
// any of the 4 start/stop keys.
//
#include <fstream>
#include <string>
#include <map>
#include <vector>
#include "HepMC/IO_BaseClass.h"
namespace HepMC {
class GenEvent;
class GenVertex;
class GenParticle;
//! event input/output in ascii format for eye and machine reading
///
/// \class IO_AsciiParticles
/// Strategy for reading or writing events as machine readable
/// ascii to a file. When instantiating, the mode of file to be created
/// must be specified.
///
class IO_AsciiParticles : public IO_BaseClass {
public:
/// constructor requiring a file name and std::ios mode
IO_AsciiParticles( const char* filename="IO_AsciiParticles.dat",
std::ios::openmode mode=std::ios::out );
virtual ~IO_AsciiParticles();
/// write this event
void write_event( const GenEvent* evt );
/// get the next event
bool fill_next_event( GenEvent* evt );
/// insert a comment directly into the output file --- normally you
/// only want to do this at the beginning or end of the file. All
/// comments are preceded with "HepMC::IO_AsciiParticles-COMMENT\n"
void write_comment( const std::string comment );
/// set output precision
void setPrecision(int iprec);
int rdstate() const; //!< check the state of the IO stream
void clear(); //!< clear the IO stream
/// write to ostr
void print( std::ostream& ostr = std::cout ) const;
protected: // for internal use only
/// write end tag
bool write_end_listing();
private: // use of copy constructor is not allowed
IO_AsciiParticles( const IO_AsciiParticles& ) : IO_BaseClass() {}
private: // data members
int m_precision;
std::ios::openmode m_mode;
std::fstream* m_file;
std::ostream* m_outstream;
bool m_finished_first_event_io;
};
//////////////
// Inlines //
//////////////
inline int IO_AsciiParticles::rdstate() const { return (int)m_file->rdstate(); }
inline void IO_AsciiParticles::clear() { m_file->clear(); }
inline void IO_AsciiParticles::setPrecision(int iprec) { m_precision=iprec; }
} // HepMC
#endif // HEPMC_IO_ASCIIPARTICLES_H
//--------------------------------------------------------------------------
|