Rivet
1.8.0
|
00001 // -*- C++ -*- 00002 #ifndef RIVET_MissingMomentum_HH 00003 #define RIVET_MissingMomentum_HH 00004 00005 #include "Rivet/Rivet.hh" 00006 #include "Rivet/Projection.hh" 00007 #include "Rivet/Projections/VisibleFinalState.hh" 00008 #include "Rivet/Particle.hh" 00009 #include "Rivet/Event.hh" 00010 00011 namespace Rivet { 00012 00013 00019 class MissingMomentum : public Projection { 00020 public: 00021 00023 MissingMomentum() 00024 { 00025 setName("MissingMomentum"); 00026 FinalState fs; 00027 addProjection(fs, "FS"); 00028 addProjection(VisibleFinalState(fs), "VisibleFS"); 00029 } 00030 00031 00033 MissingMomentum(const FinalState& fs) 00034 { 00035 setName("MissingMomentum"); 00036 addProjection(fs, "FS"); 00037 addProjection(VisibleFinalState(fs), "VisibleFS"); 00038 } 00039 00040 00042 virtual const Projection* clone() const { 00043 return new MissingMomentum(*this); 00044 } 00045 00046 00047 public: 00048 00050 const FourMomentum& visibleMomentum() const { return _momentum; } 00051 00053 const Vector3& vectorEt() const { return _vet; } 00054 00056 double scalarEt() const { return _set; } 00057 00058 00059 protected: 00060 00062 void project(const Event& e); 00063 00065 int compare(const Projection& p) const; 00066 00067 00068 public: 00069 00071 void clear(); 00072 00073 00074 private: 00075 00077 FourMomentum _momentum; 00078 00080 double _set; 00081 00083 Vector3 _vet; 00084 00085 }; 00086 00087 00088 } 00089 00090 #endif