Rivet  3.1.3
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 
8 namespace 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
void setName(const std::string &name)
Used by derived classes to set their name.
Definition: Projection.hh:142
Definition: MC_Cent_pPb.hh:10
PrimaryParticles(const PrimaryParticles &other)
Copy constructor.
Definition: PrimaryParticles.hh:36
virtual bool isPrimaryPID(ConstGenParticlePtr p) const
virtual bool isIgnored(ConstGenParticlePtr p) const
Check if the particle should be ignored, via its status code.
virtual CmpState compare(const Projection &p) const
Definition: PrimaryParticles.hh:46
Project out primary particles according to definition.
Definition: PrimaryParticles.hh:19
const Cut & open()
Fully open cut singleton, accepts everything.
Base class for projections which return subsets of an event&#39;s particles.
Definition: ParticleFinder.hh:11
virtual bool isBeam(ConstGenParticlePtr p) const
Representation of a HepMC event, and enabler of Projection caching.
Definition: Event.hh:22
ConstGenParticlePtr ancestor(ConstGenParticlePtr p) const
PdgIdPair pids(const ParticlePair &pp)
Definition: ParticleUtils.hh:749
PrimaryParticles(std::initializer_list< int > pids, const Cut &c=Cuts::open())
Definition: PrimaryParticles.hh:26
virtual bool hasDecayed(ConstGenParticlePtr p) const
Base class for all Rivet projections.
Definition: Projection.hh:29
virtual void project(const Event &e)