Rivet  1.8.0
DISKinematics.hh
00001 // -*- C++ -*-
00002 #ifndef RIVET_DISKinematics_HH
00003 #define RIVET_DISKinematics_HH
00004 
00005 #include "Rivet/Particle.hh"
00006 #include "Rivet/Event.hh"
00007 #include "Rivet/Projection.hh"
00008 #include "Rivet/Projections/DISLepton.hh"
00009 #include "Rivet/Projections/Beam.hh"
00010 
00011 namespace Rivet {
00012 
00013 
00015   class DISKinematics : public Projection {
00016 
00017   public:
00018 
00020     DISKinematics()
00021       : _theQ2(-1.0), _theW2(-1.0), _theX(-1.0), _theY(-1.0), _theS(-1.0)
00022     {
00023       setName("DISKinematics");
00024       //addPdgIdPair(ANY, hadid);
00025       addProjection(Beam(), "Beam");
00026       addProjection(DISLepton(), "Lepton");
00027     }
00028 
00030     virtual const Projection* clone() const {
00031       return new DISKinematics(*this);
00032     }
00033 
00034 
00035   protected:
00036 
00038     virtual void project(const Event& e);
00039 
00041     virtual int compare(const Projection& p) const;
00042 
00043 
00044   public:
00045 
00047     double Q2() const { return _theQ2; }
00048 
00050     double W2() const { return _theW2; }
00051 
00053     double x() const { return _theX; }
00054 
00056     double y() const { return _theY; }
00057 
00059     double s() const { return _theS; }
00060 
00061 
00062 
00064     const LorentzTransform& boostHCM() const {
00065       return _hcm;
00066     }
00067 
00069     const LorentzTransform& boostBreit() const {
00070       return _breit;
00071     }
00072 
00074     const Particle& beamHadron() const {
00075       return _inHadron;
00076     }
00077 
00078   private:
00079 
00081     double _theQ2;
00082 
00084     double _theW2;
00085 
00087     double _theX;
00088 
00090     double _theY;
00091 
00093     double _theS;
00094 
00095     Particle _inHadron;
00096 
00098     LorentzTransform _hcm;
00099 
00101     LorentzTransform _breit;
00102   };
00103 
00104 
00105 }
00106 
00107 #endif