Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef RIVET_InvisibleFinalState_HH
0003 #define RIVET_InvisibleFinalState_HH
0004 
0005 #include "Rivet/Tools/Logging.hh"
0006 #include "Rivet/Config/RivetCommon.hh"
0007 #include "Rivet/Particle.hh"
0008 #include "Rivet/Event.hh"
0009 #include "Rivet/Projection.hh"
0010 #include "Rivet/Projections/FinalState.hh"
0011 #include "Rivet/Projections/PromptFinalState.hh"
0012 
0013 namespace Rivet {
0014 
0015 
0016   enum class OnlyPrompt { YES, NO };
0017   
0018   
0019   /// @brief Final state modifier excluding particles which are experimentally visible
0020   class InvisibleFinalState : public FinalState {
0021   public:
0022 
0023     /// @name Constructors
0024     /// @{
0025 
0026     /// Constructor with specific FinalState.
0027     InvisibleFinalState(OnlyPrompt requirepromptness=OnlyPrompt::NO,
0028             TauDecaysAs taudecays=TauDecaysAs::NONPROMPT,
0029             MuDecaysAs mudecays=MuDecaysAs::NONPROMPT)
0030       : _requirePromptness(requirepromptness == OnlyPrompt::YES),
0031         _taudecays(taudecays == TauDecaysAs::PROMPT),
0032         _mudecays(mudecays == MuDecaysAs::PROMPT)
0033     {
0034       setName("InvisibleFinalState");
0035       declare(FinalState(), "FS");
0036     }
0037 
0038     /// Clone on the heap.
0039     RIVET_DEFAULT_PROJ_CLONE(InvisibleFinalState);
0040 
0041     /// @}
0042 
0043     /// Import to avoid warnings about overload-hiding
0044     using Projection::operator =;
0045 
0046 
0047     /// Require accepted particles to be prompt
0048     void requirePromptness(bool acc=true,
0049                TauDecaysAs taudecays=TauDecaysAs::NONPROMPT,
0050                MuDecaysAs mudecays=MuDecaysAs::NONPROMPT) {
0051       _requirePromptness = acc;
0052       _taudecays = (taudecays == TauDecaysAs::PROMPT);
0053       _mudecays = (mudecays == MuDecaysAs::PROMPT);
0054     }
0055 
0056     /// Apply the projection on the supplied event.
0057     void project(const Event& e);
0058 
0059     /// Compare projections.
0060     CmpState compare(const Projection& p) const;
0061 
0062 
0063   protected:
0064 
0065     bool _requirePromptness, _taudecays, _mudecays;
0066   };
0067 
0068 
0069 }
0070 
0071 #endif