Loading [MathJax]/extensions/tex2jax.js
hej is hosted by Hepforge, IPPP Durham
HEJ  2.3.0
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  private:
77  std::vector<fastjet::PseudoJet> cluster_jets(
78  std::vector<fastjet::PseudoJet> const & partons
79  ) const;
80  bool pass_resummation_cuts(
81  std::vector<fastjet::PseudoJet> const & jets
82  ) const;
83  bool pass_extremal_cuts(
84  fastjet::PseudoJet const & ext_parton,
85  fastjet::PseudoJet const & jet
86  ) const;
87  double estimate_emission_rapidity_range(Event const & event) const;
88  double estimate_ng_mean(Event const & event) const;
89  int sample_ng(Event const & event, RNG & ran);
90  int sample_ng_jets(Event const & event, int ng, RNG & ran);
91  double probability_in_jet(Event const & event) const;
92  std::vector<fastjet::PseudoJet> gen_non_jet(
93  int ng_non_jet, double ptmin, double ptmax, RNG & ran
94  );
95  void rescale_qqbar_rapidities(
96  std::vector<fastjet::PseudoJet> & out_partons,
97  std::vector<fastjet::PseudoJet> const & jets,
98  double ymin1, double ymax2,
99  int qqbar_backjet
100  );
101  void rescale_rapidities(
102  std::vector<fastjet::PseudoJet> & partons,
103  double ymin, double ymax
104  );
106  std::pair< std::vector<fastjet::PseudoJet>,
107  std::vector<fastjet::PseudoJet> >
108  reshuffle(
109  Event const & ev,
110  fastjet::PseudoJet const & q
111  );
119  bool jets_ok(
120  Event const & Born_event,
121  std::vector<fastjet::PseudoJet> const & partons
122  ) const;
123  void reconstruct_incoming(std::array<Particle, 2> const & Born_incoming);
131  std::vector<fastjet::PseudoJet> split(
132  Event const & Born_event,
133  std::vector<fastjet::PseudoJet> const & jets,
134  int ng_jets,
135  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  Event const & Born_event,
142  std::vector<fastjet::PseudoJet> const & jets,
143  std::vector<int> const & np_in_jet,
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  Event const & Born_event,
164  std::vector<fastjet::PseudoJet> const & partons
165  ) const;
172  void label_quarks(Event const & event);
177  void label_qqbar(Event const & event);
178  void boost_AWZH_bosons_from(
179  std::vector<fastjet::PseudoJet> const & boosted_bosons,
180  Event const & event
181  );
182 
183  bool momentum_conserved() const;
184 
185  bool contains_idx(
186  fastjet::PseudoJet const & jet, fastjet::PseudoJet const & parton
187  ) const;
188 
190  bool unob_, unof_, qqbarb_, qqbarf_, qqbar_mid_;
191 
192  double weight_;
193 
194  PhaseSpacePointConfig param_;
195 
196  std::array<Particle, 2> incoming_;
197  std::vector<Particle> outgoing_;
199  std::unordered_map<std::size_t, std::vector<Particle>> decays_;
200 
201  StatusCode status_;
202  };
203 
206 
207 } // 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:302
An event with clustered jets.
Definition: Event.hh:51
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
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
Class representing a particle.
Definition: Particle.hh:25
Configuration options for the PhaseSpacePoint class.
Definition: Config.hh:151
Interface for random number generator.
Definition: RNG.hh:22