Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:06:48

0001 // -*- C++ -*-
0002 #ifndef RIVET_FinalState_HH
0003 #define RIVET_FinalState_HH
0004 
0005 #include "Rivet/Projections/ParticleFinder.hh"
0006 
0007 namespace Rivet {
0008 
0009 
0010   /// @brief Project out all final-state particles in an event.
0011   /// Probably the most important projection in Rivet!
0012   class FinalState : public ParticleFinder {
0013   public:
0014 
0015     /// @name Standard constructors etc.
0016     /// @{
0017 
0018     /// Construction using Cuts object
0019     FinalState(const Cut& c=Cuts::OPEN);
0020 
0021     /// Construction using another FinalState and a Cuts object
0022     FinalState(const FinalState& fsp, const Cut& c);
0023 
0024     /// Clone on the heap.
0025     RIVET_DEFAULT_PROJ_CLONE(FinalState);
0026 
0027     /// @}
0028 
0029 
0030     /// Import to avoid warnings about overload-hiding
0031     using Projection::operator =;
0032 
0033 
0034     /// Apply the projection to the event.
0035     virtual void project(const Event& e);
0036 
0037     /// Compare projections.
0038     virtual CmpState compare(const Projection& p) const;
0039 
0040     /// Decide if a particle is to be accepted or not.
0041     /// @todo Rename to _accept or acceptFinal?
0042     virtual bool accept(const Particle& p) const;
0043 
0044 
0045   private:
0046 
0047     // Hide lossy copy constructors for all classes derived from FinalState
0048     /// @todo Can this be done better with the construction deletion syntax, or does that not inherit?
0049     template<typename T>
0050     FinalState(const T& rhs) = delete;
0051     template<typename T>
0052     const FinalState& operator=(const T& rhs) = delete;
0053 
0054   };
0055 
0056 
0057 }
0058 
0059 #endif