diff --git a/src/Wjets.cc b/src/Wjets.cc index 57dca4f..ba1da6c 100644 --- a/src/Wjets.cc +++ b/src/Wjets.cc @@ -1,1137 +1,1666 @@ /** * \authors The HEJ collaboration (see AUTHORS for details) * \date 2019 * \copyright GPLv2 or later */ #include "HEJ/Wjets.hh" #include <array> #include <iostream> #include "HEJ/Constants.hh" #include "HEJ/EWConstants.hh" #include "HEJ/jets.hh" #include "HEJ/Tensor.hh" using HEJ::Tensor; using HEJ::init_sigma_index; using HEJ::metric; using HEJ::rank3_current; using HEJ::rank5_current; using HEJ::eps; using HEJ::to_tensor; using HEJ::Helicity; using HEJ::angle; using HEJ::square; using HEJ::flip; using HEJ::ParticleProperties; namespace helicity = HEJ::helicity; namespace { // Helper Functions // FKL W Helper Functions double WProp (const HLV & plbar, const HLV & pl, ParticleProperties const & wprop){ COM propW = COM(0.,-1.)/( (pl+plbar).m2() - wprop.mass*wprop.mass + COM(0.,1.)*wprop.mass*wprop.width); double PropFactor=(propW*conj(propW)).real(); return PropFactor; } namespace { // FKL current including W emission off negative helicities // See eq. (87) {eq:jW-} in developer manual // Note that the terms are rearranged Tensor<1> jW_minus( HLV const & pa, HLV const & p1, HLV const & plbar, HLV const & pl ){ using HEJ::helicity::minus; const double tWin = (pa-pl-plbar).m2(); const double tWout = (p1+pl+plbar).m2(); // C++ arithmetic operators are evaluated left-to-right, // so the following first computes complex scalar coefficients, // which then multiply a current, reducing the number // of multiplications return 2.*( + angle(p1, pl)*square(p1, plbar)/tWout + square(pa, plbar)*angle(pa, pl)/tWin )*HEJ::current(p1, pa, helicity::minus) + 2.*angle(p1, pl)*square(pl, plbar)/tWout *HEJ::current(pl, pa, helicity::minus) + 2.*square(pa, plbar)*angle(pl, plbar)/tWin *HEJ::current(p1, plbar, helicity::minus); } } // FKL current including W emission // see eqs. (87), (88) {eq:jW-}, {eq:jW+} in developer manual Tensor<1> jW( HLV const & pa, HLV const & p1, HLV const & plbar, HLV const & pl, Helicity h ){ if(h == helicity::minus) { return jW_minus(pa, p1, plbar, pl); } return jW_minus(pa, p1, pl, plbar).complex_conj(); } /** + * @brief Contraction of the \tilde{U}_1 tensor + * + * This is the contraction of the tensor defined in eq:U1tensor + * in the developer manual with the uno gluon polarisation vector, + * the leptonic and the partonic current (see eq:wunocurrent) in the + * developer manual) + */ + COM U1contr( + HLV const & pg, HLV const & p1,HLV const & plbar, HLV const & pl, + HLV const & pa, Helicity h1, + HLV const & p2, HLV const & pb, Helicity h2, Helicity hg + ) { + const HLV pW = pl+plbar; + const HLV q1g = pa-pW-p1-pg; + const HLV q1 = pa-p1-pW; + const HLV q2 = p2-pb; + + const double taW = (pa-pW).m2(); + const double s1W = (p1+pW).m2(); + const double s1gW = (p1+pW+pg).m2(); + const double s1g = (p1+pg).m2(); + + if(h1 == helicity::plus) { + if(h2 == helicity::plus) { + if(hg == helicity::plus) { + // helicity +++ + return (4.*sqrt(2.)*(-1.*taW*angle(pa,pb)*square(p1,plbar)* + (s1W*angle(p1,pg)*angle(pg,pl)*square(p1,p2)*square(p2,pg) - + 1.*(angle(p1,pl)*square(p1,p2) + angle(pl,plbar)*square(p2,plbar))* + ((s1g + s1W)*angle(p1,pg)*square(p1,p2) + + s1g*(angle(pg,pl)*square(p2,pl) + angle(pg,plbar)*square(p2,plbar)))) + + s1gW*s1W*angle(p1,pg)*angle(pa,pl)*pow(square(p1,p2),2.)* + (angle(pa,pb)*square(pa,plbar) + angle(pb,pl)*square(pl,plbar))))/ + (s1g*s1gW*s1W*taW*square(p2,pg)); + } + else { + // helicity ++- + return (sqrt(2.)*(taW*angle(pa,pb)*(4.*s1g*square(p1,plbar)* + (angle(p1,pl)*square(p1,pg)*(angle(pb,pg)*square(p2,pg) + angle(pb,pl)*square(p2,pl) + + angle(pb,plbar)*square(p2,plbar)) + + angle(pl,plbar)*(angle(p1,pb)*square(p1,p2) + angle(pb,pg)*square(p2,pg) + + angle(pb,pl)*square(p2,pl) + angle(pb,plbar)*square(p2,plbar))*square(pg,plbar)) + + square(p1,pg)*(4.*angle(p1,pb)*square(p1,plbar)* + ((s1g + s1W)*angle(p1,pl)*square(p1,p2) - 1.*s1W*angle(pg,pl)*square(p2,pg) + + s1W*angle(pl,plbar)*square(p2,plbar)) - + 4.*s1W*angle(pb,pg)*(angle(p1,pl)*square(p1,p2) - 1.*angle(pg,pl)*square(p2,pg) + + angle(pl,plbar)*square(p2,plbar))*square(pg,plbar))) + + 4.*s1gW*s1W*angle(pa,pl)*square(p1,pg)* + (angle(p1,pb)*square(p1,p2) + angle(pb,pg)*square(p2,pg))* + (angle(pa,pb)*square(pa,plbar) + angle(pb,pl)*square(pl,plbar))))/ + (s1g*s1gW*s1W*taW*angle(pb,pg)); + } + } + else { + if(hg == helicity::plus) { + // helicity +-+ + return (sqrt(2.)*(4.*taW*angle(p2,pa)*square(p1,plbar)* + (s1W*angle(p1,pg)*angle(pg,pl)*square(p1,pb)*square(pb,pg) - + 1.*(angle(p1,pl)*square(p1,pb) + angle(pl,plbar)*square(pb,plbar))* + ((s1g + s1W)*angle(p1,pg)*square(p1,pb) + + s1g*(angle(pg,pl)*square(pb,pl) + angle(pg,plbar)*square(pb,plbar)))) - + 4.*s1gW*s1W*angle(p1,pg)*angle(pa,pl)*pow(square(p1,pb),2.)* + (angle(p2,pa)*square(pa,plbar) - 1.*angle(p2,pl)*square(pl,plbar))))/ + (s1g*s1gW*s1W*taW*square(pb,pg)); + } + else { + // helicity +-- + return (-1.*sqrt(2.)*(taW*angle(p2,pa)*(4.*s1g*square(p1,plbar)* + (angle(p1,pl)*square(p1,pg)*(angle(p2,pg)*square(pb,pg) + angle(p2,pl)*square(pb,pl) + + angle(p2,plbar)*square(pb,plbar)) + + angle(pl,plbar)*(angle(p1,p2)*square(p1,pb) + angle(p2,pg)*square(pb,pg) + + angle(p2,pl)*square(pb,pl) + angle(p2,plbar)*square(pb,plbar))*square(pg,plbar)) + + square(p1,pg)*(4.*angle(p1,p2)*square(p1,plbar)* + ((s1g + s1W)*angle(p1,pl)*square(p1,pb) - 1.*s1W*angle(pg,pl)*square(pb,pg) + + s1W*angle(pl,plbar)*square(pb,plbar)) - + 4.*s1W*angle(p2,pg)*(angle(p1,pl)*square(p1,pb) - 1.*angle(pg,pl)*square(pb,pg) + + angle(pl,plbar)*square(pb,plbar))*square(pg,plbar))) + + 4.*s1gW*s1W*angle(pa,pl)*square(p1,pg)* + (angle(p1,p2)*square(p1,pb) + angle(p2,pg)*square(pb,pg))* + (angle(p2,pa)*square(pa,plbar) - 1.*angle(p2,pl)*square(pl,plbar))))/ + (s1g*s1gW*s1W*taW*angle(p2,pg)); + } + } + } + else { + if(h2 == helicity::plus) { + if(hg == helicity::plus) { + // helicity -++ + return ( + sqrt(2.)*(-4.*s1gW*s1W*angle(p1,pg)*(angle(p1,pb)*square(p1,p2) + angle(pb,pg)*square(p2,pg))* + (angle(pa,pl)*square(p2,pa) + angle(pl,plbar)*square(p2,plbar))*square(pa,plbar) + + taW*angle(pg,pl)*square(p2,pa)*(4.*s1g*angle(p1,pl)* + (angle(p1,pb)*square(p1,p2) + angle(pb,pg)*square(p2,pg) + angle(pb,pl)*square(p2,pl) + + angle(pb,plbar)*square(p2,plbar))*square(pl,plbar) + + 4.*s1W*angle(p1,pg)*square(p2,pg)* + (angle(p1,pb)*square(p1,plbar) - 1.*angle(pb,pg)*square(pg,plbar) - + 1.*angle(pb,pl)*square(pl,plbar))) - + 4.*taW*angle(p1,pg)*angle(p1,pl)*square(p2,pa)* + (square(p1,plbar)*((s1g + s1W)*angle(p1,pb)*square(p1,p2) + + s1g*(angle(pb,pg)*square(p2,pg) + angle(pb,pl)*square(p2,pl) + + angle(pb,plbar)*square(p2,plbar))) - + 1.*s1W*square(p1,p2)*(angle(pb,pg)*square(pg,plbar) + angle(pb,pl)*square(pl,plbar)))) + )/(s1g*s1gW*s1W*taW*square(p2,pg)); + } + else { + // helicity -+- + return (-1.*sqrt(2.)*(4.*s1W*angle(p1,pb)*square(p1,pg)* + (s1gW*angle(p1,pb)*(angle(pa,pl)*square(p2,pa) + angle(pl,plbar)*square(p2,plbar))* + square(pa,plbar) - 1.*taW*angle(p1,pl)*angle(pb,pg)*square(p2,pa)*square(pg,plbar)) + + taW*angle(p1,pl)*square(p2,pa)*((s1g + s1W)*angle(p1,pb)*square(p1,pg) + + s1g*(angle(pb,pl)*square(pg,pl) + angle(pb,plbar)*square(pg,plbar)))* + (4.*angle(p1,pb)*square(p1,plbar) - 4.*angle(pb,pl)*square(pl,plbar))))/ + (s1g*s1gW*s1W*taW*angle(pb,pg)); + } + } + else { + if(hg == helicity::plus) { + // helicity --+ + return (sqrt(2.)*(4.*s1gW*s1W*angle(p1,pg)*square(pa,plbar)* + (angle(p1,p2)*square(p1,pb) + angle(p2,pg)*square(pb,pg))* + (angle(pa,pl)*square(pa,pb) - 1.*angle(pl,plbar)*square(pb,plbar)) + + taW*square(pa,pb)*(-1.*angle(pg,pl)* + (4.*s1g*angle(p1,pl)*(angle(p1,p2)*square(p1,pb) + angle(p2,pg)*square(pb,pg) + + angle(p2,pl)*square(pb,pl) + angle(p2,plbar)*square(pb,plbar))*square(pl,plbar) + + 4.*s1W*angle(p1,pg)*square(pb,pg)* + (angle(p1,p2)*square(p1,plbar) - 1.*angle(p2,pg)*square(pg,plbar) - + 1.*angle(p2,pl)*square(pl,plbar))) + + 4.*angle(p1,pg)*angle(p1,pl)*(square(p1,plbar)* + ((s1g + s1W)*angle(p1,p2)*square(p1,pb) + + s1g*(angle(p2,pg)*square(pb,pg) + angle(p2,pl)*square(pb,pl) + + angle(p2,plbar)*square(pb,plbar))) - + 1.*s1W*square(p1,pb)*(angle(p2,pg)*square(pg,plbar) + angle(p2,pl)*square(pl,plbar))))) + )/(s1g*s1gW*s1W*taW*square(pb,pg)); + } + else { + // helicity --- + return (sqrt(2.)*(s1W*angle(p1,p2)*square(p1,pg)* + (4.*s1gW*angle(p1,p2)*square(pa,plbar)* + (angle(pa,pl)*square(pa,pb) - 1.*angle(pl,plbar)*square(pb,plbar)) - + 4.*taW*angle(p1,pl)*angle(p2,pg)*square(pa,pb)*square(pg,plbar)) + + taW*angle(p1,pl)*square(pa,pb)*((s1g + s1W)*angle(p1,p2)*square(p1,pg) + + s1g*(angle(p2,pl)*square(pg,pl) + angle(p2,plbar)*square(pg,plbar)))* + (4.*angle(p1,p2)*square(p1,plbar) - 4.*angle(p2,pl)*square(pl,plbar))))/ + (s1g*s1gW*s1W*taW*angle(p2,pg)); + } + } + } + } + + /** + * @brief Contraction of the \tilde{U}_2 tensor + * + * This is the contraction of the tensor defined in eq:U2tensor + * in the developer manual with the uno gluon polarisation vector, + * the leptonic and the partonic current (see eq:wunocurrent) in the + * developer manual) + */ + COM U2contr( + HLV const & pg, HLV const & p1,HLV const & plbar, HLV const & pl, + HLV const & pa, Helicity h1, + HLV const & p2, HLV const & pb, Helicity h2, Helicity hg + ) { + const HLV pW = pl+plbar; + const HLV q1g=pa-pW-p1-pg; + const HLV q1 = pa-p1-pW; + const HLV q2 = p2-pb; + + const double taW = (pa-pW).m2(); + const double s1W = (p1+pW).m2(); + const double tag = (pa-pg).m2(); + const double taWg = (pa-pW-pg).m2(); + + if(h1 == helicity::plus) { + if(h2 == helicity::plus) { + if(hg == helicity::plus) { + // helicity +++ + return (-4.*sqrt(2.)*(taW*angle(pa,pg)*(taWg*square(p1,plbar)* + (angle(pa,pb)*square(p2,pa) + angle(pb,pg)*square(p2,pg))* + (angle(p1,pl)*square(p1,p2) + angle(pl,plbar)*square(p2,plbar)) - + 1.*s1W*angle(pg,pl)*square(p1,p2)*square(p2,pg)* + (angle(pa,pb)*square(pa,plbar) + angle(pb,pg)*square(pg,plbar) + + angle(pb,pl)*square(pl,plbar))) + + s1W*angle(pa,pl)*square(p1,p2)*(tag* + (angle(pa,pg)*(angle(pb,pg)*square(p2,pg) + angle(pb,pl)*square(p2,pl) + + angle(pb,plbar)*square(p2,plbar))*square(pa,plbar) + + angle(pg,pl)*(angle(pa,pb)*square(p2,pa) + angle(pb,pg)*square(p2,pg) + + angle(pb,pl)*square(p2,pl) + angle(pb,plbar)*square(p2,plbar))*square(pl,plbar)) + + angle(pa,pg)*square(p2,pa)*((tag + taW)*angle(pa,pb)*square(pa,plbar) + + taW*(angle(pb,pg)*square(pg,plbar) + angle(pb,pl)*square(pl,plbar))))))/ + (s1W*tag*taW*taWg*square(p2,pg)); + } + else { + // helicity ++- + return (-4.*sqrt(2.)*(s1W*tag*angle(pa,pl)*square(p1,p2)* + (angle(pb,pl)*square(pg,pl) + angle(pb,plbar)*square(pg,plbar))* + (angle(pa,pb)*square(pa,plbar) + angle(pb,pl)*square(pl,plbar)) - + 1.*angle(pa,pb)*square(pa,pg)*(taW*taWg*angle(pa,pb)*square(p1,plbar)* + (angle(p1,pl)*square(p1,p2) + angle(pl,plbar)*square(p2,plbar)) + + s1W*angle(pa,pl)*square(p1,p2)* + (taW*angle(pb,pg)*square(pg,plbar) + + (tag + taW)*(angle(pa,pb)*square(pa,plbar) + angle(pb,pl)*square(pl,plbar))))))/ + (s1W*tag*taW*taWg*angle(pb,pg)); + } + } + else { + if(hg == helicity::plus) { + // helicity +-+ + return (-4.*sqrt(2.)*(taW*angle(pa,pg)*(taWg*square(p1,plbar)* + (angle(p2,pa)*square(pa,pb) + angle(p2,pg)*square(pb,pg))* + (angle(p1,pl)*square(p1,pb) + angle(pl,plbar)*square(pb,plbar)) - + 1.*s1W*square(p1,pb)*(angle(pa,pl)*square(pa,pb) + angle(pg,pl)*square(pb,pg))* + (angle(p2,pg)*square(pg,plbar) + angle(p2,pl)*square(pl,plbar))) + + s1W*square(p1,pb)*(tag*angle(pa,pl)* + (angle(p2,pg)*square(pb,pg) + angle(p2,pl)*square(pb,pl) + + angle(p2,plbar)*square(pb,plbar))* + (angle(pa,pg)*square(pa,plbar) + angle(pg,pl)*square(pl,plbar)) + + angle(p2,pa)*(angle(pa,pg)*square(pa,plbar)* + ((tag + taW)*angle(pa,pl)*square(pa,pb) + taW*angle(pg,pl)*square(pb,pg)) + + tag*angle(pa,pl)*angle(pg,pl)*square(pa,pb)*square(pl,plbar)))))/ + (s1W*tag*taW*taWg*square(pb,pg)); + } + else { + // helicity +-- + return (sqrt(2.)*(4.*taW*angle(p2,pa)*square(pa,pg)* + (taWg*angle(p2,pa)*square(p1,plbar)* + (angle(p1,pl)*square(p1,pb) + angle(pl,plbar)*square(pb,plbar)) - + 1.*s1W*angle(p2,pg)*angle(pa,pl)*square(p1,pb)*square(pg,plbar)) + + s1W*angle(pa,pl)*square(p1,pb)*((tag + taW)*angle(p2,pa)*square(pa,pg) + + tag*(angle(p2,pl)*square(pg,pl) + angle(p2,plbar)*square(pg,plbar)))* + (4.*angle(p2,pa)*square(pa,plbar) - 4.*angle(p2,pl)*square(pl,plbar))))/ + (s1W*tag*taW*taWg*angle(p2,pg)); + } + } + } + else { + if(h2 == helicity::plus) { + if(hg == helicity::plus) { + // helicity -++ + return (sqrt(2.)*(-4.*s1W*angle(p1,pb)*(taW*angle(pa,pg)*angle(pg,pl)*square(p2,pa)*square(p2,pg) - + 1.*(angle(pa,pl)*square(p2,pa) + angle(pl,plbar)*square(p2,plbar))* + ((tag + taW)*angle(pa,pg)*square(p2,pa) + + tag*(angle(pg,pl)*square(p2,pl) + angle(pg,plbar)*square(p2,plbar))))*square(pa,plbar) + + 4.*taW*taWg*angle(p1,pl)*angle(pa,pg)*pow(square(p2,pa),2.)* + (angle(p1,pb)*square(p1,plbar) - 1.*angle(pb,pl)*square(pl,plbar))))/ + (s1W*tag*taW*taWg*square(p2,pg)); + } + else { + // helicity -+- + return (sqrt(2.)*(4.*s1W*angle(p1,pb)*(tag*angle(pl,plbar)* + (angle(pa,pb)*square(p2,pa) + angle(pb,pg)*square(p2,pg) + angle(pb,pl)*square(p2,pl) + + angle(pb,plbar)*square(p2,plbar))*square(pa,plbar)*square(pg,plbar) + + taW*angle(pg,pl)*square(p2,pg)*square(pa,pg)* + (angle(pa,pb)*square(pa,plbar) + angle(pb,pg)*square(pg,plbar)) - + 1.*square(pa,pg)*((tag*angle(pa,pl)* + (angle(pb,pg)*square(p2,pg) + angle(pb,pl)*square(p2,pl) + + angle(pb,plbar)*square(p2,plbar)) + + angle(pa,pb)*((tag + taW)*angle(pa,pl)*square(p2,pa) + + taW*angle(pl,plbar)*square(p2,plbar)))*square(pa,plbar) + + taW*angle(pb,pg)*(angle(pa,pl)*square(p2,pa) + angle(pl,plbar)*square(p2,plbar))* + square(pg,plbar))) - 4.*taW*taWg*angle(p1,pl)* + (angle(pa,pb)*square(p2,pa) + angle(pb,pg)*square(p2,pg))*square(pa,pg)* + (angle(p1,pb)*square(p1,plbar) - 1.*angle(pb,pl)*square(pl,plbar))))/ + (s1W*tag*taW*taWg*angle(pb,pg)); + } + } + else { + if(hg == helicity::plus) { + // helicity --+ + return (4.*sqrt(2.)*(angle(p1,p2)*(taW*taWg*angle(p1,pl)*angle(pa,pg)*pow(square(pa,pb),2.)* + square(p1,plbar) + s1W*square(pa,plbar)* + (tag*(angle(pg,pl)*square(pb,pl) + angle(pg,plbar)*square(pb,plbar))* + (-1.*angle(pa,pl)*square(pa,pb) + angle(pl,plbar)*square(pb,plbar)) + + angle(pa,pg)*square(pa,pb)*((tag + taW)*angle(pa,pl)*square(pa,pb) + + taW*angle(pg,pl)*square(pb,pg) - 1.*(tag + taW)*angle(pl,plbar)*square(pb,plbar)))) + - 1.*taW*taWg*angle(p1,pl)*angle(p2,pl)*angle(pa,pg)*pow(square(pa,pb),2.)*square(pl,plbar)) + )/(s1W*tag*taW*taWg*square(pb,pg)); + } + else { + // helicity --- + return (sqrt(2.)*(s1W*angle(p1,p2)*(-4.*square(pa,pg)*square(pa,plbar)* + (tag*angle(pa,pl)*(angle(p2,pg)*square(pb,pg) + angle(p2,pl)*square(pb,pl) + + angle(p2,plbar)*square(pb,plbar)) + + angle(p2,pa)*((tag + taW)*angle(pa,pl)*square(pa,pb) + + taW*angle(pg,pl)*square(pb,pg) - 1.*taW*angle(pl,plbar)*square(pb,plbar))) + + 4.*tag*angle(pl,plbar)*square(pa,plbar)* + (angle(p2,pa)*square(pa,pb) + angle(p2,pg)*square(pb,pg) + angle(p2,pl)*square(pb,pl) + + angle(p2,plbar)*square(pb,plbar))*square(pg,plbar) + + 4.*taW*angle(p2,pg)*square(pa,pg)* + (angle(pa,pl)*square(pa,pb) + angle(pg,pl)*square(pb,pg) - + 1.*angle(pl,plbar)*square(pb,plbar))*square(pg,plbar)) - + 4.*taW*taWg*angle(p1,pl)*square(pa,pg)* + (angle(p2,pa)*square(pa,pb) + angle(p2,pg)*square(pb,pg))* + (angle(p1,p2)*square(p1,plbar) - 1.*angle(p2,pl)*square(pl,plbar))))/ + (s1W*tag*taW*taWg*angle(p2,pg)); + } + } + } + } + + /** + * @brief Contraction of the \tilde{L} tensor + * + * This is the contraction of the tensor defined in eq:Ltensor + * in the developer manual with the uno gluon polarisation vector, + * the leptonic and the partonic current (see eq:wunocurrent) in the + * developer manual) + */ + COM Lcontr( + HLV const & pg, HLV const & p1,HLV const & plbar, HLV const & pl, + HLV const & pa, Helicity h1, + HLV const & p2, HLV const & pb, Helicity h2, Helicity hg + ) { + const HLV pW = pl+plbar; + const HLV q1g=pa-pW-p1-pg; + const HLV q1 = pa-p1-pW; + const HLV q2 = p2-pb; + + const double taW = (pa-pW).m2(); + const double taW1 = (pa-pW-p1).m2(); + const double s1W = (p1+pW).m2(); + const double s2g = (p2+pg).m2(); + const double sbg = (pb+pg).m2(); + + if(h1 == helicity::plus) { + if(h2 == helicity::plus) { + if(hg == helicity::plus) { + // helicity +++ + return (-2.*sqrt(2.)*(angle(pb,pg)*q1g.m2()*square(p2,pb)* + (taW*angle(pa,pb)*square(p1,plbar)* + (angle(p1,pl)*square(p1,p2) + angle(pl,plbar)*square(p2,plbar)) + + s1W*angle(pa,pl)*square(p1,p2)* + (angle(pa,pb)*square(pa,plbar) + angle(pb,pl)*square(pl,plbar))) + + 2.*sbg*(taW*square(p1,plbar)*(angle(p1,pl)*square(p1,p2) + angle(pl,plbar)*square(p2,plbar))* + (angle(pa,pg)*angle(pb,pg)*square(p2,pg) + + angle(pa,pb)*(angle(p1,pg)*square(p1,p2) + angle(pa,pg)*square(p2,pa) + + angle(pg,pl)*square(p2,pl) + angle(pg,plbar)*square(p2,plbar))) + + s1W*angle(pa,pl)*square(p1,p2)* + ((angle(p1,pg)*square(p1,p2) + angle(pa,pg)*square(p2,pa) + angle(pg,pl)*square(p2,pl) + + angle(pg,plbar)*square(p2,plbar))* + (angle(pa,pb)*square(pa,plbar) + angle(pb,pl)*square(pl,plbar)) + + angle(pb,pg)*square(p2,pg)*(angle(pa,pg)*square(pa,plbar) + + angle(pg,pl)*square(pl,plbar))))))/(s1W*sbg*taW*taW1*square(p2,pg)); + } + else { + // helicity ++- + return (-1.*sqrt(2.)*(s2g*taW*angle(pa,pb)*square(p1,plbar)* + (4.*(angle(p1,pl)*square(p1,p2) + angle(pl,plbar)*square(p2,plbar))* + (angle(p1,pb)*square(p1,pg) - 1.*angle(pa,pb)*square(pa,pg) + + angle(pb,pl)*square(pg,pl) + angle(pb,plbar)*square(pg,plbar)) + + 4.*angle(pb,pg)*square(p2,pg)*(angle(p1,pl)*square(p1,pg) + + angle(pl,plbar)*square(pg,plbar))) + + s1W*s2g*angle(pa,pl)*(4.*angle(pb,pg)*square(p1,pg)*square(p2,pg) - + 4.*angle(pa,pb)*square(p1,p2)*square(pa,pg) + + 4.*square(p1,p2)*(angle(p1,pb)*square(p1,pg) + angle(pb,pl)*square(pg,pl) + + angle(pb,plbar)*square(pg,plbar)))* + (angle(pa,pb)*square(pa,plbar) + angle(pb,pl)*square(pl,plbar)) - + 2.*angle(p2,pb)*q1g.m2()*square(p2,pg)* + (taW*angle(pa,pb)*square(p1,plbar)* + (angle(p1,pl)*square(p1,p2) + angle(pl,plbar)*square(p2,plbar)) + + s1W*angle(pa,pl)*square(p1,p2)* + (angle(pa,pb)*square(pa,plbar) + angle(pb,pl)*square(pl,plbar)))))/ + (s1W*s2g*taW*taW1*angle(pb,pg)); + } + } + else { + if(hg == helicity::plus) { + // helicity +-+ + return (-1.*sqrt(2.)*(2.*taW*square(p1,plbar)*(angle(p1,pl)*square(p1,pb) + + angle(pl,plbar)*square(pb,plbar))* + (2.*s2g*angle(pa,pg)*(angle(p2,pa)*square(pa,pb) + angle(p2,pg)*square(pb,pg)) + + angle(p2,pa)*(angle(p2,pg)*q1g.m2()*square(p2,pb) - + 2.*s2g*(angle(p1,pg)*square(p1,pb) + angle(pg,pl)*square(pb,pl) + + angle(pg,plbar)*square(pb,plbar)))) + + s1W*angle(pa,pl)*square(p1,pb)*(4.*s2g*square(pa,plbar)* + (angle(pa,pg)*(angle(p2,pa)*square(pa,pb) + angle(p2,pg)*square(pb,pg)) - + 1.*angle(p2,pa)*(angle(p1,pg)*square(p1,pb) + angle(pg,pl)*square(pb,pl) + + angle(pg,plbar)*square(pb,plbar))) + + s2g*(-4.*angle(p2,pl)*angle(pa,pg)*square(pa,pb) + + 4.*angle(p2,pg)*angle(pg,pl)*square(pb,pg) + + 4.*angle(p2,pl)*(angle(p1,pg)*square(p1,pb) + angle(pg,pl)*square(pb,pl) + + angle(pg,plbar)*square(pb,plbar)))*square(pl,plbar) + + 2.*angle(p2,pg)*q1g.m2()*square(p2,pb)* + (angle(p2,pa)*square(pa,plbar) - 1.*angle(p2,pl)*square(pl,plbar)))))/ + (s1W*s2g*taW*taW1*square(pb,pg)); + } + else { + // helicity +-- + return (sqrt(2.)*(2.*taW*angle(p2,pa)*square(p1,plbar)* + (2.*sbg*angle(p2,pg)*square(pb,pg)* + (angle(p1,pl)*square(p1,pg) + angle(pl,plbar)*square(pg,plbar)) + + (angle(p1,pl)*square(p1,pb) + angle(pl,plbar)*square(pb,plbar))* + (angle(p2,pb)*q1g.m2()*square(pb,pg) + + 2.*sbg*(angle(p1,p2)*square(p1,pg) + angle(p2,pa)*square(pa,pg) + + angle(p2,pl)*square(pg,pl) + angle(p2,plbar)*square(pg,plbar)))) + + 2.*s1W*angle(pa,pl)*(2.*sbg*angle(p1,p2)*square(p1,pb)*square(p1,pg) + + 2.*sbg*angle(p2,pa)*square(p1,pb)*square(pa,pg) + + angle(p2,pb)*q1g.m2()*square(p1,pb)*square(pb,pg) + + 2.*sbg*angle(p2,pg)*square(p1,pg)*square(pb,pg) + + 2.*sbg*angle(p2,pl)*square(p1,pb)*square(pg,pl) + + 2.*sbg*angle(p2,plbar)*square(p1,pb)*square(pg,plbar))* + (angle(p2,pa)*square(pa,plbar) - 1.*angle(p2,pl)*square(pl,plbar))))/ + (s1W*sbg*taW*taW1*angle(p2,pg)); + } + } + } + else { + if(h2 == helicity::plus) { + if(hg == helicity::plus) { + // helicity -++ + return (sqrt(2.)*(2.*s1W*(angle(pa,pl)*square(p2,pa) + angle(pl,plbar)*square(p2,plbar))* + (2.*sbg*angle(p1,pg)*angle(pb,pg)*square(p2,pg) + + angle(p1,pb)*(angle(pb,pg)*q1g.m2()*square(p2,pb) + + 2.*sbg*(angle(p1,pg)*square(p1,p2) + angle(pa,pg)*square(p2,pa) + + angle(pg,pl)*square(p2,pl) + angle(pg,plbar)*square(p2,plbar))))*square(pa,plbar) + + taW*angle(p1,pl)*square(p2,pa)*(4.*sbg*square(p1,plbar)* + (angle(p1,pg)*angle(pb,pg)*square(p2,pg) + + angle(p1,pb)*(angle(p1,pg)*square(p1,p2) + angle(pa,pg)*square(p2,pa) + + angle(pg,pl)*square(p2,pl) + angle(pg,plbar)*square(p2,plbar))) - + 4.*sbg*(angle(pb,pg)*angle(pg,pl)*square(p2,pg) + + angle(pb,pl)*(angle(p1,pg)*square(p1,p2) + angle(pa,pg)*square(p2,pa) + + angle(pg,pl)*square(p2,pl) + angle(pg,plbar)*square(p2,plbar)))*square(pl,plbar) + + 2.*angle(pb,pg)*q1g.m2()*square(p2,pb)* + (angle(p1,pb)*square(p1,plbar) - 1.*angle(pb,pl)*square(pl,plbar)))))/ + (s1W*sbg*taW*taW1*square(p2,pg)); + } + else { + // helicity -+- + return (sqrt(2.)*((angle(p1,pb)*square(pa,plbar)* + (((angle(pa,pl)*square(p2,pa) + angle(pl,plbar)*square(p2,plbar))* + (4.*angle(p1,pb)*square(p1,pg) - (2.*angle(p2,pb)*q1g.m2()*square(p2,pg))/s2g - + 4.*angle(pa,pb)*square(pa,pg) + 4.*angle(pb,pl)*square(pg,pl) + + 4.*angle(pb,plbar)*square(pg,plbar)))/angle(pb,pg) + + square(p2,pg)*(-4.*angle(pa,pl)*square(pa,pg) + 4.*angle(pl,plbar)*square(pg,plbar))))/ + taW + (2.*angle(p1,pl)*(2.*s2g*angle(p1,pb)*square(p1,pg)*square(p2,pa) - + 1.*angle(p2,pb)*q1g.m2()*square(p2,pa)*square(p2,pg) + + 2.*s2g*(-1.*angle(pa,pb)*square(p2,pa)*square(pa,pg) - + 1.*angle(pb,pg)*square(p2,pg)*square(pa,pg) + + square(p2,pa)*(angle(pb,pl)*square(pg,pl) + angle(pb,plbar)*square(pg,plbar))))* + (angle(p1,pb)*square(p1,plbar) - 1.*angle(pb,pl)*square(pl,plbar)))/(s1W*s2g*angle(pb,pg)) + ))/taW1; + } + } + else { + if(hg == helicity::plus) { + // helicity --+ + return (2.*sqrt(2.)*(-1.*angle(p1,p2)*(2.*s2g*angle(p1,pg)*square(p1,pb) - + 1.*angle(p2,pg)*q1g.m2()*square(p2,pb) + + 2.*s2g*(-1.*angle(pa,pg)*square(pa,pb) + angle(pg,pl)*square(pb,pl) + + angle(pg,plbar)*square(pb,plbar)))* + (taW*angle(p1,pl)*square(p1,plbar)*square(pa,pb) + + s1W*square(pa,plbar)*(angle(pa,pl)*square(pa,pb) - 1.*angle(pl,plbar)*square(pb,plbar))) + + taW*angle(p1,pl)*square(pa,pb)* + (angle(p2,pg)*(-1.*angle(p2,pl)*q1g.m2()*square(p2,pb) + + 2.*s2g*angle(pg,pl)*square(pb,pg)) + + 2.*s2g*angle(p2,pl)*(-1.*angle(pa,pg)*square(pa,pb) + angle(pg,pl)*square(pb,pl) + + angle(pg,plbar)*square(pb,plbar)))*square(pl,plbar) - + 2.*s2g*angle(p1,pg)*(s1W*angle(p2,pg)*square(pa,plbar)*square(pb,pg)* + (angle(pa,pl)*square(pa,pb) - 1.*angle(pl,plbar)*square(pb,plbar)) + + taW*angle(p1,pl)*square(pa,pb)* + (angle(p2,pg)*square(p1,plbar)*square(pb,pg) - + 1.*angle(p2,pl)*square(p1,pb)*square(pl,plbar)))))/(s1W*s2g*taW*taW1*square(pb,pg)); + } + else { + // helicity --- + return (2.*sqrt(2.)*(-1.*angle(p1,p2)*(angle(p2,pb)*q1g.m2()*square(pb,pg)* + (taW*angle(p1,pl)*square(p1,plbar)*square(pa,pb) + + s1W*square(pa,plbar)*(angle(pa,pl)*square(pa,pb) - 1.*angle(pl,plbar)*square(pb,plbar)) + ) + 2.*sbg*(taW*angle(p1,pl)*square(p1,plbar) + s1W*angle(pa,pl)*square(pa,plbar))* + (angle(p2,pg)*square(pa,pg)*square(pb,pg) + + square(pa,pb)*(angle(p1,p2)*square(p1,pg) + angle(p2,pa)*square(pa,pg) + + angle(p2,pl)*square(pg,pl) + angle(p2,plbar)*square(pg,plbar))) - + 2.*s1W*sbg*angle(pl,plbar)*square(pa,plbar)* + (angle(p2,pg)*square(pb,pg)*square(pg,plbar) + + square(pb,plbar)*(angle(p1,p2)*square(p1,pg) + angle(p2,pa)*square(pa,pg) + + angle(p2,pl)*square(pg,pl) + angle(p2,plbar)*square(pg,plbar)))) + + taW*angle(p1,pl)*angle(p2,pl)*(2.*sbg*angle(p2,pg)*square(pa,pg)*square(pb,pg) + + square(pa,pb)*(angle(p2,pb)*q1g.m2()*square(pb,pg) + + 2.*sbg*(angle(p1,p2)*square(p1,pg) + angle(p2,pa)*square(pa,pg) + + angle(p2,pl)*square(pg,pl) + angle(p2,plbar)*square(pg,plbar))))*square(pl,plbar)))/ + (s1W*sbg*taW*taW1*angle(p2,pg)); + } + } + } + } + + /** * @brief W+Jets Unordered Contribution Helper Functions * @returns result of equation (4.1.28) in Helen's Thesis (p.100) */ double jM2Wuno(HLV pg, HLV p1,HLV plbar, HLV pl, HLV pa, Helicity h1, HLV p2, HLV pb, Helicity h2, Helicity pol, ParticleProperties const & wprop ){ //@TODO Simplify the below (less Tensor class?) init_sigma_index(); HLV pW = pl+plbar; HLV q1g=pa-pW-p1-pg; HLV q1 = pa-p1-pW; HLV q2 = p2-pb; const double taW = (pa-pW).m2(); const double taW1 = (pa-pW-p1).m2(); const double s1W = (p1+pW).m2(); const double s1gW = (p1+pW+pg).m2(); const double s1g = (p1+pg).m2(); const double s2g = (p2+pg).m2(); const double sbg = (pb+pg).m2(); const double tag = (pa-pg).m2(); const double taWg = (pa-pW-pg).m2(); //use p1 as ref vec in pol tensor Tensor<1> epsg = eps(pg,p2,pol); Tensor<1> epsW = HEJ::current(pl,plbar,helicity::minus); Tensor<1> j2b = HEJ::current(p2,pb,h2); Tensor<1> Tq1q2 = to_tensor( (pb/sbg + p2/s2g)*(q1 - pg).m2() + 2*q1 - pg ); Tensor<3> J31a = rank3_current(p1, pa, h1); Tensor<2> J2_qaW =J31a.contract((pa-pW)/taW/taW1, 2); Tensor<2> J2_p1W =J31a.contract((p1+pW)/s1W/taW1, 2); Tensor<3> L1a = outer(Tq1q2, J2_qaW); Tensor<3> L1b = outer(Tq1q2, J2_p1W); Tensor<3> L2a = outer(-2*pg, J2_qaW); Tensor<3> L2b = outer(-2*pg, J2_p1W); Tensor<3> L3 = outer(metric(), J2_qaW.contract(2*pg-q1,1)+J2_p1W.contract(2*pg-q1,2)); Tensor<3> L(0.); Tensor<5> J51a = rank5_current(p1, pa, h1); Tensor<4> J_qaW = J51a.contract((pa-pW),4); Tensor<4> J_qag = J51a.contract(pa-pg,4); Tensor<4> J_p1gW = J51a.contract(p1+pg+pW,4); Tensor<3> U1a = J_qaW.contract(p1+pg,2); Tensor<3> U1b = J_p1gW.contract(p1+pg,2); Tensor<3> U1c = J_p1gW.contract(p1+pW,2); Tensor<3> U1(0.); Tensor<3> U2a = J_qaW.contract(pa-pg-pW,2); Tensor<3> U2b = J_qag.contract(pa-pg-pW,2); Tensor<3> U2c = J_qag.contract(p1+pW,2); Tensor<3> U2(0.); for(int nu=0; nu<4;nu++){ for(int mu=0;mu<4;mu++){ for(int rho=0;rho<4;rho++){ L(nu, mu, rho) = L1a(nu,mu,rho) + L1b(nu,rho,mu) + L2a(mu,nu,rho) + L2b(mu,rho,nu) + L3(mu,nu,rho); U1(nu, mu, rho) = U1a(nu, mu, rho) / (s1g*taW) + U1b(nu,rho,mu) / (s1g*s1gW) + U1c(rho,nu,mu) / (s1W*s1gW); U2(nu,mu,rho) = U2a(mu,nu,rho) / (taWg*taW) + U2b(mu,rho,nu) / (taWg*tag) + U2c(rho,mu,nu) / (s1W*tag); } } } COM X = ((((U1-L).contract(epsW,3)).contract(j2b,2)).contract(epsg,1)); COM Y = ((((U2+L).contract(epsW,3)).contract(j2b,2)).contract(epsg,1)); double amp = HEJ::C_A*HEJ::C_F*HEJ::C_F/2.*(norm(X)+norm(Y)) - HEJ::C_F/2.*(X*conj(Y)).real(); double t1 = q1g.m2(); double t2 = q2.m2(); //Divide by WProp amp*=WProp(plbar, pl, wprop); //Divide by t-channels amp/=(t1*t2); return amp; } + /** + * @brief New implementation of unordered W+Jets current + * + * See eq:wunocurrent in the developer manual for the definition + * of this current + * + * The aim is to replace jM2Wuno and eventually all uses of the Tensor class. + * Explicit tensor contractions are rather slow and the initialisation code + * in Tensor.cc is not very transparent. + * + * At the moment, this function _only_ works for positive-energy spinors, + * so jM2Wuno has to be kept for qqbar emission. + */ + double jM2Wuno_pos_energy( + HLV const & pg, HLV const & p1, HLV const & plbar, HLV const & pl, + HLV const & pa, Helicity const h1, + HLV const & p2, HLV const & pb, Helicity const h2, Helicity const pol, + ParticleProperties const & wprop + ){ + using HEJ::C_A; + using HEJ::C_F; + + const COM U1 = U1contr(pg, p1, plbar, pl, pa, h1, p2, pb, h2, pol); + const COM U2 = U2contr(pg, p1, plbar, pl, pa, h1, p2, pb, h2, pol); + const COM L = Lcontr(pg, p1, plbar, pl, pa, h1, p2, pb, h2, pol); + + const COM X = U1 - L; + const COM Y = U2 + L; + + double amp = C_A*C_F*C_F/2.*(norm(X)+norm(Y)) - HEJ::C_F/2.*(X*conj(Y)).real(); + amp *= WProp(plbar, pl, wprop); + + const HLV q1g = pa-pl-plbar-p1-pg; + const HLV q2 = p2-pb; + + const double t1 = q1g.m2(); + const double t2 = q2.m2(); + + amp /= (t1*t2); + return amp; + } + + // Relevant Wqqx Helper Functions. //g->qxqlxl (Calculates gluon to qqx Current. See JV_\mu in WSubleading Notes) Tensor <1> gtqqxW(HLV pq,HLV pqbar,HLV pl,HLV plbar){ //@TODO Simplify the calculation below (Less Tensor class use?) double s2AB=(pl+plbar+pq).m2(); double s3AB=(pl+plbar+pqbar).m2(); // Define llx current. Tensor<1> ABCur = HEJ::current(pl, plbar, helicity::minus); //blank 3 Gamma Current Tensor<3> JV23 = rank3_current(pq,pqbar,helicity::minus); // Components of g->qqW before W Contraction Tensor<2> JV1 = JV23.contract((pq + pl + plbar),2)/(s2AB); Tensor<2> JV2 = JV23.contract((pqbar + pl + plbar),2)/(s3AB); // g->qqW Current. Note Minus between terms due to momentum flow. // Also note: (-I)^2 from W vert. (I) from Quark prop. Tensor<1> JVCur = (JV1.contract(ABCur,1) - JV2.contract(ABCur,2))*COM(0.,-1.); return JVCur; } // Helper Functions Calculate the Crossed Contribution Tensor <2> MCrossW(HLV pa, HLV, HLV, HLV, HLV pq, HLV pqbar, HLV pl, HLV plbar, std::vector<HLV> partons, int nabove ){ //@TODO Simplify the calculation below Maybe combine with MCross? // Useful propagator factors double s2AB=(pl+plbar+pq).m2(); double s3AB=(pl+plbar+pqbar).m2(); HLV q1, q3; q1=pa; for(int i=0; i<nabove+1;i++){ q1=q1-partons.at(i); } q3 = q1 - pq - pqbar - pl - plbar; double tcro1=(q3+pq).m2(); double tcro2=(q1-pqbar).m2(); // Define llx current. Tensor<1> ABCur = HEJ::current(pl, plbar,helicity::minus); //Blank 5 gamma Current Tensor<5> J523 = rank5_current(pq,pqbar,helicity::minus); // 4 gamma currents (with 1 contraction already). Tensor<4> J_q3q = J523.contract((q3 + pq),2); Tensor<4> J_2AB = J523.contract((pq + pl + plbar),2); // Components of Crossed Vertex Contribution Tensor<3> Xcro1 = J_q3q.contract((pqbar + pl + plbar),3); Tensor<3> Xcro2 = J_q3q.contract((q1 - pqbar),3); Tensor<3> Xcro3 = J_2AB.contract((q1 - pqbar),3); // Term Denominators Taken Care of at this stage Tensor<2> Xcro1Cont = Xcro1.contract(ABCur,3)/(tcro1*s3AB); Tensor<2> Xcro2Cont = Xcro2.contract(ABCur,2)/(tcro1*tcro2); Tensor<2> Xcro3Cont = Xcro3.contract(ABCur,1)/(s2AB*tcro2); //Initialise the Crossed Vertex Object Tensor<2> Xcro(0.); for(int mu=0; mu<4;mu++){ for(int nu=0;nu<4;nu++){ Xcro(mu,nu) = -(-Xcro1Cont(nu,mu)+Xcro2Cont(nu,mu)+Xcro3Cont(nu,mu)); } } return Xcro; } // Helper Functions Calculate the Uncrossed Contribution Tensor <2> MUncrossW(HLV pa, HLV, HLV, HLV, HLV pq, HLV pqbar, HLV pl, HLV plbar, std::vector<HLV> partons, int nabove ){ //@TODO Simplify the calculation below Maybe combine with MUncross? double s2AB=(pl+plbar+pq).m2(); double s3AB=(pl+plbar+pqbar).m2(); HLV q1, q3; q1=pa; for(int i=0; i<nabove+1;i++){ q1=q1-partons.at(i); } q3 = q1 - pl - plbar - pq - pqbar; double tunc1 = (q1-pq).m2(); double tunc2 = (q3+pqbar).m2(); // Define llx current. Tensor<1> ABCur = HEJ::current(pl, plbar, helicity::minus); //Blank 5 gamma Current Tensor<5> J523 = rank5_current(pq,pqbar,helicity::minus); // 4 gamma currents (with 1 contraction already). Tensor<4> J_2AB = J523.contract((pq + pl + plbar),2); Tensor<4> J_q1q = J523.contract((q1 - pq),2); // 2 Contractions taken care of. Tensor<3> Xunc1 = J_2AB.contract((q3 + pqbar),3); Tensor<3> Xunc2 = J_q1q.contract((q3 + pqbar),3); Tensor<3> Xunc3 = J_q1q.contract((pqbar + pl + plbar),3); // Term Denominators Taken Care of at this stage Tensor<2> Xunc1Cont = Xunc1.contract(ABCur,1)/(s2AB*tunc2); Tensor<2> Xunc2Cont = Xunc2.contract(ABCur,2)/(tunc1*tunc2); Tensor<2> Xunc3Cont = Xunc3.contract(ABCur,3)/(tunc1*s3AB); //Initialise the Uncrossed Vertex Object Tensor<2> Xunc(0.); for(int mu=0; mu<4;mu++){ for(int nu=0;nu<4;nu++){ Xunc(mu,nu) = -(- Xunc1Cont(mu,nu)+Xunc2Cont(mu,nu) +Xunc3Cont(mu,nu)); } } return Xunc; } // Helper Functions Calculate the g->qqxW (Eikonal) Contributions Tensor <2> MSymW(HLV pa, HLV p1, HLV pb, HLV p4, HLV pq, HLV pqbar, HLV pl,HLV plbar, std::vector<HLV> partons, int nabove ){ //@TODO Simplify the calculation below Maybe combine with MSym? double sa2=(pa+pq).m2(); double s12=(p1+pq).m2(); double sa3=(pa+pqbar).m2(); double s13=(p1+pqbar).m2(); double saA=(pa+pl).m2(); double s1A=(p1+pl).m2(); double saB=(pa+plbar).m2(); double s1B=(p1+plbar).m2(); double sb2=(pb+pq).m2(); double s42=(p4+pq).m2(); double sb3=(pb+pqbar).m2(); double s43=(p4+pqbar).m2(); double sbA=(pb+pl).m2(); double s4A=(p4+pl).m2(); double sbB=(pb+plbar).m2(); double s4B=(p4+plbar).m2(); double s23AB=(pl+plbar+pq+pqbar).m2(); HLV q1,q3; q1=pa; for(int i=0;i<nabove+1;i++){ q1-=partons.at(i); } q3=q1-pq-pqbar-plbar-pl; double t1 = (q1).m2(); double t3 = (q3).m2(); // g->qqW Current (Factors of sqrt2 dealt with in this function.) Tensor<1> JV = gtqqxW(pq,pqbar,pl,plbar); // 1a gluon emisson Contribution Tensor<3> X1a = outer(metric(), p1*(t1/(s12+s13+s1A+s1B)) + pa*(t1/(sa2+sa3+saA+saB)) ); Tensor<2> X1aCont = X1a.contract(JV,3); //4b gluon emission Contribution Tensor<3> X4b = outer(metric(), p4*(t3/(s42+s43+s4A+s4B)) + pb*(t3/(sb2+sb3+sbA+sbB)) ); Tensor<2> X4bCont = X4b.contract(JV,3); //Set up each term of 3G diagram. Tensor<3> X3g1 = outer(q1+pq+pqbar+pl+plbar, metric()); Tensor<3> X3g2 = outer(q3-pq-pqbar-pl-plbar, metric()); Tensor<3> X3g3 = outer(q1+q3, metric()); // Note the contraction of indices changes term by term Tensor<2> X3g1Cont = X3g1.contract(JV,3); Tensor<2> X3g2Cont = X3g2.contract(JV,2); Tensor<2> X3g3Cont = X3g3.contract(JV,1); // XSym is an amalgamation of x1a, X4b and X3g. // Makes sense from a colour factor point of view. Tensor<2>Xsym(0.); for(int mu=0; mu<4;mu++){ for(int nu=0;nu<4;nu++){ Xsym(mu,nu) = (X3g1Cont(nu,mu) + X3g2Cont(mu,nu) - X3g3Cont(nu,mu)) + (X1aCont(mu,nu) - X4bCont(mu,nu)); } } return Xsym/s23AB; } Tensor <2> MCross(HLV pa, HLV pq, HLV pqbar, std::vector<HLV> partons, Helicity hq, int nabove ){ //@TODO Simplify the calculation below Maybe combine with MCrossW? HLV q1; q1=pa; for(int i=0;i<nabove+1;i++){ q1-=partons.at(i); } double t2=(q1-pqbar).m2(); //Blank 3 gamma Current Tensor<3> J323 = rank3_current(pq,pqbar,hq); // 2 gamma current (with 1 contraction already). Tensor<2> XCroCont = J323.contract((q1-pqbar),2)/(t2); //Initialise the Crossed Vertex Tensor<2> Xcro(0.); for(int mu=0; mu<4;mu++){ for(int nu=0;nu<4;nu++){ Xcro(mu,nu) = XCroCont(nu,mu); } } return Xcro; } // Helper Functions Calculate the Uncrossed Contribution Tensor <2> MUncross(HLV pa, HLV pq,HLV pqbar, std::vector<HLV> partons, Helicity hq, int nabove ){ //@TODO Simplify the calculation below Maybe combine with MUncrossW? HLV q1; q1=pa; for(int i=0;i<nabove+1;i++){ q1-=partons.at(i); } double t2 = (q1-pq).m2(); //Blank 3 gamma Current Tensor<3> J323 = rank3_current(pq,pqbar,hq); // 2 gamma currents (with 1 contraction already). Tensor<2> XUncCont = J323.contract((q1-pq),2)/t2; //Initialise the Uncrossed Vertex Tensor<2> Xunc(0.); for(int mu=0; mu<4;mu++){ for(int nu=0;nu<4;nu++){ Xunc(mu,nu) = -XUncCont(mu,nu); } } return Xunc; } // Helper Functions Calculate the Eikonal Contributions Tensor <2> MSym(HLV pa, HLV p1, HLV pb, HLV p4, HLV pq, HLV pqbar, std::vector<HLV> partons, Helicity hq, int nabove ){ //@TODO Simplify the calculation below Maybe combine with MsymW? HLV q1, q3; q1=pa; for(int i=0;i<nabove+1;i++){ q1-=partons.at(i); } q3 = q1-pq-pqbar; double t1 = (q1).m2(); double t3 = (q3).m2(); double s23 = (pq+pqbar).m2(); double sa2 = (pa+pq).m2(); double sa3 = (pa+pqbar).m2(); double s12 = (p1+pq).m2(); double s13 = (p1+pqbar).m2(); double sb2 = (pb+pq).m2(); double sb3 = (pb+pqbar).m2(); double s42 = (p4+pq).m2(); double s43 = (p4+pqbar).m2(); Tensor<1> qqxCur = HEJ::current(pq, pqbar, hq); // // 1a gluon emisson Contribution Tensor<3> X1a = outer(metric(), p1*(t1/(s12+s13))+ pa*(t1/(sa2+sa3))); Tensor<2> X1aCont = X1a.contract(qqxCur,3); // //4b gluon emission Contribution Tensor<3> X4b = outer(metric(), p4*(t3/(s42+s43)) + pb*(t3/(sb2+sb3))); Tensor<2> X4bCont = X4b.contract(qqxCur,3); // New Formulation Corresponding to New Analytics Tensor<3> X3g1 = outer(q1+pq+pqbar, metric()); Tensor<3> X3g2 = outer(q3-pq-pqbar, metric()); Tensor<3> X3g3 = outer(q1+q3, metric()); // Note the contraction of indices changes term by term Tensor<2> X3g1Cont = X3g1.contract(qqxCur,3); Tensor<2> X3g2Cont = X3g2.contract(qqxCur,2); Tensor<2> X3g3Cont = X3g3.contract(qqxCur,1); Tensor<2>Xsym(0.); for(int mu=0; mu<4;mu++){ for(int nu=0;nu<4;nu++){ Xsym(mu, nu) = COM(0,1) * ( (X3g1Cont(nu,mu) + X3g2Cont(mu,nu) - X3g3Cont(nu,mu)) + (X1aCont(mu,nu) - X4bCont(mu,nu)) ); } } return Xsym/s23; } //! W+Jets FKL Contributions /** * @brief W+Jets FKL Contributions, function to handle all incoming types. * @param p1out Outgoing Particle 1. (W emission) * @param plbar Outgoing election momenta * @param pl Outgoing neutrino momenta * @param p1in Incoming Particle 1. (W emission) * @param p2out Outgoing Particle 2 * @param p2in Incoming Particle 2 * @param aqlineb Bool. Is Backwards quark line an anti-quark line? * @param aqlinef Bool. Is Forwards quark line an anti-quark line? * * Calculates j_W ^\mu j_\mu. * Handles all possible incoming states. */ double jW_j( HLV p1out, HLV plbar, HLV pl, HLV p1in, HLV p2out, HLV p2in, bool aqlineb, bool /* aqlinef */, ParticleProperties const & wprop ){ using helicity::minus; using helicity::plus; const HLV q1=p1in-p1out-plbar-pl; const HLV q2=-(p2in-p2out); const double WPropfact = WProp(plbar, pl, wprop); const auto j_W = COM{0,-1}*jW(p1in, p1out, plbar, pl, aqlineb?plus:minus); double Msqr = 0.; for(const auto h: {plus, minus}) { const auto j = HEJ::current(p2out, p2in, h); Msqr += abs2(j_W.contract(j, 1)); } // Division by colour and Helicity average (Nc2-1)(4) // Multiply by Cf^2 return HEJ::C_F*HEJ::C_F*WPropfact*Msqr/(q1.m2()*q2.m2()*(HEJ::N_C*HEJ::N_C - 1)*4); } } // Anonymous Namespace double ME_W_qQ (HLV p1out, HLV plbar, HLV pl,HLV p1in, HLV p2out, HLV p2in, ParticleProperties const & wprop ){ return jW_j(p1out, plbar, pl, p1in, p2out, p2in, false, false, wprop); } double ME_W_qQbar (HLV p1out, HLV plbar, HLV pl,HLV p1in, HLV p2out, HLV p2in, ParticleProperties const & wprop ){ return jW_j(p1out, plbar, pl, p1in, p2out, p2in, false, true, wprop); } double ME_W_qbarQ (HLV p1out, HLV plbar, HLV pl,HLV p1in, HLV p2out, HLV p2in, ParticleProperties const & wprop ){ return jW_j(p1out, plbar, pl, p1in, p2out, p2in, true, false, wprop); } double ME_W_qbarQbar (HLV p1out, HLV plbar, HLV pl,HLV p1in, HLV p2out, HLV p2in, ParticleProperties const & wprop ){ return jW_j(p1out, plbar, pl, p1in, p2out, p2in, true, true, wprop); } double ME_W_qg (HLV p1out, HLV plbar, HLV pl,HLV p1in, HLV p2out, HLV p2in, ParticleProperties const & wprop ){ return jW_j(p1out, plbar, pl, p1in, p2out, p2in, false, false, wprop) *K_g(p2out, p2in)/HEJ::C_F; } double ME_W_qbarg (HLV p1out, HLV plbar, HLV pl,HLV p1in, HLV p2out, HLV p2in, ParticleProperties const & wprop ){ return jW_j(p1out, plbar, pl, p1in, p2out, p2in, true, false, wprop) *K_g(p2out, p2in)/HEJ::C_F; } namespace{ /** * @brief W+Jets Unordered Contributions, function to handle all incoming types. * @param p1out Outgoing Particle 1. (W emission) * @param plbar Outgoing election momenta * @param pl Outgoing neutrino momenta * @param p1in Incoming Particle 1. (W emission) * @param p2out Outgoing Particle 2 (Quark, unordered emission this side.) * @param p2in Incoming Particle 2 (Quark, unordered emission this side.) * @param pg Unordered Gluon momenta * @param aqlineb Bool. Is Backwards quark line an anti-quark line? * @param aqlinef Bool. Is Forwards quark line an anti-quark line? * * Calculates j_W ^\mu j_{uno}_\mu. Ie, unordered with W emission opposite side. * Handles all possible incoming states. */ double jW_juno(HLV p1out, HLV plbar, HLV pl,HLV p1in, HLV p2out, HLV p2in, HLV pg, bool aqlineb, bool aqlinef, ParticleProperties const & wprop ){ using helicity::minus; using helicity::plus; const HLV q1=p1in-p1out-plbar-pl; const HLV q2=-(p2in-p2out-pg); const HLV q3=-(p2in-p2out); const Helicity fhel = aqlinef?plus:minus; const auto j_W = jW(p1in, p1out, plbar, pl, aqlineb?plus:minus); const auto mj2p = HEJ::current(p2out, p2in, flip(fhel)); const auto mj2m = HEJ::current(p2out, p2in, fhel); const auto jgbp = HEJ::current(pg, p2in, flip(fhel)); const auto jgbm = HEJ::current(pg, p2in, fhel); const auto j2gp = HEJ::current(p2out, pg, flip(fhel)); const auto j2gm = HEJ::current(p2out, pg, fhel); // Dot products of these which occur again and again COM MWmp=j_W.dot(mj2p); // And now for the Higgs ones COM MWmm=j_W.dot(mj2m); const auto qsum = to_tensor(q2+q3); const auto p1o = to_tensor(p1out); const auto p1i = to_tensor(p1in); const auto p2o = to_tensor(p2out); const auto p2i = to_tensor(p2in); const auto Lmm=( (-1.)*qsum*(MWmm) + (-2.*COM{j_W.dot(pg)})*mj2m + 2.*COM{mj2m.dot(pg)}*j_W + ( p1o/pg.dot(p1out) + p1i/pg.dot(p1in) )*( q2.m2()*MWmm/2. ) )/q3.m2(); const auto Lmp=( (-1.)*qsum*(MWmp) + (-2.*COM{j_W.dot(pg)})*mj2p + 2.*COM{mj2p.dot(pg)}*j_W + ( p1o/pg.dot(p1out) + p1i/pg.dot(p1in) )*( q2.m2()*MWmp/2. ) )/q3.m2(); const auto U1mm=(COM{jgbm.dot(j_W)}*j2gm+2.*p2o*MWmm)/(p2out+pg).m2(); const auto U1mp=(COM{jgbp.dot(j_W)}*j2gp+2.*p2o*MWmp)/(p2out+pg).m2(); const auto U2mm=((-1.)*COM{j2gm.dot(j_W)}*jgbm+2.*p2i*MWmm)/(p2in-pg).m2(); const auto U2mp=((-1.)*COM{j2gp.dot(j_W)}*jgbp+2.*p2i*MWmp)/(p2in-pg).m2(); double amm,amp; amm=HEJ::C_F*(2.*vre(Lmm-U1mm,Lmm+U2mm))+2.*HEJ::C_F*HEJ::C_F/3.*abs2(U1mm+U2mm); amp=HEJ::C_F*(2.*vre(Lmp-U1mp,Lmp+U2mp))+2.*HEJ::C_F*HEJ::C_F/3.*abs2(U1mp+U2mp); double ampsq=-(amm+amp); //Divide by WProp ampsq*=WProp(plbar, pl, wprop); return ampsq/((16)*(q2.m2()*q1.m2())); } } double ME_W_unob_qQ(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV pg, HLV plbar, HLV pl, ParticleProperties const & wprop ){ return jW_juno(p2out, plbar, pl, p2in, p1out, p1in, pg, false, false, wprop); } double ME_W_unob_qQbar(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV pg, HLV plbar, HLV pl, ParticleProperties const & wprop ){ return jW_juno(p2out, plbar, pl, p2in, p1out, p1in, pg, false, true, wprop); } double ME_W_unob_qbarQ(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV pg, HLV plbar, HLV pl, ParticleProperties const & wprop ){ return jW_juno(p2out, plbar, pl, p2in, p1out, p1in, pg, true, false, wprop); } double ME_W_unob_qbarQbar(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV pg, HLV plbar, HLV pl, ParticleProperties const & wprop ){ return jW_juno(p2out, plbar, pl, p2in, p1out, p1in, pg, true, true, wprop); } namespace{ /** * @brief W+Jets Unordered Contributions, function to handle all incoming types. * @param pg Unordered Gluon momenta * @param p1out Outgoing Particle 1. (Quark - W and Uno emission) * @param plbar Outgoing election momenta * @param pl Outgoing neutrino momenta * @param p1in Incoming Particle 1. (Quark - W and Uno emission) * @param p2out Outgoing Particle 2 * @param p2in Incoming Particle 2 * @param aqlineb Bool. Is Backwards quark line an anti-quark line? * * Calculates j_W_{uno} ^\mu j_\mu. Ie, unordered with W emission same side. * Handles all possible incoming states. Note this handles both forward and back- * -ward Wuno emission. For forward, ensure p1out is the uno and W emission parton. * @TODO: Include separate wrapper functions for forward and backward to clean up * ME_W_unof_current in `MatrixElement.cc`. */ double jWuno_j(HLV pg, HLV p1out, HLV plbar, HLV pl, HLV p1in, HLV p2out, HLV p2in, bool aqlineb, ParticleProperties const & wprop ){ //Calculate different Helicity choices const Helicity h = aqlineb?helicity::plus:helicity::minus; - double ME2mpp = jM2Wuno(pg, p1out,plbar,pl,p1in,h,p2out,p2in, + double ME2mpp = jM2Wuno_pos_energy(pg, p1out,plbar,pl,p1in,h,p2out,p2in, helicity::plus,helicity::plus, wprop); - double ME2mpm = jM2Wuno(pg, p1out,plbar,pl,p1in,h,p2out,p2in, + double ME2mpm = jM2Wuno_pos_energy(pg, p1out,plbar,pl,p1in,h,p2out,p2in, helicity::plus,helicity::minus, wprop); - double ME2mmp = jM2Wuno(pg, p1out,plbar,pl,p1in,h,p2out,p2in, + double ME2mmp = jM2Wuno_pos_energy(pg, p1out,plbar,pl,p1in,h,p2out,p2in, helicity::minus,helicity::plus, wprop); - double ME2mmm = jM2Wuno(pg, p1out,plbar,pl,p1in,h,p2out,p2in, + double ME2mmm = jM2Wuno_pos_energy(pg, p1out,plbar,pl,p1in,h,p2out,p2in, helicity::minus,helicity::minus, wprop); //Helicity sum and average over initial states return (ME2mpp + ME2mpm + ME2mmp + ME2mmm)/(4.*HEJ::C_A*HEJ::C_A); } } double ME_Wuno_qQ(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV pg, HLV plbar, HLV pl, ParticleProperties const & wprop ){ return jWuno_j(pg, p1out, plbar, pl, p1in, p2out, p2in, false, wprop); } double ME_Wuno_qQbar(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV pg, HLV plbar, HLV pl, ParticleProperties const & wprop ){ return jWuno_j(pg, p1out, plbar, pl, p1in, p2out, p2in, false, wprop); } double ME_Wuno_qbarQ(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV pg, HLV plbar, HLV pl, ParticleProperties const & wprop ){ return jWuno_j(pg, p1out, plbar, pl, p1in, p2out, p2in, true, wprop); } double ME_Wuno_qbarQbar(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV pg, HLV plbar, HLV pl, ParticleProperties const & wprop ){ return jWuno_j(pg, p1out, plbar, pl, p1in, p2out, p2in, true, wprop); } double ME_Wuno_qg(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV pg, HLV plbar, HLV pl, ParticleProperties const & wprop ){ return jWuno_j(pg, p1out, plbar, pl, p1in, p2out, p2in, false, wprop) *K_g(p2out, p2in)/HEJ::C_F; } double ME_Wuno_qbarg(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV pg, HLV plbar, HLV pl, ParticleProperties const & wprop ){ return jWuno_j(pg, p1out, plbar, pl, p1in, p2out, p2in, true, wprop) *K_g(p2out, p2in)/HEJ::C_F; } /** * @brief W+Jets Extremal qqx Contributions, function to handle all incoming types. * @param pgin Incoming gluon which will split into qqx. * @param pqout Quark of extremal qqx outgoing (W-Emission). * @param plbar Outgoing anti-lepton momenta * @param pl Outgoing lepton momenta * @param pqbarout Anti-quark of extremal qqx pair. (W-Emission) * @param pout Outgoing Particle 2 (end of FKL chain) * @param p2in Incoming Particle 2 * @param aqlinef Bool. Is Forwards quark line an anti-quark line? * * Calculates j_W_{qqx} ^\mu j_\mu. Ie, Ex-QQX with W emission same side. * Handles all possible incoming states. Calculated via crossing symmetry from jWuno_j. */ double jWqqx_j(HLV pgin, HLV pqout, HLV plbar, HLV pl, HLV pqbarout, HLV p2out, HLV p2in, bool aqlinef, ParticleProperties const & wprop ){ //Calculate Different Helicity Configurations. const Helicity h = aqlinef?helicity::plus:helicity::minus; double ME2mpp = jM2Wuno(-pgin, pqout,plbar,pl,-pqbarout,h,p2out,p2in, helicity::plus,helicity::plus, wprop); double ME2mpm = jM2Wuno(-pgin, pqout,plbar,pl,-pqbarout,h,p2out,p2in, helicity::plus,helicity::minus, wprop); double ME2mmp = jM2Wuno(-pgin, pqout,plbar,pl,-pqbarout,h,p2out,p2in, helicity::minus,helicity::plus, wprop); double ME2mmm = jM2Wuno(-pgin, pqout,plbar,pl,-pqbarout,h,p2out,p2in, helicity::minus,helicity::minus, wprop); //Helicity sum and average over initial states. double ME2 = (ME2mpp + ME2mpm + ME2mmp + ME2mmm)/(4.*HEJ::C_A*HEJ::C_A); //Correct colour averaging after crossing: ME2*=(3.0/8.0); return ME2; } double ME_WExqqx_qbarqQ(HLV pgin, HLV pqout, HLV plbar, HLV pl, HLV pqbarout, HLV p2out, HLV p2in, ParticleProperties const & wprop ){ return jWqqx_j(pgin, pqout, plbar, pl, pqbarout, p2out, p2in, false, wprop); } double ME_WExqqx_qqbarQ(HLV pgin, HLV pqbarout, HLV plbar, HLV pl, HLV pqout, HLV p2out, HLV p2in, ParticleProperties const & wprop ){ return jWqqx_j(pgin, pqbarout, plbar, pl, pqout, p2out, p2in, true, wprop); } double ME_WExqqx_qbarqg(HLV pgin, HLV pqout, HLV plbar, HLV pl, HLV pqbarout, HLV p2out, HLV p2in, ParticleProperties const & wprop ){ return jWqqx_j(pgin, pqout, plbar, pl, pqbarout, p2out, p2in, false, wprop) *K_g(p2out,p2in)/HEJ::C_F; } double ME_WExqqx_qqbarg(HLV pgin, HLV pqbarout, HLV plbar, HLV pl, HLV pqout, HLV p2out, HLV p2in, ParticleProperties const & wprop ){ return jWqqx_j(pgin, pqbarout, plbar, pl, pqout, p2out, p2in, true, wprop) *K_g(p2out,p2in)/HEJ::C_F; } namespace { //Function to calculate Term 1 in Equation 3.23 in James Cockburn's Thesis. Tensor<1> qggm1(HLV pb, HLV p2, HLV p3, Helicity hel2, Helicity helg, HLV refmom){ //@TODO Simplify the calculation below. (Less Tensor class use?) double t1 = (p3-pb)*(p3-pb); // Gauge choice in polarisation tensor. (see JC's Thesis) Tensor<1> epsg = eps(pb, refmom, helg); Tensor<3> qqCurBlank = rank3_current(p2,p3,hel2); Tensor<2> qqCur = qqCurBlank.contract(p3-pb,2); Tensor<1> gqqCur = qqCur.contract(epsg,2)/t1; return gqqCur*(-1); } //Function to calculate Term 2 in Equation 3.23 in James Cockburn's Thesis. Tensor<1> qggm2(HLV pb, HLV p2, HLV p3, Helicity hel2, Helicity helg, HLV refmom){ //@TODO Simplify the calculation below (Less Tensor class use?) double t1 = (p2-pb)*(p2-pb); // Gauge choice in polarisation tensor. (see JC's Thesis) Tensor<1> epsg = eps(pb,refmom, helg); Tensor<3> qqCurBlank = rank3_current(p2,p3,hel2); Tensor<2> qqCur = qqCurBlank.contract(p2-pb,2); Tensor<1> gqqCur = qqCur.contract(epsg,1)/t1; return gqqCur; } //Function to calculate Term 3 in Equation 3.23 in James Cockburn's Thesis. Tensor<1> qggm3(HLV pb, HLV p2, HLV p3, Helicity hel2, Helicity helg, HLV refmom){ //@TODO Simplify the calculation below (Less Tensor class use?) double s23 = (p2+p3)*(p2+p3); // Gauge choice in polarisation tensor. (see JC's Thesis) Tensor<1> epsg = eps(pb, refmom, helg); Tensor<3> qqCurBlank1 = outer(p2+p3, metric())/s23; Tensor<3> qqCurBlank2 = outer(pb, metric())/s23; Tensor<1> Cur23 = HEJ::current(p2, p3,hel2); Tensor<2> qqCur1 = qqCurBlank1.contract(Cur23,3); Tensor<2> qqCur2 = qqCurBlank2.contract(Cur23,3); Tensor<2> qqCur3 = qqCurBlank2.contract(Cur23,1); Tensor<1> gqqCur = (qqCur1.contract(epsg,1) - qqCur2.contract(epsg,2) + qqCur3.contract(epsg,1))*2*COM(0,1); return gqqCur; } } // no wqq emission double ME_W_Exqqx_QQq(HLV pa, HLV pb, HLV p1, HLV p2, HLV p3,HLV plbar, HLV pl, bool aqlinepa, ParticleProperties const & wprop ){ using helicity::minus; using helicity::plus; init_sigma_index(); // 2 independent helicity choices (complex conjugation related). Tensor<1> TMmmm1 = qggm1(pb,p2,p3,minus,minus, pa); Tensor<1> TMmmm2 = qggm2(pb,p2,p3,minus,minus, pa); Tensor<1> TMmmm3 = qggm3(pb,p2,p3,minus,minus, pa); Tensor<1> TMpmm1 = qggm1(pb,p2,p3,minus,plus, pa); Tensor<1> TMpmm2 = qggm2(pb,p2,p3,minus,plus, pa); Tensor<1> TMpmm3 = qggm3(pb,p2,p3,minus,plus, pa); // Build the external quark line W Emmision Tensor<1> cur1a = jW(pa,p1,plbar,pl, aqlinepa?plus:minus); //Contract with the qqxCurrent. COM Mmmm1 = TMmmm1.contract(cur1a,1); COM Mmmm2 = TMmmm2.contract(cur1a,1); COM Mmmm3 = TMmmm3.contract(cur1a,1); COM Mpmm1 = TMpmm1.contract(cur1a,1); COM Mpmm2 = TMpmm2.contract(cur1a,1); COM Mpmm3 = TMpmm3.contract(cur1a,1); //Colour factors: COM cm1m1,cm2m2,cm3m3,cm1m2,cm1m3,cm2m3; cm1m1=8./3.; cm2m2=8./3.; cm3m3=6.; cm1m2 =-1./3.; cm1m3 = -3.*COM(0.,1.); cm2m3 = 3.*COM(0.,1.); //Sqaure and sum for each helicity config: double Mmmm = real( cm1m1*pow(abs(Mmmm1),2) + cm2m2*pow(abs(Mmmm2),2) + cm3m3*pow(abs(Mmmm3),2) + 2.*real(cm1m2*Mmmm1*conj(Mmmm2)) + 2.*real(cm1m3*Mmmm1*conj(Mmmm3)) + 2.*real(cm2m3*Mmmm2*conj(Mmmm3)) ); double Mpmm = real( cm1m1*pow(abs(Mpmm1),2) + cm2m2*pow(abs(Mpmm2),2) + cm3m3*pow(abs(Mpmm3),2) + 2.*real(cm1m2*Mpmm1*conj(Mpmm2)) + 2.*real(cm1m3*Mpmm1*conj(Mpmm3)) + 2.*real(cm2m3*Mpmm2*conj(Mpmm3)) ); // Divide by WProp const double WPropfact = WProp(plbar, pl, wprop); return (2*WPropfact*(Mmmm+Mpmm)/24./4.)/(pa-p1-pl-plbar).m2()/(p2+p3-pb).m2(); } // W+Jets qqxCentral double ME_WCenqqx_qq(HLV pa, HLV pb,HLV pl, HLV plbar, std::vector<HLV> partons, bool aqlinepa, bool aqlinepb, bool qqxmarker, int nabove, ParticleProperties const & wprop ){ init_sigma_index(); HLV pq, pqbar, p1, p4; if (qqxmarker){ pqbar = partons[nabove+1]; pq = partons[nabove+2];} else{ pq = partons[nabove+1]; pqbar = partons[nabove+2];} p1 = partons.front(); p4 = partons.back(); Tensor<1> T1am, T4bm, T1ap, T4bp; if(!(aqlinepa)){ T1ap = HEJ::current(p1, pa, helicity::plus); T1am = HEJ::current(p1, pa, helicity::minus);} else if(aqlinepa){ T1ap = HEJ::current(pa, p1, helicity::plus); T1am = HEJ::current(pa, p1, helicity::minus);} if(!(aqlinepb)){ T4bp = HEJ::current(p4, pb, helicity::plus); T4bm = HEJ::current(p4, pb, helicity::minus);} else if(aqlinepb){ T4bp = HEJ::current(pb, p4, helicity::plus); T4bm = HEJ::current(pb, p4, helicity::minus);} // Calculate the 3 separate contributions to the effective vertex Tensor<2> Xunc = MUncrossW(pa, p1, pb, p4, pq, pqbar, pl, plbar, partons, nabove); Tensor<2> Xcro = MCrossW( pa, p1, pb, p4, pq, pqbar, pl, plbar, partons, nabove); Tensor<2> Xsym = MSymW( pa, p1, pb, p4, pq, pqbar, pl, plbar, partons, nabove); // 4 Different Helicity Choices (Differs from Pure Jet Case, where there is // also the choice in qqbar helicity. // (- - hel choice) COM M_mmUnc = (((Xunc).contract(T1am,1)).contract(T4bm,1)); COM M_mmCro = (((Xcro).contract(T1am,1)).contract(T4bm,1)); COM M_mmSym = (((Xsym).contract(T1am,1)).contract(T4bm,1)); // (- + hel choice) COM M_mpUnc = (((Xunc).contract(T1am,1)).contract(T4bp,1)); COM M_mpCro = (((Xcro).contract(T1am,1)).contract(T4bp,1)); COM M_mpSym = (((Xsym).contract(T1am,1)).contract(T4bp,1)); // (+ - hel choice) COM M_pmUnc = (((Xunc).contract(T1ap,1)).contract(T4bm,1)); COM M_pmCro = (((Xcro).contract(T1ap,1)).contract(T4bm,1)); COM M_pmSym = (((Xsym).contract(T1ap,1)).contract(T4bm,1)); // (+ + hel choice) COM M_ppUnc = (((Xunc).contract(T1ap,1)).contract(T4bp,1)); COM M_ppCro = (((Xcro).contract(T1ap,1)).contract(T4bp,1)); COM M_ppSym = (((Xsym).contract(T1ap,1)).contract(T4bp,1)); //Colour factors: COM cmsms,cmumu,cmcmc,cmsmu,cmsmc,cmumc; cmsms=3.; cmumu=4./3.; cmcmc=4./3.; cmsmu =3./2.*COM(0.,1.); cmsmc = -3./2.*COM(0.,1.); cmumc = -1./6.; // Work Out Interference in each case of helicity: double amp_mm = real(cmsms*pow(abs(M_mmSym),2) +cmumu*pow(abs(M_mmUnc),2) +cmcmc*pow(abs(M_mmCro),2) +2.*real(cmsmu*M_mmSym*conj(M_mmUnc)) +2.*real(cmsmc*M_mmSym*conj(M_mmCro)) +2.*real(cmumc*M_mmUnc*conj(M_mmCro))); double amp_mp = real(cmsms*pow(abs(M_mpSym),2) +cmumu*pow(abs(M_mpUnc),2) +cmcmc*pow(abs(M_mpCro),2) +2.*real(cmsmu*M_mpSym*conj(M_mpUnc)) +2.*real(cmsmc*M_mpSym*conj(M_mpCro)) +2.*real(cmumc*M_mpUnc*conj(M_mpCro))); double amp_pm = real(cmsms*pow(abs(M_pmSym),2) +cmumu*pow(abs(M_pmUnc),2) +cmcmc*pow(abs(M_pmCro),2) +2.*real(cmsmu*M_pmSym*conj(M_pmUnc)) +2.*real(cmsmc*M_pmSym*conj(M_pmCro)) +2.*real(cmumc*M_pmUnc*conj(M_pmCro))); double amp_pp = real(cmsms*pow(abs(M_ppSym),2) +cmumu*pow(abs(M_ppUnc),2) +cmcmc*pow(abs(M_ppCro),2) +2.*real(cmsmu*M_ppSym*conj(M_ppUnc)) +2.*real(cmsmc*M_ppSym*conj(M_ppCro)) +2.*real(cmumc*M_ppUnc*conj(M_ppCro))); double amp=((amp_mm+amp_mp+amp_pm+amp_pp)/(9.*4.)); HLV q1,q3; q1=pa; for(int i=0;i<nabove+1;i++){ q1-=partons.at(i); } q3 = q1 - pq - pqbar - pl - plbar; double t1 = (q1).m2(); double t3 = (q3).m2(); //Divide by t-channels amp/=(t1*t1*t3*t3); //Divide by WProp amp*=WProp(plbar, pl, wprop); return amp; } // no wqq emission double ME_W_Cenqqx_qq(HLV pa, HLV pb,HLV pl,HLV plbar, std::vector<HLV> partons, bool aqlinepa, bool aqlinepb, bool qqxmarker, int nabove, int nbelow, bool forwards, ParticleProperties const & wprop ){ using helicity::minus; using helicity::plus; init_sigma_index(); if (!forwards){ //If Emission from Leg a instead, flip process. std::swap(pa, pb); std::reverse(partons.begin(),partons.end()); std::swap(aqlinepa, aqlinepb); qqxmarker = !qqxmarker; std::swap(nabove,nbelow); } HLV pq, pqbar, p1,p4; if (qqxmarker){ pqbar = partons[nabove+1]; pq = partons[nabove+2];} else{ pq = partons[nabove+1]; pqbar = partons[nabove+2];} p1 = partons.front(); p4 = partons.back(); Tensor<1> T1am(0.), T1ap(0.); if(!(aqlinepa)){ T1ap = HEJ::current(p1, pa, plus); T1am = HEJ::current(p1, pa, minus);} else if(aqlinepa){ T1ap = HEJ::current(pa, p1, plus); T1am = HEJ::current(pa, p1, minus);} Tensor <1> T4bm = jW(pb, p4, plbar, pl, aqlinepb?plus:minus); // Calculate the 3 separate contributions to the effective vertex Tensor<2> Xunc_m = MUncross(pa, pq, pqbar,partons, minus, nabove); Tensor<2> Xcro_m = MCross( pa, pq, pqbar,partons, minus, nabove); Tensor<2> Xsym_m = MSym( pa, p1, pb, p4, pq, pqbar, partons, minus, nabove); Tensor<2> Xunc_p = MUncross(pa, pq, pqbar,partons, plus, nabove); Tensor<2> Xcro_p = MCross( pa, pq, pqbar,partons, plus, nabove); Tensor<2> Xsym_p = MSym( pa, p1, pb, p4, pq, pqbar, partons, plus, nabove); // (- - hel choice) COM M_mmUnc = (((Xunc_m).contract(T1am,1)).contract(T4bm,1)); COM M_mmCro = (((Xcro_m).contract(T1am,1)).contract(T4bm,1)); COM M_mmSym = (((Xsym_m).contract(T1am,1)).contract(T4bm,1)); // (- + hel choice) COM M_mpUnc = (((Xunc_p).contract(T1am,1)).contract(T4bm,1)); COM M_mpCro = (((Xcro_p).contract(T1am,1)).contract(T4bm,1)); COM M_mpSym = (((Xsym_p).contract(T1am,1)).contract(T4bm,1)); // (+ - hel choice) COM M_pmUnc = (((Xunc_m).contract(T1ap,1)).contract(T4bm,1)); COM M_pmCro = (((Xcro_m).contract(T1ap,1)).contract(T4bm,1)); COM M_pmSym = (((Xsym_m).contract(T1ap,1)).contract(T4bm,1)); // (+ + hel choice) COM M_ppUnc = (((Xunc_p).contract(T1ap,1)).contract(T4bm,1)); COM M_ppCro = (((Xcro_p).contract(T1ap,1)).contract(T4bm,1)); COM M_ppSym = (((Xsym_p).contract(T1ap,1)).contract(T4bm,1)); //Colour factors: COM cmsms,cmumu,cmcmc,cmsmu,cmsmc,cmumc; cmsms=3.; cmumu=4./3.; cmcmc=4./3.; cmsmu =3./2.*COM(0.,1.); cmsmc = -3./2.*COM(0.,1.); cmumc = -1./6.; // Work Out Interference in each case of helicity: double amp_mm = real(cmsms*pow(abs(M_mmSym),2) +cmumu*pow(abs(M_mmUnc),2) +cmcmc*pow(abs(M_mmCro),2) +2.*real(cmsmu*M_mmSym*conj(M_mmUnc)) +2.*real(cmsmc*M_mmSym*conj(M_mmCro)) +2.*real(cmumc*M_mmUnc*conj(M_mmCro))); double amp_mp = real(cmsms*pow(abs(M_mpSym),2) +cmumu*pow(abs(M_mpUnc),2) +cmcmc*pow(abs(M_mpCro),2) +2.*real(cmsmu*M_mpSym*conj(M_mpUnc)) +2.*real(cmsmc*M_mpSym*conj(M_mpCro)) +2.*real(cmumc*M_mpUnc*conj(M_mpCro))); double amp_pm = real(cmsms*pow(abs(M_pmSym),2) +cmumu*pow(abs(M_pmUnc),2) +cmcmc*pow(abs(M_pmCro),2) +2.*real(cmsmu*M_pmSym*conj(M_pmUnc)) +2.*real(cmsmc*M_pmSym*conj(M_pmCro)) +2.*real(cmumc*M_pmUnc*conj(M_pmCro))); double amp_pp = real(cmsms*pow(abs(M_ppSym),2) +cmumu*pow(abs(M_ppUnc),2) +cmcmc*pow(abs(M_ppCro),2) +2.*real(cmsmu*M_ppSym*conj(M_ppUnc)) +2.*real(cmsmc*M_ppSym*conj(M_ppCro)) +2.*real(cmumc*M_ppUnc*conj(M_ppCro))); double amp=((amp_mm+amp_mp+amp_pm+amp_pp)/(9.*4.)); HLV q1,q3; q1=pa; for(int i=0;i<nabove+1;i++){ q1-=partons.at(i); } q3 = q1 - pq - pqbar; double t1 = (q1).m2(); double t3 = (q3).m2(); //Divide by t-channels amp/=(t1*t1*t3*t3); //Divide by WProp amp*=WProp(plbar, pl, wprop); return amp; } diff --git a/t/ME_data/ME_Wm.dat b/t/ME_data/ME_Wm.dat index b1ad4a2..dfb391f 100644 --- a/t/ME_data/ME_Wm.dat +++ b/t/ME_data/ME_Wm.dat @@ -1,1308 +1,1308 @@ 2.928617337e-06 1.647083496e-06 6.792718307e-07 8.309052795e-05 1.188563005e-09 7.418703203e-09 4.64176585e-07 4.469210588e-07 6.108953218e-06 2.937369558e-06 4.834662872e-06 8.222916804e-06 1.984842145e-06 4.724279533e-06 2.284467423e-07 6.086670249e-08 9.402694313e-07 2.134890127e-05 1.344127063e-06 6.325064033e-08 5.042105356e-06 0.0002284967536 2.294811317e-06 6.277634042e-05 1.336994329e-07 3.953756759e-06 9.658399826e-05 2.316822172e-06 2.819631851e-07 0.0001081195238 3.432930003e-06 3.368456504e-06 1.112864917e-08 3.295369143e-07 3.989490572e-10 1.948758233e-05 3.510758397e-07 3.210138517e-07 3.239664339e-06 8.604705327e-06 7.617690755e-10 1.878849261e-06 8.602382866e-09 2.905076666e-09 9.580640762e-08 2.761322408e-07 1.121735761e-05 8.305550955e-07 3.094512747e-06 9.008871903e-07 3.660037761e-07 4.545298754e-08 1.619265714e-09 0.01367608992 3.915696743e-06 2.025165585e-06 3.681426282e-09 4.179813437e-06 3.072778246e-08 8.896098616e-07 3.025899647e-08 1.817366927e-09 4.337353756e-10 1.271872323e-06 6.04489128e-06 9.893120074e-09 1.214081986e-05 2.958624219e-08 2.061238904e-09 1.930294996e-05 6.299188205e-07 2.643963602e-07 2.06132771e-06 4.342452252e-05 8.291567369e-07 2.498958153e-06 4.358403281e-06 9.241515571e-05 9.124195104e-05 0.000115945869 2.350206043e-06 7.845167967e-06 0.000638524343 4.723346316e-08 6.954346838e-09 5.357593527e-06 1.473700863e-07 1.053983829e-07 5.919949754e-07 1.175787989e-05 1.546190854e-07 0.0004236014522 3.617348006e-06 4.516789165e-05 3.955639799e-05 0.0001365301129 5.126068859e-05 1.077721123e-06 1.018738183e-08 2.31035007e-09 6.836601309e-07 5.827486967e-09 1.557627741e-09 6.04883445e-05 1.652825805e-07 2.956934131e-07 3.715517348e-06 1.403902522e-08 2.060672536e-07 0.001033124848 9.772923916e-07 2.935927964e-05 1.151232995e-05 7.794558457e-06 2.174319802e-05 4.056670359e-08 2.955320268e-08 8.030711247e-05 2.603164139e-07 0.0001681638933 2.93007525e-08 7.196892999e-05 1.920951539e-06 3.637534963e-09 7.893685649e-06 0.0001175194162 4.802829388e-10 4.835469293e-07 2.878769998e-05 1.898685256e-09 2.754462006e-08 1.403651125e-10 5.826442197e-07 2.43372504e-06 7.927550152e-06 1.020962274e-08 1.052564287e-07 7.737037652e-06 3.40057811e-06 2.714499296e-08 2.377749398e-09 0.0001490838408 9.612641064e-11 1.654718689e-05 1.570703582e-07 1.609375559e-06 6.94622935e-08 0.04337706424 9.860599192e-06 1.103383561e-05 0.01558774793 1.359111595e-06 2.104947148e-07 4.483240938e-08 2.52721137e-08 4.136183848e-07 1.75959296e-07 4.162277212e-07 3.660655583e-07 2.475053461e-06 2.142026381e-05 3.962155608e-07 5.075132791e-06 2.831915934e-08 8.260063969e-08 2.191422806e-08 7.392509744e-05 5.57319664e-10 1.264487785e-08 3.373106258e-05 1.515627561e-07 4.183562189e-07 1.162273072e-07 7.731661725e-06 1.077580922e-05 2.331616561e-07 4.316200243e-10 4.055086645e-09 1.282320598e-09 1.905109513e-09 2.799643084e-07 6.42991509e-08 3.336097219e-07 2.847456008e-07 2.87996438e-05 5.034716477e-08 0.0001697825431 7.357721468e-08 1.312946382e-07 1.494639153e-07 1.309657132e-09 1.452591322e-08 7.003335472e-07 2.392819852e-06 6.228178425e-06 2.32203151e-07 8.171995835e-08 4.289175929e-07 2.618956983e-07 7.684822085e-06 3.930002297e-10 1.235455443e-06 4.345617106e-07 1.019571055e-07 1.014379889e-05 1.198488003e-05 3.072332076e-05 2.471407108e-06 6.141337359e-06 2.217748858e-05 7.506667147e-07 4.156515027e-07 0.0003928577459 6.192388402e-07 9.058439765e-07 7.767728411e-06 1.506511059e-06 1.438338227e-08 1.393891846e-07 7.338259665e-05 1.013820716e-07 1.941576288e-05 1.098253136e-06 7.583333968e-07 1.924002116e-08 2.683360604e-06 0.0005387099327 4.513913649e-09 7.344897056e-06 4.863287455e-08 5.137627244e-07 1.340998671e-07 1.385068639e-09 0.001475702054 4.766804909e-09 2.788096601e-07 4.884961794e-07 4.389879349e-07 0.000605687279 2.260914346e-06 1.622018609e-07 8.044214563e-07 0.00287427997 8.545033973e-05 2.859858841e-07 3.519981239e-05 3.838329691e-05 6.701261402e-12 6.711423424e-09 1.221689939e-07 4.175349671e-09 1.276073867e-06 9.349187354e-06 5.09324804e-07 2.102018112e-05 2.546892483e-06 4.307286548e-07 0.0001405053615 1.532562441e-06 0.0043269957 1.798346185e-07 0.0002232869764 1.177464656e-07 1.784165987e-06 2.027475413e-09 3.749124642e-07 1.128514896e-07 4.135331177e-05 2.009064605e-08 8.773376156e-07 9.824605427e-10 1.631495832e-07 2.288308451e-05 2.035208047e-07 0.0001019083349 3.912211406e-06 5.328897283e-08 3.815188832e-10 1.388115787e-05 2.066863131e-08 9.173747359e-07 6.957092901e-09 2.903819076e-05 4.478705717e-09 6.770557613e-07 9.713885883e-08 1.99884353e-05 0.00179907318 1.236193169e-08 1.118353017e-05 1.144476494e-07 1.186451992e-06 4.716164372e-06 3.464387694e-07 7.532303889e-11 1.742260009e-06 1.345400054e-06 8.449377298e-08 8.954043245e-07 2.432439258e-06 0.000140064979 0.001713410238 1.075027005e-07 4.105324765e-05 3.733581957e-07 1.98491263e-06 0.001480293332 0.000115119501 0.002092834408 3.27549321e-06 2.185738747e-09 0.0004548048702 0.01476996084 3.934195111e-05 0.001243805117 5.430656178e-08 4.380768976e-07 4.297371205e-06 1.467603532e-08 1.820417519e-08 2.69946112e-09 8.420646529e-07 8.634740669e-10 1.18272243e-06 8.507977199e-09 7.184568904e-07 1.19256643e-06 1.766373439e-08 0.002934256247 1.283358802e-06 6.25493059e-06 8.703159136e-06 9.664582837e-06 2.675235499e-09 3.392583208e-08 0.0001071661518 5.832716966e-09 8.880940377e-08 0.0002166027692 1.248584038e-08 1.726725176e-06 2.996994836e-06 2.119813038e-07 7.412498676e-06 2.755943745e-08 9.960177922e-06 3.051353704e-05 1.129469998e-08 2.619012548e-08 5.532394281e-10 2.177115217e-10 0.000385188033 4.24781146e-05 1.005160549e-08 7.062926491e-08 0.0002453825231 6.569321281e-09 2.430064335e-06 1.72790267e-07 1.211706684e-05 9.947756935e-06 0.0001605725284 5.961264107e-08 1.637610222e-06 1.925017924e-07 1.895713903e-05 3.584070555e-09 2.424100642e-07 0.00100691167 1.00314273e-06 1.237459693e-06 2.006393648e-06 1.665644179e-05 8.731214124e-06 1.333844755e-07 7.301254085e-09 0.0005093424595 7.645270509e-08 2.020155895e-06 6.812955519e-08 1.108122048e-06 1.955477011e-05 2.003839607e-06 3.670861157e-07 1.728588066e-07 0.0007263652123 1.411883089e-05 1.57127984e-07 3.392219563e-06 1.377020396e-09 6.630519487e-07 5.22780019e-08 1.126988334e-06 0.0003754697012 1.865132299e-07 6.576821868e-06 3.329430704e-06 7.072429086e-06 2.881483653e-07 1.985401854e-07 6.928951207e-08 2.512210403e-06 6.217628744e-06 3.877664708e-07 1.707869127e-08 5.102229121e-08 4.572562413e-09 0.1094987466 7.448984403e-07 2.097362549e-06 9.378724955e-09 7.909888639e-08 1.223474695e-05 2.672139756e-10 2.314510579e-08 3.503273554e-13 1.60286267e-07 5.890515619e-07 1.487856468e-05 1.978663079e-05 2.552070699e-08 3.56553144e-08 0.000446743015 9.443500031e-10 1.362999756e-06 2.23574347e-07 1.136503384e-07 2.962418624e-08 9.303781273e-06 3.925004271e-10 1.017860324e-05 1.434319467e-08 4.477501165e-06 1.99694118e-09 4.66854211e-05 5.845087896e-06 1.50948917e-07 1.741914174e-06 2.215072337e-10 1.532586108e-06 1.571619745e-08 7.107335402e-05 7.234543614e-06 1.621610925e-06 2.564479119e-08 8.069230827e-09 2.035891754e-07 7.550566928e-08 8.659400091e-06 0.000432135357 3.337658317e-05 4.781987615e-05 2.323054819e-08 1.193074871e-05 0.0001350465294 2.75391678e-06 1.823090373e-08 2.411719368e-05 2.283448741e-09 3.766315025e-08 3.588272465e-05 6.787248878e-05 8.832303026e-10 7.778563208e-10 1.917323241e-08 5.849230322e-06 2.285366293e-06 6.146695971e-06 1.827323017e-05 3.231169839e-05 9.920988726e-07 3.779329381e-09 1.924111467e-05 7.69825658e-06 1.221181117e-06 1.642446586e-06 3.301149504e-07 0.0004602831218 3.293132243e-07 3.950606305e-07 2.805226741e-05 1.739173102e-08 3.772962441e-06 1.536977768e-06 2.43486381e-08 8.315791148e-05 6.888462138e-06 6.869231292e-08 4.672351113e-09 7.026257201e-05 7.305220983e-07 2.162227029e-05 0.0004328538034 1.653230976e-07 1.553380485e-05 5.165496905e-10 2.153688131e-10 8.592237275e-09 8.974803982e-09 7.52047119e-07 2.080291683e-07 1.653958549e-07 9.904164203e-09 6.542744984e-09 0.000531844742 1.144533099e-05 6.936072576e-05 7.619949025e-08 1.834407348e-08 8.099045298e-06 1.946623224e-09 4.915974524e-06 2.013182511e-05 8.510788604e-07 3.442227405e-07 1.19482958e-07 1.251208094e-07 2.847837381e-06 2.519188271e-06 3.662492908e-07 1.646238933e-07 5.373686421e-07 4.353389866e-08 8.727794552e-08 1.053005806e-05 1.083581872e-06 1.461382853e-06 1.220121571e-06 0.0009306878204 3.485645992e-07 2.207991124e-08 8.740223411e-08 0.0001005162172 5.658823113e-06 3.660387161e-07 5.210114851e-06 1.176487053e-09 1.16748696e-09 1.747200576e-07 4.652326082e-10 1.639389602e-06 9.199916708e-06 0.0001764717118 7.378923764e-09 2.542894196e-07 3.717694969e-06 4.778153607e-10 6.099042667e-07 7.389253413e-06 1.03018836e-08 5.091752513e-08 1.929282765e-06 2.953644841e-07 1.428238895e-08 3.65638878e-05 8.358046608e-06 1.269027303e-05 3.141972004e-10 1.192330682e-08 3.425122036e-07 1.238048594e-05 4.592097513e-07 4.907663521e-08 2.605751798e-07 1.290240408e-06 8.909975732e-08 1.171123948e-05 6.948191451e-06 0.0001320600695 4.467272334e-08 1.342984323e-06 4.697331637e-09 1.674844316e-07 1.158433939e-07 7.246890859e-08 0.0001328966329 1.455983069e-05 1.974761595e-05 9.916801323e-05 7.07587568e-07 7.363156082e-07 8.750552305e-07 2.098660427e-05 1.224863673e-06 6.973895334e-07 6.433262719e-08 1.65483483e-05 0.0009302696124 1.821542748e-07 6.800378641e-07 1.766120464e-07 8.004491159e-07 9.941703505e-05 2.067479421e-05 5.066437288e-11 1.506742077e-06 8.108300003e-05 7.610696189e-05 0.0002115668797 2.125674742e-09 2.910679195e-06 9.488563678e-06 1.847352953e-06 7.436406293e-05 1.286413705e-10 1.413078284e-06 4.724137688e-08 5.001760652e-07 1.140535015e-06 6.718486985e-11 8.472698691e-09 8.494761782e-08 2.498377868e-07 6.987065516e-06 4.081098152e-06 2.822241728e-07 3.985816309e-09 6.27810604e-05 9.793665521e-07 9.666541857e-07 2.708574051e-06 3.489974641e-07 3.782569786e-10 8.131668264e-08 6.664191677e-06 2.365456156e-08 1.096935914e-06 3.77600791e-07 2.990480133e-08 0.002754292096 4.047564209e-07 1.411960244e-07 3.69399348e-08 0.0002320662158 3.713311984e-07 3.835921825e-05 2.623885825e-05 6.474152282e-10 0.0003218958043 3.35594494e-07 5.603457411e-09 9.856525159e-08 2.793807664e-07 5.195272481e-06 2.632191143e-06 6.350175836e-07 3.302312082e-10 3.043465789e-08 2.372756421e-08 6.617008787e-06 6.330350038e-07 1.87009364e-06 2.338509504e-07 4.591079902e-10 5.619228611e-05 1.955919798e-08 3.044115064e-08 5.161003917e-08 0.0001378653082 -2.75065694e-09 +2.750698004e-09 2.289343402e-08 4.00103398e-09 2.246769087e-10 3.473356692e-06 7.311371105e-06 8.897919195e-08 1.481186501e-08 2.435159627e-12 1.189764093e-10 5.333618139e-06 4.606955115e-11 2.381338932e-10 1.249141019e-08 1.128608436e-07 1.550910634e-06 2.297659982e-12 5.846612314e-10 4.069273229e-10 4.063063753e-08 1.729353468e-08 5.155065374e-11 1.688263366e-11 2.774873693e-09 6.091545766e-08 2.871646004e-10 3.666363559e-10 8.258762033e-10 7.390763165e-09 1.487121411e-10 6.565655534e-12 3.128756673e-09 2.002340151e-09 7.274176809e-11 6.359622393e-09 7.94023499e-13 1.098589837e-06 7.438345866e-07 2.285104875e-10 4.499075704e-09 3.082821024e-09 1.878422387e-10 4.005506099e-09 2.752607668e-10 2.218745508e-09 5.947644788e-09 1.543301813e-10 4.907483457e-10 6.901483311e-10 2.081360469e-13 7.836953093e-10 2.032094869e-10 1.715010225e-08 4.069836853e-06 2.919452232e-08 1.565082965e-08 3.828958679e-08 1.256924112e-07 4.363104327e-09 2.287347968e-12 6.966805897e-09 5.995770348e-08 1.274222724e-10 1.695055516e-10 2.301236675e-11 9.445286023e-09 2.11536282e-08 1.662325435e-09 1.025048152e-09 8.700218431e-11 1.625672312e-11 4.133541356e-11 5.656983099e-11 5.288423408e-07 5.324133016e-07 2.221547731e-07 2.489666974e-09 2.994474704e-09 1.075604993e-09 7.782531146e-11 2.93245109e-11 3.399331328e-11 1.446376248e-08 2.187182264e-08 7.82008326e-09 2.402248677e-09 7.465791364e-10 1.280984452e-06 3.59815576e-08 1.251199722e-08 3.332237947e-11 7.61764668e-10 9.897388037e-11 4.653813812e-10 3.587118654e-06 4.446631546e-08 2.129602338e-09 4.744482097e-05 4.433870092e-09 2.26639483e-08 1.03614786e-09 1.103323529e-07 5.075149879e-08 8.363573856e-12 3.280957443e-10 3.14793974e-08 6.330314597e-10 3.863698763e-10 5.960231262e-10 4.380877852e-11 1.164085144e-07 2.505387626e-09 1.374083517e-10 9.172006774e-07 6.582144563e-08 1.427895895e-10 1.297546413e-09 8.107028639e-09 2.070936394e-06 6.936632176e-09 2.329619212e-07 2.684287588e-07 3.375453851e-12 4.7815963e-11 5.350876399e-09 9.177530263e-10 3.059207574e-08 1.113388771e-07 5.998531569e-10 3.911798644e-10 1.176672437e-08 9.191577823e-10 2.320742865e-05 2.036071812e-07 3.212921899e-08 7.129708873e-08 1.481190721e-09 9.133803854e-07 1.062371365e-10 1.481488075e-08 2.317757165e-06 3.853124468e-08 4.627532631e-12 2.494522948e-08 9.09456782e-10 1.680021386e-08 2.095780184e-08 6.85132284e-08 2.372661172e-09 1.177453156e-12 1.027899983e-11 5.17026087e-07 3.317347932e-07 1.0456376e-08 6.471580259e-07 1.86439548e-06 3.076357107e-11 4.028914166e-08 1.346803365e-11 3.296707439e-06 8.214485397e-11 3.289183668e-10 7.057835645e-14 2.679389626e-07 4.480005874e-10 2.542481361e-10 1.046857042e-09 4.950788629e-12 6.108069321e-10 5.254576286e-07 9.00341232e-11 3.637289725e-13 9.046831583e-09 1.769848077e-08 9.487515449e-07 1.288952596e-10 7.931101427e-08 2.511567859e-07 1.749569007e-09 1.157009753e-07 1.833616371e-06 4.450088162e-08 5.71525937e-10 1.226736711e-10 2.448689122e-10 6.262140377e-06 2.141665922e-08 4.258896529e-09 5.492356181e-09 9.566075733e-12 3.797467443e-11 2.705317002e-08 4.238826701e-07 1.78471189e-09 3.595342753e-08 3.222931873e-09 6.210042731e-05 2.257994023e-08 1.191490301e-13 1.51327299e-06 9.658649632e-11 5.082113798e-06 9.440035937e-10 8.436889449e-09 1.490034629e-10 4.468885132e-09 7.564217616e-12 1.360704417e-11 3.475352926e-10 8.989931067e-08 2.83363773e-11 3.075639475e-10 5.26550054e-14 4.262827162e-13 7.39316909e-13 5.385777656e-05 8.486065594e-10 1.27169587e-05 8.409442881e-11 6.150414316e-08 5.763923047e-10 1.482724362e-05 2.322767476e-10 4.431549181e-09 1.319773505e-08 1.965643997e-09 5.781996728e-06 7.525982729e-07 1.16731806e-09 1.712491312e-09 3.953724056e-07 3.136603556e-10 1.334448069e-10 2.291915354e-13 7.468688547e-11 2.139268308e-07 2.325345469e-09 7.657140694e-07 3.023146836e-07 1.974153842e-11 2.23954747e-13 1.575733249e-08 3.894628929e-07 2.527557586e-09 1.169459922e-07 7.445054153e-07 3.875934136e-06 6.204189806e-07 5.089515047e-10 2.563291505e-13 4.108999891e-09 8.53455392e-11 3.062860485e-14 5.084534294e-08 3.964359924e-09 9.560449902e-09 5.713347391e-07 8.602201637e-10 9.630300409e-09 5.575422411e-08 8.084446179e-10 5.256859943e-10 2.604559111e-08 5.185774593e-08 5.136812252e-07 4.457880285e-09 7.08739055e-06 2.866812716e-09 2.555644334e-07 1.149811348e-06 2.121457778e-11 6.538468276e-11 4.397488469e-10 1.683362541e-10 7.632025686e-10 3.194386969e-07 4.739399683e-08 5.174073262e-09 1.378366535e-06 0.0001075113033 0.0002104550971 1.259413081e-09 1.113788764e-09 2.836765427e-07 2.11937165e-05 3.257765239e-07 6.904195422e-08 1.133542583e-07 2.515686455e-07 2.868313218e-07 1.316229576e-07 1.143173676e-07 7.053036421e-10 1.261626874e-08 8.973217584e-13 8.228171868e-10 6.551051251e-09 5.085705662e-09 1.197384838e-11 7.765260495e-11 1.137626508e-10 9.984571963e-11 1.206612408e-07 9.836882175e-09 3.4882158e-08 4.035134021e-08 1.411934725e-08 1.030965664e-07 0.0001339279091 2.858703113e-12 3.300405884e-09 1.93837976e-10 3.214702272e-12 1.739126777e-09 4.024332505e-07 3.711093586e-08 3.509867475e-09 9.299169562e-11 4.059979323e-10 1.46124585e-05 9.47475461e-11 6.788839586e-14 2.422745433e-09 1.239867471e-07 2.586712504e-08 3.834753794e-09 4.980992443e-08 5.89070658e-10 2.437434325e-13 5.885757434e-12 3.850022999e-12 5.81521873e-10 2.871328231e-07 3.346893654e-09 4.474183737e-08 4.854163466e-09 6.835578263e-09 4.513572379e-10 1.936977318e-09 3.204323474e-07 2.834054461e-06 2.373861791e-10 8.958952159e-10 2.230057738e-07 2.935410608e-08 1.283627624e-05 1.768887803e-09 9.964539111e-08 1.803522538e-10 1.897974483e-06 1.555504868e-07 2.081802153e-11 1.130167125e-07 4.730203043e-10 4.419353612e-10 8.383693984e-08 1.081564925e-05 4.255910847e-09 4.961228471e-09 4.721951011e-12 2.605775896e-07 6.302152575e-12 7.028581764e-11 5.826657822e-09 3.775763541e-06 7.970550383e-06 1.07749277e-08 4.597131766e-10 6.829928693e-09 2.132369311e-10 3.596253106e-11 6.42042013e-09 2.577185048e-09 3.303168482e-09 6.187624832e-09 4.853422661e-08 4.830648803e-10 3.720002445e-06 1.356639118e-08 2.379953128e-09 7.264449115e-11 3.297503516e-09 3.435188638e-10 5.297642673e-08 4.382508996e-09 2.158635352e-08 5.682041402e-12 2.872850108e-07 1.684440833e-10 3.702296758e-08 4.342536978e-10 6.27913514e-08 2.403628029e-08 6.186423798e-09 1.906331939e-07 4.632141066e-10 2.75528781e-09 1.375301157e-08 2.872819245e-08 6.101281782e-07 3.268447178e-10 2.065018598e-07 2.51528016e-09 4.962377554e-11 1.429433599e-10 6.600434666e-08 2.769795382e-07 8.892370488e-07 4.79076441e-07 8.513265484e-09 2.371009137e-11 2.01515454e-08 1.194156708e-06 2.53608333e-06 3.538052912e-11 7.535772739e-11 3.279577835e-09 5.915460368e-09 3.02566311e-12 2.424965552e-08 1.736406389e-08 9.148306031e-11 2.773912766e-09 6.976061878e-08 1.281910328e-09 3.477331578e-11 7.026224303e-12 3.159072911e-08 2.312639776e-06 1.021070205e-11 6.311485446e-10 3.496457737e-09 5.006307921e-09 1.086232952e-09 6.417452399e-07 3.403922546e-08 1.040513338e-07 2.01520989e-08 2.367352254e-08 1.453582854e-08 4.519467641e-07 6.134987707e-08 1.681912432e-08 3.378933948e-10 1.788912469e-11 8.65895426e-08 1.581698325e-10 3.168928376e-08 1.269427393e-09 3.307594478e-11 6.742913842e-11 4.303451928e-10 1.049209168e-07 7.72679499e-12 5.740213241e-07 7.011858745e-07 5.337254201e-09 6.364098195e-09 6.365181097e-10 7.724336147e-10 2.368368232e-08 1.761684159e-07 3.074352635e-08 5.930269563e-06 1.348260163e-12 7.971765332e-11 1.851907721e-07 1.679589918e-10 6.480753213e-06 9.759320168e-09 3.448700092e-09 7.000832649e-11 2.060702385e-09 5.016091717e-09 1.481166798e-09 5.885608742e-10 6.092754546e-10 1.149674113e-08 8.39211811e-11 2.869929102e-13 9.120025443e-09 1.023019663e-06 1.843312565e-11 1.004917355e-06 1.437937821e-09 3.104223957e-06 3.736773683e-10 9.734184114e-11 1.231999544e-11 3.535861091e-07 7.131073672e-08 2.337280167e-10 2.824053112e-07 3.138209131e-08 5.494664929e-12 3.070138908e-12 2.011205543e-10 1.461424596e-11 3.081987435e-09 1.46093963e-10 3.186536889e-07 8.613722973e-10 4.227278814e-07 1.272955977e-08 1.38585023e-08 2.535073827e-09 5.647503952e-08 1.712170102e-10 9.68893623e-07 2.23301625e-09 2.607896714e-11 1.678599102e-13 2.258614162e-06 1.695694084e-09 1.706056963e-11 4.927634237e-12 1.42650763e-05 1.449408916e-07 4.244679669e-08 3.617422863e-10 8.345513919e-12 9.320955516e-13 8.342751299e-09 3.323822411e-09 1.436276816e-08 5.885513695e-10 3.584811231e-08 9.154788215e-09 9.640669763e-11 1.908867792e-09 2.558486e-10 5.264752426e-10 1.261283666e-09 2.53541926e-10 1.402713106e-06 9.404881776e-10 1.920817629e-07 4.404107301e-11 5.005042888e-10 1.427876454e-07 5.13977659e-10 4.146766934e-07 1.166277032e-07 7.051068181e-09 4.11849211e-09 9.268930022e-07 1.226392807e-10 1.045597589e-06 4.947490967e-07 6.160106382e-12 1.351622658e-08 2.784201053e-09 1.934479305e-08 5.745748437e-13 1.357138484e-09 4.977337067e-12 6.477023506e-11 4.234494139e-08 4.918197299e-13 3.683378601e-08 3.727148631e-09 1.040223561e-09 6.604422035e-10 3.806876455e-09 1.097067221e-08 1.705648579e-08 6.319765378e-07 1.574099802e-09 3.013722918e-08 4.082111113e-09 3.679411129e-09 8.938433543e-10 4.833608226e-09 1.526922169e-05 3.497170215e-10 9.33335016e-08 1.359274e-08 6.404241971e-11 1.5355979e-11 2.323665288e-09 4.662114978e-09 1.022032175e-10 1.680116769e-07 1.619039888e-12 1.507964967e-08 2.056097551e-09 1.984726853e-05 5.313179169e-09 1.04747219e-08 1.156429507e-07 1.201419215e-06 1.584080335e-09 2.098542248e-11 3.445376555e-09 4.164592916e-06 4.092695408e-12 9.944139167e-10 5.275904704e-09 3.628906351e-11 2.196977166e-10 1.052794797e-08 1.189717354e-08 3.768844586e-11 1.364002007e-07 3.40520559e-10 5.381516624e-08 6.729189153e-12 1.207745127e-07 4.017462281e-09 1.278030933e-08 7.005379077e-11 1.491096858e-07 7.198140186e-10 6.627930817e-08 1.215887355e-10 6.230801001e-09 0.0001012323593 5.309321999e-10 5.741270954e-10 2.429844937e-08 7.32585206e-12 3.533917464e-09 7.92607808e-10 8.291024594e-11 3.746228723e-11 5.242197859e-11 8.718274092e-08 6.175927737e-11 5.510569329e-09 2.644291342e-09 2.306855272e-08 7.426139063e-10 1.884007562e-06 3.755557449e-08 1.659745103e-08 5.494894979e-08 3.546656967e-09 2.674192614e-07 1.028231645e-09 9.289065159e-06 7.959800508e-08 1.068059708e-11 5.674230217e-07 6.214339587e-09 1.601035056e-06 1.977699126e-06 3.462717682e-07 7.373550469e-09 5.735187951e-12 diff --git a/t/ME_data/ME_Wp.dat b/t/ME_data/ME_Wp.dat index 99d9469..74eec16 100644 --- a/t/ME_data/ME_Wp.dat +++ b/t/ME_data/ME_Wp.dat @@ -1,1289 +1,1289 @@ 0.0001355692831 3.608650493e-05 4.306256176e-07 9.75530888e-07 7.965371874e-08 1.158718086e-06 2.661789326e-06 2.304777927e-09 2.352088884e-07 1.82969808e-06 7.663185819e-10 1.356585238e-07 3.025103442e-07 9.674650592e-08 1.085748789e-08 1.140587369e-07 9.611216759e-06 9.925878133e-06 0.000239556953 3.934982623e-07 1.135265775e-06 3.820124311e-06 9.70740276e-05 1.9898323e-08 4.670871268e-06 6.369333758e-08 5.769151072e-06 6.100650415e-07 4.177523131e-07 5.131047905e-05 2.623611134e-08 9.921070288e-07 2.818568347e-05 2.357681373e-06 1.529378671e-07 3.81204264e-09 4.089810134e-06 5.519469061e-08 3.10840544e-05 6.274958158e-07 0.0004711537356 1.064824795e-10 3.599835498e-07 0.0005693323828 5.34415283e-06 1.369492275e-07 4.610488411e-08 2.759081421e-08 0.0002011622772 8.792498535e-06 2.703844037e-06 1.87129965e-09 6.645074467e-07 0.01345885061 8.025636853e-06 1.131164601e-07 2.178426779e-07 3.510820573e-05 1.899806627e-07 1.04510564e-06 1.869058199e-06 2.768491575e-06 8.55084388e-08 7.773245411e-07 4.531353015e-06 1.601146181e-06 1.364138406e-07 5.968172458e-08 1.972845581e-07 7.86996963e-08 1.027062634e-09 1.687440419e-07 6.311963568e-10 3.39176791e-07 4.915799802e-06 1.471280469e-08 5.806849675e-07 1.107334043e-06 2.913893129e-05 2.123996588e-06 2.129863733e-07 1.356401739e-06 2.199181613e-08 9.711164556e-08 0.0001385546466 6.515093877e-07 2.535248387e-05 9.498630852e-06 7.27526662e-08 3.660448579e-08 1.057431404e-07 6.036950822e-08 1.535358058e-05 8.248221444e-07 3.681365448e-07 6.97866049e-07 0.0001134600947 0.003172309993 0.0002184096786 1.851539911e-06 2.38713427e-07 0.0002408689592 2.563539598e-07 1.000618893e-09 4.853248021e-06 1.037533394e-07 7.119446461e-06 2.561842841e-06 6.552654227e-08 2.501602017e-08 3.220051642e-08 4.669139132e-07 1.713283931e-05 1.245230123e-09 7.470021795e-06 1.121772404e-10 2.566755035e-08 0.0006902390385 1.619658523e-08 0.007842760801 3.718504779e-05 0.0007152504841 3.366806183e-05 3.590209047e-05 0.0001083332252 1.746018239e-07 2.714420914e-05 5.495029856e-05 6.534951941e-05 5.041589637e-07 3.546022348e-06 1.201771525e-08 2.615134233e-08 0.005544395296 2.66910055e-08 1.124390825e-07 2.09763416e-07 0.0004496933581 3.522832045e-06 3.609724609e-10 2.381496829e-06 0.0001723801775 8.004950126e-06 2.558924233e-05 1.661271458e-05 7.829918874e-06 8.688950059e-05 1.604189836e-05 1.563248173e-07 7.475079052e-08 3.375214615e-08 7.208326593e-08 5.524045248e-10 5.410264303e-09 9.793248952e-05 1.210164578e-06 5.403129487e-06 9.39585062e-07 9.218507242e-07 1.916781375e-05 2.177827067e-06 0.0003020837432 6.197089683e-08 7.288265251e-08 1.364167069e-05 1.038814966e-05 1.181869351e-07 5.0050635e-06 3.611153681e-08 1.221950242e-08 1.942721612e-05 3.734234992e-06 0.0001093973514 2.068010524e-06 8.857332348e-06 4.17303507e-06 6.95781085e-09 1.448248179e-06 4.551963277e-07 1.371409986e-06 8.524736448e-07 1.659108559e-09 1.245838323e-07 0.0002242593113 3.699002275e-06 2.084603102e-10 2.212804342e-08 8.425247645e-08 2.259040476e-07 0.00725976809 4.467513931e-06 3.025291035e-06 1.224916912e-08 1.156098517e-07 1.910457772e-06 6.956962769e-08 3.814058724e-08 4.664718224e-07 1.0517947e-05 8.361308985e-09 6.131166886e-07 6.896484091e-06 2.90234056e-05 7.595631192e-09 1.528964392e-08 5.225436587e-09 3.429390849e-05 2.622200403e-09 0.0005681950565 7.453650742e-07 1.807405542e-05 9.740788873e-07 2.028438792e-06 9.039473405e-08 2.480393012e-06 0.0004804465528 1.082382535e-08 2.792523478e-06 0.0002121878745 9.812357045e-05 7.82823522e-07 0.00145627451 1.943508756e-08 8.760399204e-08 6.867164243e-10 1.796199359e-07 3.651622409e-07 1.227392702e-07 6.646464152e-06 8.406802706e-05 0.001885252898 0.0001570299162 2.314662575e-06 0.00029826679 0.003229544825 2.42751347e-10 1.896000711e-06 1.190921017e-08 4.219862349e-07 7.271914713e-08 1.591930361e-06 2.437047488e-07 2.465409596e-10 3.867330857e-06 7.355187139e-09 3.882716359e-06 0.003249883727 1.636214738e-05 0.0003223729516 2.270719493e-05 1.15818731e-07 4.803334136e-06 1.938462521e-06 1.000097405e-06 7.966369258e-08 1.97712505e-05 3.697772904e-06 0.0001118251392 8.541955637e-09 3.548947328e-05 4.419488231e-08 0.0004157153041 1.269109967e-06 1.336059596e-09 0.0001810730797 5.607415682e-08 7.073695965e-08 6.226253847e-05 3.84284111e-07 6.352157121e-05 1.767499503e-08 0.002554200991 1.646506323e-08 1.960606455e-08 0.0002646754042 1.199891548e-05 2.978452263e-08 0.0001169653935 1.112477467e-08 4.229628711e-07 4.906912054e-08 1.380144673e-06 1.086541811e-05 4.639273361e-08 5.97799329e-07 7.468444459e-08 2.128065224e-08 3.477463012e-06 1.453685343e-09 3.088656052e-05 3.041112154e-05 2.604146292e-07 1.592414079e-06 1.544402089e-07 3.372312274e-06 0.0001468075351 5.574656824e-07 4.759033098e-10 0.0009306534246 5.974128962e-06 0.0002033110946 2.248575165e-06 1.737444074e-05 3.508096174e-06 2.435450701e-09 6.368877015e-06 9.703535632e-09 1.740674328e-06 3.283241228e-07 1.701391237e-08 4.192832836e-08 4.498754436e-05 3.833969139e-05 1.152598971e-09 1.277568685e-05 0.0002811181233 1.725034388e-07 1.077479686e-06 0.004189433812 1.659673188e-07 1.343332109e-07 8.327404712e-07 2.34602978e-05 5.667205166e-07 1.495413468e-09 6.283003988e-07 7.691015317e-09 1.613339674e-08 4.367646433e-08 1.328388611e-09 1.452884787e-06 2.02551508e-07 1.293118486e-06 3.674422254e-07 4.037613848e-06 2.08608188e-08 1.579955055e-06 7.231771617e-10 3.1569536e-07 0.0003659964292 0.0008948876283 5.638061947e-08 3.288523078e-06 5.432396316e-08 5.180656108e-10 5.121101877e-08 1.939412345e-08 1.979103443e-05 2.528952084e-08 0.0002538232488 3.803903342e-05 7.172183729e-06 2.75905474e-06 3.708702768e-06 4.712896021e-08 0.000108439689 5.277716937e-08 4.363976525e-08 1.209873957e-07 3.136828403e-08 1.044074244e-07 6.962817542e-08 6.454218798e-06 2.031013903e-09 4.064683174e-07 1.125182884e-06 3.916618418e-06 -5.611673539e-07 +5.611471592e-07 1.84857491e-07 2.582351752e-07 8.839694973e-05 2.850270239e-06 2.108250587e-07 1.232780491e-08 9.539060161e-08 0.006539743101 2.250901191e-05 1.893445914e-07 2.619125419e-11 3.531362021e-10 1.155012345e-07 1.892426293e-07 1.339882852e-08 5.529288677e-08 1.151877164e-05 0.00588960458 8.216093177e-05 1.557089087e-07 -9.089131199e-08 +9.089307108e-08 4.410102007e-07 4.125576496e-08 1.888774768e-07 5.726792806e-05 1.874521698e-09 9.008279257e-12 1.709010837e-05 1.679280681e-07 8.335400164e-06 1.141575757e-08 0.002680403832 1.068376798e-08 1.957144802e-06 2.244322871e-05 1.231886388e-05 4.629843546e-05 4.576136028e-06 1.980948305e-08 3.939031957e-07 2.65004331e-05 8.453580686e-06 3.871900134e-08 0.002862634137 4.135209222e-08 0.0002240265876 1.625991922e-07 1.446668925e-07 1.815685575e-06 3.823360471e-07 1.519891535e-06 7.180598153e-10 3.485367321e-05 7.35805394e-08 7.791648477e-06 7.339952614e-07 1.648796899e-05 5.701264433e-07 1.101790041e-07 2.180070124e-08 0.005048514103 1.410925493e-08 1.79659364e-05 3.537515255e-05 2.034970872e-05 1.003874866e-08 0.0007062917902 8.670420835e-05 6.826257715e-08 5.900590474e-06 1.447324088e-08 1.072029142e-05 2.460261981e-05 3.389879349e-08 3.777393397e-07 7.004751459e-07 3.633234866e-05 4.394822707e-07 7.401507266e-07 0.004667610557 4.822447961e-07 1.289578788e-08 0.0001296610888 1.387004875e-06 2.915918021e-05 1.716180445e-07 2.901178909e-08 7.505099919e-10 7.294909916e-08 5.765709885e-07 3.265707371e-08 1.700562686e-06 3.410395422e-08 7.817695837e-06 0.0001713560836 4.092858435e-08 9.55494033e-08 2.412147443e-06 3.18345347e-09 0.0006930357429 1.227979147e-07 8.804484246e-05 2.135133831e-06 4.692924121e-06 5.984249476e-08 2.487695226e-06 1.77617142e-07 6.533554512e-07 1.608219361e-06 4.482959485e-06 1.390185368e-06 2.463223456e-09 0.0001373151805 4.692426131e-10 6.223525821e-09 3.026838853e-06 5.540489257e-08 5.422757022e-08 8.715186702e-08 3.005202198e-06 4.491427703e-06 1.296306315e-08 8.033990981e-07 8.445507163e-07 1.3313495e-08 1.8082169e-06 4.811729624e-06 3.356569741e-06 3.718129986e-07 1.633178145e-06 1.145725674e-06 1.082062104e-06 6.645371526e-07 7.689911527e-06 9.446467571e-07 0.0001628133531 0.0004161446517 2.733127802e-06 4.797886191e-06 0.0001243167241 0.000448968545 4.018914394e-08 6.294006476e-05 0.000630081244 3.276911502e-07 5.253342347e-07 6.01350357e-09 6.133257751e-07 7.49793288e-08 9.707663258e-08 2.891962755e-07 0.0008858323235 5.834108655e-12 2.657205251e-05 1.937012009e-08 1.014187607e-08 2.078375068e-09 9.092481277e-09 1.171047339e-06 6.185885599e-07 7.316480548e-08 1.137906585e-05 3.92613425e-07 9.411159935e-08 2.358834566e-05 4.56232593e-07 8.746105152e-07 2.158934095e-07 7.682363523e-08 4.623384694e-08 1.822606698e-09 5.649524127e-07 8.860919132e-07 3.66172606e-06 0.005151181886 1.333234926e-08 0.01070056746 3.557241357e-07 7.955939989e-07 1.102004449e-05 9.09890981e-08 9.760274691e-07 4.02599664e-07 3.148655627e-05 3.652062557e-08 5.832473901e-08 0.0002758547993 5.979707005e-06 2.336266799e-06 1.214254103e-06 1.256993645e-05 4.380008417e-07 8.014538804e-07 0.003169517808 9.221440216e-05 4.690667282e-07 7.647898282e-07 1.418662628e-05 2.220757827e-07 3.141955147e-07 1.911552946e-07 2.452935386e-08 0.0001445565639 2.061452929e-07 1.315418046e-09 3.270353267e-05 2.302094503e-07 4.002015452e-06 1.609746316e-06 1.156175809e-08 4.490179986e-08 0.0002105147887 1.502852601e-10 0.0003938429791 2.359475691e-06 5.766404671e-05 4.012664204e-07 1.060115376e-07 0.0002141724857 2.679419004e-06 1.069242724e-05 2.484273569e-09 0.0001019811318 1.193107128e-06 1.086686152e-06 1.985318786e-07 1.172745202e-10 4.982354956e-07 2.574808657e-05 0.001250228135 2.058018342e-09 1.333953989e-07 9.818589429e-09 5.153985583e-07 0.0001083911806 1.428530264e-06 1.746216459e-05 2.151516381e-05 0.01028483602 7.323846337e-07 2.685813988e-08 4.250429571e-05 0.0004356709049 3.28939188e-07 0.003236795043 3.007501797e-08 2.793831556e-06 1.897873992e-05 1.619696108e-07 8.953551025e-05 4.80193982e-06 7.858777009e-06 7.610679109e-07 2.314240509e-05 4.939677487e-09 4.926048471e-09 8.469201572e-07 3.809176042e-05 8.401919445e-09 4.426718159e-07 2.426495876e-06 3.814034779e-08 1.746205254e-06 1.524431761e-07 7.921023056e-05 2.101316821e-07 4.839140599e-07 5.351990236e-07 4.622182851e-05 0.001900102798 1.924053736e-06 0.001430517818 -4.980374668e-08 +4.980174317e-08 0.001646472474 1.600583774e-05 2.692261472e-06 4.189059841e-06 9.98835345e-08 3.325344145e-05 1.063350006e-06 4.230188624e-06 3.988458639e-06 0.0001050664497 5.985955822e-08 2.025523764e-06 4.345105365e-07 8.910417748e-05 2.543223041e-06 0.0002129901487 8.738312346e-06 4.913864555e-09 3.35325571e-08 3.330566284e-05 1.951472299e-06 1.384757071e-05 2.148294489e-07 1.685285196e-07 1.114823446e-07 6.020716679e-05 1.280863842e-07 4.215213019e-07 3.062370712e-07 6.986571467e-07 1.615302443e-07 1.317636931e-07 0.0008030051004 2.015887208e-05 5.191764639e-06 5.499934662e-07 7.154064268e-08 0.0002157242896 9.439855684e-07 6.512827947e-08 1.039015038e-08 0.0001795882702 1.962855737e-05 1.739481498e-07 2.125722499e-08 1.743456005e-05 1.541385725e-06 3.391912637e-06 8.358930459e-06 1.415585549e-09 7.887403159e-07 1.745047173e-07 1.932691352e-07 9.827865394e-07 1.29143604e-07 9.277986603e-05 4.26401939e-06 3.754381337e-07 3.452543569e-05 8.101147971e-06 4.056176049e-09 2.2530047e-07 1.172500327e-05 4.796353912e-07 3.78522037e-09 2.390433748e-05 5.308730798e-08 4.670503157e-05 6.758043071e-05 3.147573094e-09 1.661535227e-05 5.89344189e-08 3.900862268e-05 3.504192369e-08 8.675791814e-05 0.0001335963742 1.30228891e-06 1.14637156e-06 6.394081592e-06 2.519446964e-05 0.0001367023723 4.154471425e-09 2.099781601e-06 2.146405871e-05 1.233838555e-09 0.001728366589 4.092072252e-05 0.007151322001 4.760094246e-09 0.0007525543832 1.763178471e-08 2.706266303e-07 4.168856448e-06 6.813637481e-07 6.199556862e-06 1.450329435e-09 0.001178920548 3.552454118e-07 0.001006319382 3.684787183e-07 2.167631697e-07 2.537791672e-06 7.65843049e-07 2.591360291e-07 4.604264858e-08 4.168291081e-07 7.23863419e-09 1.170104498e-06 4.393494707e-07 0.0007919172208 1.02875714e-06 6.918203902e-08 9.436152555e-08 1.591152279e-06 2.089437034e-06 1.613336951e-07 3.637029901e-07 9.604787084e-07 9.357789457e-07 2.887457829e-06 6.126125816e-06 1.015640357e-05 5.754930623e-06 0.002323638092 8.012837173e-07 5.265094095e-07 0.0002032528678 1.451002447e-07 5.476912535e-07 7.46876402e-07 1.172249495e-05 5.000091719e-06 1.5728585e-06 6.441937094e-08 2.908823657e-05 4.56908538e-05 0.0003671897961 1.009463738e-07 1.696629017e-09 1.138323555e-08 7.716768592e-07 3.529182645e-06 6.362980666e-07 1.932763096e-07 5.985715811e-07 3.856195618e-06 8.483660513e-07 7.519020755e-09 6.046415155e-06 8.331849394e-05 0.0004929171874 1.0663275e-06 6.354542182e-05 2.325133372e-05 3.330055739e-07 7.906912957e-09 3.514921427e-06 6.695060974e-06 7.791800029e-08 3.007347254e-09 1.687228718e-06 2.965956639e-06 2.551834128e-08 0.02756992212 1.902086655e-06 1.858826374e-06 1.174566239e-07 6.264996388e-07 0.0001498026534 2.510027485e-07 0.003704484331 7.864414886e-05 1.776329747e-08 0.0002011665187 4.239768745e-06 1.056552608e-06 0.0008521357496 4.768399496e-07 5.244443485e-06 0.0001425007391 4.507198467e-07 3.092477214e-07 0.007681380868 1.571782134e-07 3.341334167e-08 9.57706182e-07 1.135332842e-09 1.200841644e-07 4.167709339e-06 7.82760817e-06 1.444096635e-06 2.566989594e-05 3.703035915e-07 2.683318538e-05 2.223130286e-07 1.771561768e-05 1.154453031e-07 4.676014437e-07 1.045571408e-08 5.174119793e-07 8.734308333e-07 1.146383843e-08 8.783876977e-07 7.500376201e-10 1.921618268e-05 5.899024727e-08 7.304615354e-05 1.070796034e-08 2.432284524e-05 2.466254787e-09 1.587769497e-05 5.253475459e-08 1.186364484e-06 2.513004088e-08 2.87819867e-05 1.268569695e-09 4.036264205e-07 1.480215602e-05 0.007764494839 1.266601317e-05 2.673263662e-07 2.052245037e-07 3.026351381e-09 3.958705306e-09 5.153048282e-10 2.30485786e-10 4.00164636e-09 4.681584535e-12 1.079720947e-08 7.820293168e-07 2.049257559e-13 2.452534431e-10 6.723860105e-09 1.881353189e-09 8.769041652e-09 1.405579655e-07 8.79667941e-10 8.5986373e-09 1.838834465e-09 1.411765524e-09 3.18067218e-09 1.657130925e-09 6.291536437e-07 1.407357562e-08 2.446358306e-10 3.694611522e-06 7.168161371e-08 1.515101018e-07 5.976714028e-07 9.943558916e-11 1.770298093e-10 6.923386378e-10 3.490325032e-09 1.003706187e-11 2.246634535e-10 2.180960516e-08 1.258778496e-08 1.510668332e-09 1.860249337e-08 7.435896516e-11 8.656495714e-11 8.343559836e-07 8.213468567e-10 7.372052076e-09 1.737913173e-08 4.796532688e-10 1.006823211e-11 2.297476668e-07 2.964280788e-09 4.99821361e-06 1.217074468e-09 1.247831141e-10 2.270410706e-10 6.846887143e-08 1.126062262e-08 9.36618524e-09 8.815178295e-13 1.248917793e-09 1.287973388e-06 1.86196907e-05 5.985896019e-09 3.576308021e-09 1.396180119e-07 5.597665378e-09 1.227844729e-07 3.053732271e-10 1.281522958e-09 3.785294808e-08 8.065221219e-10 1.797290698e-08 4.870819508e-09 1.481392231e-08 6.148531319e-13 2.607634113e-08 7.503249808e-09 7.245693233e-10 3.917501637e-06 2.455952184e-09 1.635840103e-09 1.504256884e-07 4.625984077e-12 2.544655175e-10 2.326869545e-09 1.209441139e-07 9.766041156e-09 2.844111981e-07 1.20119614e-06 7.294984792e-08 2.673419175e-08 3.217599397e-11 3.051042541e-08 8.284597023e-08 2.04727224e-10 2.829564576e-09 6.317615443e-05 5.647542344e-08 3.939768099e-09 6.94521861e-09 2.688795896e-09 1.246674677e-07 1.659871523e-07 2.236153688e-05 9.480324188e-09 9.50066876e-07 7.270988017e-08 4.028863152e-07 7.587726441e-10 1.151204932e-07 3.256182092e-08 1.170362629e-12 5.503648305e-08 1.043808855e-11 1.203531525e-08 1.075547057e-10 8.107924721e-07 4.847758787e-11 7.343486683e-06 1.187542764e-11 3.503963419e-08 7.017971335e-12 2.463602443e-10 2.330168221e-10 1.513084866e-09 8.01852224e-09 3.929366966e-06 2.084034312e-07 5.951098049e-10 3.506971351e-06 5.267869558e-12 3.372542047e-06 1.801044954e-11 1.866988743e-10 2.684157842e-10 3.831407595e-10 6.969326172e-05 -1.534908483e-08 +1.534892651e-08 7.039003686e-12 1.388232647e-10 5.247749174e-08 4.682028909e-08 1.641598156e-10 2.193557269e-08 1.553195144e-09 2.996101226e-08 2.723666317e-11 1.942276011e-09 1.292931245e-11 4.121903263e-12 1.610129287e-08 1.68730662e-06 1.925468729e-09 4.331103214e-13 6.454416036e-07 6.024026922e-07 2.580228274e-10 1.225798734e-05 1.983091967e-11 4.860872791e-11 2.362341657e-08 1.373652589e-08 3.790341756e-12 1.087152141e-08 3.129247636e-07 1.364371415e-09 1.71528796e-05 3.172915696e-08 2.25476832e-08 3.114465198e-09 3.261406498e-10 2.126159374e-05 5.76634479e-08 9.666079594e-10 7.465172199e-10 1.354594056e-10 2.460812063e-08 1.087490927e-09 2.736632646e-07 5.112932147e-10 6.30608916e-07 3.16614122e-09 2.044783566e-08 6.895475483e-10 6.628499186e-11 5.398066665e-09 1.01564995e-07 5.845619561e-10 4.836690216e-08 5.100722965e-10 1.572957817e-08 1.787346401e-10 1.632619667e-08 7.017140249e-08 7.320144324e-12 1.96757824e-11 1.409100801e-12 1.238542063e-06 8.502558829e-08 3.438481899e-08 4.863624248e-07 5.154336834e-07 2.080068277e-09 3.431232831e-10 1.781888545e-08 1.544255738e-09 4.308591117e-09 2.652013597e-09 1.604288279e-11 1.019669685e-05 1.12327842e-09 2.815515241e-12 1.078735039e-10 6.773434559e-09 2.399387849e-09 1.75474283e-07 6.117989542e-11 8.592612784e-06 6.887595232e-11 1.79993583e-09 2.674398001e-10 1.267708042e-08 1.616751919e-09 2.418384582e-10 2.161734611e-07 3.594695838e-06 1.314781583e-05 3.035129573e-06 6.859937833e-12 8.125025163e-07 2.904326031e-07 8.278771155e-08 1.491230091e-12 3.232705305e-10 3.014800965e-07 3.869271268e-08 4.060064314e-09 2.722533999e-09 1.252200287e-06 8.533922342e-10 1.085340928e-13 1.013028025e-07 1.173657504e-10 1.230854977e-06 3.602985461e-07 2.340450846e-10 1.622721489e-07 1.855075276e-10 1.873406688e-13 1.477955216e-10 5.844396086e-09 5.502790891e-08 6.238719977e-09 2.281603193e-08 2.708614274e-09 8.942145684e-07 8.600069274e-08 6.474837678e-08 1.15030578e-06 4.235841586e-10 2.535746467e-12 1.472699284e-07 2.05450342e-10 2.45239943e-06 2.149773698e-09 1.302041059e-08 1.354492219e-05 1.493744046e-10 4.238601095e-09 1.975404554e-09 7.883672681e-09 3.016978986e-08 6.106630141e-07 7.432899837e-09 3.802000369e-08 1.356515625e-08 7.945785661e-11 6.146806632e-09 1.061252645e-06 3.425558912e-09 4.724377322e-09 2.264944373e-06 5.206889333e-12 1.903801687e-11 5.371716621e-09 5.143287236e-12 8.796169898e-08 2.01831747e-09 7.391246947e-07 6.374455413e-11 5.084300761e-08 4.70595383e-10 7.578932433e-10 1.02976571e-10 1.065285301e-10 2.629754276e-10 7.25335847e-09 3.644329828e-09 3.875224101e-06 1.911472842e-10 7.705710398e-09 9.497312756e-06 1.776151243e-07 7.671908505e-12 1.053728533e-07 4.52842088e-07 2.689018224e-11 2.172694222e-09 1.388552825e-10 8.063784626e-10 5.66398293e-08 1.744770454e-09 2.160682805e-11 2.110818333e-11 4.471876064e-07 1.547841859e-09 1.123968452e-08 1.220442239e-08 7.869244588e-07 1.643473453e-10 1.008574226e-08 3.353923888e-07 6.498701544e-10 1.631294723e-10 3.805045733e-07 8.427141619e-07 1.498045908e-09 1.039453208e-10 1.111541375e-08 1.747478719e-09 2.355118422e-09 1.678201094e-08 2.202184418e-10 5.649709141e-08 7.45087756e-08 3.331581749e-11 3.654180177e-11 -2.135416289e-11 +2.135443335e-11 4.454404883e-09 1.468811182e-11 6.57114871e-09 5.984556178e-10 1.45099015e-07 1.39419768e-10 1.042111653e-11 3.257323655e-11 9.125783554e-09 1.15776364e-08 1.347035226e-10 1.772518894e-07 2.065966085e-07 1.18335761e-10 4.340575369e-11 1.724054892e-07 1.017507229e-09 4.448105514e-08 9.297852627e-10 1.457953015e-08 1.344680446e-06 3.942919772e-10 6.431630422e-10 2.598292431e-09 9.723217413e-11 5.887976816e-07 1.250935985e-08 1.91892714e-08 1.266147267e-09 2.358514388e-08 9.312371762e-07 4.777005653e-09 1.101297338e-05 4.464552646e-10 7.607715154e-08 -4.820145421e-10 +4.82066931e-10 2.264473432e-08 9.048298519e-09 8.615187911e-07 1.40027638e-06 2.971161233e-07 1.70303243e-09 9.085713716e-08 7.676704887e-09 3.495574146e-07 5.348513441e-10 8.550322518e-10 5.35951439e-10 3.270519121e-08 2.199299151e-11 3.481764536e-07 6.965854851e-10 1.079164489e-09 2.017281663e-11 1.225752127e-08 1.755199899e-09 3.79819579e-08 3.251519125e-06 1.339537878e-08 1.067186532e-10 2.907350796e-09 2.121014228e-09 1.792310313e-10 5.485037209e-10 2.677594237e-10 3.400494514e-09 2.722261269e-07 1.221064105e-07 4.918083741e-10 1.448712678e-08 1.186087559e-10 2.383805467e-09 6.366306819e-10 2.884744386e-08 3.233589437e-09 0.0001662944389 2.948950879e-10 2.818085744e-08 2.149521422e-09 2.878511074e-11 1.429955578e-11 2.151447291e-11 4.991716189e-07 7.608410036e-11 4.322111296e-08 8.515575318e-10 4.52193765e-09 4.65887361e-08 4.872378255e-10 1.225930736e-08 9.732262711e-09 5.360870618e-08