rivet is hosted by Hepforge, IPPP Durham
PromptFinalState.hh
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #ifndef RIVET_PromptFinalState_HH
00003 #define RIVET_PromptFinalState_HH
00004 
00005 #include "Rivet/Projections/FinalState.hh"
00006 
00007 namespace Rivet {
00008 
00009 
00010   /// @brief Find final state particles directly connected to the hard process.
00011   ///
00012   /// The definition of "prompt" used in Rivet is that from high-scale physics, i.e.
00013   /// particles directly connected to the hard process in an interaction, regardless
00014   /// of realistic reconstructibility of displaced vertices, etc. By construction
00015   /// hadrons cannot be considered prompt as they will be colour connected to other
00016   /// parts of the event through non-perturbative effects: this projection can
00017   /// return electrons, muons, photons, and exotic particles which do not have a
00018   /// hadron in their post-hadronization ancestor chain. Flags exist to choose
00019   /// whether intermediate tau or muon decays invalidate a particle's promptness.
00020   ///
00021   /// @todo Decide how to treat brem photons off prompt leptons -- are they also prompt? "Decay" does not change the lepton PID...
00022   class PromptFinalState : public FinalState {
00023   public:
00024 
00025     /// @name Constructors
00026     //@{
00027 
00028     // Constructor from a final state.
00029     PromptFinalState(const FinalState& fsp, bool accepttaudecays=false, bool acceptmudecays=false);
00030 
00031     /// Constructor from a Cut.
00032     PromptFinalState(const Cut& c, bool accepttaudecays=false, bool acceptmudecays=false);
00033 
00034     // /// Constructor from a Cut and optional FinalState.
00035     // PromptFinalState(const Cut& c, const FinalState& fsp=FinalState(), bool accepttaudecays, bool acceptmudecays);
00036 
00037     /// Clone on the heap.
00038     DEFAULT_RIVET_PROJ_CLONE(PromptFinalState);
00039 
00040     //@}
00041 
00042     /// Accept particles from decays of prompt muons as themselves being prompt?
00043     void acceptMuonDecays(bool acc=true) { _acceptMuDecays = acc; }
00044     /// Accept particles from decays of prompt taus as themselves being prompt?
00045     void acceptTauDecays(bool acc=true) { _acceptTauDecays = acc; }
00046 
00047 
00048   protected:
00049 
00050     /// Apply the projection on the supplied event.
00051     void project(const Event& e);
00052 
00053     /// Compare projections.
00054     int compare(const Projection& p) const;
00055 
00056 
00057   private:
00058 
00059     bool _acceptMuDecays, _acceptTauDecays;
00060 
00061   };
00062 
00063 }
00064 
00065 
00066 #endif