00001 // -*- C++ -*- 00002 #ifndef RIVET_ChargedFinalState_HH 00003 #define RIVET_ChargedFinalState_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 /// Project only charged final state particles. 00016 class ChargedFinalState : public FinalState { 00017 00018 public: 00019 00020 /// @name Constructors 00021 //@{ 00022 ChargedFinalState(const FinalState& fsp); 00023 00024 /// Single eta-range constructor. 00025 ChargedFinalState(double mineta = -MAXRAPIDITY, 00026 double maxeta = MAXRAPIDITY, 00027 double minpt = 0.0*GeV); 00028 00029 /// A constructor which allows to specify multiple eta ranges 00030 /// and the min \f$ p_T \f$. 00031 ChargedFinalState(const vector<pair<double, double> >& etaRanges, 00032 double minpt = 0.0*GeV); 00033 00034 /// Clone on the heap. 00035 virtual const Projection* clone() const { 00036 return new ChargedFinalState(*this); 00037 } 00038 //@} 00039 00040 00041 protected: 00042 00043 /// Apply the projection on the supplied event. 00044 void project(const Event& e); 00045 00046 /// Compare projections. 00047 int compare(const Projection& p) const; 00048 }; 00049 00050 00051 } 00052 00053 00054 #endif