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 FourMomentum& visibleMomentum() { return _momentum; } 00051 00052 /// The vector-summed visible four-momentum in the event. 00053 const FourMomentum& visibleMomentum() const { return _momentum; } 00054 00055 /// The vector-summed (in)visible transverse energy in the event 00056 double vectorET() const { return _momentum.Et(); } 00057 00058 /// The scalar-summed (in)visible transverse energy in the event. 00059 double scalarET() const { return _set; } 00060 00061 00062 protected: 00063 00064 /// Apply the projection to the event. 00065 void project(const Event& e); 00066 00067 /// Compare projections. 00068 int compare(const Projection& p) const; 00069 00070 00071 public: 00072 00073 /// Clear the projection results. 00074 void clear(); 00075 00076 00077 private: 00078 00079 /// The total visible momentum 00080 FourMomentum _momentum; 00081 00082 /// Scalar transverse energy 00083 double _set; 00084 00085 }; 00086 00087 00088 } 00089 00090 #endif