Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-05-12 09:05:03

0001 // -*- C++ -*-
0002 #ifndef RIVET_UnstableParticles_HH
0003 #define RIVET_UnstableParticles_HH
0004 
0005 #include "Rivet/Projections/FinalState.hh"
0006 
0007 namespace Rivet {
0008 
0009 
0010   /// @brief Project out all physical-but-decayed particles in an event.
0011   ///
0012   /// The particles returned by are unique unstable particles, such as hadrons
0013   /// which are decayed by the generator. If, for example, you set Ks and Lambda
0014   /// particles stable in the generator, they will not be returned. Also, you
0015   /// should be aware that all unstable particles in a decay chain are returned:
0016   /// if you are looking for something like the number of B hadrons in an event
0017   /// and there is a decay chain from e.g. B** -> B, you will count both B
0018   /// mesons unless you are careful to check for ancestor/descendent relations
0019   /// between the particles. Duplicate particles in the event record, i.e. those
0020   /// which differ only in bookkeeping details or photon emissions, are stripped
0021   /// from the returned particles collection.
0022   ///
0023   /// @todo Convert to a general ParticleFinder since this is explicitly not a final state... but needs care
0024   /// @todo Add a FIRST/LAST/ANY enum to specify the mode for uniquifying replica chains (default = LAST)
0025   class UnstableParticles : public FinalState {
0026   public:
0027 
0028     /// @name Standard constructors and destructors.
0029     /// @{
0030 
0031     /// Cut-based / default constructor
0032     UnstableParticles(const Cut& c=Cuts::open())
0033       : FinalState(c)
0034     {
0035       setName("UnstableParticles");
0036     }
0037 
0038     /// Clone on the heap.
0039     RIVET_DEFAULT_PROJ_CLONE(UnstableParticles);
0040 
0041     /// @}
0042 
0043     /// Import to avoid warnings about overload-hiding
0044     using Projection::operator =;
0045 
0046 
0047   protected:
0048 
0049     /// Apply the projection to the event.
0050     virtual void project(const Event& e);
0051 
0052   };
0053 
0054 
0055   // Backward compatibility alias
0056   using UnstableFinalState = UnstableParticles;
0057 
0058 
0059 }
0060 
0061 
0062 #endif