Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-09-16 09:07:54

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   ///
0025   /// @todo Add a FIRST/LAST/ANY enum to specify the mode for uniquifying replica chains (default = LAST)
0026   class UnstableParticles : public FinalState {
0027   public:
0028 
0029     /// @name Standard constructors and destructors.
0030     /// @{
0031 
0032     /// Cut-based / default constructor
0033     UnstableParticles(const Cut& c=Cuts::open())
0034       : FinalState(c)
0035     {
0036       setName("UnstableParticles");
0037     }
0038 
0039     /// Clone on the heap.
0040     RIVET_DEFAULT_PROJ_CLONE(UnstableParticles);
0041 
0042     /// @}
0043 
0044     /// Import to avoid warnings about overload-hiding
0045     using Projection::operator =;
0046 
0047 
0048   protected:
0049 
0050     /// Apply the projection to the event.
0051     virtual void project(const Event& e);
0052 
0053   };
0054 
0055 
0056   // Backward compatibility alias
0057   using UnstableFinalState = UnstableParticles;
0058 
0059 
0060 }
0061 
0062 
0063 #endif