hej is hosted by Hepforge, IPPP Durham
HEJ  2.1.4
High energy resummation for hadron colliders
PhaseSpacePoint.hh
Go to the documentation of this file.
1 
8 #pragma once
9 
10 #include <array>
11 #include <cstddef>
12 #include <unordered_map>
13 #include <utility>
14 #include <vector>
15 
16 #include "fastjet/PseudoJet.hh"
17 
18 #include "HEJ/Config.hh"
19 #include "HEJ/Event.hh"
20 #include "HEJ/Particle.hh"
21 #include "HEJ/StatusCode.hh"
22 
23 namespace HEJ {
24  struct RNG;
25 
28  public:
30  PhaseSpacePoint() = delete;
31 
33 
39  Event const & ev,
41  RNG & ran
42  );
43 
45  double weight() const{
46  return weight_;
47  }
48 
50  std::array<Particle, 2> const & incoming() const{
51  return incoming_;
52  }
53 
55  std::vector<Particle> const & outgoing() const{
56  return outgoing_;
57  }
58 
60 
64  std::unordered_map<std::size_t, std::vector<Particle>> const & decays()
65  const{
66  return decays_;
67  }
68 
70  StatusCode status() const{
71  return status_;
72  }
73 
74  static constexpr int NG_MAX = 1000;
75 
76  private:
79  std::vector<fastjet::PseudoJet> cluster_jets(
80  std::vector<fastjet::PseudoJet> const & partons
81  ) const;
82  bool pass_resummation_cuts(
83  std::vector<fastjet::PseudoJet> const & jets
84  ) const;
85  bool pass_extremal_cuts(
86  fastjet::PseudoJet const & ext_parton,
87  fastjet::PseudoJet const & jet
88  ) const;
89  double estimate_emission_rapidity_range(Event const & event) const;
90  double estimate_ng_mean(Event const & event) const;
91  int sample_ng(Event const & event, RNG & ran);
92  int sample_ng_jets(Event const & event, int ng, RNG & ran);
93  double probability_in_jet(Event const & event) const;
94  std::vector<fastjet::PseudoJet> gen_non_jet(
95  int ng_non_jet, double ptmin, double ptmax, RNG & ran
96  );
97  void rescale_qqbar_rapidities(
98  std::vector<fastjet::PseudoJet> & out_partons,
99  std::vector<fastjet::PseudoJet> const & jets,
100  double ymin1, double ymax2,
101  int qqbar_backjet
102  );
103  void rescale_rapidities(
104  std::vector<fastjet::PseudoJet> & partons,
105  double ymin, double ymax
106  );
108  std::pair< std::vector<fastjet::PseudoJet>,
110  reshuffle(
111  Event const & ev,
112  fastjet::PseudoJet const & q
113  );
121  bool jets_ok(
122  std::vector<fastjet::PseudoJet> const & Born_jets,
123  std::vector<fastjet::PseudoJet> const & partons
124  ) const;
125  void reconstruct_incoming(std::array<Particle, 2> const & Born_incoming);
133  std::vector<fastjet::PseudoJet> split(
134  std::vector<fastjet::PseudoJet> const & jets,
135  int ng_jets, std::size_t qqbar_backjet, RNG & ran
136  );
137  std::vector<int> distribute_jet_partons(
138  int ng_jets, std::vector<fastjet::PseudoJet> const & jets, RNG & ran
139  );
140  std::vector<fastjet::PseudoJet> split(
141  std::vector<fastjet::PseudoJet> const & jets,
142  std::vector<int> const & np_in_jet,
143  std::size_t qqbar_backjet,
144  RNG & ran
145  );
146  bool split_preserved_jets(
147  std::vector<fastjet::PseudoJet> const & jets,
148  std::vector<fastjet::PseudoJet> const & jet_partons
149  ) const;
150  template<class Particle>
151  Particle const & most_backward_FKL(
152  std::vector<Particle> const & partons
153  ) const;
154  template<class Particle>
155  Particle const & most_forward_FKL(
156  std::vector<Particle> const & partons
157  ) const;
158  template<class Particle>
159  Particle & most_backward_FKL(std::vector<Particle> & partons) const;
160  template<class Particle>
161  Particle & most_forward_FKL(std::vector<Particle> & partons) const;
162  bool extremal_ok(
163  std::vector<fastjet::PseudoJet> const & partons
164  ) const;
171  void label_quarks(Event const & event);
176  void label_qqbar(Event const & event);
177  void boost_AWZH_boson_from(
178  fastjet::PseudoJet const & boosted_boson, Event const & event
179  );
180 
181  bool momentum_conserved() const;
182 
183  bool contains_idx(
184  fastjet::PseudoJet const & jet, fastjet::PseudoJet const & parton
185  ) const;
186 
188  bool unob_, unof_, qqbarb_, qqbarf_, qqbar_mid_;
189 
190  double weight_;
191 
192  PhaseSpacePointConfig param_;
193 
194  std::array<Particle, 2> incoming_;
195  std::vector<Particle> outgoing_;
197  std::unordered_map<std::size_t, std::vector<Particle>> decays_;
198 
199  StatusCode status_;
200  };
201 
204 
205 } // namespace HEJ
HEJ 2 configuration parameters.
Declares the Event class and helpers.
Contains the particle struct.
Header file for status codes of event generation.
Class to store general Event setup, i.e. Phase space and weights.
Definition: Event.hh:286
An event with clustered jets.
Definition: Event.hh:47
Generated point in resummation phase space.
Definition: PhaseSpacePoint.hh:27
StatusCode status() const
Status code of generation.
Definition: PhaseSpacePoint.hh:70
std::array< Particle, 2 > const & incoming() const
Access incoming particles.
Definition: PhaseSpacePoint.hh:50
PhaseSpacePoint()=delete
No default PhaseSpacePoint Constructor.
double weight() const
Get phase space point weight.
Definition: PhaseSpacePoint.hh:45
std::vector< Particle > const & outgoing() const
Access outgoing particles.
Definition: PhaseSpacePoint.hh:55
PhaseSpacePoint(Event const &ev, PhaseSpacePointConfig conf, RNG &ran)
PhaseSpacePoint Constructor.
friend Event::EventData to_EventData(PhaseSpacePoint psp)
Extract Event::EventData from PhaseSpacePoint.
std::unordered_map< std::size_t, std::vector< Particle > > const & decays() const
Particle decays.
Definition: PhaseSpacePoint.hh:64
static constexpr int NG_MAX
maximum number of extra gluons
Definition: PhaseSpacePoint.hh:74
Main HEJ 2 Namespace.
Definition: mainpage.dox:1
Event::EventData to_EventData(PhaseSpacePoint psp)
Extract Event::EventData from PhaseSpacePoint.
StatusCode
Possible status codes from the event generation.
Definition: StatusCode.hh:16
boost::optional< T > optional
Definition: optional.hh:23
Class representing a particle.
Definition: Particle.hh:24
Configuration options for the PhaseSpacePoint class.
Definition: Config.hh:145
Interface for random number generator.
Definition: RNG.hh:19