Loading [MathJax]/extensions/tex2jax.js
hej is hosted by Hepforge, IPPP Durham
HEJ  2.3.0
High energy resummation for hadron colliders
EventSelector.hh
Go to the documentation of this file.
1 
9 #pragma once
10 
11 #include <algorithm>
12 #include <memory>
13 #include <vector>
14 
15 namespace HEJ {
16  class Event;
17 
19  struct EventSelector {
21  virtual bool accepts(Event const &) const = 0;
22 
24  virtual std::unique_ptr<EventSelector> clone() const = 0;
25 
26  virtual ~EventSelector() = default;
27  };
28 
30  class AndSelector: public EventSelector {
31  public:
32  AndSelector() = default;
33 
34  AndSelector(AndSelector&&) = default;
38  ~AndSelector() = default;
39 
40  explicit AndSelector(EventSelector const & selector);
41 
43  bool accepts(Event const & ev) const override;
44 
45  std::unique_ptr<EventSelector> clone() const override;
46 
48  template<class T>
49  void push(T&& t) {
50  selectors_.emplace_back(std::forward<T>(t));
51  }
52 
53  void operator&=(AndSelector const & rhs);
54  void operator&=(EventSelector const & rhs);
55 
56  private:
57  std::vector<std::unique_ptr<EventSelector>> selectors_;
58  };
59 
61  AndSelector lhs,
62  EventSelector const & rhs
63  );
65  AndSelector lhs,
66  AndSelector const & rhs
67  );
69  EventSelector const & lhs,
70  AndSelector const & rhs
71  );
73  EventSelector const & lhs,
74  EventSelector const & rhs
75  );
76 }
Class for selecting events accepted by all chosen selectors.
Definition: EventSelector.hh:30
AndSelector()=default
AndSelector & operator=(AndSelector &&)=default
bool accepts(Event const &ev) const override
Accept an Event if all selectors accept it.
void operator&=(EventSelector const &rhs)
void push(T &&t)
Add a selector.
Definition: EventSelector.hh:49
std::unique_ptr< EventSelector > clone() const override
Clone this selector.
void operator&=(AndSelector const &rhs)
AndSelector & operator=(AndSelector const &)
AndSelector(AndSelector const &)
~AndSelector()=default
AndSelector(EventSelector const &selector)
AndSelector(AndSelector &&)=default
An event with clustered jets.
Definition: Event.hh:51
@ t
Definition: PDG_codes.hh:38
Main HEJ 2 Namespace.
Definition: mainpage.dox:1
AndSelector operator&(AndSelector lhs, EventSelector const &rhs)
Abstract base class for selecting events.
Definition: EventSelector.hh:19
virtual std::unique_ptr< EventSelector > clone() const =0
Clone this selector.
virtual ~EventSelector()=default
virtual bool accepts(Event const &) const =0
Decide if an event is accepted.