File indexing completed on 2025-05-12 09:05:02
0001
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
0020 class InvisibleFinalState : public FinalState {
0021 public:
0022
0023
0024
0025
0026
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
0039 RIVET_DEFAULT_PROJ_CLONE(InvisibleFinalState);
0040
0041
0042
0043
0044 using Projection::operator =;
0045
0046
0047
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
0057 void project(const Event& e);
0058
0059
0060 CmpState compare(const Projection& p) const;
0061
0062
0063 protected:
0064
0065 bool _requirePromptness, _taudecays, _mudecays;
0066 };
0067
0068
0069 }
0070
0071 #endif