Rivet  3.1.0
Jet.hh
1 // -*- C++ -*-
2 #ifndef RIVET_Jet_HH
3 #define RIVET_Jet_HH
4 
5 #include "Rivet/Config/RivetCommon.hh"
6 #include "Rivet/Jet.fhh"
7 #include "Rivet/Particle.hh"
8 #include "Rivet/Tools/Cuts.hh"
9 #include "Rivet/Tools/Utils.hh"
10 #include "Rivet/Tools/RivetFastJet.hh"
11 #include "Rivet/Math/LorentzTrans.hh"
12 #include <numeric>
13 
14 namespace Rivet {
15 
16 
18  class Jet : public ParticleBase {
19  public:
20 
22 
23 
25  Jet(const fastjet::PseudoJet& pj, const Particles& particles=Particles(), const Particles& tags=Particles()) {
26  setState(pj, particles, tags);
27  }
28 
30  Jet(const FourMomentum& pjet, const Particles& particles=Particles(), const Particles& tags=Particles()) {
31  setState(pjet, particles, tags);
32  }
33 
35  Jet() { clear(); }
36 
38 
39 
41 
42 
44  size_t size() const { return _particles.size(); }
45 
47  Particles& particles() { return _particles; }
49  const Particles& particles() const { return _particles; }
51  const Particles particles(const Cut& c) const { return filter_select(_particles, c); }
53  const Particles particles(const ParticleSelector& s) const { return filter_select(_particles, s); }
54 
56  Particles& constituents() { return particles(); }
58  const Particles& constituents() const { return particles(); }
60  const Particles constituents(const Cut& c) const { return particles(c); }
62  const Particles constituents(const ParticleSelector& s) const { return particles(s); }
63 
65  bool containsParticle(const Particle& particle) const;
67  bool containsPID(const Particle& particle) const { return containsParticle(particle); }
68 
70  bool containsParticleId(PdgId pid) const;
72  bool containsPID(PdgId pid) const { return containsParticleId(pid); }
73 
75  bool containsParticleId(const vector<PdgId>& pids) const;
77  bool containsPID(const vector<PdgId>& pids) const { return containsParticleId(pids); }
78 
80 
81 
86 
87 
89  Particles& tags() { return _tags; }
91  const Particles& tags() const { return _tags; }
95  Particles tags(const ParticleSelector& f) const { return filter_select(tags(), f); }
99  Particles tags(const Cut& c) const;
100 
101 
105  Particles bTags(const Cut& c=Cuts::open()) const;
107  Particles bTags(const ParticleSelector& f) const { return filter_select(bTags(), f); }
108 
110  bool bTagged(const Cut& c=Cuts::open()) const { return !bTags(c).empty(); }
112  bool bTagged(const ParticleSelector& f) const { return !bTags(f).empty(); }
113 
114 
118  Particles cTags(const Cut& c=Cuts::open()) const;
120  Particles cTags(const ParticleSelector& f) const { return filter_select(cTags(), f); }
121 
123  bool cTagged(const Cut& c=Cuts::open()) const { return !cTags(c).empty(); }
125  bool cTagged(const ParticleSelector& f) const { return !cTags(f).empty(); }
126 
127 
131  Particles tauTags(const Cut& c=Cuts::open()) const;
133  Particles tauTags(const ParticleSelector& f) const { return filter_select(tauTags(), f); }
134 
136  bool tauTagged(const Cut& c=Cuts::open()) const { return !tauTags(c).empty(); }
138  bool tauTagged(const ParticleSelector& f) const { return !tauTags(f).empty(); }
139 
141 
142 
144 
145 
147  const FourMomentum& momentum() const { return _momentum; }
148 
152  Jet& transformBy(const LorentzTransform& lt);
153 
155  double totalEnergy() const { return momentum().E(); }
156 
158  double neutralEnergy() const;
159 
161  double hadronicEnergy() const;
162 
164 
165 
167 
168 
170  const fastjet::PseudoJet& pseudojet() const { return _pseudojet; }
171 
173  operator const fastjet::PseudoJet& () const { return pseudojet(); }
174 
176 
177 
179 
180 
185  Jet& setState(const fastjet::PseudoJet& pj, const Particles& particles=Particles(), const Particles& tags=Particles());
186 
188  Jet& setState(const FourMomentum& mom, const Particles& particles, const Particles& tags=Particles());
189 
193  Jet& setParticles(const Particles& particles);
194  Jet& setConstituents(const Particles& particles) { return setParticles(particles); }
195 
197  Jet& clear();
198 
200 
201 
202  private:
203 
205  fastjet::PseudoJet _pseudojet;
206 
209  Particles _particles;
210 
212  Particles _tags;
213 
215  mutable FourMomentum _momentum;
216 
217  // /// Provide but hide the equality operators, to avoid implicit comparison via fastjet::PseudoJet
218  // bool operator == (const Jet&) const;
219  // bool operator != (const Jet&) const;
220 
221  };
222 
223 
225 
226 
228  std::ostream& operator << (std::ostream& os, const Jet& j);
229 
231 
232 
233 }
234 
235 
236 #include "Rivet/Tools/JetUtils.hh"
237 
238 #endif
Definition: MC_Cent_pPb.hh:10
size_t size() const
Number of particles in this jet.
Definition: Jet.hh:44
bool containsPID(PdgId pid) const
Nicer alias for containsParticleId.
Definition: Jet.hh:72
Particles tags(const ParticleSelector &f) const
Particles which have been tag-matched to this jet and pass a selector function.
Definition: Jet.hh:95
bool bTagged(const ParticleSelector &f) const
Does this jet have at least one b-tag (that passes the supplied selector function)?
Definition: Jet.hh:112
bool bTagged(const Cut &c=Cuts::open()) const
Does this jet have at least one b-tag (that passes an optional Cut)?
Definition: Jet.hh:110
const FourMomentum & mom() const
Get equivalent single momentum four-vector (const) (alias).
Definition: ParticleBase.hh:39
Jet & setParticles(const Particles &particles)
Set the particles collection with full particle information.
Jets filter_select(const Jets &jets, const Cut &c)
Filter a jet collection in-place to the subset that passes the supplied Cut.
Definition: JetUtils.hh:160
bool containsParticleId(PdgId pid) const
Check whether this jet contains a certain particle type.
double neutralEnergy() const
Get the energy carried in this jet by neutral particles.
Particles & particles()
Get the particles in this jet.
Definition: Jet.hh:47
const Cut & open()
Fully open cut singleton, accepts everything.
Particle representation, either from a HepMC::GenEvent or reconstructed.
Definition: Particle.hh:18
int pid(const Particle &p)
Unbound function access to PID code.
Definition: ParticleUtils.hh:23
Jet(const FourMomentum &pjet, const Particles &particles=Particles(), const Particles &tags=Particles())
Set the jet data, with optional full particle information.
Definition: Jet.hh:30
Jet & transformBy(const LorentzTransform &lt)
bool tauTagged(const Cut &c=Cuts::open()) const
Does this jet have at least one tau-tag (that passes an optional Cut)?
Definition: Jet.hh:136
const Particles constituents(const Cut &c) const
Get the particles in this jet which pass a cut (FastJet-like alias, const)
Definition: Jet.hh:60
bool containsPID(const vector< PdgId > &pids) const
Nicer alias for containsParticleId.
Definition: Jet.hh:77
const fastjet::PseudoJet & pseudojet() const
Access the internal FastJet3 PseudoJet (as a const reference)
Definition: Jet.hh:170
bool cTagged(const ParticleSelector &f) const
Does this jet have at least one c-tag (that passes the supplied selector function)?
Definition: Jet.hh:125
Particles bTags(const Cut &c=Cuts::open()) const
b particles which have been tag-matched to this jet (and pass an optional Cut)
bool tauTagged(const ParticleSelector &f) const
Does this jet have at least one tau-tag (that passes the supplied selector function)?
Definition: Jet.hh:138
Particles tauTags(const Cut &c=Cuts::open()) const
Tau particles which have been tag-matched to this jet (and pass an optional Cut)
Particles cTags(const Cut &c=Cuts::open()) const
c (and not b) particles which have been tag-matched to this jet (and pass an optional Cut) ...
const FourMomentum & momentum() const
Get equivalent single momentum four-vector.
Definition: Jet.hh:147
Particles tauTags(const ParticleSelector &f) const
Tau particles which have been tag-matched to this jet and pass a selector function.
Definition: Jet.hh:133
Object implementing Lorentz transform calculations and boosts.
Definition: LorentzTrans.hh:21
Particles cTags(const ParticleSelector &f) const
c (and not b) particles which have been tag-matched to this jet and pass a selector function ...
Definition: Jet.hh:120
bool containsParticle(const Particle &particle) const
Check whether this jet contains a particular particle.
PdgIdPair pids(const ParticlePair &pp)
Definition: ParticleUtils.hh:749
Jet & setState(const fastjet::PseudoJet &pj, const Particles &particles=Particles(), const Particles &tags=Particles())
Set the jet data from a FastJet PseudoJet, with optional particle constituents and tags lists...
Base class for particle-like things like Particle and Jet.
Definition: ParticleBase.hh:13
const Particles & constituents() const
Get the particles in this jet (FastJet-like alias, const version)
Definition: Jet.hh:58
double E() const
Get energy (time component of momentum).
Definition: Vector4.hh:538
Particles & tags()
Particles which have been tag-matched to this jet.
Definition: Jet.hh:89
const Particles particles(const Cut &c) const
Get the particles in this jet which pass a cut (const)
Definition: Jet.hh:51
const Particles particles(const ParticleSelector &s) const
Get the particles in this jet which pass a filtering functor (const)
Definition: Jet.hh:53
Representation of a clustered jet of particles.
Definition: Jet.hh:18
const Particles constituents(const ParticleSelector &s) const
Get the particles in this jet which pass a filtering functor (FastJet-like alias, const) ...
Definition: Jet.hh:62
Jet & clear()
Reset this jet as empty.
const Particles & tags() const
Particles which have been tag-matched to this jet (const version)
Definition: Jet.hh:91
std::ostream & operator<<(std::ostream &os, const AnalysisInfo &ai)
Stream an AnalysisInfo as a text description.
Definition: AnalysisInfo.hh:348
const Particles & particles() const
Get the particles in this jet (const version)
Definition: Jet.hh:49
Specialized version of the FourVector with momentum/energy functionality.
Definition: Vector4.hh:301
bool cTagged(const Cut &c=Cuts::open()) const
Does this jet have at least one c-tag (that passes an optional Cut)?
Definition: Jet.hh:123
double hadronicEnergy() const
Get the energy carried in this jet by hadrons.
double totalEnergy() const
Get the total energy of this jet.
Definition: Jet.hh:155
Jet()
Default constructor – only for STL storability.
Definition: Jet.hh:35
bool containsPID(const Particle &particle) const
Nicer alias for containsParticleId.
Definition: Jet.hh:67
Particles & constituents()
Get the particles in this jet (FastJet-like alias)
Definition: Jet.hh:56
Particles bTags(const ParticleSelector &f) const
b particles which have been tag-matched to this jet and pass a selector function
Definition: Jet.hh:107
Jet(const fastjet::PseudoJet &pj, const Particles &particles=Particles(), const Particles &tags=Particles())
Constructor from a FastJet PseudoJet, with optional full particle constituents information.
Definition: Jet.hh:25