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 00014 /// @brief Calculate missing \f$ E \f$, \f$ E_\perp \f$ etc. 00015 /// 00016 /// Project out the total visible energy vector, allowing missing 00017 /// \f$ E \f$, \f$ E_\perp \f$ etc. to be calculated. Final state 00018 /// visibility restrictions are automatic. 00019 class MissingMomentum : public Projection { 00020 public: 00021 00022 /// Default constructor with uncritical FS. 00023 MissingMomentum() 00024 { 00025 setName("MissingMomentum"); 00026 FinalState fs; 00027 addProjection(fs, "FS"); 00028 addProjection(VisibleFinalState(fs), "VisibleFS"); 00029 } 00030 00031 00032 /// Constructor. 00033 MissingMomentum(const FinalState& fs) 00034 { 00035 setName("MissingMomentum"); 00036 addProjection(fs, "FS"); 00037 addProjection(VisibleFinalState(fs), "VisibleFS"); 00038 } 00039 00040 00041 /// Clone on the heap. 00042 virtual const Projection* clone() const { 00043 return new MissingMomentum(*this); 00044 } 00045 00046 00047 public: 00048 00049 /// The vector-summed visible four-momentum in the event. 00050 const FourMomentum& visibleMomentum() const { return _momentum; } 00051 00052 /// The vector-summed (in)visible transverse energy in the event 00053 const Vector3& vectorEt() const { return _vet; } 00054 00055 /// The scalar-summed visible transverse energy in the event. 00056 double scalarEt() const { return _set; } 00057 00058 00059 protected: 00060 00061 /// Apply the projection to the event. 00062 void project(const Event& e); 00063 00064 /// Compare projections. 00065 int compare(const Projection& p) const; 00066 00067 00068 public: 00069 00070 /// Clear the projection results. 00071 void clear(); 00072 00073 00074 private: 00075 00076 /// The total visible momentum 00077 FourMomentum _momentum; 00078 00079 /// Scalar transverse energy 00080 double _set; 00081 00082 /// Vector transverse energy 00083 Vector3 _vet; 00084 00085 }; 00086 00087 00088 } 00089 00090 #endif