MissingMomentum.hh

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