00001
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
00015
00016
00017
00018
00019 class MissingMomentum : public Projection {
00020 public:
00021
00022
00023 MissingMomentum()
00024 {
00025 setName("MissingMomentum");
00026 FinalState fs;
00027 addProjection(fs, "FS");
00028 addProjection(VisibleFinalState(fs), "VisibleFS");
00029 }
00030
00031
00032
00033 MissingMomentum(const FinalState& fs)
00034 {
00035 setName("MissingMomentum");
00036 addProjection(fs, "FS");
00037 addProjection(VisibleFinalState(fs), "VisibleFS");
00038 }
00039
00040
00041
00042 virtual const Projection* clone() const {
00043 return new MissingMomentum(*this);
00044 }
00045
00046
00047 public:
00048
00049
00050 FourMomentum& visibleMomentum() { return _momentum; }
00051
00052
00053 const FourMomentum& visibleMomentum() const { return _momentum; }
00054
00055
00056 double vectorET() const { return _momentum.Et(); }
00057
00058
00059 double scalarET() const { return _set; }
00060
00061
00062 protected:
00063
00064
00065 void project(const Event& e);
00066
00067
00068 int compare(const Projection& p) const;
00069
00070
00071 public:
00072
00073
00074 void clear();
00075
00076
00077 private:
00078
00079
00080 FourMomentum _momentum;
00081
00082
00083 double _set;
00084
00085 };
00086
00087 }
00088
00089
00090 #endif