rivet is hosted by Hepforge, IPPP Durham
UnstableFinalState.hh
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #ifndef RIVET_UnstableFinalState_HH
00003 #define RIVET_UnstableFinalState_HH
00004 
00005 #include "Rivet/Projections/FinalState.hh"
00006 
00007 namespace Rivet {
00008 
00009 
00010   /// @brief Project out all physical-but-decayed particles in an event.
00011   ///
00012   /// The particles returned by the UFS are unique unstable particles, such as
00013   /// hadrons which are decayed by the generator. If, for example, you set Ks
00014   /// and Lambda particles stable in the generator, they will not be returned by
00015   /// the UFS. Also, you should be aware that all unstable particles in a decay
00016   /// chain are returned: if you are looking for something like the number of B
00017   /// hadrons in an event and there is a decay chain from e.g. B** -> B, you
00018   /// will count both B mesons unless you are careful to check for
00019   /// ancestor/descendent relations between the particles. Duplicate particles
00020   /// in the event record, i.e. those which differ only in bookkeeping details
00021   /// or photon emissions, are stripped from the returned particles collection.
00022   ///
00023   /// @todo Inherit directly from ParticleFinder, rename as UnstableFinder, and make TauFinder inherit/use
00024   class UnstableFinalState : public FinalState {
00025   public:
00026 
00027     /// @name Standard constructors and destructors.
00028     //@{
00029 
00030     /// Cut-based / default constructor
00031     UnstableFinalState(const Cut& c=Cuts::open())
00032       : FinalState(c)
00033     {
00034       setName("UnstableFinalState");
00035     }
00036 
00037     /// Constructor from cuts.
00038     ///
00039     /// May specify the minimum and maximum pseudorapidity \f$ \eta \f$ and the
00040     /// min \f$ p_T \f$
00041     DEPRECATED("Use the version with a Cut argument")
00042     UnstableFinalState(double mineta, double maxeta, double minpt=0.0*GeV)
00043     : FinalState(Cuts::etaIn(mineta, maxeta) && Cuts::pT > minpt)
00044     {
00045       setName("UnstableFinalState");
00046     }
00047 
00048 
00049     /// Clone on the heap.
00050     virtual const Projection* clone() const {
00051       return new UnstableFinalState(*this);
00052     }
00053 
00054     //@}
00055 
00056   protected:
00057 
00058     /// Apply the projection to the event.
00059     virtual void project(const Event& e);
00060 
00061   };
00062 
00063 
00064 }
00065 
00066 
00067 #endif