Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef RIVET_PromptFinalState_HH
0003 #define RIVET_PromptFinalState_HH
0004 
0005 #include "Rivet/Projections/FinalState.hh"
0006 #include "Rivet/Projections/PromptFinalState.fhh"
0007 
0008 namespace Rivet {
0009   
0010 
0011   /// @brief Find final state particles directly connected to the hard process.
0012   ///
0013   /// The definition of "prompt" used in Rivet is that from high-scale physics, i.e.
0014   /// particles directly connected to the hard process in an interaction, regardless
0015   /// of realistic reconstructibility of displaced vertices, etc. By construction
0016   /// hadrons cannot be considered prompt as they will be colour connected to other
0017   /// parts of the event through non-perturbative effects: this projection can
0018   /// return electrons, muons, photons, and exotic particles which do not have a
0019   /// hadron in their post-hadronization ancestor chain. Flags exist to choose
0020   /// whether intermediate tau or muon decays invalidate a particle's promptness.
0021   ///
0022   /// @todo Decide how to treat brem photons off prompt leptons -- are they also prompt? "Decay" does not change the lepton PID...
0023   ///
0024   /// @todo Use enums for tau, mu, brem
0025   class PromptFinalState : public FinalState {
0026   public:
0027 
0028     /// @name Constructors
0029     /// @{
0030 
0031     /// Constructor without cuts
0032     PromptFinalState(TauDecaysAs taudecays=TauDecaysAs::NONPROMPT, MuDecaysAs mudecays=MuDecaysAs::NONPROMPT);
0033 
0034     /// Constructor from a cut
0035     PromptFinalState(const Cut& c, TauDecaysAs taudecays=TauDecaysAs::NONPROMPT, MuDecaysAs mudecays=MuDecaysAs::NONPROMPT);
0036 
0037     // Constructor from a FinalState
0038     PromptFinalState(const FinalState& fsp, TauDecaysAs taudecays=TauDecaysAs::NONPROMPT, MuDecaysAs mudecays=MuDecaysAs::NONPROMPT);
0039 
0040     // Constructor from a FinalState with an extra cut
0041     PromptFinalState(const FinalState& fsp, const Cut& c, TauDecaysAs taudecays=TauDecaysAs::NONPROMPT, MuDecaysAs mudecays=MuDecaysAs::NONPROMPT);
0042     
0043     /// Clone on the heap.
0044     RIVET_DEFAULT_PROJ_CLONE(PromptFinalState);
0045 
0046     /// @}
0047 
0048     /// Import to avoid warnings about overload-hiding
0049     using Projection::operator =;
0050 
0051 
0052     /// Accept leptons from decays of prompt muons as themselves being prompt?
0053     void acceptMuonDecays(bool acc=true) { _mudecays = acc; }
0054     /// Accept leptons from decays of prompt taus as themselves being prompt?
0055     void acceptTauDecays(bool acc=true) { _taudecays = acc; }
0056 
0057 
0058     /// Apply the projection on the supplied event.
0059     void project(const Event& e);
0060 
0061     /// Compare projections.
0062     CmpState compare(const Projection& p) const;
0063 
0064 
0065   protected:
0066 
0067     bool _mudecays, _taudecays;
0068 
0069   };
0070 
0071 
0072 }
0073 
0074 #endif