00001 // -*- C++ -*- 00002 #ifndef RIVET_TotalVisibleMomentum_HH 00003 #define RIVET_TotalVisibleMomentum_HH 00004 00005 #include "Rivet/Rivet.hh" 00006 #include "Rivet/Projection.hh" 00007 #include "Rivet/Projections/FinalState.hh" 00008 #include "Rivet/Particle.hh" 00009 #include "Rivet/Event.hh" 00010 00011 namespace Rivet { 00012 00013 00014 /// @brief Get the total energy vector, allowing missing \f$ E_T \f$ etc. to be calculated. 00015 /// @deprecated This is confusing because the visibility is not automatic. Use MissingMomentum instead. 00016 class TotalVisibleMomentum : public Projection { 00017 00018 public: 00019 00020 /// Constructor. Make sure you supply an appropriately vetoed FS! 00021 TotalVisibleMomentum(const FinalState& fsp) 00022 { 00023 setName("TotalVisibleMomentum"); 00024 addProjection(fsp, "FS"); 00025 getLog() << Log::WARNING << "TotalVisibleMomentum projection is deprecated: " 00026 << "please use the MissingMomentum projection instead." << endl; 00027 } 00028 00029 /// Clone on the heap. 00030 virtual const Projection* clone() const { 00031 return new TotalVisibleMomentum(*this); 00032 } 00033 00034 00035 public: 00036 /// The projected four-momentum vector 00037 FourMomentum& momentum() { return _momentum; } 00038 00039 /// The projected four-momentum vector 00040 const FourMomentum& momentum() const { return _momentum; } 00041 00042 /// The projected scalar transverse energy 00043 double scalarET() const { return _set; } 00044 00045 00046 protected: 00047 00048 /// Apply the projection to the event. 00049 void project(const Event& e); 00050 00051 /// Compare projections. 00052 int compare(const Projection& p) const; 00053 00054 private: 00055 00056 /// The total visible momentum 00057 FourMomentum _momentum; 00058 00059 /// Scalar transverse energy 00060 double _set; 00061 00062 }; 00063 00064 } 00065 00066 00067 #endif