00001 // -*- C++ -*- 00002 #ifndef RIVET_InitialQuarks_HH 00003 #define RIVET_InitialQuarks_HH 00004 00005 #include "Rivet/Projection.hh" 00006 #include "Rivet/Particle.hh" 00007 #include "Rivet/Event.hh" 00008 00009 namespace Rivet { 00010 00011 00012 /// Project out quarks from the hard process in e+ e- -> Z0 events 00013 /// @deprecated This is a very dangerous and specific projection! Use e.g. PID::hasBottom and friends instead 00014 class InitialQuarks : public Projection { 00015 public: 00016 00017 /// @name Standard constructors and destructors. 00018 //@{ 00019 /// The default constructor. May specify the minimum and maximum 00020 /// pseudorapidity \f$ \eta \f$ and the min \f$ p_T \f$ (in GeV). 00021 InitialQuarks() 00022 { 00023 setName("InitialQuarks"); 00024 } 00025 00026 00027 /// Clone on the heap. 00028 virtual const Projection* clone() const { 00029 return new InitialQuarks(*this); 00030 } 00031 //@} 00032 00033 /// Access the projected final-state particles. 00034 virtual const ParticleVector& particles() const { return _theParticles; } 00035 00036 /// Is this final state empty? 00037 virtual bool empty() const { return _theParticles.empty(); } 00038 /// @deprecated Is this final state empty? 00039 virtual bool isEmpty() const { return _theParticles.empty(); } 00040 00041 00042 protected: 00043 00044 /// Apply the projection to the event. 00045 virtual void project(const Event& e); 00046 00047 /// Compare projections. 00048 virtual int compare(const Projection& p) const; 00049 00050 00051 protected: 00052 00053 /// The final-state particles. 00054 ParticleVector _theParticles; 00055 00056 }; 00057 00058 } 00059 00060 00061 #endif