00001
00002 #ifndef RIVET_TotalVisibleMomentum_HH
00003 #define RIVET_TotalVisibleMomentum_HH
00004
00005 #include "Rivet/Rivet.hh"
00006 #include "Rivet/RivetCLHEP.hh"
00007 #include "Rivet/Projection.hh"
00008 #include "Rivet/Projections/VetoedFinalState.hh"
00009 #include "Rivet/Particle.hh"
00010 #include "Rivet/Event.hh"
00011
00012
00013 namespace Rivet {
00014
00015
00016
00017 class TotalVisibleMomentum: public Projection {
00018
00019 public:
00020
00021
00022 inline TotalVisibleMomentum(FinalState& fsp)
00023 : _fsproj(&fsp)
00024 {
00025 addProjection(*_fsproj);
00026 }
00027
00028 public:
00029
00030 inline string getName() const {
00031 return "TotalVisibleMomentum";
00032 }
00033
00034
00035 inline LorentzVector& getMomentum() { return _momentum; }
00036
00037
00038 inline const LorentzVector& getMomentum() const { return _momentum; }
00039
00040
00041 protected:
00042
00043
00044 void project(const Event& e);
00045
00046
00047 int compare(const Projection& p) const;
00048
00049 private:
00050
00051
00052 FinalState* _fsproj;
00053
00054
00055 LorentzVector _momentum;
00056
00057
00058
00059
00060
00061
00062 };
00063
00064 }
00065
00066
00067 #endif