// -*- C++ -*- #ifndef RIVET_FinalStateBREIT_HH #define RIVET_FinalStateBREIT_HH #include "Rivet/Particle.hh" #include "Rivet/Event.hh" #include "Rivet/Projections/FinalState.hh" #include "Rivet/Projections/DISKinematics.hh" #include "Rivet/Projection.hh" #include "Rivet/Projections/DISLepton.hh" #include "Rivet/Projections/Beam.hh" namespace Rivet { /// Project all final state particles /// boosted to the breit frame, and store any in the current hemisphere. class FinalStateBreit: public FinalState { public: /// Constructor for Final State Breit FinalStateBreit(const DISKinematics& kinematicsp); /// Constructor for specific hemisphere /// hemisphere ==0 no cut,=1 current frame, =2 remnant frame /// elim =0 not cut, =n cut on greater than n FinalStateBreit(const DISKinematics& kinematicsp,const int& hemisphere, const double& elim); /// Clone on the heap. virtual const Projection* clone() const { return new FinalStateBreit(*this); } ///Get the FSB Particles virtual const ParticleVector& fsbparticles() const {return _theFSBParticles;} virtual const FourMomentum& pgamma() const {return _pgammab;} protected: mutable FourMomentum _pgammab; mutable ParticleVector _theFSBParticles; /// Apply the projection on the supplied event. void project(const Event& e); /// Compare projections. int compare(const Projection& p) const; }; } #endif