HepMC3 event record library
ReaderHEPEVT.h
Go to the documentation of this file.
1// -*- C++ -*-
2//
3// This file is part of HepMC
4// Copyright (C) 2014-2021 The HepMC collaboration (see AUTHORS for details)
5//
6#ifndef HEPMC3_READERHEPEVT_H
7#define HEPMC3_READERHEPEVT_H
8/**
9 * @file ReaderHEPEVT.h
10 * @brief Definition of \b class ReaderHEPEVT
11 *
12 * @class HepMC3::ReaderHEPEVT
13 * @brief GenEvent I/O parsing and serialization for HEPEVT files
14 *
15 *
16 * @ingroup IO
17 *
18 */
19#include <set>
20#include <string>
21#include <fstream>
22#include <istream>
23#include "HepMC3/Reader.h"
24#include "HepMC3/GenEvent.h"
25#include "HepMC3/GenRunInfo.h"
28
29namespace HepMC3
30{
31
32class ReaderHEPEVT : public Reader
33{
34//
35// Constructors
36//
37public:
38 /** @brief Default constructor */
39 ReaderHEPEVT(const std::string &filename);
40 /// The ctor to read from stream
41 ReaderHEPEVT(std::istream &);
42 /// The ctor to read from temp stream
43 ReaderHEPEVT(std::shared_ptr<std::istream> s_stream);
44//
45// Functions
46//
47public:
48 /** @brief Find and read event header line from file
49 *
50 */
51 virtual bool read_hepevt_event_header();
52 /** @brief read particle from file
53 *
54 * @param[in] i Particle id
55 */
56 virtual bool read_hepevt_particle(int i);
57
58 /// @brief skip events
59 bool skip(const int) override;
60
61
62 /** @brief Read event from file*/
63 bool read_event(GenEvent &evt) override;
64
65
66 /** @brief Close file stream */
67 void close() override;
68
69 /** @brief Get stream error state */
70 bool failed() override;
71
72 char* hepevtbuffer; //!< Pointer to HEPEVT Fortran common block/C struct
73private:
74 std::ifstream m_file; //!< Input file
75 std::shared_ptr<std::istream> m_shared_stream; //!< For ctor when reading from temp stream
76 std::istream* m_stream; //!< For ctor when reading from stream
77 bool m_isstream; //!< toggles usage of m_file or m_stream
78 HEPEVT_Wrapper_Template<100000> m_hepevt_interface; //!< Templated HEPEVT interface
79};
80
81} // namespace HepMC3
82
83#endif
Definition of struct GenEventData.
Definition of class GenEvent.
Definition of class GenRunInfo.
Definition of class HEPEVT_Wrapper_Template.
Definition of interface Reader.
Stores event-related information.
Definition: GenEvent.h:41
An interface to HEPEVT common block implemented as template class.
GenEvent I/O parsing and serialization for HEPEVT files.
Definition: ReaderHEPEVT.h:33
bool m_isstream
toggles usage of m_file or m_stream
Definition: ReaderHEPEVT.h:77
bool read_event(GenEvent &evt) override
Read event from file.
HEPEVT_Wrapper_Template< 100000 > m_hepevt_interface
Templated HEPEVT interface.
Definition: ReaderHEPEVT.h:78
bool failed() override
Get stream error state.
bool skip(const int) override
skip events
Definition: ReaderHEPEVT.cc:58
std::ifstream m_file
Input file.
Definition: ReaderHEPEVT.h:74
virtual bool read_hepevt_particle(int i)
read particle from file
virtual bool read_hepevt_event_header()
Find and read event header line from file.
Definition: ReaderHEPEVT.cc:76
void close() override
Close file stream.
char * hepevtbuffer
Pointer to HEPEVT Fortran common block/C struct.
Definition: ReaderHEPEVT.h:72
std::istream * m_stream
For ctor when reading from stream.
Definition: ReaderHEPEVT.h:76
std::shared_ptr< std::istream > m_shared_stream
For ctor when reading from temp stream.
Definition: ReaderHEPEVT.h:75
Base class for all I/O readers.
Definition: Reader.h:25
HepMC3 main namespace.