Loading [MathJax]/jax/output/HTML-CSS/config.js
hej is hosted by Hepforge, IPPP Durham
HEJ  2.3.0
High energy resummation for hadron colliders
BufferedEventReader.hh
Go to the documentation of this file.
1 
8 #pragma once
9 
10 #include <cstddef>
11 #include <memory>
12 #include <optional>
13 #include <stack>
14 #include <string>
15 #include <utility>
16 #include <vector>
17 
18 #include "LHEF/LHEF.h"
19 
20 #include "HEJ/EventReader.hh"
21 
22 namespace HEJ {
23 
25 
30  public:
31  explicit BufferedEventReader(std::unique_ptr<EventReader> reader):
32  reader_{std::move(reader)}
33  {}
34 
36  bool read_event() override;
37 
39  std::string const & header() const override {
40  return reader_->header();
41  }
42 
44  LHEF::HEPRUP const & heprup() const override {
45  return reader_->heprup();
46  }
47 
49  LHEF::HEPEUP const & hepeup() const override {
50  return cur_event_;
51  }
52 
54  std::optional<std::size_t> number_events() const override {
55  return reader_->number_events();
56  }
57 
59  template< class... T>
60  void emplace(T&&... args) {
61  buffer_.emplace(std::forward<T>(args)...);
62  }
63 
64  double scalefactor() const override {
65  return reader_->scalefactor();
66  }
67 
68  private:
69  std::stack<LHEF::HEPEUP, std::vector<LHEF::HEPEUP>> buffer_;
70  std::unique_ptr<EventReader> reader_;
71  LHEF::HEPEUP cur_event_;
72  };
73 } // namespace HEJ
Header file for event reader interface.
Event reader with internal buffer.
Definition: BufferedEventReader.hh:29
LHEF::HEPRUP const & heprup() const override
Access run information.
Definition: BufferedEventReader.hh:44
BufferedEventReader(std::unique_ptr< EventReader > reader)
Definition: BufferedEventReader.hh:31
void emplace(T &&... args)
Push event back into reader.
Definition: BufferedEventReader.hh:60
std::string const & header() const override
Access header text.
Definition: BufferedEventReader.hh:39
LHEF::HEPEUP const & hepeup() const override
Access last read event.
Definition: BufferedEventReader.hh:49
double scalefactor() const override
Definition: BufferedEventReader.hh:64
std::optional< std::size_t > number_events() const override
Guess number of events from header.
Definition: BufferedEventReader.hh:54
bool read_event() override
Read an event.
Main HEJ 2 Namespace.
Definition: mainpage.dox:1
Abstract base class for reading events from files.
Definition: EventReader.hh:25