1 #ifndef RIVET_PARTICLEUTILS_HH 2 #define RIVET_PARTICLEUTILS_HH 4 #include "Rivet/Particle.hh" 5 #include "Rivet/Tools/ParticleBaseUtils.hh" 6 #include "Rivet/Tools/ParticleIdUtils.hh" 9 #define PARTICLE_TO_PID_BOOLFN(fname) inline bool fname (const Particle& p) { return PID:: fname (p.pid()); } 10 #define PARTICLE_TO_PID_INTFN(fname) inline int fname (const Particle& p) { return PID:: fname (p.pid()); } 11 #define PARTICLE_TO_PID_DBLFN(fname) inline double fname (const Particle& p) { return PID:: fname (p.pid()); } 53 PARTICLE_TO_PID_BOOLFN(
isMuon)
56 PARTICLE_TO_PID_BOOLFN(
isTau)
82 PARTICLE_TO_PID_BOOLFN(
isW)
85 PARTICLE_TO_PID_BOOLFN(
isZ)
100 PARTICLE_TO_PID_BOOLFN(
isTop)
175 PARTICLE_TO_PID_BOOLFN(isDiquark)
181 PARTICLE_TO_PID_BOOLFN(
isSUSY)
193 PARTICLE_TO_PID_BOOLFN(
isKK)
199 PARTICLE_TO_PID_BOOLFN(
isBSM)
215 PARTICLE_TO_PID_BOOLFN(
hasUp)
218 PARTICLE_TO_PID_BOOLFN(
hasDown)
230 PARTICLE_TO_PID_BOOLFN(
hasTop)
235 PARTICLE_TO_PID_INTFN(
jSpin)
238 PARTICLE_TO_PID_INTFN(
sSpin)
241 PARTICLE_TO_PID_INTFN(
lSpin)
245 PARTICLE_TO_PID_DBLFN(
charge)
257 PARTICLE_TO_PID_INTFN(
nuclZ)
260 PARTICLE_TO_PID_INTFN(
nuclA)
273 inline bool isSameSign(
const Particle& a,
const Particle& b) {
return PID::isSameSign(a.
pid(), b.
pid()); }
275 inline bool isSameFlav(
const Particle& a,
const Particle& b) {
return PID::isSameFlav(a.
pid(), b.
pid()); }
419 inline bool isDirect(
const Particle& p,
bool allow_from_direct_tau=
false,
bool allow_from_direct_mu=
false) {
420 return p.
isDirect(allow_from_direct_tau, allow_from_direct_mu);
427 inline bool isPrompt(
const Particle& p,
bool allow_from_prompt_tau=
false,
bool allow_from_prompt_mu=
false) {
428 return p.
isPrompt(allow_from_prompt_tau, allow_from_prompt_mu);
465 return p.
fromTau(prompt_taus_only);
485 virtual bool operator()(
const Particle& p)
const = 0;
491 BoolParticleAND(
const std::vector<ParticleSelector>& sels) : selectors(sels) {}
492 BoolParticleAND(
const ParticleSelector& a,
const ParticleSelector& b) : selectors({a,b}) {}
493 BoolParticleAND(
const ParticleSelector& a,
const ParticleSelector& b,
const ParticleSelector& c) : selectors({a,b,c}) {}
494 bool operator()(
const Particle& p)
const {
495 for (
const ParticleSelector& sel : selectors)
if (!sel(p))
return false;
498 std::vector<ParticleSelector> selectors;
508 BoolParticleOR(
const std::vector<ParticleSelector>& sels) : selectors(sels) {}
509 BoolParticleOR(
const ParticleSelector& a,
const ParticleSelector& b) : selectors({a,b}) {}
510 BoolParticleOR(
const ParticleSelector& a,
const ParticleSelector& b,
const ParticleSelector& c) : selectors({a,b,c}) {}
511 bool operator()(
const Particle& p)
const {
512 for (
const ParticleSelector& sel : selectors)
if (sel(p))
return true;
515 std::vector<ParticleSelector> selectors;
525 bool operator()(
const Particle& p)
const {
return !selector(p); }
526 ParticleSelector selector;
537 HasPID(vector<PdgId>
pids) : targetpids{pids} { }
538 HasPID(initializer_list<PdgId> pids) : targetpids{pids} { }
540 vector<PdgId> targetpids;
547 HasAbsPID(vector<PdgId>
pids) {
for (PdgId pid : pids) targetapids.push_back(abs(pid)); }
548 HasAbsPID(initializer_list<PdgId> pids) {
for (PdgId pid : pids) targetapids.push_back(abs(pid)); }
550 vector<PdgId> targetapids;
576 template <
typename FN>
580 std::function<bool(const Particle&)> fn;
596 HasParticleAncestorWith(
const ParticleSelector& f,
bool only_physical=
true) : fn(f), onlyphysical(only_physical) { }
655 HasParticleDescendantWith(
const ParticleSelector& f,
bool remove_duplicates=
true) : fn(f), rmduplicates(remove_duplicates) { }
689 Particles rtn = particles;
699 inline Particles
filter_select(
const Particles& particles,
const Cut& c, Particles& out) {
705 inline Particles
filterBy(
const Particles& particles,
const Cut& c, Particles& out) {
return filter_select(particles, c, out); }
707 inline Particles
select(
const Particles& particles,
const Cut& c, Particles& out) {
return filter_select(particles, c, out); }
717 Particles rtn = particles;
724 inline Particles
filter_discard(
const Particles& particles,
const Cut& c, Particles& out) {
729 inline Particles
discard(
const Particles& particles,
const Cut& c, Particles& out) {
return filter_discard(particles, c, out); }
749 inline PdgIdPair
pids(
const ParticlePair& pp) {
750 return make_pair(pp.first.pid(), pp.second.pid());
763 inline double sumPt(
const Particles& ps) {
764 return sum(ps, pT, 0.0);
771 inline Vector3 sumP3(
const Particles& ps) {
Definition: MC_Cent_pPb.hh:10
int abscharge3(int pid)
Return the absolute value of 3 times the EM charge.
Definition: ParticleIdUtils.hh:865
bool diffCharge(const Particle &a, const Particle &b)
Return true if Particles a and b have a different (not necessarily opposite) charge.
Definition: ParticleUtils.hh:314
bool isLightBaryon(int pid)
Determine if the PID is that of a light flavour (not b or c) baryon.
Definition: ParticleIdUtils.hh:634
bool isBottomBaryon(int pid)
Determine if the PID is that of a b-baryon.
Definition: ParticleIdUtils.hh:650
int nuclA(int pid)
Definition: ParticleIdUtils.hh:99
bool isPhoton(int pid)
Determine if the PID is that of a photon.
Definition: ParticleIdUtils.hh:138
bool hasDown(int pid)
Does this particle contain a down quark?
Definition: ParticleIdUtils.hh:573
bool isHiggs(int pid)
Determine if the PID is that of an SM/lightest SUSY Higgs.
Definition: ParticleIdUtils.hh:194
bool isElectron(int pid)
Determine if the PID is that of an electron or positron.
Definition: ParticleIdUtils.hh:143
bool hasAncestor(const Particle &p, PdgId pid)
Definition: ParticleUtils.hh:452
bool hasDescendantWith(const Particle &p, const ParticleSelector &f, bool remove_duplicates=true)
Determine whether a particle has a descendant which meets the function requirement.
Definition: ParticleUtils.hh:386
bool isTechnicolor(int pid)
Is this a technicolor particle?
Definition: ParticleIdUtils.hh:397
bool fromHadron() const
Determine whether the particle is from a hadron decay.
bool sameCharge(const Particle &a, const Particle &b)
Definition: ParticleUtils.hh:309
Cut operator!(const Cut &cptr)
Logical NOT operation on a cut.
bool isParton(int pid)
Determine if the PID is that of a parton (quark or gluon)
Definition: ParticleIdUtils.hh:132
bool hasUp(int pid)
Does this particle contain an up quark?
Definition: ParticleIdUtils.hh:575
Base type for Particle -> bool functors.
Definition: ParticleUtils.hh:484
bool isNeutral(int pid)
Determine if the particle is electrically neutral.
Definition: ParticleIdUtils.hh:885
bool hasAncestorWithout(const Particle &p, const ParticleSelector &f, bool only_physical=true)
Determine whether a particle has an ancestor which doesn't meet the function requirement.
Definition: ParticleUtils.hh:358
bool fromCharm() const
Determine whether the particle is from a c-hadron decay.
bool hasStableDescendantWith(const Particle &p, const ParticleSelector &f)
Determine whether a particle has a stable descendant which meets the function requirement.
Definition: ParticleUtils.hh:397
bool isStrange(int pid)
Determine if the PID is that of an s/sbar.
Definition: ParticleIdUtils.hh:214
bool isFirstWithout(const Particle &p, const ParticleSelector &f)
Determine whether a particle is the first in a decay chain not to meet the function requirement...
Definition: ParticleUtils.hh:335
bool isWminus(int pid)
Determine if the PID is that of a W-.
Definition: ParticleIdUtils.hh:179
bool isBSM(int pid)
Is this a BSM particle (including graviton)?
Definition: ParticleIdUtils.hh:511
bool isHeavyBaryon(int pid)
Determine if the PID is that of a heavy flavour (b or c) baryon.
Definition: ParticleIdUtils.hh:619
bool isFirstWithout(const ParticleSelector &f) const
Determine whether a particle is the first in a decay chain not to meet the function requirement...
Definition: Particle.hh:671
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 hasDescendantWith(const ParticleSelector &f, bool remove_duplicates=true) const
Definition: Particle.hh:586
bool isStable() const
Whether this particle is stable according to the generator.
bool isBaryon(int pid)
Check to see if this is a valid baryon.
Definition: ParticleIdUtils.hh:260
bool oppCharge(const Particle &a, const Particle &b)
Definition: ParticleUtils.hh:303
double charge(int pid)
Return the EM charge (as floating point)
Definition: ParticleIdUtils.hh:868
bool isCharged(int pid)
Determine if the particle is electrically charged.
Definition: ParticleIdUtils.hh:880
Determine whether a particle is the last in a decay chain not to meet the cut/function.
Definition: ParticleUtils.hh:585
bool isHeavyMeson(int pid)
Determine if the PID is that of a heavy flavour (b or c) meson.
Definition: ParticleIdUtils.hh:614
bool fromTau(const Particle &p, bool prompt_taus_only=false)
Determine whether the particle is from a tau decay.
Definition: ParticleUtils.hh:464
PID matching functor.
Definition: ParticleUtils.hh:535
bool isLightMeson(int pid)
Determine if the PID is that of a light flavour (not b or c) meson.
Definition: ParticleIdUtils.hh:629
PdgId pid() const
This Particle's PDG ID code.
Definition: Particle.hh:162
bool isLightHadron(int pid)
Determine if the PID is that of a light flavour (not b or c) hadron.
Definition: ParticleIdUtils.hh:639
bool hasStrange(int pid)
Does this particle contain a strange quark?
Definition: ParticleIdUtils.hh:577
bool hasAncestorWith(const ParticleSelector &f, bool only_physical=true) const
Definition: Particle.hh:403
bool isMuon(int pid)
Determine if the PID is that of an muon or antimuon.
Definition: ParticleIdUtils.hh:148
bool isSUSY(int pid)
Is this a fundamental SUSY particle?
Definition: ParticleIdUtils.hh:362
Particle representation, either from a HepMC::GenEvent or reconstructed.
Definition: Particle.hh:18
Functor for and-combination of selector logic.
Definition: ParticleUtils.hh:490
int pid(const Particle &p)
Unbound function access to PID code.
Definition: ParticleUtils.hh:23
int nuclZ(int pid)
Definition: ParticleIdUtils.hh:90
int lSpin(int pid)
lSpin returns 2L+1, where L is the orbital angular momentum
Definition: ParticleIdUtils.hh:764
bool isVisible(const Particle &p)
Is this particle potentially visible in a detector?
Definition: ParticleUtils.hh:409
|PID| matching functor
Definition: ParticleUtils.hh:545
bool hasStableDescendantWith(const ParticleSelector &f) const
Definition: Particle.hh:628
bool isStable(const Particle &p)
Decide if a given particle is stable, via Particle::isStable()
Definition: ParticleUtils.hh:433
bool isCharm(int pid)
Determine if the PID is that of a c/cbar.
Definition: ParticleIdUtils.hh:217
bool hasChildWith(const ParticleSelector &f) const
Definition: Particle.hh:547
bool isHadron(int pid)
Definition: ParticleIdUtils.hh:322
bool isBottom(int pid)
Determine if the PID is that of a b/bbar.
Definition: ParticleIdUtils.hh:220
bool isPentaquark(int pid)
Check to see if this is a valid pentaquark.
Definition: ParticleIdUtils.hh:300
bool oppSign(const Particle &a, const Particle &b)
Return true if Particles a and b have the opposite charge sign.
Definition: ParticleUtils.hh:291
bool hasStableDescendantWithout(const ParticleSelector &f) const
Definition: Particle.hh:643
Functor for inverting selector logic.
Definition: ParticleUtils.hh:523
bool isLastWith(const Particle &p, const ParticleSelector &f)
Determine whether a particle is the last in a decay chain to meet the function requirement.
Definition: ParticleUtils.hh:341
int charge3(int pid)
Three times the EM charge (as integer)
Definition: ParticleIdUtils.hh:800
bool isBottomHadron(int pid)
Determine if the PID is that of a b-hadron.
Definition: ParticleIdUtils.hh:655
bool isTau(int pid)
Determine if the PID is that of an tau or antitau.
Definition: ParticleIdUtils.hh:153
Cut operator||(const Cut &aptr, const Cut &bptr)
Determine whether a particle has an ancestor which doesn't meet the cut/function. ...
Definition: ParticleUtils.hh:605
bool fromPromptTau() const
Determine whether the particle is from a prompt tau decay.
Definition: Particle.hh:484
bool isGraviton(int pid)
Is this a graviton?
Definition: ParticleIdUtils.hh:202
Determine whether a particle is the first in a decay chain to meet the cut/function.
Definition: ParticleUtils.hh:556
bool isLepton(int pid)
Definition: ParticleIdUtils.hh:340
bool isTop(int pid)
Determine if the PID is that of a t/tbar.
Definition: ParticleIdUtils.hh:223
double abscharge(int pid)
Return the EM charge (as floating point)
Definition: ParticleIdUtils.hh:871
bool isReggeon(int pid)
Is this a pomeron, odderon, or generic reggeon?
Definition: ParticleIdUtils.hh:232
Jets filter_discard(const Jets &jets, const Cut &c)
Filter a jet collection in-place to the subset that fails the supplied Cut.
Definition: JetUtils.hh:191
Determine whether a particle is the first in a decay chain not to meet the cut/function.
Definition: ParticleUtils.hh:565
bool hasChildWithout(const Particle &p, const ParticleSelector &f)
Determine whether a particle has a child which doesn't meet the function requirement.
Definition: ParticleUtils.hh:380
Cut operator&&(const Cut &aptr, const Cut &bptr)
bool isW(int pid)
Determine if the PID is that of a W+-.
Definition: ParticleIdUtils.hh:184
Jets & ifilterBy(Jets &jets, const Cut &c)
Definition: JetUtils.hh:154
int abspid(const Particle &p)
Unbound function access to abs PID code.
Definition: ParticleUtils.hh:26
bool hasBottom(int pid)
Does this particle contain a bottom quark?
Definition: ParticleIdUtils.hh:581
Determine whether a particle has a child which meets the cut/function.
Definition: ParticleUtils.hh:635
bool isVisible() const
Is this particle potentially visible in a detector?
bool isTransportable(int pid)
Definition: ParticleIdUtils.hh:935
bool fromBottom(const Particle &p)
Determine whether the particle is from a b-hadron decay.
Definition: ParticleUtils.hh:455
bool isSame(const Particle &other) const
Definition: Particle.hh:696
Jets discard(const Jets &jets, const Cut &c)
New alias for filter_discard.
Definition: JetUtils.hh:196
Determine whether a particle has a descendant which meets the cut/function.
Definition: ParticleUtils.hh:654
bool hasAncestorWith(const Particle &p, const ParticleSelector &f, bool only_physical=true)
Determine whether a particle has an ancestor which meets the function requirement.
Definition: ParticleUtils.hh:353
bool hasCharm(int pid)
Does this particle contain a charm quark?
Definition: ParticleIdUtils.hh:579
CONTAINER::value_type sum(const CONTAINER &c)
Generic sum function, adding x for all x in container c.
Definition: Utils.hh:422
bool isHeavyParton(int pid)
Determine if the PID is that of a heavy parton (c,b,t)
Definition: ParticleIdUtils.hh:603
bool isQuark(int pid)
Determine if the PID is that of a quark.
Definition: ParticleIdUtils.hh:122
Jets select(const Jets &jets, const Cut &c)
New alias for filter_select.
Definition: JetUtils.hh:168
PdgIdPair pids(const ParticlePair &pp)
Definition: ParticleUtils.hh:749
bool isSame(const Particle &a, const Particle &b)
Check Particle equivalence.
Definition: ParticleUtils.hh:787
Determine whether a particle has a descendant which doesn't meet the cut/function.
Definition: ParticleUtils.hh:664
bool isGenSpecific(int pid)
Determine if the PID is in the generator-specific range.
Definition: ParticleIdUtils.hh:920
bool hasTop(int pid)
Does this particle contain a top quark?
Definition: ParticleIdUtils.hh:583
bool isDirect(const Particle &p, bool allow_from_direct_tau=false, bool allow_from_direct_mu=false)
Decide if a given particle is direct, via Particle::isDirect()
Definition: ParticleUtils.hh:419
bool hasLeptonicDecay(const Particle &p)
Decide if a given particle decays leptonically (decays, and no hadrons)
Definition: ParticleUtils.hh:443
Determine whether a particle has an parent which meets the cut/function.
Definition: ParticleUtils.hh:616
bool isLastWith(const ParticleSelector &f) const
Determine whether a particle is the last in a decay chain to meet the function requirement.
Definition: Particle.hh:676
bool hasDescendantWithout(const ParticleSelector &f, bool remove_duplicates=true) const
Definition: Particle.hh:601
bool hasStableDescendantWithout(const Particle &p, const ParticleSelector &f)
Determine whether a particle has a stable descendant which doesn't meet the function requirement...
Definition: ParticleUtils.hh:402
Determine whether a particle has an ancestor which meets the cut/function.
Definition: ParticleUtils.hh:595
int charge3() const
Three times the charge of this Particle (i.e. integer multiple of smallest quark charge).
Definition: Particle.hh:179
int nuclNlambda(int pid)
Definition: ParticleIdUtils.hh:108
bool contains(const std::string &s, const std::string &sub)
Does s contain sub as a substring?
Definition: RivetSTL.hh:93
bool hasHadronicDecay(const Particle &p)
Decide if a given particle decays hadronically.
Definition: ParticleUtils.hh:436
bool isCharmMeson(int pid)
Determine if the PID is that of a c-meson.
Definition: ParticleIdUtils.hh:664
bool hasChildWith(const Particle &p, const ParticleSelector &f)
Determine whether a particle has a child which meets the function requirement.
Definition: ParticleUtils.hh:375
bool isRhadron(int pid)
Alias.
Definition: ParticleIdUtils.hh:394
bool isChLepton(int pid)
Definition: ParticleIdUtils.hh:164
bool isFirstWith(const Particle &p, const ParticleSelector &f)
Determine whether a particle is the first in a decay chain to meet the function requirement.
Definition: ParticleUtils.hh:330
bool isHeavyHadron(int pid)
Determine if the PID is that of a heavy flavour (b or c) hadron.
Definition: ParticleIdUtils.hh:624
bool hasAncestorWithout(const ParticleSelector &f, bool only_physical=true) const
Definition: Particle.hh:418
bool isLastWithout(const ParticleSelector &f) const
Determine whether a particle is the last in a decay chain not to meet the function requirement...
Definition: Particle.hh:683
bool isWplus(int pid)
Determine if the PID is that of a W+.
Definition: ParticleIdUtils.hh:174
int jSpin(int pid)
jSpin returns 2J+1, where J is the total spin
Definition: ParticleIdUtils.hh:725
Jets & ifilter_select(Jets &jets, const Cut &c)
Filter a jet collection in-place to the subset that passes the supplied Cut.
bool isLastWithout(const Particle &p, const ParticleSelector &f)
Determine whether a particle is the last in a decay chain not to meet the function requirement...
Definition: ParticleUtils.hh:346
bool isKK(int pid)
Is this a Kaluza-Klein excitation?
Definition: ParticleIdUtils.hh:409
bool isCharmHadron(int pid)
Definition: ParticleIdUtils.hh:684
Determine whether a particle has a child which doesn't meet the cut/function.
Definition: ParticleUtils.hh:644
bool fromCharm(const Particle &p)
Determine whether the particle is from a c-hadron decay.
Definition: ParticleUtils.hh:458
bool isFirstWith(const ParticleSelector &f) const
Determine whether a particle is the first in a decay chain to meet the function requirement.
Definition: Particle.hh:664
Determine whether a particle is the last in a decay chain to meet the cut/function.
Definition: ParticleUtils.hh:575
bool fromHadron(const Particle &p)
Determine whether the particle is from a hadron decay.
Definition: ParticleUtils.hh:461
bool hasChildWithout(const ParticleSelector &f) const
Definition: Particle.hh:562
Determine whether a particle has an parent which doesn't meet the cut/function.
Definition: ParticleUtils.hh:625
bool fromPromptTau(const Particle &p)
Determine whether the particle is from a prompt tau decay.
Definition: ParticleUtils.hh:469
bool isLightParton(int pid)
Determine if the PID is that of a light parton (u,d,s)
Definition: ParticleIdUtils.hh:608
bool isZ(int pid)
Determine if the PID is that of a Z0.
Definition: ParticleIdUtils.hh:189
bool isResonance(int pid)
Definition: ParticleIdUtils.hh:927
PdgId abspid() const
Absolute value of the PDG ID code.
Definition: Particle.hh:164
bool isMeson(int pid)
Check to see if this is a valid meson.
Definition: ParticleIdUtils.hh:237
bool fromTau(bool prompt_taus_only=false) const
Determine whether the particle is from a tau decay.
bool isHeavyFlavour(int pid)
Determine if the particle is a heavy flavour hadron or parton.
Definition: ParticleIdUtils.hh:592
bool sameSign(const Particle &a, const Particle &b)
Definition: ParticleUtils.hh:297
Three-dimensional specialisation of Vector.
Definition: Vector3.hh:26
bool isDirect(bool allow_from_direct_tau=false, bool allow_from_direct_mu=false) const
Shorthand definition of 'promptness' based on set definition flags.
Jets & iselect(Jets &jets, const Cut &c)
New alias for ifilter_select.
Definition: JetUtils.hh:156
bool isNeutrino(int pid)
Determine if the PID is that of a neutrino.
Definition: ParticleIdUtils.hh:167
Functor for or-combination of selector logic.
Definition: ParticleUtils.hh:507
bool hasParentWithout(const ParticleSelector &f) const
Definition: Particle.hh:359
bool hasParentWithout(const Particle &p, const ParticleSelector &f)
Determine whether a particle has a parent which doesn't meet the function requirement.
Definition: ParticleUtils.hh:369
bool isPrompt(const Particle &p, bool allow_from_prompt_tau=false, bool allow_from_prompt_mu=false)
Decide if a given particle is prompt, via Particle::isPrompt()
Definition: ParticleUtils.hh:427
Jets filterBy(const Jets &jets, const Cut &c)
Definition: JetUtils.hh:166
Specialized version of the FourVector with momentum/energy functionality.
Definition: Vector4.hh:301
bool isExcited(int pid)
Is this an excited (composite) quark or lepton?
Definition: ParticleIdUtils.hh:403
bool isCharmBaryon(int pid)
Determine if the PID is that of a c-baryon.
Definition: ParticleIdUtils.hh:674
Jets & ifilter_discard(Jets &jets, const Cut &c)
Filter a jet collection in-place to the subset that fails the supplied Cut.
bool isPrompt(bool allow_from_prompt_tau=false, bool allow_from_prompt_mu=false) const
Alias for isDirect.
Definition: Particle.hh:518
Jets & idiscard(Jets &jets, const Cut &c)
New alias for ifilter_discard.
Definition: JetUtils.hh:187
bool hasAncestor(PdgId pid, bool only_physical=true) const
bool hasParentWith(const ParticleSelector &f) const
Definition: Particle.hh:344
std::enable_if< std::is_arithmetic< NUM >::value, int >::type sign(NUM val)
Find the sign of a number.
Definition: MathUtils.hh:245
bool hasDescendantWithout(const Particle &p, const ParticleSelector &f, bool remove_duplicates=true)
Determine whether a particle has a descendant which doesn't meet the function requirement.
Definition: ParticleUtils.hh:391
int sSpin(int pid)
sSpin returns 2S+1, where S is the spin
Definition: ParticleIdUtils.hh:741
bool isChargedLepton(int pid)
Determine if the PID is that of a charged lepton.
Definition: ParticleIdUtils.hh:158
bool fromBottom() const
Determine whether the particle is from a b-hadron decay.
bool hasParentWith(const Particle &p, const ParticleSelector &f)
Determine whether a particle has a parent which meets the function requirement.
Definition: ParticleUtils.hh:364
bool isBottomMeson(int pid)
Determine if the PID is that of a b-meson.
Definition: ParticleIdUtils.hh:645