hej
is hosted by
Hepforge
,
IPPP Durham
HEJ
2.2.2
High energy resummation for hadron colliders
Loading...
Searching...
No Matches
include
HEJ
Particle.hh
Go to the documentation of this file.
1
9
#pragma once
10
11
#include <optional>
12
#include <utility>
13
#include <vector>
14
15
#include "boost/rational.hpp"
16
#include "fastjet/PseudoJet.hh"
17
18
#include "
HEJ/PDG_codes.hh
"
19
20
namespace
HEJ
{
21
22
using
Colour
= std::pair<int,int>;
23
25
struct
Particle
{
27
ParticleID
type
=
pid::unspecified
;
29
fastjet::PseudoJet
p
;
31
std::optional<Colour>
colour
;
32
34
double
rapidity
()
const
{
35
return
p
.rapidity();
36
}
38
double
perp
()
const
{
39
return
p
.perp();
40
}
42
double
pt
()
const
{
43
return
perp
();
44
}
46
double
px
()
const
{
47
return
p
.px();
48
}
50
double
py
()
const
{
51
return
p
.py();
52
}
54
double
pz
()
const
{
55
return
p
.pz();
56
}
58
double
E
()
const
{
59
return
p
.E();
60
}
62
double
m
()
const
{
63
return
p
.m();
64
}
65
};
66
68
74
struct
rapidity_less
{
75
template
<
class
FourVector>
76
bool
operator()
(FourVector
const
& p1, FourVector
const
& p2){
77
return
p1.rapidity() < p2.rapidity();
78
}
79
};
80
82
88
struct
pz_less
{
89
template
<
class
FourVector>
90
bool
operator()
(FourVector
const
& p1, FourVector
const
& p2){
91
return
p1.pz() < p2.pz();
92
}
93
};
94
96
inline
97
std::vector<fastjet::PseudoJet>
to_PseudoJet
(
98
std::vector<Particle>
const
& v
99
){
100
std::vector<fastjet::PseudoJet> result;
101
result.reserve(v.size());
102
for
(
auto
&& sp: v) result.emplace_back(sp.p);
103
return
result;
104
}
105
107
111
struct
type_less
{
112
template
<
class
Particle>
113
bool
operator()
(
Particle
const
& p1,
Particle
const
& p2){
114
return
p1.
type
< p2.
type
;
115
}
116
};
117
119
inline
120
constexpr
bool
is_antiparticle
(
Particle
const
& p){
121
return
is_antiparticle
(p.type);
122
}
123
125
inline
126
constexpr
bool
is_parton
(
Particle
const
& p){
127
return
is_parton
(p.type);
128
}
129
131
inline
132
constexpr
bool
is_quark
(
Particle
const
& p){
133
return
is_quark
(p.type);
134
}
135
137
inline
138
constexpr
bool
is_antiquark
(
Particle
const
& p){
139
return
is_antiquark
(p.type);
140
}
141
143
inline
144
constexpr
bool
is_anyquark
(
Particle
const
& p){
145
return
is_anyquark
(p.type);
146
}
147
153
inline
154
constexpr
bool
is_lepton
(
Particle
const
& p){
155
return
is_lepton
(p.type);
156
}
157
163
inline
164
constexpr
bool
is_antilepton
(
Particle
const
& p){
165
return
is_antilepton
(p.type);
166
}
167
173
inline
174
constexpr
bool
is_anylepton
(
Particle
const
& p){
175
return
is_anylepton
(p.type);
176
}
177
183
inline
184
constexpr
bool
is_neutrino
(
Particle
const
& p){
185
return
is_neutrino
(p.type);
186
}
187
193
inline
194
constexpr
bool
is_antineutrino
(
Particle
const
& p){
195
return
is_antineutrino
(p.type);
196
}
197
203
inline
204
constexpr
bool
is_anyneutrino
(
Particle
const
& p){
205
return
is_anyneutrino
(p.type);
206
}
207
209
inline
210
constexpr
bool
is_massless
(
Particle
const
& p){
211
return
is_massless
(p.type);
212
}
213
215
inline
216
constexpr
bool
is_massive
(
Particle
const
& p){
217
return
is_massive
(p.type);
218
}
219
225
inline
226
constexpr
bool
is_charged_lepton
(
Particle
const
& p){
227
return
is_charged_lepton
(p.type);
228
}
229
235
inline
236
constexpr
bool
is_charged_antilepton
(
Particle
const
& p){
237
return
is_charged_antilepton
(p.type);
238
}
239
245
inline
246
constexpr
bool
is_charged_anylepton
(
Particle
const
& p){
247
return
is_charged_anylepton
(p.type);
248
}
249
251
inline
252
constexpr
bool
is_AWZ_boson
(
Particle
const
& particle){
253
return
is_AWZ_boson
(particle.
type
);
254
}
255
257
inline
258
constexpr
bool
is_AWZH_boson
(
Particle
const
& particle){
259
return
is_AWZH_boson
(particle.
type
);
260
}
261
263
inline
264
std::vector<Particle>
filter_partons
(
265
std::vector<Particle>
const
& v
266
){
267
std::vector<Particle> result;
268
result.reserve(v.size());
269
std::copy_if(
270
begin(v), end(v), std::back_inserter(result),
271
[](
Particle
const
& p){
return
is_parton
(p); }
272
);
273
return
result;
274
}
275
277
inline
278
std::vector<Particle>
filter_AWZH_bosons
(
279
std::vector<Particle>
const
& v
280
){
281
std::vector<Particle> result;
282
std::copy_if(
283
begin(v), end(v), std::back_inserter(result),
284
[](
Particle
const
& p){
return
is_AWZH_boson
(p); }
285
);
286
return
result;
287
}
288
290
boost::rational<int>
charge
(
Particle
const
& p);
291
292
}
// namespace HEJ
PDG_codes.hh
Contains the Particle IDs of all relevant SM particles.
HEJ::pid::ParticleID
ParticleID
The possible particle identities. We use PDG IDs as standard.
Definition:
PDG_codes.hh:25
HEJ::pid::unspecified
@ unspecified
Unspecified type, should never be used!, debug only.
Definition:
PDG_codes.hh:27
HEJ
Main HEJ 2 Namespace.
Definition:
mainpage.dox:1
HEJ::is_antiparticle
constexpr bool is_antiparticle(Particle const &p)
Check if the argument is an antiparticle.
Definition:
Particle.hh:120
HEJ::is_antineutrino
constexpr bool is_antineutrino(Particle const &p)
Function to determine if particle is an antineutrino.
Definition:
Particle.hh:194
HEJ::is_parton
constexpr bool is_parton(Particle const &p)
Check if a particle is a parton, i.e. quark, antiquark, or gluon.
Definition:
Particle.hh:126
HEJ::is_antiquark
constexpr bool is_antiquark(Particle const &p)
Check if a particle is an anti-quark.
Definition:
Particle.hh:138
HEJ::Colour
std::pair< int, int > Colour
Definition:
Particle.hh:22
HEJ::filter_partons
std::vector< Particle > filter_partons(std::vector< Particle > const &v)
Extract all partons from a vector of particles.
Definition:
Particle.hh:264
HEJ::is_lepton
constexpr bool is_lepton(Particle const &p)
Function to determine if particle is a lepton.
Definition:
Particle.hh:154
HEJ::is_quark
constexpr bool is_quark(Particle const &p)
Check if a particle is a quark.
Definition:
Particle.hh:132
HEJ::filter_AWZH_bosons
std::vector< Particle > filter_AWZH_bosons(std::vector< Particle > const &v)
Extract all AWZH bosons from a vector of particles.
Definition:
Particle.hh:278
HEJ::is_anylepton
constexpr bool is_anylepton(Particle const &p)
Function to determine if particle is an (anti-)lepton.
Definition:
Particle.hh:174
HEJ::to_PseudoJet
fastjet::PseudoJet to_PseudoJet(CLHEP::HepLorentzVector const &mom)
Definition:
LorentzVector.hh:88
HEJ::is_anyneutrino
constexpr bool is_anyneutrino(Particle const &p)
Function to determine if particle is an (anti-)neutrino.
Definition:
Particle.hh:204
HEJ::is_charged_antilepton
constexpr bool is_charged_antilepton(Particle const &p)
Function to determine if particle is a charged lepton.
Definition:
Particle.hh:236
HEJ::is_AWZH_boson
constexpr bool is_AWZH_boson(Particle const &particle)
Check if a particle is a photon, W, Z, or Higgs boson.
Definition:
Particle.hh:258
HEJ::is_charged_anylepton
constexpr bool is_charged_anylepton(Particle const &p)
Function to determine if particle is a charged lepton or charged antilepton.
Definition:
Particle.hh:246
HEJ::is_massless
constexpr bool is_massless(Particle const &p)
Check if a particle is massless.
Definition:
Particle.hh:210
HEJ::is_antilepton
constexpr bool is_antilepton(Particle const &p)
Function to determine if particle is an antilepton.
Definition:
Particle.hh:164
HEJ::is_charged_lepton
constexpr bool is_charged_lepton(Particle const &p)
Function to determine if particle is a charged lepton.
Definition:
Particle.hh:226
HEJ::charge
boost::rational< int > charge(Particle const &p)
Particle electric charge.
HEJ::is_neutrino
constexpr bool is_neutrino(Particle const &p)
Function to determine if particle is a neutrino.
Definition:
Particle.hh:184
HEJ::is_massive
constexpr bool is_massive(Particle const &p)
Check if a particle is massive.
Definition:
Particle.hh:216
HEJ::is_anyquark
constexpr bool is_anyquark(Particle const &p)
Check if a particle is a quark or anit-quark.
Definition:
Particle.hh:144
HEJ::is_AWZ_boson
constexpr bool is_AWZ_boson(Particle const &particle)
Check if a particle is a photon, W or Z boson.
Definition:
Particle.hh:252
HEJ::Particle
Class representing a particle.
Definition:
Particle.hh:25
HEJ::Particle::rapidity
double rapidity() const
get rapidity
Definition:
Particle.hh:34
HEJ::Particle::py
double py() const
get momentum in y direction
Definition:
Particle.hh:50
HEJ::Particle::p
fastjet::PseudoJet p
particle momentum
Definition:
Particle.hh:29
HEJ::Particle::px
double px() const
get momentum in x direction
Definition:
Particle.hh:46
HEJ::Particle::colour
std::optional< Colour > colour
(optional) colour & anti-colour
Definition:
Particle.hh:31
HEJ::Particle::E
double E() const
get energy
Definition:
Particle.hh:58
HEJ::Particle::type
ParticleID type
particle type
Definition:
Particle.hh:27
HEJ::Particle::pz
double pz() const
get momentum in z direction
Definition:
Particle.hh:54
HEJ::Particle::m
double m() const
get mass
Definition:
Particle.hh:62
HEJ::Particle::perp
double perp() const
get transverse momentum
Definition:
Particle.hh:38
HEJ::Particle::pt
double pt() const
get transverse momentum
Definition:
Particle.hh:42
HEJ::pz_less
Functor to compare momenta in z direction.
Definition:
Particle.hh:88
HEJ::pz_less::operator()
bool operator()(FourVector const &p1, FourVector const &p2)
Definition:
Particle.hh:90
HEJ::rapidity_less
Functor to compare rapidities.
Definition:
Particle.hh:74
HEJ::rapidity_less::operator()
bool operator()(FourVector const &p1, FourVector const &p2)
Definition:
Particle.hh:76
HEJ::type_less
Functor to compare particle type (PDG)
Definition:
Particle.hh:111
HEJ::type_less::operator()
bool operator()(Particle const &p1, Particle const &p2)
Definition:
Particle.hh:113
Generated by
1.9.5