rivet is hosted by Hepforge, IPPP Durham
DISFinalState.hh
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #ifndef RIVET_DISFinalState_HH
00003 #define RIVET_DISFinalState_HH
00004 
00005 #include "Rivet/Projections/FinalState.hh"
00006 #include "Rivet/Projections/DISKinematics.hh"
00007 
00008 namespace Rivet {
00009 
00010 
00011   /// @brief Final state particles boosted to the hadronic center of mass system.
00012   ///
00013   /// NB. The DIS scattered lepton is not included in the final state particles.
00014   class DISFinalState: public FinalState {
00015   public:
00016 
00017     /// Type of DIS boost to apply
00018     enum BoostType { HCM, BREIT };
00019 
00020 
00021     /// @name Constructors
00022     //@{
00023 
00024     /// Constructor
00025     DISFinalState(const DISKinematics& kinematicsp, BoostType boosttype)
00026       : _boosttype(boosttype)
00027     {
00028       setName("DISFinalState");
00029       addProjection(kinematicsp, "Kinematics");
00030     }
00031 
00032     /// Clone on the heap.
00033     virtual const Projection* clone() const {
00034       return new DISFinalState(*this);
00035     }
00036 
00037     //@}
00038 
00039 
00040   protected:
00041 
00042     /// Apply the projection on the supplied event.
00043     void project(const Event& e);
00044 
00045     /// Compare projections.
00046     int compare(const Projection& p) const {
00047       const DISFinalState& other = dynamic_cast<const DISFinalState&>(p);
00048       return mkNamedPCmp(p, "Kinematics") || cmp(_boosttype, other._boosttype);
00049     }
00050 
00051 
00052   private:
00053 
00054     BoostType _boosttype;
00055 
00056   };
00057 
00058 
00059 }
00060 
00061 #endif