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