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 /// Project out the total energy vector, allowing missing 00015 /// \f$ E_T \f$ etc. to be calculated. 00016 /// @deprecated This is confusing because the visibility is not automatic. Use MissingMomentum instead. 00017 class TotalVisibleMomentum : public Projection { 00018 00019 public: 00020 00021 /// Constructor. Make sure you supply an appropriately vetoed FS! 00022 TotalVisibleMomentum(const FinalState& fsp) 00023 { 00024 setName("TotalVisibleMomentum"); 00025 addProjection(fsp, "FS"); 00026 } 00027 00028 /// Clone on the heap. 00029 virtual const Projection* clone() const { 00030 return new TotalVisibleMomentum(*this); 00031 } 00032 00033 00034 public: 00035 /// The projected four-momentum vector 00036 FourMomentum& momentum() { return _momentum; } 00037 00038 /// The projected four-momentum vector 00039 const FourMomentum& momentum() const { return _momentum; } 00040 00041 /// The projected scalar transverse energy 00042 double scalarET() const { return _set; } 00043 00044 00045 protected: 00046 00047 /// Apply the projection to the event. 00048 void project(const Event& e); 00049 00050 /// Compare projections. 00051 int compare(const Projection& p) const; 00052 00053 private: 00054 00055 /// The total visible momentum 00056 FourMomentum _momentum; 00057 00058 /// Scalar transverse energy 00059 double _set; 00060 00061 }; 00062 00063 } 00064 00065 00066 #endif