diff --git a/include/RHEJ/qqx.hh b/include/RHEJ/qqx.hh index 1b0a995..3de66b9 100644 --- a/include/RHEJ/qqx.hh +++ b/include/RHEJ/qqx.hh @@ -1,75 +1,76 @@ /** \file qqx.hh * \brief Functions for determining if event is a qqx event. */ #pragma once #include "RHEJ/utility.hh" #include "RHEJ/PDG_codes.hh" namespace RHEJ{ //! Check if an event has a backwards extremal qqx /** * @param incoming Incoming particles in ascending pz * @param outgoing Outgoing particles in ascending rapidity * @returns true iff the the most backwards incoming particle is a * gluon and the corresponding outgoing particle is a quark. * * If the incoming and outgoing particles are ordered such that HEJ resummation * is possible, this function can help to distinguish between FKL and backwards qqx - * events. + * events. Allows emission of A/W/Z boson unordered past qqx pair. */ inline bool has_Ex_qqxb( std::array const & incoming, std::vector const & outgoing ){ - if (is_AWZH_boson(outgoing.front().type)){ // If extremal particle AWZH boson - return outgoing[1].type != pid::gluon // check second outgoing - && incoming.front().type == pid::gluon; + if (incoming.front().type!=pid::gluon) return false; + if (is_AWZ_boson(outgoing.front().type)){ + return (is_quark(outgoing[1]) && is_antiquark(outgoing[2])) + || (is_quark(outgoing[2]) && is_antiquark(outgoing[1])); } else{ - return outgoing.front().type != pid::gluon - && incoming.front().type == pid::gluon; + return (is_quark(outgoing.front()) && is_antiquark(outgoing[1])) + || (is_quark(outgoing[1]) && is_antiquark(outgoing.front())); } } - //! Check if an event has an extremal forward qqx /** * @param incoming Incoming particles in ascending pz * @param outgoing Outgoing particles in ascending rapidity * @returns true iff the the most forwards incoming particle is a * gluon and the corresponding outgoing particle is a quark. * * If the incoming and outgoing particles are ordered such that HEJ resummation * is possible, this function can help to distinguish between FKL and forwards qqx - * events. + * events. Allows emission of A/W/Z boson unordered beyond qqx pair. */ inline bool has_Ex_qqxf( std::array const & incoming, std::vector const & outgoing ){ - if (is_AWZH_boson(outgoing.back().type)){ // If extremal particle AWZH boson - return outgoing.rbegin()[1].type != pid::gluon // check second outgoing - && incoming.back().type == pid::gluon; + if (incoming.back().type!=pid::gluon) return false; + if (is_AWZ_boson(outgoing.back().type)){ + return (is_quark(outgoing.rbegin()[1]) && is_antiquark(outgoing.rbegin()[2])) + || (is_quark(outgoing.rbegin()[2]) && is_antiquark(outgoing.rbegin()[1])); } else{ - return outgoing.back().type != pid::gluon - && incoming.back().type == pid::gluon; + return (is_quark(outgoing.back()) && is_antiquark(outgoing.rbegin()[1])) + || (is_quark(outgoing.rbegin()[1]) && is_antiquark(outgoing.back())); } } //! Check if an event has an Extremal qqx /** * @see has_Ex_qqxb, has_Ex_qqxf */ inline bool has_Ex_qqx( std::array const & incoming, std::vector const & outgoing ){ return has_Ex_qqxb(incoming, outgoing) || has_Ex_qqxf(incoming, outgoing); } }