2 #ifndef RIVET_Particle_HH
3 #define RIVET_Particle_HH
5 #include "Rivet/Rivet.hh"
6 #include "Rivet/Particle.fhh"
7 #include "Rivet/ParticleBase.hh"
8 #include "Rivet/ParticleName.hh"
9 #include "Rivet/Math/Vectors.hh"
10 #include "Rivet/Tools/Logging.hh"
23 _original(0), _id(0), _momentum()
29 _original(0), _id(pid), _momentum(mom)
35 _original(&gp), _id(gp.pdg_id()),
51 return bool(_original);
100 const GenParticle* _original;
118 << pair.first.momentum().E()/GeV <<
" GeV, "
120 << pair.second.momentum().E()/GeV <<
" GeV]";
201 inline double deltaR(
const Particle& p1,
const Particle& p2,
203 return deltaR(p1.momentum(), p2.momentum(), scheme);
206 inline double deltaR(
const Particle& p,
const FourMomentum& v,
208 return deltaR(p.momentum(), v, scheme);
211 inline double deltaR(
const Particle& p,
const FourVector& v,
213 return deltaR(p.momentum(), v, scheme);
216 inline double deltaR(
const Particle& p,
const Vector3& v) {
217 return deltaR(p.momentum(), v);
220 inline double deltaR(
const Particle& p,
double eta,
double phi) {
221 return deltaR(p.momentum(),
eta,
phi);
224 inline double deltaR(
const FourMomentum& v,
const Particle& p,
226 return deltaR(v, p.momentum(), scheme);
229 inline double deltaR(
const FourVector& v,
const Particle& p,
231 return deltaR(v, p.momentum(), scheme);
234 inline double deltaR(
const Vector3& v,
const Particle& p) {
235 return deltaR(v, p.momentum());
238 inline double deltaR(
double eta,
double phi,
const Particle& p) {
239 return deltaR(eta, phi, p.momentum());
243 inline double deltaPhi(
const Particle& p1,
const Particle& p2) {
244 return deltaPhi(p1.momentum(), p2.momentum());
247 inline double deltaPhi(
const Particle& p,
const FourMomentum& v) {
248 return deltaPhi(p.momentum(), v);
251 inline double deltaPhi(
const Particle& p,
const FourVector& v) {
252 return deltaPhi(p.momentum(), v);
255 inline double deltaPhi(
const Particle& p,
const Vector3& v) {
256 return deltaPhi(p.momentum(), v);
259 inline double deltaPhi(
const Particle& p,
double phi) {
260 return deltaPhi(p.momentum(),
phi);
263 inline double deltaPhi(
const FourMomentum& v,
const Particle& p) {
264 return deltaPhi(v, p.momentum());
267 inline double deltaPhi(
const FourVector& v,
const Particle& p) {
268 return deltaPhi(v, p.momentum());
271 inline double deltaPhi(
const Vector3& v,
const Particle& p) {
272 return deltaPhi(v, p.momentum());
275 inline double deltaPhi(
double phi,
const Particle& p) {
276 return deltaPhi(phi, p.momentum());
280 inline double deltaEta(
const Particle& p1,
const Particle& p2) {
281 return deltaEta(p1.momentum(), p2.momentum());
284 inline double deltaEta(
const Particle& p,
const FourMomentum& v) {
285 return deltaEta(p.momentum(), v);
288 inline double deltaEta(
const Particle& p,
const FourVector& v) {
289 return deltaEta(p.momentum(), v);
292 inline double deltaEta(
const Particle& p,
const Vector3& v) {
293 return deltaEta(p.momentum(), v);
296 inline double deltaEta(
const Particle& p,
double eta) {
297 return deltaEta(p.momentum(),
eta);
300 inline double deltaEta(
const FourMomentum& v,
const Particle& p) {
301 return deltaEta(v, p.momentum());
304 inline double deltaEta(
const FourVector& v,
const Particle& p) {
305 return deltaEta(v, p.momentum());
308 inline double deltaEta(
const Vector3& v,
const Particle& p) {
309 return deltaEta(v, p.momentum());
312 inline double deltaEta(
double eta,
const Particle& p) {
313 return deltaEta(eta, p.momentum());