Page MenuHomeHEPForge

No OneTemporary

diff --git a/include/HEJ/Constants.hh b/include/HEJ/Constants.hh
index 19be946..9b93cf5 100644
--- a/include/HEJ/Constants.hh
+++ b/include/HEJ/Constants.hh
@@ -1,41 +1,40 @@
/** \file
* \brief Header file defining all global constants used for HEJ
*
* \authors The HEJ collaboration (see AUTHORS for details)
* \date 2019
* \copyright GPLv2 or later
*/
#pragma once
namespace HEJ{
/// @name QCD parameters
//@{
constexpr double N_C = 3.; //!< number of Colours
constexpr double C_A = N_C; //!< \f$C_A\f$
constexpr double C_F = (N_C*N_C - 1.)/(2.*N_C); //!< \f$C_F\f$
constexpr double t_f = 0.5; //!< \f$t_f\f$
constexpr double n_f = 5.; //!< number light flavours
constexpr double beta0 = 11./3.*C_A - 4./3.*t_f*n_f; //!< \f$\beta_0\f$
//@}
/// @name QFT parameters
//@{
- constexpr double vev = 246.2196508; //!< Higgs vacuum expectation value in GeV
constexpr double gw = 0.653233; //!< elector-weak coupling
constexpr double MW = 80.419; //!< The W mass in GeV/c^2
constexpr double GammaW = 2.0476; //!< the W width in GeV/c^2
//@}
/// @name Generation Parameters
//@{
//! @brief Default scale for virtual correction
//! \f$\lambda\f$ cf. eq. (20) in \cite Andersen:2011hs
constexpr double CLAMBDA = 0.2;
constexpr double CMINPT = 0.2; //!< minimal \f$p_t\f$ of all partons
//@}
/// @name Conventional Parameters
//@{
//! Value of first colour for colour dressing, according to LHE convention
//! \cite Boos:2001cv
constexpr int COLOUR_OFFSET = 501;
//@}
}
diff --git a/include/HEJ/Hjets.hh b/include/HEJ/Hjets.hh
index 1f234e7..9ccb831 100644
--- a/include/HEJ/Hjets.hh
+++ b/include/HEJ/Hjets.hh
@@ -1,384 +1,403 @@
/**
* \authors The HEJ collaboration (see AUTHORS for details)
* \date 2019
* \copyright GPLv2 or later
*/
/** \file
* \brief Functions computing the square of current contractions in H+Jets.
*
* This file contains all the H+Jet specific components to compute
* the current contractions for valid HEJ processes, to form a full
* H+Jets ME, currently one would have to use functions from the
* jets.hh header also. We have FKL and also unordered components for
* H+Jets.
*
* @TODO add a namespace
*/
#pragma once
#include <CLHEP/Vector/LorentzVector.h>
typedef CLHEP::HepLorentzVector HLV;
//! Square of gg->gg Higgs+Jets Scattering Current
/**
* @param p1out Momentum of final state gluon
* @param p1in Momentum of initial state gluon
* @param p2out Momentum of final state gluon
* @param p2in Momentum of intial state gluon
* @param q1 Momentum of t-channel propagator before Higgs
* @param qH2 Momentum of t-channel propagator after Higgs
* @param mt Top quark mass
* @param include_bottom Specifies whether bottom corrections are included
* @param mb Bottom quark mass
+ * @param vev Vacuum expectation value
* @returns Square of the current contractions for gg->gg Scattering
*
* g~p1 g~p2
* should be called with q1 meant to be contracted with p2 in first part of vertex
* (i.e. if g is backward, q1 is forward)
*/
double ME_H_gg (HLV p1out, HLV p1in,
HLV p2out, HLV p2in,
HLV q1, HLV qH2,
double mt,
- bool include_bottom, double mb);
+ bool include_bottom, double mb, double vev);
//! Square of gq->gq Higgs+Jets Scattering Current with Higgs before Gluon
/**
* @param p1out Momentum of final state gluon
* @param p1in Momentum of initial state gluon
* @param p2out Momentum of final state gluon
* @param p2in Momentum of intial state gluon
* @param pH Momentum of Higgs
* @param mt Top quark mass
* @param include_bottom Specifies whether bottom corrections are included
* @param mb Bottom quark mass
+ * @param vev Vacuum expectation value
* @returns Square of the current contraction
*/
double ME_Houtside_gq(HLV p1out, HLV p1in,
HLV p2out, HLV p2in,
HLV pH,
double mt,
- bool include_bottom, double mb);
+ bool include_bottom, double mb, double vev);
//! Square of qg->qg Higgs+Jets Scattering Current
/**
* @param p1out Momentum of final state quark
* @param p1in Momentum of initial state quark
* @param p2out Momentum of final state gluon
* @param p2in Momentum of intial state gluon
* @param q1 Momentum of t-channel propagator before Higgs
* @param qH2 Momentum of t-channel propagator after Higgs
* @param mt Top quark mass
* @param include_bottom Specifies whether bottom corrections are included
* @param mb Bottom quark mass
+ * @param vev Vacuum expectation value
* @returns Square of the current contractions for qg->qg Scattering
*
* q~p1 g~p2 (i.e. ALWAYS p1 for quark, p2 for gluon)
* should be called with q1 meant to be contracted with p2 in first part of vertex
* (i.e. if g is backward, q1 is forward)
*/
double ME_H_qg (HLV p1out, HLV p1in,
HLV p2out, HLV p2in,
HLV q1, HLV qH2,
double mt,
- bool include_bottom, double mb);
+ bool include_bottom, double mb, double vev);
//! Square of qbarg->qbarg Higgs+Jets Scattering Current
/**
* @param p1out Momentum of final state anti-quark
* @param p1in Momentum of initial state anti-quark
* @param p2out Momentum of final state gluon
* @param p2in Momentum of intial state gluon
* @param q1 Momentum of t-channel propagator before Higgs
* @param qH2 Momentum of t-channel propagator after Higgs
* @param mt Top quark mass
* @param include_bottom Specifies whether bottom corrections are included
* @param mb Bottom quark mass
+ * @param vev Vacuum expectation value
* @returns Square of the current contractions for qbarg->qbarg Scattering
*
* qbar~p1 g~p2 (i.e. ALWAYS p1 for anti-quark, p2 for gluon)
* should be called with q1 meant to be contracted with p2 in first part of vertex
* (i.e. if g is backward, q1 is forward)
*/
double ME_H_qbarg (HLV p1out, HLV p1in,
HLV p2out, HLV p2in,
HLV q1, HLV qH2,
double mt,
- bool include_bottom, double mb);
+ bool include_bottom, double mb, double vev);
//! Square of qQ->qQ Higgs+Jets Scattering Current
/**
* @param p1out Momentum of final state quark
* @param p1in Momentum of initial state quark
* @param p2out Momentum of final state quark
* @param p2in Momentum of intial state quark
* @param q1 Momentum of t-channel propagator before Higgs
* @param qH2 Momentum of t-channel propagator after Higgs
* @param mt Top quark mass
* @param include_bottom Specifies whether bottom corrections are included
* @param mb Bottom quark mass
+ * @param vev Vacuum expectation value
* @returns Square of the current contractions for qQ->qQ Scattering
*
* q~p1 Q~p2 (i.e. ALWAYS p1 for quark, p2 for quark)
* should be called with q1 meant to be contracted with p2 in first part of vertex
* (i.e. if Q is backward, q1 is forward)
*/
double ME_H_qQ (HLV p1out, HLV p1in,
HLV p2out, HLV p2in,
HLV q1, HLV qH2,
double mt,
- bool include_bottom, double mb);
+ bool include_bottom, double mb, double vev);
//! Square of qQbar->qQbar Higgs+Jets Scattering Current
/**
* @param p1out Momentum of final state quark
* @param p1in Momentum of initial state quark
* @param p2out Momentum of final state anti-quark
* @param p2in Momentum of intial state anti-quark
* @param q1 Momentum of t-channel propagator before Higgs
* @param qH2 Momentum of t-channel propagator after Higgs
* @param mt Top quark mass
* @param include_bottom Specifies whether bottom corrections are included
* @param mb Bottom quark mass
+ * @param vev Vacuum expectation value
* @returns Square of the current contractions for qQ->qQ Scattering
*
* q~p1 Qbar~p2 (i.e. ALWAYS p1 for quark, p2 for anti-quark)
* should be called with q1 meant to be contracted with p2 in first part of vertex
* (i.e. if Qbar is backward, q1 is forward)
*/
double ME_H_qQbar (HLV p1out, HLV p1in,
HLV p2out, HLV p2in,
HLV q1, HLV qH2,
double mt,
- bool include_bottom, double mb);
+ bool include_bottom, double mb, double vev);
//! Square of qbarQ->qbarQ Higgs+Jets Scattering Current
/**
* @param p1out Momentum of final state anti-quark
* @param p1in Momentum of initial state anti-quark
* @param p2out Momentum of final state quark
* @param p2in Momentum of intial state quark
* @param q1 Momentum of t-channel propagator before Higgs
* @param qH2 Momentum of t-channel propagator after Higgs
* @param mt Top quark mass
* @param include_bottom Specifies whether bottom corrections are included
* @param mb Bottom quark mass
+ * @param vev Vacuum expectation value
* @returns Square of the current contractions for qbarQ->qbarQ Scattering
*
* qbar~p1 Q~p2 (i.e. ALWAYS p1 for anti-quark, p2 for quark)
* should be called with q1 meant to be contracted with p2 in first part of vertex
* (i.e. if Q is backward, q1 is forward)
*/
double ME_H_qbarQ (HLV p1out, HLV p1in,
HLV p2out, HLV p2in,
HLV q1, HLV qH2,
double mt,
- bool include_bottom, double mb);
+ bool include_bottom, double mb, double vev);
//! Square of qbarQbar->qbarQbar Higgs+Jets Scattering Current
/**
* @param p1out Momentum of final state anti-quark
* @param p1in Momentum of initial state anti-quark
* @param p2out Momentum of final state anti-quark
* @param p2in Momentum of intial state anti-quark
* @param q1 Momentum of t-channel propagator before Higgs
* @param qH2 Momentum of t-channel propagator after Higgs
* @param mt Top quark mass
* @param include_bottom Specifies whether bottom corrections are included
* @param mb Bottom quark mass
+ * @param vev Vacuum expectation value
* @returns Square of the current contractions for qbarQbar->qbarQbar Scattering
*
* qbar~p1 Qbar~p2 (i.e. ALWAYS p1 for anti-quark, p2 for anti-quark)
* should be called with q1 meant to be contracted with p2 in first part of vertex
* (i.e. if Qbar is backward, q1 is forward)
*/
double ME_H_qbarQbar (HLV p1out, HLV p1in,
HLV p2out, HLV p2in,
HLV q1, HLV qH2,
double mt,
- bool include_bottom, double mb);
+ bool include_bottom, double mb, double vev);
//! @name Unordered backwards
//! @{
//! Square of qbarQ->qbarQg Higgs+Jets Unordered b Scattering Current
/**
* @param p1out Momentum of final state anti-quark
* @param p1in Momentum of initial state anti-quark
* @param pg Momentum of unordered b gluon
* @param p2out Momentum of final state quark
* @param p2in Momentum of intial state quark
* @param qH1 Momentum of t-channel propagator before Higgs
* @param qH2 Momentum of t-channel propagator after Higgs
* @param mt Top quark mass
* @param include_bottom Specifies whether bottom corrections are included
* @param mb Bottom quark mass
+ * @param vev Vacuum expectation value
* @returns Square of the current contractions for qbarQ->qbarQg Scattering
*
* This construction is taking rapidity order: p1out >> p2out > pg
*/
double ME_H_unob_qbarQ (HLV p1out, HLV p1in,
HLV pg, HLV p2out,
HLV p2in, HLV qH1,
HLV qH2,
double mt,
- bool include_bottom, double mb);
+ bool include_bottom, double mb, double vev);
//! Square of qQ->qQg Higgs+Jets Unordered b Scattering Current
/**
* @param p1out Momentum of final state quark
* @param p1in Momentum of initial state quark
* @param pg Momentum of unordered b gluon
* @param p2out Momentum of final state quark
* @param p2in Momentum of intial state quark
* @param qH1 Momentum of t-channel propagator before Higgs
* @param qH2 Momentum of t-channel propagator after Higgs
* @param mt Top quark mass
* @param include_bottom Specifies whether bottom corrections are included
* @param mb Bottom quark mass
+ * @param vev Vacuum expectation value
* @returns Square of the current contractions for qQ->qQg Scattering
*
* This construction is taking rapidity order: p1out >> p2out > pg
*/
double ME_H_unob_qQ (HLV p1out, HLV p1in,
HLV pg, HLV p2out,
HLV p2in, HLV qH1,
HLV qH2,
double mt,
- bool include_bottom, double mb);
+ bool include_bottom, double mb, double vev);
//! Square of qQbar->qQbarg Higgs+Jets Unordered b Scattering Current
/**
* @param p1out Momentum of final state quark
* @param p1in Momentum of initial state quark
* @param pg Momentum of unordered b gluon
* @param p2out Momentum of final state anti-quark
* @param p2in Momentum of intial state anti-quark
* @param qH1 Momentum of t-channel propagator before Higgs
* @param qH2 Momentum of t-channel propagator after Higgs
* @param mt Top quark mass
* @param include_bottom Specifies whether bottom corrections are included
* @param mb Bottom quark mass
+ * @param vev Vacuum expectation value
* @returns Square of the current contractions for qQbar->qQbarg Scattering
*
* This construction is taking rapidity order: p1out >> p2out > pg
*/
double ME_H_unob_qQbar (HLV p1out, HLV p1in,
HLV pg, HLV p2out,
HLV p2in, HLV qH1,
HLV qH2,
double mt,
- bool include_bottom, double mb);
+ bool include_bottom, double mb, double vev);
//! Square of qbarQbar->qbarQbarg Higgs+Jets Unordered b Scattering Current
/**
* @param p1out Momentum of final state anti-quark
* @param p1in Momentum of initial state anti-quark
* @param pg Momentum of unordered b gluon
* @param p2out Momentum of final state anti-quark
* @param p2in Momentum of intial state anti-quark
* @param qH1 Momentum of t-channel propagator before Higgs
* @param qH2 Momentum of t-channel propagator after Higgs
* @param mt Top quark mass
* @param include_bottom Specifies whether bottom corrections are included
* @param mb Bottom quark mass
+ * @param vev Vacuum expectation value
* @returns Square of the current contractions for qbarQbar->qbarQbarg Scattering
*
* This construction is taking rapidity order: p1out >> p2out > pg
*/
double ME_H_unob_qbarQbar (HLV p1out, HLV p1in,
HLV pg, HLV p2out,
HLV p2in, HLV qH1,
HLV qH2,
double mt,
- bool include_bottom, double mb);
+ bool include_bottom, double mb, double vev);
//! Square of gQbar->gQbarg Higgs+Jets Unordered b Scattering Current
/**
* @param p1out Momentum of final state gluon
* @param p1in Momentum of initial state gluon
* @param pg Momentum of unordered b gluon
* @param p2out Momentum of final state anti-quark
* @param p2in Momentum of intial state anti-quark
* @param qH1 Momentum of t-channel propagator before Higgs
* @param qH2 Momentum of t-channel propagator after Higgs
* @param mt Top quark mass
* @param include_bottom Specifies whether bottom corrections are included
* @param mb Bottom quark mass
+ * @param vev Vacuum expectation value
* @returns Square of the current contractions for gQbar->gQbarg Scattering
*
* This construction is taking rapidity order: p1out >> p2out > pg
*/
double ME_H_unob_gQbar (HLV p1out, HLV p1in,
HLV pg, HLV p2out,
HLV p2in, HLV qH1,
HLV qH2,
double mt,
- bool include_bottom, double mb);
+ bool include_bottom, double mb, double vev);
//! Square of gQ->gQg Higgs+Jets Unordered b Scattering Current
/**
* @param p1out Momentum of final state gluon
* @param p1in Momentum of initial state gluon
* @param pg Momentum of unordered b gluon
* @param p2out Momentum of final state quark
* @param p2in Momentum of intial state quark
* @param qH1 Momentum of t-channel propagator before Higgs
* @param qH2 Momentum of t-channel propagator after Higgs
* @param mt Top quark mass
* @param include_bottom Specifies whether bottom corrections are included
* @param mb Bottom quark mass
+ * @param vev Vacuum expectation value
* @returns Square of the current contractions for gQ->gQg Scattering
*
* This construction is taking rapidity order: p1out >> p2out > pg
*/
double ME_H_unob_gQ (HLV p1out, HLV p1in,
HLV pg, HLV p2out,
HLV p2in, HLV qH1,
HLV qH2,
double mt,
- bool include_bottom, double mb);
+ bool include_bottom, double mb, double vev);
//! @}
//! @name impact factors for Higgs + jet
//! @{
//! Implements Eq. (4.22) in \cite DelDuca:2003ba with modifications to incoming plus momenta
/**
* @param p2 Momentum of Particle 2
* @param p1 Momentum of Particle 1
* @param pH Momentum of Higgs
+ * @param vev Vacuum expectation value
* @returns Value of Eq. (4.22) in \cite DelDuca:2003ba with modifications
*
* This gives the impact factor. First it determines whether this is the
* case \f$p1p\sim php\gg p3p\f$ or the opposite
*/
-double C2gHgm(HLV p2, HLV p1, HLV pH);
+double C2gHgm(HLV p2, HLV p1, HLV pH, double vev);
//! Implements Eq. (4.23) in \cite DelDuca:2003ba with modifications to incoming plus momenta
/**
* @param p2 Momentum of Particle 2
* @param p1 Momentum of Particle 1
* @param pH Momentum of Higgs
+ * @param vev Vacuum expectation value
* @returns Value of Eq. (4.23) in \cite DelDuca:2003ba
*
* This gives the impact factor. First it determines whether this is the
* case \f$p1p\sim php\gg p3p\f$ or the opposite
*/
-double C2gHgp(HLV p2, HLV p1, HLV pH);
+double C2gHgp(HLV p2, HLV p1, HLV pH, double vev);
//! Implements Eq. (4.22) in \cite DelDuca:2003ba
/**
* @param p2 Momentum of Particle 2
* @param p1 Momentum of Particle 1
* @param pH Momentum of Higgs
+ * @param vev Vacuum expectation value
* @returns Value of Eq. (4.22) in \cite DelDuca:2003ba
*
* This gives the impact factor. First it determines whether this is the
* case \f$p1p\sim php\gg p3p\f$ or the opposite
+ *
+ * @TODO remove this function is not used
*/
-double C2qHqm(HLV p2, HLV p1, HLV pH);
+double C2qHqm(HLV p2, HLV p1, HLV pH, double vev);
//! @}
diff --git a/src/Hjets.cc b/src/Hjets.cc
index 665f0a1..4ae5158 100644
--- a/src/Hjets.cc
+++ b/src/Hjets.cc
@@ -1,1083 +1,1083 @@
/**
* \authors The HEJ collaboration (see AUTHORS for details)
* \date 2019
* \copyright GPLv2 or later
*/
#include "HEJ/jets.hh"
#include "HEJ/Hjets.hh"
#include <assert.h>
#include <limits>
#include "HEJ/Constants.hh"
#ifdef HEJ_BUILD_WITH_QCDLOOP
#include "qcdloop/qcdloop.h"
#endif
const COM looprwfactor = (COM(0.,1.)*M_PI*M_PI)/pow((2.*M_PI),4);
constexpr double infinity = std::numeric_limits<double>::infinity();
namespace {
// Loop integrals
#ifdef HEJ_BUILD_WITH_QCDLOOP
COM B0DD(HLV q, double mq)
{
static std::vector<std::complex<double>> result(3);
static auto ql_B0 = [](){
ql::Bubble<std::complex<double>,double,double> ql_B0;
ql_B0.setCacheSize(100);
return ql_B0;
}();
static std::vector<double> masses(2);
static std::vector<double> momenta(1);
for(auto & m: masses) m = mq*mq;
momenta.front() = q.m2();
ql_B0.integral(result, 1, masses, momenta);
return result[0];
}
COM C0DD(HLV q1, HLV q2, double mq)
{
static std::vector<std::complex<double>> result(3);
static auto ql_C0 = [](){
ql::Triangle<std::complex<double>,double,double> ql_C0;
ql_C0.setCacheSize(100);
return ql_C0;
}();
static std::vector<double> masses(3);
static std::vector<double> momenta(3);
for(auto & m: masses) m = mq*mq;
momenta[0] = q1.m2();
momenta[1] = q2.m2();
momenta[2] = (q1+q2).m2();
ql_C0.integral(result, 1, masses, momenta);
return result[0];
}
COM D0DD(HLV q1,HLV q2, HLV q3, double mq)
{
static std::vector<std::complex<double>> result(3);
static auto ql_D0 = [](){
ql::Box<std::complex<double>,double,double> ql_D0;
ql_D0.setCacheSize(100);
return ql_D0;
}();
static std::vector<double> masses(4);
static std::vector<double> momenta(6);
for(auto & m: masses) m = mq*mq;
momenta[0] = q1.m2();
momenta[1] = q2.m2();
momenta[2] = q3.m2();
momenta[3] = (q1+q2+q3).m2();
momenta[4] = (q1+q2).m2();
momenta[5] = (q2+q3).m2();
ql_D0.integral(result, 1, masses, momenta);
return result[0];
}
COM A1(HLV q1, HLV q2, double mt)
// As given in Eq. (B.2) of VDD
{
double q12,q22,Q2;
HLV Q;
double Delta3,mt2;
COM ans(COM(0.,0.));
q12=q1.m2();
q22=q2.m2();
Q=-q1-q2; // Define all momenta ingoing as in appendix of VDD
Q2=Q.m2();
Delta3=q12*q12+q22*q22+Q2*Q2-2*q12*q22-2*q12*Q2-2*q22*Q2;
assert(mt > 0.);
mt2=mt*mt;
ans=looprwfactor*COM(0,-1)*C0DD(q1,q2,mt)*( 4.*mt2/Delta3*(Q2-q12-q22)
-1.-4.*q12*q22/Delta3-12.*q12*q22*Q2/Delta3/Delta3*(q12+q22-Q2) )
- looprwfactor*COM(0,-1)*( B0DD(q2,mt)-B0DD(Q,mt) )
* ( 2.*q22/Delta3+12.*q12*q22/Delta3/Delta3*(q22-q12+Q2) )
- looprwfactor*COM(0,-1)*( B0DD(q1,mt)-B0DD(Q,mt) )
* ( 2.*q12/Delta3+12.*q12*q22/Delta3/Delta3*(q12-q22+Q2) )
- 2./Delta3/16/M_PI/M_PI*(q12+q22-Q2);
return ans;
}
COM A2(HLV q1, HLV q2, double mt)
// As given in Eq. (B.2) of VDD, but with high energy limit
// of invariants taken.
{
double q12,q22,Q2;
HLV Q;
double Delta3,mt2;
COM ans(COM(0.,0.));
assert(mt > 0.);
mt2=mt*mt;
q12=q1.m2();
q22=q2.m2();
Q=-q1-q2; // Define all momenta ingoing as in appendix of VDD
Q2=Q.m2();
Delta3=q12*q12+q22*q22+Q2*Q2-2*q12*q22-2*q12*Q2-2*q22*Q2;
ans=looprwfactor*COM(0,-1)*C0DD(q1,q2,mt)*( 2.*mt2+1./2.*(q12+q22-Q2)
+2.*q12*q22*Q2/Delta3 )
+looprwfactor*COM(0,-1)*(B0DD(q2,mt)-B0DD(Q,mt))
*q22*(q22-q12-Q2)/Delta3
+looprwfactor*COM(0,-1)*(B0DD(q1,mt)-B0DD(Q,mt))
*q12*(q12-q22-Q2)/Delta3+1./16/M_PI/M_PI;
return ans;
}
#else // no QCDloop
COM A1(HLV, HLV, double) {
throw std::logic_error{"A1 called without QCDloop support"};
}
COM A2(HLV, HLV, double) {
throw std::logic_error{"A2 called without QCDloop support"};
}
#endif
void to_current(const HLV & q, current & ret){
ret[0]=q.e();
ret[1]=q.x();
ret[2]=q.y();
ret[3]=q.z();
}
/**
* @brief Higgs vertex contracted with current @param C1 and @param C2
*/
COM cHdot(const current & C1, const current & C2, const current & q1,
- const current & q2, double mt, bool incBot, double mb)
+ const current & q2, double mt, bool incBot, double mb, double vev)
{
if (mt == infinity) {
- return (cdot(C1,C2)*cdot(q1,q2)-cdot(C1,q2)*cdot(C2,q1))/(3*M_PI*HEJ::vev);
+ return (cdot(C1,C2)*cdot(q1,q2)-cdot(C1,q2)*cdot(C2,q1))/(3*M_PI*vev);
}
else {
HLV vq1,vq2;
vq1.set(q1[1].real(),q1[2].real(),q1[3].real(),q1[0].real());
vq2.set(q2[1].real(),q2[2].real(),q2[3].real(),q2[0].real());
// first minus sign obtained because of q1-difference to VDD
- // Factor is because 4 mt^2 g^2/HEJ::vev A1 -> 16 pi mt^2/HEJ::vev alphas,
+ // Factor is because 4 mt^2 g^2/vev A1 -> 16 pi mt^2/vev alphas,
if(!(incBot))
- return 16.*M_PI*mt*mt/HEJ::vev*(-cdot(C1,q2)*cdot(C2,q1)*A1(-vq1,vq2,mt)
+ return 16.*M_PI*mt*mt/vev*(-cdot(C1,q2)*cdot(C2,q1)*A1(-vq1,vq2,mt)
-cdot(C1,C2)*A2(-vq1,vq2,mt));
else
- return 16.*M_PI*mt*mt/HEJ::vev*(-cdot(C1,q2)*cdot(C2,q1)*A1(-vq1,vq2,mt)
+ return 16.*M_PI*mt*mt/vev*(-cdot(C1,q2)*cdot(C2,q1)*A1(-vq1,vq2,mt)
-cdot(C1,C2)*A2(-vq1,vq2,mt))
- + 16.*M_PI*mb*mb/HEJ::vev*(-cdot(C1,q2)*cdot(C2,q1)*A1(-vq1,vq2,mb)
+ + 16.*M_PI*mb*mb/vev*(-cdot(C1,q2)*cdot(C2,q1)*A1(-vq1,vq2,mb)
-cdot(C1,C2)*A2(-vq1,vq2,mb));
}
}
//@{
/**
* @brief Higgs+Jets FKL Contributions, function to handle all incoming types.
* @param p1out Outgoing Particle 1. (W emission)
* @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 q1 t-channel momenta into higgs vertex
* @param q2 t-channel momenta out of higgs vertex
* @param mt top mass (inf or value)
* @param incBot Bool, to include bottom mass (true) or not (false)?
* @param mb bottom mass (value)
* @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^\mu H j_\mu. FKL with higgs vertex somewhere in the FKL chain.
* Handles all possible incoming states.
*/
double j_h_j(HLV p1out, HLV p1in, HLV p2out, HLV p2in,
HLV q1, HLV q2, double mt, bool incBot,
- double mb, bool aqlineb, bool aqlinef){
+ double mb, double vev, bool aqlineb, bool aqlinef){
current j1p,j1m,j2p,j2m, q1v, q2v;
// Note need to flip helicities in anti-quark case.
joi(p1out,!aqlineb, p1in,!aqlineb, j1p);
joi(p1out, aqlineb, p1in, aqlineb, j1m);
joi(p2out,!aqlinef, p2in,!aqlinef, j2p);
joi(p2out, aqlinef, p2in, aqlinef, j2m);
to_current(q1, q1v);
to_current(q2, q2v);
- COM Mmp=cHdot(j1m,j2p,q1v,q2v,mt, incBot, mb);
- COM Mmm=cHdot(j1m,j2m,q1v,q2v,mt, incBot, mb);
- COM Mpp=cHdot(j1p,j2p,q1v,q2v,mt, incBot, mb);
- COM Mpm=cHdot(j1p,j2m,q1v,q2v,mt, incBot, mb);
+ COM Mmp=cHdot(j1m,j2p,q1v,q2v,mt, incBot, mb, vev);
+ COM Mmm=cHdot(j1m,j2m,q1v,q2v,mt, incBot, mb, vev);
+ COM Mpp=cHdot(j1p,j2p,q1v,q2v,mt, incBot, mb, vev);
+ COM Mpm=cHdot(j1p,j2m,q1v,q2v,mt, incBot, mb, vev);
// average over helicities
const double sst=(abs2(Mmp)+abs2(Mmm)+abs2(Mpp)+abs2(Mpm))/4.;
return sst/((p1in-p1out).m2()*(p2in-p2out).m2()*q1.m2()*q2.m2());
}
} // namespace anonymous
double ME_H_qQ(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV q1, HLV q2,
- double mt, bool incBot, double mb){
- return j_h_j(p1out, p1in, p2out, p2in, q1, q2, mt, incBot, mb, false, false);
+ double mt, bool incBot, double mb, double vev){
+ return j_h_j(p1out, p1in, p2out, p2in, q1, q2, mt, incBot, mb, vev, false, false);
}
double ME_H_qQbar(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV q1, HLV q2,
- double mt, bool incBot, double mb){
- return j_h_j(p1out, p1in, p2out, p2in, q1, q2, mt, incBot, mb, false, true);
+ double mt, bool incBot, double mb, double vev){
+ return j_h_j(p1out, p1in, p2out, p2in, q1, q2, mt, incBot, mb, vev, false, true);
}
double ME_H_qbarQ(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV q1, HLV q2,
- double mt, bool incBot, double mb){
- return j_h_j(p1out, p1in, p2out, p2in, q1, q2, mt, incBot, mb, true, false);
+ double mt, bool incBot, double mb, double vev){
+ return j_h_j(p1out, p1in, p2out, p2in, q1, q2, mt, incBot, mb, vev, true, false);
}
double ME_H_qbarQbar(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV q1, HLV q2,
- double mt, bool incBot, double mb){
- return j_h_j(p1out, p1in, p2out, p2in, q1, q2, mt, incBot, mb, true, true);
+ double mt, bool incBot, double mb, double vev){
+ return j_h_j(p1out, p1in, p2out, p2in, q1, q2, mt, incBot, mb, vev, true, true);
}
double ME_H_qg(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV q1, HLV q2,
- double mt, bool incBot, double mb){
- return j_h_j(p1out, p1in, p2out, p2in, q1, q2, mt, incBot, mb, false, false)
+ double mt, bool incBot, double mb, double vev){
+ return j_h_j(p1out, p1in, p2out, p2in, q1, q2, mt, incBot, mb, vev, false, false)
* K_g(p2out,p2in)/HEJ::C_A;
}
double ME_H_qbarg(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV q1, HLV q2,
- double mt, bool incBot, double mb){
- return j_h_j(p1out, p1in, p2out, p2in, q1, q2, mt, incBot, mb, true, false)
+ double mt, bool incBot, double mb, double vev){
+ return j_h_j(p1out, p1in, p2out, p2in, q1, q2, mt, incBot, mb, vev, true, false)
* K_g(p2out,p2in)/HEJ::C_A;
}
double ME_H_gg(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV q1, HLV q2,
- double mt, bool incBot, double mb){
- return j_h_j(p1out, p1in, p2out, p2in, q1, q2, mt, incBot, mb, false, false)
+ double mt, bool incBot, double mb, double vev){
+ return j_h_j(p1out, p1in, p2out, p2in, q1, q2, mt, incBot, mb, vev, false, false)
* K_g(p2out,p2in)/HEJ::C_A * K_g(p1out,p1in)/HEJ::C_A;
}
//@}
namespace {
//@{
/// @brief Higgs vertex contracted with one current
CCurrent jH(HLV pout, bool helout, HLV pin,
bool helin, HLV q1, HLV q2,
- double mt, bool incBot, double mb)
+ double mt, bool incBot, double mb, double vev)
{
CCurrent j2 = joi(pout,helout,pin,helin);
CCurrent jq2(q2.e(),q2.px(),q2.py(),q2.pz());
if(mt == infinity)
- return ((q1.dot(q2))*j2 - j2.dot(q1)*jq2)/(3*M_PI*HEJ::vev);
+ return ((q1.dot(q2))*j2 - j2.dot(q1)*jq2)/(3*M_PI*vev);
else
{
if(incBot)
- return (-16.*M_PI*mb*mb/HEJ::vev*j2.dot(q1)*jq2*A1(-q1,q2,mb)
- -16.*M_PI*mb*mb/HEJ::vev*j2*A2(-q1,q2,mb))
- + (-16.*M_PI*mt*mt/HEJ::vev*j2.dot(q1)*jq2*A1(-q1,q2,mt)
- -16.*M_PI*mt*mt/HEJ::vev*j2*A2(-q1,q2,mt));
+ return (-16.*M_PI*mb*mb/vev*j2.dot(q1)*jq2*A1(-q1,q2,mb)
+ -16.*M_PI*mb*mb/vev*j2*A2(-q1,q2,mb))
+ + (-16.*M_PI*mt*mt/vev*j2.dot(q1)*jq2*A1(-q1,q2,mt)
+ -16.*M_PI*mt*mt/vev*j2*A2(-q1,q2,mt));
else
- return (-16.*M_PI*mt*mt/HEJ::vev*j2.dot(q1)*jq2*A1(-q1,q2,mt)
- -16.*M_PI*mt*mt/HEJ::vev*j2*A2(-q1,q2,mt));
+ return (-16.*M_PI*mt*mt/vev*j2.dot(q1)*jq2*A1(-q1,q2,mt)
+ -16.*M_PI*mt*mt/vev*j2*A2(-q1,q2,mt));
}
}
//@}
//@{
/**
* @brief Higgs+Jets Unordered Contributions, function to handle all incoming types.
* @param pg Unordered Gluon momenta
* @param p1out Outgoing Particle 1. (W emission)
* @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 q1 t-channel momenta into higgs vertex
* @param q2 t-channel momenta out of higgs vertex
* @param mt top mass (inf or value)
* @param incBot Bool, to include bottom mass (true) or not (false)?
* @param mb bottom mass (value)
* @param aqlineb Bool. Is Backwards quark line an anti-quark line?
* @param aqlinef Bool. Is Forwards quark line an anti-quark line?
*
* Calculates j_{uno}^\mu H j_\mu. Unordered with higgs vertex
* somewhere in the FKL chain. Handles all possible incoming states.
*/
double juno_h_j(HLV pg, HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV qH1, HLV qH2,
- double mt, bool incBot, double mb, bool aqlineb
+ double mt, bool incBot, double mb, double vev, bool aqlineb
){
// This construction is taking rapidity order: pg > p1out >> p2out
HLV q1=p1in-p1out; // Top End
HLV q2=-(p2in-p2out); // Bottom End
HLV qg=p1in-p1out-pg; // Extra bit post-gluon
// Note <p1|eps|pa> current split into two by gauge choice.
// See James C's Thesis (p72). <p1|eps|pa> -> <p1|pg><pg|pa>
CCurrent mj1p=joi(p1out,!aqlineb, p1in,!aqlineb);
CCurrent mj1m=joi(p1out, aqlineb, p1in, aqlineb);
CCurrent jgap=joi(pg, !aqlineb, p1in,!aqlineb);
CCurrent jgam=joi(pg, aqlineb, p1in, aqlineb);
// Note for function joo(): <p1+|pg+> = <pg-|p1->.
CCurrent j2gp=joo(p1out, !aqlineb, pg, !aqlineb);
CCurrent j2gm=joo(p1out, aqlineb, pg, aqlineb);
- CCurrent mjH2p=jH(p2out, true,p2in, true,qH1,qH2,mt,incBot,mb);
- CCurrent mjH2m=jH(p2out,false,p2in,false,qH1,qH2,mt,incBot,mb);
+ CCurrent mjH2p=jH(p2out, true,p2in, true,qH1,qH2,mt,incBot,mb, vev);
+ CCurrent mjH2m=jH(p2out,false,p2in,false,qH1,qH2,mt,incBot,mb, vev);
// Dot products of these which occur again and again
COM MHmp=mj1m.dot(mjH2p);
COM MHmm=mj1m.dot(mjH2m);
COM MHpp=mj1p.dot(mjH2p);
COM MHpm=mj1p.dot(mjH2m);
CCurrent p2o(p2out), p2i(p2in), p1o(p1out), p1i(p1in), qsum(q1+qg);
CCurrent Lmm=(qsum*(MHmm) + (-2.*mjH2m.dot(pg))*mj1m + 2.*mj1m.dot(pg)*mjH2m
+ ( p2o/pg.dot(p2out) + p2i/pg.dot(p2in) )*( qg.m2()*MHmm/2.) )/q1.m2();
CCurrent Lmp=(qsum*(MHmp) + (-2.*mjH2p.dot(pg))*mj1m + 2.*mj1m.dot(pg)*mjH2p
+ ( p2o/pg.dot(p2out) + p2i/pg.dot(p2in) )*( qg.m2()*MHmp/2.) )/q1.m2();
CCurrent Lpm=(qsum*(MHpm) + (-2.*mjH2m.dot(pg))*mj1p + 2.*mj1p.dot(pg)*mjH2m
+ ( p2o/pg.dot(p2out) + p2i/pg.dot(p2in) )*( qg.m2()*MHpm/2.) )/q1.m2();
CCurrent Lpp=(qsum*(MHpp) + (-2.*mjH2p.dot(pg))*mj1p + 2.*mj1p.dot(pg)*mjH2p
+ ( p2o/pg.dot(p2out) + p2i/pg.dot(p2in) )*( qg.m2()*MHpp/2.) )/q1.m2();
CCurrent U1mm=(jgam.dot(mjH2m)*j2gm+2.*p1o*MHmm)/(p1out+pg).m2();
CCurrent U1mp=(jgam.dot(mjH2p)*j2gm+2.*p1o*MHmp)/(p1out+pg).m2();
CCurrent U1pm=(jgap.dot(mjH2m)*j2gp+2.*p1o*MHpm)/(p1out+pg).m2();
CCurrent U1pp=(jgap.dot(mjH2p)*j2gp+2.*p1o*MHpp)/(p1out+pg).m2();
CCurrent U2mm=((-1.)*j2gm.dot(mjH2m)*jgam+2.*p1i*MHmm)/(p1in-pg).m2();
CCurrent U2mp=((-1.)*j2gm.dot(mjH2p)*jgam+2.*p1i*MHmp)/(p1in-pg).m2();
CCurrent U2pm=((-1.)*j2gp.dot(mjH2m)*jgap+2.*p1i*MHpm)/(p1in-pg).m2();
CCurrent U2pp=((-1.)*j2gp.dot(mjH2p)*jgap+2.*p1i*MHpp)/(p1in-pg).m2();
constexpr double cf=HEJ::C_F;
double amm=cf*(2.*vre(Lmm-U1mm,Lmm+U2mm))+2.*cf*cf/3.*vabs2(U1mm+U2mm);
double amp=cf*(2.*vre(Lmp-U1mp,Lmp+U2mp))+2.*cf*cf/3.*vabs2(U1mp+U2mp);
double apm=cf*(2.*vre(Lpm-U1pm,Lpm+U2pm))+2.*cf*cf/3.*vabs2(U1pm+U2pm);
double app=cf*(2.*vre(Lpp-U1pp,Lpp+U2pp))+2.*cf*cf/3.*vabs2(U1pp+U2pp);
double ampsq=-(amm+amp+apm+app)/(q2.m2()*qH2.m2());
// Now add the t-channels for the Higgs
ampsq/=qH1.m2()*qg.m2();
ampsq/=16.;
// Factor of (Cf/Ca) for each quark to match ME_H_qQ.
ampsq*=HEJ::C_F*HEJ::C_F/HEJ::C_A/HEJ::C_A;
return ampsq;
}
} // namespace anonymous
double ME_H_unob_qQ(HLV pg, HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV qH1,
- HLV qH2, double mt, bool incBot, double mb){
- return juno_h_j(pg, p1out, p1in, p2out, p2in, qH1, qH2, mt, incBot, mb, false);
+ HLV qH2, double mt, bool incBot, double mb, double vev){
+ return juno_h_j(pg, p1out, p1in, p2out, p2in, qH1, qH2, mt, incBot, mb, vev, false);
}
double ME_H_unob_qbarQ(HLV pg, HLV p1out, HLV p1in, HLV p2out, HLV p2in,
- HLV qH1, HLV qH2, double mt, bool incBot, double mb){
- return juno_h_j(pg, p1out, p1in, p2out, p2in, qH1, qH2, mt, incBot, mb, true);
+ HLV qH1, HLV qH2, double mt, bool incBot, double mb, double vev){
+ return juno_h_j(pg, p1out, p1in, p2out, p2in, qH1, qH2, mt, incBot, mb, vev, true);
}
double ME_H_unob_qQbar(HLV pg, HLV p1out, HLV p1in, HLV p2out, HLV p2in,
- HLV qH1, HLV qH2, double mt, bool incBot, double mb){
- return juno_h_j(pg, p1out, p1in, p2out, p2in, qH1, qH2, mt, incBot, mb, false);
+ HLV qH1, HLV qH2, double mt, bool incBot, double mb, double vev){
+ return juno_h_j(pg, p1out, p1in, p2out, p2in, qH1, qH2, mt, incBot, mb, vev, false);
}
double ME_H_unob_qbarQbar(HLV pg, HLV p1out, HLV p1in, HLV p2out, HLV p2in,
- HLV qH1, HLV qH2, double mt, bool incBot, double mb){
- return juno_h_j(pg, p1out, p1in, p2out, p2in, qH1, qH2, mt, incBot, mb, true);
+ HLV qH1, HLV qH2, double mt, bool incBot, double mb, double vev){
+ return juno_h_j(pg, p1out, p1in, p2out, p2in, qH1, qH2, mt, incBot, mb, vev, true);
}
double ME_H_unob_gQ(HLV pg, HLV p1out, HLV p1in, HLV p2out, HLV p2in,
- HLV qH1, HLV qH2, double mt, bool incBot, double mb){
- return juno_h_j(pg, p1out, p1in, p2out, p2in, qH1, qH2, mt, incBot, mb, false)*K_g(p2out,p2in)/HEJ::C_F;
+ HLV qH1, HLV qH2, double mt, bool incBot, double mb, double vev){
+ return juno_h_j(pg, p1out, p1in, p2out, p2in, qH1, qH2, mt, incBot, mb, vev, false)*K_g(p2out,p2in)/HEJ::C_F;
}
double ME_H_unob_gQbar(HLV pg, HLV p1out, HLV p1in, HLV p2out, HLV p2in,
- HLV qH1, HLV qH2, double mt, bool incBot, double mb){
- return juno_h_j(pg, p1out, p1in, p2out, p2in, qH1, qH2, mt, incBot, mb, true)*K_g(p2out,p2in)/HEJ::C_F;
+ HLV qH1, HLV qH2, double mt, bool incBot, double mb, double vev){
+ return juno_h_j(pg, p1out, p1in, p2out, p2in, qH1, qH2, mt, incBot, mb, vev, true)*K_g(p2out,p2in)/HEJ::C_F;
}
//@}
// Begin finite mass stuff
#ifdef HEJ_BUILD_WITH_QCDLOOP
namespace {
// All the stuff needed for the box functions in qg->qgH now...
COM E1(HLV k1, HLV k2, HLV kh, double mq){
HLV q2=-(k1+k2+kh);
double Delta, Sigma, S1, S2, s12, s34;
S1 = 2.*k1.dot(q2);
S2 = 2.*k2.dot(q2);
s12 = 2.*k1.dot(k2);
s34 = q2.m2();
Delta = s12*s34 - S1*S2;
Sigma = 4.*s12*s34 - pow(S1+S2,2);
return looprwfactor*(-s12*D0DD(k2, k1, q2, mq)*(1 - 8.*mq*mq/s12 + S2/(2.*s12) +
S2*(s12 - 8.*mq*mq)*(s34 + S1)/(2.*s12*Delta) +
2.*(s34 + S1)*(s34 + S1)/Delta +
S2*pow((s34 + S1),3)/Delta/Delta) - ((s12 + S2)*C0DD(k2,
k1 + q2, mq) -
s12*C0DD(k1, k2, mq) + (S1 - S2)*C0DD(k1 + k2, q2, mq) -
S1*C0DD(k1, q2,
mq))*(S2*(s12 - 4.*mq*mq)/(2.*s12*Delta) +
2.*(s34 + S1)/Delta +
S2*pow((s34 + S1),2)/Delta/Delta) + (C0DD(k1, q2, mq) -
C0DD(k1 + k2, q2, mq))*(1. - 4.*mq*mq/s12) -
C0DD(k1 + k2, q2, mq)*2.*s34/
S1 - (B0DD(k1 + q2, mq) -
B0DD(k1 + k2 + q2, mq))*2.*s34*(s34 +
S1)/(S1*Delta) + (B0DD(q2, mq) -
B0DD(k1 + k2 + q2, mq) +
s12*C0DD(k1 + k2, q2,
mq))*(2.*s34*(s34 +
S1)*(S1 - S2)/(Delta*Sigma) +
2.*s34*(s34 + S1)/(S1*Delta)) + (B0DD(k1 + k2, mq) -
B0DD(k1 + k2 + q2,
mq) - (s34 + S1 + S2)*C0DD(k1 + k2, q2, mq))*2.*(s34 +
S1)*(2.*s12*s34 -
S2*(S1 + S2))/(Delta*Sigma));
}
COM F1(HLV k1, HLV k2, HLV kh, double mq){
HLV q2 = -(k1+k2+kh);
double Delta, Sigma, S1, S2, s12, s34;
S1 = 2.*k1.dot(q2);
S2 = 2.*k2.dot(q2);
s12 = 2.*k1.dot(k2);
s34 = q2.m2();
Delta = s12*s34 - S1*S2;
Sigma = 4.*s12*s34 - pow(S1+S2,2);
return looprwfactor*(-S2*D0DD(k1, k2, q2,
mq)*(0.5 - (s12 - 8.*mq*mq)*(s34 + S2)/(2.*Delta) -
s12*pow((s34 + S2),3)/Delta/Delta) + ((s12 + S1)*C0DD(k1,
k2 + q2, mq) -
s12*C0DD(k1, k2, mq) - (S1 - S2)*C0DD(k1 + k2, q2, mq) -
S2*C0DD(k2, q2,
mq))*(S2*(s12 - 4.*mq*mq)/(2.*s12*Delta) +
S2*pow((s34 + S2),2)/Delta/Delta)
- (C0DD(k1 + k2, q2, mq) - C0DD(k1, k2 + q2, mq))*(1. - 4.*mq*mq/s12)
- C0DD(k1, k2 + q2, mq) + (B0DD(k2 + q2, mq) -
B0DD(k1 + k2 + q2,
mq))*2.*pow((s34 + S2),2)/((s12 + S1)*Delta) - (B0DD(
q2, mq) - B0DD(k1 + k2 + q2, mq) +
s12*C0DD(k1 + k2, q2, mq))*2.*s34*(s34 +
S2)*(S2 - S1)/(Delta*Sigma) + (B0DD(
k1 + k2, mq) -
B0DD(k1 + k2 + q2,
mq) - (s34 + S1 + S2)*C0DD(k1 + k2, q2, mq))*2.*(s34 +
S2)*(2.*s12*s34 -
S2*(S1 + S2))/(Delta*Sigma));
}
COM G1(HLV k1, HLV k2, HLV kh, double mq){
HLV q2 = -(k1+k2+kh);
double Delta, S1, S2, s12, s34;
S1 = 2.*k1.dot(q2);
S2 = 2.*k2.dot(q2);
s12 = 2.*k1.dot(k2);
s34 = q2.m2();
Delta = s12*s34 - S1*S2;
return looprwfactor*(S2*D0DD(k1, q2, k2,
mq)*(Delta/s12/s12 - 4.*mq*mq/s12) -
S2*((s12 + S1)*C0DD(k1, k2 + q2, mq) -
S1*C0DD(k1, q2, mq))*(1./
s12/s12 - (s12 - 4.*mq*mq)/(2.*s12*Delta)) -
S2*((s12 + S2)*C0DD(k1 + q2, k2, mq) -
S2*C0DD(k2, q2, mq))*(1./
s12/s12 + (s12 - 4.*mq*mq)/(2.*s12*Delta)) -
C0DD(k1, q2, mq) - (C0DD(k1, k2 + q2, mq) -
C0DD(k1, q2, mq))*4.*mq*mq/
s12 + (B0DD(k1 + q2, mq) - B0DD(k1 + k2 + q2, mq))*2./
s12 + (B0DD(k1 + q2, mq) -
B0DD(q2, mq))*2.*s34/(s12*S1) + (B0DD(k2 + q2, mq) -
B0DD(k1 + k2 + q2, mq))*2.*(s34 + S2)/(s12*(s12 + S1)));
}
COM E4(HLV k1, HLV k2, HLV kh, double mq){
HLV q2 = -(k1+k2+kh);
double Delta, Sigma, S1, S2, s12, s34;
S1 = 2.*k1.dot(q2);
S2 = 2.*k2.dot(q2);
s12 = 2.*k1.dot(k2);
s34 = q2.m2();
Delta = s12*s34 - S1*S2;
Sigma = 4.*s12*s34 - pow(S1+S2,2);
return looprwfactor* (-s12*D0DD(k2, k1, q2,
mq)*(0.5 - (S1 - 8.*mq*mq)*(s34 + S1)/(2.*Delta) -
s12*pow((s34 + S1),3)/Delta/Delta) + ((s12 + S2)*C0DD(k2,
k1 + q2, mq) -
s12*C0DD(k1, k2, mq) + (S1 - S2)*C0DD(k1 + k2, q2, mq) -
S1*C0DD(k1, q2, mq))*((S1 - 4.*mq*mq)/(2.*Delta) +
s12*pow((s34 + S1),2)/Delta/Delta) -
C0DD(k1 + k2, q2, mq) + (B0DD(k1 + q2, mq) -
B0DD(k1 + k2 + q2, mq))*(2.*s34/Delta +
2.*s12*(s34 + S1)/((s12 + S2)*Delta)) - (B0DD(
q2, mq) - B0DD(k1 + k2 + q2, mq) +
s12*C0DD(k1 + k2, q2,
mq))*((2.*s34*(2.*s12*s34 - S2*(S1 + S2) +
s12*(S1 - S2)))/(Delta*Sigma)) + (B0DD(k1 + k2, mq) -
B0DD(k1 + k2 + q2, mq) - (s34 + S1 + S2)*C0DD(k1 + k2, q2, mq))
*((2.*s12*(2.*s12*s34 - S1*(S1 + S2) + s34*(S2 - S1)))/(Delta*Sigma)));
}
COM F4(HLV k1, HLV k2, HLV kh, double mq){
HLV q2 = -(k1+k2+kh);
double Delta, Sigma, S1, S2, s12, s34;
S1 = 2.*k1.dot(q2);
S2 = 2.*k2.dot(q2);
s12 = 2.*k1.dot(k2);
s34 = q2.m2();
Delta = s12*s34 - S1*S2;
Sigma = 4.*s12*s34 - pow(S1+S2,2);
return looprwfactor* (-s12*D0DD(k1, k2, q2,
mq)*(0.5 + (S1 - 8.*mq*mq)*(s34 + S2)/(2.*Delta) +
s12*pow((s34 + S2),3)/Delta/Delta) - ((s12 + S1)*C0DD(k1,
k2 + q2, mq) -
s12*C0DD(k1, k2, mq) - (S1 - S2)*C0DD(k1 + k2, q2, mq) -
S2*C0DD(k2, q2, mq))*((S1 - 4.*mq*mq)/(2.*Delta) +
s12*pow((s34 + S2),2)/Delta/Delta) -
C0DD(k1 + k2, q2, mq) - (B0DD(k2 + q2, mq) -
B0DD(k1 + k2 + q2, mq))*2.*(s34 +
S2)/Delta + (B0DD(q2, mq) -
B0DD(k1 + k2 + q2, mq) +
s12*C0DD(k1 + k2, q2, mq))*2.*s34*(2.*s12*s34 -
S1*(S1 + S2) +
s12*(S2 - S1))/(Delta*Sigma) - (B0DD(k1 + k2, mq) -
B0DD(k1 + k2 + q2, mq) - (s34 + S1 + S2)*C0DD(k1 + k2, q2, mq))
*(2.*s12*(2.*s12*s34 - S2*(S1 + S2) + s34*(S1 - S2))/(Delta*Sigma)));
}
COM G4(HLV k1, HLV k2, HLV kh, double mq){
HLV q2 = -(k1+k2+kh);
double Delta, S1, S2, s12, s34;
S1 = 2.*k1.dot(q2);
S2 = 2.*k2.dot(q2);
s12 = 2.*k1.dot(k2);
s34 = q2.m2();
Delta = s12*s34 - S1*S2;
return looprwfactor* (-D0DD(k1, q2, k2,
mq)*(Delta/s12 + (s12 + S1)/2. -
4.*mq*mq) + ((s12 + S1)*C0DD(k1, k2 + q2, mq) -
S1*C0DD(k1, q2, mq))*(1./
s12 - (S1 - 4.*mq*mq)/(2.*Delta)) + ((s12 + S2)*C0DD(
k1 + q2, k2, mq) -
S2*C0DD(k2, q2, mq))*(1./
s12 + (S1 - 4.*mq*mq)/(2.*Delta)) + (B0DD(
k1 + k2 + q2, mq) -
B0DD(k1 + q2, mq))*2./(s12 + S2));
}
COM E10(HLV k1, HLV k2, HLV kh, double mq){
HLV q2 = -(k1+k2+kh);
double Delta, Sigma, S1, S2, s12, s34;
S1 = 2.*k1.dot(q2);
S2 = 2.*k2.dot(q2);
s12 = 2.*k1.dot(k2);
s34 = q2.m2();
Delta = s12*s34 - S1*S2;
Sigma = 4.*s12*s34 - pow(S1+S2,2);
return looprwfactor*(-s12*D0DD(k2, k1, q2, mq)*((s34 + S1)/Delta +
12.*mq*mq*S1*(s34 + S1)/Delta/Delta -
4.*s12*S1*pow((s34 + S1),3)/Delta/Delta/Delta) - ((s12 + S2)*C0DD(k2, k1 + q2, mq) -
s12*C0DD(k1, k2, mq) + (S1 - S2)*C0DD(k1 + k2, q2, mq) -
S1*C0DD(k1, q2, mq))*(1./Delta +
4.*mq*mq*S1/Delta/Delta -
4.*s12*S1*pow((s34 + S1),2)/Delta/Delta/Delta) +
C0DD(k1 + k2, q2, mq)*(4.*s12*s34*(S1 - S2)/(Delta*Sigma) -
4.*(s12 -
2.*mq*mq)*(2.*s12*s34 -
S1*(S1 + S2))/(Delta*Sigma)) + (B0DD(k1 + q2, mq) -
B0DD(k1 + k2 + q2, mq))*(4.*(s34 + S1)/((s12 + S2)*Delta) +
8.*S1*(s34 + S1)/Delta/Delta) + (B0DD(q2, mq) -
B0DD(k1 + k2 + q2, mq) +
s12*C0DD(k1 + k2, q2, mq))*(12.*s34*(2.*s12 + S1 +
S2)*(2.*s12*s34 -
S1*(S1 + S2))/(Delta*Sigma*Sigma) -
4.*s34*(4.*s12 + 3.*S1 +
S2)/(Delta*Sigma) +
8.*s12*s34*(s34*(s12 + S2) -
S1*(s34 +
S1))/(Delta*Delta*Sigma)) + (B0DD(k1 + k2, mq) -
B0DD(k1 + k2 + q2, mq) - (s34 + S1 + S2)*C0DD(k1 + k2, q2,
mq))*(12.*s12*(2.*s34 + S1 +
S2)*(2.*s12*s34 -
S1*(S1 + S2))/(Delta*Sigma*Sigma) +
8.*s12*S1*(s34*(s12 + S2) -
S1*(s34 +
S1))/(Delta*Delta*Sigma))) + (COM(0.,1.)/(4.*M_PI*M_PI))*((2.*s12*s34 -
S1*(S1 + S2))/(Delta*Sigma));
}
COM F10(HLV k1, HLV k2, HLV kh, double mq){
HLV q2 = -(k1+k2+kh);
double Delta, Sigma, S1, S2, s12, s34;
S1 = 2.*k1.dot(q2);
S2 = 2.*k2.dot(q2);
s12 = 2.*k1.dot(k2);
s34 = q2.m2();
Delta = s12*s34 - S1*S2;
Sigma = 4.*s12*s34 - pow(S1+S2,2);
return looprwfactor* (s12*D0DD(k1, k2, q2,
mq)*((s34 + S2)/Delta - 4.*mq*mq/Delta +
12.*mq*mq*s34*(s12 + S1)/Delta/Delta -
4.*s12*pow((s34 + S2),2)/Delta/Delta -
4.*s12*S1*pow((s34 + S2),3)/Delta/Delta/Delta) + ((s12 + S1)*C0DD(k1, k2 + q2, mq) -
s12*C0DD(k1, k2, mq) - (S1 - S2)*C0DD(k1 + k2, q2, mq) -
S2*C0DD(k2, q2, mq))*(1./Delta +
4.*mq*mq*S1/Delta/Delta -
4.*s12*(s34 + S2)/Delta/Delta -
4.*s12*S1*pow((s34 + S2),2)/Delta/Delta/Delta) -
C0DD(k1 + k2, q2, mq)*(4.*s12*s34/(S2*Delta) +
4.*s12*s34*(S2 - S1)/(Delta*Sigma) +
4.*(s12 -
2.*mq*mq)*(2.*s12*s34 -
S1*(S1 + S2))/(Delta*Sigma)) - (B0DD(
k2 + q2, mq) -
B0DD(k1 + k2 + q2, mq))*(4.*s34/(S2*Delta) +
8.*s34*(s12 + S1)/Delta/Delta) - (B0DD(q2, mq) -
B0DD(k1 + k2 + q2, mq) +
s12*C0DD(k1 + k2, q2,
mq))*(-12*s34*(2*s12 + S1 +
S2)*(2.*s12*s34 -
S1*(S1 + S2))/(Delta*Sigma*Sigma) -
4.*s12*s34*s34/(S2*Delta*Delta) +
4.*s34*S1/(Delta*Sigma) -
4.*s34*(s12*s34*(2.*s12 + S2) -
S1*S1*(2.*s12 +
S1))/(Delta*Delta*Sigma)) - (B0DD(k1 + k2, mq) -
B0DD(k1 + k2 + q2, mq) - (s34 + S1 + S2)*C0DD(k1 + k2, q2, mq))*(-12.*s12*(2.*s34 + S1 +
S2)*(2.*s12*s34 -
S1*(S1 + S2))/(Delta*Sigma*Sigma) +
8.*s12*(2.*s34 + S1)/(Delta*Sigma) -
8.*s12*s34*(2.*s12*s34 - S1*(S1 + S2) +
s12*(S2 -
S1))/(Delta*Delta*Sigma))) + (COM(0.,1.)/(4.*M_PI*M_PI))*((2.*s12*s34 -
S1*(S1 + S2))/(Delta*Sigma));
}
COM G10(HLV k1, HLV k2, HLV kh, double mq){
HLV q2 = -(k1+k2+kh);
double Delta, S1, S2, s12, s34;
S1 = 2.*k1.dot(q2);
S2 = 2.*k2.dot(q2);
s12 = 2.*k1.dot(k2);
s34 = q2.m2();
Delta = s12*s34 - S1*S2;
return looprwfactor* (-D0DD(k1, q2, k2, mq)*(1. +
4.*S1*mq*mq/Delta) + ((s12 + S1)*C0DD(k1,
k2 + q2, mq) -
S1*C0DD(k1, q2, mq))*(1./Delta +
4.*S1*mq*mq/Delta/Delta) - ((s12 + S2)*C0DD(k1 + q2,
k2, mq) - S2*C0DD(k2, q2, mq))*(1./Delta +
4.*S1*mq*mq/Delta/Delta) + (B0DD(k1 + k2 + q2, mq) -
B0DD(k1 + q2, mq))*4.*(s34 +
S1)/(Delta*(s12 + S2)) + (B0DD(q2, mq) -
B0DD(k2 + q2, mq))*4.*s34/(Delta*S2));
}
COM H1(HLV k1, HLV k2, HLV kh, double mq){
return E1(k1,k2,kh,mq)+F1(k1,k2,kh,mq)+G1(k1,k2,kh,mq);
}
COM H4(HLV k1, HLV k2, HLV kh, double mq){
return E4(k1,k2,kh,mq)+F4(k1,k2,kh,mq)+G4(k1,k2,kh,mq);
}
COM H10(HLV k1, HLV k2, HLV kh, double mq){
return E10(k1,k2,kh,mq)+F10(k1,k2,kh,mq)+G10(k1,k2,kh,mq);
}
COM H2(HLV k1, HLV k2, HLV kh, double mq){
return -1.*H1(k2,k1,kh,mq);
}
COM H5(HLV k1, HLV k2, HLV kh, double mq){
return -1.*H4(k2,k1,kh,mq);
}
COM H12(HLV k1, HLV k2, HLV kh, double mq){
return -1.*H10(k2,k1,kh,mq);
}
// FL and FT functions
COM FL(HLV q1, HLV q2, double mq){
HLV Q = q1 + q2;
double detQ2 = q1.m2()*q2.m2() - q1.dot(q2)*q1.dot(q2);
return -1./(2.*detQ2)*((2.-
3.*q1.m2()*q2.dot(Q)/detQ2)*(B0DD(q1, mq) -
B0DD(Q, mq)) + (2. -
3.*q2.m2()*q1.dot(Q)/detQ2)*(B0DD(q2, mq) -
B0DD(Q, mq)) - (4.*mq*mq + q1.m2() + q2.m2() +
Q.m2() - 3.*q1.m2()*q2.m2()*Q.m2()/detQ2)*C0DD(
q1, q2, mq) - 2.);
}
COM FT(HLV q1, HLV q2, double mq){
HLV Q = q1 + q2;
double detQ2 = q1.m2()*q2.m2() - q1.dot(q2)*q1.dot(q2);
return -1./(2.*detQ2)*(Q.m2()*(B0DD(q1, mq) + B0DD(q2, mq) - 2.*B0DD(Q, mq) -
2.*q1.dot(q2)*C0DD(q1, q2, mq)) + (q1.m2() -
q2.m2()) *(B0DD(q1, mq) - B0DD(q2, mq))) -
q1.dot(q2)*FL(q1, q2, mq);
}
HLV ParityFlip(HLV p){
HLV flippedVector;
flippedVector.setE(p.e());
flippedVector.setX(-p.x());
flippedVector.setY(-p.y());
flippedVector.setZ(-p.z());
return flippedVector;
}
/// @brief HC amp for qg->qgH with finite top (i.e. j^{++}_H)
void g_gH_HC(HLV pa, HLV p1,
- HLV pH, double mq, current &retAns)
+ HLV pH, double mq, double vev, current &retAns)
{
current cura1,pacur,p1cur,pHcur,conjeps1,conjepsH1,epsa,epsHa,epsHapart1,
epsHapart2,conjepsH1part1,conjepsH1part2;
COM ang1a,sqa1;
- const double F = 4.*mq*mq/HEJ::vev;
+ const double F = 4.*mq*mq/vev;
// Easier to have the whole thing as current object so I can use cdot functionality.
// Means I need to write pa,p1 as current objects
to_current(pa, pacur);
to_current(p1,p1cur);
to_current(pH,pHcur);
bool gluonforward = true;
if(pa.z() < 0)
gluonforward = false;
//HEJ gauge
jio(pa,false,p1,false,cura1);
if(gluonforward){
// sqrt(2pa_-/p1_-)*p1_perp/abs(p1_perp)
ang1a = sqrt(pa.plus()*p1.minus())*(p1.x()+COM(0.,1.)*p1.y())/p1.perp();
// sqrt(2pa_-/p1_-)*p1_perp*/abs(p1_perp)
sqa1 = sqrt(pa.plus()*p1.minus())*(p1.x()-COM(0.,1.)*p1.y())/p1.perp();
} else {
ang1a = sqrt(pa.minus()*p1.plus());
sqa1 = sqrt(pa.minus()*p1.plus());
}
const double prop = (pa-p1-pH).m2();
cmult(-1./sqrt(2)/ang1a,cura1,conjeps1);
cmult(1./sqrt(2)/sqa1,cura1,epsa);
const COM Fta = FT(-pa,pa-pH,mq)/(pa-pH).m2();
const COM Ft1 = FT(-p1-pH,p1,mq)/(p1+pH).m2();
const COM h4 = H4(p1,-pa,pH,mq);
const COM h5 = H5(p1,-pa,pH,mq);
const COM h10 = H10(p1,-pa,pH,mq);
const COM h12 = H12(p1,-pa,pH,mq);
cmult(Fta*pa.dot(pH), epsa, epsHapart1);
cmult(-1.*Fta*cdot(pHcur,epsa), pacur, epsHapart2);
cmult(Ft1*cdot(pHcur,conjeps1), p1cur, conjepsH1part1);
cmult(-Ft1*p1.dot(pH), conjeps1, conjepsH1part2);
cadd(epsHapart1, epsHapart2, epsHa);
cadd(conjepsH1part1, conjepsH1part2, conjepsH1);
const COM aH1 = cdot(pHcur, cura1);
current T1,T2,T3,T4,T5,T6,T7,T8,T9,T10;
if(gluonforward){
cmult(sqrt(2.)*sqrt(p1.plus()/pa.plus())*prop/sqa1, conjepsH1, T1);
cmult(-sqrt(2.)*sqrt(pa.plus()/p1.plus())*prop/ang1a, epsHa, T2);
}
else{
cmult(-sqrt(2.)*sqrt(p1.minus()/pa.minus())
*((p1.x()-COM(0.,1.)*p1.y())/p1.perp())*prop/sqa1, conjepsH1, T1);
cmult(sqrt(2.)*sqrt(pa.minus()/p1.minus())
*((p1.x()-COM(0.,1.)*p1.y())/p1.perp())*prop/ang1a, epsHa, T2);
}
cmult(sqrt(2.)/ang1a*aH1, epsHa, T3);
cmult(sqrt(2.)/sqa1*aH1, conjepsH1, T4);
cmult(-sqrt(2.)*Fta*pa.dot(p1)*aH1/sqa1, conjeps1, T5);
cmult(-sqrt(2.)*Ft1*pa.dot(p1)*aH1/ang1a, epsa, T6);
cmult(-aH1/sqrt(2.)/sqa1*h4*8.*COM(0.,1.)*M_PI*M_PI, conjeps1, T7);
cmult(aH1/sqrt(2.)/ang1a*h5*8.*COM(0.,1.)*M_PI*M_PI, epsa, T8);
cmult(aH1*aH1/2./ang1a/sqa1*h10*8.*COM(0.,1.)*M_PI*M_PI, pacur, T9);
cmult(-aH1*aH1/2./ang1a/sqa1*h12*8.*COM(0.,1.)*M_PI*M_PI, p1cur, T10);
current ans;
for(int i=0;i<4;i++)
{
ans[i] = T1[i]+T2[i]+T3[i]+T4[i]+T5[i]+T6[i]+T7[i]+T8[i]+T9[i]+T10[i];
}
retAns[0] = F/prop*ans[0];
retAns[1] = F/prop*ans[1];
retAns[2] = F/prop*ans[2];
retAns[3] = F/prop*ans[3];
}
/// @brief HNC amp for qg->qgH with finite top (i.e. j^{+-}_H)
- void g_gH_HNC(HLV pa, HLV p1, HLV pH, double mq, current &retAns)
+ void g_gH_HNC(HLV pa, HLV p1, HLV pH, double mq, double vev, current &retAns)
{
- const double F = 4.*mq*mq/HEJ::vev;
+ const double F = 4.*mq*mq/vev;
COM ang1a,sqa1;
current conjepsH1,epsHa,p1cur,pacur,pHcur,conjeps1,epsa,paplusp1cur,
p1minuspacur,cur1a,cura1,epsHapart1,epsHapart2,conjepsH1part1,
conjepsH1part2;
// Find here if pa, meaning the gluon, is forward or backward
bool gluonforward = true;
if(pa.z() < 0)
gluonforward = false;
jio(pa,true,p1,true,cura1);
joi(p1,true,pa,true,cur1a);
to_current(pa,pacur);
to_current(p1,p1cur);
to_current(pH,pHcur);
to_current(pa+p1,paplusp1cur);
to_current(p1-pa,p1minuspacur);
const COM aH1 = cdot(pHcur,cura1);
const COM oneHa = std::conj(aH1); // = cdot(pHcur,cur1a)
if(gluonforward){
// sqrt(2pa_-/p1_-)*p1_perp/abs(p1_perp)
ang1a = sqrt(pa.plus()*p1.minus())*(p1.x()+COM(0.,1.)*p1.y())/p1.perp();
// sqrt(2pa_-/p1_-)*p1_perp*/abs(p1_perp)
sqa1 = sqrt(pa.plus()*p1.minus())*(p1.x()-COM(0.,1.)*p1.y())/p1.perp();
}
else {
ang1a = sqrt(pa.minus()*p1.plus());
sqa1 = sqrt(pa.minus()*p1.plus());
}
const double prop = (pa-p1-pH).m2();
cmult(1./sqrt(2)/sqa1, cur1a, epsa);
cmult(-1./sqrt(2)/sqa1, cura1, conjeps1);
const COM phase = cdot(conjeps1, epsa);
const COM Fta = FT(-pa,pa-pH,mq)/(pa-pH).m2();
const COM Ft1 = FT(-p1-pH,p1,mq)/(p1+pH).m2();
const COM Falpha = FT(p1-pa,pa-p1-pH,mq);
const COM Fbeta = FL(p1-pa,pa-p1-pH,mq);
const COM h1 = H1(p1,-pa, pH, mq);
const COM h2 = H2(p1,-pa, pH, mq);
const COM h4 = H4(p1,-pa, pH, mq);
const COM h5 = H5(p1,-pa, pH, mq);
const COM h10 = H10(p1,-pa, pH, mq);
const COM h12 = H12(p1,-pa, pH, mq);
cmult(Fta*pa.dot(pH), epsa, epsHapart1);
cmult(-1.*Fta*cdot(pHcur,epsa), pacur, epsHapart2);
cmult(Ft1*cdot(pHcur,conjeps1), p1cur, conjepsH1part1);
cmult(-Ft1*p1.dot(pH), conjeps1, conjepsH1part2);
cadd(epsHapart1, epsHapart2, epsHa);
cadd(conjepsH1part1, conjepsH1part2, conjepsH1);
current T1,T2,T3,T4,T5a,T5b,T6,T7,T8a,T8b,T9,T10,T11a,
T11b,T12a,T12b,T13;
if(gluonforward){
cmult(sqrt(2.)*sqrt(p1.plus()/pa.plus())*prop/sqa1, conjepsH1, T1);
cmult(-sqrt(2.)*sqrt(pa.plus()/p1.plus())*prop/sqa1, epsHa, T2);
}
else{
cmult(-sqrt(2.)*sqrt(p1.minus()/pa.minus())*((p1.x()-COM(0.,1.)*p1.y())/p1.perp())
*prop/sqa1, conjepsH1, T1);
cmult(sqrt(2.)*sqrt(pa.minus()/p1.minus())*((p1.x()+COM(0.,1.)*p1.y())/p1.perp())
*prop/sqa1, epsHa, T2);
}
const COM boxdiagFact = 8.*COM(0.,1.)*M_PI*M_PI;
cmult(aH1*sqrt(2.)/sqa1, epsHa, T3);
cmult(oneHa*sqrt(2.)/sqa1, conjepsH1, T4);
cmult(-2.*phase*Fta*pa.dot(pH), p1cur, T5a);
cmult(2.*phase*Ft1*p1.dot(pH), pacur, T5b);
cmult(-sqrt(2.)*Fta*p1.dot(pa)*oneHa/sqa1, conjeps1, T6);
cmult(-sqrt(2.)*Ft1*pa.dot(p1)*aH1/sqa1, epsa, T7);
cmult(-boxdiagFact*phase*h2, pacur, T8a);
cmult(boxdiagFact*phase*h1, p1cur, T8b);
cmult(boxdiagFact*aH1/sqrt(2.)/sqa1*h5, epsa, T9);
cmult(-boxdiagFact*oneHa/sqrt(2.)/sqa1*h4, conjeps1, T10);
cmult(boxdiagFact*aH1*oneHa/2./sqa1/sqa1*h10, pacur, T11a);
cmult(-boxdiagFact*aH1*oneHa/2./sqa1/sqa1*h12, p1cur, T11b);
cmult(-phase/(pa-p1).m2()*Falpha*(p1-pa).dot(pa-p1-pH), paplusp1cur, T12a);
cmult(phase/(pa-p1).m2()*Falpha*(pa+p1).dot(pa-p1-pH), p1minuspacur, T12b);
cmult(-phase*Fbeta*(pa-p1-pH).m2(), paplusp1cur, T13);
current ans;
for(int i=0;i<4;i++)
{
ans[i] = T1[i]+T2[i]+T3[i]+T4[i]+T5a[i]+T5b[i]+T6[i]+T7[i]+T8a[i]+T8b[i]
+T9[i]+T10[i]+T11a[i]+T11b[i]+T12a[i]+T12b[i]+T13[i];
}
retAns[0] = F/prop*ans[0];
retAns[1] = F/prop*ans[1];
retAns[2] = F/prop*ans[2];
retAns[3] = F/prop*ans[3];
}
} // namespace anonymous
// JDC - new amplitude with Higgs emitted close to gluon with full mt effects.
// Keep usual HEJ-style function call
double ME_Houtside_gq(HLV p1out, HLV p1in, HLV p2out, HLV p2in, HLV pH,
- double mq, bool includeBottom, double mq2
+ double mq, bool includeBottom, double mq2, double vev
){
current cur2bplus,cur2bminus, cur2bplusFlip, cur2bminusFlip;
current retAns,retAnsb;
joi(p2out,true,p2in,true,cur2bplus);
joi(p2out,false,p2in,false,cur2bminus);
joi(ParityFlip(p2out),true,ParityFlip(p2in),true,cur2bplusFlip);
joi(ParityFlip(p2out),false,ParityFlip(p2in),false,cur2bminusFlip);
COM app1,app2,apm1,apm2;
COM app3, app4, apm3, apm4;
if(!includeBottom)
{
- g_gH_HC(p1in,p1out,pH,mq,retAns);
+ g_gH_HC(p1in,p1out,pH,mq,vev,retAns);
app1=cdot(retAns,cur2bplus);
app2=cdot(retAns,cur2bminus);
- g_gH_HC(ParityFlip(p1in),ParityFlip(p1out),ParityFlip(pH),mq,retAns);
+ g_gH_HC(ParityFlip(p1in),ParityFlip(p1out),ParityFlip(pH),mq,vev,retAns);
app3=cdot(retAns,cur2bplusFlip);
app4=cdot(retAns,cur2bminusFlip);
// And non-conserving bits
- g_gH_HNC(p1in,p1out,pH,mq,retAns);
+ g_gH_HNC(p1in,p1out,pH,mq,vev,retAns);
apm1=cdot(retAns,cur2bplus);
apm2=cdot(retAns,cur2bminus);
- g_gH_HNC(ParityFlip(p1in),ParityFlip(p1out),ParityFlip(pH),mq,retAns);
+ g_gH_HNC(ParityFlip(p1in),ParityFlip(p1out),ParityFlip(pH),mq,vev,retAns);
apm3=cdot(retAns,cur2bplusFlip);
apm4=cdot(retAns,cur2bminusFlip);
} else {
- g_gH_HC(p1in,p1out,pH,mq,retAns);
- g_gH_HC(p1in,p1out,pH,mq2,retAnsb);
+ g_gH_HC(p1in,p1out,pH,mq,vev,retAns);
+ g_gH_HC(p1in,p1out,pH,mq2,vev,retAnsb);
app1=cdot(retAns,cur2bplus) + cdot(retAnsb,cur2bplus);
app2=cdot(retAns,cur2bminus) + cdot(retAnsb,cur2bminus);
- g_gH_HC(ParityFlip(p1in),ParityFlip(p1out),ParityFlip(pH),mq,retAns);
- g_gH_HC(ParityFlip(p1in),ParityFlip(p1out),ParityFlip(pH),mq2,retAnsb);
+ g_gH_HC(ParityFlip(p1in),ParityFlip(p1out),ParityFlip(pH),mq,vev,retAns);
+ g_gH_HC(ParityFlip(p1in),ParityFlip(p1out),ParityFlip(pH),mq2,vev,retAnsb);
app3=cdot(retAns,cur2bplusFlip) + cdot(retAnsb,cur2bplusFlip);
app4=cdot(retAns,cur2bminusFlip) + cdot(retAnsb,cur2bminusFlip);
// And non-conserving bits
- g_gH_HNC(p1in,p1out,pH,mq,retAns);
- g_gH_HNC(p1in,p1out,pH,mq2,retAnsb);
+ g_gH_HNC(p1in,p1out,pH,mq,vev,retAns);
+ g_gH_HNC(p1in,p1out,pH,mq2,vev,retAnsb);
apm1=cdot(retAns,cur2bplus) + cdot(retAnsb,cur2bplus);
apm2=cdot(retAns,cur2bminus) + cdot(retAnsb,cur2bminus);
- g_gH_HNC(ParityFlip(p1in),ParityFlip(p1out),ParityFlip(pH),mq,retAns);
- g_gH_HNC(ParityFlip(p1in),ParityFlip(p1out),ParityFlip(pH),mq2,retAnsb);
+ g_gH_HNC(ParityFlip(p1in),ParityFlip(p1out),ParityFlip(pH),mq,vev,retAns);
+ g_gH_HNC(ParityFlip(p1in),ParityFlip(p1out),ParityFlip(pH),mq2,vev,retAnsb);
apm3=cdot(retAns,cur2bplusFlip) + cdot(retAnsb,cur2bplusFlip);
apm4=cdot(retAns,cur2bminusFlip) + cdot(retAnsb,cur2bminusFlip);
}
return abs2(app1) + abs2(app2) + abs2(app3) + abs2(app4) + abs2(apm1)
+ abs2(apm2) + abs2(apm3) + abs2(apm4);
}
#endif // HEJ_BUILD_WITH_QCDLOOP
-double C2gHgm(HLV p2, HLV p1, HLV pH)
+double C2gHgm(HLV p2, HLV p1, HLV pH, double vev)
{
- static double A=1./(3.*M_PI*HEJ::vev);
+ const double A=1./(3.*M_PI*vev);
// Implements Eq. (4.22) in hep-ph/0301013 with modifications to incoming plus momenta
double s12,p1p,p2p;
COM p1perp,p3perp,phperp;
// Determine first whether this is the case p1p\sim php>>p3p or the opposite
s12=p1.invariantMass2(-p2);
if (p2.pz()>0.) { // case considered in hep-ph/0301013
p1p=p1.plus();
p2p=p2.plus();
} else { // opposite case
p1p=p1.minus();
p2p=p2.minus();
}
p1perp=p1.px()+COM(0,1)*p1.py();
phperp=pH.px()+COM(0,1)*pH.py();
p3perp=-(p1perp+phperp);
COM temp=COM(0,1)*A/(2.*s12)*(p2p/p1p*conj(p1perp)*p3perp+p1p/p2p*p1perp*conj(p3perp));
temp=temp*conj(temp);
return temp.real();
}
-double C2gHgp(HLV p2, HLV p1, HLV pH)
+double C2gHgp(HLV p2, HLV p1, HLV pH, double vev)
{
- static double A=1./(3.*M_PI*HEJ::vev);
+ const double A=1./(3.*M_PI*vev);
// Implements Eq. (4.23) in hep-ph/0301013
double s12,php,p1p,phm;
COM p1perp,p3perp,phperp;
// Determine first whether this is the case p1p\sim php>>p3p or the opposite
s12=p1.invariantMass2(-p2);
if (p2.pz()>0.) { // case considered in hep-ph/0301013
php=pH.plus();
phm=pH.minus();
p1p=p1.plus();
} else { // opposite case
php=pH.minus();
phm=pH.plus();
p1p=p1.minus();
}
p1perp=p1.px()+COM(0,1)*p1.py();
phperp=pH.px()+COM(0,1)*pH.py();
p3perp=-(p1perp+phperp);
COM temp=-COM(0,1)*A/(2.*s12)*( conj(p1perp*p3perp)*pow(php/p1p,2)/(1.+php/p1p)
+s12*(pow(conj(phperp),2)/(pow(abs(phperp),2)+p1p*phm)
-pow(conj(p3perp)
+(1.+php/p1p)*conj(p1perp),2)/((1.+php/p1p)*(pH.m2()+2.*p1.dot(pH)))) );
temp=temp*conj(temp);
return temp.real();
}
-double C2qHqm(HLV p2, HLV p1, HLV pH)
+double C2qHqm(HLV p2, HLV p1, HLV pH, double vev)
{
- static double A=1./(3.*M_PI*HEJ::vev);
+ const double A=1./(3.*M_PI*vev);
// Implements Eq. (4.22) in hep-ph/0301013
double s12,p2p,p1p;
COM p1perp,p3perp,phperp;
// Determine first whether this is the case p1p\sim php>>p3p or the opposite
s12=p1.invariantMass2(-p2);
if (p2.pz()>0.) { // case considered in hep-ph/0301013
p2p=p2.plus();
p1p=p1.plus();
} else { // opposite case
p2p=p2.minus();
p1p=p1.minus();
}
p1perp=p1.px()+COM(0,1)*p1.py();
phperp=pH.px()+COM(0,1)*pH.py();
p3perp=-(p1perp+phperp);
COM temp=A/(2.*s12)*( sqrt(p2p/p1p)*p3perp*conj(p1perp)
+sqrt(p1p/p2p)*p1perp*conj(p3perp) );
temp=temp*conj(temp);
return temp.real();
}
diff --git a/src/MatrixElement.cc b/src/MatrixElement.cc
index c94d305..addb071 100644
--- a/src/MatrixElement.cc
+++ b/src/MatrixElement.cc
@@ -1,1502 +1,1506 @@
/**
* \authors The HEJ collaboration (see AUTHORS for details)
* \date 2019
* \copyright GPLv2 or later
*/
#include "HEJ/MatrixElement.hh"
#include <algorithm>
#include <assert.h>
#include <limits>
#include <math.h>
#include <stddef.h>
#include <unordered_map>
#include <utility>
#include "CLHEP/Vector/LorentzVector.h"
#include "HEJ/Constants.hh"
#include "HEJ/Wjets.hh"
#include "HEJ/Hjets.hh"
#include "HEJ/jets.hh"
#include "HEJ/PDG_codes.hh"
#include "HEJ/event_types.hh"
#include "HEJ/Event.hh"
#include "HEJ/exceptions.hh"
#include "HEJ/Particle.hh"
#include "HEJ/utility.hh"
namespace HEJ{
double MatrixElement::omega0(
double alpha_s, double mur,
fastjet::PseudoJet const & q_j
) const {
const double lambda = param_.regulator_lambda;
const double result = - alpha_s*N_C/M_PI*log(q_j.perp2()/(lambda*lambda));
if(! param_.log_correction) return result;
// use alpha_s(sqrt(q_j*lambda)), evolved to mur
return (
1. + alpha_s/(4.*M_PI)*beta0*log(mur*mur/(q_j.perp()*lambda))
)*result;
}
Weights MatrixElement::operator()(Event const & event) const {
return tree(event)*virtual_corrections(event);
}
Weights MatrixElement::tree(Event const & event) const {
return tree_param(event)*tree_kin(event);
}
Weights MatrixElement::tree_param(Event const & event) const {
if(! is_resummable(event.type())) {
return Weights{0., std::vector<double>(event.variations().size(), 0.)};
}
Weights result;
// only compute once for each renormalisation scale
std::unordered_map<double, double> known;
result.central = tree_param(event, event.central().mur);
known.emplace(event.central().mur, result.central);
for(auto const & var: event.variations()) {
const auto ME_it = known.find(var.mur);
if(ME_it == end(known)) {
const double wt = tree_param(event, var.mur);
result.variations.emplace_back(wt);
known.emplace(var.mur, wt);
}
else {
result.variations.emplace_back(ME_it->second);
}
}
return result;
}
Weights MatrixElement::virtual_corrections(Event const & event) const {
if(! is_resummable(event.type())) {
return Weights{0., std::vector<double>(event.variations().size(), 0.)};
}
Weights result;
// only compute once for each renormalisation scale
std::unordered_map<double, double> known;
result.central = virtual_corrections(event, event.central().mur);
known.emplace(event.central().mur, result.central);
for(auto const & var: event.variations()) {
const auto ME_it = known.find(var.mur);
if(ME_it == end(known)) {
const double wt = virtual_corrections(event, var.mur);
result.variations.emplace_back(wt);
known.emplace(var.mur, wt);
}
else {
result.variations.emplace_back(ME_it->second);
}
}
return result;
}
double MatrixElement::virtual_corrections_W(
Event const & event,
double mur,
Particle const & WBoson
) const{
auto const & in = event.incoming();
const auto partons = filter_partons(event.outgoing());
fastjet::PseudoJet const & pa = in.front().p;
#ifndef NDEBUG
fastjet::PseudoJet const & pb = in.back().p;
double const norm = (in.front().p + in.back().p).E();
#endif
assert(std::is_sorted(partons.begin(), partons.end(), rapidity_less{}));
assert(partons.size() >= 2);
assert(pa.pz() < pb.pz());
fastjet::PseudoJet q = pa - partons[0].p;
size_t first_idx = 0;
size_t last_idx = partons.size() - 1;
bool wc = true;
bool wqq = false;
// With extremal qqx or unordered gluon outside the extremal
// partons then it is not part of the FKL ladder and does not
// contribute to the virtual corrections. W emitted from the
// most backward leg must be taken into account in t-channel
if (event.type() == event_type::FKL) {
if (in[0].type != partons[0].type ){
q -= WBoson.p;
wc = false;
}
}
else if (event.type() == event_type::unob) {
q -= partons[1].p;
++first_idx;
if (in[0].type != partons[1].type ){
q -= WBoson.p;
wc = false;
}
}
else if (event.type() == event_type::qqxexb) {
q -= partons[1].p;
++first_idx;
if (abs(partons[0].type) != abs(partons[1].type)){
q -= WBoson.p;
wc = false;
}
}
if(event.type() == event_type::unof
|| event.type() == event_type::qqxexf){
--last_idx;
}
size_t first_idx_qqx = last_idx;
size_t last_idx_qqx = last_idx;
//if qqxMid event, virtual correction do not occur between
//qqx pair.
if(event.type() == event_type::qqxmid){
const auto backquark = std::find_if(
begin(partons) + 1, end(partons) - 1 ,
[](Particle const & s){ return (s.type != pid::gluon); }
);
if(backquark == end(partons) || (backquark+1)->type==pid::gluon) return 0;
if(abs(backquark->type) != abs((backquark+1)->type)) {
wqq=true;
wc=false;
}
last_idx = std::distance(begin(partons), backquark);
first_idx_qqx = last_idx+1;
}
double exponent = 0;
const double alpha_s = alpha_s_(mur);
for(size_t j = first_idx; j < last_idx; ++j){
exponent += omega0(alpha_s, mur, q)*(
partons[j+1].rapidity() - partons[j].rapidity()
);
q -=partons[j+1].p;
} // End Loop one
if (last_idx != first_idx_qqx) q -= partons[last_idx+1].p;
if (wqq) q -= WBoson.p;
for(size_t j = first_idx_qqx; j < last_idx_qqx; ++j){
exponent += omega0(alpha_s, mur, q)*(
partons[j+1].rapidity() - partons[j].rapidity()
);
q -= partons[j+1].p;
}
if (wc) q -= WBoson.p;
assert(
nearby(q, -1*pb, norm)
|| is_AWZH_boson(partons.back().type)
|| event.type() == event_type::unof
|| event.type() == event_type::qqxexf
);
return exp(exponent);
}
double MatrixElement::virtual_corrections(
Event const & event,
double mur
) const{
auto const & in = event.incoming();
auto const & out = event.outgoing();
fastjet::PseudoJet const & pa = in.front().p;
#ifndef NDEBUG
fastjet::PseudoJet const & pb = in.back().p;
double const norm = (in.front().p + in.back().p).E();
#endif
const auto AWZH_boson = std::find_if(
begin(out), end(out),
[](Particle const & p){ return is_AWZH_boson(p); }
);
if(AWZH_boson != end(out) && abs(AWZH_boson->type) == pid::Wp){
return virtual_corrections_W(event, mur, *AWZH_boson);
}
assert(std::is_sorted(out.begin(), out.end(), rapidity_less{}));
assert(out.size() >= 2);
assert(pa.pz() < pb.pz());
fastjet::PseudoJet q = pa - out[0].p;
size_t first_idx = 0;
size_t last_idx = out.size() - 1;
// if there is a Higgs boson, extremal qqx or unordered gluon
// outside the extremal partons then it is not part of the FKL
// ladder and does not contribute to the virtual corrections
if((out.front().type == pid::Higgs)
|| event.type() == event_type::unob
|| event.type() == event_type::qqxexb){
q -= out[1].p;
++first_idx;
}
if((out.back().type == pid::Higgs)
|| event.type() == event_type::unof
|| event.type() == event_type::qqxexf){
--last_idx;
}
size_t first_idx_qqx = last_idx;
size_t last_idx_qqx = last_idx;
//if qqxMid event, virtual correction do not occur between
//qqx pair.
if(event.type() == event_type::qqxmid){
const auto backquark = std::find_if(
begin(out) + 1, end(out) - 1 ,
[](Particle const & s){ return (s.type != pid::gluon && is_parton(s.type)); }
);
if(backquark == end(out) || (backquark+1)->type==pid::gluon) return 0;
last_idx = std::distance(begin(out), backquark);
first_idx_qqx = last_idx+1;
}
double exponent = 0;
const double alpha_s = alpha_s_(mur);
for(size_t j = first_idx; j < last_idx; ++j){
exponent += omega0(alpha_s, mur, q)*(
out[j+1].rapidity() - out[j].rapidity()
);
q -= out[j+1].p;
}
if (last_idx != first_idx_qqx) q -= out[last_idx+1].p;
for(size_t j = first_idx_qqx; j < last_idx_qqx; ++j){
exponent += omega0(alpha_s, mur, q)*(
out[j+1].rapidity() - out[j].rapidity()
);
q -= out[j+1].p;
}
assert(
nearby(q, -1*pb, norm)
|| out.back().type == pid::Higgs
|| event.type() == event_type::unof
|| event.type() == event_type::qqxexf
);
return exp(exponent);
}
} // namespace HEJ
namespace {
//! Lipatov vertex for partons emitted into extremal jets
double C2Lipatov(
CLHEP::HepLorentzVector const & qav,
CLHEP::HepLorentzVector const & qbv,
CLHEP::HepLorentzVector const & p1,
CLHEP::HepLorentzVector const & p2
){
CLHEP::HepLorentzVector temptrans=-(qav+qbv);
CLHEP::HepLorentzVector p5=qav-qbv;
CLHEP::HepLorentzVector CL=temptrans
+ p1*(qav.m2()/p5.dot(p1) + 2.*p5.dot(p2)/p1.dot(p2))
- p2*(qbv.m2()/p5.dot(p2) + 2.*p5.dot(p1)/p1.dot(p2));
return -CL.dot(CL);
}
//! Lipatov vertex with soft subtraction for partons emitted into extremal jets
double C2Lipatovots(
CLHEP::HepLorentzVector const & qav,
CLHEP::HepLorentzVector const & qbv,
CLHEP::HepLorentzVector const & p1,
CLHEP::HepLorentzVector const & p2,
double lambda
) {
double kperp=(qav-qbv).perp();
if (kperp>lambda)
return C2Lipatov(qav, qbv, p1, p2)/(qav.m2()*qbv.m2());
double Cls=(C2Lipatov(qav, qbv, p1, p2)/(qav.m2()*qbv.m2()));
return Cls-4./(kperp*kperp);
}
//! Lipatov vertex
double C2Lipatov( // B
CLHEP::HepLorentzVector const & qav,
CLHEP::HepLorentzVector const & qbv,
CLHEP::HepLorentzVector const & pim,
CLHEP::HepLorentzVector const & pip,
CLHEP::HepLorentzVector const & pom,
CLHEP::HepLorentzVector const & pop
){
CLHEP::HepLorentzVector temptrans=-(qav+qbv);
CLHEP::HepLorentzVector p5=qav-qbv;
CLHEP::HepLorentzVector CL=temptrans
+ qav.m2()*(1./p5.dot(pip)*pip + 1./p5.dot(pop)*pop)/2.
- qbv.m2()*(1./p5.dot(pim)*pim + 1./p5.dot(pom)*pom)/2.
+ ( pip*(p5.dot(pim)/pip.dot(pim) + p5.dot(pom)/pip.dot(pom))
+ pop*(p5.dot(pim)/pop.dot(pim) + p5.dot(pom)/pop.dot(pom))
- pim*(p5.dot(pip)/pip.dot(pim) + p5.dot(pop)/pop.dot(pim))
- pom*(p5.dot(pip)/pip.dot(pom) + p5.dot(pop)/pop.dot(pom)) )/2.;
return -CL.dot(CL);
}
//! Lipatov vertex with soft subtraction
double C2Lipatovots(
CLHEP::HepLorentzVector const & qav,
CLHEP::HepLorentzVector const & qbv,
CLHEP::HepLorentzVector const & pa,
CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & p1,
CLHEP::HepLorentzVector const & p2,
double lambda
) {
double kperp=(qav-qbv).perp();
if (kperp>lambda)
return C2Lipatov(qav, qbv, pa, pb, p1, p2)/(qav.m2()*qbv.m2());
double Cls=(C2Lipatov(qav, qbv, pa, pb, p1, p2)/(qav.m2()*qbv.m2()));
double temp=Cls-4./(kperp*kperp);
return temp;
}
/** Matrix element squared for tree-level current-current scattering
* @param aptype Particle a PDG ID
* @param bptype Particle b PDG ID
* @param pg Unordered gluon momentum
* @param pn Particle n Momentum
* @param pb Particle b Momentum
* @param p1 Particle 1 Momentum
* @param pa Particle a Momentum
* @returns ME Squared for Tree-Level Current-Current Scattering
*
* @note The unof contribution can be calculated by reversing the argument ordering.
*/
double ME_uno_current(
int aptype, int bptype,
CLHEP::HepLorentzVector const & pg,
CLHEP::HepLorentzVector const & pn,
CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & p1,
CLHEP::HepLorentzVector const & pa
){
assert(aptype!=21); // aptype cannot be gluon
if (bptype==21) {
if (aptype > 0)
return ME_unob_qg(pg,p1,pa,pn,pb);
else
return ME_unob_qbarg(pg,p1,pa,pn,pb);
}
else if (bptype<0) { // ----- || -----
if (aptype > 0)
return ME_unob_qQbar(pg,p1,pa,pn,pb);
else
return ME_unob_qbarQbar(pg,p1,pa,pn,pb);
}
else { //bptype == quark
if (aptype > 0)
return ME_unob_qQ(pg,p1,pa,pn,pb);
else
return ME_unob_qbarQ(pg,p1,pa,pn,pb);
}
}
/** Matrix element squared for tree-level current-current scattering
* @param aptype Particle a PDG ID
* @param bptype Particle b PDG ID
* @param pn Particle n Momentum
* @param pb Particle b Momentum
* @param p1 Particle 1 Momentum
* @param pa Particle a Momentum
* @returns ME Squared for Tree-Level Current-Current Scattering
*/
double ME_current(
int aptype, int bptype,
CLHEP::HepLorentzVector const & pn,
CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & p1,
CLHEP::HepLorentzVector const & pa
){
if (aptype==21&&bptype==21) {
return ME_gg(pn,pb,p1,pa);
} else if (aptype==21&&bptype!=21) {
if (bptype > 0)
return ME_qg(pn,pb,p1,pa);
else
return ME_qbarg(pn,pb,p1,pa);
}
else if (bptype==21&&aptype!=21) { // ----- || -----
if (aptype > 0)
return ME_qg(p1,pa,pn,pb);
else
return ME_qbarg(p1,pa,pn,pb);
}
else { // they are both quark
if (bptype>0) {
if (aptype>0)
return ME_qQ(pn,pb,p1,pa);
else
return ME_qQbar(pn,pb,p1,pa);
}
else {
if (aptype>0)
return ME_qQbar(p1,pa,pn,pb);
else
return ME_qbarQbar(pn,pb,p1,pa);
}
}
throw std::logic_error("unknown particle types");
}
/** Matrix element squared for tree-level current-current scattering With W+Jets
* @param aptype Particle a PDG ID
* @param bptype Particle b PDG ID
* @param pn Particle n Momentum
* @param pb Particle b Momentum
* @param p1 Particle 1 Momentum
* @param pa Particle a Momentum
* @param wc Boolean. True->W Emitted from b. Else; emitted from leg a
* @returns ME Squared for Tree-Level Current-Current Scattering
*/
double ME_W_current(
int aptype, int bptype,
CLHEP::HepLorentzVector const & pn,
CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & p1,
CLHEP::HepLorentzVector const & pa,
CLHEP::HepLorentzVector const & plbar,
CLHEP::HepLorentzVector const & pl,
bool const wc
){
// We know it cannot be gg incoming.
assert(!(aptype==21 && bptype==21));
if (aptype==21&&bptype!=21) {
if (bptype > 0)
return ME_W_qg(pn,plbar,pl,pb,p1,pa);
else
return ME_W_qbarg(pn,plbar,pl,pb,p1,pa);
}
else if (bptype==21&&aptype!=21) { // ----- || -----
if (aptype > 0)
return ME_W_qg(p1,plbar,pl,pa,pn,pb);
else
return ME_W_qbarg(p1,plbar,pl,pa,pn,pb);
}
else { // they are both quark
if (wc==true){ // emission off b, (first argument pbout)
if (bptype>0) {
if (aptype>0)
return ME_W_qQ(pn,plbar,pl,pb,p1,pa);
else
return ME_W_qQbar(pn,plbar,pl,pb,p1,pa);
}
else {
if (aptype>0)
return ME_W_qbarQ(pn,plbar,pl,pb,p1,pa);
else
return ME_W_qbarQbar(pn,plbar,pl,pb,p1,pa);
}
}
else{ // emission off a, (first argument paout)
if (aptype > 0) {
if (bptype > 0)
return ME_W_qQ(p1,plbar,pl,pa,pn,pb);
else
return ME_W_qQbar(p1,plbar,pl,pa,pn,pb);
}
else { // a is anti-quark
if (bptype > 0)
return ME_W_qbarQ(p1,plbar,pl,pa,pn,pb);
else
return ME_W_qbarQbar(p1,plbar,pl,pa,pn,pb);
}
}
}
throw std::logic_error("unknown particle types");
}
/** Matrix element squared for backwards uno tree-level current-current
* scattering With W+Jets
*
* @param aptype Particle a PDG ID
* @param bptype Particle b PDG ID
* @param pn Particle n Momentum
* @param pb Particle b Momentum
* @param p1 Particle 1 Momentum
* @param pa Particle a Momentum
* @param pg Unordered gluon momentum
* @param wc Boolean. True->W Emitted from b. Else; emitted from leg a
* @returns ME Squared for unob Tree-Level Current-Current Scattering
*
* @note The unof contribution can be calculated by reversing the argument ordering.
*/
double ME_W_uno_current(
int aptype, int bptype,
CLHEP::HepLorentzVector const & pn,
CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & p1,
CLHEP::HepLorentzVector const & pa,
CLHEP::HepLorentzVector const & pg,
CLHEP::HepLorentzVector const & plbar,
CLHEP::HepLorentzVector const & pl,
bool const wc
){
// we know they are not both gluons
if (bptype == 21 && aptype != 21) { // b gluon => W emission off a
if (aptype > 0)
return ME_Wuno_qg(p1,pa,pn,pb,pg,plbar,pl);
else
return ME_Wuno_qbarg(p1,pa,pn,pb,pg,plbar,pl);
}
else { // they are both quark
if (wc) {// emission off b, i.e. b is first current
if (bptype>0){
if (aptype>0)
return ME_W_unob_qQ(p1,pa,pn,pb,pg,plbar,pl);
else
return ME_W_unob_qQbar(p1,pa,pn,pb,pg,plbar,pl);
}
else{
if (aptype>0)
return ME_W_unob_qbarQ(p1,pa,pn,pb,pg,plbar,pl);
else
return ME_W_unob_qbarQbar(p1,pa,pn,pb,pg,plbar,pl);
}
}
else {// wc == false, emission off a, i.e. a is first current
if (aptype > 0) {
if (bptype > 0) //qq
return ME_Wuno_qQ(p1,pa,pn,pb,pg,plbar,pl);
else //qqbar
return ME_Wuno_qQbar(p1,pa,pn,pb,pg,plbar,pl);
}
else { // a is anti-quark
if (bptype > 0) //qbarq
return ME_Wuno_qbarQ(p1,pa,pn,pb,pg,plbar,pl);
else //qbarqbar
return ME_Wuno_qbarQbar(p1,pa,pn,pb,pg,plbar,pl);
}
}
}
throw std::logic_error("unknown particle types");
}
/** \brief Matrix element squared for backward qqx tree-level current-current
* scattering With W+Jets
*
* @param aptype Particle a PDG ID
* @param bptype Particle b PDG ID
* @param pa Initial state a Momentum
* @param pb Initial state b Momentum
* @param pq Final state q Momentum
* @param pqbar Final state qbar Momentum
* @param pn Final state n Momentum
* @param plbar Final state anti-lepton momentum
* @param pl Final state lepton momentum
* @param wc Boolean. True->W Emitted from b. Else; emitted from leg a
* @returns ME Squared for qqxb Tree-Level Current-Current Scattering
*
* @note calculate forwards qqx contribution by reversing argument ordering.
*/
double ME_W_qqx_current(
int aptype, int bptype,
CLHEP::HepLorentzVector const & pa,
CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & pq,
CLHEP::HepLorentzVector const & pqbar,
CLHEP::HepLorentzVector const & pn,
CLHEP::HepLorentzVector const & plbar,
CLHEP::HepLorentzVector const & pl,
bool const swap_q_qx, bool const wc
){
// CAM factors for the qqx amps, and qqbar ordering (default, qbar extremal)
// const bool swap_q_qx= pqbar.rapidity() > pq.rapidity();
const double CFbackward = K_g( (swap_q_qx)?pq:pqbar ,pa)/HEJ::C_F;
// With qqbar we could have 2 incoming gluons and W Emission
if (aptype==21&&bptype==21) {//a gluon, b gluon gg->qqbarWg
// This will be a wqqx emission as there is no other possible W Emission Site.
if (swap_q_qx)
return ME_WExqqx_qqbarg(pa, pqbar, plbar, pl, pq, pn, pb)*CFbackward;
else
return ME_WExqqx_qbarqg(pa, pq, plbar, pl, pqbar, pn, pb)*CFbackward;
}
else if (aptype==21&&bptype!=21 ) {//a gluon => W emission off b leg or qqx
if (!wc){ // W Emitted from backwards qqx
if (swap_q_qx)
return ME_WExqqx_qqbarQ(pa, pqbar, plbar, pl, pq, pn, pb)*CFbackward;
else
return ME_WExqqx_qbarqQ(pa, pq, plbar, pl, pqbar, pn, pb)*CFbackward;
}
else { // W Must be emitted from forwards leg.
if (swap_q_qx)
return ME_W_Exqqx_QQq(pb, pa, pn, pqbar, pq, plbar, pl, bptype<0)*CFbackward;
else
return ME_W_Exqqx_QQq(pb, pa, pn, pq, pqbar, plbar, pl, bptype<0)*CFbackward;
}
}
throw std::logic_error("Incompatible incoming particle types with qqxb");
}
/* \brief Matrix element squared for central qqx tree-level current-current
* scattering With W+Jets
*
* @param aptype Particle a PDG ID
* @param bptype Particle b PDG ID
* @param nabove Number of gluons emitted before central qqxpair
* @param nbelow Number of gluons emitted after central qqxpair
* @param pa Initial state a Momentum
* @param pb Initial state b Momentum\
* @param pq Final state qbar Momentum
* @param pqbar Final state q Momentum
* @param partons Vector of all outgoing partons
* @param plbar Final state anti-lepton momentum
* @param pl Final state lepton momentum
* @param wqq Boolean. True siginfies W boson is emitted from Central qqx
* @param wc Boolean. wc=true signifies w boson emitted from leg b; if wqq=false.
* @returns ME Squared for qqxmid Tree-Level Current-Current Scattering
*/
double ME_W_qqxmid_current(
int aptype, int bptype,
int nabove, int nbelow,
CLHEP::HepLorentzVector const & pa,
CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & pq,
CLHEP::HepLorentzVector const & pqbar,
std::vector<HLV> const & partons,
CLHEP::HepLorentzVector const & plbar,
CLHEP::HepLorentzVector const & pl,
bool const wqq, bool const wc
){
// CAM factors for the qqx amps, and qqbar ordering (default, pq backwards)
const bool swap_q_qx=pqbar.rapidity() < pq.rapidity();
double wt=1.;
if (aptype==21) wt*=K_g(partons.front(),pa)/HEJ::C_F;
if (bptype==21) wt*=K_g(partons.back(),pb)/HEJ::C_F;
if(wqq)
return wt*ME_WCenqqx_qq(pa, pb, pl, plbar, partons,(bptype<0),(aptype<0),
swap_q_qx, nabove);
return wt*ME_W_Cenqqx_qq(pa, pb, pl, plbar, partons, (bptype<0), (aptype<0),
swap_q_qx, nabove, nbelow, wc);
}
/** \brief Matrix element squared for tree-level current-current scattering with Higgs
* @param aptype Particle a PDG ID
* @param bptype Particle b PDG ID
* @param pn Particle n Momentum
* @param pb Particle b Momentum
* @param p1 Particle 1 Momentum
* @param pa Particle a Momentum
* @param qH t-channel momentum before Higgs
* @param qHp1 t-channel momentum after Higgs
* @returns ME Squared for Tree-Level Current-Current Scattering with Higgs
*/
double ME_Higgs_current(
int aptype, int bptype,
CLHEP::HepLorentzVector const & pn,
CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & p1,
CLHEP::HepLorentzVector const & pa,
CLHEP::HepLorentzVector const & qH, // t-channel momentum before Higgs
CLHEP::HepLorentzVector const & qHp1, // t-channel momentum after Higgs
- double mt, bool include_bottom, double mb
+ double mt, bool include_bottom, double mb, double vev
){
if (aptype==21&&bptype==21) // gg initial state
- return ME_H_gg(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb);
+ return ME_H_gg(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb,vev);
else if (aptype==21&&bptype!=21) {
if (bptype > 0)
- return ME_H_qg(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb)*4./9.;
+ return ME_H_qg(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb,vev)*4./9.;
else
- return ME_H_qbarg(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb)*4./9.;
+ return ME_H_qbarg(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb,vev)*4./9.;
}
else if (bptype==21&&aptype!=21) {
if (aptype > 0)
- return ME_H_qg(p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb)*4./9.;
+ return ME_H_qg(p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev)*4./9.;
else
- return ME_H_qbarg(p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb)*4./9.;
+ return ME_H_qbarg(p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev)*4./9.;
}
else { // they are both quark
if (bptype>0) {
if (aptype>0)
- return ME_H_qQ(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb)*4.*4./(9.*9.);
+ return ME_H_qQ(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb,vev)*4.*4./(9.*9.);
else
- return ME_H_qQbar(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb)*4.*4./(9.*9.);
+ return ME_H_qQbar(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb,vev)*4.*4./(9.*9.);
}
else {
if (aptype>0)
- return ME_H_qQbar(p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb)*4.*4./(9.*9.);
+ return ME_H_qQbar(p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev)*4.*4./(9.*9.);
else
- return ME_H_qbarQbar(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb)*4.*4./(9.*9.);
+ return ME_H_qbarQbar(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb,vev)*4.*4./(9.*9.);
}
}
throw std::logic_error("unknown particle types");
}
/** \brief Current matrix element squared with Higgs and unordered backward emission
* @param aptype Particle A PDG ID
* @param bptype Particle B PDG ID
* @param pn Particle n Momentum
* @param pb Particle b Momentum
* @param pg Unordered back Particle Momentum
* @param p1 Particle 1 Momentum
* @param pa Particle a Momentum
* @param qH t-channel momentum before Higgs
* @param qHp1 t-channel momentum after Higgs
* @returns ME Squared with Higgs and unordered backward emission
*
* @note This function assumes unordered gluon backwards from pa-p1 current.
* For unof, reverse call order
*/
double ME_Higgs_current_uno(
int aptype, int bptype,
CLHEP::HepLorentzVector const & pg,
CLHEP::HepLorentzVector const & pn,
CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & p1,
CLHEP::HepLorentzVector const & pa,
CLHEP::HepLorentzVector const & qH, // t-channel momentum before Higgs
CLHEP::HepLorentzVector const & qHp1, // t-channel momentum after Higgs
- double mt, bool include_bottom, double mb
+ double mt, bool include_bottom, double mb, double vev
){
if (bptype==21&&aptype!=21) {
if (aptype > 0)
- return ME_H_unob_gQ(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb);
+ return ME_H_unob_gQ(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev);
else
- return ME_H_unob_gQbar(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb);
+ return ME_H_unob_gQbar(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev);
}
else { // they are both quark
if (aptype>0) {
if (bptype>0)
- return ME_H_unob_qQ(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb);
+ return ME_H_unob_qQ(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev);
else
- return ME_H_unob_qbarQ(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb);
+ return ME_H_unob_qbarQ(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev);
}
else {
if (bptype>0)
- return ME_H_unob_qQbar(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb);
+ return ME_H_unob_qQbar(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev);
else
- return ME_H_unob_qbarQbar(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb);
+ return ME_H_unob_qbarQbar(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev);
}
}
throw std::logic_error("unknown particle types");
}
CLHEP::HepLorentzVector to_HepLorentzVector(HEJ::Particle const & particle){
return {particle.p.px(), particle.p.py(), particle.p.pz(), particle.p.E()};
}
void validate(HEJ::MatrixElementConfig const & config) {
#ifndef HEJ_BUILD_WITH_QCDLOOP
if(!config.Higgs_coupling.use_impact_factors) {
throw std::invalid_argument{
"Invalid Higgs coupling settings.\n"
"HEJ without QCDloop support can only use impact factors.\n"
"Set use_impact_factors to true or recompile HEJ.\n"
};
}
#endif
if(config.Higgs_coupling.use_impact_factors
&& config.Higgs_coupling.mt != std::numeric_limits<double>::infinity()) {
throw std::invalid_argument{
"Conflicting settings: "
"impact factors may only be used in the infinite top mass limit"
};
}
}
} // namespace anonymous
namespace HEJ{
MatrixElement::MatrixElement(
std::function<double (double)> alpha_s,
MatrixElementConfig conf
):
alpha_s_{std::move(alpha_s)},
param_{std::move(conf)}
{
validate(param_);
}
double MatrixElement::tree_kin(
Event const & ev
) const {
if(! is_resummable(ev.type())) return 0.;
auto AWZH_boson = std::find_if(
begin(ev.outgoing()), end(ev.outgoing()),
[](Particle const & p){return is_AWZH_boson(p);}
);
if(AWZH_boson == end(ev.outgoing()))
return tree_kin_jets(ev);
switch(AWZH_boson->type){
case pid::Higgs:
return tree_kin_Higgs(ev);
case pid::Wp:
case pid::Wm:
return tree_kin_W(ev);
// TODO
case pid::photon:
case pid::Z:
default:
throw not_implemented("Emission of boson of unsupported type");
}
}
namespace{
constexpr int extremal_jet_idx = 1;
constexpr int no_extremal_jet_idx = 0;
bool treat_as_extremal(Particle const & parton){
return parton.p.user_index() == extremal_jet_idx;
}
template<class InputIterator>
double FKL_ladder_weight(
InputIterator begin_gluon, InputIterator end_gluon,
CLHEP::HepLorentzVector const & q0,
CLHEP::HepLorentzVector const & pa, CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & p1, CLHEP::HepLorentzVector const & pn,
double lambda
){
double wt = 1;
auto qi = q0;
for(auto gluon_it = begin_gluon; gluon_it != end_gluon; ++gluon_it){
assert(gluon_it->type == pid::gluon);
const auto g = to_HepLorentzVector(*gluon_it);
const auto qip1 = qi - g;
if(treat_as_extremal(*gluon_it)){
wt *= C2Lipatovots(qip1, qi, pa, pb, lambda)*C_A;
} else{
wt *= C2Lipatovots(qip1, qi, pa, pb, p1, pn, lambda)*C_A;
}
qi = qip1;
}
return wt;
}
} // namespace anonymous
std::vector<Particle> MatrixElement::tag_extremal_jet_partons(
Event const & ev
) const{
auto out_partons = filter_partons(ev.outgoing());
if(out_partons.size() == ev.jets().size()){
// no additional emissions in extremal jets, don't need to tag anything
for(auto & parton: out_partons){
parton.p.set_user_index(no_extremal_jet_idx);
}
return out_partons;
}
const auto & jets = ev.jets();
assert(jets.size() >= 2);
auto most_backward = begin(jets);
auto most_forward = end(jets) - 1;
// skip jets caused by unordered emission or qqx
if(ev.type() == event_type::unob || ev.type() == event_type::qqxexb){
assert(jets.size() >= 3);
++most_backward;
}
else if(ev.type() == event_type::unof || ev.type() == event_type::qqxexf){
assert(jets.size() >= 3);
--most_forward;
}
const auto extremal_jet_indices = ev.particle_jet_indices(
{*most_backward, *most_forward}
);
assert(extremal_jet_indices.size() == out_partons.size());
for(size_t i = 0; i < out_partons.size(); ++i){
assert(HEJ::is_parton(out_partons[i]));
const int idx = (extremal_jet_indices[i]>=0)?
extremal_jet_idx:
no_extremal_jet_idx;
out_partons[i].p.set_user_index(idx);
}
return out_partons;
}
namespace {
template<class InIter, class partIter>
double tree_kin_jets_uno(InIter BeginIn, InIter EndIn, partIter BeginPart,
partIter EndPart, double lambda){
const auto pa = to_HepLorentzVector(*BeginIn);
const auto pb = to_HepLorentzVector(*(EndIn-1));
const auto pg = to_HepLorentzVector(*BeginPart);
const auto p1 = to_HepLorentzVector(*(BeginPart+1));
const auto pn = to_HepLorentzVector(*(EndPart-1));
const double current_factor = ME_uno_current(
(BeginIn)->type, (EndIn-1)->type, pg, pn, pb, p1, pa
)/(4.*(N_C*N_C - 1.));
const double ladder_factor = FKL_ladder_weight(
(BeginPart+2), (EndPart-1),
pa-p1-pg, pa, pb, p1, pn, lambda
);
return current_factor*ladder_factor;
}
}
double MatrixElement::tree_kin_jets(Event const & ev) const {
auto const & incoming = ev.incoming();
const auto partons = tag_extremal_jet_partons(ev);
if (ev.type()==HEJ::event_type::FKL){
const auto pa = to_HepLorentzVector(incoming[0]);
const auto pb = to_HepLorentzVector(incoming[1]);
const auto p1 = to_HepLorentzVector(partons.front());
const auto pn = to_HepLorentzVector(partons.back());
return ME_current(
incoming[0].type, incoming[1].type,
pn, pb, p1, pa
)/(4.*(N_C*N_C - 1.))*FKL_ladder_weight(
begin(partons) + 1, end(partons) - 1,
pa - p1, pa, pb, p1, pn,
param_.regulator_lambda
);
}
else if (ev.type()==HEJ::event_type::unordered_backward){
return tree_kin_jets_uno(incoming.begin(), incoming.end(),
partons.begin(), partons.end(),
param_.regulator_lambda);
}
else if (ev.type()==HEJ::event_type::unordered_forward){
return tree_kin_jets_uno(incoming.rbegin(), incoming.rend(),
partons.rbegin(), partons.rend(),
param_.regulator_lambda);
}
else {
throw std::logic_error("Can only reweight FKL or uno processes in Pure Jets");
}
}
namespace{
double tree_kin_W_FKL(
int aptype, int bptype, HLV pa, HLV pb,
std::vector<Particle> const & partons,
HLV plbar, HLV pl,
double lambda
){
auto p1 = to_HepLorentzVector(partons[0]);
auto pn = to_HepLorentzVector(partons[partons.size() - 1]);
const auto begin_ladder = cbegin(partons) + 1;
const auto end_ladder = cend(partons) - 1;
bool wc = aptype==partons[0].type; //leg b emits w
auto q0 = pa - p1;
if(!wc)
q0 -= pl + plbar;
const double current_factor = ME_W_current(
aptype, bptype, pn, pb,
p1, pa, plbar, pl, wc
);
const double ladder_factor = FKL_ladder_weight(
begin_ladder, end_ladder,
q0, pa, pb, p1, pn,
lambda
);
return current_factor*ladder_factor;
}
template<class InIter, class partIter>
double tree_kin_W_uno(InIter BeginIn, partIter BeginPart,
partIter EndPart, const HLV & plbar, const HLV & pl,
double lambda){
const auto pa = to_HepLorentzVector(*BeginIn);
const auto pb = to_HepLorentzVector(*(BeginIn+1));
const auto pg = to_HepLorentzVector(*BeginPart);
const auto p1 = to_HepLorentzVector(*(BeginPart+1));
const auto pn = to_HepLorentzVector(*(EndPart-1));
bool wc = (BeginIn)->type==(BeginPart+1)->type; //leg b emits w
auto q0 = pa - p1 - pg;
if(!wc)
q0 -= pl + plbar;
const double current_factor = ME_W_uno_current(
(BeginIn)->type, (BeginIn+1)->type, pn, pb,
p1, pa, pg, plbar, pl, wc
);
const double ladder_factor = FKL_ladder_weight(
BeginPart+2, EndPart-1,
q0, pa, pb, p1, pn,
lambda
);
return current_factor*C_A*C_A/(N_C*N_C-1.)*ladder_factor;
}
template<class InIter, class partIter>
double tree_kin_W_qqx(InIter BeginIn, partIter BeginPart,
partIter EndPart, const HLV & plbar, const HLV & pl,
double lambda){
const bool swap_q_qx=is_quark(*BeginPart);
const auto pa = to_HepLorentzVector(*BeginIn);
const auto pb = to_HepLorentzVector(*(BeginIn+1));
const auto pq = to_HepLorentzVector(*(BeginPart+(swap_q_qx?0:1)));
const auto pqbar = to_HepLorentzVector(*(BeginPart+(swap_q_qx?1:0)));
const auto p1 = to_HepLorentzVector(*(BeginPart));
const auto pn = to_HepLorentzVector(*(EndPart-1));
const bool wc = (BeginIn+1)->type!=(EndPart-1)->type; //leg b emits w
auto q0 = pa - pq - pqbar;
if(!wc)
q0 -= pl + plbar;
const double current_factor = ME_W_qqx_current(
(BeginIn)->type, (BeginIn+1)->type, pa, pb,
pq, pqbar, pn, plbar, pl, swap_q_qx, wc
);
const double ladder_factor = FKL_ladder_weight(
BeginPart+2, EndPart-1,
q0, pa, pb, p1, pn,
lambda
);
return current_factor*C_A*C_A/(N_C*N_C-1.)*ladder_factor;
}
double tree_kin_W_qqxmid(
int aptype, int bptype, HLV pa, HLV pb,
std::vector<Particle> const & partons,
HLV plbar, HLV pl,
double lambda
){
HLV pq,pqbar;
const auto backmidquark = std::find_if(
begin(partons)+1, end(partons)-1,
[](Particle const & s){ return s.type != pid::gluon; }
);
assert(backmidquark!=end(partons)-1);
if (is_quark(backmidquark->type)){
pq = to_HepLorentzVector(*backmidquark);
pqbar = to_HepLorentzVector(*(backmidquark+1));
}
else {
pqbar = to_HepLorentzVector(*backmidquark);
pq = to_HepLorentzVector(*(backmidquark+1));
}
auto p1 = to_HepLorentzVector(partons[0]);
auto pn = to_HepLorentzVector(partons[partons.size() - 1]);
auto q0 = pa - p1;
// t-channel momentum after qqx
auto qqxt = q0;
bool wc, wqq;
if (backmidquark->type == -(backmidquark+1)->type){ // Central qqx does not emit
wqq=false;
if (aptype==partons[0].type) {
wc = true;
}
else{
wc = false;
q0-=pl+plbar;
}
}
else{
wqq = true;
wc = false;
qqxt-=pl+plbar;
}
const auto begin_ladder = cbegin(partons) + 1;
const auto end_ladder_1 = (backmidquark);
const auto begin_ladder_2 = (backmidquark+2);
const auto end_ladder = cend(partons) - 1;
for(auto parton_it = begin_ladder; parton_it < begin_ladder_2; ++parton_it){
qqxt -= to_HepLorentzVector(*parton_it);
}
int nabove = std::distance(begin_ladder, backmidquark);
int nbelow = std::distance(begin_ladder_2, end_ladder);
std::vector<HLV> partonsHLV;
partonsHLV.reserve(partons.size());
for (size_t i = 0; i != partons.size(); ++i) {
partonsHLV.push_back(to_HepLorentzVector(partons[i]));
}
const double current_factor = ME_W_qqxmid_current(
aptype, bptype, nabove, nbelow, pa, pb,
pq, pqbar, partonsHLV, plbar, pl, wqq, wc
);
const double ladder_factor = FKL_ladder_weight(
begin_ladder, end_ladder_1,
q0, pa, pb, p1, pn,
lambda
)*FKL_ladder_weight(
begin_ladder_2, end_ladder,
qqxt, pa, pb, p1, pn,
lambda
);
return current_factor*C_A*C_A/(N_C*N_C-1.)*ladder_factor;
}
} // namespace anonymous
double MatrixElement::tree_kin_W(Event const & ev) const {
using namespace event_type;
auto const & incoming(ev.incoming());
auto const & decays(ev.decays());
HLV plbar, pl;
for (auto& x: decays) {
if (x.second.at(0).type < 0){
plbar = to_HepLorentzVector(x.second.at(0));
pl = to_HepLorentzVector(x.second.at(1));
}
else{
pl = to_HepLorentzVector(x.second.at(0));
plbar = to_HepLorentzVector(x.second.at(1));
}
}
const auto pa = to_HepLorentzVector(incoming[0]);
const auto pb = to_HepLorentzVector(incoming[1]);
const auto partons = tag_extremal_jet_partons(ev);
if(ev.type() == FKL){
return tree_kin_W_FKL(incoming[0].type, incoming[1].type,
pa, pb, partons, plbar, pl,
param_.regulator_lambda);
}
if(ev.type() == unordered_backward){
return tree_kin_W_uno(cbegin(incoming), cbegin(partons),
cend(partons), plbar, pl,
param_.regulator_lambda);
}
if(ev.type() == unordered_forward){
return tree_kin_W_uno(crbegin(incoming), crbegin(partons),
crend(partons), plbar, pl,
param_.regulator_lambda);
}
if(ev.type() == extremal_qqxb){
return tree_kin_W_qqx(cbegin(incoming), cbegin(partons),
cend(partons), plbar, pl,
param_.regulator_lambda);
}
if(ev.type() == extremal_qqxf){
return tree_kin_W_qqx(crbegin(incoming), crbegin(partons),
crend(partons), plbar, pl,
param_.regulator_lambda);
}
assert(ev.type() == central_qqx);
return tree_kin_W_qqxmid(incoming[0].type, incoming[1].type,
pa, pb, partons, plbar, pl,
param_.regulator_lambda);
}
double MatrixElement::tree_kin_Higgs(Event const & ev) const {
if(is_uno(ev.type())){
return tree_kin_Higgs_between(ev);
}
if(ev.outgoing().front().type == pid::Higgs){
return tree_kin_Higgs_first(ev);
}
if(ev.outgoing().back().type == pid::Higgs){
return tree_kin_Higgs_last(ev);
}
return tree_kin_Higgs_between(ev);
}
namespace {
// Colour acceleration multipliers, for gluons see eq. (7) in arXiv:0910.5113
#ifdef HEJ_BUILD_WITH_QCDLOOP
// TODO: code duplication with jets.cc
double K_g(double p1minus, double paminus) {
return 1./2.*(p1minus/paminus + paminus/p1minus)*(C_A - 1./C_A) + 1./C_A;
}
double K_g(
CLHEP::HepLorentzVector const & pout,
CLHEP::HepLorentzVector const & pin
) {
if(pin.z() > 0) return K_g(pout.plus(), pin.plus());
return K_g(pout.minus(), pin.minus());
}
double K(
ParticleID type,
CLHEP::HepLorentzVector const & pout,
CLHEP::HepLorentzVector const & pin
) {
if(type == ParticleID::gluon) return K_g(pout, pin);
return C_F;
}
#endif
// Colour factor in strict MRK limit
double K_MRK(ParticleID type) {
return (type == ParticleID::gluon)?C_A:C_F;
}
}
double MatrixElement::MH2_forwardH(
CLHEP::HepLorentzVector const & p1out,
CLHEP::HepLorentzVector const & p1in,
ParticleID type2,
CLHEP::HepLorentzVector const & p2out,
CLHEP::HepLorentzVector const & p2in,
CLHEP::HepLorentzVector const & pH,
double t1, double t2
) const{
ignore(p2out, p2in);
const double shat = p1in.invariantMass2(p2in);
+ const double vev = param_.ew_parameters.vev();
// gluon case
#ifdef HEJ_BUILD_WITH_QCDLOOP
if(!param_.Higgs_coupling.use_impact_factors){
return K(type2, p2out, p2in)*C_A*1./(16*M_PI*M_PI)*t1/t2*ME_Houtside_gq(
p1out, p1in, p2out, p2in, pH,
param_.Higgs_coupling.mt, param_.Higgs_coupling.include_bottom,
- param_.Higgs_coupling.mb
+ param_.Higgs_coupling.mb, vev
)/(4*(N_C*N_C - 1));
}
#endif
return K_MRK(type2)/C_A*9./2.*shat*shat*(
- C2gHgp(p1in,p1out,pH) + C2gHgm(p1in,p1out,pH)
+ C2gHgp(p1in,p1out,pH,vev) + C2gHgm(p1in,p1out,pH,vev)
)/(t1*t2);
}
double MatrixElement::tree_kin_Higgs_first(Event const & ev) const {
auto const & incoming = ev.incoming();
auto const & outgoing = ev.outgoing();
assert(outgoing.front().type == pid::Higgs);
if(outgoing[1].type != pid::gluon) {
assert(incoming.front().type == outgoing[1].type);
return tree_kin_Higgs_between(ev);
}
const auto pH = to_HepLorentzVector(outgoing.front());
const auto partons = tag_extremal_jet_partons(
ev
);
const auto pa = to_HepLorentzVector(incoming[0]);
const auto pb = to_HepLorentzVector(incoming[1]);
const auto p1 = to_HepLorentzVector(partons.front());
const auto pn = to_HepLorentzVector(partons.back());
const auto q0 = pa - p1 - pH;
const double t1 = q0.m2();
const double t2 = (pn - pb).m2();
return MH2_forwardH(
p1, pa, incoming[1].type, pn, pb, pH,
t1, t2
)*FKL_ladder_weight(
begin(partons) + 1, end(partons) - 1,
q0, pa, pb, p1, pn,
param_.regulator_lambda
);
}
double MatrixElement::tree_kin_Higgs_last(Event const & ev) const {
auto const & incoming = ev.incoming();
auto const & outgoing = ev.outgoing();
assert(outgoing.back().type == pid::Higgs);
if(outgoing[outgoing.size()-2].type != pid::gluon) {
assert(incoming.back().type == outgoing[outgoing.size()-2].type);
return tree_kin_Higgs_between(ev);
}
const auto pH = to_HepLorentzVector(outgoing.back());
const auto partons = tag_extremal_jet_partons(
ev
);
const auto pa = to_HepLorentzVector(incoming[0]);
const auto pb = to_HepLorentzVector(incoming[1]);
auto p1 = to_HepLorentzVector(partons.front());
const auto pn = to_HepLorentzVector(partons.back());
auto q0 = pa - p1;
const double t1 = q0.m2();
const double t2 = (pn + pH - pb).m2();
return MH2_forwardH(
pn, pb, incoming[0].type, p1, pa, pH,
t2, t1
)*FKL_ladder_weight(
begin(partons) + 1, end(partons) - 1,
q0, pa, pb, p1, pn,
param_.regulator_lambda
);
}
namespace {
template<class InIter, class partIter>
double tree_kin_Higgs_uno(InIter BeginIn, InIter EndIn, partIter BeginPart,
partIter EndPart, const HLV & qH, const HLV & qHp1,
- double mt, bool inc_bot, double mb){
+ double mt, bool inc_bot, double mb, double vev){
const auto pa = to_HepLorentzVector(*BeginIn);
const auto pb = to_HepLorentzVector(*(EndIn-1));
const auto pg = to_HepLorentzVector(*BeginPart);
const auto p1 = to_HepLorentzVector(*(BeginPart+1));
const auto pn = to_HepLorentzVector(*(EndPart-1));
return ME_Higgs_current_uno(
(BeginIn)->type, (EndIn-1)->type, pg, pn, pb, p1, pa,
- qH, qHp1, mt, inc_bot, mb
+ qH, qHp1, mt, inc_bot, mb, vev
);
}
}
double MatrixElement::tree_kin_Higgs_between(Event const & ev) const {
using namespace event_type;
auto const & incoming = ev.incoming();
auto const & outgoing = ev.outgoing();
const auto the_Higgs = std::find_if(
begin(outgoing), end(outgoing),
[](Particle const & s){ return s.type == pid::Higgs; }
);
assert(the_Higgs != end(outgoing));
const auto pH = to_HepLorentzVector(*the_Higgs);
const auto partons = tag_extremal_jet_partons(ev);
const auto pa = to_HepLorentzVector(incoming[0]);
const auto pb = to_HepLorentzVector(incoming[1]);
auto p1 = to_HepLorentzVector(
partons[(ev.type() == unob)?1:0]
);
auto pn = to_HepLorentzVector(
partons[partons.size() - ((ev.type() == unof)?2:1)]
);
auto first_after_Higgs = begin(partons) + (the_Higgs-begin(outgoing));
assert(
(first_after_Higgs == end(partons) && (
(ev.type() == unob)
|| partons.back().type != pid::gluon
))
|| first_after_Higgs->rapidity() >= the_Higgs->rapidity()
);
assert(
(first_after_Higgs == begin(partons) && (
(ev.type() == unof)
|| partons.front().type != pid::gluon
))
|| (first_after_Higgs-1)->rapidity() <= the_Higgs->rapidity()
);
// always treat the Higgs as if it were in between the extremal FKL partons
if(first_after_Higgs == begin(partons)) ++first_after_Higgs;
else if(first_after_Higgs == end(partons)) --first_after_Higgs;
// t-channel momentum before Higgs
auto qH = pa;
for(auto parton_it = begin(partons); parton_it != first_after_Higgs; ++parton_it){
qH -= to_HepLorentzVector(*parton_it);
}
auto q0 = pa - p1;
auto begin_ladder = begin(partons) + 1;
auto end_ladder = end(partons) - 1;
double current_factor;
if(ev.type() == FKL){
current_factor = ME_Higgs_current(
incoming[0].type, incoming[1].type,
pn, pb, p1, pa, qH, qH - pH,
param_.Higgs_coupling.mt,
- param_.Higgs_coupling.include_bottom, param_.Higgs_coupling.mb
+ param_.Higgs_coupling.include_bottom, param_.Higgs_coupling.mb,
+ param_.ew_parameters.vev()
);
}
else if(ev.type() == unob){
current_factor = HEJ::C_A*HEJ::C_A/2*tree_kin_Higgs_uno(
begin(incoming), end(incoming), begin(partons),
end(partons), qH, qH-pH, param_.Higgs_coupling.mt,
- param_.Higgs_coupling.include_bottom, param_.Higgs_coupling.mb
+ param_.Higgs_coupling.include_bottom, param_.Higgs_coupling.mb,
+ param_.ew_parameters.vev()
);
const auto p_unob = to_HepLorentzVector(partons.front());
q0 -= p_unob;
p1 += p_unob;
++begin_ladder;
}
else if(ev.type() == unof){
current_factor = HEJ::C_A*HEJ::C_A/2*tree_kin_Higgs_uno(
rbegin(incoming), rend(incoming), rbegin(partons),
rend(partons), qH-pH, qH, param_.Higgs_coupling.mt,
- param_.Higgs_coupling.include_bottom, param_.Higgs_coupling.mb
+ param_.Higgs_coupling.include_bottom, param_.Higgs_coupling.mb,
+ param_.ew_parameters.vev()
);
pn += to_HepLorentzVector(partons.back());
--end_ladder;
}
else{
throw std::logic_error("Can only reweight FKL or uno processes in H+Jets");
}
const double ladder_factor = FKL_ladder_weight(
begin_ladder, first_after_Higgs,
q0, pa, pb, p1, pn,
param_.regulator_lambda
)*FKL_ladder_weight(
first_after_Higgs, end_ladder,
qH - pH, pa, pb, p1, pn,
param_.regulator_lambda
);
return current_factor*C_A*C_A/(N_C*N_C-1.)*ladder_factor;
}
namespace {
- double get_AWZH_coupling(Event const & ev, double alpha_s) {
+ double get_AWZH_coupling(Event const & ev, double alpha_s, double alpha_w) {
const auto AWZH_boson = std::find_if(
begin(ev.outgoing()), end(ev.outgoing()),
[](auto const & p){return is_AWZH_boson(p);}
);
if(AWZH_boson == end(ev.outgoing())) return 1.;
switch(AWZH_boson->type){
case pid::Higgs:
return alpha_s*alpha_s;
case pid::Wp:
case pid::Wm:
- return gw*gw*gw*gw/4.;
+ return alpha_w*alpha_w;
// TODO
case pid::photon:
case pid::Z:
default:
throw not_implemented("Emission of boson of unsupported type");
}
}
}
double MatrixElement::tree_param(Event const & ev, double mur) const {
assert(is_resummable(ev.type()));
const auto begin_partons = ev.begin_partons();
const auto end_partons = ev.end_partons();
const auto num_partons = std::distance(begin_partons, end_partons);
const double alpha_s = alpha_s_(mur);
const double gs2 = 4.*M_PI*alpha_s;
double res = std::pow(gs2, num_partons);
if(param_.log_correction){
// use alpha_s(q_perp), evolved to mur
assert(num_partons >= 2);
const auto first_emission = std::next(begin_partons);
const auto last_emission = std::prev(end_partons);
for(auto parton = first_emission; parton != last_emission; ++parton){
res *= 1. + alpha_s/(2.*M_PI)*beta0*log(mur/parton->perp());
}
}
- return get_AWZH_coupling(ev, alpha_s)*res;
+ return get_AWZH_coupling(ev, alpha_s, param_.ew_parameters.alpha_w())*res;
}
} // namespace HEJ
diff --git a/t/ME_data/ME_Wm.dat b/t/ME_data/ME_Wm.dat
index f61a711..b563c9f 100644
--- a/t/ME_data/ME_Wm.dat
+++ b/t/ME_data/ME_Wm.dat
@@ -1,1308 +1,1308 @@
-2.928675692e-06
-1.647116461e-06
-6.792853649e-07
-8.309213874e-05
-1.188586835e-09
-7.418850985e-09
-4.641858351e-07
-4.469299635e-07
-6.109075964e-06
-2.937428029e-06
-4.834759305e-06
-8.223080997e-06
-1.984882889e-06
-4.724373663e-06
-2.284512955e-07
-6.086791509e-08
-9.402879575e-07
-2.134932663e-05
-1.344153838e-06
-6.325190057e-08
-5.042205822e-06
-0.0002285013435
-2.294857015e-06
-6.277759204e-05
-1.337020968e-07
-3.953835541e-06
-9.658506379e-05
-2.316868337e-06
-2.819688016e-07
-0.0001081216619
-3.432998402e-06
-3.368523741e-06
-1.11288709e-08
-3.29543466e-07
-3.989570061e-10
-1.948796723e-05
-3.510830208e-07
-3.210202477e-07
-3.239728865e-06
-8.604875852e-06
-7.617842534e-10
-1.878886612e-06
-8.602552313e-09
-2.905134545e-09
-9.580831652e-08
-2.761377426e-07
-1.121758088e-05
-8.305715929e-07
-3.094575366e-06
-9.009051399e-07
-3.660116555e-07
-4.545389317e-08
-1.619299497e-09
-0.01367636241
-3.915774786e-06
-2.025205952e-06
-3.6814996e-09
-4.179895596e-06
-3.07283947e-08
-8.89627591e-07
-3.025959937e-08
-1.817403251e-09
-4.337439968e-10
-1.271896091e-06
-6.045011555e-06
-9.89332115e-09
-1.214106087e-05
-2.958683161e-08
-2.061281825e-09
-1.93033348e-05
-6.299313702e-07
-2.644016282e-07
-2.061367847e-06
-4.34253878e-05
-8.291732575e-07
-2.499007952e-06
-4.358489891e-06
-9.241699824e-05
-9.12437674e-05
-0.0001159481718
-2.350252878e-06
-7.845324212e-06
-0.000638536879
-4.723440426e-08
-6.954486577e-09
-5.357700283e-06
-1.473730225e-07
-1.054004829e-07
-5.920067571e-07
-1.175811475e-05
-1.546221661e-07
-0.0004236100189
-3.617420289e-06
-4.516879429e-05
-3.955718614e-05
-0.0001365328248
-5.126170478e-05
-1.077742001e-06
-1.018758481e-08
-2.310396111e-09
-6.836738619e-07
-5.827603078e-09
-1.557658774e-09
-6.048954972e-05
-1.652858793e-07
-2.956993046e-07
-3.715591231e-06
-1.403931806e-08
-2.060713606e-07
-0.001033146046
-9.773118638e-07
-2.935985027e-05
-1.151256054e-05
-7.794713809e-06
-2.17436307e-05
-4.056751186e-08
-2.955377882e-08
-8.030872004e-05
-2.603215792e-07
-0.0001681672442
-2.930133644e-08
-7.197036394e-05
-1.920989813e-06
-3.637607439e-09
-7.893842383e-06
-0.0001175217074
-4.802925073e-10
-4.83556567e-07
-2.878827354e-05
-1.898723086e-09
-2.754516812e-08
-1.403679092e-10
-5.826558306e-07
-2.433773671e-06
-7.927708105e-06
-1.020983626e-08
-1.052585256e-07
-7.737192672e-06
-3.400645867e-06
-2.714553382e-08
-2.377796617e-09
-0.0001490868071
-9.612832588e-11
-1.654742249e-05
-1.57073488e-07
-1.609407803e-06
-6.946367688e-08
-0.04337790658
-9.860795665e-06
-1.103405546e-05
-0.01558805851
-1.359140493e-06
-2.104988229e-07
-4.483328013e-08
-2.527261731e-08
-4.136266286e-07
-1.75962763e-07
-4.16236019e-07
-3.66072855e-07
-2.475097776e-06
-2.142069091e-05
-3.962234552e-07
-5.0752339e-06
-2.831972358e-08
-8.260228591e-08
-2.191466894e-08
-7.392657036e-05
-5.57330681e-10
-1.264513056e-08
-3.373173459e-05
-1.515657759e-07
-4.183645033e-07
-1.162296215e-07
-7.731815775e-06
-1.077601875e-05
-2.331663061e-07
-4.316286429e-10
-4.05516744e-09
-1.282346148e-09
-1.905147472e-09
-2.799718364e-07
-6.430044079e-08
-3.336162544e-07
-2.847516226e-07
-2.8800296e-05
-5.034816791e-08
-0.0001697859258
-7.357868068e-08
-1.312972542e-07
-1.494668933e-07
-1.309682993e-09
-1.452620265e-08
-7.003475182e-07
-2.392867531e-06
-6.228302547e-06
-2.32207831e-07
-8.172158542e-08
-4.289261389e-07
-2.619009165e-07
-7.684975193e-06
-3.9300806e-10
-1.235480059e-06
-4.345702611e-07
-1.019591398e-07
-1.014400081e-05
-1.198511446e-05
-3.072393212e-05
-2.47145635e-06
-6.141459748e-06
-2.217791841e-05
-7.506816715e-07
-4.156597855e-07
-0.0003928655193
-6.192512495e-07
-9.058620171e-07
-7.767884384e-06
-1.506541078e-06
-1.438366886e-08
-1.393919618e-07
-7.338405876e-05
-1.013840918e-07
-1.941618603e-05
-1.098271271e-06
-7.583485063e-07
-1.924040495e-08
-2.683414048e-06
-0.0005387206665
-4.514003014e-09
-7.345041607e-06
-4.863384343e-08
-5.137710227e-07
-1.341025387e-07
-1.385096075e-09
-0.001475731456
-4.766899706e-09
-2.788152153e-07
-4.885059085e-07
-4.389966638e-07
-0.0006056993831
-2.260959244e-06
-1.622050932e-07
-8.044376305e-07
-0.002874337098
-8.545204208e-05
-2.859915875e-07
-3.520051428e-05
-3.83840617e-05
-6.701394914e-12
-6.711555934e-09
-1.221714284e-07
-4.175432874e-09
-1.276099272e-06
-9.349373741e-06
-5.093349519e-07
-2.102059997e-05
-2.546943624e-06
-4.307372366e-07
-0.0001405081607
-1.532593492e-06
-0.004327081818
-1.798381994e-07
-0.0002232914245
-1.177488117e-07
-1.784201554e-06
-2.027515818e-09
-3.74919864e-07
-1.128537898e-07
-4.135413677e-05
-2.009104635e-08
-8.773550962e-07
-9.824802351e-10
-1.631528339e-07
-2.288354101e-05
-2.035248598e-07
-0.0001019103655
-3.912289372e-06
-5.329003459e-08
-3.815264848e-10
-1.388142926e-05
-2.066904312e-08
-9.173930152e-07
-6.957230348e-09
-2.903877008e-05
-4.478794954e-09
-6.770693006e-07
-9.714079428e-08
-1.998883986e-05
-0.001799109057
-1.236217788e-08
-1.118375624e-05
-1.144499288e-07
-1.1864756e-06
-4.716258378e-06
-3.464456734e-07
-7.532453996e-11
-1.742294659e-06
-1.345426643e-06
-8.449545648e-08
-8.954221651e-07
-2.432487759e-06
-0.0001400677698
-0.001713444386
-1.075048353e-07
-4.105406541e-05
-3.733656311e-07
-1.984952182e-06
-0.001480322688
-0.0001151217974
-0.00209287627
-3.27555809e-06
-2.185782336e-09
-0.0004548139237
-0.01477027961
-3.934273672e-05
-0.001243829892
-5.430764382e-08
-4.380856265e-07
-4.297458002e-06
-1.467632945e-08
-1.820453663e-08
-2.699514835e-09
-8.420814307e-07
-8.634913084e-10
-1.182745993e-06
-8.508146264e-09
-7.184712053e-07
-1.192590185e-06
-1.766408443e-08
-0.002934313619
-1.283384372e-06
-6.255055172e-06
-8.703331507e-06
-9.664774229e-06
-2.675288802e-09
-3.392650797e-08
-0.0001071682868
-5.832833131e-09
-8.881117172e-08
-0.0002166070842
-1.248608916e-08
-1.726759584e-06
-2.99705455e-06
-2.119854874e-07
-7.412646571e-06
-2.755998704e-08
-9.960376424e-06
-3.051416349e-05
-1.129492506e-08
-2.619064731e-08
-5.532504512e-10
-2.177158595e-10
-0.0003851956976
-4.247896087e-05
-1.005180535e-08
-7.063067217e-08
-0.0002453874122
-6.569452237e-09
-2.430119913e-06
-1.727937098e-07
-1.211730869e-05
-9.94795514e-06
-0.0001605757277
-5.961378248e-08
-1.63764285e-06
-1.925056588e-07
-1.895751671e-05
-3.584139499e-09
-2.424148932e-07
-0.001006931825
-1.003162717e-06
-1.237484464e-06
-2.006432918e-06
-1.665677334e-05
-8.731387573e-06
-1.333871332e-07
-7.301399559e-09
-0.0005093528313
-7.645422963e-08
-2.020202554e-06
-6.813091876e-08
-1.10814416e-06
-1.95551597e-05
-2.003879505e-06
-3.670933614e-07
-1.728622505e-07
-0.0007263797041
-1.41191122028095e-05
-1.571311147e-07
-3.392287113e-06
-1.377047714e-09
-6.630650805e-07
-5.227904356e-08
-1.127011492e-06
-0.0003754771874
-1.865169444e-07
-6.576952888e-06
-3.329497044e-06
-7.07257004e-06
-2.88154104e-07
-1.985441412e-07
-6.929088895e-08
-2.512260458e-06
-6.217791051e-06
-3.877741985e-07
-1.707903155e-08
-5.10233078e-08
-4.572653519e-09
-0.1095009268
-7.449132821e-07
-2.09740422e-06
-9.378911822e-09
-7.910046337e-08
-1.223499404e-05
-2.672193111e-10
-2.314556691e-08
-3.503343355e-13
-1.602894349e-07
-5.890632996e-07
-1.487885964e-05
-1.978704988e-05
-2.552121299e-08
-3.565602472e-08
-0.0004467518296
-9.443687582e-10
-1.363026913e-06
-2.235788016e-07
-1.136525751e-07
-2.962478329e-08
-9.303967807e-06
-3.925082515e-10
-1.017880604e-05
-1.434347997e-08
-4.47759051e-06
-1.996980966e-09
-4.66863509e-05
-5.845204451e-06
-1.509519246e-07
-1.741949098e-06
-2.215116471e-10
-1.532616641e-06
-1.571651059e-08
-7.107477006e-05
-7.234687759e-06
-1.621643207e-06
-2.56453036e-08
-8.069391642e-09
-2.035933164e-07
-7.550717369310519e-08
-8.659572881e-06
-0.0004321439671563004
-3.337724504e-05
-4.782082889e-05
-2.323101105e-08
-1.19309915e-05
-0.0001350492201
-2.75397447e-06
-1.823126697e-08
-2.411767675e-05
-2.283494193e-09
-3.766390067e-08
-3.588343942e-05
-6.787383948e-05
-8.832490704e-10
-7.778718617e-10
-1.917361443e-08
-5.849351718e-06
-2.28541183e-06
-6.146818441e-06
-1.827359426e-05
-3.231234221e-05
-9.921186251e-07
-3.779404373e-09
-1.924149804e-05
-7.698409214e-06
-1.221205448e-06
-1.642479046e-06
-3.301215266e-07
-0.0004602920172
-3.293196018e-07
-3.950685019e-07
-2.805273751e-05
-1.739207752e-08
-3.773037585e-06
-1.537008391e-06
-2.434913209e-08
-8.315956868e-05
-6.88859927e-06
-6.869368159e-08
-4.672444205e-09
-7.02639721e-05
-7.305366536e-07
-2.162269825e-05
-0.0004328624246
-1.653264992e-07
-1.553411281e-05
-5.165593047e-10
-2.153731042e-10
-8.592408471e-09
-8.974979512e-09
-7.520620911e-07
-2.080333069e-07
-1.653991504e-07
-9.9043617e-09
-6.542874961e-09
-0.0005318553158
-1.144555776e-05
-6.936210932e-05
-7.62010085e-08
-1.834443898e-08
-8.099206646e-06
-1.946663573e-09
-4.916072586e-06
-2.013222915e-05
-8.510967278e-07
-3.442296018e-07
-1.194853419e-07
-1.251233575e-07
-2.847893723e-06
-2.519238034e-06
-3.662564708e-07
-1.646271735e-07
-5.373793619e-07
-4.353476735e-08
-8.727968448e-08
-1.053026857e-05
-1.083603462e-06
-1.461412043e-06
-1.220147207e-06
-0.0009307060856
-3.48570189e-07
-2.208034886e-08
-8.740398335e-08
-0.0001005182181
-5.658935843e-06
-3.660460092e-07
-5.210218655e-06
-1.176510494e-09
-1.167510222e-09
-1.74723538e-07
-4.652418777e-10
-1.639422267e-06
-9.200100093e-06
-0.0001764752281
-7.379070775e-09
-2.542944745e-07
-3.717769041983323e-06
-4.778249403e-10
-6.09916388e-07
-7.389397856e-06
-1.030208854e-08
-5.091853226e-08
-1.929321992e-06
-2.953703561e-07
-1.428266933e-08
-3.65646162e-05
-8.358213962e-06
-1.269052515e-05
-3.142034606e-10
-1.192354439e-08
-3.42519028e-07
-1.238073279e-05
-4.592188983e-07
-4.907760576e-08
-2.605803561e-07
-1.290266109e-06
-8.91015308e-08
-1.171147313e-05
-6.948329894e-06
-0.0001320627046
-4.467361346e-08
-1.343011103e-06
-4.69742523e-09
-1.674877668e-07
-1.158457021e-07
-7.247035325e-08
-0.0001328992567
-1.456012145e-05
-1.974800428e-05
-9.916997919e-05
-7.076016655e-07
-7.36330363e-07
-8.750739052e-07
-2.098702267e-05
-1.224885671e-06
-6.974041336e-07
-6.433390899e-08
-1.654868124e-05
-0.0009302881479
-1.821579155e-07
-6.800514105e-07
-1.766155755e-07
-8.004650647e-07
-9.941901599e-05
-2.06752057e-05
-5.066538235e-11
-1.506772094e-06
-8.10845767e-05
-7.610845142e-05
-0.0002115710954
-2.12571763e-09
-2.910738954e-06
-9.48875277e-06
-1.847390948e-06
-7.436554496e-05
-1.286439322e-10
-1.413106449e-06
-4.724231895e-08
-5.001854028e-07
-1.14055774e-06
-6.718621271e-11
-8.472867506e-09
-8.494930984e-08
-2.498427647e-07
-6.987204698e-06
-4.08117914e-06
-2.82229796e-07
-3.98589612e-09
-6.278231145e-05
-9.793860499e-07
-9.666736058e-07
-2.708628413e-06
-3.490044251e-07
-3.782645161e-10
-8.131830282e-08
-6.664325458e-06
-2.365503287e-08
-1.096958037e-06
-3.776083109e-07
-2.990539686e-08
-0.002754346975
-4.047644861e-07
-1.411988389e-07
-3.694067085e-08
-0.0002320708655
-3.71338597e-07
-3.835998288e-05
-2.623922776e-05
-6.474281304e-10
-0.0003219022096
-3.356011806e-07
-5.603569089e-09
-9.856721257e-08
-2.793861685e-07
-5.195375958e-06
-2.632243695e-06
-6.350302361e-07
-3.302377879e-10
-3.043526423e-08
-2.372803041e-08
-6.617140209e-06
-6.330476168e-07
-1.870130608e-06
-2.338555597e-07
-4.591171378e-10
-5.61933523e-05
-1.955958771e-08
-3.044175709e-08
-5.161106748e-08
-0.0001378680549
-2.750711746e-09
-2.289389014e-08
-4.001113699e-09
-2.236415233e-10
-3.473425904e-06
-7.311516826e-06
-8.898096465e-08
-1.481216022e-08
-2.435208033e-12
-1.189787819e-10
-5.333724185e-06
-4.66437667e-11
-2.381386364e-10
-1.249165957e-08
-1.128630934e-07
-1.550941521e-06
-2.297705942e-12
-5.846728434e-10
-4.069354108e-10
-4.063144762e-08
-1.749554102e-08
-5.155167146e-11
-1.688297139e-11
-2.774930205e-09
-6.091667068e-08
-2.87170322e-10
-3.66643664e-10
-8.258926512e-10
-7.390910771e-09
-1.48715158e-10
-6.565786352e-12
-3.475089984e-09
-2.002380042e-09
-7.274321744e-11
-6.359749104e-09
-7.940393308e-13
-1.098611945e-06
-7.438494044e-07
-2.339207348e-10
-4.499165346e-09
-3.082882191e-09
-1.878464872e-10
-4.005585989e-09
-2.63828057e-10
-2.218789497e-09
-5.827641219e-09
-1.543332934e-10
-4.907581247e-10
-6.901620609e-10
-2.088068542e-13
-7.837109261e-10
-1.937213353e-10
-1.715044299e-08
-4.069918057e-06
-2.91951045e-08
-1.565114165e-08
-3.443423804e-08
-1.256948998e-07
-4.363190898e-09
-2.287393528e-12
-6.966944807e-09
-5.995890076e-08
-1.289835012e-10
-1.695089305e-10
-2.301282525e-11
-9.445474271e-09
-2.115405965e-08
-1.662358545e-09
-1.025068565e-09
-9.719373728e-11
-1.732767627e-11
-4.41946888e-11
-5.657095809e-11
-5.288528777290672e-07
-5.324238867e-07
-2.221589565e-07
-2.48971658e-09
-2.994534368049623e-09
-1.075626423e-09
-7.782686578e-11
-2.946128307e-11
-3.399399058e-11
-1.446405065e-08
-2.187225844e-08
-7.820238975e-09
-2.40229777e-09
-7.46594076e-10
-1.281010307e-06
-3.598219943e-08
-1.251224651967984e-08
-3.332304338e-11
-7.617797708e-10
-9.909367591e-11
-4.653906139e-10
-3.587191007e-06
-4.446718734e-08
-1.894297128e-09
-4.744577059e-05
-4.433959517e-09
-2.210850439e-08
-1.036168503e-09
-1.103345617e-07
-4.995240386e-08
-8.363740584e-12
-3.281022886e-10
-3.148002148e-08
-6.330439107e-10
-3.863775656e-10
-5.96035067e-10
-4.255627067e-11
-1.165981634e-07
-2.50543766e-09
-1.33188621e-10
-9.172189534e-07
-6.582275731e-08
-1.542558412e-10
-1.297572348e-09
-8.107196167e-09
-2.070977659e-06
-6.93677041e-09
-2.329665548e-07
-2.684341075e-07
-3.375521064e-12
-4.781691571e-11
-5.350983865e-09
-9.177711402e-10
-3.059268527e-08
-1.113405482e-07
-5.998651665e-10
-3.911876462e-10
-1.176693635e-08
-8.69340171e-10
-2.320788866e-05
-2.036112191e-07
-3.21298594e-08
-7.12985182e-08
-1.481220144e-09
-9.13398584e-07
-9.416502413e-11
-1.481517933e-08
-2.317808347e-06
-3.901257454e-08
-4.627625989e-12
-2.494572686e-08
-9.094749026e-10
-1.731947437e-08
-2.095822035e-08
-7.215930164e-08
-2.372708431e-09
-9.374174236e-13
-1.029823717e-11
-5.170363884761981e-07
-3.317414045e-07
-1.109713675e-08
-6.47170925e-07
-1.864432618e-06
-3.397275076e-11
-4.168205664e-08
-1.346830208e-11
-3.171866069e-06
-7.866352681e-11
-3.289251567e-10
-7.057976269e-14
-2.67944287e-07
-4.480095364e-10
-2.542532019e-10
-1.046877898e-09
-4.692930721e-12
-5.841384928e-10
-5.254681082e-07
-9.003591534e-11
-3.637362188e-13
-9.047013259e-09
-1.769883631e-08
-9.48770427e-07
-1.037626188e-10
-7.931261407e-08
-2.511617984e-07
-1.749603857e-09
-1.158718175e-07
-1.833652906e-06
-4.450176914e-08
-5.71537314e-10
-1.070556403e-10
-2.448737924e-10
-6.262272951e-06
-2.141707476e-08
-4.258981326e-09
-5.49246536e-09
-9.566266675e-12
-3.797543387e-11
-2.705369876e-08
-4.238910221e-07
-1.784747449e-09
-3.595414385e-08
-3.222996111e-09
-6.210164067e-05
-2.258039015e-08
-1.191514021e-13
-1.513303142e-06
-9.658853509e-11
-5.082215114e-06
-9.44022394e-10
-8.437053744e-09
-1.463048848e-10
-3.444930056e-09
-7.868562747e-12
-1.272388225e-11
-3.427574116e-10
-8.990110201e-08
-2.83369365e-11
-3.0757007e-10
-5.265605701e-14
-4.26291208e-13
-7.393316606e-13
-5.385884913e-05
-8.367430153e-10
-1.271720599e-05
-8.40960929e-11
-6.150536572e-08
-5.764038353e-10
-1.4827533e-05
-2.322813811e-10
-4.431637476e-09
-1.319799794e-08
-1.965682244e-09
-5.782112632e-06
-7.526132679e-07
-1.075618822e-09
-1.712525448e-09
-3.952010247e-07
-3.136663182e-10
-1.366784094e-10
-2.291961377e-13
-7.468862634e-11
-2.13931093e-07
-2.325391866e-09
-7.657293509e-07
-3.023206769e-07
-1.974192114e-11
-2.239591754e-13
-1.575764712e-08
-3.894706527845038e-07
-2.463427596e-09
-1.169483637e-07
-7.445202399e-07
-3.876016309e-06
-6.204312046e-07
-5.089616453e-10
-2.563342578e-13
-4.109081761499578e-09
-8.534723944e-11
-3.062921512e-14
-5.084635637e-08
-3.964438906e-09
-9.56064042e-09
-5.713458485e-07
-8.602373058e-10
-9.674381801e-09
-5.575533604e-08
-7.736937052e-10
-5.25696461e-10
-2.604611015e-08
-5.185877553e-08
-5.136914596e-07
-4.457967612e-09
-7.087532094e-06
-2.866869842e-09
-2.555695269e-07
-1.14983411e-06
-2.121499808e-11
-6.538598731e-11
-4.397576097e-10
-1.68339254e-10
-7.632177773e-10
-3.194450213e-07
-4.743002807e-08
-5.174172592e-09
-1.378394044e-06
-0.0001075134541
-0.0002104593459
-1.291514756e-09
-1.113812317e-09
-2.836821935e-07
-2.119414007e-05
-3.257830135e-07
-6.904331208e-08
-1.133565101e-07
-2.515736584e-07
-2.868370103e-07
-1.316255824e-07
-1.143196584e-07
-6.920318567e-10
-1.261652011e-08
-7.917924522e-13
-7.954494796e-10
-6.551135771e-09
-5.085806996e-09
-1.197408695e-11
-7.765435603e-11
-1.137649191e-10
-9.984771335e-11
-1.206636661e-07
-9.837079112e-09
-3.488285266e-08
-4.035219127e-08
-1.411962856e-08
-1.030986206e-07
-0.0001339305599
-2.858760077e-12
-3.300471596e-09
-1.938419056e-10
-3.176459434e-12
-1.739161428e-09
-4.024412744e-07
-3.711167254e-08
-3.68209028e-09
-9.299354827e-11
-4.060060302e-10
-1.4612779e-05
-9.474942894e-11
-6.71405306e-14
-2.422793691e-09
-1.239892236e-07
-2.586764905e-08
-3.834829456e-09
-4.981089193e-08
-5.890823747e-10
-1.712560509e-13
-5.885874705e-12
-3.850099718e-12
-5.815334596e-10
-2.871382336e-07
-3.360539652e-09
-4.474272729e-08
-4.854260426e-09
-6.835712438e-09
-4.513662362e-10
-1.937015923e-09
-3.204387319e-07
-2.834110865e-06
-2.373908594e-10
-8.959130596e-10
-2.230101714e-07
-2.935469223e-08
-1.283653118e-05
-1.768922904e-09
-1.023937016e-07
-1.810088219e-10
-1.898013563e-06
-1.555535859e-07
-2.081843632e-11
-1.130189635e-07
-5.044203176e-10
-4.419441096e-10
-8.383860763e-08
-1.081590063e-05
-4.255989963e-09
-4.961325451e-09
-4.722044461e-12
-2.605827829e-07
-6.302277862e-12
-7.401606994e-11
-5.826773899e-09
-3.775837499e-06
-7.970709192e-06
-1.077514227e-08
-4.597223421e-10
-6.830064994e-09
-2.132411988e-10
-3.596324757e-11
-6.420547725e-09
-2.577236401e-09
-3.303229315e-09
-6.18774819e-09
-4.85351932e-08
-4.830745338e-10
-3.720076558e-06
-1.356666145e-08
-2.380000545e-09
-6.934200897e-11
-3.297569231e-09
-3.435257108e-10
-5.29774949e-08
-4.382596642e-09
-2.15867853e-08
-5.682155814e-12
-2.87290739e-07
-1.68447438e-10
-3.702374348e-08
-4.342623412e-10
-6.279260244e-08
-2.403676166e-08
-6.186547757e-09
-1.906369995e-07
-4.632234292e-10
-2.755342608e-09
-1.375328487e-08
-2.872876599e-08
-6.101397141e-07
-3.268512848e-10
-2.065059787e-07
-2.629402008e-09
-4.962476519e-11
-1.388892596e-10
-6.600566104e-08
-2.769850168e-07
-8.89254745e-07
-4.790857584e-07
-8.513434203e-09
-2.371056219e-11
-1.969882102e-08
-1.194180775e-06
-2.536127752e-06
-3.538123306e-11
-7.535922813e-11
-3.279643366e-09
-5.915578256e-09
-3.02572337e-12
-2.425014125e-08
-1.736441207e-08
-9.148487522e-11
-2.773967859e-09
-6.97620218e-08
-1.281934525e-09
-3.47740087e-11
-7.026364385e-12
-3.159133311e-08
-2.31268605e-06
-1.021090566e-11
-6.311611218e-10
-3.496527402152061e-09
-5.006407047e-09
-1.086254132e-09
-6.442848457e-07
-3.40398573e-08
-1.040533844e-07
-2.015250069e-08
-2.367399296e-08
-1.455786943e-08
-4.519557691e-07
-6.28474478e-08
-1.681943257e-08
-3.350671592e-10
-1.788948112e-11
-8.659128848e-08
-1.581729673e-10
-3.16899147e-08
-1.269452476e-09
-3.307661094e-11
-6.743047887e-11
-4.30353612e-10
-1.049230002e-07
-7.726948943e-12
-5.740327635e-07
-7.011998453e-07
-5.337360544e-09
-6.364224996e-09
-6.365307921e-10
-7.724490255e-10
-2.368415063e-08
-1.761719259305042e-07
-3.074395438e-08
-5.988468898e-06
-1.432688658e-12
-7.971925347e-11
-1.851944696e-07
-1.679623381e-10
-6.480885684e-06
-9.759515118e-09
-3.448768806e-09
-7.000972121e-11
-2.170432891e-09
-5.016191785e-09
-1.49812676e-09
-5.87915813e-10
-6.048689475e-10
-1.149696962e-08
-8.392285319e-11
-2.869985172e-13
-9.120207147e-09
-1.023039271e-06
-1.843349283e-11
-1.00493373e-06
-1.437966503e-09
-3.104285805e-06
-3.736848159e-10
-9.594800986e-11
-1.232024101e-11
-3.535931521e-07
-7.131216184e-08
-2.337326742e-10
-2.82410779e-07
-3.138271299e-08
-5.494774408e-12
-3.07020008e-12
-2.011245542e-10
-1.461453727e-11
-3.082048934e-09
-1.460968738e-10
-3.186600527e-07
-8.613894657e-10
-4.227362638e-07
-1.132945088e-08
-1.385877833e-08
-2.535124307e-09
-5.647614453e-08
-1.712204167e-10
-9.689130473e-07
-2.23306088e-09
-2.607948681e-11
-1.678634611e-13
-2.258659145e-06
-1.695727868e-09
-1.706090682e-11
-4.758749915e-12
-1.426536131e-05
-1.449437791e-07
-4.24476422e-08
-3.617494916e-10
-8.345680248e-12
-7.09135827e-13
-8.179812515e-09
-3.323888637e-09
-1.436305431e-08
-5.885631636e-10
-3.584884074e-08
-9.15498181e-09
-9.640861937e-11
-1.908907816e-09
-2.558536978e-10
-5.232929043e-10
-1.261308954e-09
-2.535469757e-10
-1.402741054722527e-06
-9.405064753e-10
-1.920855926e-07
-4.40419547e-11
-5.00514635e-10
-1.406592654e-07
-4.52773411e-10
-4.146849421e-07
-1.166300995e-07
-7.051208905e-09
-4.118573924e-09
-9.269115967e-07
-1.08066004e-10
-1.045618377e-06
-4.94758944e-07
-6.160229109e-12
-1.351649588024934e-08
-2.784256537e-09
-1.934517844e-08
-5.314666753e-13
-1.357165448e-09
-4.977436192e-12
-6.477152561e-11
-4.234578629e-08
-4.918295292e-13
-3.683451803e-08
-3.727223271e-09
-1.040244287e-09
-6.604553745e-10
-3.806952288e-09
-1.097089218e-08
-1.705682648e-08
-6.319891143e-07
-1.574130537e-09
-3.013782963e-08
-4.772880086e-09
-3.679484278e-09
-8.938611559e-10
-5.601588127e-09
-1.526952592e-05
-3.497239887e-10
-9.33354413e-08
-1.359301132e-08
-6.404370059e-11
-1.535628496e-11
-2.243494388e-09
-4.662210325e-09
-1.022052539e-10
-1.383917366e-07
-1.619072147e-12
-1.507995029e-08
-2.056138551e-09
-1.984766447e-05
-5.313284134e-09
-1.04749306e-08
-1.156452533e-07
-1.201443255e-06
-1.584111891e-09
-2.09858386e-11
-3.445445203e-09
-4.164676e-06
-4.092776954e-12
-9.944337818e-10
-5.276009823e-09
-3.628978704e-11
-2.197020798e-10
-1.052815682e-08
-1.068627029e-08
-3.831431452e-11
-1.364029236e-07
-3.403124343e-10
-5.38162347e-08
-6.729323819e-12
-1.207769187e-07
-4.017542328e-09
-1.315684128e-08
-7.126836658e-11
-1.491126652e-07
-7.209030864e-10
-6.628062787e-08
-1.21591155e-10
-6.230923352e-09
-0.000101234359
-5.30942773e-10
-5.741385346e-10
-2.429893426e-08
-7.325998025e-12
-3.533987787e-09
-7.926231814e-10
-8.291189826e-11
-3.746302962e-11
-5.242302307e-11
-8.718447375e-08
-6.176050515e-11
-6.09961364e-09
-2.644343829e-09
-2.306901235e-08
-7.322320056e-10
-1.884045094e-06
-3.755632286e-08
-1.659778169e-08
-5.495025114e-08
-3.546727594e-09
-2.674246643e-07
-1.028252112e-09
-9.289249703e-06
-7.959960572e-08
-1.068081079e-11
-5.674343265e-07
-6.214463157e-09
-1.601066932e-06
-1.977738539e-06
-3.462786645e-07
-7.373697384e-09
-5.726726532e-12
+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.289343402e-08
+4.00103398e-09
+2.236370675e-10
+3.473356692e-06
+7.311371105e-06
+8.897919195e-08
+1.481186501e-08
+2.435159627e-12
+1.189764093e-10
+5.333618139e-06
+4.664283736e-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.749519244e-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.475020746e-09
+2.002340151e-09
+7.274176809e-11
+6.359622393e-09
+7.94023499e-13
+1.098589837e-06
+7.438345866e-07
+2.339160741e-10
+4.499075704e-09
+3.082821024e-09
+1.878422387e-10
+4.005506099e-09
+2.638228004e-10
+2.218745508e-09
+5.827525081e-09
+1.543301813e-10
+4.907483457e-10
+6.901483311e-10
+2.088026801e-13
+7.836953093e-10
+1.937174755e-10
+1.715010225e-08
+4.069836853e-06
+2.919452232e-08
+1.565082965e-08
+3.4433546e-08
+1.256924112e-07
+4.363104327e-09
+2.287347968e-12
+6.966805897e-09
+5.995770348e-08
+1.289809313e-10
+1.695055516e-10
+2.301236675e-11
+9.445286023e-09
+2.11536282e-08
+1.662325435e-09
+1.025048152e-09
+9.719163301e-11
+1.732729349e-11
+4.419380825e-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.946069638e-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.909170155e-11
+4.653813812e-10
+3.587118654e-06
+4.446631546e-08
+1.894259386e-09
+4.744482097e-05
+4.433870092e-09
+2.21080639e-08
+1.03614786e-09
+1.103323529e-07
+4.99514086e-08
+8.363573856e-12
+3.280957443e-10
+3.14793974e-08
+6.330314597e-10
+3.863698763e-10
+5.960231262e-10
+4.255542277e-11
+1.165958403e-07
+2.505387626e-09
+1.331859656e-10
+9.172006774e-07
+6.582144563e-08
+1.542525158e-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
+8.693228501e-10
+2.320742865e-05
+2.036071812e-07
+3.212921899e-08
+7.129708873e-08
+1.481190721e-09
+9.133803854e-07
+9.416314797e-11
+1.481488075e-08
+2.317757165e-06
+3.901179725e-08
+4.627532631e-12
+2.494522948e-08
+9.09456782e-10
+1.731912929e-08
+2.095780184e-08
+7.215786392e-08
+2.372661172e-09
+9.373987463e-13
+1.029803199e-11
+5.17026087e-07
+3.317347932e-07
+1.109691565e-08
+6.471580259e-07
+1.86439548e-06
+3.397207388e-11
+4.168122616e-08
+1.346803365e-11
+3.171802872e-06
+7.86619595e-11
+3.289183668e-10
+7.057835645e-14
+2.679389626e-07
+4.480005874e-10
+2.542481361e-10
+1.046857042e-09
+4.692837219e-12
+5.841268544e-10
+5.254576286e-07
+9.00341232e-11
+3.637289725e-13
+9.046831583e-09
+1.769848077e-08
+9.487515449e-07
+1.037605514e-10
+7.931101427e-08
+2.511567859e-07
+1.749569007e-09
+1.158694791e-07
+1.833616371e-06
+4.450088162e-08
+5.71525937e-10
+1.070535073e-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.463019698e-10
+3.444876867e-09
+7.868402056e-12
+1.272362874e-11
+3.427505822e-10
+8.989931067e-08
+2.83363773e-11
+3.075639475e-10
+5.26550054e-14
+4.262827162e-13
+7.39316909e-13
+5.385777656e-05
+8.367263438e-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.075597391e-09
+1.712491312e-09
+3.951931507e-07
+3.136603556e-10
+1.366756862e-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.463378514e-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.674189092e-09
+5.575422411e-08
+7.7367829e-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.742908307e-08
+5.174073262e-09
+1.378366535e-06
+0.0001075113033
+0.0002104550971
+1.291489023e-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
+6.920180685e-10
+1.261626874e-08
+7.91776628e-13
+7.95433631e-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.176396146e-12
+1.739126777e-09
+4.024332505e-07
+3.711093586e-08
+3.682019148e-09
+9.299169562e-11
+4.059979323e-10
+1.46124585e-05
+9.47475461e-11
+6.713919288e-14
+2.422745433e-09
+1.239867471e-07
+2.586712504e-08
+3.834753794e-09
+4.980992443e-08
+5.89070658e-10
+1.712526376e-13
+5.885757434e-12
+3.850022999e-12
+5.81521873e-10
+2.871328231e-07
+3.360472696e-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
+1.023916614e-07
+1.810052154e-10
+1.897974483e-06
+1.555504868e-07
+2.081802153e-11
+1.130167125e-07
+5.044103042e-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.401459523e-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
+6.934062739e-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.62934962e-09
+4.962377554e-11
+1.388864923e-10
+6.600434666e-08
+2.769795382e-07
+8.892370488e-07
+4.79076441e-07
+8.513265484e-09
+2.371009137e-11
+1.969842854e-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.442720089e-07
+3.403922546e-08
+1.040513338e-07
+2.01520989e-08
+2.367352254e-08
+1.455757844e-08
+4.519467641e-07
+6.28461962e-08
+1.681912432e-08
+3.350604832e-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.988348578e-06
+1.432660113e-12
+7.971765332e-11
+1.851907721e-07
+1.679589918e-10
+6.480753213e-06
+9.759320168e-09
+3.448700092e-09
+7.000832649e-11
+2.170389647e-09
+5.016091717e-09
+1.498097082e-09
+5.879045351e-10
+6.04856896e-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.594609818e-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.132922515e-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.7586551e-12
+1.42650763e-05
+1.449408916e-07
+4.244679669e-08
+3.617422863e-10
+8.345513919e-12
+7.09121725e-13
+8.179649539e-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.232824781e-10
+1.261283666e-09
+2.53541926e-10
+1.402713106e-06
+9.404881776e-10
+1.920817629e-07
+4.404107301e-11
+5.005042888e-10
+1.406564629e-07
+4.527644024e-10
+4.146766934e-07
+1.166277032e-07
+7.051068181e-09
+4.11849211e-09
+9.268930022e-07
+1.080637902e-10
+1.045597589e-06
+4.947490967e-07
+6.160106382e-12
+1.351622658e-08
+2.784201053e-09
+1.934479305e-08
+5.314561342e-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.77278499e-09
+3.679411129e-09
+8.938433543e-10
+5.60147652e-09
+1.526922169e-05
+3.497170215e-10
+9.33335016e-08
+1.359274e-08
+6.404241971e-11
+1.5355979e-11
+2.243449688e-09
+4.662114978e-09
+1.022032175e-10
+1.383890446e-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.068605738e-08
+3.831355591e-11
+1.364002007e-07
+3.403056538e-10
+5.381516624e-08
+6.729189153e-12
+1.207745127e-07
+4.017462281e-09
+1.315657914e-08
+7.126694662e-11
+1.491096858e-07
+7.20888103e-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
+6.099493891e-09
+2.644291342e-09
+2.306855272e-08
+7.322174164e-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.726612432e-12
diff --git a/t/ME_data/ME_Wp.dat b/t/ME_data/ME_Wp.dat
index d0ea85e..4aeb8be 100644
--- a/t/ME_data/ME_Wp.dat
+++ b/t/ME_data/ME_Wp.dat
@@ -1,1289 +1,1289 @@
-0.0001355719843
-3.608722394e-05
-4.306341977e-07
-9.75550325e-07
-7.965530581e-08
-1.158741173e-06
-2.661842361e-06
-2.304823849e-09
-2.352135748e-07
-1.829734536e-06
-7.663338505e-10
-1.356612268e-07
-3.025163716e-07
-9.674843355e-08
-1.085770422e-08
-1.140610095e-07
-9.611408258e-06
-9.926075902e-06
-0.0002395617261
-3.935061026e-07
-1.135288394e-06
-3.820200425e-06
-9.707596176e-05
-1.989871947e-08
-4.670964333e-06
-6.369460664e-08
-5.769266019e-06
-6.100771968e-07
-4.177606366e-07
-5.131150139e-05
-2.623663409e-08
-9.921267961e-07
-2.818624505e-05
-2.357728349e-06
-1.529409143e-07
-3.812118593e-09
-4.089891622e-06
-5.519579034e-08
-3.108467374e-05
-6.275083184e-07
-0.0004711631231
-1.064846011e-10
-3.599907223e-07
-0.0005693437265
-5.34425931e-06
-1.369519561e-07
-4.610580273e-08
-2.759136394e-08
-0.0002011662853
-8.792673722e-06
-2.70389791e-06
-1.871336935e-09
-6.645206867e-07
-0.01345911877
-8.025796761e-06
-1.131187139e-07
-2.178470183e-07
-3.510890525e-05
-1.89984448e-07
-1.045126464e-06
-1.869095439e-06
-2.768546736e-06
-8.551014251e-08
-7.773400289e-07
-4.5314433e-06
-1.601178083e-06
-1.364165586e-07
-5.968291371e-08
-1.972884889e-07
-7.870126436e-08
-1.027083098e-09
-1.687474041e-07
-6.312089331e-10
-3.39183549e-07
-4.915897747e-06
-1.471309784e-08
-5.806965374e-07
-1.107356106e-06
-2.913951187e-05
-2.124038907e-06
-2.12990617e-07
-1.356428765e-06
-2.199225431e-08
-9.711358047e-08
-0.0001385574072
-6.515223687e-07
-2.5352989e-05
-9.498820108e-06
-7.275411577e-08
-3.660521512e-08
-1.057452473e-07
-6.037071105e-08
-1.535388649e-05
-8.248385786e-07
-3.681438798e-07
-6.978799537e-07
-0.0001134623553
-0.0031723732
-0.0002184140303
-1.851576802e-06
-2.387181833e-07
-0.0002408737584
-2.563590676e-07
-1.00063883e-09
-4.85334472e-06
-1.037554067e-07
-7.119588313e-06
-2.561893885e-06
-6.552784786e-08
-2.50165186e-08
-3.2201158e-08
-4.669232163e-07
-1.713318068e-05
-1.245254933e-09
-7.470170632e-06
-1.121794755e-10
-2.566806176e-08
-0.0006902527912
-1.619690794e-08
-0.007842917065
-3.718578869e-05
-0.0007152647352
-3.366873265e-05
-3.59028058e-05
-0.0001083353837
-1.746053028e-07
-2.714474997e-05
-5.495139342e-05
-6.535082147e-05
-5.041690089e-07
-3.546093001e-06
-1.20179547e-08
-2.615186338e-08
-0.005544505766
-2.669153731e-08
-1.124413228e-07
-2.097675954e-07
-0.0004497023181
-3.522902236e-06
-3.609796532e-10
-2.381544279e-06
-0.0001723836121
-8.005109621e-06
-2.558975219e-05
-1.661304558e-05
-7.830074882e-06
-8.689123182e-05
-1.604221799e-05
-1.56327932e-07
-7.475227989e-08
-3.375281865e-08
-7.208470216e-08
-5.524155313e-10
-5.4103721e-09
-9.793444078e-05
-1.21018869e-06
-5.403237142e-06
-9.396037828e-07
-9.218690916e-07
-1.916819566e-05
-2.17787046e-06
-0.0003020897621
-6.197213158e-08
-7.288410467e-08
-1.364194249e-05
-1.038835664e-05
-1.181892899e-07
-5.005163224e-06
-3.611225632e-08
-1.221974588e-08
-1.94276032e-05
-3.734309395e-06
-0.0001093995311
-2.068051728e-06
-8.857508826e-06
-4.173118216e-06
-6.957949482e-09
-1.448277035e-06
-4.552053973e-07
-1.37143731e-06
-8.5249063e-07
-1.659141616e-09
-1.245863146e-07
-0.0002242637796
-3.699075976e-06
-2.084644637e-10
-2.212848431e-08
-8.425415515e-08
-2.259085486e-07
-0.007259912738
-4.467602944e-06
-3.025351312e-06
-1.224941318e-08
-1.156121552e-07
-1.910495837e-06
-6.957101383e-08
-3.814134717e-08
-4.664811166e-07
-1.051815656e-05
-8.36147558e-09
-6.131289047e-07
-6.896621501e-06
-2.902398388e-05
-7.595782532e-09
-1.528994856e-08
-5.225540702e-09
-3.429459178e-05
-2.622252649e-09
-0.0005682063775
-7.453799253e-07
-1.807441554e-05
-9.740982954e-07
-2.028479208e-06
-9.039653513e-08
-2.480442432e-06
-0.0004804561254
-1.082404101e-08
-2.792579118e-06
-0.0002121921023
-9.812552552e-05
-7.828391194e-07
-0.001456303526
-1.94354748e-08
-8.760573751e-08
-6.867301069e-10
-1.796235147e-07
-3.651695166e-07
-1.227417157e-07
-6.64659658e-06
-8.406970208e-05
-0.001885290461
-0.000157033045
-2.314708694e-06
-0.0002982727329
-0.003229609172
-2.427561837e-10
-1.896038488e-06
-1.190944746e-08
-4.219946428e-07
-7.272059603e-08
-1.59196208e-06
-2.437096045e-07
-2.465458718e-10
-3.867407912e-06
-7.355333688e-09
-3.882793721e-06
-0.003249948479
-1.636247339e-05
-0.0003223793747
-2.270764736e-05
-1.158210386e-07
-4.80342984e-06
-1.938501144e-06
-1.000117331e-06
-7.966527985e-08
-1.977164443e-05
-3.69784658e-06
-0.0001118273673
-8.542125832e-09
-3.549018039e-05
-4.419576288e-08
-0.0004157235871
-1.269135254e-06
-1.336086217e-09
-0.0001810766875
-5.607527407e-08
-7.073836906e-08
-6.226377903e-05
-3.842917677e-07
-6.352283685e-05
-1.76753472e-08
-0.002554251882
-1.646539129e-08
-1.960645519e-08
-0.0002646806777
-1.199915455e-05
-2.978511607e-08
-0.000116967724
-1.112499633e-08
-4.229712985e-07
-4.907009823e-08
-1.380172172e-06
-1.086563459e-05
-4.639365797e-08
-5.978112399e-07
-7.468593264e-08
-2.128107625e-08
-3.477532299e-06
-1.453714307e-09
-3.088717592e-05
-3.041172747e-05
-2.604198178e-07
-1.592445808e-06
-1.544432861e-07
-3.372379466e-06
-0.0001468104602
-5.574767897e-07
-4.759127919e-10
-0.0009306719674
-5.974247994e-06
-0.0002033151455
-2.248619967e-06
-1.737478692e-05
-3.508166071e-06
-2.435499227e-09
-6.369003912e-06
-9.703728971e-09
-1.74070901e-06
-3.283306645e-07
-1.701425136e-08
-4.192916377e-08
-4.498844071e-05
-3.83404553e-05
-1.152621936e-09
-1.27759414e-05
-0.0002811237244
-1.725068759e-07
-1.077501154e-06
-0.004189517285
-1.659706256e-07
-1.343358874e-07
-8.327570632e-07
-2.346076524e-05
-5.667318083e-07
-1.495443263e-09
-6.283129175e-07
-7.691168557e-09
-1.613371819e-08
-4.367733457e-08
-1.328415079e-09
-1.452913735e-06
-2.025555437e-07
-1.293144251e-06
-3.674495466e-07
-4.037694296e-06
-2.086123444e-08
-1.579986535e-06
-7.231915707e-10
-3.157016501e-07
-0.0003660037215
-0.0008949054585
-5.638174283e-08
-3.2885886e-06
-5.432504554e-08
-5.18075933e-10
-5.121203913e-08
-1.939450987e-08
-1.979142876e-05
-2.529002473e-08
-0.0002538283061
-3.803979134e-05
-7.172326632e-06
-2.759109713e-06
-3.708776662e-06
-4.712989924e-08
-0.0001084418496
-5.277822093e-08
-4.364063475e-08
-1.209898063e-07
-3.136890903e-08
-1.044095046e-07
-6.962956273e-08
-6.454347396e-06
-2.03105437e-09
-4.064764161e-07
-1.125205303e-06
-3.916696455e-06
-5.611785349e-07
-1.848611742e-07
-2.582403205e-07
-8.8398711e-05
-2.850327029e-06
-2.108292593e-07
-1.232805054e-08
-9.539250223e-08
-0.006539873403
-2.250946039e-05
-1.89348364e-07
-2.619177604e-11
-3.531432382e-10
-1.155035358e-07
-1.892463999e-07
-1.339909549e-08
-5.529398846e-08
-1.151900114e-05
-0.005889721927
-8.216256879e-05
-1.557120111e-07
-9.089312296e-08
-4.410189877e-07
-4.125658696e-08
-1.888812401e-07
-5.72690691e-05
-1.874559047e-09
-9.008458744e-12
-1.709044888e-05
-1.67931414e-07
-8.335566244e-06
-1.141598503e-08
-0.002680457238
-1.068398085e-08
-1.957183797e-06
-2.244367588e-05
-1.231910933e-05
-4.629935793e-05
-4.576227205e-06
-1.980987775e-08
-3.939110441e-07
-2.650096111e-05
-8.45374912e-06
-3.87197728e-08
-0.002862691173
-4.135291614e-08
-0.0002240310513
-1.62602432e-07
-1.446697749e-07
-1.815721752e-06
-3.82343665e-07
-1.519921818e-06
-7.180741224e-10
-3.485436765e-05
-7.358200547e-08
-7.791803722e-06
-7.340098859e-07
-1.648829751e-05
-5.701378028e-07
-1.101811994e-07
-2.180113561e-08
-0.005048614692
-1.410953605e-08
-1.796629437e-05
-3.537585739e-05
-2.035011418e-05
-1.003894868e-08
-0.0007063058628
-8.670593589e-05
-6.826393725e-08
-5.90070804e-06
-1.447352925e-08
-1.072050501e-05
-2.460311e-05
-3.38994689e-08
-3.77746866e-07
-7.004891026e-07
-3.633307257e-05
-4.394910272e-07
-7.401654738e-07
-0.004667703557
-4.822544046e-07
-1.289604482e-08
-0.0001296636722
-1.38703251e-06
-2.915976119e-05
-1.716214639e-07
-2.901236713e-08
-7.505249455e-10
-7.295055264e-08
-5.765824764e-07
-3.265772439e-08
-1.700596569e-06
-3.410463373e-08
-7.817851601e-06
-0.0001713594978
-4.092939984e-08
-9.555130708e-08
-2.412195504e-06
-3.183516899e-09
-0.0006930495513
-1.228003614e-07
-8.804659671e-05
-2.135176373e-06
-4.693017626e-06
-5.98436871e-08
-2.487744792e-06
-1.776206809e-07
-6.533684691e-07
-1.608251404e-06
-4.483048806e-06
-1.390213066e-06
-2.463272535e-09
-0.0001373179164
-4.692519626e-10
-6.223649822e-09
-3.026899162e-06
-5.540599649e-08
-5.422865068e-08
-8.715360349e-08
-3.005262075e-06
-4.491517193e-06
-1.296332143e-08
-8.034151055e-07
-8.445675436e-07
-1.331376027e-08
-1.808252928e-06
-4.811825495e-06
-3.356636619e-06
-3.718204068e-07
-1.633210686e-06
-1.145748502e-06
-1.082083663e-06
-6.645503932e-07
-7.690064745e-06
-9.446655788e-07
-0.0001628165971
-0.0004161529432
-2.733182258e-06
-4.797981787e-06
-0.0001243192011
-0.0004489774905
-4.018994469e-08
-6.294131882e-05
-0.0006300937981
-3.276976793e-07
-5.253447018e-07
-6.013623386e-09
-6.133379953e-07
-7.498082273e-08
-9.70785668e-08
-2.892020376e-07
-0.0008858499734
-5.834224897e-12
-2.657258195e-05
-1.937050603e-08
-1.014207814e-08
-2.078416478e-09
-9.09266244e-09
-1.171070672e-06
-6.18600885e-07
-7.316626326e-08
-1.137929257e-05
-3.926212477e-07
-9.411347448e-08
-2.358881565e-05
-4.562416832e-07
-8.746279414e-07
-2.158977111e-07
-7.68251659e-08
-4.623476813e-08
-1.822643013e-09
-5.649636691e-07
-8.861095682e-07
-3.661799019e-06
-0.005151284521
-1.33326149e-08
-0.01070078066
-3.557312234e-07
-7.956098508e-07
-1.102026406e-05
-9.099091102e-08
-9.76046916e-07
-4.026076856e-07
-3.148718363e-05
-3.652135323e-08
-5.83259011e-08
-0.0002758602956
-5.979826148e-06
-2.336313349e-06
-1.214278297e-06
-1.25701869e-05
-4.380095687e-07
-8.01469849e-07
-0.00316958096
-9.221623949e-05
-4.690760742e-07
-7.648050663e-07
-1.418690894e-05
-2.220802074e-07
-3.142017749e-07
-1.911591032e-07
-2.45298426e-08
-0.0001445594441
-2.061494003e-07
-1.315444256e-09
-3.270418427e-05
-2.302140371e-07
-4.002095191e-06
-1.609778389e-06
-1.156198845e-08
-4.49026945e-08
-0.0002105189831
-1.502882545e-10
-0.0003938508262
-2.359522703e-06
-5.766519564e-05
-4.012744154e-07
-1.060136498e-07
-0.000214176753
-2.679472391e-06
-1.069264028e-05
-2.484323067e-09
-0.0001019831637
-1.193130901e-06
-1.086707804e-06
-1.985358343e-07
-1.172768569e-10
-4.982454227e-07
-2.574859959e-05
-0.001250253045
-2.058059347e-09
-1.333980568e-07
-9.818785061e-09
-5.154088274e-07
-0.0001083933403
-1.428558727e-06
-1.746251251e-05
-2.151559249e-05
-0.01028504094
-7.323992261e-07
-2.685867501e-08
-4.250514259e-05
-0.0004356795855
-3.28945742e-07
-0.003236859534
-3.00756172e-08
-2.793887221e-06
-1.897911806e-05
-1.619728379e-07
-8.95372942e-05
-4.802035497e-06
-7.858933592e-06
-7.610830748e-07
-2.314286619e-05
-4.939775908e-09
-4.92614662e-09
-8.469370317e-07
-3.809251938e-05
-8.402086849e-09
-4.426806359e-07
-2.426544223e-06
-3.814110772e-08
-1.746240046e-06
-1.524462135e-07
-7.921180879e-05
-2.101358689e-07
-4.839237017e-07
-5.352096872e-07
-4.622274946e-05
-0.001900140657
-1.924092071e-06
-0.00143054632
-4.980473899e-08
-0.001646505279
-1.600615665e-05
-2.692315114e-06
-4.189143306e-06
-9.988552464e-08
-3.325410401e-05
-1.063371193e-06
-4.230272909e-06
-3.988538107e-06
-0.0001050685431
-5.986075089e-08
-2.025564122e-06
-4.34519194e-07
-8.910595284e-05
-2.543273713e-06
-0.0002129943925
-8.738486453e-06
-4.913962461e-09
-3.353322522e-08
-3.330632645e-05
-1.951511181e-06
-1.384784662e-05
-2.148337293e-07
-1.685318775e-07
-1.114845659e-07
-6.02083664e-05
-1.280889362e-07
-4.215297005e-07
-3.062431729e-07
-6.986710671e-07
-1.615334628e-07
-1.317663184e-07
-0.0008030210999
-2.015927373e-05
-5.191868083e-06
-5.500044246e-07
-7.15420681e-08
-0.0002157285878
-9.440043769e-07
-6.512957712e-08
-1.03903574e-08
-0.0001795918484
-1.962894846e-05
-1.739516157e-07
-2.125764853e-08
-1.743490742e-05
-1.541416437e-06
-3.39198022e-06
-8.359097007e-06
-1.415613754e-09
-7.887560312e-07
-1.745081942e-07
-1.93272986e-07
-9.82806121e-07
-1.291461771e-07
-9.278171463e-05
-4.264104348e-06
-3.754456141e-07
-3.45261236e-05
-8.101309383e-06
-4.056256867e-09
-2.25304959e-07
-1.172523689e-05
-4.796449477e-07
-3.785295788e-09
-2.390481376e-05
-5.308836572e-08
-4.670596214e-05
-6.758177723e-05
-3.147635808e-09
-1.661568333e-05
-5.893559314e-08
-3.900939991e-05
-3.504262189e-08
-8.675964675e-05
-0.000133599036
-1.302314857e-06
-1.146394401e-06
-6.394208991e-06
-2.519497163e-05
-0.000136705096
-4.154554201e-09
-2.099823438e-06
-2.146448637e-05
-1.233863139e-09
-0.001728401026
-4.092153785e-05
-0.007151464488
-4.760189089e-09
-0.0007525693775
-1.763213602e-08
-2.706320224e-07
-4.16893951e-06
-6.81377324e-07
-6.199680386e-06
-1.450358333e-09
-0.001178944037
-3.552524899e-07
-0.001006339432
-3.6848606e-07
-2.167674886e-07
-2.537842237e-06
-7.658583081e-07
-2.591411922e-07
-4.604356596e-08
-4.168374132e-07
-7.238778416e-09
-1.170127812e-06
-4.393582246e-07
-0.0007919329994
-1.028777638e-06
-6.918341744e-08
-9.436340567e-08
-1.591183982e-06
-2.089478665e-06
-1.613369096e-07
-3.637102367e-07
-9.604978456e-07
-9.357975907e-07
-2.887515361e-06
-6.126247876e-06
-1.015660593e-05
-5.755045288e-06
-0.002323684389
-8.012996825e-07
-5.265198999e-07
-0.0002032569176
-1.451031358e-07
-5.47702166e-07
-7.468912832e-07
-1.172272852e-05
-5.000191344e-06
-1.572889839e-06
-6.442065446e-08
-2.908881614e-05
-4.569176417e-05
-0.0003671971122
-1.009483851e-07
-1.696662821e-09
-1.138346236e-08
-7.716922346e-07
-3.529252962e-06
-6.363107446e-07
-1.932801605e-07
-5.985835074e-07
-3.856272451e-06
-8.483829546e-07
-7.519170568e-09
-6.046535627e-06
-8.332015402e-05
-0.0004929270086
-1.066348746e-06
-6.354668794e-05
-2.325179699e-05
-3.330122089e-07
-7.907070499e-09
-3.51499146e-06
-6.69519437e-06
-7.791955277e-08
-3.007407175e-09
-1.687262336e-06
-2.966015735e-06
-2.551884972e-08
-0.02757047144
-1.902124553e-06
-1.85886341e-06
-1.174589642e-07
-6.265121215e-07
-0.0001498056381
-2.510077496e-07
-0.003704558141
-7.864571581e-05
-1.77636514e-08
-0.0002011705268
-4.239853221e-06
-1.05657366e-06
-0.0008521527281
-4.768494505e-07
-5.244547978e-06
-0.0001425035783
-4.507288271e-07
-3.09253883e-07
-0.007681533917
-1.571813451e-07
-3.341400742e-08
-9.577252639e-07
-1.135355463e-09
-1.20086557e-07
-4.167792379e-06
-7.827764132e-06
-1.444125408e-06
-2.56704074e-05
-3.703109696e-07
-2.683372002e-05
-2.223174581e-07
-1.771597066e-05
-1.154476033e-07
-4.676107605e-07
-1.045592241e-08
-5.174222885e-07
-8.73448236e-07
-1.146406684e-08
-8.784051991e-07
-7.500525642e-10
-1.921656555e-05
-5.899142263e-08
-7.304760895e-05
-1.070817369e-08
-2.432332986e-05
-2.466303926e-09
-1.587801133e-05
-5.253580132e-08
-1.186388122e-06
-2.513054159e-08
-2.878256017e-05
-1.268594971e-09
-4.036344626e-07
-1.480245095e-05
-0.007764649543
-1.266626553e-05
-2.673316926e-07
-2.052285927e-07
-3.026411679e-09
-3.958784182e-09
-5.153150954e-10
-2.304903783e-10
-4.001726091e-09
-5.422669345e-12
-1.07974246e-08
-7.876103608e-07
-2.049298389e-13
-2.452583297e-10
-6.723994075e-09
-1.881390674e-09
-8.769216371e-09
-1.325727129e-07
-8.79685468e-10
-8.598808624e-09
-1.838871103e-09
-1.411793652e-09
-3.180735553e-09
-1.657163942e-09
-6.291661793e-07
-1.407385603e-08
-2.446407049e-10
-3.694685136e-06
-7.168304193e-08
-1.515131205e-07
-5.976833111e-07
-9.943757037e-11
-1.770333366e-10
-6.826832537e-10
-3.501999566e-09
-1.003726186e-11
-2.246679298e-10
-1.56313715e-08
-1.258803576e-08
-1.510698432e-09
-1.860286401e-08
-7.436044673e-11
-8.891994306e-11
-8.343726078e-07
-7.82113065e-10
-7.372198961e-09
-1.7379478e-08
-4.796628257e-10
-1.006843272e-11
-2.297522445e-07
-2.96433985e-09
-5.119472399e-06
-1.217098718e-09
-1.247856004e-10
-2.379923838e-10
-6.847023565e-08
-1.126084699e-08
-9.366371857e-09
-8.815353934e-13
-1.248942678e-09
-1.28799905e-06
-1.862006169e-05
-5.986015285e-09
-3.576379278e-09
-1.396207937e-07
-5.597776909e-09
-1.227869193e-07
-3.184775395e-10
-1.281548492e-09
-3.785370229e-08
-8.065381915e-10
-1.797326508e-08
-4.870916557e-09
-1.481421747e-08
-6.148653826e-13
-2.607686069e-08
-7.503399307e-09
-7.31997834e-10
-3.917579692e-06
-2.456001118e-09
-1.635872696e-09
-1.504286856e-07
-4.626076248e-12
-2.544705877e-10
-2.326334148e-09
-1.209465237e-07
-9.76623574e-09
-2.844168649e-07
-1.201220073e-06
-7.295130141e-08
-2.673472441e-08
-3.217663506e-11
-3.051103331e-08
-8.28476209e-08
-2.058274741e-10
-2.829620954e-09
-6.317741319e-05
-5.647654869e-08
-3.939846598e-09
-6.94535699e-09
-2.688849469e-09
-1.246699517e-07
-1.659904595e-07
-2.236198242e-05
-9.48051308e-09
-9.500858057e-07
-7.271132888e-08
-4.043174967e-07
-7.378146611e-10
-1.15122787e-07
-3.25624697e-08
-1.170385948e-12
-5.503757963e-08
-1.043829653e-11
-1.203555505e-08
-1.075568487e-10
-8.108086268e-07
-4.847855376e-11
-7.343632999e-06
-1.187566426e-11
-3.504033234e-08
-7.018111165e-12
-2.46365153e-10
-1.851835159e-10
-1.513115014e-09
-8.018682005e-09
-3.929445257e-06
-2.084075835e-07
-5.951216622e-10
-3.507041226e-06
-5.267974518e-12
-3.372609243e-06
-1.694025855e-11
-1.867025942e-10
-2.116504705e-10
-3.831483934e-10
-6.969465032e-05
-1.539468087e-08
-1.101455293e-11
-1.388260307e-10
-5.247853733e-08
-4.682122196e-08
-1.641630864e-10
-2.193600975e-08
-1.553226091e-09
-2.996160922e-08
-2.723720585e-11
-1.94231471e-09
-1.292957006e-11
-3.828518709e-12
-1.610161368e-08
-1.687340239e-06
-1.925507093e-09
-4.366763058e-13
-6.454544637e-07
-6.024146948e-07
-2.580279684e-10
-1.225823158e-05
-1.999348472e-11
-4.860969642e-11
-2.362388726e-08
-1.373679959e-08
-3.790417277e-12
-1.087173802e-08
-3.129309985e-07
-1.364398599e-09
-1.715322136e-05
-3.172978915e-08
-1.823609884e-08
-3.114527252e-09
-3.26147148e-10
-2.126201737e-05
-5.67083409e-08
-9.666272186e-10
-7.465320939e-10
-1.354621046e-10
-2.460861093e-08
-1.087512595e-09
-2.736687172e-07
-5.11303402e-10
-6.306214806e-07
-3.166204304e-09
-2.044824307e-08
-6.895612872e-10
-6.672834049e-11
-5.398174219e-09
-1.015670186e-07
-5.845736032e-10
-4.836786585e-08
-5.100824595e-10
-1.572989158e-08
-1.787382013e-10
-1.632652197e-08
-7.017280062e-08
-7.320290175e-12
-3.029928398e-11
-1.409128876e-12
-1.23856674e-06
-8.502728239e-08
-3.438550409e-08
-4.863721153e-07
-5.154439531e-07
-2.08972413e-09
-3.431301197e-10
-1.781924049e-08
-1.544286506e-09
-4.308676963e-09
-2.652066437e-09
-1.604320244e-11
-1.019690001e-05
-1.123300801e-09
-2.815571339e-12
-1.072295152e-10
-6.773569517e-09
-2.399435656e-09
-1.754777793e-07
-6.11811144e-11
-8.592783988e-06
-6.887732464e-11
-1.799971693e-09
-2.674451287e-10
-1.267733301e-08
-1.616784133e-09
-2.418432767e-10
-2.161777683e-07
-3.59476746e-06
-1.314807779e-05
-3.035190047e-06
-5.146947381e-12
-8.12518705e-07
-2.904383899e-07
-8.278936106e-08
-1.491259803e-12
-3.232769716e-10
-3.014861034e-07
-3.869348362e-08
-4.060145209e-09
-2.722588244e-09
-1.252225236e-06
-8.534092377e-10
-1.170269795e-13
-1.013048209e-07
-1.173680889e-10
-1.230879501e-06
-3.603057249e-07
-2.340497478e-10
-1.622753821e-07
-1.855112238e-10
-1.873444014e-13
-1.477984664e-10
-5.974804124e-09
-5.502900531e-08
-6.238844281e-09
-2.281648653e-08
-2.708668242e-09
-8.942323853e-07
-8.600240627e-08
-5.31399731e-08
-1.1503287e-06
-4.275682333e-10
-2.53579699e-12
-1.472728627e-07
-2.054544355e-10
-2.452448293e-06
-2.149816531e-09
-1.302067002e-08
-1.354519207e-05
-1.493773809e-10
-4.155193611e-09
-1.975443913e-09
-7.883829759e-09
-3.017039098e-08
-6.106751813e-07
-7.433047934e-09
-3.802076122e-08
-1.356542653e-08
-7.945943977e-11
-6.146929104e-09
-1.06127379e-06
-3.425627165e-09
-4.724471453e-09
-2.264989501e-06
-5.206993078e-12
-1.90383962e-11
-5.585175902e-09
-5.143389714e-12
-8.796345158e-08
-2.018357685e-09
-7.316136952e-07
-6.365052389e-11
-5.084402064e-08
-4.955635943e-10
-7.57908344e-10
-1.041589492e-10
-1.067922679e-10
-2.629806672e-10
-7.25350299e-09
-3.644402439e-09
-3.524112279e-06
-1.911510927e-10
-7.705863931e-09
-9.497501985e-06
-1.776186632e-07
-7.672061364e-12
-1.053749529e-07
-4.528511106e-07
-2.689071802e-11
-2.172737512e-09
-1.388580492e-10
-8.063945293e-10
-5.664095782e-08
-1.744805218e-09
-2.052101608e-11
-2.11086039e-11
-4.471965164e-07
-1.547872699e-09
-1.123990847e-08
-1.220466556e-08
-7.86940138e-07
-1.643506198e-10
-1.008594322e-08
-3.353990714e-07
-6.498831028e-10
-1.784315352e-10
-3.805121546e-07
-8.427309526e-07
-1.498075756e-09
-1.039473919e-10
-1.111563522e-08
-1.747513537e-09
-2.355165347e-09
-1.678234532e-08
-2.202228295e-10
-5.649821709e-08
-7.451026015e-08
-3.278979106e-11
-3.654252985e-11
-1.935636311e-11
-4.454493635e-09
-1.468840448e-11
-6.571279637e-09
-6.056988847e-10
-1.45101906e-07
-1.129031522e-10
-1.042132417e-11
-3.257388556e-11
-9.125965382e-09
-1.157786708e-08
-1.347062065e-10
-1.772554211e-07
-2.066007249e-07
-1.183381188e-10
-4.340661853e-11
-1.724089243e-07
-1.017527503e-09
-4.44819414e-08
-9.298037883e-10
-1.457982064e-08
-1.344707238e-06
-3.942998333e-10
-6.43175857e-10
-2.598344201e-09
-9.723411144e-11
-5.888094132e-07
-1.25096091e-08
-1.918965374e-08
-1.266172494e-09
-2.35856138e-08
-9.312557307e-07
-4.777100833e-09
-1.10131928e-05
-4.4646416e-10
-7.607866734e-08
-5.154676048e-10
-2.264518551e-08
-8.764203667e-09
-8.615359565e-07
-1.40030428e-06
-2.971220432e-07
-1.703066362e-09
-9.085894745e-08
-7.676857842e-09
-3.495643794e-07
-5.348620008e-10
-8.55049288e-10
-5.359621176e-10
-3.270584284e-08
-2.199342971e-11
-3.481833909e-07
-6.965993643e-10
-1.079185991e-09
-2.042388119e-11
-1.522460286e-08
-1.814688226e-09
-3.798271467e-08
-3.25158391e-06
-1.339564567e-08
-1.067207795e-10
-2.907408723e-09
-2.121056488e-09
-1.929150312e-10
-5.485146496e-10
-2.944552971e-10
-3.400562268e-09
-2.722315508e-07
-1.103475417e-07
-4.918181731e-10
-1.403530819e-08
-1.186111191e-10
-2.383852963e-09
-6.366433665e-10
-2.884801863e-08
-3.233653865e-09
-0.0001662977522
-2.949009635e-10
-2.818141893e-08
-2.146479379e-09
-2.878568427e-11
-1.429984069e-11
-2.151490158e-11
-4.991815647e-07
-7.60856163e-11
-4.322197412e-08
-8.515744987e-10
-4.522027747e-09
-4.658966436e-08
-4.872475335e-10
-1.225955162e-08
-9.732456622e-09
-5.55287071e-08
+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
+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
+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
+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
+5.422561302e-12
+1.079720947e-08
+7.875946683e-07
+2.049257559e-13
+2.452534431e-10
+6.723860105e-09
+1.881353189e-09
+8.769041652e-09
+1.325700715e-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.826696518e-10
+3.501929792e-09
+1.003706187e-11
+2.246634535e-10
+1.563106006e-08
+1.258778496e-08
+1.510668332e-09
+1.860249337e-08
+7.435896516e-11
+8.89181714e-11
+8.343559836e-07
+7.820974821e-10
+7.372052076e-09
+1.737913173e-08
+4.796532688e-10
+1.006823211e-11
+2.297476668e-07
+2.964280788e-09
+5.119370398e-06
+1.217074468e-09
+1.247831141e-10
+2.37987642e-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.184711941e-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.319832495e-10
+3.917501637e-06
+2.455952184e-09
+1.635840103e-09
+1.504256884e-07
+4.625984077e-12
+2.544655175e-10
+2.326287797e-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.058233732e-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.04309441e-07
+7.377999608e-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
+1.851798263e-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.693992103e-11
+1.866988743e-10
+2.116462536e-10
+3.831407595e-10
+6.969326172e-05
+1.539437415e-08
+1.101433347e-11
+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
+3.828442429e-12
+1.610129287e-08
+1.68730662e-06
+1.925468729e-09
+4.366676054e-13
+6.454416036e-07
+6.024026922e-07
+2.580228274e-10
+1.225798734e-05
+1.999308637e-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
+1.82357355e-08
+3.114465198e-09
+3.261406498e-10
+2.126159374e-05
+5.670721103e-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.672701099e-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
+3.02986803e-11
+1.409100801e-12
+1.238542063e-06
+8.502558829e-08
+3.438481899e-08
+4.863624248e-07
+5.154336834e-07
+2.089682494e-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.072273787e-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
+5.146844833e-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.170246478e-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.974685081e-09
+5.502790891e-08
+6.238719977e-09
+2.281603193e-08
+2.708614274e-09
+8.942145684e-07
+8.600069274e-08
+5.313891433e-08
+1.15030578e-06
+4.275597144e-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.155110822e-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.585064622e-09
+5.143287236e-12
+8.796169898e-08
+2.01831747e-09
+7.315991184e-07
+6.364925571e-11
+5.084300761e-08
+4.955537206e-10
+7.578932433e-10
+1.04156874e-10
+1.067901402e-10
+2.629754276e-10
+7.25335847e-09
+3.644329828e-09
+3.524042064e-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.052060722e-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.784279801e-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.278913775e-11
+3.654180177e-11
+1.935597745e-11
+4.454404883e-09
+1.468811182e-11
+6.57114871e-09
+6.056868166e-10
+1.45099015e-07
+1.129009027e-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
+5.154573346e-10
+2.264473432e-08
+8.764029047e-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.042347426e-11
+1.522429952e-08
+1.81465207e-09
+3.79819579e-08
+3.251519125e-06
+1.339537878e-08
+1.067186532e-10
+2.907350796e-09
+2.121014228e-09
+1.929111876e-10
+5.485037209e-10
+2.944494304e-10
+3.400494514e-09
+2.722261269e-07
+1.103453431e-07
+4.918083741e-10
+1.403502855e-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.146436612e-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.552760073e-08
diff --git a/t/ME_data/ME_w_FKL_tree.dat b/t/ME_data/ME_w_FKL_tree.dat
index 3c21bd1..aa38bd9 100644
--- a/t/ME_data/ME_w_FKL_tree.dat
+++ b/t/ME_data/ME_w_FKL_tree.dat
@@ -1,556 +1,556 @@
-1.66735e-10
-4.4041e-08
-5.92405e-10
-0.0366658
-3.02387e-05
-6.33019e-05
-1.3673e-05
-0.0181281
-0.0140049
-2.7364e-07
-1.42529e-06
-0.376058
-1.4039e-07
-0.000204353
-3.25009e-06
-0.0202204
-4.52458e-06
-0.577611
-0.00126865
-1.42403e-05
-5.69446e-05
-3.24538e-06
-6.95782e-06
-502.564
-0.5466
-5.6995e-08
-0.0172244
-4.88591e-06
-1.38707e-07
-3.05536e-07
-0.00398169
-1.53828e-09
-7.82136e-12
-0.000227506
-4.39617e-08
-0.00013258
-0.000308858
-1.19829e-09
-2.09184e-06
-4.61199e-10
-0.00033569
-444.624
-2.96405
-6.36854e-09
-4.08676e-07
-0.14296
-2.36192e-08
-0.000639599
-2.76895e-06
-0.00415682
-1.31852e-09
-0.0549343
-7.37083e-05
-1.55399
-1.27455e-07
-3.36237e-07
-3.20486e-10
-3.5427e-05
-3.09312e-08
-0.0143784
-4.62088e-07
-9.02783
-0.00219736
-1.57684e-09
-1.32025e-05
-1.21352e-09
-2.81855e-07
-0.000574464
-1.50161e-07
-0.00157949
-0.000365113
-1.00946e-05
-0.0132691
-1.66234e-07
-2.28424e-07
-0.000192614
-18453.2
-0.000166803
-2.09525e-06
-3.20392e-07
-2.31454e-05
-0.000354074
-0.037135
-0.000172935
-4543.48
-4.26989e-05
-462.744
-2.12671e-09
-0.000418861
-5.95467e-05
-109.695
-235.696
-5.95639e-10
-1.72486e-05
-2.91207e-08
-1.81559e-05
-0.000350347
-7.02993e-08
-0.0704984
-2.96942e-07
-7.6676e-11
-5.13603e-05
-2.97235e-06
-0.223145
-1.64837e-07
-2.89016e-13
-9.51596e-12
-0.00375317
-1.85032e-07
-2.34686e-05
-1.20398e-05
-7.04312e-06
-2.02827e-06
-0.00464863
-2.03636e-05
-1.04609
-0.00591302
-4.77803e-07
-2.01462e-06
-0.000182964
-0.0489411
-2.61445e-09
-0.000100035
-5148.58
-0.000216259
-0.000332495
-6.04945e-08
-8.57456e-05
-2.76748e-05
-1.25562e-12
-0.000422337
-0.00133835
-0.00744617
-1.14326
-1.43195e-08
-6.38635e-07
-0.00862448
-4.37711e-06
-0.212646
-4.61289e+06
-4.01648e-05
-1.0193e-10
-2.31501e-05
-1.15591e-08
-1.13292e-07
-6.22732e-06
-2.5339e-05
-5.253e-08
-0.0957011
-0.00346245
-0.00202415
-0.000809109
-9.25638e-08
-0.00377243
-0.0273365
-4.03002e-07
-3.29569e-08
-7.93097e-06
-3.40496e-08
-0.000230937
-1.81192e-11
-6.81293e-10
-3.40697e-05
-0.240183
-0.00378173
-109851
-6.14314e-07
-1.35922e-06
-3.41102e-11
-3.51399e-07
-0.000198309
-0.000188839
-6.76021e-08
-0.000284694
-1.43864e-08
-5.16049e-09
-5.62878e-05
-0.770015
-0.247726
-9.93266e-09
-3.18242e-07
-1.00451e-05
-3.30423e-05
-1.06448
-6.225e-07
-6.60516e-08
-1.17284e-05
-0.00509921
-1.99188e-06
-1.50062e-10
-2.80521e-07
-2.828e-06
-0.445898
-2.33741e-08
-0.0750609
-1.61982e-08
-2.38598e-06
-3.91605e-10
-0.00044492
-9.87935e-05
-6.33457e-06
-0.00212007
-1.7068e-05
-12800.8
-7.84114e-05
-3.56353e-06
-1.53868e-07
-0.000147522
-1.59291e-06
-0.0760704
-6.16233e-07
-0.0110517
-0.132904
-0.0208312
-2.65967e-08
-5.05612e-05
-0.00799967
-6.28914e-07
-3.67441e-07
-0.711692
-1.4769e-07
-0.00133689
-9.65703e-05
-0.000140625
-0.000165611
-1.4526e-10
-84.6939
-7.30804e-05
-4.34679e-05
-1.13212e-05
-9.76841e-07
-0.138946
-0.857284
-4.80432e-07
-159.45
-0.0037607
-0.000330063
-8.6496e-05
-0.969737
-0.0461401
-548.271
-3.43983e-07
-3.45997e-06
-1.404e-12
-1.60387e-05
-4.70059e-07
-4630.86
-8.43376e-05
-7.53079e-06
-1.23222e-12
-0.0482061
-7.35608
-3.0975e-05
-1.80607e-05
-6.0602e-06
-1.25394e-08
-1.04957e-06
-3.32049e-06
-5.35062e-07
-0.00359605
-7.3544e-08
-9.09049e-06
-1.36527e-10
-2.98454e-06
-2.66174e-05
-7395.92
-3.77381e-07
-1.82459e-07
-0.0035087
-3.15536e-07
-0.00029903
-4.47086e-08
-0.000322599
-3.19833e-05
-1.44715e-05
-2.91342e-07
-3.66301e-07
-4.57968e-05
-5.56722e-10
-6.5099e-07
-1.54889e-07
-0.000163301
-2.26083e-11
-0.00015639
-3.58445e-05
-4.53362e-07
-2.07853e-05
-0.000543815
-0.000193472
-5.55595e-05
-0.0003522
-2.36567e-05
-4.95004e-06
-5.22835
-1.45351e-05
-0.00108416
-0.00155746
-0.740537
-2.04926e-06
-6.74606e-07
-0.525897
-2.86106e-09
-0.00140433
-9.73885e-07
-7.87825e-07
-9.11382e-07
-1.03271e-05
-0.00819761
-9.34316e-07
-102.715
-3.12936e-06
-8.17265e-05
-0.793069
-0.0394783
-0.249998
-3.2951e-10
-3.14814e-05
-6.84633e-07
-4.12731e-08
-3.30826
-3.83301e-05
-5.17716e-11
-0.00863598
-4.86168e-13
-2.07733
-1.52121e-05
-0.00762508
-3.9995e-07
-1.20631e-07
-8.72061e-14
-0.167408
-0.0349983
-2.80134e-08
-0.000149104
-42.7578
-0.0174395
-0.000805168
-4.51894e-05
-1.13497e-08
-0.00223994
-0.327996
-2.51105e-06
-6.52328e-06
-0.00307739
-0.00010686
-0.0826528
-3.40586e-09
-4.443e-08
-3.13325e-09
-0.393115
-2.24245e-05
-0.514506
-0.012296
-2.91465e-08
-6.13021e-11
-0.0106812
-2.1283e-05
-0.219704
-0.000904437
-0.00613495
-4.52535e-07
-0.00248037
-0.00206347
-9.02615e-05
-1.5555e-07
-5.08439e-06
-8.87029e-05
-0.00398221
-6.00901e-08
-3.42807e-06
-6.36962e-06
-1.09107e-05
-5.67e-06
-1.39205
-4.60967e-06
-0.101108
-0.0930008
-4.45779e-09
-0.000216392
-8.08965e-13
-0.00669366
-0.31851
-1.95031e-09
-1.27845e-08
-1.75725
-6.02183e-06
-9.47245e-06
-2.73499e-09
-1.31829e-06
-2.70901e-06
-6541.91
-0.0432065
-3.53221e-07
-6.71928e-05
-0.787997
-0.000468341
-0.0260916
-8.38173e-07
-9.59311
-1.42948e-06
-3.57455e-07
-9.90402e-07
-3.97145
-0.0663521
-1.9818e-06
-0.000625738
-1.44948e-06
-1.71863e-06
-3.2594e-06
-0.413732
-5.49708e-09
-81359.3
-9.32927e-06
-9.07516e-08
-8.47019e-06
-529.796
-8.03296
-2.46034e-05
-4.02271e-05
-6.76255e-05
-1.28593
-0.000184522
-5.46581e-11
-0.0292004
-0.00286131
-2.53505e-05
-2.14022e-10
-0.0119781
-3.36826e-11
-2.26669e-07
-3.71746e-07
-1.63972e-09
-1.79883e-05
-1.12241e-06
-0.000786734
-3.75728e-11
-1.04631e-05
-1.83096e-06
-0.000908951
-1.19379e-08
-5.85447e-06
-1.6532e-08
-3.08531e-05
-5.15335e-09
-6.67385e-08
-0.000987984
-0.0218896
-0.000673661
-1.4376e-07
-0.00919708
-1.93858e-06
-3.72294e-05
-0.00374186
-81844.1
-2.98802e-06
-0.113867
-3.84423e-06
-7.78978e-06
-40.3067
-1.64835e-06
-3773.67
-4.4311e-12
-0.031312
-0.000274236
-5.74005e-10
-4.09009e-06
-0.00976802
-6.13682e-07
-1.89011e-06
-3.18096e-07
-6.37238e-06
-7.34926e-06
-1.05138e-11
-0.00014211
-0.435855
-1.14883e-06
-8.41324e-08
-1.65963e-07
-0.000258003
-0.000278053
-3.97598e-06
-0.00385072
-6.17263e-06
-4.28477e+09
-3.35054e-05
-5.38143e-05
-26.8569
-0.000212268
-4.56831e-07
-2.43236e-06
-0.00044186
-1.61801
-1.29384e-05
-7.09936e-05
-0.0632148
-2.28731e-06
-8.46878e-06
-3.02247e-06
-4.90988e-08
-1.56847e-11
-63.7539
-3.22618e-07
-7.88706e-05
-4.0831e-07
-2.56971e-05
-0.00368127
-3.40935e-05
-7.56007e-08
-5.57694e-09
-2.19208e-07
-0.241623
-1.2466e-07
-1.21792e-06
-2.99997e-06
-7.90484e-05
-44.0162
-7.27495e-11
-0.255535
-20.4483
-1.10093e-09
-0.799591
-2.4149e-05
-0.0275875
-0.523435
-1.05659e-06
-0.0372607
-2.63343e-08
-9.11403e-07
-0.000531948
-3.19487e-07
-1.22984e-11
-468.197
-1.06812e-09
-0.00768798
-1.39065e-05
-0.000886794
-1.76499e-10
-1.0843e-05
-0.00534105
-2.39915e-11
-4.19033e-05
-0.00318565
-8.05371
-5.87035e-10
-1.77471e-07
-78509.9
-15.3982
-6.79612e-07
-1.14968e-06
-0.0236821
-8.65278e-05
-0.317341
-0.0186315
-1.09832e-10
-5.45839e-10
-5.49319e-09
+1.667315186e-10
+4.404017066e-08
+5.923929781e-10
+0.03666508128
+3.023811892e-05
+6.330069238e-05
+1.36727288e-05
+0.01812778747
+0.01400462796
+2.736345606e-07
+1.425266567e-06
+0.3760505288
+1.403875301e-07
+0.0002043491653
+3.250027572e-06
+0.02021997455
+4.524485983e-06
+0.5775996967
+0.001268626202
+1.423999659e-05
+5.69434408e-05
+3.245314232e-06
+6.957684481e-06
+502.5539886
+0.546589066
+5.699382516e-08
+0.01722406921
+4.885817083e-06
+1.387043832e-07
+3.055296275e-07
+0.00398161282
+1.538254389e-09
+7.821206371e-12
+0.0002275010776
+4.396085722e-08
+0.0001325770945
+0.0003088523271
+1.198263944e-09
+2.091801125e-06
+4.611899697e-10
+0.0003356833523
+444.6157154
+2.96399638
+6.368416799e-09
+4.086675293e-07
+0.1429569459
+2.36187578e-08
+0.0006395867848
+2.768892451e-06
+0.004156740339
+1.318496977e-09
+0.05493318836
+7.370685032e-05
+1.553957194
+1.274528902e-07
+3.362298367e-07
+3.204793071e-10
+3.54263096e-05
+3.093057968e-08
+0.01437807329
+4.620789095e-07
+9.027648503
+0.00219731232
+1.576808023e-09
+1.320220278e-05
+1.213500059e-09
+2.818491773e-07
+0.0005744528724
+1.501581137e-07
+0.001579455845
+0.0003651063047
+1.009436798e-05
+0.01326887726
+1.662304251e-07
+2.284194017e-07
+0.0001926104561
+18452.86145
+0.0001668000837
+2.095206203e-06
+3.203861113e-07
+2.314498192e-05
+0.0003540670002
+0.03713432111
+0.0001729313353
+4543.387336
+4.269801921e-05
+462.7351718
+2.126669342e-09
+0.0004188528579
+5.954551619e-05
+109.6927325
+235.6910069
+5.956272743e-10
+1.724826126e-05
+2.912010673e-08
+1.815557177e-05
+0.0003503405878
+7.0297927e-08
+0.07049700072
+2.969361912e-07
+7.667451411e-11
+5.135925587e-05
+2.972291616e-06
+0.2231408191
+1.648337501e-07
+2.890101433e-13
+9.515775559e-12
+0.0037530943
+1.850285892e-07
+2.346815717e-05
+1.203952406e-05
+7.042982993e-06
+2.028234987e-06
+0.004648534414
+2.036316202e-05
+1.046064594
+0.005912907534
+4.777939797e-07
+2.014579042e-06
+0.0001829605307
+0.04894013785
+2.614399079e-09
+0.0001000331728
+5148.47905
+0.0002162546666
+0.0003324886286
+6.049331808e-08
+8.57439134e-05
+2.767430164e-05
+1.255594728e-12
+0.000422328537
+0.001338320445
+0.007446024285
+1.143239994
+1.43191943e-08
+6.386226048e-07
+0.008624305643
+4.377026988e-06
+0.2126420458
+4612797.152
+4.016402807e-05
+1.019281655e-10
+2.314965225e-05
+1.155885575e-08
+1.132900933e-07
+6.227196475e-06
+2.533846927e-05
+5.252893646e-08
+0.09569925128
+0.003462382521
+0.0020241107
+0.000809092856
+9.256197468e-08
+0.003772354596
+0.02733597207
+4.029936956e-07
+3.295628446e-08
+7.930818292e-06
+3.404892e-08
+0.0002309328405
+1.811887164e-11
+6.812796603e-10
+3.406900397e-05
+0.2401784991
+0.003781651045
+109848.5319
+6.143017017e-07
+1.359193255e-06
+3.410957871e-11
+3.513925831e-07
+0.000198305341
+0.0001888354563
+6.760072294e-08
+0.0002846881218
+1.438607888e-08
+5.16039209e-09
+5.628667659e-05
+0.7699996394
+0.2477210875
+9.932465848e-09
+3.182352803e-07
+1.004494585e-05
+3.304169857e-05
+1.06445732
+6.224879045e-07
+6.605030351e-08
+1.172820826e-05
+0.005099112092
+1.991844825e-06
+1.50059318e-10
+2.805156093e-07
+2.827944566e-06
+0.4458888367
+2.337368164e-08
+0.0750594269
+1.619790162e-08
+2.385931472e-06
+3.915978966e-10
+0.0004449108452
+9.879150505e-05
+6.33444184e-06
+0.002120032931
+1.706764242e-05
+12800.56009
+7.840986998e-05
+3.563455571e-06
+1.538647921e-07
+0.0001475188555
+1.592883514e-06
+0.07606888819
+6.162212068e-07
+0.01105149681
+0.1329009412
+0.02083080371
+2.659620874e-08
+5.05602241e-05
+0.007999515094
+6.289014493e-07
+3.674334869e-07
+0.7116777276
+1.476867013e-07
+0.001336862253
+9.656841695e-05
+0.00014062231
+0.0001656081822
+1.452573321e-10
+84.69223131
+7.307891053e-05
+4.346706606e-05
+1.132101435e-05
+9.768221047e-07
+0.1389427947
+0.8572671404
+4.804230693e-07
+159.4469445
+0.003760629048
+0.0003300569962
+8.649428587e-05
+0.9697186064
+0.04613922975
+548.2597606
+3.439759113e-07
+3.459902785e-06
+1.403967881e-12
+1.603836846e-05
+4.70050048e-07
+4630.768694
+8.433593526e-05
+7.530639033e-06
+1.232192916e-12
+0.04820512745
+7.355937182
+3.097434638e-05
+1.806033422e-05
+6.060085027e-06
+1.253910765e-08
+1.049551452e-06
+3.320423212e-06
+5.350515263e-07
+0.003595978468
+7.35425805e-08
+9.090306272e-06
+1.365243147e-10
+2.984479239e-06
+2.661683236e-05
+7395.770412
+3.773738847e-07
+1.824555912e-07
+0.003508627071
+3.155299621e-07
+0.0002990237065
+4.470773979e-08
+0.0003225923823
+3.198267575e-05
+1.447122399e-05
+2.913359853e-07
+3.662938837e-07
+4.579591824e-05
+5.56710874e-10
+6.509772869e-07
+1.548860114e-07
+0.0001632982761
+2.26078942e-11
+0.0001563867319
+3.584381226e-05
+4.533535792e-07
+2.078486912e-05
+0.0005438046165
+0.0001934684099
+5.555844851e-05
+0.0003521935685
+2.36562676e-05
+4.949944419e-06
+5.228243829
+1.453484426e-05
+0.001084136247
+0.001557434021
+0.7405224934
+2.049217645e-06
+6.74592423e-07
+0.5258867438
+2.861005053e-09
+0.001404306405
+9.73866179e-07
+7.878094127e-07
+9.113639959e-07
+1.032693853e-05
+0.008197450272
+9.342974707e-07
+102.7129827
+3.129298248e-06
+8.172492317e-05
+0.7930532571
+0.03947753434
+0.2499930764
+3.295030571e-10
+3.148075144e-05
+6.846196446e-07
+4.12723336e-08
+3.308198517
+3.832929736e-05
+5.177059508e-11
+0.008635809082
+4.861589384e-13
+2.077292464
+1.521176383e-05
+0.007624935655
+3.99942051e-07
+1.206289002e-07
+8.720444999e-14
+0.1674051817
+0.03499759944
+2.801286086e-08
+0.0001491013213
+42.75697312
+0.01743917696
+0.000805152034
+4.518853522e-05
+1.134944356e-08
+0.002239900545
+0.3279897581
+2.510997933e-06
+6.523150073e-06
+0.003077328186
+0.0001068583252
+0.08265116311
+3.405794705e-09
+4.442918359e-08
+3.133188614e-09
+0.3931073001
+2.242401179e-05
+0.514495615
+0.01229571692
+2.914589812e-08
+6.13008955e-11
+0.01068101981
+2.12826257e-05
+0.2197000211
+0.0009044190984
+0.00613483036
+4.525265269e-07
+0.002480316843
+0.00206343391
+9.025978488e-05
+1.555465877e-07
+5.08428788e-06
+8.870110503e-05
+0.003982127756
+6.008888734e-08
+3.428007477e-06
+6.369497712e-06
+1.091047307e-05
+5.669888154e-06
+1.392027111
+4.609583801e-06
+0.1011063476
+0.0929989694
+4.457706325e-09
+0.0002163878214
+8.089493354e-13
+0.00669353176
+0.3185037668
+1.950268359e-09
+1.278425165e-08
+1.757219468
+6.021713895e-06
+9.472265881e-06
+2.734935172e-09
+1.318260485e-06
+2.708957193e-06
+6541.780132
+0.04320561368
+3.532141311e-07
+6.719153951e-05
+0.7879815796
+0.0004683319739
+0.02609109045
+8.381565463e-07
+9.592917303
+1.429446876e-06
+3.574476868e-07
+9.903821423e-07
+3.971367614
+0.06635086057
+1.981764538e-06
+0.0006257260869
+1.449454172e-06
+1.718595234e-06
+3.259331452e-06
+0.4137235511
+5.496974987e-09
+81357.72715
+9.329083772e-06
+9.074979936e-08
+8.470022064e-06
+529.7853256
+8.032804461
+2.460295783e-05
+4.022634352e-05
+6.76241946e-05
+1.285904395
+0.0001845179753
+5.465705536e-11
+0.0291998017
+0.002861256225
+2.534997204e-05
+2.14017616e-10
+0.01197790638
+3.368197968e-11
+2.266647534e-07
+3.717389776e-07
+1.639683132e-09
+1.798794617e-05
+1.12238298e-06
+0.0007867185765
+3.757207913e-11
+1.046286915e-05
+1.830925286e-06
+0.000908932743
+1.193763383e-08
+5.854353695e-06
+1.653169705e-08
+3.085250875e-05
+5.153252213e-09
+6.673716131e-08
+0.0009879644937
+0.02188915105
+0.0006736478856
+1.437570188e-07
+0.00919689793
+1.938540628e-06
+3.722872132e-05
+0.003741783731
+81842.52348
+2.987965499e-06
+0.1138645144
+3.844157179e-06
+7.789627934e-06
+40.30585138
+1.648319001e-06
+3773.592309
+4.431009224e-12
+0.03131139901
+0.0002742309107
+5.739935794e-10
+4.090014138e-06
+0.009767828669
+6.136698719e-07
+1.890077151e-06
+3.180893624e-07
+6.37225809e-06
+7.349117366e-06
+1.051360193e-11
+0.0001421072399
+0.4358467006
+1.148805789e-06
+8.413074125e-08
+1.659597018e-07
+0.0002579982621
+0.0002780472867
+3.975906181e-06
+0.003850647449
+6.17251411e-06
+4284683661
+3.350469943e-05
+5.381322199e-05
+26.85638779
+0.0002122633368
+4.568221053e-07
+2.432312982e-06
+0.0004418514628
+1.617974668
+1.293817999e-05
+7.099221858e-05
+0.06321356494
+2.287265277e-06
+8.4686102e-06
+3.022407149e-06
+4.909788141e-08
+1.568437743e-11
+63.75266761
+3.22612034e-07
+7.886901688e-05
+4.083024982e-07
+2.569662114e-05
+0.003681192521
+3.40928287e-05
+7.559921595e-08
+5.576827397e-09
+2.192042242e-07
+0.2416181335
+1.246573476e-07
+1.21789116e-06
+2.99990951e-06
+7.904684879e-05
+44.01535081
+7.274811089e-11
+0.255530375
+20.44788446
+1.100905094e-09
+0.7995748363
+2.414849244e-05
+0.02758696241
+0.5234252152
+1.056566077e-06
+0.0372599436
+2.633376081e-08
+9.113851924e-07
+0.0005319377128
+3.194810891e-07
+1.229820626e-11
+468.1881533
+1.068098842e-09
+0.007687828727
+1.390625724e-05
+0.000886776436
+1.764959754e-10
+1.084277463e-05
+0.005340941026
+2.399107396e-11
+4.190251504e-05
+0.003185585077
+8.053545372
+5.870235443e-10
+1.774670694e-07
+78508.30739
+15.39791168
+6.795987735e-07
+1.149657598e-06
+0.0236816412
+8.652613007e-05
+0.3173346064
+0.01863118456
+1.098294659e-10
+5.458278616e-10
+5.493083019e-09
diff --git a/t/ME_data/config_w_ME.yml b/t/ME_data/config_w_ME.yml
index c07d41c..27d826b 100644
--- a/t/ME_data/config_w_ME.yml
+++ b/t/ME_data/config_w_ME.yml
@@ -1,39 +1,39 @@
trials: 1
min extparton pt: 30
resummation jets:
min pt: 30
algorithm: antikt
R: 0.4
fixed order jets:
min pt: 30
event treatment:
FKL: reweight
unordered: reweight
extremal qqx: reweight
central qqx: reweight
non-resummable: discard
scales: 125
log correction: false
vev: 246.2196508
particle properties:
Higgs:
mass: 125
width: 0.004165
W:
- mass: 80.385
- width: 2.085
+ mass: 80.419
+ width: 2.0476
Z:
mass: 91.187
width: 2.495
random generator:
name: mixmax
seed: 1
diff --git a/t/check_res.cc b/t/check_res.cc
index 274427b..f9fc0d0 100644
--- a/t/check_res.cc
+++ b/t/check_res.cc
@@ -1,166 +1,171 @@
/**
* \authors The HEJ collaboration (see AUTHORS for details)
* \date 2019
* \copyright GPLv2 or later
*/
#include <iostream>
#include <math.h>
#include "LHEF/LHEF.h"
#include "HEJ/Event.hh"
#include "HEJ/EventReweighter.hh"
#include "HEJ/Mixmax.hh"
#include "HEJ/stream.hh"
#define ASSERT(x) if(!(x)) { \
std::cerr << "Assertion '" #x "' failed.\n"; \
return EXIT_FAILURE; \
}
namespace{
const fastjet::JetDefinition jet_def{fastjet::kt_algorithm, 0.4};
const fastjet::JetDefinition Born_jet_def{jet_def};
constexpr double Born_jetptmin = 30;
constexpr double extpartonptmin = 30;
constexpr double max_ext_soft_pt_fraction = 0.1;
constexpr double jetptmin = 35;
constexpr bool log_corr = false;
+ const HEJ::ParticleProperties Wprop{80.385, 2.085};
+ const HEJ::ParticleProperties Zprop{91.187, 2.495};
+ const HEJ::ParticleProperties Hprop{125, 0.004165};
+ constexpr double vev = 246.2196508;
using EventTreatment = HEJ::EventTreatment;
using namespace HEJ::event_type;
HEJ::EventTreatMap treat{
{no_2_jets, EventTreatment::discard},
{bad_final_state, EventTreatment::discard},
{non_resummable, EventTreatment::discard},
{unof, EventTreatment::discard},
{unob, EventTreatment::discard},
{qqxexb, EventTreatment::discard},
{qqxexf, EventTreatment::discard},
{qqxmid, EventTreatment::discard},
{FKL, EventTreatment::reweight}
};
/// true if colour is allowed for particle
bool correct_colour(HEJ::Particle const & part){
if(HEJ::is_AWZH_boson(part) && !part.colour) return true;
if(!part.colour) return false;
int const colour = part.colour->first;
int const anti_colour = part.colour->second;
if(part.type == HEJ::ParticleID::gluon)
return colour != anti_colour && colour > 0 && anti_colour > 0;
if(HEJ::is_quark(part))
return anti_colour == 0 && colour > 0;
return colour == 0 && anti_colour > 0;
}
bool correct_colour(HEJ::Event const & ev){
if(!HEJ::event_type::is_resummable(ev.type()))
return true;
for(auto const & part: ev.incoming()){
if(!correct_colour(part))
return false;
}
for(auto const & part: ev.outgoing()){
if(!correct_colour(part))
return false;
}
return true;
}
};
int main(int argn, char** argv) {
if(argn == 5 && std::string(argv[4]) == "unof"){
--argn;
treat[unof] = EventTreatment::reweight;
treat[unob] = EventTreatment::discard;
treat[FKL] = EventTreatment::discard;
}
if(argn == 5 && std::string(argv[4]) == "unob"){
--argn;
treat[unof] = EventTreatment::discard;
treat[unob] = EventTreatment::reweight;
treat[FKL] = EventTreatment::discard;
}
else if(argn == 5 && std::string(argv[4]) == "splitf"){
--argn;
treat[qqxexb] = EventTreatment::discard;
treat[qqxexf] = EventTreatment::reweight;
treat[FKL] = EventTreatment::discard;
}
else if(argn == 5 && std::string(argv[4]) == "splitb"){
--argn;
treat[qqxexb] = EventTreatment::reweight;
treat[qqxexf] = EventTreatment::discard;
treat[FKL] = EventTreatment::discard;
}
else if(argn == 5 && std::string(argv[4]) == "qqxmid"){
--argn;
treat[qqxmid] = EventTreatment::reweight;
treat[FKL] = EventTreatment::discard;
}
if(argn != 4){
std::cerr << "Usage: check_res eventfile xsection tolerance [uno]";
return EXIT_FAILURE;
}
const double xsec_ref = std::stod(argv[2]);
const double tolerance = std::stod(argv[3]);
HEJ::istream in{argv[1]};
LHEF::Reader reader{in};
HEJ::PhaseSpacePointConfig psp_conf;
psp_conf.jet_param = HEJ::JetParameters{jet_def, jetptmin};
psp_conf.min_extparton_pt = extpartonptmin;
psp_conf.max_ext_soft_pt_fraction = max_ext_soft_pt_fraction;
HEJ::MatrixElementConfig ME_conf;
ME_conf.log_correction = log_corr;
ME_conf.Higgs_coupling = HEJ::HiggsCouplingSettings{};
+ ME_conf.ew_parameters.set_vevWZH(vev, Wprop, Zprop, Hprop);
HEJ::EventReweighterConfig conf;
conf.psp_config = std::move(psp_conf);
conf.ME_config = std::move(ME_conf);
conf.jet_param = psp_conf.jet_param;
conf.treat = treat;
reader.readEvent();
const bool has_Higgs = std::find(
begin(reader.hepeup.IDUP),
end(reader.hepeup.IDUP),
25
) != end(reader.hepeup.IDUP);
const double mu = has_Higgs?125.:91.188;
HEJ::ScaleGenerator scale_gen{
{{std::to_string(mu), HEJ::FixedScale{mu}}}, {}, 1.
};
HEJ::Mixmax ran{};
HEJ::EventReweighter hej{reader.heprup, std::move(scale_gen), conf, ran};
double xsec = 0.;
double xsec_err = 0.;
do{
auto ev_data = HEJ::Event::EventData{reader.hepeup};
ev_data.reconstruct_intermediate();
HEJ::Event ev{
ev_data.cluster(
Born_jet_def, Born_jetptmin
)
};
auto resummed_events = hej.reweight(ev, 100);
for(auto const & ev: resummed_events) {
ASSERT(correct_colour(ev));
ASSERT(isfinite(ev.central().weight));
xsec += ev.central().weight;
xsec_err += ev.central().weight*ev.central().weight;
}
} while(reader.readEvent());
xsec_err = std::sqrt(xsec_err);
const double significance =
std::abs(xsec - xsec_ref) / std::sqrt( xsec_err*xsec_err + tolerance*tolerance );
std::cout << xsec_ref << " +/- " << tolerance << " ~ "
<< xsec << " +- " << xsec_err << " => " << significance << " sigma\n";
if(significance > 3.){
std::cerr << "Cross section is off by over 3 sigma!\n";
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}

File Metadata

Mime Type
text/x-diff
Expires
Sun, Feb 23, 2:28 PM (15 h, 50 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4466354
Default Alt Text
(227 KB)

Event Timeline