00001 // -*- C++ -*- 00002 #ifndef RIVET_VisibleFinalState_HH 00003 #define RIVET_VisibleFinalState_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 #include "Rivet/Projections/VetoedFinalState.hh" 00012 00013 namespace Rivet { 00014 00015 00016 /// @brief Final state modifier excluding particles which are not experimentally visible 00017 class VisibleFinalState : public FinalState { 00018 public: 00019 00020 /// @name Constructors 00021 //@{ 00022 00023 /// Default constructor. 00024 VisibleFinalState(); 00025 00026 /// Constructor with min and max pseudorapidity \f$ \eta \f$ and min \f$ p_T \f$ (in GeV). 00027 VisibleFinalState(double mineta = -MAXRAPIDITY, 00028 double maxeta = MAXRAPIDITY, 00029 double minpt = 0.0*GeV); 00030 00031 /// Constructor with specific FinalState. 00032 VisibleFinalState(const FinalState& fsp); 00033 00034 /// Clone on the heap. 00035 virtual const Projection* clone() const { 00036 return new VisibleFinalState(*this); 00037 } 00038 00039 //@} 00040 00041 00042 protected: 00043 00044 /// Apply the projection on the supplied event. 00045 void project(const Event& e); 00046 00047 /// Compare projections. 00048 int compare(const Projection& p) const; 00049 00050 }; 00051 00052 00053 } 00054 00055 #endif