.. _sec_libmcmule_technical: libmcmule reference guide ========================= The following types, variables, and routines are unlikely to be needed by the typical user and are instead aimed at McMule's developers. The particle framework ---------------------- .. f:currentmodule:: global_def .. f:variable:: integer maxparticles :attrs: parameter = 7 The maximal number of particles allowed .. f:currentmodule:: functions .. f:type:: mlm :f real(kind=prec) momentum(4): the momentum .. f:type:: particle :f real(kind=prec) momentum(4): the momentum :f integer effcharge: the effective charge, corresponding to the ``+charge`` for incoming and ``-charge`` for outgoing particles. :f integer charge: the actual charge :f logical incoming: ``.true.`` for incoming particles :f integer lepcharge: the lepton family (1 for electrons, 2 for muons, 3 for taus), defaults to zero .. f:type:: particles :f type(particle) vec(maxparticles): the constituent partciles :f integer n: the number of particles actually used :f character(len=1) combo: the flavour combination used, allowed values are ``*`` (any combination), ``x`` (only mixed), ``e`` (only electronic), ``m`` (only muonic), ``t`` (only tauonic) .. f:function:: make_mlm(qq) Construct a :f:type:`mlm`, i.e. a massless momentum :p real(kind=prec) qq(4) [in]: the momentum :rtype make_mlm: mlm .. f:function:: part(qq, charge, inc[, lepcharge]) Construct a :f:type:`particle`. :p real(kind=prec) qq(4) [in]: the momentum :p integer charge [in]: the charge of the particle :p integer inc [in]: +1 for incoming, -1 for outgoing :o integer lepcharge [1]: the lepton family number :rtype part: particle .. f:function:: parts(ps[, combo]) Construct :f:type:`particles` from a list of :f:type:`particle`\ s :p type(particle) ps(:) [in]: a list of :f:type:`particle` :o character(len=1) combo: the flavour combination used, allowed values are ``*`` (any combination), ``x`` (only mixed), ``e`` (only electronic), ``m`` (only muonic), ``t`` (only tauonic) :rtype parts: particles .. f:function:: eik An interface to construct the eikonal factor. :f:type:`eik` can be called with - (``kg, pp``), using the type :f:type:`particles`. The optional flavour combination ``combo`` restricts the emission to the desired set of fermion lines. If ``combo`` is set to ``x``, all contributions but the self-eikonal are included. - (``{q1,k1}, kg, {q2,k2}``), with an explicit call to the momenta of the {massive, massless} emitter, before (1) and after (2) the emission. :p type(particles) pp [in]: the fermions involved in the photon emission :p real(kind=prec) qi(4) [in]: the momenta of the massive emitter :p type(mlm) ki [in]: the momenta of the massless emitter :p type(mlm) kg [in]: the momentum of the photon :r eik: the eikonal factor :rtype eik: :f:type: real(kind=prec) .. f:function:: ieik An interface to construct the integrated eikonal factor :cite:`Frederix:2009yq`. :f:type:`ieik` can be called with - (``xicut, epcmf, pp[, pole]``), using the type :f:type:`particles`. The optional flavour combination ``combo`` restricts the emission to the desired set of fermion lines. If ``combo`` is set to ``x``, all contributions but the self-eikonal are included. - (``xicut, epcmf, q1, q2[, pole]``), with an explicit call to the momenta of the massive emitter, before (1) and after (2) the emission. :p real(kind=prec) xicut [in]: :math:`\xi_c` (cf. Section :ref:`sec_getting_started_nlo`) :p real(kind=prec) epcmf [in]: square root of ``scms`` :p type(particles) pp [in]: the fermions involved in the photon emission :p real(kind=prec) qi(4) [in]: the momenta of the massive emitter :o real(kind=prec) pole [out]: the singular part of the integrated eikonal, as a coefficient of :math:`1/\epsilon` :r ieik: the finite part of the integrated eikonal factor :rtype ieik: :f:type: real(kind=prec) .. f:function:: ntssoft(pp,kk,pole) The (universal) soft contribution to the LBK theorem at 1 loop :cite:`Engel:2021ccn`, i.e. the :term:`NTS` soft function. The optional flavour combination for the :f:type:`particles` ``pp`` restricts the emission to the desired set of fermion lines. [1]_ :p type(particles) pp [in]: the fermions involved in the photon emission :p real(kind=prec) kk(4) [in]: the momentum of the photon :o real(kind=prec) pole [out]: the singular part of the :term:`NTS` soft function, as a coefficient of :math:`1/\epsilon` :r ieik: the finite part of the :term:`NTS` soft function :rtype ntssoft: :f:type: real(kind=prec) Matrix element interface ------------------------ .. f:function:: partInterface(q1,q2,q3,q4,q5,q6,q7) an abstract interface to construct :f:type:`particles` for a given process. :p real(kind=prec) qi(4): the momenta :r partInterface: the constructed particle string :rtype partInterface: :f:type:`particles` Package-X function ------------------ .. note:: This section needs to be completed, link to `issue `__ .. f:function:: DiscB .. f:function:: DiscB_cplx .. f:function:: ScalarC0IR6 .. f:function:: ScalarC0IR6_cplx .. f:function:: ScalarC0 .. f:function:: ScalarC0_cplx .. f:function:: ScalarD0IR16 .. f:function:: ScalarD0IR16_cplx VP functions ------------- .. note:: This section needs to be completed, link to `issue `__ Phase spaces ------------ .. f:currentmodule:: phase_space McMule has implemented a number of phase routines that map from the hypercube to the physical momenta. Here is a list of currently used ones .. f:subroutine:: PSD3(ra, q1,m1, q2,m2, q3,m3, weight) Generic phase space routine for :math:`1\to2` decays :p real(kind=prec) ra(2) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSD4(ra, q1,m1, q2,m2, q3,m3, q4,m4, weight) Generic phase space routine for :math:`1\to3` decays :p real(kind=prec) ra(5) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSD4_FKS(ra, q1,m1, q2,m2, q3,m3, q4, weight) :term:`FKS` phase space routine for :math:`1\to3` decays, requires :math:`m_4=0`. Tuned for :math:`\sphericalangle(p_2,q_4)` and :math:`E_4` :p real(kind=prec) ra(5) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSD5(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5,m5, weight) Generic phase space routine for :math:`1\to4` decays :p real(kind=prec) ra(8) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSD5_25(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5,m5, weight) Phase space routine for :math:`1\to4` decays, tuned for :math:`\sphericalangle(p_2,q_5)` and :math:`E_5`, collinear limit is ``ra(2) -> 0`` :p real(kind=prec) ra(8) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSD5_FKS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, weight) :term:`FKS` phase space routine for :math:`1\to4` decays, requires :math:`m_5=0`. Tuned for :math:`\sphericalangle(p_2,q_5)` and :math:`E_5` :p real(kind=prec) ra(8) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSD6(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5,m5, q6,m6, weight) Generic phase space routine for :math:`1\to5` decays :p real(kind=prec) ra(11) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSD6_23_24_34(ra, q1,m1, q2,m2, q5,m5, q6,m6, q3,m3, q4,m4, weight) Phase space routine for :math:`1\to5` decays with FKS-ish tuning. This is designed for the decay :math:`\mu^+\to e^+\nu\bar\nu e^+e^-`. ``q2`` should be the unique particle (electron) and ``q3`` and ``q4`` are the identical particles (postirons):: _/ q /| 2 ---<---*~~~~~~~~~~* | | ^ ^ q | q | 3 4 The 'spectator' neutrinos are ``q5`` and ``q6``. Start by generating ``p2`` and ``p3`` at an angle ``* = arccos(y2)``:: ^ p2 ||| ||| p3 __||| --__ / ||| --__/ *||| --__||| ||| Generate ``p4`` at an angle ``* = arccos(y3)`` and rotating by an angle ``phi`` w.r.t. to ``p3``:: ||| / p4 _--|||--_ / -_ ||| _-/ p3 --___-- / --__ |||__/ --__ |||*/ --__|||/ ||| :p real(kind=prec) ra(11) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSD6_23_24_34_E56(ra, q1,m1, q2,m2, q5,m5, q6,m6, q3,m3, q4,m4, weight) Phase space routine for :math:`1\to5` decays with FKS-ish tuning, similar to :f:subr:`PSD6_23_24_34` but with special tuning on the :math:`E_5+E_6` tail. :p real(kind=prec) ra(11) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSD6_FKS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5,m5, q6, weight) :term:`FKS` phase space routine for :math:`1\to5` decays, requires :math:`m_6=0`. Tuned for :math:`\sphericalangle(p_2,q_6)` and :math:`E_6` :p real(kind=prec) ra(11) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSD6_25_26_m50_FKS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5,m5, q6, weight) :term:`FKS` phase space routine for :math:`1\to5` decays, requires :math:`m_5=m_6=0`. Tuned for :math:`\sphericalangle(p_2,q_{5,6})` and :math:`E_{5,6}` :p real(kind=prec) ra(11) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSD6_FKSS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, q6, weight) Double-:term:`FKS` phase space routine for :math:`1\to5` decays, requires :math:`m_5=m_6=0`. Tuned for :math:`\sphericalangle(p_2,q_{5,6})` and :math:`E_{5,6}` :p real(kind=prec) ra(11) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSD7(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5,m5, q6,m6, q7,m7, weight) Generic phase space routine for :math:`1\to6` decays :p real(kind=prec) ra(14) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSD7_27_37_47_FKS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5,m5, q6,m6, q7, weight) :term:`FKS` phase space routine for :math:`1\to6` decays, tuned for :math:`\sphericalangle(p_{2,3,4},q_7)` and :math:`E_7` :p real(kind=prec) ra(14) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSD7_27_37_47_E56_FKS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5,m5, q6,m6, q7, weight) :term:`FKS` phase space routine for :math:`1\to6` decays, tuned for :math:`\sphericalangle(p_{2,3,4},q_7)` and :math:`E_7` and tuned for the :math:`E_5+E_6` tail :p real(kind=prec) ra(14) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX2(ra, q1,m1, q2,m2, q3,m3, q4,m4, weight) Generic phase space routine for :math:`2\to2` cross sections :p real(kind=prec) ra(2) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX3_FKS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, weight) :term:`FKS` phase space routine for :math:`2\to3` cross sections, requires :math:`m_5=0`. Tuned for :term:`ISR` and not :term:`FSR` :p real(kind=prec) ra(5) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX3_35_FKS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, weight[, sol]) :term:`FKS` phase space routine for :math:`2\to3` cross sections, requires :math:`m_5=0`. Tuned for :math:`\sphericalangle(q_3,q_5)` and :math:`E_5` :p real(kind=prec) ra(5) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian :o integer sol [in]: which solution to pick .. f:subroutine:: PSX4(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5,m5, q6,m6, weight) Generic phase space routine for :math:`2\to4` cross sections :p real(kind=prec) ra(8) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX4_FKSS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, q6, weight) Double-:term:`FKS` phase space routine for :math:`2\to4` cross sections, requires :math:`m_5=m_6=0`. Tuned for :term:`ISR` and not :term`FSR` :p real(kind=prec) ra(8) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX4_35_36_FKSS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, q6, weight[, sol]) Double-:term:`FKS` phase space routine for :math:`2\to4` cross sections, requires :math:`m_5=m_6=0`. Tuned for :math:`\sphericalangle(q_3,q_{5,6})` and :math:`E_{5,6}` :p real(kind=prec) ra(8) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian :o integer sol [in]: which solution to pick .. f:subroutine:: PSD6_P_25_26_m50_FKS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5,m5, q6, weight) :term:`FKS` phase space routine for :math:`1\to5` decays, requires :math:`m_5=m_6=0`. Tuned for :math:`\sphericalangle(p_2,q_{5,6})` and :math:`E_{5,6}` Partioning of :f:subr:`PSD6_25_26_m50_FKS` with :math:`s_{26}s_{35}`. :p real(kind=prec) ra(5) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX3_coP13_35_FKS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, weight) The corner piece to :f:subr:`PSX3_P13_35_FKS` :p real(kind=prec) ra(5) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX3_P_15_25_FKS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, weight) :term:`FKS` phase space routine for :math:`2\to3` cross sections, requires :math:`m_5=0`. Tuned for :term:`ISR` and not :term:`FSR`. Partioning of :f:subr:`PSX3_FKS` with :math:`{\rm min}\big(s_{15},s_{25}\big)<{\rm min}\big(s_{35},s_{45}\big)`. :p real(kind=prec) ra(5) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX3_P_35_FKS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, weight) :term:`FKS` phase space routine for :math:`2\to3` cross sections, requires :math:`m_5=0`. Tuned for :math:`\sphericalangle(q_3,q_5)` and :math:`E_5` Partioning of :f:subr:`PSX3_35_FKS` with :math:`s_{35}<{\rm min}\big(s_{15},s_{25},s_{45}\big)`. :p real(kind=prec) ra(5) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX3_P_45_FKS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, weight) :term:`FKS` phase space routine for :math:`2\to3` cross sections, requires :math:`m_5=0`. Tuned for :math:`\sphericalangle(q_3,q_5)` and :math:`E_5` Partioning of :f:subr:`PSX3_35_FKS` with :math:`s_{45}<{\rm min}\big(s_{15},s_{25},s_{35}\big)` and :math:`3\leftrightarrow4` :p real(kind=prec) ra(5) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX3_coP_35_FKS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, weight) The corner piece to :f:subr:`PSX3_P_35_FKS` :p real(kind=prec) ra(5) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX3_coP_45_FKS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, weight) The corner piece to :f:subr:`PSX3_P_45_FKS` :p real(kind=prec) ra(5) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX4_P_15_16_FKSS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, q6, weight) Double-:term:`FKS` phase space routine for :math:`2\to4` cross sections, requires :math:`m_5=m_6=0`. Tuned for :term:`ISR` and not :term`FSR` Partioning of :f:subr:`PSX4_FKSS` with :math:`{\rm min}\big(s_{15}, s_{16}\big)<{\rm min}\big(s_{35},s_{36}\big)`. :p real(kind=prec) ra(8) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX4_P_35_36_FKSS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, q6, weight) Double-:term:`FKS` phase space routine for :math:`2\to4` cross sections, requires :math:`m_5=m_6=0`. Tuned for :math:`\sphericalangle(q_3,q_{5,6})` and :math:`E_{5,6}` Partioning of :f:subr:`PSX4_35_36_FKSS` with :math:`{\rm min}\big(s_{15}, s_{36}\big)<{\rm min}\big(s_{15},s_{25},s_{45},s_{16},s_{26},s_{46}\big)`. :p real(kind=prec) ra(8) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX4_coP_35_36_FKSS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, q6, weight) The corner piece to :f:subr:`PSX4_P_35_36_FKSS` :p real(kind=prec) ra(8) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX4_P13_35_36_FKSS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, q6, weight) Double-:term:`FKS` phase space routine for :math:`2\to4` cross sections, requires :math:`m_5=m_6=0`. Tuned for :math:`\sphericalangle(q_3,q_{5,6})` and :math:`E_{5,6}` Partioning of :f:subr:`PSX4_35_36_FKSS` with :math:`{\rm min}\big(s_{15}, s_{16}\big)>{\rm min}\big(s_{35},s_{36}\big)`. :p real(kind=prec) ra(8) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX4_coP13_35_36_FKSS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, q6, weight) The corner piece to :f:subr:`PSX4_P13_35_36_FKSS` :p real(kind=prec) ra(8) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX4_P_15_16_25_26_FKSS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, q6, weight) Double-:term:`FKS` phase space routine for :math:`2\to4` cross sections, requires :math:`m_5=m_6=0`. Tuned for :term:`ISR` and not :term`FSR` Partioning of :f:subr:`PSX4_FKSS` with :math:`{\rm min}\big(s_{15}, s_{16},s_{25}, s_{26}\big)<{\rm min}\big(s_{35},s_{36},s_{54},s_{46}\big)`. :p real(kind=prec) ra(8) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX4_P_45_46_FKSS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, q6, weight) Double-:term:`FKS` phase space routine for :math:`2\to4` cross sections, requires :math:`m_5=m_6=0`. Tuned for :math:`\sphericalangle(q_3,q_{5,6})` and :math:`E_{5,6}` Partioning of :f:subr:`PSX4_35_36_FKSS` with :math:`{\rm min}\big(s_{45}, s_{46}\big)>{\rm min}\big(s_{15},s_{25},s_{35},s_{16},s_{26},s_{36}\big)`. :p real(kind=prec) ra(8) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. f:subroutine:: PSX4_coP_45_46_FKSS(ra, q1,m1, q2,m2, q3,m3, q4,m4, q5, q6, weight) The corner piece to :f:subr:`PSX4_P_45_46_FKSS` :p real(kind=prec) ra(5) [in]: the random numbers :p real(kind=prec) qi(4) [out]: the momenta :p real(kind=prec) mi [in]: the masses :p real(kind=prec) weight [out]: the Jacobian .. [1] The user is allowed to further split mixed contributions at NNLO, i.e. contributions with emissions connecting different fermion lines. This is achieved via the optional parameter ``mx`` of the auxiliary function :f:type:`combonts`. The latter sets the desired flavour combination for :f:type:`ntssoft`, and ``mx=1`` allows to choose among different mixed contributions. For example, for :math:`\ell_1\ell_2\to\ell_1\ell_2` scattering, if a formal charge :math:`Q_{1(2)}` is assigned for each photon emission from :math:`\ell_{1(2)}`, :f:type:`ntssoft` will be able to distinguish among the contributions labelled by :math:`Q_1^5\,Q_2^3`, :math:`Q_1^4\,Q_2^4` and :math:`Q_1^3\,Q_2^5`.