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     /// The default constructor. May specify the minimum and maximum
00031     /// pseudorapidity \f$ \eta \f$ and the min \f$ p_T \f$ (in GeV).
00032     UnstableFinalState(double mineta = -MAXDOUBLE,
00033                        double maxeta =  MAXDOUBLE,
00034                        double minpt  =  0.0*GeV)
00035       : FinalState(mineta, maxeta, minpt)
00036     {
00037       setName("UnstableFinalState");
00038     }
00039 
00040 
00041     /// Clone on the heap.
00042     virtual const Projection* clone() const {
00043       return new UnstableFinalState(*this);
00044     }
00045 
00046     //@}
00047 
00048   protected:
00049 
00050     /// Apply the projection to the event.
00051     virtual void project(const Event& e);
00052 
00053   };
00054 
00055 
00056 }
00057 
00058 
00059 #endif