rivet is hosted by Hepforge, IPPP Durham
Rivet 3.1.6
TauFinder.hh
1#ifndef RIVET_TauFinder_HH
2#define RIVET_TauFinder_HH
3
4#include "Rivet/Projections/FinalState.hh"
5#include "Rivet/Projections/UnstableParticles.hh"
6
7namespace Rivet {
8
9
13 class TauFinder : public FinalState {
14 public:
15
16 enum class DecayMode {
17 ANY = 0,
18 ALL = 0,
19 LEPTONIC,
20 HADRONIC
21 };
22
23 static bool isHadronic(const Particle& tau) {
24 assert(tau.abspid() == PID::TAU);
25 return any(tau.stableDescendants(), isHadron);
26 }
27
28 static bool isLeptonic(const Particle& tau) {
29 return !isHadronic(tau);
30 }
31
32
33 TauFinder(DecayMode decaymode=DecayMode::ANY, const Cut& cut=Cuts::open()) {
35 setName("TauFinder");
36 _decmode = decaymode;
37 declare(UnstableParticles(cut), "UFS");
38 }
39
40
43
44
45 const Particles& taus() const { return _theParticles; }
46
47
48 protected:
49
51 void project(const Event& e);
52
54 virtual CmpState compare(const Projection& p) const;
55
56
57 private:
58
60 DecayMode _decmode;
61
62 };
63
64
66 using Taus = TauFinder;
67
68
69}
70
71
72#endif
Representation of a HepMC event, and enabler of Projection caching.
Definition: Event.hh:22
Project out all final-state particles in an event. Probably the most important projection in Rivet!
Definition: FinalState.hh:12
Particle representation, either from a HepMC::GenEvent or reconstructed.
Definition: Particle.hh:53
PdgId abspid() const
Absolute value of the PDG ID code.
Definition: Particle.hh:199
Particles stableDescendants(const Cut &c=Cuts::OPEN) const
Specialised vector of Particle objects.
Definition: Particle.hh:25
const PROJ & declare(const PROJ &proj, const std::string &name)
Register a contained projection (user-facing version)
Definition: ProjectionApplier.hh:170
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
Convenience finder of unstable taus.
Definition: TauFinder.hh:13
TauFinder(DecayMode decaymode=DecayMode::ANY, const Cut &cut=Cuts::open())
Definition: TauFinder.hh:33
virtual CmpState compare(const Projection &p) const
Compare with other projections.
void project(const Event &e)
Apply the projection on the supplied event.
DEFAULT_RIVET_PROJ_CLONE(TauFinder)
Clone on the heap.
Project out all physical-but-decayed particles in an event.
Definition: UnstableParticles.hh:25
bool any(const CONTAINER &c)
Return true if x is true for any x in container c, otherwise false.
Definition: Utils.hh:334
bool isHadron(int pid)
Definition: ParticleIdUtils.hh:322
double p(const ParticleBase &p)
Unbound function access to p.
Definition: ParticleBaseUtils.hh:653
const Cut & open()
Fully open cut singleton, accepts everything.
Definition: MC_Cent_pPb.hh:10