rivet is hosted by Hepforge, IPPP Durham
NeutralFinalState.hh
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #ifndef RIVET_NeutralFinalState_HH
00003 #define RIVET_NeutralFinalState_HH
00004 
00005 #include "Rivet/Tools/Logging.hh"
00006 #include "Rivet/Rivet.hh"
00007 #include "Rivet/Particle.hh"
00008 #include "Rivet/Event.hh"
00009 #include "Rivet/Projection.hh"
00010 #include "Rivet/Projections/FinalState.hh"
00011 
00012 namespace Rivet {
00013 
00014 
00015   /// @brief Project only neutral final state particles.
00016   class NeutralFinalState : public FinalState {
00017 
00018   public:
00019 
00020     /// @name Constructors
00021     //@{
00022     NeutralFinalState(const FinalState& fsp)  : _Etmin(0.0*GeV) {
00023       setName("NeutralFinalState");
00024       addProjection(fsp, "FS");
00025     }
00026 
00027     NeutralFinalState(double mineta = -MAXRAPIDITY,
00028                       double maxeta =  MAXRAPIDITY,
00029                       double minEt  =  0.0*GeV) : _Etmin(minEt)
00030     {
00031       setName("NeutralFinalState");
00032       addProjection(FinalState(mineta, maxeta, 0.0*GeV), "FS");
00033     }
00034 
00035     /// Clone on the heap.
00036     virtual const Projection* clone() const {
00037       return new NeutralFinalState(*this);
00038     }
00039     //@}
00040 
00041   protected:
00042 
00043     /// Apply the projection on the supplied event.
00044     void project(const Event& e);
00045 
00046     /// The minimum allowed transverse energy.
00047     double _Etmin;
00048 
00049     /// Compare projections.
00050     int compare(const Projection& p) const;
00051   };
00052 
00053 
00054 }
00055 
00056 
00057 #endif