The Gaudi Framework  master (37c0b60a)
NodesPIDs.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
11 #pragma once
12 
13 #include <Gaudi/Decays/Nodes.h>
15 #include <Gaudi/ParticleProperty.h>
17 #include <GaudiKernel/MsgStream.h>
18 #include <algorithm>
19 
26 namespace Gaudi::Decays {
27  namespace Nodes {
34  class GAUDI_API Any : public Decays::iNode {
35  public:
37  Any* clone() const override;
39  bool operator()( const Gaudi::ParticleID& /* p */ ) const override;
41  std::ostream& fillStream( std::ostream& s ) const override;
43  bool valid() const override;
45  StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
46  };
47 
54  class GAUDI_API Pid : public Decays::iNode {
55  public:
57  Pid( const Decays::Decay::Item& item );
59  Pid( const Gaudi::ParticleProperty* item );
61  Pid( const Gaudi::ParticleID& item );
63  Pid( const std::string& item );
65  Pid* clone() const override;
67  bool operator()( const Gaudi::ParticleID& pid ) const override { return check( pid ); }
69  std::ostream& fillStream( std::ostream& s ) const override;
71  bool valid() const override;
73  StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
74 
75  public:
76  bool check( Gaudi::ParticleID pid ) const { return pid == m_item.pid(); }
77 
79  const Decays::Decay::Item& item() const { return m_item; }
81  operator const Decays::Decay::Item&() const { return item(); }
82 
83  private:
86  };
87 
94  class GAUDI_API CC : public Pid {
95  public:
97  CC( const Decays::Decay::Item& item );
99  CC( const Gaudi::ParticleProperty* item );
101  CC( Gaudi::ParticleID item );
103  CC( const std::string& item );
105  CC( const Decays::Nodes::Pid& pid );
107  CC* clone() const override;
109  bool operator()( const Gaudi::ParticleID& pid ) const override { return pid.abspid() == item().pid().abspid(); }
111  std::ostream& fillStream( std::ostream& s ) const override;
112  };
113 
119  class GAUDI_API Lepton : public Any {
120  public:
122  Lepton* clone() const override;
124  bool operator()( const Gaudi::ParticleID& pid ) const override { return pid.isLepton(); }
126  std::ostream& fillStream( std::ostream& s ) const override;
127  };
128 
134  class GAUDI_API Nu : public Lepton {
135  public:
137  Nu* clone() const override;
139  bool operator()( const Gaudi::ParticleID& pid ) const override {
140  return pid.isLepton() && ( 0 == pid.threeCharge() );
141  }
143  std::ostream& fillStream( std::ostream& s ) const override;
144  };
145 
151  class GAUDI_API Ell : public Lepton {
152  public:
154  Ell* clone() const override;
156  bool operator()( const Gaudi::ParticleID& pid ) const override {
157  return pid.isLepton() && ( 0 != pid.threeCharge() );
158  }
160  std::ostream& fillStream( std::ostream& s ) const override;
161  };
162 
168  class GAUDI_API EllPlus : public Ell {
169  public:
171  EllPlus* clone() const override;
173  bool operator()( const Gaudi::ParticleID& pid ) const override {
174  return pid.isLepton() && ( 0 < pid.threeCharge() );
175  }
177  std::ostream& fillStream( std::ostream& s ) const override;
178  };
184  class GAUDI_API EllMinus : public Ell {
185  public:
187  EllMinus* clone() const override;
189  bool operator()( const Gaudi::ParticleID& pid ) const override {
190  return pid.isLepton() && ( 0 > pid.threeCharge() );
191  }
193  std::ostream& fillStream( std::ostream& s ) const override;
194  };
195 
201  class GAUDI_API Hadron : public Any {
202  public:
204  Hadron* clone() const override;
206  bool operator()( const Gaudi::ParticleID& pid ) const override { return pid.isHadron(); }
208  std::ostream& fillStream( std::ostream& s ) const override;
209  };
210 
216  class GAUDI_API Meson : public Hadron {
217  public:
219  Meson* clone() const override;
221  bool operator()( const Gaudi::ParticleID& pid ) const override { return pid.isMeson(); }
223  std::ostream& fillStream( std::ostream& s ) const override;
224  };
225 
231  class GAUDI_API Baryon : public Hadron {
232  public:
234  Baryon* clone() const override;
236  bool operator()( const Gaudi::ParticleID& pid ) const override { return pid.isBaryon(); }
238  std::ostream& fillStream( std::ostream& s ) const override;
239  };
240 
246  class GAUDI_API Charged : public Any {
247  public:
249  Charged* clone() const override;
251  bool operator()( const Gaudi::ParticleID& pid ) const override { return 0 != pid.threeCharge(); }
253  std::ostream& fillStream( std::ostream& s ) const override;
254  };
255 
261  class GAUDI_API Positive : public Charged {
262  public:
264  Positive* clone() const override;
266  bool operator()( const Gaudi::ParticleID& pid ) const override { return 0 < pid.threeCharge(); }
268  std::ostream& fillStream( std::ostream& s ) const override;
269  };
270 
276  class GAUDI_API Negative : public Charged {
277  public:
279  Negative* clone() const override;
281  bool operator()( const Gaudi::ParticleID& pid ) const override { return 0 > pid.threeCharge(); }
283  std::ostream& fillStream( std::ostream& s ) const override;
284  };
285 
291  class GAUDI_API Neutral : public Charged {
292  public:
294  Neutral* clone() const override;
296  bool operator()( const Gaudi::ParticleID& pid ) const override { return 0 == pid.threeCharge(); }
298  std::ostream& fillStream( std::ostream& s ) const override;
299  };
300 
306  class GAUDI_API Nucleus : public Any {
307  public:
309  Nucleus* clone() const override;
311  bool operator()( const Gaudi::ParticleID& pid ) const override { return pid.isNucleus(); }
313  std::ostream& fillStream( std::ostream& s ) const override;
314  };
315 
321  class GAUDI_API HasQuark : public Any {
322  public:
326  HasQuark* clone() const override;
328  bool operator()( const Gaudi::ParticleID& pid ) const override { return pid.hasQuark( m_quark ); }
330  std::ostream& fillStream( std::ostream& s ) const override;
331 
332  private:
334  Gaudi::ParticleID::Quark m_quark; // the quark to be tested
335  };
336 
342  class GAUDI_API JSpin : public Any {
343  public:
344  enum { InvalidSpin = 501 };
345 
347  JSpin( const int spin );
349  JSpin* clone() const override;
351  bool operator()( const Gaudi::ParticleID& pid ) const override { return spin() == pid.jSpin(); }
353  std::ostream& fillStream( std::ostream& s ) const override;
354 
356  bool valid() const override;
358  StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* /* svc */ ) const override;
359 
360  int spin() const { return m_spin; }
361 
362  private:
364  int m_spin;
365  };
366 
372  class GAUDI_API SSpin : public JSpin {
373  public:
375  SSpin( const int spin );
377  SSpin* clone() const override;
379  bool operator()( const Gaudi::ParticleID& pid ) const override { return spin() == pid.sSpin(); }
381  std::ostream& fillStream( std::ostream& s ) const override;
382  };
383 
389  class GAUDI_API LSpin : public SSpin {
390  public:
392  LSpin( const int spin );
394  LSpin* clone() const override;
396  bool operator()( const Gaudi::ParticleID& pid ) const override { return spin() == pid.lSpin(); }
398  std::ostream& fillStream( std::ostream& s ) const override;
399  };
400 
406  class GAUDI_API CTau : public Decays::iNode {
407  public:
409  CTau( const double low, const double high, const Gaudi::Interfaces::IParticlePropertySvc* svc = nullptr );
411  CTau* clone() const override;
412 
414  bool operator()( const Gaudi::ParticleID& pid ) const override;
416  std::ostream& fillStream( std::ostream& s ) const override;
418  bool valid() const override;
420  StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
421 
422  const Gaudi::Interfaces::IParticlePropertySvc* ppSvc() const { return m_ppSvc; }
423 
425  double low() const { return m_low; }
427  double high() const { return m_high; }
428 
429  StatusCode setService( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const;
430 
431  protected:
432  template <typename F, typename = std::is_invocable_r<bool, F, Gaudi::ParticleID>>
433  bool classify( Gaudi::ParticleID pid, F&& f ) const {
434  enum struct Classification { Accepted = +1, Rejected = -1, Unknown = 0 };
435  auto r = m_pids.with_lock(
436  []( const auto& pids, Gaudi::ParticleID pid ) {
437  return std::binary_search( pids.accepted.begin(), pids.accepted.end(), pid ) ? Classification::Accepted
438  : std::binary_search( pids.rejected.begin(), pids.rejected.end(), pid ) ? Classification::Rejected
439  : Classification::Unknown;
440  },
441  pid );
442  switch ( r ) {
443  case Classification::Accepted:
444  return true;
445  case Classification::Rejected:
446  return false;
447  case Classification::Unknown:
448  return add_( pid, std::invoke( std::forward<F>( f ), pid ) );
449  }
450  __builtin_unreachable();
451  }
452 
453  private:
454  bool add_( Gaudi::ParticleID pid, bool acc ) const;
455 
456  public:
458  return m_pids.with_lock(
459  [&]( const KnownPids& pids, MsgStream& s, auto const& ppSvc ) -> decltype( auto ) {
460  return Gaudi::ParticleProperties::printAsTable( pids.accepted, s, ppSvc );
461  },
462  s, m_ppSvc );
463  }
464 
465  private:
468  mutable Service m_ppSvc;
469 
470  public:
471  struct KnownPids {
474  };
475 
476  private:
478 
480  double m_low;
482  double m_high;
483  };
484 
490  class GAUDI_API ShortLived_ : public CTau {
491  public:
493  ShortLived_( const double high, const Gaudi::Interfaces::IParticlePropertySvc* svc = 0 );
497  ShortLived_* clone() const override;
499  std::ostream& fillStream( std::ostream& s ) const override;
500  };
501 
509  LongLived_( const double high, const Gaudi::Interfaces::IParticlePropertySvc* svc = 0 );
513  LongLived_* clone() const override;
515  std::ostream& fillStream( std::ostream& s ) const override;
516  };
517 
523  class GAUDI_API Stable : public LongLived_ {
524  public:
528  Stable* clone() const override;
530  std::ostream& fillStream( std::ostream& s ) const override;
531  };
532 
538  class GAUDI_API StableCharged : public Stable {
539  public:
543  StableCharged* clone() const override;
545  bool operator()( const Gaudi::ParticleID& pid ) const override;
547  std::ostream& fillStream( std::ostream& s ) const override;
548  };
549 
555  class GAUDI_API Mass : public CTau {
556  public:
558  Mass( const double low, const double high, const Gaudi::Interfaces::IParticlePropertySvc* svc = 0 );
560  Mass* clone() const override;
561 
563  bool operator()( const Gaudi::ParticleID& pid ) const override;
565  std::ostream& fillStream( std::ostream& s ) const override;
566  };
567 
573  class GAUDI_API Light : public Mass {
574  public:
576  Light( const double high, const Gaudi::Interfaces::IParticlePropertySvc* svc = 0 );
578  Light* clone() const override;
579 
581  std::ostream& fillStream( std::ostream& s ) const override;
582  };
583 
589  class GAUDI_API Heavy : public Mass {
590  public:
592  Heavy( const double low, const Gaudi::Interfaces::IParticlePropertySvc* svc = 0 );
594  Heavy* clone() const override;
595 
597  std::ostream& fillStream( std::ostream& s ) const override;
598  };
599 
608  class GAUDI_API PosID : public Decays::iNode {
609  public:
611  PosID* clone() const override;
613  bool operator()( const Gaudi::ParticleID& /* p */ ) const override;
615  std::ostream& fillStream( std::ostream& s ) const override;
617  bool valid() const override;
619  StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
620  };
621 
630  class GAUDI_API NegID : public Decays::iNode {
631  public:
633  NegID* clone() const override;
635  bool operator()( const Gaudi::ParticleID& /* p */ ) const override;
637  std::ostream& fillStream( std::ostream& s ) const override;
639  bool valid() const override;
641  StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
642  };
643 
644  class GAUDI_API Symbol : public Decays::iNode {
645  public:
647  Symbol( const std::string& sym );
649  Symbol* clone() const override;
650 
652  bool operator()( const Gaudi::ParticleID& pid ) const override;
654  std::ostream& fillStream( std::ostream& s ) const override;
656  bool valid() const override;
658  StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
659 
660  private:
663  };
664  } // namespace Nodes
665 } // namespace Gaudi::Decays
Gaudi::Decays::Nodes::CTau::Service
SmartIF< Gaudi::Interfaces::IParticlePropertySvc > Service
Definition: NodesPIDs.h:466
Gaudi::Decays::Nodes::Any
Definition: NodesPIDs.h:34
Gaudi::Decays::Nodes::JSpin::m_spin
int m_spin
the j-spin to be tested
Definition: NodesPIDs.h:364
Gaudi::Decays::Nodes::Nucleus::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:311
Gaudi::Decays::Node
Definition: iNode.h:74
DataOnDemand.Nodes
Nodes
Definition: DataOnDemand.py:34
Gaudi::Decays::Nodes::Lepton::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:124
Gaudi::ParticleID::Quark
Quark
Quark PDG IDs.
Definition: ParticleID.h:48
GaudiPartProp.Nodes.SSpin
SSpin
Definition: Nodes.py:266
Gaudi::Decays::Nodes::CTau::m_pids
Gaudi::cxx::SynchronizedValue< KnownPids > m_pids
Definition: NodesPIDs.h:477
std::string
STL class.
GaudiPartProp.Nodes.LongLived_
LongLived_
Definition: Nodes.py:304
Gaudi::ParticleID::isLepton
bool isLepton() const
Return if the PID is for a lepton.
Definition: ParticleID.cpp:243
Gaudi::Decays::Nodes::Pid::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:67
Gaudi::Decays::Nodes::Symbol
Definition: NodesPIDs.h:644
gaudirun.s
string s
Definition: gaudirun.py:346
Gaudi::Decays::Nodes::EllMinus
Definition: NodesPIDs.h:184
std::vector< Gaudi::ParticleID >
Gaudi::Decays::Nodes::CTau::KnownPids::accepted
std::vector< Gaudi::ParticleID > accepted
Definition: NodesPIDs.h:472
Gaudi::Decays::Nodes::Mass
Definition: NodesPIDs.h:555
Gaudi::Decays::Nodes::JSpin::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:351
Gaudi::Interfaces::IParticlePropertySvc
Definition: IParticlePropertySvc.h:29
Gaudi::Decays::Nodes::Positive::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:266
Gaudi::ParticleID::isHadron
bool isHadron() const
Return if the PID is for a hadron.
Definition: ParticleID.cpp:241
Gaudi::Decays::Nodes::LSpin
Definition: NodesPIDs.h:389
Gaudi::Decays::Nodes::LSpin::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:396
Gaudi::Decays::Nodes::CTau::classify
bool classify(Gaudi::ParticleID pid, F &&f) const
Definition: NodesPIDs.h:433
Nodes.h
Gaudi::Decays::Nodes::EllPlus::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:173
Gaudi::ParticleID::isMeson
bool isMeson() const
Return if the PID is for a meson.
Definition: ParticleID.cpp:202
IParticlePropertySvc.h
Gaudi::Decays::Nodes::Meson
Definition: NodesPIDs.h:216
Gaudi::Decays::Nodes::JSpin
Definition: NodesPIDs.h:342
GaudiPartProp.Nodes.Heavy
Heavy
Definition: Nodes.py:312
Gaudi::Decays::Nodes::EllPlus
Definition: NodesPIDs.h:168
Gaudi::Decays::Nodes::Baryon
Definition: NodesPIDs.h:231
Gaudi::Decays::Nodes::CTau::m_low
double m_low
low edge
Definition: NodesPIDs.h:480
GaudiPartProp.Nodes.JSpin
JSpin
Definition: Nodes.py:265
Gaudi::ParticleID::sSpin
int sSpin() const
Return 2S+1, where S is the spin, valid only for mesons.
Definition: ParticleID.cpp:361
GaudiPartProp.Nodes.ShortLived_
ShortLived_
Definition: Nodes.py:306
Gaudi::Decays::Nodes::Nu::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:139
Gaudi::ParticleProperties::printAsTable
GAUDI_API std::string printAsTable(const std::vector< const Gaudi::ParticleProperty * > &particles, const Gaudi::Interfaces::IParticlePropertySvc *service=0)
print a list of properties in a form of the table
Definition: ParticleProperty.cpp:319
Gaudi::Decays::Nodes::Stable
Definition: NodesPIDs.h:523
Gaudi::Decays::Nodes::Pid::m_item
Decays::Decay::Item m_item
the decay item itself
Definition: NodesPIDs.h:85
Gaudi::Decays::Nodes::Pid::item
const Decays::Decay::Item & item() const
get DaVinci Decay item
Definition: NodesPIDs.h:79
Gaudi::Decays::Nodes::CTau::printAcceptedAsTable
MsgStream & printAcceptedAsTable(MsgStream &s) const
Definition: NodesPIDs.h:457
Gaudi::Decays::Nodes::Meson::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:221
StatusCode
Definition: StatusCode.h:65
Gaudi::ParticleID::lSpin
int lSpin() const
Return 2L+1, where L is the orbital angular momentum, valid only for mesons.
Definition: ParticleID.cpp:382
Gaudi::Decays::Nodes::CTau::KnownPids
Definition: NodesPIDs.h:471
std::ostream
STL class.
axes_labels.check
def check(causes, result)
Definition: axes_labels.py:47
Gaudi::Decays::Nodes::HasQuark
Definition: NodesPIDs.h:321
Gaudi::Decays::Nodes::Nu
Definition: NodesPIDs.h:134
Gaudi::Decays::validate
StatusCode validate(Iterator begin, Iterator end, const Gaudi::Interfaces::IParticlePropertySvc *svc)
validate trees/nodes
Definition: Nodes.h:53
ParticleID.pids
pids
Definition: ParticleID.py:70
Gaudi::ParticleID::isNucleus
bool isNucleus() const
Return if the PID is for a nucleus.
Definition: ParticleID.cpp:248
GaudiPartProp.Nodes.Mass
Mass
Definition: Nodes.py:310
SynchronizedValue.h
Gaudi::Decays::Nodes::StableCharged
Definition: NodesPIDs.h:538
GaudiPartProp.Nodes.Pid
Pid
Definition: Nodes.py:250
SmartIF< Gaudi::Interfaces::IParticlePropertySvc >
Gaudi::Decays::Nodes::Symbol::m_symbol
Decays::Node m_symbol
the actual symbol
Definition: NodesPIDs.h:662
Gaudi::ParticleProperty
Definition: ParticleProperty.h:37
Gaudi::Decays::Nodes::Hadron::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:206
MsgStream
Definition: MsgStream.h:33
Gaudi::Decays::Nodes::Hadron
Definition: NodesPIDs.h:201
Gaudi::Decays::Nodes::CTau::high
double high() const
get high edge
Definition: NodesPIDs.h:427
Gaudi::Decays::Nodes::Negative
Definition: NodesPIDs.h:276
Gaudi::Decays::Nodes::CTau::KnownPids::rejected
std::vector< Gaudi::ParticleID > rejected
Definition: NodesPIDs.h:473
GaudiPartProp.Nodes.CTau
CTau
Definition: Nodes.py:303
Gaudi::Decays::Nodes::Negative::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:281
Gaudi::ParticleID::isBaryon
bool isBaryon() const
Return if the PID is for a baryon.
Definition: ParticleID.cpp:215
Gaudi::Decays::Nodes::Lepton
Definition: NodesPIDs.h:119
Gaudi::Decays::Nodes::Neutral
Definition: NodesPIDs.h:291
Gaudi::Decays::Nodes::CTau
Definition: NodesPIDs.h:406
Gaudi::ParticleID::abspid
constexpr unsigned int abspid() const
Absolute value of the PDG ID.
Definition: ParticleID.h:56
Gaudi::Decays
Definition: CC.h:17
Gaudi::Decays::Nodes::Neutral::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:296
Gaudi::Decays::Nodes::Baryon::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:236
Gaudi::Decays::Nodes::SSpin
Definition: NodesPIDs.h:372
GaudiPartProp.Nodes.Symbol
Symbol
Definition: Nodes.py:313
Gaudi::ParticleID::pid
int pid() const
Retrieve the PDG ID.
Definition: ParticleID.h:54
GaudiPartProp.Nodes.StableCharged
StableCharged
Definition: Nodes.py:309
GaudiPartProp.Nodes.LSpin
LSpin
Definition: Nodes.py:267
Gaudi::Decays::Nodes::CC
Definition: NodesPIDs.h:94
GaudiPartProp.Nodes.HasQuark
HasQuark
Definition: Nodes.py:264
Gaudi::Decays::valid
bool valid(Iterator begin, Iterator end)
check the validness of the trees or nodes
Definition: Nodes.h:36
Gaudi::Decays::Nodes::Nucleus
Definition: NodesPIDs.h:306
Gaudi::ParticleID::jSpin
int jSpin() const
Return 2J+1, where J is the total spin, valid for all particles.
Definition: ParticleID.cpp:313
Gaudi::Decays::Nodes::SSpin::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:379
Gaudi::ParticleID
Definition: ParticleID.h:43
Gaudi::Decays::Nodes::Pid
Definition: NodesPIDs.h:54
Gaudi::cxx::SynchronizedValue
Definition: SynchronizedValue.h:36
Gaudi::Decays::Nodes::Pid::check
bool check(Gaudi::ParticleID pid) const
Definition: NodesPIDs.h:76
Gaudi::Decays::Nodes::NegID
Definition: NodesPIDs.h:630
Gaudi::Decays::Nodes::Positive
Definition: NodesPIDs.h:261
Gaudi::Decays::Decay::Item
Definition: Decay.h:39
Gaudi::Decays::iNode
Definition: iNode.h:35
Gaudi::Decays::Nodes::LongLived_
Definition: NodesPIDs.h:507
GaudiPartProp.Nodes.CC
CC
Definition: Nodes.py:251
GaudiPartProp.Nodes.Light
Light
Definition: Nodes.py:311
Gaudi::Decays::Nodes::JSpin::spin
int spin() const
Definition: NodesPIDs.h:360
Gaudi::Decays::Nodes::Charged
Definition: NodesPIDs.h:246
Gaudi::Decays::Nodes::CTau::m_ppSvc
Service m_ppSvc
the service :
Definition: NodesPIDs.h:468
Gaudi::Decays::Nodes::CTau::m_high
double m_high
high edge
Definition: NodesPIDs.h:482
std::binary_search
T binary_search(T... args)
Gaudi::Decays::Nodes::Charged::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:251
Gaudi::Decays::Nodes::HasQuark::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:328
Gaudi::Decays::Nodes::Ell
Definition: NodesPIDs.h:151
Gaudi::Decays::Nodes::Ell::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:156
Gaudi::Decays::Nodes::CTau::low
double low() const
get low edge
Definition: NodesPIDs.h:425
Gaudi::Decays::Nodes::CTau::ppSvc
const Gaudi::Interfaces::IParticlePropertySvc * ppSvc() const
Definition: NodesPIDs.h:422
Gaudi::Decays::Nodes::EllMinus::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:189
ParticleProperty.h
Gaudi::Decays::Nodes::Light
Definition: NodesPIDs.h:573
GaudiPartProp.Nodes.Stable
Stable
Definition: Nodes.py:308
Gaudi::Decays::Nodes::Heavy
Definition: NodesPIDs.h:589
Gaudi::Decays::Nodes::HasQuark::m_quark
Gaudi::ParticleID::Quark m_quark
the quark to be tested
Definition: NodesPIDs.h:334
Gaudi::ParticleID::hasQuark
bool hasQuark(const Quark &q) const
Return if the PID is a particle containing a specified quark flavor.
Definition: ParticleID.cpp:257
GAUDI_API
#define GAUDI_API
Definition: Kernel.h:81
Gaudi::Decays::Nodes::CC::operator()
bool operator()(const Gaudi::ParticleID &pid) const override
MANDATORY: the only one essential method.
Definition: NodesPIDs.h:109
MsgStream.h
Gaudi::Decays::Nodes::PosID
Definition: NodesPIDs.h:608
Gaudi::Decays::Nodes::ShortLived_
Definition: NodesPIDs.h:490
Gaudi::ParticleID::threeCharge
int threeCharge() const
Return three times the charge, in units of e+, valid for all particles.
Definition: ParticleID.cpp:269