rivet is hosted by Hepforge, IPPP Durham
NonPromptFinalState.hh
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #ifndef RIVET_NonPromptFinalState_HH
00003 #define RIVET_NonPromptFinalState_HH
00004 
00005 #include "Rivet/Projections/FinalState.hh"
00006 
00007 namespace Rivet {
00008 
00009 
00010   /// @brief Find final state particles NOT directly connected to the hard process.
00011   ///
00012   /// See PromptFinalState for details.
00013   class NonPromptFinalState : public FinalState {
00014   public:
00015 
00016     /// @name Constructors
00017     //@{
00018 
00019     // Constructor from a final state.
00020     NonPromptFinalState(const FinalState& fsp, bool accepttaudecays=false, bool acceptmudecays=false);
00021 
00022     /// Constructor from a Cut (and implicit general FS).
00023     NonPromptFinalState(const Cut& c, bool accepttaudecays=false, bool acceptmudecays=false);
00024 
00025     // /// Constructor from a Cut and optional FinalState.
00026     // NonPromptFinalState(const Cut& c, const FinalState& fsp=FinalState(),
00027     //                     bool accepttaudecays=false, bool acceptmudecays=false);
00028 
00029     /// Clone on the heap.
00030     DEFAULT_RIVET_PROJ_CLONE(NonPromptFinalState);
00031 
00032     //@}
00033 
00034     /// Treat particles from decays of prompt muons as non-prompt?
00035     void acceptMuonDecays(bool acc=true) { _acceptMuDecays = acc; }
00036     /// Treat particles from decays of prompt taus as non-prompt?
00037     void acceptTauDecays(bool acc=true) { _acceptTauDecays = acc; }
00038 
00039 
00040   protected:
00041 
00042     /// Apply the projection on the supplied event.
00043     void project(const Event& e);
00044 
00045     /// Compare projections.
00046     int compare(const Projection& p) const;
00047 
00048   private:
00049 
00050     bool _acceptMuDecays, _acceptTauDecays;
00051 
00052   };
00053 
00054 }
00055 
00056 
00057 #endif