DISLepton.hh

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #ifndef RIVET_DISLepton_HH
00003 #define RIVET_DISLepton_HH
00004 
00005 #include "Rivet/Projections/Beam.hh"
00006 #include "Rivet/Projections/FinalState.hh"
00007 #include "Rivet/Particle.hh"
00008 #include "Rivet/Event.hh"
00009 
00010 namespace Rivet {
00011 
00012 
00013   /// This class projects out the incoming and outgoing leptons in a DIS
00014   /// event.
00015   class DISLepton : public Projection {
00016  
00017   public:
00018  
00019     /// @name Constructors.
00020     //@{
00021  
00022     DISLepton(){
00023       setName("DISLepton");
00024       addProjection(Beam(), "Beam");
00025       addProjection(FinalState(), "FS");
00026     }
00027  
00028     /// Clone on the heap.
00029     virtual const Projection* clone() const {
00030       return new DISLepton(*this);
00031     }
00032     //@}
00033  
00034  
00035   protected:
00036  
00037     /// Perform the projection operation on the supplied event.
00038     virtual void project(const Event& e);
00039  
00040     /// Compare with other projections.
00041     virtual int compare(const Projection& p) const;
00042  
00043   public:
00044  
00045     /// The incoming lepton.
00046     const Particle& in() const { return _incoming; }
00047  
00048     /// The outgoing lepton.
00049     const Particle& out() const { return _outgoing; }
00050  
00051     const double &pzSign() const { return _sign; }
00052  
00053   private:
00054  
00055     /// The incoming lepton.
00056     Particle _incoming;
00057  
00058     /// The outgoing lepton.
00059     Particle _outgoing;
00060      
00061     /// The sign of the PZ of the incoming lepton
00062     double _sign;
00063  
00064   };
00065 
00066 }
00067 
00068 
00069 #endif