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);
118 const GenParticle* _original;
136 << pair.first.momentum().E()/GeV <<
" GeV, "
138 << pair.second.momentum().E()/GeV <<
" GeV]";
219 inline double deltaR(
const Particle& p1,
const Particle& p2,
221 return deltaR(p1.momentum(), p2.momentum(), scheme);
224 inline double deltaR(
const Particle& p,
const FourMomentum& v,
226 return deltaR(p.momentum(), v, scheme);
229 inline double deltaR(
const Particle& p,
const FourVector& v,
231 return deltaR(p.momentum(), v, scheme);
234 inline double deltaR(
const Particle& p,
const Vector3& v) {
235 return deltaR(p.momentum(), v);
238 inline double deltaR(
const Particle& p,
double eta,
double phi) {
239 return deltaR(p.momentum(),
eta,
phi);
242 inline double deltaR(
const FourMomentum& v,
const Particle& p,
244 return deltaR(v, p.momentum(), scheme);
247 inline double deltaR(
const FourVector& v,
const Particle& p,
249 return deltaR(v, p.momentum(), scheme);
252 inline double deltaR(
const Vector3& v,
const Particle& p) {
253 return deltaR(v, p.momentum());
256 inline double deltaR(
double eta,
double phi,
const Particle& p) {
257 return deltaR(eta, phi, p.momentum());
261 inline double deltaPhi(
const Particle& p1,
const Particle& p2) {
262 return deltaPhi(p1.momentum(), p2.momentum());
265 inline double deltaPhi(
const Particle& p,
const FourMomentum& v) {
266 return deltaPhi(p.momentum(), v);
269 inline double deltaPhi(
const Particle& p,
const FourVector& v) {
270 return deltaPhi(p.momentum(), v);
273 inline double deltaPhi(
const Particle& p,
const Vector3& v) {
274 return deltaPhi(p.momentum(), v);
277 inline double deltaPhi(
const Particle& p,
double phi) {
278 return deltaPhi(p.momentum(),
phi);
281 inline double deltaPhi(
const FourMomentum& v,
const Particle& p) {
282 return deltaPhi(v, p.momentum());
285 inline double deltaPhi(
const FourVector& v,
const Particle& p) {
286 return deltaPhi(v, p.momentum());
289 inline double deltaPhi(
const Vector3& v,
const Particle& p) {
290 return deltaPhi(v, p.momentum());
293 inline double deltaPhi(
double phi,
const Particle& p) {
294 return deltaPhi(phi, p.momentum());
298 inline double deltaEta(
const Particle& p1,
const Particle& p2) {
299 return deltaEta(p1.momentum(), p2.momentum());
302 inline double deltaEta(
const Particle& p,
const FourMomentum& v) {
303 return deltaEta(p.momentum(), v);
306 inline double deltaEta(
const Particle& p,
const FourVector& v) {
307 return deltaEta(p.momentum(), v);
310 inline double deltaEta(
const Particle& p,
const Vector3& v) {
311 return deltaEta(p.momentum(), v);
314 inline double deltaEta(
const Particle& p,
double eta) {
315 return deltaEta(p.momentum(),
eta);
318 inline double deltaEta(
const FourMomentum& v,
const Particle& p) {
319 return deltaEta(v, p.momentum());
322 inline double deltaEta(
const FourVector& v,
const Particle& p) {
323 return deltaEta(v, p.momentum());
326 inline double deltaEta(
const Vector3& v,
const Particle& p) {
327 return deltaEta(v, p.momentum());
330 inline double deltaEta(
double eta,
const Particle& p) {
331 return deltaEta(eta, p.momentum());