rivet is hosted by Hepforge, IPPP Durham
Rivet 3.1.6
PrimaryParticles.hh
1// -*- C++ -*-
2#ifndef RIVET_PrimaryParticles_HH
3#define RIVET_PrimaryParticles_HH
4
5#include "Rivet/Projections/ParticleFinder.hh"
6#include "Rivet/Tools/Cuts.hh"
7
8namespace Rivet {
9
10
20 public:
21
26 PrimaryParticles(std::initializer_list<int> pids,
27 const Cut& c=Cuts::open()) :
28 ParticleFinder(c), _pdgIds(pids) {
29 setName("PrimaryParticles");
30 }
31
32 // Clone on the heap.
33 DEFAULT_RIVET_PROJ_CLONE(PrimaryParticles);
34
37 ParticleFinder(other), _pdgIds(other._pdgIds) {
38 }
39
46 virtual CmpState compare(const Projection& p) const
47 {
48 const PrimaryParticles* other = dynamic_cast<const PrimaryParticles*>(&p);
49 if (!other) return CmpState::NEQ;
50 if (_cuts != other->_cuts || _pdgIds != other->_pdgIds) return CmpState::NEQ;
51 return CmpState::EQ;
52 }
53
54
55 protected:
56
60 virtual void project(const Event& e);
61
70 virtual bool isPrimary(ConstGenParticlePtr p) const;
71
73 virtual bool isIgnored(ConstGenParticlePtr p) const;
74
80 virtual bool isPrimaryPID(ConstGenParticlePtr p) const;
81
88 virtual bool hasDecayed(ConstGenParticlePtr p) const;
89
95 virtual bool isBeam(ConstGenParticlePtr p) const;
96
102 ConstGenParticlePtr ancestor(ConstGenParticlePtr p) const;
103
110 ConstGenParticlePtr ancestor(ConstGenParticlePtr p, bool) const;
111
113 std::vector<int> _pdgIds;
114
115 };
116
117
118}
119
120#endif
Representation of a HepMC event, and enabler of Projection caching.
Definition: Event.hh:22
Base class for projections which return subsets of an event's particles.
Definition: ParticleFinder.hh:11
Project out primary particles according to definition.
Definition: PrimaryParticles.hh:19
ConstGenParticlePtr ancestor(ConstGenParticlePtr p, bool) const
virtual bool isIgnored(ConstGenParticlePtr p) const
Check if the particle should be ignored, via its status code.
virtual bool isBeam(ConstGenParticlePtr p) const
virtual bool isPrimaryPID(ConstGenParticlePtr p) const
PrimaryParticles(std::initializer_list< int > pids, const Cut &c=Cuts::open())
Definition: PrimaryParticles.hh:26
virtual bool hasDecayed(ConstGenParticlePtr p) const
PrimaryParticles(const PrimaryParticles &other)
Copy constructor.
Definition: PrimaryParticles.hh:36
ConstGenParticlePtr ancestor(ConstGenParticlePtr p) const
virtual void project(const Event &e)
virtual CmpState compare(const Projection &p) const
Definition: PrimaryParticles.hh:46
Base class for all Rivet projections.
Definition: Projection.hh:29
void setName(const std::string &name)
Used by derived classes to set their name.
Definition: Projection.hh:142
double p(const ParticleBase &p)
Unbound function access to p.
Definition: ParticleBaseUtils.hh:653
PdgIdPair pids(const ParticlePair &pp)
Definition: ParticleUtils.hh:749
const Cut & open()
Fully open cut singleton, accepts everything.
Definition: MC_Cent_pPb.hh:10