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 #include "Rivet/Particle.hh"
00007 #include "Rivet/Event.hh"
00008 
00009 namespace Rivet {
00010 
00011 
00012   /// @brief Project out all physical-but-decayed particles in an event.
00013   ///
00014   /// The particles returned by the UFS are unique unstable particles, such as
00015   /// hadrons which are decayed by the generator. If, for example, you set Ks
00016   /// and Lambda particles stable in the generator, they will not be returned by
00017   /// the UFS. Also, you should be aware that all unstable particles in a decay
00018   /// chain are returned: if you are looking for something like the number of B
00019   /// hadrons in an event and there is a decay chain from e.g. B** -> B, you
00020   /// will count both B mesons unless you are careful to check for
00021   /// ancestor/descendent relations between the particles. Duplicate particles
00022   /// in the event record, i.e. those which differ only in bookkeeping details
00023   /// or photon emissions, are stripped from the returned particles collection.
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 = -MAXRAPIDITY,
00033                        double maxeta =  MAXRAPIDITY,
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