rivet is hosted by Hepforge, IPPP Durham
DISKinematics.hh
Go to the documentation of this file.
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 
00014   /// @brief Get the DIS kinematic variables and relevant boosts for an event.
00015   class DISKinematics : public Projection {
00016 
00017   public:
00018 
00019     /// The default constructor.
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 
00029     /// Clone on the heap.
00030     DEFAULT_RIVET_PROJ_CLONE(DISKinematics);
00031 
00032 
00033   protected:
00034 
00035     /// Perform the projection operation on the supplied event.
00036     virtual void project(const Event& e);
00037 
00038     /// Compare with other projections.
00039     virtual int compare(const Projection& p) const;
00040 
00041 
00042   public:
00043 
00044     /// The \f$Q^2\f$.
00045     double Q2() const { return _theQ2; }
00046 
00047     /// The \f$W^2\f$.
00048     double W2() const { return _theW2; }
00049 
00050     /// The Bjorken \f$x\f$.
00051     double x() const { return _theX; }
00052 
00053     /// The Inelasticity \f$y\f$
00054     double y() const { return _theY; }
00055 
00056     /// The centre of mass energy \f$s\f$
00057     double s() const { return _theS; }
00058 
00059 
00060 
00061     /// The LorentzRotation needed to boost a particle to the hadronic CM frame.
00062     const LorentzTransform& boostHCM() const {
00063       return _hcm;
00064     }
00065 
00066     /// The LorentzRotation needed to boost a particle to the hadronic Breit frame.
00067     const LorentzTransform& boostBreit() const {
00068       return _breit;
00069     }
00070 
00071     /// The incoming Hadron beam particle
00072     const Particle& beamHadron() const {
00073       return _inHadron;
00074     }
00075 
00076   private:
00077 
00078     /// The \f$Q^2\f$.
00079     double _theQ2;
00080 
00081     /// The \f$W^2\f$.
00082     double _theW2;
00083 
00084     /// The Bjorken \f$x\f$.
00085     double _theX;
00086 
00087     /// The Inelasticity \f$y\f$
00088     double _theY;
00089 
00090     /// The centre of mass energy \f$s\f$
00091     double _theS;
00092 
00093     Particle _inHadron;
00094 
00095     /// The LorentzRotation needed to boost a particle to the hadronic CM frame.
00096     LorentzTransform _hcm;
00097 
00098     /// The LorentzRotation needed to boost a particle to the hadronic Breit frame.
00099     LorentzTransform _breit;
00100   };
00101 
00102 
00103 }
00104 
00105 #endif