Page MenuHomeHEPForge

No OneTemporary

This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/FixedOrderGen/t/CMakeLists.txt b/FixedOrderGen/t/CMakeLists.txt
index 354b0be..c32072f 100644
--- a/FixedOrderGen/t/CMakeLists.txt
+++ b/FixedOrderGen/t/CMakeLists.txt
@@ -1,213 +1,209 @@
set(tst_dir "${CMAKE_CURRENT_SOURCE_DIR}")
set(runcard_dir ${tst_dir}/runcards)
function(add_long_test)
set(options NONE)
set(oneValueArgs NAME)
set(multiValueArgs COMMAND)
cmake_parse_arguments(TEST "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
add_test(
NAME ${TEST_NAME}_short
COMMAND ${TEST_COMMAND} short
)
if(TEST_ALL)
add_test(
NAME ${TEST_NAME}
COMMAND ${TEST_COMMAND}
)
endif()
endfunction()
foreach(tst W_reconstruct_enu W_2j_classify W_nj_classify)
add_executable(test_${tst} ${tst_dir}/${tst}.cc)
target_link_libraries(test_${tst} hejfog_lib)
add_test(NAME ${tst}
COMMAND test_${tst}
WORKING_DIRECTORY ${runcard_dir}
)
endforeach()
# this only tests if the runcard actually works, not if the result is correct
add_test(
NAME main_example
COMMAND HEJFOG ${PROJECT_SOURCE_DIR}/configFO.yml
)
add_test(
NAME main_2j
COMMAND HEJFOG ${runcard_dir}/2j.yml
)
add_test(
NAME main_h2j
COMMAND HEJFOG ${runcard_dir}/h2j.yml
)
add_test(
NAME main_h2j_decay
COMMAND HEJFOG ${runcard_dir}/h2j_decay.yml
)
add_test(
NAME peakpt
COMMAND HEJFOG ${runcard_dir}/2j_peak.yml
)
# special case where coupling not trivial
add_test(
NAME main_W4j_uno+eqqbar
COMMAND HEJFOG ${runcard_dir}/Wp4j_uno+eqqbar.yml
)
# check that uno emission doesn't change FKL xs
add_executable(FKL_uno FKL_uno.cc)
target_link_libraries(FKL_uno hejfog_lib)
add_test(
NAME FKL_uno
# calculated with HEJ revision 9570e3809613272ac4b8bf3236279ba23cf64d20
COMMAND FKL_uno ${runcard_dir}/h3j_uno.yml 0.0243548 0.000119862
)
# xs tests
add_executable(xs_gen xs_gen.cc)
target_link_libraries(xs_gen hejfog_lib)
## Higgs
add_test(
NAME xs_hqQ
# calculated with Sherpa see #132
COMMAND xs_gen ${runcard_dir}/hqQ.yml 1.612e-02 1.26303e-04
)
add_test(
NAME xs_h2j
- # calculated with HEJ revision 9570e3809613272ac4b8bf3236279ba23cf64d20
- COMMAND xs_gen ${runcard_dir}/h2j.yml 2.07698 0.0096357
+ COMMAND xs_gen ${runcard_dir}/h2j.yml 2.718938e 0.01428279
)
add_test(
NAME xs_h3j
- # calculated with HEJ revision bd4388fe55cbc3f5a7b6139096456c551294aa31
- COMMAND xs_gen ${runcard_dir}/h3j.yml 0.93163 0.0078376
+ COMMAND xs_gen ${runcard_dir}/h3j.yml 1.249224e 0.01264546
)
add_long_test(
NAME xs_h3j_uno
# calculated with HEJ revision 9570e3809613272ac4b8bf3236279ba23cf64d20
COMMAND xs_gen ${runcard_dir}/h3j_uno.yml 0.00347538 3.85875e-05
)
add_test(
NAME xs_h5j
- # calculated with HEJ revision dbde2ffbb3b383ae6709b2424d8f0f9d5658270b
- COMMAND xs_gen ${runcard_dir}/h5j.yml 0.0104322 1.848913e-04
+ COMMAND xs_gen ${runcard_dir}/h5j.yml 0.01227874 0.0002203041
)
add_test(
NAME xs_h2j_decay
- # calculated with HEJ revision 9570e3809613272ac4b8bf3236279ba23cf64d20
- COMMAND xs_gen ${runcard_dir}/h2j_decay.yml 4.760767e-03 2.242386e-05
+ COMMAND xs_gen ${runcard_dir}/h2j_decay.yml 6.215591e-03 3.285611e-05
)
## pure jets
add_test(
NAME xs_qQ
# calculated with Sherpa see #132
COMMAND xs_gen ${runcard_dir}/qQ.yml 7.354e+05 1.905e+03
)
add_test(
NAME xs_2j
# calculated with "combined" HEJ svn r3480
COMMAND xs_gen ${runcard_dir}/2j.yml 86.42031848e06 590570
)
add_test(
NAME xs_3j_uno
# calculated with HEJ revision 59b8452accfe1462796406fa8e008c8b16b9657b
COMMAND xs_gen ${runcard_dir}/3j_uno.yml 1.449280e+05 2.318716e+03
)
add_test(
NAME xs_3j_qqbar
# calculated with HEJ revision 9401196fba75b5d16bc33f2a309175fecaca00f1
COMMAND xs_gen ${runcard_dir}/3j_qqbar.yml 62040 1005
)
add_long_test(
NAME xs_4j_qqbar
# calculated with HEJ revision 9401196fba75b5d16bc33f2a309175fecaca00f1
COMMAND xs_gen ${runcard_dir}/4j_qqbar.yml 28936 550
)
add_test(
NAME xs_4j
# calculated with HEJ revision 59b8452accfe1462796406fa8e008c8b16b9657b
COMMAND xs_gen ${runcard_dir}/4j.yml 1.042808e+06 2.137257e+04
)
## W
add_test(
NAME xs_WqQ
# calculated with Sherpa see #132
COMMAND xs_gen ${runcard_dir}/WpqQ.yml 3.086e+00 4.511e-02
)
add_test(
NAME xs_W2j
# calculated with HEJ revision 449f2f6b597020e9c9e35699568edc05c827fc11+1
COMMAND xs_gen ${runcard_dir}/Wm2j.yml 4.177443e+02 7.446928e+00
)
add_long_test(
NAME xs_W3j_eqqbar
# calculated with HEJ revision 667eb768fbefa99148bf6fe9ffb6fcd16c0f976e
COMMAND xs_gen ${runcard_dir}/Wp3j_qqbar.yml 2.267785e+01 3.707774e-01
)
add_long_test(
NAME xs_W3j_uno
# calculated with HEJ revision 449f2f6b597020e9c9e35699568edc05c827fc11+1
COMMAND xs_gen ${runcard_dir}/Wp3j_uno.yml 3.000955e-01 5.831799e-03
)
add_long_test(
NAME xs_W4j_qqbar
# calculated with HEJ revision 667eb768fbefa99148bf6fe9ffb6fcd16c0f976e
COMMAND xs_gen ${runcard_dir}/Wp4j_qqbar.yml 1.159881e-01 3.633528e-03
)
# Test that sum of partons == proton
add_executable(PSP_channel PSP_channel.cc)
target_link_libraries(PSP_channel hejfog_lib)
# pure jets
add_long_test(
NAME channel_2j
COMMAND PSP_channel ${runcard_dir}/2j.yml
)
add_test(
NAME channel_3j_qqbar
COMMAND PSP_channel ${runcard_dir}/3j_qqbar.yml
)
add_long_test(
NAME channel_3j_uno
COMMAND PSP_channel ${runcard_dir}/3j_uno.yml
)
add_long_test(
NAME channel_4j_qqbar
COMMAND PSP_channel ${runcard_dir}/4j_qqbar.yml
)
# W+jets
# pure jets
add_long_test(
NAME channel_W2j
COMMAND PSP_channel ${runcard_dir}/Wm2j.yml
)
add_long_test(
NAME channel_W3j_uno
COMMAND PSP_channel ${runcard_dir}/Wp3j_uno.yml
)
add_long_test(
NAME channel_W3j_eqqbar
COMMAND PSP_channel ${runcard_dir}/Wp3j_qqbar.yml
)
add_long_test(
NAME channel_W4j_qqbar
COMMAND PSP_channel ${runcard_dir}/Wp4j_qqbar.yml
)
# Test that each subleading channel is generated consistently
add_executable(PSP_subl PSP_subl.cc)
target_link_libraries(PSP_subl hejfog_lib)
add_long_test(
NAME subl_5j
COMMAND PSP_subl ${runcard_dir}/5j.yml
)
add_long_test(
NAME subl_h5j
COMMAND PSP_subl ${runcard_dir}/h5j.yml
)
add_long_test(
NAME subl_W3j
COMMAND PSP_subl ${runcard_dir}/Wp3j_qqbar.yml
)
add_long_test(
NAME subl_W5j
COMMAND PSP_subl ${runcard_dir}/Wm5j.yml
)
diff --git a/src/Event.cc b/src/Event.cc
index ea0f6dd..ee8170d 100644
--- a/src/Event.cc
+++ b/src/Event.cc
@@ -1,1229 +1,1234 @@
/**
* \authors The HEJ collaboration (see AUTHORS for details)
* \date 2019-2020
* \copyright GPLv2 or later
*/
#include "HEJ/Event.hh"
#include <algorithm>
#include <cassert>
#include <cstdlib>
#include <iomanip>
#include <iterator>
#include <memory>
#include <numeric>
#include <ostream>
#include <string>
#include <utility>
#include "fastjet/ClusterSequence.hh"
#include "fastjet/JetDefinition.hh"
#include "fastjet/PseudoJet.hh"
#include "LHEF/LHEF.h"
#include "HEJ/Constants.hh"
#include "HEJ/PDG_codes.hh"
#include "HEJ/RNG.hh"
#include "HEJ/exceptions.hh"
#include "HEJ/optional.hh"
#include "HEJ/utility.hh"
namespace HEJ {
namespace {
using std::size_t;
//! LHE status codes
namespace lhe_status {
enum Status: int {
in = -1,
decay = 2,
out = 1,
};
}
using LHE_Status = lhe_status::Status;
//! true if leptonic W decay
bool valid_W_decay( int const w_type, // sign of W
std::vector<Particle> const & decays
){
if(decays.size() != 2) // no 1->2 decay
return false;
const int pidsum = decays[0].type + decays[1].type;
if( std::abs(pidsum) != 1 || pidsum != w_type ) // correct charge
return false;
// leptonic decay (only check first, second follows from pidsum)
if( w_type == 1 ) // W+
return is_antilepton(decays[0]) || is_neutrino(decays[0]);
// W-
return is_lepton(decays[0]) || is_antineutrino(decays[0]);
}
//! true for Z decay to charged leptons
bool valid_Z_decay(std::vector<Particle> const & decays){
if(decays.size() != 2) // no 1->2 decay
return false;
const int pidsum = decays[0].type + decays[1].type;
if( std::abs(pidsum) != 0 ) // correct charge
return false;
// leptonic decay (only check first, second follows from pidsum)
return is_anylepton(decays[0]) && !is_anyneutrino(decays[0]);
}
/// @name helper functions to determine event type
//@{
/**
* \brief check if final state valid for HEJ
*
* check if there is at most one photon, W, H, Z in the final state
* and all the rest are quarks or gluons
*/
bool final_state_ok(Event const & ev){
std::vector<Particle> const & outgoing = ev.outgoing();
if(ev.decays().size() > 1) // at most one decay
return false;
bool has_AWZH_boson = false;
for( size_t i=0; i<outgoing.size(); ++i ){
auto const & out{ outgoing[i] };
if(is_AWZH_boson(out.type)){
// at most one boson
if(has_AWZH_boson) return false;
has_AWZH_boson = true;
// valid decay for W
if(std::abs(out.type) == ParticleID::Wp){
// exactly 1 decay of W
if( ev.decays().size() != 1 || ev.decays().cbegin()->first != i )
return false;
if( !valid_W_decay(out.type>0?+1:-1, ev.decays().cbegin()->second) )
return false;
}
// valid decay for Z
if(out.type == ParticleID::Z_photon_mix){
// exactly 1 decay
if( ev.decays().size() != 1 || ev.decays().cbegin()->first != i )
return false;
if( !valid_Z_decay(ev.decays().cbegin()->second) )
return false;
}
}
else if(! is_parton(out.type)) return false;
}
return true;
}
/**
* returns all EventTypes implemented in HEJ
*/
size_t implemented_types(std::vector<Particle> const & bosons){
using namespace event_type;
if(bosons.empty()) return FKL | unob | unof | qqbar_exb | qqbar_exf | qqbar_mid;
if(bosons.size()>1) return non_resummable; // multi boson
switch (bosons[0].type) {
case ParticleID::Wp:
case ParticleID::Wm:
return FKL | unob | unof | qqbar_exb | qqbar_exf | qqbar_mid;
case ParticleID::Z_photon_mix:
return FKL | unob | unof;
case ParticleID::h:
return FKL | unob | unof;
default:
return non_resummable;
}
}
/**
* \brief function which determines if type change is consistent with Wp emission.
* @param in incoming Particle id
* @param out outgoing Particle id
* @param is_qqbar Current both incoming/both outgoing?
*
* \see is_Wm_Change
*/
bool is_Wp_Change(ParticleID in, ParticleID out, bool is_qqbar){
using namespace pid;
if(!is_qqbar && (in==d_bar || in==u || in==s_bar || in==c))
return out == (in-1);
if( is_qqbar && (in==d || in==u_bar || in==s || in==c_bar))
return out == -(in+1);
return false;
}
/**
* \brief function which determines if type change is consistent with Wm emission.
* @param in incoming Particle id
* @param out outgoing Particle id
* @param is_qqbar Current both incoming/both outgoing?
*
* Ensures that change type of quark line is possible by a flavour changing
* Wm emission. Allows checking of is_qqbar currents also.
*/
bool is_Wm_Change(ParticleID in, ParticleID out, bool is_qqbar){
using namespace pid;
if(!is_qqbar && (in==d || in==u_bar || in==s || in==c_bar))
return out == (in+1);
if( is_qqbar && (in==d_bar || in==u || in==s_bar || in==c))
return out == -(in-1);
return false;
}
/**
* \brief checks if particle type remains same from incoming to outgoing
* @param in incoming Particle
* @param out outgoing Particle
* @param is_qqbar Current both incoming/outgoing?
*/
bool no_flavour_change(ParticleID in, ParticleID out, bool is_qqbar){
const int qqbarCurrent = is_qqbar?-1:1;
if(std::abs(in)<=pid::top || in==pid::gluon)
return (in==out*qqbarCurrent);
return false;
}
bool has_enough_jets(Event const & event){
if(event.jets().size() >= 2) return true;
if(event.jets().empty()) return false;
// check for h+jet
const auto the_higgs = std::find_if(
begin(event.outgoing()), end(event.outgoing()),
[](const auto & particle) { return particle.type == pid::higgs; }
);
return the_higgs != end(event.outgoing());
}
bool is_gluon_to_Higgs(const ParticleID in, const ParticleID out) {
return in == pid::gluon && out == pid::Higgs;
}
/**
* \brief check if we have a valid Impact factor
* @param in incoming Particle
* @param out outgoing Particle
* @param is_qqbar Current both incoming/outgoing?
* @param W_change returns +1 if Wp, -1 if Wm, else 0
*/
bool is_valid_impact_factor(
ParticleID in, ParticleID out, bool is_qqbar, int & W_change
){
if( no_flavour_change(in, out, is_qqbar) || is_gluon_to_Higgs(in, out)) {
return true;
}
if( is_Wp_Change(in, out, is_qqbar) ) {
W_change+=1;
return true;
}
if( is_Wm_Change(in, out, is_qqbar) ) {
W_change-=1;
return true;
}
return false;
}
bool is_extremal_higgs_off_quark(
const ParticleID in,
const ParticleID extremal_out,
const ParticleID out
) {
return in == out && extremal_out == pid::higgs && is_anyquark(in);
}
//! Returns all possible classifications from the impact factors
// the beginning points are changed s.t. after the the classification they
// point to the beginning of the (potential) FKL chain
// sets W_change: + if Wp change
// 0 if no change
// - if Wm change
// This function can be used with forward & backwards iterators
template<class OutIterator>
size_t possible_impact_factors(
ParticleID incoming_id, // incoming
OutIterator & begin_out, OutIterator const & end_out, // outgoing
int & W_change, std::vector<Particle> const & boson,
bool const backward // backward?
){
using namespace event_type;
assert(boson.size() < 2);
if(begin_out == end_out) return non_resummable;
// keep track of all states that we don't test
size_t not_tested = qqbar_mid;
if(backward)
not_tested |= unof | qqbar_exf;
else
not_tested |= unob | qqbar_exb;
// Is this LL current?
if( is_valid_impact_factor(incoming_id, begin_out->type, false, W_change) ){
++begin_out;
return not_tested | FKL;
}
// q -> H q and qbar -> H qbar are technically not LL,
// but we treat them as such anyway
- if(is_extremal_higgs_off_quark(incoming_id, begin_out->type, std::next(begin_out)->type)) {
+ const auto next = std::next(begin_out);
+ if(
+ // first ensure that the next particle is not part of the *other* impact factor
+ next != end_out
+ && is_extremal_higgs_off_quark(incoming_id, begin_out->type, next->type)
+ ) {
std::advance(begin_out, 2);
return not_tested | FKL;
}
// or NLL current?
// -> needs two partons in two different jets
if( std::distance(begin_out, end_out)>=2
){
auto next = std::next(begin_out);
// Is this unordered emisson?
if( incoming_id!=pid::gluon && begin_out->type==pid::gluon ){
if( is_valid_impact_factor(
incoming_id, next->type, false, W_change )
){
// veto Higgs inside uno
assert(next!=end_out);
if( !boson.empty() && boson.front().type == ParticleID::h
){
if( (backward && boson.front().rapidity() < next->rapidity())
||(!backward && boson.front().rapidity() > next->rapidity()))
return non_resummable;
}
begin_out = std::next(next);
return not_tested | (backward?unob:unof);
}
}
// Is this QQbar?
else if( incoming_id==pid::gluon ){
if( is_valid_impact_factor(
begin_out->type, next->type, true, W_change )
){
// veto Higgs inside qqbar
assert(next!=end_out);
if( !boson.empty() && boson.front().type == ParticleID::h
){
if( (backward && boson.front().rapidity() < next->rapidity())
||(!backward && boson.front().rapidity() > next->rapidity()))
return non_resummable;
}
begin_out = std::next(next);
return not_tested | (backward?qqbar_exb:qqbar_exf);
}
}
}
return non_resummable;
}
//! Returns all possible classifications from central emissions
// the beginning points are changed s.t. after the the classification they
// point to the end of the emission chain
// sets W_change: + if Wp change
// 0 if no change
// - if Wm change
template<class OutIterator>
size_t possible_central(
OutIterator & begin_out, OutIterator const & end_out,
int & W_change, std::vector<Particle> const & boson
){
using namespace event_type;
assert(boson.size() < 2);
// keep track of all states that we don't test
size_t possible = unob | unof
| qqbar_exb | qqbar_exf;
// Find the first quark or antiquark emission
begin_out = std::find_if(
begin_out, end_out,
[](Particle const & p) { return is_anyquark(p); }
);
// end of chain -> FKL
if( begin_out==end_out ){
return possible | FKL;
}
// is this a qqbar-pair?
// needs two partons in two separate jets
auto next = std::next(begin_out);
if(
next != end_out
&& is_valid_impact_factor(begin_out->type, next->type, true, W_change)
){
// veto Higgs inside qqbar
if( !boson.empty() && boson.front().type == ParticleID::h
&& boson.front().rapidity() > begin_out->rapidity()
&& boson.front().rapidity() < next->rapidity()
){
return non_resummable;
}
begin_out = std::next(next);
// remaining chain should be pure FKL (gluon or higgs)
if(std::any_of(
begin_out, end_out,
[](Particle const & p) { return is_anyquark(p); }
)) {
return non_resummable;
}
return possible | qqbar_mid;
}
return non_resummable;
}
namespace {
bool is_parton_or_higgs(Particle const & p) {
return is_parton(p) || p.type == pid::higgs;
}
}
/**
* \brief Checks for all event types
* @param ev Event
* @returns Event Type
*
*/
event_type::EventType classify(Event const & ev){
using namespace event_type;
if(! has_enough_jets(ev))
return not_enough_jets;
// currently we can't handle multiple boson states in the ME. So they are
// considered "bad_final_state" even though the "classify" could work with
// them.
if(! final_state_ok(ev))
return bad_final_state;
// initialise variables
auto const & in = ev.incoming();
// range for current checks
auto begin_out = boost::make_filter_iterator(
is_parton_or_higgs, cbegin(ev.outgoing()), cend(ev.outgoing())
);
auto rbegin_out = std::make_reverse_iterator(
boost::make_filter_iterator(
is_parton_or_higgs, cend(ev.outgoing()), cend(ev.outgoing())
)
);
assert(std::distance(begin(in), end(in)) == 2);
assert(std::distance(begin_out, rbegin_out.base()) >= 2);
assert(std::is_sorted(begin_out, rbegin_out.base(), rapidity_less{}));
auto const boson{ filter_AWZH_bosons(ev.outgoing()) };
// we only allow one boson through final_state_ok
assert(boson.size()<=1);
// keep track of potential W couplings, at the end the sum should be 0
int remaining_Wp = 0;
int remaining_Wm = 0;
if(!boson.empty() && std::abs(boson.front().type) == ParticleID::Wp ){
if(boson.front().type>0) ++remaining_Wp;
else ++remaining_Wm;
}
int W_change = 0;
size_t final_type = ~(not_enough_jets | bad_final_state);
// check forward impact factor
final_type &= possible_impact_factors(
in.front().type,
begin_out, rbegin_out.base(),
W_change, boson, true );
if( final_type == non_resummable )
return non_resummable;
if(W_change>0) remaining_Wp-=W_change;
else if(W_change<0) remaining_Wm+=W_change;
W_change = 0;
// check backward impact factor
final_type &= possible_impact_factors(
in.back().type,
rbegin_out, std::make_reverse_iterator(begin_out),
W_change, boson, false );
if( final_type == non_resummable )
return non_resummable;
if(W_change>0) remaining_Wp-=W_change;
else if(W_change<0) remaining_Wm+=W_change;
W_change = 0;
// check central emissions
final_type &= possible_central(
begin_out, rbegin_out.base(), W_change, boson );
if( final_type == non_resummable )
return non_resummable;
if(W_change>0) remaining_Wp-=W_change;
else if(W_change<0) remaining_Wm+=W_change;
// Check whether the right number of Ws are present
if( remaining_Wp != 0 || remaining_Wm != 0 ) return non_resummable;
// result has to be unique
if( (final_type & (final_type-1)) != 0) return non_resummable;
// check that each sub processes is implemented
// (has to be done at the end)
if( (final_type & ~implemented_types(boson)) != 0 )
return non_resummable;
return static_cast<EventType>(final_type);
}
//@}
Particle extract_particle(LHEF::HEPEUP const & hepeup, size_t i){
auto id = static_cast<ParticleID>(hepeup.IDUP[i]);
auto colour = is_parton(id)?hepeup.ICOLUP[i]:optional<Colour>();
return { id,
{ hepeup.PUP[i][0], hepeup.PUP[i][1],
hepeup.PUP[i][2], hepeup.PUP[i][3] },
colour
};
}
bool is_decay_product(std::pair<int, int> const & mothers){
if(mothers.first == 0) return false;
return mothers.second == 0 || mothers.first == mothers.second;
}
} // namespace
Event::EventData::EventData(LHEF::HEPEUP const & hepeup){
parameters.central = EventParameters{
hepeup.scales.mur, hepeup.scales.muf, hepeup.XWGTUP
};
size_t in_idx = 0;
for (int i = 0; i < hepeup.NUP; ++i) {
// skip decay products
// we will add them later on, but we have to ensure that
// the decayed particle is added before
if(is_decay_product(hepeup.MOTHUP[i])) continue;
auto particle = extract_particle(hepeup, i);
// needed to identify mother particles for decay products
particle.p.set_user_index(i+1);
if(hepeup.ISTUP[i] == LHE_Status::in){
if(in_idx > incoming.size()) {
throw std::invalid_argument{
"Event has too many incoming particles"
};
}
incoming[in_idx++] = std::move(particle);
}
else outgoing.emplace_back(std::move(particle));
}
// add decay products
for (int i = 0; i < hepeup.NUP; ++i) {
if(!is_decay_product(hepeup.MOTHUP[i])) continue;
const int mother_id = hepeup.MOTHUP[i].first;
const auto mother = std::find_if(
begin(outgoing), end(outgoing),
[mother_id](Particle const & particle){
return particle.p.user_index() == mother_id;
}
);
if(mother == end(outgoing)){
throw std::invalid_argument{"invalid decay product parent"};
}
const int mother_idx = std::distance(begin(outgoing), mother);
assert(mother_idx >= 0);
decays[mother_idx].emplace_back(extract_particle(hepeup, i));
}
}
Event::Event(
UnclusteredEvent const & ev,
fastjet::JetDefinition const & jet_def, double const min_jet_pt
):
Event( Event::EventData{
ev.incoming, ev.outgoing, ev.decays,
Parameters<EventParameters>{ev.central, ev.variations}
}.cluster(jet_def, min_jet_pt) )
{}
//! @TODO remove in HEJ 2.2.0
UnclusteredEvent::UnclusteredEvent(LHEF::HEPEUP const & hepeup){
Event::EventData const evData{hepeup};
incoming = evData.incoming;
outgoing = evData.outgoing;
decays = evData.decays;
central = evData.parameters.central;
variations = evData.parameters.variations;
}
void Event::EventData::sort(){
// sort particles
std::sort(
begin(incoming), end(incoming),
[](Particle const & o1, Particle const & o2){return o1.p.pz()<o2.p.pz();}
);
auto old_outgoing = std::move(outgoing);
std::vector<size_t> idx(old_outgoing.size());
std::iota(idx.begin(), idx.end(), 0);
std::sort(idx.begin(), idx.end(), [&old_outgoing](size_t i, size_t j){
return old_outgoing[i].rapidity() < old_outgoing[j].rapidity();
});
outgoing.clear();
outgoing.reserve(old_outgoing.size());
for(size_t i: idx) {
outgoing.emplace_back(std::move(old_outgoing[i]));
}
// find decays again
if(!decays.empty()){
auto old_decays = std::move(decays);
decays.clear();
for(size_t i=0; i<idx.size(); ++i) {
auto decay = old_decays.find(idx[i]);
if(decay != old_decays.end())
decays.emplace(i, std::move(decay->second));
}
assert(old_decays.size() == decays.size());
}
}
namespace {
Particle reconstruct_boson(std::vector<Particle> const & leptons) {
Particle decayed_boson;
decayed_boson.p = leptons[0].p + leptons[1].p;
const int pidsum = leptons[0].type + leptons[1].type;
if(pidsum == +1) {
assert(is_antilepton(leptons[0]));
if(is_antineutrino(leptons[0])) {
throw not_implemented{"lepton-flavour violating final state"};
}
assert(is_neutrino(leptons[1]));
// charged antilepton + neutrino means we had a W+
decayed_boson.type = pid::Wp;
}
else if(pidsum == -1) {
assert(is_antilepton(leptons[0]));
if(is_neutrino(leptons[1])) {
throw not_implemented{"lepton-flavour violating final state"};
}
assert(is_antineutrino(leptons[0]));
// charged lepton + antineutrino means we had a W-
decayed_boson.type = pid::Wm;
}
else if(pidsum == 0) {
assert(is_anylepton(leptons[0]));
if(is_anyneutrino(leptons[0])) {
throw not_implemented{"final state with two neutrinos"};
}
// charged lepton-antilepton pair means we had a Z/photon
decayed_boson.type = pid::Z_photon_mix;
}
else {
throw not_implemented{
"final state with leptons "
+ name(leptons[0].type)
+ " and "
+ name(leptons[1].type)
};
}
return decayed_boson;
}
} // namespace
void Event::EventData::reconstruct_intermediate() {
const auto begin_leptons = std::partition(
begin(outgoing), end(outgoing),
[](Particle const & p) {return !is_anylepton(p);}
);
// We can only reconstruct FS with 2 leptons
if(std::distance(begin_leptons, end(outgoing)) != 2) return;
std::vector<Particle> leptons(begin_leptons, end(outgoing));
std::sort(
begin(leptons), end(leptons),
[](Particle const & p0, Particle const & p1) {
assert(is_anylepton(p0) && is_anylepton(p1));
return p0.type < p1.type;
}
);
// `reconstruct_boson` can throw, it should therefore be called before
// changing `outgoing` to allow the user to recover the original EventData
auto boson = reconstruct_boson(leptons);
outgoing.erase(begin_leptons, end(outgoing));
outgoing.emplace_back(std::move(boson));
decays.emplace(outgoing.size()-1, std::move(leptons));
}
Event Event::EventData::cluster(
fastjet::JetDefinition const & jet_def, double const min_jet_pt
){
sort();
return Event{ std::move(incoming), std::move(outgoing), std::move(decays),
std::move(parameters),
jet_def, min_jet_pt
};
}
Event::Event(
std::array<Particle, 2> && incoming,
std::vector<Particle> && outgoing,
std::unordered_map<size_t, std::vector<Particle>> && decays,
Parameters<EventParameters> && parameters,
fastjet::JetDefinition const & jet_def,
double const min_jet_pt
): incoming_{std::move(incoming)},
outgoing_{std::move(outgoing)},
decays_{std::move(decays)},
parameters_{std::move(parameters)},
cs_{ to_PseudoJet( filter_partons(outgoing_) ), jet_def },
min_jet_pt_{min_jet_pt}
{
jets_ = sorted_by_rapidity(cs_.inclusive_jets(min_jet_pt_));
assert(std::is_sorted(begin(outgoing_), end(outgoing_),
rapidity_less{}));
type_ = classify(*this);
}
namespace {
//! check that Particles have a reasonable colour
bool correct_colour(Particle const & part){
ParticleID id{ part.type };
if(!is_parton(id))
return !part.colour;
if(!part.colour)
return false;
Colour const & col{ *part.colour };
if(is_quark(id))
return col.first != 0 && col.second == 0;
if(is_antiquark(id))
return col.first == 0 && col.second != 0;
assert(id==ParticleID::gluon);
return col.first != 0 && col.second != 0 && col.first != col.second;
}
//! Connect parton to t-channel colour line & update the line
//! returns false if connection not possible
template<class OutIterator>
bool try_connect_t(OutIterator const & it_part, Colour & line_colour){
if( line_colour.first == it_part->colour->second ){
line_colour.first = it_part->colour->first;
return true;
}
if( line_colour.second == it_part->colour->first ){
line_colour.second = it_part->colour->second;
return true;
}
return false;
}
//! Connect parton to u-channel colour line & update the line
//! returns false if connection not possible
template<class OutIterator>
bool try_connect_u(OutIterator & it_part, Colour & line_colour){
auto it_next = std::next(it_part);
if( try_connect_t(it_next, line_colour)
&& try_connect_t(it_part, line_colour)
){
it_part=it_next;
return true;
}
return false;
}
} // namespace
bool Event::is_leading_colour() const {
if( !correct_colour(incoming()[0]) || !correct_colour(incoming()[1]) )
return false;
Colour line_colour = *incoming()[0].colour;
std::swap(line_colour.first, line_colour.second);
// reasonable colour
if(!std::all_of(outgoing().cbegin(), outgoing().cend(), correct_colour))
return false;
for(auto it_part = cbegin_partons(); it_part!=cend_partons(); ++it_part){
switch (type()) {
case event_type::FKL:
if( !try_connect_t(it_part, line_colour) )
return false;
break;
case event_type::unob:
case event_type::qqbar_exb: {
if( !try_connect_t(it_part, line_colour)
// u-channel only allowed at impact factor
&& (std::distance(cbegin_partons(), it_part)!=0
|| !try_connect_u(it_part, line_colour)))
return false;
break;
}
case event_type::unof:
case event_type::qqbar_exf: {
if( !try_connect_t(it_part, line_colour)
// u-channel only allowed at impact factor
&& (std::distance(it_part, cend_partons())!=2
|| !try_connect_u(it_part, line_colour)))
return false;
break;
}
case event_type::qqbar_mid:{
auto it_next = std::next(it_part);
if( !try_connect_t(it_part, line_colour)
// u-channel only allowed at q-qbar/qbar-q pair
&& ( ( !(is_quark(*it_part) && is_antiquark(*it_next))
&& !(is_antiquark(*it_part) && is_quark(*it_next)))
|| !try_connect_u(it_part, line_colour))
)
return false;
break;
}
default:
throw std::logic_error{"unreachable"};
}
// no colour singlet exchange/disconnected diagram
if(line_colour.first == line_colour.second)
return false;
}
return (incoming()[1].colour->first == line_colour.first)
&& (incoming()[1].colour->second == line_colour.second);
}
namespace {
//! connect incoming Particle to colour flow
void connect_incoming(Particle & in, int & colour, int & anti_colour){
in.colour = std::make_pair(anti_colour, colour);
// gluon
if(in.type == pid::gluon)
return;
if(in.type > 0){
// quark
assert(is_quark(in));
in.colour->second = 0;
colour*=-1;
return;
}
// anti-quark
assert(is_antiquark(in));
in.colour->first = 0;
anti_colour*=-1;
}
//! connect outgoing Particle to t-channel colour flow
template<class OutIterator>
void connect_tchannel(
OutIterator & it_part, int & colour, int & anti_colour, RNG & ran
){
assert(colour>0 || anti_colour>0);
if(it_part->type == ParticleID::gluon){
// gluon
if(colour>0 && anti_colour>0){
// on g line => connect to colour OR anti-colour (random)
if(ran.flat() < 0.5){
it_part->colour = std::make_pair(colour+2,colour);
colour+=2;
} else {
it_part->colour = std::make_pair(anti_colour, anti_colour+2);
anti_colour+=2;
}
} else if(colour > 0){
// on q line => connect to available colour
it_part->colour = std::make_pair(colour+2, colour);
colour+=2;
} else {
assert(colour<0 && anti_colour>0);
// on qbar line => connect to available anti-colour
it_part->colour = std::make_pair(anti_colour, anti_colour+2);
anti_colour+=2;
}
} else if(is_quark(*it_part)) {
// quark
assert(anti_colour>0);
if(colour>0){
// on g line => connect and remove anti-colour
it_part->colour = std::make_pair(anti_colour, 0);
anti_colour+=2;
anti_colour*=-1;
} else {
// on qbar line => new colour
colour*=-1;
it_part->colour = std::make_pair(colour, 0);
}
} else if(is_antiquark(*it_part)) {
// anti-quark
assert(colour>0);
if(anti_colour>0){
// on g line => connect and remove colour
it_part->colour = std::make_pair(0, colour);
colour+=2;
colour*=-1;
} else {
// on q line => new anti-colour
anti_colour*=-1;
it_part->colour = std::make_pair(0, anti_colour);
}
} else { // not a parton
assert(!is_parton(*it_part));
it_part->colour = {};
}
}
//! connect to t- or u-channel colour flow
template<class OutIterator>
void connect_utchannel(
OutIterator & it_part, int & colour, int & anti_colour, RNG & ran
){
OutIterator it_first = it_part++;
if(ran.flat()<.5) {// t-channel
connect_tchannel(it_first, colour, anti_colour, ran);
connect_tchannel(it_part, colour, anti_colour, ran);
}
else { // u-channel
connect_tchannel(it_part, colour, anti_colour, ran);
connect_tchannel(it_first, colour, anti_colour, ran);
}
}
} // namespace
bool Event::generate_colours(RNG & ran){
// generate only for HEJ events
if(!event_type::is_resummable(type()))
return false;
assert(std::is_sorted(
begin(outgoing()), end(outgoing()), rapidity_less{}));
assert(incoming()[0].pz() < incoming()[1].pz());
// positive (anti-)colour -> can connect
// negative (anti-)colour -> not available/used up by (anti-)quark
int colour = COLOUR_OFFSET;
int anti_colour = colour+1;
// initialise first
connect_incoming(incoming_[0], colour, anti_colour);
// reset outgoing colours
std::for_each(outgoing_.begin(), outgoing_.end(),
[](Particle & part){ part.colour = {};});
for(auto it_part = begin_partons(); it_part!=end_partons(); ++it_part){
switch (type()) {
// subleading can connect to t- or u-channel
case event_type::unob:
case event_type::qqbar_exb: {
if( std::distance(begin_partons(), it_part)==0)
connect_utchannel(it_part, colour, anti_colour, ran);
else
connect_tchannel(it_part, colour, anti_colour, ran);
break;
}
case event_type::unof:
case event_type::qqbar_exf: {
if( std::distance(it_part, end_partons())==2)
connect_utchannel(it_part, colour, anti_colour, ran);
else
connect_tchannel(it_part, colour, anti_colour, ran);
break;
}
case event_type::qqbar_mid:{
auto it_next = std::next(it_part);
if( std::distance(begin_partons(), it_part)>0
&& std::distance(it_part, end_partons())>2
&& ( (is_quark(*it_part) && is_antiquark(*it_next))
|| (is_antiquark(*it_part) && is_quark(*it_next)) )
)
connect_utchannel(it_part, colour, anti_colour, ran);
else
connect_tchannel(it_part, colour, anti_colour, ran);
break;
}
default: // rest has to be t-channel
connect_tchannel(it_part, colour, anti_colour, ran);
}
}
// Connect last
connect_incoming(incoming_[1], anti_colour, colour);
assert(is_leading_colour());
return true;
} // generate_colours
namespace {
bool valid_parton(
std::vector<fastjet::PseudoJet> const & jets,
Particle const & parton, int const idx,
double const soft_pt_regulator, double const min_extparton_pt
){
// TODO code overlap with PhaseSpacePoint::pass_extremal_cuts
if(min_extparton_pt > parton.pt()) return false;
if(idx<0) return false;
assert(static_cast<int>(jets.size())>=idx);
auto const & jet{ jets[idx] };
return (parton.p - jet).pt()/jet.pt() <= soft_pt_regulator;
}
} // namespace
// this should work with multiple types
bool Event::valid_hej_state(double const soft_pt_regulator,
double const min_pt
) const {
using namespace event_type;
if(!is_resummable(type()))
return false;
auto const & jet_idx{ particle_jet_indices() };
auto idx_begin{ jet_idx.cbegin() };
auto idx_end{ jet_idx.crbegin() };
auto part_begin{ cbegin_partons() };
auto part_end{ crbegin_partons() };
// always seperate extremal jets
if(!is_backward_g_to_h(*this)) {
if(! valid_parton(jets(), *part_begin, *idx_begin, soft_pt_regulator, min_pt)) {
return false;
}
++part_begin;
++idx_begin;
// unob -> second parton in own jet
if( type() & (unob | qqbar_exb) ){
if( !valid_parton(jets(), *part_begin, *idx_begin,
soft_pt_regulator, min_pt) )
return false;
++part_begin;
++idx_begin;
}
}
if(!is_forward_g_to_h(*this)) {
if(!valid_parton(jets(), *part_end, *idx_end, soft_pt_regulator, min_pt)) {
return false;
}
++part_end;
++idx_end;
if( type() & (unof | qqbar_exf) ){
if( !valid_parton(jets(), *part_end, *idx_end,
soft_pt_regulator, min_pt) )
return false;
++part_end;
// ++idx_end; // last check, we don't need idx_end afterwards
}
}
if( type() & qqbar_mid ){
// find qqbar pair
auto begin_qqbar{ std::find_if( part_begin, part_end.base(),
[](Particle const & part) -> bool {
return part.type != ParticleID::gluon;
}
)};
assert(begin_qqbar != part_end.base());
long int qqbar_pos{ std::distance(part_begin, begin_qqbar) };
assert(qqbar_pos >= 0);
idx_begin+=qqbar_pos;
if( !( valid_parton(jets(), *begin_qqbar, *idx_begin,
soft_pt_regulator, min_pt)
&& valid_parton(jets(), *std::next(begin_qqbar), *std::next(idx_begin),
soft_pt_regulator, min_pt)
))
return false;
}
return true;
}
bool Event::valid_incoming() const{
for(std::size_t i=0; i < incoming_.size(); ++i){
if(!(HEJ::nearby_ep(std::abs(incoming_[i].pz()), incoming_[i].E(), TOL*incoming_[i].E())
&& (incoming_[i].pt()==0.)))
return false;
}
return true;
}
Event::ConstPartonIterator Event::begin_partons() const {
return cbegin_partons();
}
Event::ConstPartonIterator Event::cbegin_partons() const {
return {HEJ::is_parton, cbegin(outgoing()), cend(outgoing())};
}
Event::ConstPartonIterator Event::end_partons() const {
return cend_partons();
}
Event::ConstPartonIterator Event::cend_partons() const {
return {HEJ::is_parton, cend(outgoing()), cend(outgoing())};
}
Event::ConstReversePartonIterator Event::rbegin_partons() const {
return crbegin_partons();
}
Event::ConstReversePartonIterator Event::crbegin_partons() const {
return std::reverse_iterator<ConstPartonIterator>( cend_partons() );
}
Event::ConstReversePartonIterator Event::rend_partons() const {
return crend_partons();
}
Event::ConstReversePartonIterator Event::crend_partons() const {
return std::reverse_iterator<ConstPartonIterator>( cbegin_partons() );
}
Event::PartonIterator Event::begin_partons() {
return {HEJ::is_parton, begin(outgoing_), end(outgoing_)};
}
Event::PartonIterator Event::end_partons() {
return {HEJ::is_parton, end(outgoing_), end(outgoing_)};
}
Event::ReversePartonIterator Event::rbegin_partons() {
return std::reverse_iterator<PartonIterator>( end_partons() );
}
Event::ReversePartonIterator Event::rend_partons() {
return std::reverse_iterator<PartonIterator>( begin_partons() );
}
namespace {
void print_momentum(std::ostream & os, fastjet::PseudoJet const & part){
constexpr int prec = 6;
const std::streamsize orig_prec = os.precision();
os <<std::scientific<<std::setprecision(prec) << "["
<<std::setw(2*prec+1)<<std::right<< part.px() << ", "
<<std::setw(2*prec+1)<<std::right<< part.py() << ", "
<<std::setw(2*prec+1)<<std::right<< part.pz() << ", "
<<std::setw(2*prec+1)<<std::right<< part.E() << "]"<< std::fixed;
os.precision(orig_prec);
}
void print_colour(std::ostream & os, optional<Colour> const & col){
constexpr int width = 3;
if(!col)
os << "(no color)"; // American spelling for better alignment
else
os << "(" <<std::setw(width)<<std::right<< col->first
<< ", " <<std::setw(width)<<std::right<< col->second << ")";
}
} // namespace
std::ostream& operator<<(std::ostream & os, Event const & ev){
constexpr int prec = 4;
constexpr int wtype = 3; // width for types
const std::streamsize orig_prec = os.precision();
os <<std::setprecision(prec)<<std::fixed;
os << "########## " << name(ev.type()) << " ##########" << std::endl;
os << "Incoming particles:\n";
for(auto const & in: ev.incoming()){
os <<std::setw(wtype)<< in.type << ": ";
print_colour(os, in.colour);
os << " ";
print_momentum(os, in.p);
os << std::endl;
}
os << "\nOutgoing particles: " << ev.outgoing().size() << "\n";
for(auto const & out: ev.outgoing()){
os <<std::setw(wtype)<< out.type << ": ";
print_colour(os, out.colour);
os << " ";
print_momentum(os, out.p);
os << " => rapidity="
<<std::setw(2*prec-1)<<std::right<< out.rapidity() << std::endl;
}
os << "\nForming Jets: " << ev.jets().size() << "\n";
for(auto const & jet: ev.jets()){
print_momentum(os, jet);
os << " => rapidity="
<<std::setw(2*prec-1)<<std::right<< jet.rapidity() << std::endl;
}
if(!ev.decays().empty() ){
os << "\nDecays: " << ev.decays().size() << "\n";
for(auto const & decay: ev.decays()){
os <<std::setw(wtype)<< ev.outgoing()[decay.first].type
<< " (" << decay.first << ") to:\n";
for(auto const & out: decay.second){
os <<" "<<std::setw(wtype)<< out.type << ": ";
print_momentum(os, out.p);
os << " => rapidity="
<<std::setw(2*prec-1)<<std::right<< out.rapidity() << std::endl;
}
}
}
os << std::defaultfloat;
os.precision(orig_prec);
return os;
}
double shat(Event const & ev){
return (ev.incoming()[0].p + ev.incoming()[1].p).m2();
}
LHEF::HEPEUP to_HEPEUP(Event const & event, LHEF::HEPRUP * heprup){
LHEF::HEPEUP result;
result.heprup = heprup;
result.weights = {{event.central().weight, nullptr}};
for(auto const & var: event.variations()){
result.weights.emplace_back(var.weight, nullptr);
}
size_t num_particles = event.incoming().size() + event.outgoing().size();
for(auto const & decay: event.decays()) num_particles += decay.second.size();
result.NUP = num_particles;
// the following entries are pretty much meaningless
result.IDPRUP = event.type(); // event type
result.AQEDUP = 1./128.; // alpha_EW
//result.AQCDUP = 0.118 // alpha_QCD
// end meaningless part
result.XWGTUP = event.central().weight;
result.SCALUP = event.central().muf;
result.scales.muf = event.central().muf;
result.scales.mur = event.central().mur;
result.scales.SCALUP = event.central().muf;
result.pdfinfo.p1 = event.incoming().front().type;
result.pdfinfo.p2 = event.incoming().back().type;
result.pdfinfo.scale = event.central().muf;
result.IDUP.reserve(num_particles); // PID
result.ISTUP.reserve(num_particles); // status (in, out, decay)
result.PUP.reserve(num_particles); // momentum
result.MOTHUP.reserve(num_particles); // index mother particle
result.ICOLUP.reserve(num_particles); // colour
// incoming
std::array<Particle, 2> incoming{ event.incoming() };
// First incoming should be positive pz according to LHE standard
// (or at least most (everyone?) do it this way, and Pythia assumes it)
if(incoming[0].pz() < incoming[1].pz())
std::swap(incoming[0], incoming[1]);
for(Particle const & in: incoming){
result.IDUP.emplace_back(in.type);
result.ISTUP.emplace_back(LHE_Status::in);
result.PUP.push_back({in.p[0], in.p[1], in.p[2], in.p[3], in.p.m()});
result.MOTHUP.emplace_back(0, 0);
assert(in.colour);
result.ICOLUP.emplace_back(*in.colour);
}
// outgoing
for(size_t i = 0; i < event.outgoing().size(); ++i){
Particle const & out = event.outgoing()[i];
result.IDUP.emplace_back(out.type);
const int status = event.decays().count(i) != 0u
?LHE_Status::decay
:LHE_Status::out;
result.ISTUP.emplace_back(status);
result.PUP.push_back({out.p[0], out.p[1], out.p[2], out.p[3], out.p.m()});
result.MOTHUP.emplace_back(1, 2);
if(out.colour)
result.ICOLUP.emplace_back(*out.colour);
else{
result.ICOLUP.emplace_back(std::make_pair(0,0));
}
}
// decays
for(auto const & decay: event.decays()){
for(auto const & out: decay.second){
result.IDUP.emplace_back(out.type);
result.ISTUP.emplace_back(LHE_Status::out);
result.PUP.push_back({out.p[0], out.p[1], out.p[2], out.p[3], out.p.m()});
const size_t mother_idx = 1 + event.incoming().size() + decay.first;
result.MOTHUP.emplace_back(mother_idx, mother_idx);
result.ICOLUP.emplace_back(0,0);
}
}
assert(result.ICOLUP.size() == num_particles);
static constexpr double unknown_spin = 9.; //per Les Houches accord
result.VTIMUP = std::vector<double>(num_particles, unknown_spin);
result.SPINUP = result.VTIMUP;
return result;
}
} // namespace HEJ
diff --git a/src/MatrixElement.cc b/src/MatrixElement.cc
index 8d76a0c..2d6b5f6 100644
--- a/src/MatrixElement.cc
+++ b/src/MatrixElement.cc
@@ -1,2171 +1,2171 @@
/**
* \authors The HEJ collaboration (see AUTHORS for details)
* \date 2019-2020
* \copyright GPLv2 or later
*/
#include "HEJ/MatrixElement.hh"
#include <algorithm>
#include <cassert>
#include <cmath>
#include <cstddef>
#include <cstdlib>
#include <iterator>
#include <limits>
#include <unordered_map>
#include <utility>
#include "fastjet/PseudoJet.hh"
#include "HEJ/ConfigFlags.hh"
#include "HEJ/Constants.hh"
#include "HEJ/EWConstants.hh"
#include "HEJ/Event.hh"
#include "HEJ/HiggsCouplingSettings.hh"
#include "HEJ/Hjets.hh"
#include "HEJ/LorentzVector.hh"
#include "HEJ/PDG_codes.hh"
#include "HEJ/Particle.hh"
#include "HEJ/Wjets.hh"
#include "HEJ/Zjets.hh"
#include "HEJ/event_types.hh"
#include "HEJ/exceptions.hh"
#include "HEJ/jets.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*std::log(q_j.perp2()/(lambda*lambda));
if(! param_.log_correction) return result;
return (
1. + alpha_s/(4.*M_PI)*BETA0*std::log(mur*mur/(q_j.perp()*lambda))
)*result;
}
Weights MatrixElement::operator()(Event const & event) const {
std::vector <double> tree_kin_part=tree_kin(event);
std::vector <Weights> virtual_part=virtual_corrections(event);
if(tree_kin_part.size() != virtual_part.size()) {
throw std::logic_error("tree and virtuals have different sizes");
}
Weights sum = Weights{0., std::vector<double>(event.variations().size(), 0.)};
for(size_t i=0; i<tree_kin_part.size(); ++i) {
sum += tree_kin_part.at(i)*virtual_part.at(i);
}
return tree_param(event)*sum;
}
Weights MatrixElement::tree(Event const & event) const {
std::vector <double> tree_kin_part=tree_kin(event);
double sum = 0.;
for(double i : tree_kin_part) {
sum += i;
}
return tree_param(event)*sum;
}
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;
}
std::vector<Weights> MatrixElement::virtual_corrections(Event const & event) const {
if(! is_resummable(event.type())) {
return {Weights{0., std::vector<double>(event.variations().size(), 0.)}};
}
// only compute once for each renormalisation scale
std::unordered_map<double, std::vector<double> > known_vec;
std::vector<double> central_vec=virtual_corrections(event, event.central().mur);
known_vec.emplace(event.central().mur, central_vec);
for(auto const & var: event.variations()) {
const auto ME_it = known_vec.find(var.mur);
if(ME_it == end(known_vec)) {
known_vec.emplace(var.mur, virtual_corrections(event, var.mur));
}
}
// At this stage known_vec contains one vector of virtual corrections for each mur value
// Now put this into a vector of Weights
std::vector<Weights> result_vec;
for(size_t i=0; i<central_vec.size(); ++i) {
Weights result;
result.central = central_vec.at(i);
for(auto const & var: event.variations()) {
const auto ME_it = known_vec.find(var.mur);
result.variations.emplace_back(ME_it->second.at(i));
}
result_vec.emplace_back(result);
}
return result_vec;
}
double MatrixElement::virtual_corrections_W(
Event const & event,
const 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;
std::size_t first_idx = 0;
std::size_t last_idx = partons.size() - 1;
#ifndef NDEBUG
bool wc = true;
#endif
bool wqq = false;
// With extremal qqbar 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::unob) {
q -= partons[1].p;
++first_idx;
if (in[0].type != partons[1].type ){
q -= WBoson.p;
#ifndef NDEBUG
wc=false;
#endif
}
}
else if (event.type() == event_type::qqbar_exb) {
q -= partons[1].p;
++first_idx;
if (std::abs(partons[0].type) != std::abs(partons[1].type)){
q -= WBoson.p;
#ifndef NDEBUG
wc=false;
#endif
}
}
else {
if(event.type() == event_type::unof
|| event.type() == event_type::qqbar_exf){
--last_idx;
}
if (in[0].type != partons[0].type ){
q -= WBoson.p;
#ifndef NDEBUG
wc=false;
#endif
}
}
std::size_t first_idx_qqbar = last_idx;
std::size_t last_idx_qqbar = last_idx;
//if qqbarMid event, virtual correction do not occur between qqbar pair.
if(event.type() == event_type::qqbar_mid){
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(std::abs(backquark->type) != std::abs((backquark+1)->type)) {
wqq=true;
#ifndef NDEBUG
wc=false;
#endif
}
last_idx = std::distance(begin(partons), backquark);
first_idx_qqbar = last_idx+1;
}
double exponent = 0;
const double alpha_s = alpha_s_(mur);
for(std::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_qqbar) q -= partons[last_idx+1].p;
if (wqq) q -= WBoson.p;
for(std::size_t j = first_idx_qqbar; j < last_idx_qqbar; ++j){
exponent += omega0(alpha_s, mur, q)*(
partons[j+1].rapidity() - partons[j].rapidity()
);
q -= partons[j+1].p;
}
#ifndef NDEBUG
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::qqbar_exf
);
#endif
return std::exp(exponent);
}
std::vector <double> MatrixElement::virtual_corrections_Z_qq(
Event const & event,
const double mur,
Particle const & ZBoson
) 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;
#endif
assert(std::is_sorted(partons.begin(), partons.end(), rapidity_less{}));
assert(partons.size() >= 2);
assert(pa.pz() < pb.pz());
fastjet::PseudoJet q_t = pa - partons[0].p - ZBoson.p;
fastjet::PseudoJet q_b = pa - partons[0].p;
size_t first_idx = 0;
size_t last_idx = partons.size() - 1;
// Unordered gluon does not contribute to the virtual corrections
if (event.type() == event_type::unob) {
// Gluon is partons[0] and is already subtracted
// partons[1] is the backward quark
q_t -= partons[1].p;
q_b -= partons[1].p;
++first_idx;
} else if (event.type() == event_type::unof) {
// End sum at forward quark
--last_idx;
}
double sum_top=0.;
double sum_bot=0.;
double sum_mix=0.;
const double alpha_s = alpha_s_(mur);
for(size_t j = first_idx; j < last_idx; ++j){
const double dy = partons[j+1].rapidity() - partons[j].rapidity();
const double tmp_top = omega0(alpha_s, mur, q_t)*dy;
const double tmp_bot = omega0(alpha_s, mur, q_b)*dy;
sum_top += tmp_top;
sum_bot += tmp_bot;
sum_mix += (tmp_top + tmp_bot) / 2.;
q_t -= partons[j+1].p;
q_b -= partons[j+1].p;
}
return {exp(sum_top), exp(sum_bot), exp(sum_mix)};
}
double MatrixElement::virtual_corrections_Z_qg(
Event const & event,
const double mur,
Particle const & ZBoson,
const bool is_gq_event
) 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;
#endif
assert(std::is_sorted(partons.begin(), partons.end(), rapidity_less{}));
assert(partons.size() >= 2);
assert(pa.pz() < pb.pz());
// If this is a gq event, don't subtract the Z momentum from first q
fastjet::PseudoJet q = (is_gq_event ? pa - partons[0].p : pa - partons[0].p - ZBoson.p);
size_t first_idx = 0;
size_t last_idx = partons.size() - 1;
// Unordered gluon does not contribute to the virtual corrections
if (event.type() == event_type::unob) {
// Gluon is partons[0] and is already subtracted
// partons[1] is the backward quark
q -= partons[1].p;
++first_idx;
} else if (event.type() == event_type::unof) {
// End sum at forward quark
--last_idx;
}
double sum=0.;
const double alpha_s = alpha_s_(mur);
for(size_t j = first_idx; j < last_idx; ++j){
sum += omega0(alpha_s, mur, q)*(partons[j+1].rapidity()
- partons[j].rapidity());
q -= partons[j+1].p;
}
return exp(sum);
}
std::vector<double> MatrixElement::virtual_corrections(
Event const & event,
const 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) && std::abs(AWZH_boson->type) == pid::Wp){
return {virtual_corrections_W(event, mur, *AWZH_boson)};
}
if(AWZH_boson != end(out) && AWZH_boson->type == pid::Z_photon_mix){
if(is_gluon(in.back().type)){
// This is a qg event
return {virtual_corrections_Z_qg(event, mur, *AWZH_boson, false)};
}
if(is_gluon(in.front().type)){
// This is a gq event
return {virtual_corrections_Z_qg(event, mur, *AWZH_boson, true)};
}
// This is a qq event
return virtual_corrections_Z_qq(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;
std::size_t first_idx = 0;
std::size_t last_idx = out.size() - 1;
// if there is a Higgs boson _not_ emitted off an incoming gluon,
// extremal qqbar 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 && in.front().type != pid::gluon)
|| event.type() == event_type::unob
|| event.type() == event_type::qqbar_exb){
q -= out[1].p;
++first_idx;
}
if((out.back().type == pid::Higgs && in.back().type != pid::gluon)
|| event.type() == event_type::unof
|| event.type() == event_type::qqbar_exf){
--last_idx;
}
std::size_t first_idx_qqbar = last_idx;
std::size_t last_idx_qqbar = last_idx;
//if central qqbar event, virtual correction do not occur between q-qbar.
if(event.type() == event_type::qqbar_mid){
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_qqbar = last_idx+1;
}
double exponent = 0;
const double alpha_s = alpha_s_(mur);
for(std::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_qqbar) q -= out[last_idx+1].p;
for(std::size_t j = first_idx_qqbar; j < last_idx_qqbar; ++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 && in.back().type != pid::gluon)
|| event.type() == event_type::unof
|| event.type() == event_type::qqbar_exf
);
return {std::exp(exponent)};
}
namespace {
//! Lipatov vertex for partons emitted into extremal jets
CLHEP::HepLorentzVector CLipatov(
CLHEP::HepLorentzVector const & qav, CLHEP::HepLorentzVector const & qbv,
CLHEP::HepLorentzVector const & p1, CLHEP::HepLorentzVector const & p2
) {
const CLHEP::HepLorentzVector p5 = qav-qbv;
const CLHEP::HepLorentzVector CL = -(qav+qbv)
+ 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;
}
double C2Lipatov(
CLHEP::HepLorentzVector const & qav,
CLHEP::HepLorentzVector const & qbv,
CLHEP::HepLorentzVector const & p1,
CLHEP::HepLorentzVector const & p2
){
const CLHEP::HepLorentzVector CL = CLipatov(qav, qbv, p1, 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,
const double lambda
) {
const double Cls=(C2Lipatov(qav, qbv, p1, p2)/(qav.m2()*qbv.m2()));
const double kperp=(qav-qbv).perp();
if (kperp>lambda)
return Cls;
return Cls-4./(kperp*kperp);
}
double C2Lipatov_Mix(
CLHEP::HepLorentzVector const & qav_t, CLHEP::HepLorentzVector const & qbv_t,
CLHEP::HepLorentzVector const & qav_b, CLHEP::HepLorentzVector const & qbv_b,
CLHEP::HepLorentzVector const & p1, CLHEP::HepLorentzVector const & p2
) {
const CLHEP::HepLorentzVector CL_t = CLipatov(qav_t, qbv_t, p1, p2);
const CLHEP::HepLorentzVector CL_b = CLipatov(qav_b, qbv_b, p1, p2);
return -CL_t.dot(CL_b);
}
double C2Lipatovots_Mix(
CLHEP::HepLorentzVector const & qav_t, CLHEP::HepLorentzVector const & qbv_t,
CLHEP::HepLorentzVector const & qav_b, CLHEP::HepLorentzVector const & qbv_b,
CLHEP::HepLorentzVector const & p1, CLHEP::HepLorentzVector const & p2,
const double lambda
) {
const double Cls = C2Lipatov_Mix(qav_t, qbv_t, qav_b, qbv_b, p1, p2)
/ sqrt(qav_t.m2() * qbv_t.m2() * qav_b.m2() * qbv_b.m2());
const double kperp = (qav_t - qbv_t).perp();
if (kperp > lambda){
return Cls;
}
return Cls - 4.0 / (kperp * kperp);
}
CLHEP::HepLorentzVector CLipatov(
CLHEP::HepLorentzVector const & qav, CLHEP::HepLorentzVector const & qbv,
CLHEP::HepLorentzVector const & pim, CLHEP::HepLorentzVector const & pip,
CLHEP::HepLorentzVector const & pom, CLHEP::HepLorentzVector const & pop
){
const CLHEP::HepLorentzVector p5 = qav-qbv;
const CLHEP::HepLorentzVector CL = -(qav+qbv)
+ 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;
}
//! 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
){
const CLHEP::HepLorentzVector CL = CLipatov(qav, qbv, pim, pip, pom, pop);
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,
const double lambda
) {
const double Cls=(C2Lipatov(qav, qbv, pa, pb, p1, p2)/(qav.m2()*qbv.m2()));
const double kperp=(qav-qbv).perp();
if (kperp>lambda)
return Cls;
return Cls-4./(kperp*kperp);
}
double C2Lipatov_Mix(
CLHEP::HepLorentzVector const & qav_t, CLHEP::HepLorentzVector const & qbv_t,
CLHEP::HepLorentzVector const & qav_b, CLHEP::HepLorentzVector const & qbv_b,
CLHEP::HepLorentzVector const & pim, CLHEP::HepLorentzVector const & pip,
CLHEP::HepLorentzVector const & pom, CLHEP::HepLorentzVector const & pop
) {
const CLHEP::HepLorentzVector CL_t = CLipatov(qav_t, qbv_t, pim, pip, pom, pop);
const CLHEP::HepLorentzVector CL_b = CLipatov(qav_b, qbv_b, pim, pip, pom, pop);
return -CL_t.dot(CL_b);
}
double C2Lipatovots_Mix(
CLHEP::HepLorentzVector const & qav_t, CLHEP::HepLorentzVector const & qbv_t,
CLHEP::HepLorentzVector const & qav_b, CLHEP::HepLorentzVector const & qbv_b,
CLHEP::HepLorentzVector const & pa, CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & p1, CLHEP::HepLorentzVector const & p2,
const double lambda
) {
const double Cls = C2Lipatov_Mix(qav_t, qbv_t, qav_b, qbv_b, pa, pb, p1, p2)
/ sqrt(qav_t.m2() * qbv_t.m2() * qav_b.m2() * qbv_b.m2());
const double kperp = (qav_t - qbv_t).perp();
if (kperp > lambda) {
return Cls;
}
return Cls - 4.0 / (kperp * kperp);
}
/** 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(
ParticleID aptype, ParticleID bptype,
CLHEP::HepLorentzVector const & pg,
CLHEP::HepLorentzVector const & pn,
CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & p1,
CLHEP::HepLorentzVector const & pa
){
using namespace currents;
assert(aptype!=pid::gluon); // aptype cannot be gluon
if (bptype==pid::gluon) {
if (is_quark(aptype))
return ME_unob_qg(pg,p1,pa,pn,pb);
return ME_unob_qbarg(pg,p1,pa,pn,pb);
}
if (is_antiquark(bptype)) {
if (is_quark(aptype))
return ME_unob_qQbar(pg,p1,pa,pn,pb);
return ME_unob_qbarQbar(pg,p1,pa,pn,pb);
}
//bptype == quark
if (is_quark(aptype))
return ME_unob_qQ(pg,p1,pa,pn,pb);
return ME_unob_qbarQ(pg,p1,pa,pn,pb);
}
/** Matrix element squared for tree-level current-current scattering
* @param bptype Particle b PDG ID
* @param pgin Incoming gluon momentum
* @param pq Quark from splitting Momentum
* @param pqbar Anti-quark from splitting Momentum
* @param pn Particle n Momentum
* @param pb Particle b Momentum
* @param swap_qqbar Ordering of qqbar pair. False: pqbar extremal.
* @returns ME Squared for Tree-Level Current-Current Scattering
*
* @note The forward qqbar contribution can be calculated by reversing the
* argument ordering.
*/
double ME_qqbar_current(
ParticleID bptype,
CLHEP::HepLorentzVector const & pgin,
CLHEP::HepLorentzVector const & pq,
CLHEP::HepLorentzVector const & pqbar,
CLHEP::HepLorentzVector const & pn,
CLHEP::HepLorentzVector const & pb,
bool const swap_qqbar
){
using namespace currents;
if (bptype==pid::gluon) {
if (swap_qqbar) // pq extremal
return ME_Exqqbar_qqbarg(pgin,pq,pqbar,pn,pb);
// pqbar extremal
return ME_Exqqbar_qbarqg(pgin,pq,pqbar,pn,pb);
}
// b leg quark line
if (swap_qqbar) //extremal pq
return ME_Exqqbar_qqbarQ(pgin,pq,pqbar,pn,pb);
return ME_Exqqbar_qbarqQ(pgin,pq,pqbar,pn,pb);
}
/* \brief Matrix element squared for central qqbar tree-level current-current
* scattering
*
* @param aptype Particle a PDG ID
* @param bptype Particle b PDG ID
* @param nabove Number of gluons emitted before central qqbarpair
* @param nbelow Number of gluons emitted after central qqbarpair
* @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
* @returns ME Squared for qqbar_mid Tree-Level Current-Current Scattering
*/
double ME_qqbar_mid_current(
ParticleID aptype, ParticleID bptype, int nabove,
CLHEP::HepLorentzVector const & pa,
CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & pq,
CLHEP::HepLorentzVector const & pqbar,
std::vector<CLHEP::HepLorentzVector> const & partons
){
using namespace currents;
// CAM factors for the qqbar amps, and qqbar ordering (default, pq backwards)
const bool swap_qqbar=pqbar.rapidity() < pq.rapidity();
double wt=1.;
if (aptype==pid::gluon) wt*=K_g(partons.front(),pa)/C_F;
if (bptype==pid::gluon) wt*=K_g(partons.back(),pb)/C_F;
return wt*ME_Cenqqbar_qq(pa, pb, partons, is_antiquark(bptype),
is_antiquark(aptype), swap_qqbar, nabove);
}
/** 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(
ParticleID aptype, ParticleID bptype,
CLHEP::HepLorentzVector const & pn,
CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & p1,
CLHEP::HepLorentzVector const & pa
){
using namespace currents;
if (aptype==pid::gluon && bptype==pid::gluon) {
return ME_gg(pn,pb,p1,pa);
}
if (aptype==pid::gluon && bptype!=pid::gluon) {
if (is_quark(bptype))
return ME_qg(pn,pb,p1,pa);
return ME_qbarg(pn,pb,p1,pa);
}
if (bptype==pid::gluon && aptype!=pid::gluon) {
if (is_quark(aptype))
return ME_qg(p1,pa,pn,pb);
return ME_qbarg(p1,pa,pn,pb);
}
// they are both quark
if (is_quark(bptype)) {
if (is_quark(aptype))
return ME_qQ(pn,pb,p1,pa);
return ME_qQbar(pn,pb,p1,pa);
}
if (is_quark(aptype))
return ME_qQbar(p1,pa,pn,pb);
return ME_qbarQbar(pn,pb,p1,pa);
}
/** 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(
ParticleID aptype, ParticleID 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, ParticleProperties const & Wprop
){
using namespace currents;
// We know it cannot be gg incoming.
assert(!(aptype==pid::gluon && bptype==pid::gluon));
if (aptype==pid::gluon && bptype!=pid::gluon) {
if (is_quark(bptype))
return ME_W_qg(pn,plbar,pl,pb,p1,pa,Wprop);
return ME_W_qbarg(pn,plbar,pl,pb,p1,pa,Wprop);
}
if (bptype==pid::gluon && aptype!=pid::gluon) {
if (is_quark(aptype))
return ME_W_qg(p1,plbar,pl,pa,pn,pb,Wprop);
return ME_W_qbarg(p1,plbar,pl,pa,pn,pb,Wprop);
}
// they are both quark
if (wc){ // emission off b, (first argument pbout)
if (is_quark(bptype)) {
if (is_quark(aptype))
return ME_W_qQ(pn,plbar,pl,pb,p1,pa,Wprop);
return ME_W_qQbar(pn,plbar,pl,pb,p1,pa,Wprop);
}
if (is_quark(aptype))
return ME_W_qbarQ(pn,plbar,pl,pb,p1,pa,Wprop);
return ME_W_qbarQbar(pn,plbar,pl,pb,p1,pa,Wprop);
}
// emission off a, (first argument paout)
if (is_quark(aptype)) {
if (is_quark(bptype))
return ME_W_qQ(p1,plbar,pl,pa,pn,pb,Wprop);
return ME_W_qQbar(p1,plbar,pl,pa,pn,pb,Wprop);
}
// a is anti-quark
if (is_quark(bptype))
return ME_W_qbarQ(p1,plbar,pl,pa,pn,pb,Wprop);
return ME_W_qbarQbar(p1,plbar,pl,pa,pn,pb,Wprop);
}
/** 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(
ParticleID aptype, ParticleID 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, ParticleProperties const & Wprop
){
using namespace currents;
// we know they are not both gluons
assert(bptype != pid::gluon || aptype != pid::gluon);
if (bptype == pid::gluon && aptype != pid::gluon) {
// b gluon => W emission off a
if (is_quark(aptype))
return ME_Wuno_qg(p1,pa,pn,pb,pg,plbar,pl,Wprop);
return ME_Wuno_qbarg(p1,pa,pn,pb,pg,plbar,pl,Wprop);
}
// they are both quark
if (wc) {// emission off b, i.e. b is first current
if (is_quark(bptype)){
if (is_quark(aptype))
return ME_W_unob_qQ(p1,pa,pn,pb,pg,plbar,pl,Wprop);
return ME_W_unob_qQbar(p1,pa,pn,pb,pg,plbar,pl,Wprop);
}
if (is_quark(aptype))
return ME_W_unob_qbarQ(p1,pa,pn,pb,pg,plbar,pl,Wprop);
return ME_W_unob_qbarQbar(p1,pa,pn,pb,pg,plbar,pl,Wprop);
}
// wc == false, emission off a, i.e. a is first current
if (is_quark(aptype)) {
if (is_quark(bptype)) //qq
return ME_Wuno_qQ(p1,pa,pn,pb,pg,plbar,pl,Wprop);
//qqbar
return ME_Wuno_qQbar(p1,pa,pn,pb,pg,plbar,pl,Wprop);
}
// a is anti-quark
if (is_quark(bptype)) //qbarq
return ME_Wuno_qbarQ(p1,pa,pn,pb,pg,plbar,pl,Wprop);
//qbarqbar
return ME_Wuno_qbarQbar(p1,pa,pn,pb,pg,plbar,pl,Wprop);
}
/** \brief Matrix element squared for backward qqbar 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 swap_qqbar Ordering of qqbar pair. False: pqbar extremal.
* @param wc Boolean. True->W Emitted from b. Else; emitted from leg a
* @returns ME Squared for qqbarb Tree-Level Current-Current Scattering
*
* @note calculate forwards qqbar contribution by reversing argument ordering.
*/
double ME_W_qqbar_current(
ParticleID aptype, ParticleID 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_qqbar, bool const wc,
ParticleProperties const & Wprop
){
using namespace currents;
// With qqbar we could have 2 incoming gluons and W Emission
if (aptype==pid::gluon && bptype==pid::gluon) {
//a gluon, b gluon gg->qqbarWg
// This will be a wqqbar emission as there is no other possible W Emission
// Site.
if (swap_qqbar)
return ME_WExqqbar_qqbarg(pa, pqbar, plbar, pl, pq, pn, pb, Wprop);
return ME_WExqqbar_qbarqg(pa, pq, plbar, pl, pqbar, pn, pb, Wprop);
}
assert(aptype==pid::gluon && bptype!=pid::gluon );
//a gluon => W emission off b leg or qqbar
if (!wc){ // W Emitted from backwards qqbar
if (swap_qqbar)
return ME_WExqqbar_qqbarQ(pa, pqbar, plbar, pl, pq, pn, pb, Wprop);
return ME_WExqqbar_qbarqQ(pa, pq, plbar, pl, pqbar, pn, pb, Wprop);
}
// W Must be emitted from forwards leg.
return ME_W_Exqqbar_QQq(pb, pa, pn, pq, pqbar, plbar, pl, is_antiquark(bptype), Wprop);
}
/* \brief Matrix element squared for central qqbar 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 qqbarpair
* @param nbelow Number of gluons emitted after central qqbarpair
* @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 qqbar
* @param wc Boolean. wc=true signifies w boson emitted from leg b; if wqq=false.
* @returns ME Squared for qqbar_mid Tree-Level Current-Current Scattering
*/
double ME_W_qqbar_mid_current(
ParticleID aptype, ParticleID bptype,
int nabove, int nbelow,
CLHEP::HepLorentzVector const & pa,
CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & pq,
CLHEP::HepLorentzVector const & pqbar,
std::vector<CLHEP::HepLorentzVector> const & partons,
CLHEP::HepLorentzVector const & plbar,
CLHEP::HepLorentzVector const & pl,
bool const wqq, bool const wc,
ParticleProperties const & Wprop
){
using namespace currents;
// CAM factors for the qqbar amps, and qqbar ordering (default, pq backwards)
const bool swap_qqbar=pqbar.rapidity() < pq.rapidity();
double wt=1.;
if (aptype==pid::gluon) wt*=K_g(partons.front(),pa)/C_F;
if (bptype==pid::gluon) wt*=K_g(partons.back(),pb)/C_F;
if(wqq)
return wt*ME_WCenqqbar_qq(pa, pb, pl, plbar, partons,
is_antiquark(aptype),is_antiquark(bptype),
swap_qqbar, nabove, Wprop);
return wt*ME_W_Cenqqbar_qq(pa, pb, pl, plbar, partons,
is_antiquark(aptype), is_antiquark(bptype),
swap_qqbar, nabove, nbelow, wc, Wprop);
}
/** Matrix element squared for tree-level current-current scattering With Z+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 plbar Final state positron momentum
* @param pl Final state electron momentum
* @param Zprop Z properties
* @param stw2 Value of sin(theta_w)^2
* @param ctw Value of cos(theta_w)
* @returns ME Squared for Tree-Level Current-Current Scattering
*/
std::vector<double> ME_Z_current(
const ParticleID aptype, const ParticleID 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,
ParticleProperties const & Zprop,
const double stw2, const double ctw
){
using namespace currents;
// we know they are not both gluons
assert(!is_gluon(aptype) || !is_gluon(bptype));
if(is_anyquark(aptype) && is_gluon(bptype)){
// This is a qg event
return { ME_Z_qg(pa,pb,p1,pn,plbar,pl,aptype,bptype,Zprop,stw2,ctw) };
}
if(is_gluon(aptype) && is_anyquark(bptype)){
// This is a gq event
return { ME_Z_qg(pb,pa,pn,p1,plbar,pl,bptype,aptype,Zprop,stw2,ctw) };
}
assert(is_anyquark(aptype) && is_anyquark(bptype));
// This is a qq event
return ME_Z_qQ(pa,pb,p1,pn,plbar,pl,aptype,bptype,Zprop,stw2,ctw);
}
/** Matrix element squared for backwards uno tree-level current-current
* scattering With Z+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 plbar Final state positron momentum
* @param pl Final state electron momentum
* @param Zprop Z properties
* @param stw2 Value of sin(theta_w)^2
* @param ctw Value of cos(theta_w)
* @returns ME Squared for unob Tree-Level Current-Current Scattering
*
* @note The unof contribution can be calculated by reversing the argument ordering.
*/
std::vector<double> ME_Z_uno_current(
const ParticleID aptype, const ParticleID 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,
ParticleProperties const & Zprop,
const double stw2, const double ctw
){
using namespace currents;
// we know they are not both gluons
assert(!is_gluon(aptype) || !is_gluon(bptype));
if (is_anyquark(aptype) && is_gluon(bptype)) {
// This is a qg event
return { ME_Zuno_qg(pa,pb,pg,p1,pn,plbar,pl,aptype,bptype,Zprop,stw2,ctw) };
}
if (is_gluon(aptype) && is_anyquark(bptype)) {
// This is a gq event
return { ME_Zuno_qg(pb,pa,pg,pn,p1,plbar,pl,bptype,aptype,Zprop,stw2,ctw) };
}
assert(is_anyquark(aptype) && is_anyquark(bptype));
// This is a qq event
return ME_Zuno_qQ(pa,pb,pg,p1,pn,plbar,pl,aptype,bptype,Zprop,stw2,ctw);
}
/** \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(
ParticleID aptype, ParticleID 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 vev
){
using namespace currents;
if (aptype==pid::gluon && bptype==pid::gluon)
// gg initial state
return ME_H_gg(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb,vev);
if (aptype==pid::gluon&&bptype!=pid::gluon) {
if (is_quark(bptype))
return ME_H_qg(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb,vev)*4./9.;
return ME_H_qbarg(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb,vev)*4./9.;
}
if (bptype==pid::gluon && aptype!=pid::gluon) {
if (is_quark(aptype))
return ME_H_qg(p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev)*4./9.;
return ME_H_qbarg(p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev)*4./9.;
}
// they are both quark
if (is_quark(bptype)) {
if (is_quark(aptype))
return ME_H_qQ(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb,vev)*4.*4./(9.*9.);
return ME_H_qQbar(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb,vev)*4.*4./(9.*9.);
}
if (is_quark(aptype))
return ME_H_qbarQ(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb,vev)*4.*4./(9.*9.);
return ME_H_qbarQbar(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb,vev)*4.*4./(9.*9.);
}
/** \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(
ParticleID aptype, ParticleID 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 vev
){
using namespace currents;
if (bptype==pid::gluon && aptype!=pid::gluon) {
if (is_quark(aptype))
return ME_H_unob_gQ(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev);
return ME_H_unob_gQbar(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev);
}
// they are both quark
if (is_quark(aptype)) {
if (is_quark(bptype))
return ME_H_unob_qQ(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev);
return ME_H_unob_qbarQ(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev);
}
if (is_quark(bptype))
return ME_H_unob_qQbar(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev);
return ME_H_unob_qbarQbar(pg,p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb,vev);
}
void validate(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
MatrixElement::MatrixElement(
std::function<double (double)> alpha_s,
MatrixElementConfig conf
):
alpha_s_{std::move(alpha_s)},
param_{std::move(conf)}
{
validate(param_);
}
std::vector<double> MatrixElement::tree_kin(
Event const & ev
) const {
if(!ev.valid_hej_state(param_.soft_pt_regulator)) return {0.};
if(!ev.valid_incoming()){
throw std::invalid_argument{
"Invalid momentum for one or more incoming particles. "
"Incoming momenta must have vanishing mass and transverse momentum."
};
}
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)};
case pid::Z_photon_mix:
return tree_kin_Z(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;
}
template<class InputIterator>
std::vector <double> FKL_ladder_weight_mix(
InputIterator begin_gluon, InputIterator end_gluon,
CLHEP::HepLorentzVector const & q0_t, CLHEP::HepLorentzVector const & q0_b,
CLHEP::HepLorentzVector const & pa, CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & p1, CLHEP::HepLorentzVector const & pn,
const double lambda
){
double wt_top = 1;
double wt_bot = 1;
double wt_mix = 1;
auto qi_t = q0_t;
auto qi_b = q0_b;
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_t = qi_t - g;
const auto qip1_b = qi_b - g;
if(treat_as_extremal(*gluon_it)){
wt_top *= C2Lipatovots(qip1_t, qi_t, pa, pb, lambda)*C_A;
wt_bot *= C2Lipatovots(qip1_b, qi_b, pa, pb, lambda)*C_A;
wt_mix *= C2Lipatovots_Mix(qip1_t, qi_t, qip1_b, qi_b, pa, pb, lambda)*C_A;
} else{
wt_top *= C2Lipatovots(qip1_t, qi_t, pa, pb, p1, pn, lambda)*C_A;
wt_bot *= C2Lipatovots(qip1_b, qi_b, pa, pb, p1, pn, lambda)*C_A;
wt_mix *= C2Lipatovots_Mix(qip1_t, qi_t, qip1_b, qi_b, pa, pb, p1, pn, lambda)*C_A;
}
qi_t = qip1_t;
qi_b = qip1_b;
}
return {wt_top, wt_bot, wt_mix};
}
std::vector<Particle> tag_extremal_jet_partons( Event const & ev ){
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;
}
auto const & jets = ev.jets();
std::vector<fastjet::PseudoJet> extremal_jets;
if(! is_backward_g_to_h(ev)) {
auto most_backward = begin(jets);
// skip jets caused by unordered emission or qqbar
if(ev.type() == event_type::unob || ev.type() == event_type::qqbar_exb){
assert(jets.size() >= 2);
++most_backward;
}
extremal_jets.emplace_back(*most_backward);
}
if(! is_forward_g_to_h(ev)) {
auto most_forward = end(jets) - 1;
if(ev.type() == event_type::unof || ev.type() == event_type::qqbar_exf){
assert(jets.size() >= 2);
--most_forward;
}
extremal_jets.emplace_back(*most_forward);
}
const auto extremal_jet_indices = ev.particle_jet_indices(
extremal_jets
);
assert(extremal_jet_indices.size() == out_partons.size());
for(std::size_t i = 0; i < out_partons.size(); ++i){
assert(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;
}
double tree_kin_jets_qqbar_mid(
ParticleID aptype, ParticleID bptype,
CLHEP::HepLorentzVector const & pa, CLHEP::HepLorentzVector const & pb,
std::vector<Particle> const & partons,
double lambda
){
CLHEP::HepLorentzVector pq;
CLHEP::HepLorentzVector 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 qqbar
auto qqbart = q0;
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){
qqbart -= to_HepLorentzVector(*parton_it);
}
const int nabove = std::distance(begin_ladder, backmidquark);
std::vector<CLHEP::HepLorentzVector> partonsHLV;
partonsHLV.reserve(partons.size());
for (std::size_t i = 0; i != partons.size(); ++i) {
partonsHLV.push_back(to_HepLorentzVector(partons[i]));
}
const double current_factor = ME_qqbar_mid_current(
aptype, bptype, nabove, pa, pb,
pq, pqbar, partonsHLV
);
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,
qqbart, pa, pb, p1, pn,
lambda
);
return current_factor*ladder_factor;
}
template<class InIter, class partIter>
double tree_kin_jets_qqbar(InIter BeginIn, InIter EndIn, partIter BeginPart,
partIter EndPart, double lambda){
const bool swap_qqbar = is_quark(*BeginPart);
const auto pgin = to_HepLorentzVector(*BeginIn);
const auto pb = to_HepLorentzVector(*(EndIn-1));
const auto pq = to_HepLorentzVector(*(BeginPart+(swap_qqbar?0:1)));
const auto pqbar = to_HepLorentzVector(*(BeginPart+(swap_qqbar?1:0)));
const auto p1 = to_HepLorentzVector(*(BeginPart));
const auto pn = to_HepLorentzVector(*(EndPart-1));
assert((BeginIn)->type==pid::gluon); // Incoming a must be gluon.
const double current_factor = ME_qqbar_current(
(EndIn-1)->type, pgin, pq, pqbar, pn, pb, swap_qqbar
)/(4.*(N_C*N_C - 1.));
const double ladder_factor = FKL_ladder_weight(
(BeginPart+2), (EndPart-1),
pgin-pq-pqbar, pgin, pb, p1, pn, lambda
);
return current_factor*ladder_factor;
}
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
);
const double ladder_factor = FKL_ladder_weight(
(BeginPart+2), (EndPart-1),
pa-p1-pg, pa, pb, p1, pn, lambda
);
return current_factor*ladder_factor;
}
} // namespace
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()==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
);
}
if (ev.type()==event_type::unordered_backward){
return tree_kin_jets_uno(incoming.begin(), incoming.end(),
partons.begin(), partons.end(),
param_.regulator_lambda);
}
if (ev.type()==event_type::unordered_forward){
return tree_kin_jets_uno(incoming.rbegin(), incoming.rend(),
partons.rbegin(), partons.rend(),
param_.regulator_lambda);
}
if (ev.type()==event_type::extremal_qqbar_backward){
return tree_kin_jets_qqbar(incoming.begin(), incoming.end(),
partons.begin(), partons.end(),
param_.regulator_lambda);
}
if (ev.type()==event_type::extremal_qqbar_forward){
return tree_kin_jets_qqbar(incoming.rbegin(), incoming.rend(),
partons.rbegin(), partons.rend(),
param_.regulator_lambda);
}
if (ev.type()==event_type::central_qqbar){
return tree_kin_jets_qqbar_mid(incoming[0].type, incoming[1].type,
to_HepLorentzVector(incoming[0]),
to_HepLorentzVector(incoming[1]),
partons, param_.regulator_lambda);
}
throw std::logic_error("Cannot reweight non-resummable processes in Pure Jets");
}
namespace {
double tree_kin_W_FKL(
ParticleID aptype, ParticleID bptype,
CLHEP::HepLorentzVector const & pa, CLHEP::HepLorentzVector const & pb,
std::vector<Particle> const & partons,
CLHEP::HepLorentzVector const & plbar, CLHEP::HepLorentzVector const & pl,
double lambda, ParticleProperties const & Wprop
){
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, Wprop
);
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 CLHEP::HepLorentzVector & plbar,
const CLHEP::HepLorentzVector & pl,
double lambda, ParticleProperties const & Wprop
){
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, Wprop
);
const double ladder_factor = FKL_ladder_weight(
BeginPart+2, EndPart-1,
q0, pa, pb, p1, pn,
lambda
);
return current_factor*ladder_factor;
}
template<class InIter, class partIter>
double tree_kin_W_qqbar(InIter BeginIn, partIter BeginPart,
partIter EndPart,
const CLHEP::HepLorentzVector & plbar,
const CLHEP::HepLorentzVector & pl,
double lambda, ParticleProperties const & Wprop
){
const bool swap_qqbar=is_quark(*BeginPart);
const auto pa = to_HepLorentzVector(*BeginIn);
const auto pb = to_HepLorentzVector(*(BeginIn+1));
const auto pq = to_HepLorentzVector(*(BeginPart+(swap_qqbar?0:1)));
const auto pqbar = to_HepLorentzVector(*(BeginPart+(swap_qqbar?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_qqbar_current(
(BeginIn)->type, (BeginIn+1)->type, pa, pb,
pq, pqbar, pn, plbar, pl, swap_qqbar, wc, Wprop
);
const double ladder_factor = FKL_ladder_weight(
BeginPart+2, EndPart-1,
q0, pa, pb, p1, pn,
lambda
);
return current_factor*ladder_factor;
}
double tree_kin_W_qqbar_mid(
ParticleID aptype, ParticleID bptype,
CLHEP::HepLorentzVector const & pa,
CLHEP::HepLorentzVector const & pb,
std::vector<Particle> const & partons,
CLHEP::HepLorentzVector const & plbar, CLHEP::HepLorentzVector const & pl,
double lambda, ParticleProperties const & Wprop
){
CLHEP::HepLorentzVector pq;
CLHEP::HepLorentzVector 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.front());
auto pn = to_HepLorentzVector(partons.back());
auto q0 = pa - p1;
// t-channel momentum after qqbar
auto qqbart = q0;
bool wqq = backmidquark->type != -(backmidquark+1)->type; // qqbar emit W
bool wc = !wqq && (aptype==partons.front().type); //leg b emits w
assert(!wqq || !wc);
if(wqq){ // emission from qqbar
qqbart -= pl + plbar;
} else if(!wc) { // emission from leg a
q0 -= pl + plbar;
qqbart -= 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){
qqbart -= to_HepLorentzVector(*parton_it);
}
const int nabove = std::distance(begin_ladder, backmidquark);
const int nbelow = std::distance(begin_ladder_2, end_ladder);
std::vector<CLHEP::HepLorentzVector> partonsHLV;
partonsHLV.reserve(partons.size());
for (std::size_t i = 0; i != partons.size(); ++i) {
partonsHLV.push_back(to_HepLorentzVector(partons[i]));
}
const double current_factor = ME_W_qqbar_mid_current(
aptype, bptype, nabove, nbelow, pa, pb,
pq, pqbar, partonsHLV, plbar, pl, wqq, wc, Wprop
);
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,
qqbart, pa, pb, p1, pn,
lambda
);
return current_factor*C_A*C_A/(N_C*N_C-1.)*ladder_factor;
}
} // namespace
double MatrixElement::tree_kin_W(Event const & ev) const {
using namespace event_type;
auto const & incoming(ev.incoming());
#ifndef NDEBUG
// assert that there is exactly one decay corresponding to the W
assert(ev.decays().size() == 1);
auto const & w_boson{
std::find_if(ev.outgoing().cbegin(), ev.outgoing().cend(),
[] (Particle const & p) -> bool {
return std::abs(p.type) == ParticleID::Wp;
}) };
assert(w_boson != ev.outgoing().cend());
assert( static_cast<long int>(ev.decays().cbegin()->first)
== std::distance(ev.outgoing().cbegin(), w_boson) );
#endif
// find decay products of W
auto const & decay{ ev.decays().cbegin()->second };
assert(decay.size() == 2);
assert( ( is_anylepton(decay.at(0)) && is_anyneutrino(decay.at(1)) )
|| ( is_anylepton(decay.at(1)) && is_anyneutrino(decay.at(0)) ) );
// get lepton & neutrino
CLHEP::HepLorentzVector plbar;
CLHEP::HepLorentzVector pl;
if (decay.at(0).type < 0){
plbar = to_HepLorentzVector(decay.at(0));
pl = to_HepLorentzVector(decay.at(1));
}
else{
pl = to_HepLorentzVector(decay.at(0));
plbar = to_HepLorentzVector(decay.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,
param_.ew_parameters.Wprop());
}
if(ev.type() == unordered_backward){
return tree_kin_W_uno(cbegin(incoming), cbegin(partons),
cend(partons), plbar, pl,
param_.regulator_lambda,
param_.ew_parameters.Wprop());
}
if(ev.type() == unordered_forward){
return tree_kin_W_uno(crbegin(incoming), crbegin(partons),
crend(partons), plbar, pl,
param_.regulator_lambda,
param_.ew_parameters.Wprop());
}
if(ev.type() == extremal_qqbar_backward){
return tree_kin_W_qqbar(cbegin(incoming), cbegin(partons),
cend(partons), plbar, pl,
param_.regulator_lambda,
param_.ew_parameters.Wprop());
}
if(ev.type() == extremal_qqbar_forward){
return tree_kin_W_qqbar(crbegin(incoming), crbegin(partons),
crend(partons), plbar, pl,
param_.regulator_lambda,
param_.ew_parameters.Wprop());
}
assert(ev.type() == central_qqbar);
return tree_kin_W_qqbar_mid(incoming[0].type, incoming[1].type,
pa, pb, partons, plbar, pl,
param_.regulator_lambda,
param_.ew_parameters.Wprop());
}
namespace {
std::vector <double> tree_kin_Z_FKL(
const ParticleID aptype, const ParticleID bptype,
CLHEP::HepLorentzVector const & pa, CLHEP::HepLorentzVector const & pb,
std::vector<Particle> const & partons,
CLHEP::HepLorentzVector const & plbar, CLHEP::HepLorentzVector const & pl,
const double lambda, ParticleProperties const & Zprop,
const double stw2, const double ctw
){
const auto p1 = to_HepLorentzVector(partons[0]);
const auto pn = to_HepLorentzVector(partons[partons.size() - 1]);
const auto begin_ladder = cbegin(partons) + 1;
const auto end_ladder = cend(partons) - 1;
const std::vector <double> current_factor = ME_Z_current(
aptype, bptype, pn, pb, p1, pa,
plbar, pl, Zprop, stw2, ctw
);
std::vector <double> ladder_factor;
if(is_gluon(bptype)){
// This is a qg event
const auto q0 = pa-p1-plbar-pl;
ladder_factor.push_back(FKL_ladder_weight(begin_ladder, end_ladder,
q0, pa, pb, p1, pn, lambda));
} else if(is_gluon(aptype)){
// This is a gq event
const auto q0 = pa-p1;
ladder_factor.push_back(FKL_ladder_weight(begin_ladder, end_ladder,
q0, pa, pb, p1, pn, lambda));
} else {
// This is a qq event
const auto q0 = pa-p1-plbar-pl;
const auto q1 = pa-p1;
ladder_factor=FKL_ladder_weight_mix(begin_ladder, end_ladder,
q0, q1, pa, pb, p1, pn, lambda);
}
std::vector <double> result;
for(size_t i=0; i<current_factor.size(); ++i){
result.push_back(current_factor.at(i)*ladder_factor.at(i));
}
return result;
}
template<class InIter, class partIter>
std::vector <double> tree_kin_Z_uno(InIter BeginIn, partIter BeginPart, partIter EndPart,
const CLHEP::HepLorentzVector & plbar,
const CLHEP::HepLorentzVector & pl,
const double lambda, ParticleProperties const & Zprop,
const double stw2, const double ctw){
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));
const ParticleID aptype = (BeginIn)->type;
const ParticleID bptype = (BeginIn+1)->type;
const std::vector <double> current_factor = ME_Z_uno_current(
aptype, bptype, pn, pb, p1, pa, pg,
plbar, pl, Zprop, stw2, ctw
);
std::vector <double> ladder_factor;
if(is_gluon(bptype)){
// This is a qg event
const auto q0 = pa-pg-p1-plbar-pl;
ladder_factor.push_back(FKL_ladder_weight(BeginPart+2, EndPart-1,
q0, pa, pb, p1, pn, lambda));
}else if(is_gluon(aptype)){
// This is a gq event
const auto q0 = pa-pg-p1;
ladder_factor.push_back(FKL_ladder_weight(BeginPart+2, EndPart-1,
q0, pa, pb, p1, pn, lambda));
}else{
// This is a qq event
const auto q0 = pa-pg-p1-plbar-pl;
const auto q1 = pa-pg-p1;
ladder_factor=FKL_ladder_weight_mix(BeginPart+2, EndPart-1,
q0, q1, pa, pb, p1, pn, lambda);
}
std::vector <double> result;
for(size_t i=0; i<current_factor.size(); ++i){
result.push_back(current_factor.at(i)*ladder_factor.at(i));
}
return result;
}
} // namespace
std::vector<double> MatrixElement::tree_kin_Z(Event const & ev) const {
using namespace event_type;
auto const & incoming(ev.incoming());
// find decay products of Z
auto const & decay{ ev.decays().cbegin()->second };
assert(decay.size() == 2);
assert(is_anylepton(decay.at(0)) && !is_anyneutrino(decay.at(0))
&& decay.at(0).type==-decay.at(1).type);
// get leptons
CLHEP::HepLorentzVector plbar;
CLHEP::HepLorentzVector pl;
if (decay.at(0).type < 0){
plbar = to_HepLorentzVector(decay.at(0));
pl = to_HepLorentzVector(decay.at(1));
}
else{
pl = to_HepLorentzVector(decay.at(0));
plbar = to_HepLorentzVector(decay.at(1));
}
const auto pa = to_HepLorentzVector(incoming[0]);
const auto pb = to_HepLorentzVector(incoming[1]);
const auto partons = tag_extremal_jet_partons(ev);
const double stw2 = param_.ew_parameters.sin2_tw();
const double ctw = param_.ew_parameters.cos_tw();
if(ev.type() == FKL){
return tree_kin_Z_FKL(incoming[0].type, incoming[1].type,
pa, pb, partons, plbar, pl,
param_.regulator_lambda,
param_.ew_parameters.Zprop(),
stw2, ctw);
}
if(ev.type() == unordered_backward){
return tree_kin_Z_uno(cbegin(incoming), cbegin(partons),
cend(partons), plbar, pl,
param_.regulator_lambda,
param_.ew_parameters.Zprop(),
stw2, ctw);
}
if(ev.type() == unordered_forward){
return tree_kin_Z_uno(crbegin(incoming), crbegin(partons),
crend(partons), plbar, pl,
param_.regulator_lambda,
param_.ew_parameters.Zprop(),
stw2, ctw);
}
throw std::logic_error("Can only reweight FKL or uno processes in Z+Jets");
}
double MatrixElement::tree_kin_Higgs(Event const & ev) const {
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
double K(
ParticleID type,
CLHEP::HepLorentzVector const & pout,
CLHEP::HepLorentzVector const & pin
){
if(type == pid::gluon) return currents::K_g(pout, pin);
return C_F;
}
} // namespace
// kinetic matrix element square for backward Higgs emission
// cf. eq:ME_h_jets_peripheral in developer manual,
// but without factors \alpha_s and the FKL ladder
double MatrixElement::MH2_backwardH(
const ParticleID type_forward,
CLHEP::HepLorentzVector const & pa,
CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & pH,
CLHEP::HepLorentzVector const & pn
) const {
using namespace currents;
const double vev = param_.ew_parameters.vev();
return K(type_forward, pn, pb)*ME_jgH_j(
pH, pa, pn, pb,
param_.Higgs_coupling.mt, param_.Higgs_coupling.include_bottom,
param_.Higgs_coupling.mb, vev
)/(4.*(N_C*N_C - 1)*(pa-pH).m2()*(pb-pn).m2());
}
// kinetic matrix element square for backward unordered emission
// and forward g -> Higgs
double MatrixElement::MH2_unob_forwardH(
CLHEP::HepLorentzVector const & pa,
CLHEP::HepLorentzVector const & pb,
CLHEP::HepLorentzVector const & pg,
CLHEP::HepLorentzVector const & p1,
CLHEP::HepLorentzVector const & pH
) const {
using namespace currents;
const double vev = param_.ew_parameters.vev();
// Colour Acceleration Modifiers for quarks,
// see eq:K_q in developer manual
constexpr double K_f1 = C_F;
constexpr double nhel = 4.;
return K_f1*ME_juno_jgH(
pg, p1, pa, pH, pb,
param_.Higgs_coupling.mt, param_.Higgs_coupling.include_bottom,
param_.Higgs_coupling.mb, vev
)/(nhel*(N_C*N_C - 1)*(pa - p1 - pg).m2()*(pb - pH).m2());
}
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(is_anyquark(incoming.front())) {
assert(incoming.front().type == outgoing[1].type);
return tree_kin_Higgs_between(ev);
}
const auto partons = tag_extremal_jet_partons(ev);
const auto pa = to_HepLorentzVector(incoming.front());
const auto pb = to_HepLorentzVector(incoming.back());
const auto pH = to_HepLorentzVector(outgoing.front());
const auto end_ladder = end(partons) - ((ev.type() == event_type::unof)?2:1);
const auto pn = to_HepLorentzVector(*end_ladder);
const double ladder = FKL_ladder_weight(
begin(partons), end_ladder,
- pa - pH, pa, pb, pH, pn,
+ pa - pH, pa, pb, pa, pn,
param_.regulator_lambda
);
if(ev.type() == event_type::unof) {
const auto pg = to_HepLorentzVector(outgoing.back());
return MH2_unob_forwardH(
pb, pa, pg, pn, pH
)*ladder;
}
return MH2_backwardH(
incoming.back().type,
pa, pb, pH, pn
)*ladder;
}
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(is_anyquark(incoming.back())) {
assert(incoming.back().type == outgoing[outgoing.size()-2].type);
return tree_kin_Higgs_between(ev);
}
const auto partons = tag_extremal_jet_partons(ev);
const auto pa = to_HepLorentzVector(incoming.front());
const auto pb = to_HepLorentzVector(incoming.back());
const auto pH = to_HepLorentzVector(outgoing.back());
auto begin_ladder = begin(partons) + 1;
auto q0 = pa - to_HepLorentzVector(partons.front());
if(ev.type() == event_type::unob) {
q0 -= to_HepLorentzVector(*begin_ladder);
++begin_ladder;
}
const auto p1 = to_HepLorentzVector(*(begin_ladder - 1));
const double ladder = FKL_ladder_weight(
begin_ladder, end(partons),
- q0, pa, pb, p1, pH,
+ q0, pa, pb, p1, pb,
param_.regulator_lambda
);
if(ev.type() == event_type::unob) {
const auto pg = to_HepLorentzVector(outgoing.front());
return MH2_unob_forwardH(
pa, pb, pg, p1, pH
)*ladder;
}
return MH2_backwardH(
incoming.front().type,
pb, pa, pH, p1
)*ladder;
}
namespace {
template<class InIter, class partIter>
double tree_kin_Higgs_uno(InIter BeginIn, InIter EndIn, partIter BeginPart,
partIter EndPart,
CLHEP::HepLorentzVector const & qH,
CLHEP::HepLorentzVector const & qHp1,
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, vev
);
}
} // namespace
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 = NAN;
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_.ew_parameters.vev()
);
}
else if(ev.type() == unob){
current_factor = C_A*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_.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 = C_A*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_.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 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:
case pid::Z_photon_mix:
return alpha_w*alpha_w;
// TODO
case pid::photon:
case pid::Z:
default:
throw not_implemented("Emission of boson of unsupported type");
}
}
} // namespace
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*std::log(mur/parton->perp());
}
}
return get_AWZH_coupling(ev, alpha_s, param_.ew_parameters.alpha_w())*res;
}
} // namespace HEJ
diff --git a/t/CMakeLists.txt b/t/CMakeLists.txt
index 5628f91..63b4b2d 100644
--- a/t/CMakeLists.txt
+++ b/t/CMakeLists.txt
@@ -1,533 +1,533 @@
set(tst_dir "${CMAKE_CURRENT_SOURCE_DIR}")
set(tst_ME_data_dir "${tst_dir}/ME_data")
# small library for common test functions
add_library(hej_test SHARED hej_test.cc)
target_include_directories(hej_test PUBLIC ${tst_dir})
target_link_libraries(hej_test HEJ)
# test event classification
# test explicit configurations
add_executable(test_classify ${tst_dir}/test_classify.cc)
target_compile_options(test_classify PRIVATE "-O0") # avoid compiler optimisation
target_link_libraries(test_classify HEJ hej_test)
add_test(
NAME classify
COMMAND test_classify
)
# test against reference data
add_executable(test_classify_ref ${tst_dir}/test_classify_ref.cc)
target_link_libraries(test_classify_ref HEJ hej_test)
add_test(
NAME classify_ref
COMMAND test_classify_ref ${tst_dir}/classify_ref ${tst_dir}/classify.lhe.gz
)
add_test(
NAME classify_ref_4j
COMMAND test_classify_ref ${tst_dir}/classify_ref_4j ${tst_dir}/4j.lhe.gz
)
add_test(
NAME classify_ref_W4j
COMMAND test_classify_ref
${tst_dir}/classify_ref_W4j
${tst_dir}/MGemnubar4j_unweighted.lhe.gz
)
add_test(
NAME t_classify_ref_Z4j
COMMAND test_classify_ref
${tst_dir}/classify_ref_Z4j
${tst_dir}/Z_4j.lhe.gz
)
# test for valid W decays
add_executable(test_decay ${tst_dir}/test_decay.cc)
target_link_libraries(test_decay HEJ hej_test)
add_test(
NAME valid_decay
COMMAND test_decay
)
# test valid jet cuts on tagging jets
add_executable(test_jet_cuts ${tst_dir}/test_jet_cuts.cc)
target_link_libraries(test_jet_cuts HEJ hej_test)
add_test(
NAME jet_cuts
COMMAND test_jet_cuts
)
# test phase space point
add_executable(test_psp ${tst_dir}/test_psp.cc)
target_link_libraries(test_psp HEJ hej_test)
add_test(
NAME PhaseSpace
COMMAND test_psp ${tst_dir}/psp_gen.lhe.gz
)
# test importing analyses
file(COPY "${tst_dir}/analysis_config.yml" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
set(test_config "${CMAKE_CURRENT_BINARY_DIR}/analysis_config.yml")
get_target_property(ANALYSIS_PATH AnalysisTemplate_lib BINARY_DIR)
get_target_property(ANALYSIS_LIB AnalysisTemplate_lib OUTPUT_NAME)
set(ANALYSIS_PARAMETERS "")
file(READ ${test_config} config)
file(WRITE ${test_config} "${config} - plugin: ${ANALYSIS_PATH}/lib${ANALYSIS_LIB}.so\n ${ANALYSIS_PARAMETERS}\n")
configure_file( ${tst_dir}/analysis_config_single.yml.in
analysis_config_simple.yml @ONLY )
add_test(
NAME analysis_simple
COMMAND $<TARGET_FILE:HEJ_main>
analysis_config_simple.yml
${tst_dir}/2j.lhe.gz
)
get_target_property(ANALYSIS_PATH AnalysisPrint_lib BINARY_DIR)
get_target_property(ANALYSIS_LIB AnalysisPrint_lib OUTPUT_NAME)
set(ANALYSIS_PARAMETERS " output: ana_output")
file(READ ${test_config} config)
file(WRITE ${test_config} "${config} - plugin: ${ANALYSIS_PATH}/lib${ANALYSIS_LIB}.so\n ${ANALYSIS_PARAMETERS}\n")
configure_file( ${tst_dir}/analysis_config_single.yml.in
analysis_config_print.yml @ONLY )
add_test(
NAME analysis_print
COMMAND $<TARGET_FILE:HEJ_main>
analysis_config_print.yml
${tst_dir}/2j.lhe.gz
)
if(ROOT_FOUND)
get_target_property(ANALYSIS_PATH AnalysisROOT_lib BINARY_DIR)
get_target_property(ANALYSIS_LIB AnalysisROOT_lib OUTPUT_NAME)
set(ANALYSIS_PARAMETERS "")
file(READ ${test_config} config)
file(WRITE ${test_config} "${config} - plugin: ${ANALYSIS_PATH}/lib${ANALYSIS_LIB}.so\n ${ANALYSIS_PARAMETERS}\n")
configure_file( ${tst_dir}/analysis_config_single.yml.in
analysis_config_root.yml @ONLY )
add_test(
NAME analysis_root
COMMAND $<TARGET_FILE:HEJ_main>
analysis_config_root.yml
${tst_dir}/2j.lhe.gz
)
endif()
if(RIVET_FOUND)
file(READ ${test_config} config)
file(WRITE ${test_config} "${config} - rivet: MC_XS\n output: ana_rivet\n")
endif()
add_test(
NAME analysis_all
COMMAND $<TARGET_FILE:HEJ_main>
${test_config}
${tst_dir}/2j.lhe.gz
)
# test importing scales (from examples/softestptScale)
add_executable(test_scale_import ${tst_dir}/test_scale_import)
target_link_libraries(test_scale_import HEJ)
get_target_property(SCALE_PATH softestptScale_lib BINARY_DIR)
get_target_property(SCALE_LIB softestptScale_lib OUTPUT_NAME)
set(SCALE_NAME "softest_jet_pt")
configure_file( ${tst_dir}/jet_config_with_import.yml.in
jet_config_with_import.yml @ONLY )
add_test(
NAME scale_import
COMMAND test_scale_import jet_config_with_import.yml
)
# test scale arithmetic (e.g. 2*H_T/4)
add_executable(test_scale_arithmetics ${tst_dir}/test_scale_arithmetics)
target_link_libraries(test_scale_arithmetics HEJ hej_test)
add_test(
NAME scale_arithmetics
COMMAND test_scale_arithmetics ${tst_dir}/jet_config.yml ${tst_dir}/2j.lhe.gz
)
# test "ParameterDescription"
add_executable(test_descriptions ${tst_dir}/test_descriptions)
target_link_libraries(test_descriptions HEJ hej_test)
add_test(
NAME descriptions
COMMAND test_descriptions
)
# test "EventParameters*Weight"
add_executable(test_parameters ${tst_dir}/test_parameters)
target_link_libraries(test_parameters HEJ hej_test)
add_test(
NAME parameters
COMMAND test_parameters
)
# test Particle IDs
add_executable(test_pid ${tst_dir}/test_pid)
target_link_libraries(test_pid HEJ hej_test)
add_test(
NAME pid
COMMAND test_pid
)
# test EW constants
add_executable(test_EWConstants ${tst_dir}/test_EWConstants)
target_link_libraries(test_EWConstants HEJ hej_test)
add_test(
NAME EWConstants
COMMAND test_EWConstants
)
# test unweighting
add_executable(test_unweighter ${tst_dir}/test_unweighter)
target_link_libraries(test_unweighter HEJ hej_test)
add_test(
NAME unweighter
COMMAND test_unweighter ${tst_dir}/4j.lhe.gz
)
# test colour generation
add_executable(test_colours ${tst_dir}/test_colours)
target_link_libraries(test_colours HEJ hej_test)
add_test(
NAME colour_flow
COMMAND test_colours
)
add_executable(test_colours2 ${tst_dir}/test_colours2)
target_link_libraries(test_colours2 HEJ hej_test)
add_test(
NAME colour_flow2
COMMAND test_colours2
)
# test matrix elements
add_executable(test_ME_generic ${tst_dir}/test_ME_generic.cc)
target_link_libraries(test_ME_generic HEJ hej_test)
add_test(
NAME ME_j
COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtinf.yml
${tst_ME_data_dir}/ME_jets_tree.dat ${tst_ME_data_dir}/PSP_jets.lhe.gz
)
add_test(
NAME ME_j_virt
COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtinf.yml
${tst_ME_data_dir}/ME_jets_tree_virt.dat ${tst_ME_data_dir}/PSP_jets.lhe.gz
)
add_test(
NAME ME_h
COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtinf.yml
${tst_ME_data_dir}/ME_h_mtinf_tree.dat ${tst_ME_data_dir}/PSP_h.lhe.gz
)
add_test(
NAME ME_hj
COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtinf.yml
${tst_ME_data_dir}/ME_hj_mtinf_tree.dat ${tst_ME_data_dir}/PSP_hj.lhe.gz
)
add_test(
NAME ME_h_virt
COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtinf.yml
${tst_ME_data_dir}/ME_h_mtinf_virt.dat ${tst_ME_data_dir}/PSP_h.lhe.gz
)
add_test(
NAME ME_hj_virt
COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtinf.yml
${tst_ME_data_dir}/ME_hj_mtinf_virt.dat ${tst_ME_data_dir}/PSP_hj.lhe.gz
)
if(QCDloop_FOUND)
add_test(
NAME ME_h_mt
COMMAND test_ME_generic ${tst_ME_data_dir}/config_mt.yml
${tst_ME_data_dir}/ME_h_mt_tree.dat ${tst_ME_data_dir}/PSP_h.lhe.gz
)
add_test(
NAME ME_h_mtmb
COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtmb.yml
${tst_ME_data_dir}/ME_h_mtmb_tree.dat ${tst_ME_data_dir}/PSP_h.lhe.gz
)
add_test(
NAME ME_hj_mt
COMMAND test_ME_generic ${tst_ME_data_dir}/config_mt.yml
${tst_ME_data_dir}/ME_hj_mt_tree.dat ${tst_ME_data_dir}/PSP_hj.lhe.gz
)
add_test(
NAME ME_hj_mtmb
COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtmb.yml
${tst_ME_data_dir}/ME_hj_mtmb_tree.dat ${tst_ME_data_dir}/PSP_hj.lhe.gz
)
endif()
add_test(
NAME ME_j_subl
COMMAND test_ME_generic ${tst_ME_data_dir}/config_pure.yml
${tst_ME_data_dir}/ME_jets_subl_tree.dat ${tst_ME_data_dir}/PSP_jets_subl.lhe.gz
)
add_test(
NAME ME_j_subl_virt
COMMAND test_ME_generic ${tst_ME_data_dir}/config_pure.yml
${tst_ME_data_dir}/ME_jets_subl_tree_virt.dat ${tst_ME_data_dir}/PSP_jets_subl.lhe.gz
)
add_test(
NAME ME_j_subl_4j
COMMAND test_ME_generic ${tst_ME_data_dir}/config_pure.yml
${tst_ME_data_dir}/ME_jets_subl_tree_new.dat ${tst_dir}/4j.lhe.gz
)
add_test(
NAME ME_j_subl_4j_virt
COMMAND test_ME_generic ${tst_ME_data_dir}/config_pure.yml
${tst_ME_data_dir}/ME_jets_subl_tree_new_virt.dat ${tst_dir}/4j.lhe.gz
)
add_test(
NAME ME_w_FKL
COMMAND test_ME_generic ${tst_ME_data_dir}/config_w_ME.yml
${tst_ME_data_dir}/ME_w_FKL_tree.dat ${tst_ME_data_dir}/PSP_w_FKL.lhe.gz
)
add_test(
NAME ME_w_FKL_virt
COMMAND test_ME_generic ${tst_ME_data_dir}/config_w_ME.yml
${tst_ME_data_dir}/ME_w_FKL_virt.dat ${tst_ME_data_dir}/PSP_w_FKL.lhe.gz
)
add_test(
NAME ME_Wp
COMMAND test_ME_generic ${tst_ME_data_dir}/config_w_ME.yml
${tst_ME_data_dir}/ME_Wp.dat ${tst_ME_data_dir}/PSP_Wp.lhe.gz
)
add_test(
NAME ME_Wp_virt
COMMAND test_ME_generic ${tst_ME_data_dir}/config_w_ME.yml
${tst_ME_data_dir}/ME_Wp_virt.dat ${tst_ME_data_dir}/PSP_Wp.lhe.gz
)
add_test(
NAME ME_Wm
COMMAND test_ME_generic ${tst_ME_data_dir}/config_w_ME.yml
${tst_ME_data_dir}/ME_Wm.dat ${tst_ME_data_dir}/PSP_Wm.lhe.gz
)
add_test(
NAME ME_Wm_virt
COMMAND test_ME_generic ${tst_ME_data_dir}/config_w_ME.yml
${tst_ME_data_dir}/ME_Wm_virt.dat ${tst_ME_data_dir}/PSP_Wm.lhe.gz
)
add_test(
NAME t_ME_Z_FKL
COMMAND test_ME_generic ${tst_ME_data_dir}/config_Z_ME.yml
${tst_ME_data_dir}/ME_Z_FKL_tree.dat ${tst_ME_data_dir}/PSP_Z_FKL.lhe.gz
)
add_test(
NAME t_ME_Z_FKL_virt
COMMAND test_ME_generic ${tst_ME_data_dir}/config_Z_ME.yml
${tst_ME_data_dir}/ME_Z_FKL_virt.dat ${tst_ME_data_dir}/PSP_Z_FKL.lhe.gz
)
add_test(
NAME t_ME_Z_uno
COMMAND test_ME_generic ${tst_ME_data_dir}/config_Z_ME.yml
${tst_ME_data_dir}/ME_Z_uno_tree.dat ${tst_ME_data_dir}/PSP_Z_uno.lhe.gz
)
add_test(
NAME t_ME_Z_uno_virt
COMMAND test_ME_generic ${tst_ME_data_dir}/config_Z_ME.yml
${tst_ME_data_dir}/ME_Z_uno_virt.dat ${tst_ME_data_dir}/PSP_Z_uno.lhe.gz
)
# test main executable
file(COPY "${tst_dir}/jet_config.yml" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
set(test_config "${CMAKE_CURRENT_BINARY_DIR}/jet_config.yml")
if(HighFive_FOUND)
file(READ ${test_config} config)
file(WRITE ${test_config} "${config} - tst.hdf5\n")
endif()
if(HepMC3_FOUND)
file(READ ${test_config} config)
file(WRITE ${test_config} "${config} - tst.hepmc\n")
endif()
if(HepMC_FOUND)
file(READ ${test_config} config)
file(WRITE ${test_config} "${config} - tst.hepmc2\n")
endif()
if(rivet_FOUND)
file(READ ${test_config} config)
file(WRITE ${test_config} "${config}\nanalysis:\n rivet: MC_XS\n output: tst\n")
endif()
set(test_cmd_main "$<TARGET_FILE:HEJ_main>\\\;${test_config}\\\;${tst_dir}/2j.lhe.gz")
# check that HepMC3 output is correct
if(HepMC3_FOUND)
add_executable(check_hepmc ${tst_dir}/check_hepmc.cc)
target_link_libraries(check_hepmc HEJ ${HEPMC3_LIBRARIES})
target_include_directories(check_hepmc PRIVATE ${HEPMC3_INCLUDE_DIR})
set(test_cmd_hepmc "$<TARGET_FILE:check_hepmc>\\\;tst.hepmc")
else()
set(test_cmd_hepmc "")
endif()
# check that LHEF output is correct
add_executable(check_lhe ${tst_dir}/check_lhe.cc)
target_link_libraries(check_lhe HEJ hej_test)
set(test_cmd_lhe "$<TARGET_FILE:check_lhe>\\\;tst.lhe")
# check that rivet interface is consistent with naive rivet
if(rivet_FOUND)
# this assumes "rivet" and "yodadiff" are found in PATH
if(rivet_USE_HEPMC3)
set(hepmc_file "tst.hepmc")
else()
set(hepmc_file "tst.hepmc2")
endif()
if(rivet_USE_HEPMC3 OR (rivet_VERSION VERSION_LESS 3))
set(histo_exclude "")
else()
# rivet 3 with HepMC 2 is inconsistent in order of weights
# -> interface != direct call (by permutation)
# REQUIRES Yoda 1.7.5
set(histo_exclude "-M\\\;\\\\d")
endif()
set(test_cmd_rivet "rivet\\\;-a\\\;MC_XS\\\;${hepmc_file}\\\;-o\\\;tst_direct.yoda\
\;yodadiff\\\;${histo_exclude}\\\;tst.yoda\\\;tst_direct.yoda")
else()
set(test_cmd_rivet "")
endif()
# Run dependent tests in one command to ensure correct execution order
# Note: The commands are concatenated with "\;" to escape CMake lists.
# Thus arguments have to be escaped twice "\\\;".
# e.g. "cmd1\;cmd2\\\;arg1\\\;arg2" is executed like "cmd1 && cmd2 arg1 arg2"
add_test(
NAME main
COMMAND ${CMAKE_COMMAND}
-DCMDS=${test_cmd_main}\;${test_cmd_hepmc}\;${test_cmd_lhe}\;${test_cmd_rivet}
-P ${PROJECT_SOURCE_DIR}/cmake/run_multiple_tests.cmake
)
add_test(
NAME main_example
COMMAND $<TARGET_FILE:HEJ_main> ${PROJECT_SOURCE_DIR}/config.yml ${tst_dir}/h_3j.lhe.gz
)
# check that Sherpas LHE input can be read
add_executable(check_lhe_sherpa ${tst_dir}/check_lhe_sherpa.cc)
target_link_libraries(check_lhe_sherpa HEJ hej_test)
add_test(
NAME sherpa_reader
COMMAND check_lhe_sherpa ${tst_dir}/SherpaLHE.lhe 1.62624e+08
)
# check HDF5 reader & writer
if(HighFive_FOUND)
add_executable(test_hdf5 ${tst_dir}/test_hdf5.cc)
target_link_libraries(test_hdf5 HEJ)
add_test(
NAME hdf5_read
COMMAND test_hdf5 ${tst_dir}/Wm9-g4-repack.hdf5
)
add_executable(test_hdf5_write ${tst_dir}/test_hdf5_write.cc)
target_link_libraries(test_hdf5_write HEJ hej_test)
add_test(
NAME hdf5_write
COMMAND test_hdf5_write ${tst_dir}/Wm9-g4-repack.hdf5 output.hdf5
)
endif()
# check rivet interface
if(RIVET_FOUND)
add_executable(check_rivet ${tst_dir}/check_rivet.cc)
target_link_libraries(check_rivet HEJ rivet::rivet)
add_test(
NAME rivet
COMMAND check_rivet
)
endif()
# test boson reconstruction
add_executable(cmp_events ${tst_dir}/cmp_events.cc)
target_link_libraries(cmp_events HEJ)
add_test(
NAME reconstruct_W
COMMAND cmp_events ${tst_dir}/epnu2jLOFKL_unweight.lhe.tar.gz
${tst_dir}/epnu2jLOFKL_unweight_noW.lhe.gz
)
# test resummed result
add_executable(check_res ${tst_dir}/check_res.cc)
target_link_libraries(check_res HEJ hej_test)
add_test(
NAME xs_h_1j
- COMMAND check_res ${tst_dir}/h_1j.lhe.gz 4.11093 0.0221722
+ COMMAND check_res ${tst_dir}/h_1j.lhe.gz 4.97087 0.0302519
)
if(TEST_ALL) # deactivate long tests by default
add_test(
NAME xs_2j
COMMAND check_res ${tst_dir}/2j.lhe.gz 3.49391e+07 419684
)
add_test(
NAME xs_3j
COMMAND check_res ${tst_dir}/3j.lhe.gz 2.37902e+06 25746.6
)
add_test(
NAME xs_3j_unof
COMMAND check_res ${tst_dir}/3j.lhe.gz 133399 4688.83 unof
)
add_test(
NAME xs_3j_unob
COMMAND check_res ${tst_dir}/3j.lhe.gz 105247 3449.45 unob
)
add_test(
NAME xs_3j_splitf
COMMAND check_res ${tst_dir}/3j.lhe.gz 97659.9 2748.65 splitf
)
add_test(
NAME xs_3j_splitb
COMMAND check_res ${tst_dir}/3j.lhe.gz 107150 2799.8 splitb
)
add_test(
NAME xs_4j
COMMAND check_res ${tst_dir}/4j.lhe.gz 603713 72822.6
)
add_test(
NAME xs_4j_qqbar_mid
COMMAND check_res ${tst_dir}/4j.lhe.gz 21866.7 1716.96 qqbar_mid
)
add_test(
NAME xs_h_1j_long
- COMMAND check_res ${tst_dir}/h_1j_large.lhe.gz 3.87829 0.00278302
+ COMMAND check_res ${tst_dir}/h_1j_large.lhe.gz 4.70112 0.00415353
)
add_test(
NAME xs_h_3j
COMMAND check_res ${tst_dir}/h_3j.lhe.gz 0.667678 0.0126859
)
add_test(
NAME xs_h_3j_unof
COMMAND check_res ${tst_dir}/h_3j_uno.lhe.gz 0.0110041 0.000274214 unof
)
add_test(
NAME xs_h_3j_unob
COMMAND check_res ${tst_dir}/h_3j_uno.lhe.gz 0.0116516 0.000376737 unob
)
add_test(
NAME xs_epnu_2j
COMMAND check_res ${tst_dir}/epnu2jLOFKL_unweight.lhe.tar.gz 262.7 3
)
add_test(
NAME xs_epnu_3j
COMMAND check_res ${tst_dir}/MGepnu3j_unweighted.lhe.gz 38.9512 1
)
add_test(
NAME xs_emnubar_3j
COMMAND check_res ${tst_dir}/MGemnubar3j_unweighted.lhe.gz 24.1575 1
)
add_test(
NAME xs_epnu_3j_unof
COMMAND check_res ${tst_dir}/MGepnu3j_unweighted.lhe.gz 9.63702 0.128355 unof
)
add_test(
NAME xs_epnu_3j_unob
COMMAND check_res ${tst_dir}/MGepnu3j_unweighted.lhe.gz 9.70119 0.108436 unob
)
add_test(
NAME xs_epnu_3j_splitf
COMMAND check_res ${tst_dir}/MGepnu3j_unweighted.lhe.gz 2.91995 0.0463182 splitf
)
add_test(
NAME xs_epnu_3j_splitb
COMMAND check_res ${tst_dir}/MGepnu3j_unweighted.lhe.gz 3.40708 0.0550975 splitb
)
add_test(
NAME xs_epnu_4j
COMMAND check_res ${tst_dir}/MGepnu4j_unweighted.lhe.gz 10.2542 0.135106
)
add_test(
NAME xs_emnubar_4j
COMMAND check_res ${tst_dir}/MGemnubar4j_unweighted.lhe.gz 5.73282 0.0583738
)
add_test(
NAME xs_epnu_4j_qqbar_mid
COMMAND check_res ${tst_dir}/MGepnu4j_unweighted.lhe.gz 0.802603 0.0126908 qqbar_mid
)
endif()
diff --git a/t/ME_data/ME_h_mt_tree.dat b/t/ME_data/ME_h_mt_tree.dat
index 67ddde6..f58d827 100644
--- a/t/ME_data/ME_h_mt_tree.dat
+++ b/t/ME_data/ME_h_mt_tree.dat
@@ -1,807 +1,807 @@
3.992094874e-08
-8.196772518e-06
+8.051095021e-06
3.886272139e-05
1.677832055e-02
4.050725953e-06
-1.220816977e-06
+1.546404659e-06
6.400462689e-07
-3.742983509e-07
+4.773352911e-07
6.053699559e-07
-1.177750296e-05
+1.162987387e-05
4.729758692e-05
1.621148815e-06
-7.380225302e-04
+9.162355738e-04
1.533703249e-05
9.573732998e-06
3.385087104e-02
8.137786341e-07
6.075300603e+02
5.951445813e-06
-3.873726373e-03
+8.622469981e-03
1.928186046e+00
5.710179361e-04
7.986990576e-04
-4.277256679e-05
-6.685370603e-05
+4.626927652e-05
+2.239078145e-05
7.024748657e-04
3.785614363e-02
-5.468590073e-07
+9.359070623e-07
2.008211091e+00
8.826462516e-08
4.627520004e-02
1.062169630e-01
9.340895791e-07
-8.346764403e-03
+8.534475579e-03
2.268339315e-02
3.600279122e-05
6.713118017e-07
-5.230478971e-05
+5.231770802e-05
7.567735364e-05
-5.347713887e-03
+1.021485534e-02
6.078088479e-04
8.320774902e-03
-4.545712675e-03
-3.196266076e-05
+4.581854048e-03
+3.172864812e-05
1.512660797e-04
5.522082262e-03
-1.127268419e-01
+4.079975841e-01
2.308611056e-07
5.469487827e-05
8.465334170e+00
-1.665315530e-04
-4.568237154e-06
+1.991727935e-04
+1.130781629e-05
5.082189599e-06
-1.142032421e-04
-1.619932721e-01
+1.068628048e-04
+1.621898484e-01
2.385636219e-02
4.438425107e+00
-1.641045471e-04
+1.892809276e-04
1.264773773e+00
5.041102815e-03
-3.716226630e-07
-1.877482245e-01
+4.664360317e-07
+2.427827772e-01
2.802069699e-03
-2.456172743e+01
+2.674216910e+01
7.203729133e-08
-1.189573607e-06
-1.692451519e-05
+1.267260059e-06
+2.323343929e-05
1.519941271e-05
1.114780681e-06
9.522309887e-04
9.263417548e-07
2.281568524e+00
1.328903015e-03
1.582906949e-03
2.692415322e+04
-7.173623704e-07
+1.365852936e-06
6.882327922e-04
1.063345487e-07
1.965024170e-02
-9.296820071e-07
+1.242213376e-06
4.393282876e-05
2.557397536e-02
4.961734615e+04
5.373795656e-06
1.069130607e-06
-1.895419629e-06
+2.680032103e-06
1.064996211e-04
-2.055296832e-04
+6.115812548e-04
7.837271762e-08
-1.893197963e-03
-8.035893840e-04
+3.187625264e-03
+8.119859376e-04
7.537519714e-02
-1.448194489e-03
-1.037014872e-04
+1.576406496e-03
+1.752941988e-04
1.147351214e-01
1.830765877e-01
1.136708763e-04
-1.953958263e-05
-1.662078365e-02
+4.706939001e-05
+1.789134944e-02
1.074103594e-03
5.057074674e-06
-9.202540796e-03
-1.462240721e-04
-4.352395882e+01
+1.404623790e-02
+1.516071968e-04
+7.735357637e+01
1.941656711e-02
8.942285136e-05
-2.063754311e-06
-5.671138604e-04
+2.744026706e-06
+5.886397441e-04
1.297220016e-04
1.168241824e-06
1.325832643e-04
3.029510688e+03
1.376379474e+00
-1.306553530e-01
-6.994240967e+01
+1.807639621e-01
+6.838419453e+01
1.782427563e-06
-8.185184700e-06
+1.249127421e-05
1.612906427e-03
-3.757235844e-01
+9.372392735e-01
3.636108827e-04
-2.122773977e-06
+4.662352978e-06
4.711472902e-06
1.707180334e-03
3.177104373e-01
-1.047618895e-03
-2.867034352e-02
+1.090558257e-03
+2.845473383e-02
2.624330979e-01
2.743869739e-02
-1.341583741e-06
-2.608840668e-03
+2.776902095e-06
+4.379108413e-03
1.890057728e-06
-8.891415599e-07
+2.548992930e-06
2.287175741e-05
-1.202819067e-05
+1.739299507e-05
2.859899271e-02
-1.985310427e-05
+5.191268153e-05
5.981959910e+00
4.271356353e+08
2.903377608e-04
1.798370637e+02
1.147588563e+00
-5.841886640e-06
+1.258944172e-05
2.932938348e-02
-3.775212750e+00
+2.786744917e+00
5.857377557e-04
1.233660800e-06
-4.663209870e-05
+4.969210263e-05
7.215231888e-01
-3.549866116e-05
+3.723017444e-05
1.098584101e-07
7.556062318e-04
3.450815469e-06
1.899482017e-03
-1.313953616e+00
+1.563644022e+00
6.624702819e-04
-1.310751166e+03
+1.257034584e+03
1.465647177e-05
-1.870096574e-03
+5.297592191e-03
5.365838158e-03
-5.541309490e-06
-7.981517449e-04
+6.274778289e-06
+9.329717985e-04
4.238909442e-02
1.808140555e-05
-1.492996452e-03
-1.719902537e+00
-1.615821605e-06
+2.100967663e-03
+4.340787477e+00
+5.660824765e-06
1.937148606e-04
6.421521178e-05
4.354545939e+02
8.570152334e-05
3.166251700e-03
-1.074557759e-07
+4.759840746e-07
1.068967309e-01
1.132391851e-07
5.424886276e-06
6.669088071e-06
-6.880701584e-04
-1.239602610e-02
+6.788361674e-04
+1.546226958e-02
2.417562879e-05
3.776703888e-08
5.135619353e-06
-1.850898062e-04
-1.422432137e+04
+1.867293454e-04
+2.307565550e+04
1.169042834e+02
-4.144268522e+02
-2.053103247e-01
+6.322682607e+02
+4.273058421e-01
2.331313778e-06
-7.553585245e-05
+7.600370733e-05
4.678573801e-03
4.271243283e-01
-7.683190450e-05
+7.451916023e-05
1.982331822e-06
2.248892692e-07
2.940369951e-05
-1.914503157e-01
-1.991493821e-06
+2.549587054e-01
+1.940084208e-06
4.885213404e-03
5.315825514e-04
-1.740468263e-08
+1.396780830e-08
1.116237563e-05
2.199703410e-06
-2.090107678e-06
-7.766119722e-03
+2.138590632e-06
+1.193632770e-02
5.758980869e-05
1.895971551e-06
-1.561753804e-03
+1.565879520e-03
7.491129176e-03
-9.228582973e-02
-6.077480078e-02
-7.658687799e-04
-1.543956032e-04
+2.415624595e-01
+8.409989043e-02
+7.657535142e-04
+1.574461786e-04
3.120838079e-07
-2.009776042e-07
+2.665636241e-07
2.243972471e-07
1.392182883e-07
3.111525022e-04
3.119219908e-03
3.190913642e-07
5.136773321e-04
-1.050626471e+00
-8.732441420e-06
+1.041517239e+00
+1.303516213e-05
2.523382412e-05
-2.113099081e-06
+2.517518769e-06
4.475792015e-07
3.590719160e-05
6.502851811e-07
2.670456447e-03
1.697306266e-01
-1.126961557e-02
-5.886943530e-05
-1.136180254e-03
-3.084117152e-04
+1.129597860e-02
+6.462922986e-05
+2.238815176e-03
+4.546223591e-04
3.063400862e-06
1.174532311e+03
-4.890087057e-06
+5.032731088e-06
7.091644248e-07
4.533040396e-05
3.947065691e-06
3.265370023e-03
1.286330059e-02
1.755757132e-02
-1.162775248e-04
-1.056069318e-01
+2.643772016e-04
+9.717994467e-02
7.479933532e-07
3.028129925e-02
2.521276297e-07
1.073442658e-06
5.899456289e-04
-2.589323889e-06
-6.406026551e+01
-1.213285060e-05
-5.256105286e-05
-2.599598125e-06
-4.713042233e-02
+3.042881805e-06
+8.320657507e+01
+2.402387731e-05
+6.052773499e-05
+3.973992230e-06
+5.405008733e-02
1.360433647e-07
7.177289496e-03
3.373827012e-06
1.333420649e-08
8.081973985e-04
8.003311035e-08
5.465880989e-07
9.880715609e-07
1.095536228e-04
4.997618552e-03
1.326013609e-02
3.701464255e-10
1.770693543e-09
6.184290168e-10
-5.408231587e-08
-5.805267572e-07
+8.183850527e-08
+1.565837461e-06
1.085732929e-10
7.599253295e-06
1.628454581e-06
7.182423584e-08
8.292324554e-09
2.257110951e-08
-2.231223523e-07
+3.892406525e-07
7.666821934e-08
1.173780382e-07
6.007280547e-04
1.464744990e-05
1.348042340e-07
-2.463453284e-07
-6.711080076e-06
+3.998101916e-07
+1.704643058e-05
1.703489267e-02
1.789180400e-04
3.066687326e-06
2.222684120e+04
6.717770841e-02
-1.200378785e+00
-8.004688513e-06
+1.171460555e+00
+1.115800179e-05
8.686008641e-04
3.450945082e-01
1.636463113e-03
6.817527667e-07
1.028383115e+02
1.721842018e-06
-2.754127764e-03
+2.855167501e-03
2.918858849e-04
6.129798687e-03
-2.486666846e-07
-5.748231156e-05
+3.189643097e-07
+6.341672287e-05
5.809373613e-07
2.927954692e-03
1.388370713e-08
1.356586223e-06
2.813984721e-02
1.297746410e-09
7.786568980e+01
3.264184500e-06
2.836681306e-07
-3.571706779e-07
+4.654517649e-07
3.598802506e-04
1.868220397e-06
2.849410612e-07
2.596087476e-02
4.592205330e-04
-1.405730589e-04
-8.560787383e-08
+1.974593518e-04
+8.541843545e-08
2.391190808e-11
4.240951797e-07
1.387291457e-05
8.034780869e-07
2.124451168e-07
8.390942376e-07
2.361998231e-06
6.247996695e-02
-8.222945802e-06
+8.450940781e-06
2.162487170e-08
6.312203852e-10
1.337381780e-07
-6.062997927e-07
+1.084890197e-06
1.702327829e-05
1.011609745e-04
1.533468085e-02
1.667951887e+00
5.030267420e-10
1.139451323e-05
3.183032762e-07
-2.237240595e-09
+7.563352117e-10
2.430181002e-04
1.381401338e-06
4.979010339e-01
9.020006681e-05
2.759486784e-02
1.339412310e-02
7.515614514e-07
2.253136074e-04
3.711042475e-04
-1.652099502e-08
+3.219959338e-08
5.705200359e-07
2.473009659e-09
1.514970229e-04
2.322274317e-11
-8.221380799e-05
+7.119557243e-05
7.341296496e-09
-5.411694965e-06
+5.715893366e-06
5.279672173e-04
2.475544869e-02
6.201410725e-06
1.711624401e-08
7.902721792e-09
9.324230363e-03
4.075955349e-07
4.688015189e-03
6.749004939e-10
2.999224438e-03
6.019268002e-05
8.787361497e-08
6.945252864e-08
9.595782277e-08
-1.772129641e-04
+1.499378926e-04
5.133881400e-07
8.769140427e-08
1.022666334e-08
3.132242163e-07
4.193068850e+01
4.631926277e-03
-4.767675174e-05
-1.189850982e-07
+2.643452409e-04
+2.135520064e-07
3.375398402e-06
2.598800453e-07
-1.899099964e-03
+2.037695109e-03
1.274531455e-05
6.215715396e-02
-5.474814301e-08
+8.527522299e-08
2.374516724e-07
9.753985675e-05
3.869868336e-01
4.390578321e-07
-1.594728547e-06
+1.506248512e-06
3.867882672e-05
-6.739472512e-06
+7.844634726e-06
1.399824935e-06
4.687501738e-06
2.378767375e-07
2.412995792e-06
2.704096959e-04
1.381808608e-02
-5.432177431e-06
+5.665270374e-06
1.214986888e+00
1.767481603e+02
3.854751270e-02
7.420331844e-05
2.259667315e-04
2.942925975e-03
8.757517651e-03
5.344369331e-08
3.593653536e+02
6.467206229e-07
2.745454045e-07
8.574175060e-08
4.255704047e-07
2.002284348e-05
5.493924956e-08
1.802539443e-03
1.601027440e+01
7.907947992e+00
5.027886303e-12
1.274815065e-06
-2.075658551e-03
+2.810909624e-03
1.740566241e-05
-1.341515010e-06
-9.951321628e-06
+1.406446194e-06
+3.401323953e-05
9.243270257e-05
8.524429842e-05
2.419623547e-06
1.230884542e-04
-9.127531649e-08
+1.606262613e-07
2.566123942e-07
8.539518312e-04
-1.363117323e-01
+2.305749425e-01
6.429865611e-04
1.201072347e-07
4.750256525e-07
2.576400162e+02
2.763586288e-09
1.267891193e-11
1.458368254e-09
3.481231126e+01
8.491610679e-05
-3.230663368e-06
+5.215807618e-06
1.904436262e-05
3.709893359e-07
1.885579069e-08
-1.790087427e-02
-3.076988474e+01
+1.891989246e-02
+3.862027310e+01
2.868038539e-10
1.357926076e-06
9.510763538e-07
3.078854471e-04
9.821307420e-04
1.300034923e-05
4.615435789e-03
1.691264974e-02
9.625087635e-07
8.484139033e-06
8.754745805e-06
1.274545153e-03
6.656659217e-07
-3.575691156e-10
+3.352065364e-10
2.383536690e-01
1.621172643e-07
2.434094753e-04
2.309462437e-03
-4.808733345e-08
+4.835454451e-08
7.235599966e-12
2.156490604e-02
6.454117346e-09
7.417210735e-08
6.106701982e-04
2.258166597e-07
8.795188382e-07
1.685348984e-07
-2.258177232e-06
+3.492947548e-06
5.471138589e-08
4.593203864e-04
3.358979136e-10
8.951701347e-09
1.343141523e-01
2.488084203e-06
9.204318421e-06
7.372957808e-06
3.592101975e+00
-2.131554796e-05
+1.672725018e-05
4.722279636e-07
2.188554117e-07
2.191013639e-06
3.125129233e-07
1.431464700e-05
-7.955273814e-04
+3.503158037e-03
2.318813104e+01
-4.338597574e-09
+2.120173928e-08
4.153948605e-06
1.759323469e-03
4.247828764e-09
3.314663642e+06
9.546118067e-04
3.628713279e-02
5.151960839e-01
-6.567777665e-03
+1.253211915e-02
2.306063053e-06
5.992993419e-02
4.335225445e-04
2.006054641e-08
1.805085571e-04
3.245279608e-04
-4.393002963e-07
+4.697917918e-07
2.877595699e-08
-4.623803927e-02
+6.939181555e-02
8.509180682e-07
1.898404662e+01
3.391894018e-04
1.572894562e-07
4.829147344e-04
4.124974312e-07
5.920628259e-09
1.133085150e-02
5.866745018e-05
1.477890940e-08
3.373201885e-01
1.783285709e-06
1.019277350e-07
1.077236434e-08
-6.876864321e-09
+9.577261863e-09
2.972773815e-03
4.579972943e-06
6.660223604e-11
-1.308476750e-05
+3.106609801e-05
6.049147519e-02
4.838831696e-09
-1.759810298e-05
-4.511754771e-04
-9.914683060e-04
+2.088260587e-05
+6.152429511e-04
+1.651830666e-03
2.252402531e-04
4.286469542e-06
1.183819823e-07
1.041053006e-03
8.023777540e-06
1.752202725e-10
6.760656342e-08
5.978357995e+02
1.570112402e-07
4.259084825e-02
2.734813579e-08
5.126265230e-04
1.262174839e-10
2.604124552e-07
1.853779761e-06
1.073157373e-10
1.186846920e-07
3.373467406e-02
6.462294348e-04
3.617927133e-09
1.235675676e-05
1.014307383e-05
9.670573618e-06
2.734079755e-04
9.022790348e-09
-1.723330398e-07
+2.801823430e-07
3.192976198e-05
1.605410097e-11
3.347506568e-03
6.096357632e-08
3.761983860e-04
2.002368022e-04
3.663856060e-11
9.014051583e-09
2.039080244e-08
2.382698390e-08
4.826461958e-09
-3.736318011e-12
+6.305234723e-12
1.064541901e-07
2.647936408e-07
-3.674583713e-11
+4.717169522e-10
2.472948608e-02
3.511106044e-05
3.074534950e-09
-2.532378050e-08
+3.126973359e-08
2.865192597e-10
8.729591282e-06
5.263810095e-09
3.162734995e-11
1.553836336e-03
-6.088023357e-08
-2.772123876e-09
+4.313654244e-07
+3.569106018e-09
7.601811027e-10
1.002426515e-02
1.099404522e-06
-1.509270489e-06
+8.684069017e-06
3.707210974e-09
6.845537328e-09
1.288663850e-09
6.213720922e-12
3.370298227e-06
-1.033815084e-08
+1.445386835e-08
7.619743854e-05
6.153142911e-05
1.627750340e-06
7.071597014e-09
4.073669344e-10
2.323555275e+05
8.054141816e-03
8.651093356e-10
2.242451061e-10
3.216554842e-08
1.393140866e-06
2.192548352e-08
1.589958782e-08
4.319282434e-05
5.033873119e-04
1.969565661e-03
3.026962238e-05
5.847143807e-04
7.159197474e-06
6.852087190e-06
3.993958708e-06
5.152611742e-03
2.371431793e-09
9.761043438e-06
1.179390494e-08
1.500987015e-08
3.198124316e-11
3.669563179e-01
1.279595204e-09
4.407960907e-04
-1.541770012e-08
+5.787928842e-08
8.758634293e-07
7.197319124e-11
1.456265421e-06
2.118209999e-02
1.166460184e-02
3.975708970e-09
8.585133916e-09
1.431700406e-08
8.083628402e-10
7.710293690e-04
2.486389630e-12
2.209639132e-06
-4.505230938e-01
-9.794173060e-06
+7.805046489e-01
+1.161029231e-05
2.717537412e-09
3.117310948e-06
-2.149222999e-06
-1.586976182e-09
+8.268806861e-06
+4.149355888e-09
2.669049021e-08
3.465183725e-09
5.746377675e-06
6.827640940e-05
2.205905568e-07
8.277136503e-08
5.233327912e-07
6.831993026e-11
1.722970086e-06
9.209494681e-07
-5.200766419e-04
+6.214584932e-04
2.597674405e-03
6.127253802e-11
1.815659011e-04
7.719959906e-14
1.355959480e-08
1.068097702e-06
4.571150240e-07
7.835485051e-07
2.443967251e+00
7.521608515e-11
-2.823325161e-05
+1.755727154e-04
1.492486651e-07
3.947354347e-09
8.108470196e-09
1.226200398e-04
2.265314247e-11
1.841207960e-03
1.113595985e-02
-1.060453671e-06
+2.269180736e-06
4.652540757e-11
4.191956716e-10
4.620562396e-05
4.971924276e-04
7.584566548e-09
4.136067428e-13
2.639942371e-03
2.560094895e-08
6.494205457e-08
3.813228849e-11
2.394276536e-01
9.383928172e-08
2.354446386e-03
1.169788005e-11
1.635056993e-09
8.927013480e-08
3.401987129e-10
-1.675967327e-06
+1.668665707e-06
8.846280299e-07
8.063601622e-13
-8.804357796e-08
+9.862164810e-08
5.056101098e-08
3.717053057e-05
1.584125694e-06
4.622564202e-08
3.862253555e-05
2.369045122e-04
-3.404567890e-08
+5.296280585e-08
2.028201866e-10
1.490632954e-05
2.809039801e-06
4.286284920e-10
1.225531203e-09
9.651458117e-10
5.073720873e-06
1.168279305e-03
-2.920249868e-07
+3.374960043e-07
2.924547371e-06
3.901702794e-06
-7.720671548e-09
+1.634682627e-08
9.208991156e-06
4.592993319e-03
1.243474714e-11
1.620460995e-06
4.067811815e-04
6.212555249e-02
2.225663359e-12
1.546065372e-10
2.095252325e-01
2.734979770e-02
-3.915460176e-11
+5.375254253e-11
1.583212739e-03
-1.944138853e+00
+3.156406711e+00
8.594625100e-01
9.586561470e-02
5.893601451e-11
9.940877292e-12
5.380308774e-02
1.865793667e-04
6.607021968e-08
3.838609063e-07
9.049824655e-07
3.888723805e-04
2.777900492e-11
2.684360703e-04
5.913695711e-06
5.737197844e-04
4.110113744e-09
-6.926669070e-08
+2.497426353e-07
3.390290129e-09
8.095451133e-12
4.321661893e-08
4.873283944e-07
1.274003933e-11
9.104409500e-12
7.179607836e-07
3.906896479e-11
1.948313091e-08
1.164976881e-01
1.112886046e-06
-7.213080269e-07
+2.823294491e-06
2.591738179e-07
1.275159404e-04
4.499451474e-04
-8.404305175e-10
+1.154515375e-09
9.029183686e-06
1.165979189e-08
4.397445726e-07
1.101331326e-15
7.092692390e-08
6.766025857e-05
2.582987643e-06
-3.321391882e-06
+6.789044579e-06
2.252897510e-10
1.582238936e-05
-1.652518543e-04
+2.028655626e-04
1.437364367e-09
3.309200992e-03
4.409409406e-05
3.202533864e-09
7.209532734e-10
3.001628290e-04
4.616089749e-05
8.022866888e-10
6.706777161e-12
3.828630640e-05
7.926932401e-05
4.488498744e-05
1.348692501e-06
9.161443367e-10
8.678114985e-07
1.926070493e-06
4.765469595e-09
1.893168874e-08
1.549578157e-08
9.229013716e-06
1.035062224e-04
6.357487377e-07
4.034696570e-06
1.504164503e-08
9.700520388e-12
2.293483524e-05
2.338097661e-02
3.059032675e-03
5.427962171e-08
1.401989839e-03
1.579634046e-12
1.072621482e+01
6.864694660e-04
-3.109092415e-06
+3.290225735e-06
4.970636771e-09
-6.303062215e-08
+9.643042777e-08
diff --git a/t/ME_data/ME_h_mtinf_tree.dat b/t/ME_data/ME_h_mtinf_tree.dat
index ac5b937..dbc4185 100644
--- a/t/ME_data/ME_h_mtinf_tree.dat
+++ b/t/ME_data/ME_h_mtinf_tree.dat
@@ -1,807 +1,807 @@
5.572804568e-08
-7.733052565e-06
+7.595616551e-06
3.888389298e-05
2.042806864e-02
4.680070730e-06
-1.199611836e-06
+1.519544181e-06
6.409292912e-07
-3.624707578e-07
+4.622517953e-07
6.467450370e-07
-1.121526540e-05
+1.107468387e-05
4.871451037e-05
1.941740277e-06
-7.229521772e-04
+8.975261266e-04
1.597702620e-05
1.229649514e-05
3.422004512e-02
8.538221861e-07
5.785658479e+02
6.315861962e-06
-4.013595931e-03
+8.933803551e-03
2.249050403e+00
1.159555900e-03
7.916035504e-04
-5.358231482e-05
-8.370449969e-05
+5.796273470e-05
+2.803448410e-05
9.764963622e-04
3.871461664e-02
-6.311772268e-07
+1.080211199e-06
1.938663548e+00
8.986523335e-08
4.606848096e-02
1.664459283e-01
1.059082305e-06
-8.223257111e-03
+8.408190720e-03
2.194313999e-02
3.746404383e-05
6.881839613e-07
-4.919765175e-05
+4.920980265e-05
2.323756323e-04
-5.245688183e-03
+1.001997247e-02
5.863695633e-04
1.141179377e-02
-4.580570661e-03
-3.065133090e-05
+4.616989178e-03
+3.042691908e-05
1.815046198e-04
9.223059152e-03
-1.156611582e-01
+4.186178933e-01
3.089668561e-07
5.373616917e-05
1.201443762e+01
-1.931944033e-04
-8.350132849e-06
+2.310617316e-04
+2.066919144e-05
9.885414773e-05
-1.162808849e-04
-1.555676074e-01
+1.088069066e-04
+1.557563862e-01
2.370571321e-02
5.430257614e+00
-1.592021140e-04
+1.836263793e-04
1.255259399e+00
5.534475149e-03
-3.591615295e-07
-2.106576100e-01
+4.507956463e-07
+2.724075804e-01
3.105378110e-03
-2.468183380e+01
+2.687293779e+01
9.549405497e-08
-1.139757378e-06
-1.666228407e-05
+1.214190524e-06
+2.287345670e-05
1.504176295e-05
4.024167287e-06
9.287030781e-04
3.575383717e-06
2.205209754e+00
1.345140269e-03
1.944571866e-03
2.590234738e+04
-7.661844320e-07
+1.458809800e-06
1.265615683e-03
2.194569070e-07
2.564179368e-02
-9.041496323e-07
+1.208097779e-06
5.374038239e-05
3.608593751e-02
4.828245194e+04
6.210373583e-06
8.257528074e-06
-1.940573073e-06
+2.743876898e-06
8.192357630e-04
-2.147295162e-04
+6.389565973e-04
8.449199830e-08
-1.843012541e-03
-8.134506434e-04
+3.103126802e-03
+8.219502354e-04
8.386707002e-02
-1.481848847e-03
-1.137671545e-04
+1.613040353e-03
+1.923089317e-04
1.208500717e-01
2.018148288e-01
1.466103051e-04
-2.191712369e-05
-1.620358032e-02
+5.279670823e-05
+1.744225325e-02
1.468013763e-03
6.097640805e-06
-8.831566891e-03
-1.455096615e-04
-4.498297020e+01
+1.348000431e-02
+1.508664857e-04
+7.994662516e+01
1.949243022e-02
1.087303162e-04
-2.049386967e-06
-5.509716144e-04
+2.724923475e-06
+5.718847885e-04
1.537887580e-04
1.356242586e-06
1.974324073e-04
2.963883364e+03
1.431916564e+00
-1.355246132e-01
-6.716107491e+01
+1.875006687e-01
+6.566482386e+01
1.940705323e-06
-1.253258061e-05
+1.912576280e-05
1.668054846e-03
-4.195267419e-01
+1.046505876e+00
4.749137893e-04
-2.263451815e-06
+4.971330639e-06
5.016010297e-06
2.680527032e-03
3.199000005e-01
-1.016549548e-03
-2.698314590e-02
+1.058215453e-03
+2.678022445e-02
3.785330696e-01
3.056569994e-02
-1.352492231e-06
-2.860616015e-03
+2.799481236e-06
+4.801729676e-03
1.183459824e-05
-8.932434519e-07
+2.560752243e-06
2.249345228e-05
-1.498587652e-05
+2.166986571e-05
2.934136148e-02
-3.282899401e-05
+8.584255075e-05
6.389068161e+00
4.837678972e+08
2.910973086e-04
1.716201719e+02
1.631035646e+00
-6.322851944e-06
+1.362593644e-05
3.066208474e-02
-3.935262689e+00
+2.904888816e+00
6.836375721e-04
2.114055578e-06
-4.485509365e-05
+4.779849030e-05
1.195553498e+00
-3.389669700e-05
+3.555007151e-05
1.485581537e-07
7.396640117e-04
6.598939949e-06
2.119548369e-03
-1.260309398e+00
+1.499805802e+00
6.658022304e-04
-1.694933678e+03
+1.625472711e+03
1.430389956e-05
-2.260617835e-03
+6.403857190e-03
5.369080172e-03
-2.370008214e-05
-8.514750223e-04
+2.683711515e-05
+9.953021940e-04
1.690138110e-01
1.829564964e-05
-1.482508088e-03
-1.849532887e+00
-1.778277687e-06
+2.086208275e-03
+4.667955899e+00
+6.229968911e-06
2.255678771e-04
6.524599620e-05
4.372467535e+02
8.387224326e-05
3.343506359e-03
-2.854101208e-07
+1.264247278e-06
1.110841737e-01
2.100158475e-07
6.050673169e-06
6.731118778e-06
-6.474610210e-04
-1.231605309e-02
+6.387720099e-04
+1.536251469e-02
2.674458314e-05
4.144657087e-08
6.897914197e-06
-1.790387819e-04
-1.387432121e+04
+1.806247207e-04
+2.250786159e+04
1.121949844e+02
-4.794589429e+02
-2.023359787e-01
+7.314841457e+02
+4.211154303e-01
3.627260888e-06
-7.634301399e-05
+7.681586828e-05
4.530032022e-03
4.366576508e-01
-7.607425884e-05
+7.378432073e-05
2.773608322e-06
1.698189395e-06
3.062031893e-05
-2.002207347e-01
-1.898966670e-06
+2.666384703e-01
+1.849945608e-06
5.045283380e-03
5.299933444e-04
-3.017540386e-08
+2.421671602e-08
1.275786883e-05
9.664916790e-06
-2.077047482e-06
-8.578084914e-03
+2.125227486e-06
+1.318429746e-02
6.595509942e-05
1.892603441e-06
-1.511182400e-03
+1.515174520e-03
7.097187691e-02
-9.906404509e-02
-6.741300094e-02
-7.280060014e-04
-1.603955276e-04
+2.593047540e-01
+9.328580136e-02
+7.278964342e-04
+1.635646506e-04
6.948078299e-07
-1.981505848e-07
+2.628140494e-07
2.351049919e-07
1.218637919e-06
3.374685455e-04
3.125835543e-03
6.317642047e-07
5.304174029e-04
-9.993233020e-01
-8.479197598e-06
+9.906588833e-01
+1.265713792e-05
4.025622878e-05
-3.579791076e-06
+4.264916541e-06
4.624321565e-07
3.557996624e-05
7.632352346e-07
4.087274884e-03
1.707433480e-01
-1.094536785e-02
-5.812909858e-05
-1.136971585e-03
-3.254729254e-04
+1.097097237e-02
+6.381645848e-05
+2.240374473e-03
+4.797718824e-04
3.013380422e-06
1.140558348e+03
-4.746179921e-06
+4.884626175e-06
5.936317197e-06
4.476488634e-05
4.866820693e-06
3.364268242e-03
1.345732182e-02
1.691848296e-02
-1.305004426e-04
-1.061215338e-01
+2.967154820e-04
+9.765348358e-02
2.261298664e-06
3.032245343e-02
6.391553476e-07
2.699173814e-06
6.756168369e-04
-2.755355122e-06
-6.542857280e+01
-1.383795196e-05
-5.065774597e-05
-2.629072903e-06
-5.216417814e-02
+3.237995836e-06
+8.498384156e+01
+2.740009509e-05
+5.833594374e-05
+4.019050170e-06
+5.982289664e-02
1.391403765e-07
7.263556652e-03
4.999370887e-06
1.625061232e-08
8.509561784e-04
1.202205227e-07
7.144871653e-07
9.471851526e-07
1.191493923e-04
5.840966853e-03
1.370040570e-02
5.713297919e-10
3.607906530e-08
7.307412331e-10
-5.511244325e-08
-6.212518331e-07
+8.339731584e-08
+1.675683991e-06
1.522273099e-10
7.303492170e-06
2.394106739e-06
9.439029291e-08
1.197178286e-08
2.852370502e-08
-2.402523519e-07
+4.191242215e-07
1.633081697e-07
4.999725784e-07
4.364098403e-03
1.530966988e-05
5.067352329e-07
-2.520162972e-07
-6.700189824e-06
+4.090139834e-07
+1.701876887e-05
2.052969833e-02
1.958876337e-04
9.931888956e-06
2.504301598e+04
7.117111486e-02
-1.221458125e+00
-9.586731023e-06
+1.192032075e+00
+1.336326351e-05
8.611561913e-04
3.313925797e-01
1.685927042e-03
7.737216703e-07
1.356040671e+02
1.715670931e-06
-2.618197626e-03
+2.714250540e-03
3.045426205e-04
9.039006896e-03
-2.394536597e-07
-5.543261305e-05
+3.071467792e-07
+6.115541572e-05
6.749068743e-07
2.759944309e-03
4.200025166e-07
1.836184773e-06
2.906214889e-02
1.426547480e-09
1.236256079e+02
3.871989502e-06
2.818399887e-07
-3.469606518e-07
+4.521464323e-07
3.622199797e-04
1.953122542e-06
2.920307346e-07
2.735652104e-02
4.826860535e-04
-1.445516015e-04
-8.112009732e-08
+2.030479079e-04
+8.094058976e-08
9.362955197e-11
4.786061319e-07
1.721659726e-05
1.051237231e-06
1.003149697e-06
1.453591818e-06
6.002229724e-06
7.422256382e-02
-9.815749338e-06
+1.008790747e-05
2.615599662e-08
6.718184084e-10
1.459950517e-07
-7.273135157e-07
+1.301427632e-06
2.230570626e-05
1.132328395e-04
1.544043912e-02
1.732457391e+00
1.154545164e-08
1.291848361e-05
3.342745364e-07
-4.563465563e-09
+1.542753024e-09
2.706474718e-04
5.574804238e-06
8.990146655e-01
1.001326662e-04
2.233523312e-02
1.335995585e-02
7.467887166e-07
2.231001789e-04
3.699152099e-04
-1.607144612e-08
+3.132341784e-08
1.654294075e-06
4.086577889e-09
1.755105427e-04
8.416393596e-11
-5.086290204e-04
+4.404629240e-04
7.687882493e-09
-5.276775857e-06
+5.573390279e-06
7.023227535e-04
2.470065095e-02
6.259343015e-06
3.462534698e-08
1.721326261e-08
9.100990839e-03
6.068046546e-07
5.073613628e-03
8.104795790e-10
4.489318495e-03
7.059335059e-05
1.116936224e-07
9.447042548e-08
1.142507724e-07
-2.371968894e-04
+2.006896161e-04
1.102725863e-06
9.170351616e-08
1.116173034e-08
3.160808071e-07
4.719294278e+01
5.609765930e-03
-4.974598170e-05
-1.193166957e-07
+2.758181511e-04
+2.141471508e-07
3.933913946e-06
1.705704126e-06
-1.957618819e-03
+2.100484634e-03
1.353055173e-05
6.037711935e-02
-1.201565019e-07
+1.871547039e-07
2.754380072e-07
1.284315046e-04
4.613545669e-01
8.243835252e-07
-1.938272446e-06
+1.830731628e-06
4.518197192e-05
-6.428165315e-06
+7.482278288e-06
1.469929984e-06
4.854750586e-06
2.231002492e-07
5.180713437e-06
2.793839809e-04
1.366295653e-02
-6.172873979e-06
+6.437749966e-06
1.076928081e+01
1.777645145e+02
4.165016415e-02
7.327803251e-05
2.312992445e-04
3.278010006e-03
1.857660707e-02
4.395091584e-07
8.377603390e+02
7.221567849e-07
7.394039845e-07
9.034821635e-08
6.938495910e-07
1.962974288e-05
7.831554318e-08
2.417915157e-03
1.681184118e+01
8.358803602e+00
2.506211004e-11
1.351591326e-06
-2.062054738e-03
+2.792486995e-03
1.874994001e-05
-1.273948784e-06
-9.933080519e-06
+1.335609669e-06
+3.395089211e-05
2.797398009e-04
8.269820486e-05
2.741694330e-06
1.362989830e-04
-9.164841907e-08
+1.612828471e-07
3.180061341e-07
1.076406164e-03
-1.355139500e-01
+2.292254724e-01
7.799632930e-04
1.245152763e-07
6.645743195e-07
2.622509110e+02
2.169016271e-07
2.388605910e-10
1.819082046e-09
3.475786517e+01
1.057002104e-04
-3.237208557e-06
+5.226374628e-06
1.874181702e-05
4.841351554e-07
2.302607917e-07
-2.038562253e-02
-3.495771494e+01
+2.154608654e-02
+4.387655363e+01
4.055168507e-10
1.438034814e-06
1.064547563e-06
3.082750857e-04
1.073504174e-03
1.300681473e-05
6.459601030e-03
1.895987606e-02
1.060829403e-06
8.238797134e-06
9.317793462e-06
1.278356229e-03
2.279610719e-06
-1.382921781e-09
+1.296433054e-09
2.530038522e-01
1.627768885e-07
3.293036130e-04
2.529327920e-03
-4.672588444e-08
+4.698553023e-08
8.591395213e-12
3.257413794e-02
7.190258956e-09
8.073987581e-08
6.258596186e-04
2.468811944e-07
9.951052105e-07
1.743583334e-07
-2.328948669e-06
+3.602416776e-06
1.326313019e-07
5.072538045e-04
3.985459568e-10
1.104303535e-08
1.692316356e-01
3.763376717e-06
1.038624337e-05
8.048797417e-06
3.622786876e+00
-2.248990246e-05
+1.764881793e-05
5.040009061e-07
2.335240322e-07
2.498424766e-06
4.202295601e-07
4.830236598e-05
-8.368164583e-04
+3.684977249e-03
2.330464677e+01
-7.120165977e-09
+3.479463124e-08
8.724210005e-06
1.781787412e-03
4.502368871e-09
3.186046302e+06
9.687848173e-04
4.668030680e-02
5.164858709e-01
-7.105465534e-03
+1.355809305e-02
2.351688446e-06
7.460050065e-02
6.143272317e-04
3.188169157e-08
2.788262516e-04
3.793487471e-04
-4.270240864e-07
+4.566634996e-07
2.933159250e-08
-4.573912261e-02
+6.864306553e-02
8.517988386e-07
1.843228168e+01
4.363104434e-04
1.649030026e-07
5.022484285e-04
5.146033092e-07
6.127315124e-09
1.194048916e-02
7.296523578e-05
2.261779127e-08
3.550279519e-01
4.665801541e-06
1.133805742e-07
1.077545331e-08
-7.131867193e-09
+9.932398908e-09
3.024651909e-03
4.900211468e-06
8.425164568e-10
-1.294664863e-05
+3.073817364e-05
7.229895794e-02
9.030803015e-09
-2.535846234e-05
-4.518151037e-04
-1.191228239e-03
+3.009135559e-05
+6.161151744e-04
+1.984639674e-03
2.302342216e-04
7.639352281e-06
1.200219161e-07
1.046101258e-03
8.161065404e-06
4.074095042e-10
7.474610092e-08
8.139530652e+02
2.860319094e-07
5.402717193e-02
1.094737399e-07
7.218336860e-04
1.363337213e-10
2.897166555e-07
5.466416822e-06
1.046528666e-09
1.214075429e-07
3.517308930e-02
6.876570099e-04
4.381704653e-09
1.425064448e-05
1.092939333e-05
1.013613284e-05
4.161445140e-04
3.929296641e-08
-1.994116871e-07
+3.242073242e-07
3.350149307e-05
1.942422023e-11
3.921387549e-03
6.092617772e-08
4.006639955e-04
2.193198014e-04
4.588823322e-11
2.247656490e-08
4.235884774e-07
2.699312268e-08
7.118759240e-09
-3.648990021e-12
+6.157864111e-12
1.283410386e-07
3.251622127e-07
-1.018895416e-10
+1.307985551e-09
2.504071095e-02
5.445082047e-05
3.290489223e-09
-2.473663065e-08
+3.054472259e-08
3.484841326e-10
1.191475982e-05
9.490624444e-09
3.852807809e-11
1.668368723e-03
-8.130387972e-08
-2.792391782e-09
+5.760766760e-07
+3.595200922e-09
1.128183821e-09
1.205968563e-02
2.973950143e-06
-2.998002570e-06
+1.724996375e-05
9.571931819e-09
1.477120229e-08
1.360026180e-09
6.536532052e-12
3.756762190e-06
-1.072436666e-08
+1.499384041e-08
7.705635137e-05
6.527963639e-05
1.900806678e-06
9.604137497e-09
4.832543450e-10
2.461535131e+05
8.317793495e-03
1.288549452e-09
2.984905834e-10
3.442753033e-08
1.446019240e-06
2.554651308e-08
1.716746196e-08
4.218315871e-05
6.263553513e-04
2.045309149e-03
4.000660563e-05
5.947272843e-04
1.599749747e-05
1.072982129e-05
4.537764019e-06
5.320579544e-03
3.835647646e-09
1.154139540e-05
1.347260164e-08
1.754674352e-08
3.517542867e-09
3.604393244e-01
1.896710657e-09
4.711292756e-04
-2.519062555e-08
+9.456763784e-08
1.025894195e-06
1.607487456e-10
2.074443931e-06
2.716520917e-02
1.306997660e-02
7.745194101e-09
1.008059614e-08
5.325487074e-08
8.890288216e-10
8.313145689e-04
4.728469346e-12
2.657420217e-06
-4.448234848e-01
-1.010572429e-05
+7.706304129e-01
+1.197961403e-05
3.333556889e-09
4.293987770e-06
-2.315368304e-06
-3.563069196e-09
+8.908025516e-06
+9.316108401e-09
2.890119270e-08
4.758693888e-09
6.648097567e-06
7.550647813e-05
7.063391619e-07
2.802247921e-07
5.253163265e-07
7.788619114e-11
1.927421367e-06
9.100970575e-07
-1.327864867e-03
+1.586714020e-03
3.591861909e-03
7.601695154e-11
3.437030489e-04
2.831401705e-13
1.700113295e-08
1.120067516e-06
5.630141622e-07
8.019872998e-07
2.370711819e+00
9.945530280e-10
-1.046421293e-04
+6.507327970e-04
2.658536988e-07
4.070765645e-09
1.348964882e-08
1.346100783e-04
2.397829940e-11
2.216977235e-03
1.189249860e-02
-1.118171189e-06
+2.392685877e-06
8.735058436e-11
5.128984744e-10
5.483813146e-05
5.291911467e-04
1.678041194e-08
5.087404421e-13
3.470363247e-03
2.618358550e-08
6.675635132e-08
3.972641717e-11
2.395412045e-01
1.018953051e-07
2.618325163e-03
1.491391997e-11
2.263240793e-09
1.092156400e-07
4.240317799e-10
-1.698707365e-06
+1.691306674e-06
9.662018142e-07
1.204063649e-12
-9.132831222e-08
+1.023010295e-07
9.262311981e-08
4.417568826e-05
2.309013645e-06
1.033175136e-07
5.304100308e-05
5.585876907e-04
-4.154525487e-08
+6.462944312e-08
4.226412120e-10
1.496595206e-05
4.128704267e-06
1.069473089e-08
1.288077396e-09
1.976544269e-09
7.208953037e-06
1.198806306e-03
-4.205581376e-07
+4.860429670e-07
2.893094105e-06
3.846974156e-06
-9.103143357e-09
+1.927390668e-08
9.122224995e-06
5.017367317e-03
1.467921358e-11
1.712696979e-06
1.576706134e-03
6.218478551e-02
2.210917575e-11
1.833388455e-10
2.076192027e-01
2.666210155e-02
-5.527616660e-11
+7.588468180e-11
1.736922913e-03
-1.956019486e+00
+3.175695513e+00
1.248995403e+00
1.027514498e-01
1.303631291e-10
9.717345904e-12
5.470246326e-02
2.344214153e-04
8.645766604e-08
4.546502119e-07
9.821436471e-07
4.543371326e-04
2.734115483e-11
2.831850423e-04
1.396680491e-05
6.540453499e-04
6.962926737e-09
-7.603000319e-08
+2.741279130e-07
3.370076910e-09
1.449987618e-11
4.711965187e-08
4.729467396e-07
1.929793020e-11
8.523475458e-11
7.387954245e-07
1.080040278e-10
2.281110242e-08
1.166677915e-01
1.409613611e-06
-7.465324675e-07
+2.922026270e-06
2.672310396e-07
1.255071010e-04
6.229838431e-04
-8.214274894e-10
+1.128410554e-09
1.064850629e-05
1.156380518e-08
4.852815617e-07
6.863856159e-14
7.264596037e-08
8.284444693e-05
3.088627657e-05
-5.519476722e-06
+1.128200912e-05
2.429391340e-10
1.743400033e-05
-1.652318468e-04
+2.028410012e-04
1.477860697e-09
3.426271735e-03
4.850294661e-05
3.693472519e-09
8.188840272e-10
3.134182902e-04
4.963596239e-05
1.459290217e-09
2.466456916e-11
5.230009936e-05
1.211786947e-04
5.437715515e-05
1.641328630e-06
1.042738834e-09
9.306578287e-07
2.233023059e-06
6.994767103e-09
5.103840066e-08
2.180291056e-08
1.054043488e-05
1.337487784e-04
7.502939118e-07
5.169726504e-06
1.781680794e-08
1.074536464e-10
2.730551306e-05
2.550106620e-02
3.354202915e-03
9.945180494e-08
3.884971018e-03
1.801945180e-12
1.090804491e+01
6.883835961e-04
-3.214869326e-06
+3.402165128e-06
7.522574713e-09
-6.387909440e-08
+9.772850384e-08
diff --git a/t/ME_data/ME_h_mtmb_tree.dat b/t/ME_data/ME_h_mtmb_tree.dat
index e7ecddd..d71f8e2 100644
--- a/t/ME_data/ME_h_mtmb_tree.dat
+++ b/t/ME_data/ME_h_mtmb_tree.dat
@@ -1,807 +1,807 @@
4.036423148e-08
-7.736848255e-06
+7.599344782e-06
3.971238751e-05
1.704916390e-02
4.126163153e-06
-1.244041497e-06
+1.575823079e-06
6.515738458e-07
-3.772873174e-07
+4.811470610e-07
6.202166544e-07
-1.155213750e-05
+1.140733334e-05
4.920813253e-05
1.645597849e-06
-7.506762262e-04
+9.319448048e-04
1.548455272e-05
9.714753846e-06
3.502266406e-02
8.370742698e-07
6.069969581e+02
6.064159817e-06
-3.997354744e-03
+8.897652534e-03
1.960086246e+00
5.767474795e-04
8.255987630e-04
-4.405908649e-05
-6.886558057e-05
+4.766097078e-05
+2.306460263e-05
7.109077582e-04
3.938946000e-02
-5.645949929e-07
+9.662608354e-07
1.999418757e+00
9.091732441e-08
4.795920875e-02
1.076748080e-01
9.486837249e-07
-8.516572195e-03
+8.708102194e-03
2.337001022e-02
3.677679730e-05
6.849081872e-07
-4.798561314e-05
+4.799746469e-05
7.633470907e-05
-5.443857683e-03
+1.039850297e-02
6.189558681e-04
8.432994191e-03
-4.672976133e-03
-3.181209897e-05
+4.710129333e-03
+3.157918866e-05
1.543375743e-04
5.581577133e-03
-1.162158738e-01
+4.206256019e-01
2.346338154e-07
5.658368514e-05
8.586756438e+00
-1.719104149e-04
-4.667893099e-06
+2.056059466e-04
+1.155449594e-05
5.110672307e-06
-1.176205927e-04
-1.615939616e-01
+1.100605045e-04
+1.617900533e-01
2.423820202e-02
4.531340391e+00
-1.656996369e-04
+1.911207307e-04
1.312005381e+00
5.118439829e-03
-3.738025342e-07
-1.939569545e-01
+4.691720609e-07
+2.508114693e-01
2.872395003e-03
-2.523364268e+01
+2.747373293e+01
7.307477806e-08
-1.182185461e-06
-1.726278033e-05
+1.259389421e-06
+2.369779897e-05
1.558401995e-05
1.125457825e-06
9.938467298e-04
9.305719108e-07
2.351577836e+00
1.351848038e-03
1.604570791e-03
2.725148428e+04
-7.412335698e-07
+1.411303533e-06
6.959827491e-04
1.069546678e-07
2.002109665e-02
-9.407629686e-07
+1.257019427e-06
4.452818467e-05
2.597028907e-02
5.063411137e+04
5.471108411e-06
1.074665005e-06
-1.953754359e-06
+2.762514603e-06
1.070605830e-04
-2.122044377e-04
+6.314428858e-04
8.007807626e-08
-1.917291689e-03
-8.268370687e-04
+3.228192481e-03
+8.354765329e-04
7.711293504e-02
-1.492536307e-03
-1.071633305e-04
+1.624673999e-03
+1.811460055e-04
1.177180255e-01
1.871326492e-01
1.153295778e-04
-2.018590409e-05
-1.685105258e-02
+4.862632997e-05
+1.813922114e-02
1.085933997e-03
5.144887011e-06
-9.170297842e-03
-1.498081308e-04
-4.490357270e+01
+1.399702408e-02
+1.553231999e-04
+7.980551482e+01
2.029765471e-02
9.076488466e-05
-2.112793665e-06
-5.733726407e-04
+2.809230833e-06
+5.951360882e-04
1.320311226e-04
1.191386384e-06
1.341747592e-04
3.090047756e+03
1.403839816e+00
-1.348365292e-01
-6.976034882e+01
+1.865486924e-01
+6.820618973e+01
1.822509069e-06
-8.389617599e-06
+1.280325586e-05
1.663315754e-03
-3.881812041e-01
+9.683146996e-01
3.675662279e-04
-2.193350704e-06
+4.817364118e-06
4.832687364e-06
1.726784601e-03
3.288072256e-01
-1.058019447e-03
-2.649402107e-02
+1.101385103e-03
+2.629477799e-02
2.659712131e-01
2.787024900e-02
-1.379286015e-06
-2.695898486e-03
+2.854940849e-06
+4.525240611e-03
1.905511571e-06
-9.134022595e-07
+2.618543556e-06
2.337835933e-05
-1.239190539e-05
+1.791893355e-05
2.913100451e-02
-2.031913258e-05
+5.313127078e-05
6.089047514e+00
4.379840484e+08
3.001194264e-04
1.817496329e+02
1.164476362e+00
-6.037065388e-06
+1.301005780e-05
2.985758357e-02
-3.897328667e+00
+2.876887098e+00
5.979372364e-04
1.243000641e-06
-4.662882332e-05
+4.968861233e-05
7.282185572e-01
-3.504619995e-05
+3.675564359e-05
1.111648768e-07
7.823789154e-04
3.486592726e-06
1.934888323e-03
-1.308230506e+00
+1.556833350e+00
6.783546728e-04
-1.348969537e+03
+1.293686708e+03
1.500005936e-05
-1.928319674e-03
+5.462526049e-03
5.562357380e-03
-5.621101723e-06
-8.246921080e-04
+6.365132125e-06
+9.639952353e-04
4.261028205e-02
1.835360553e-05
-1.528438303e-03
-1.777310709e+00
-1.669709876e-06
+2.150841982e-03
+4.485677475e+00
+5.849615445e-06
1.986324999e-04
6.578850492e-05
4.502179572e+02
8.855059478e-05
3.237727416e-03
-1.093420259e-07
+4.843393720e-07
1.106011705e-01
1.143715836e-07
5.522698510e-06
6.890923645e-06
-6.344507843e-04
-1.269294480e-02
+6.259363723e-04
+1.583263320e-02
2.462746837e-05
3.856346551e-08
5.216536125e-06
-1.863505340e-04
-1.442680698e+04
+1.880012408e-04
+2.340414134e+04
1.186670853e+02
-4.278422020e+02
-2.095186222e-01
+6.527353222e+02
+4.360644377e-01
2.351156237e-06
-7.769821656e-05
+7.817946472e-05
4.845925968e-03
4.408732612e-01
-7.856962492e-05
+7.620457292e-05
2.011543913e-06
2.266763426e-07
3.059571023e-05
-1.976840415e-01
-1.959921970e-06
+2.632602987e-01
+1.909327372e-06
5.025542164e-03
5.486520955e-04
-1.779895054e-08
+1.428422078e-08
1.132860013e-05
2.213263103e-06
-2.140323057e-06
-8.024798285e-03
+2.189970826e-06
+1.233391004e-02
5.859877168e-05
1.934315184e-06
-1.572922025e-03
+1.577077244e-03
7.553653114e-03
-9.536373201e-02
-6.279598035e-02
-7.474807797e-04
-1.593545482e-04
+2.496190121e-01
+8.689678946e-02
+7.473682815e-04
+1.625031034e-04
3.141317968e-07
-2.051394799e-07
+2.720836654e-07
2.303965173e-07
1.399944656e-07
3.172292798e-04
3.244924593e-03
3.215239406e-07
5.351823628e-04
-1.027309294e+00
-8.824530406e-06
+1.018402229e+00
+1.317262596e-05
2.551101888e-05
-2.161795380e-06
+2.575534906e-06
4.567066262e-07
3.716863062e-05
6.613977572e-07
2.708492813e-03
1.754571252e-01
-1.139082627e-02
-6.013044846e-05
-1.166014558e-03
-3.185757265e-04
+1.141747285e-02
+6.601362075e-05
+2.297602936e-03
+4.696048859e-04
3.163729413e-06
1.195048391e+03
-4.939698613e-06
+5.083789815e-06
7.139106015e-07
4.701054611e-05
4.016940958e-06
3.392971071e-03
1.324572094e-02
1.809116765e-02
-1.201224212e-04
-1.084951107e-01
+2.731192430e-04
+9.983765908e-02
7.543629353e-07
3.144888884e-02
2.541618224e-07
1.081287052e-06
6.019085856e-04
-2.675294230e-06
-6.600651889e+01
-1.252990382e-05
-5.269572134e-05
-2.674339279e-06
-4.869941044e-02
+3.143911108e-06
+8.573452398e+01
+2.481006995e-05
+6.068281517e-05
+4.088248645e-06
+5.584943348e-02
1.388249177e-07
7.461768963e-03
3.402909074e-06
1.353552111e-08
8.196497731e-04
8.070767847e-08
5.530827384e-07
9.776453894e-07
1.114655452e-04
5.077992189e-03
1.369512011e-02
3.740658941e-10
1.781418456e-09
6.274192504e-10
-5.570736650e-08
-5.998642355e-07
+8.429756630e-08
+1.617995863e-06
1.097744907e-10
7.681004360e-06
1.642521973e-06
7.268695991e-08
8.422665758e-09
2.289208384e-08
-2.305737007e-07
+4.022396536e-07
7.734269324e-08
1.182053682e-07
6.038027033e-04
1.493672352e-05
1.355625923e-07
-2.538809292e-07
-6.882712050e-06
+4.120402184e-07
+1.748238314e-05
1.730384601e-02
1.844042121e-04
3.085693244e-06
2.260606209e+04
6.813153964e-02
-1.236180907e+00
-8.256080589e-06
+1.206400171e+00
+1.150842557e-05
8.815710180e-04
3.504735286e-01
1.700680109e-03
6.910992987e-07
1.043157794e+02
1.814172816e-06
-2.688688739e-03
+2.787327736e-03
2.976015172e-04
6.200943181e-03
-2.490212037e-07
-5.767096764e-05
+3.194190507e-07
+6.362485560e-05
5.990564946e-07
2.921459438e-03
1.391998767e-08
1.376391218e-06
2.868305907e-02
1.321869635e-09
7.854832125e+01
3.317601049e-06
2.896302554e-07
-3.610728411e-07
+4.705369212e-07
3.755558047e-04
1.885141400e-06
2.979456575e-07
2.644454811e-02
4.727532404e-04
-1.449586679e-04
-8.265261395e-08
+2.036197036e-04
+8.246971515e-08
2.401908115e-11
4.336051545e-07
1.411161765e-05
8.172635648e-07
2.133943837e-07
8.472465938e-07
2.378645368e-06
6.373870068e-02
-8.481958393e-06
+8.717134931e-06
2.196405434e-08
6.488703749e-10
1.367098502e-07
-6.253120021e-07
+1.118909934e-06
1.726155379e-05
1.028043800e-04
1.581189528e-02
1.714873385e+00
5.042793140e-10
1.167632099e-05
3.269051929e-07
-2.282660620e-09
+7.716901824e-10
2.489763266e-04
1.392964403e-06
5.023658342e-01
9.167250740e-05
2.647450934e-02
1.348673997e-02
7.683645278e-07
2.341732570e-04
3.779103872e-04
-1.672150123e-08
+3.259038209e-08
5.731777278e-07
2.491851220e-09
1.535566443e-04
2.338525694e-11
-8.326519940e-05
+7.210605712e-05
7.427438437e-09
-5.487384543e-06
+5.795837553e-06
5.356705978e-04
2.577249280e-02
6.339805093e-06
1.722225805e-08
7.949601147e-09
9.467943594e-03
4.124552284e-07
4.752378199e-03
6.855892451e-10
3.030134010e-03
6.111501060e-05
8.896968839e-08
7.036626305e-08
9.767086779e-08
-1.822106154e-04
+1.541663490e-04
5.167665362e-07
8.929765297e-08
1.041787025e-08
3.214441781e-07
4.278749951e+01
4.713220366e-03
-4.922173640e-05
-1.221758281e-07
+2.729114566e-04
+2.192786628e-07
3.435883898e-06
2.608975632e-07
-1.958829721e-03
+2.101783907e-03
1.308690410e-05
6.442728868e-02
-5.581195389e-08
+8.693220541e-08
2.426793708e-07
9.869946867e-05
3.931244362e-01
4.427447162e-07
-1.644106634e-06
+1.552886964e-06
3.937011867e-05
-6.637002401e-06
+7.725361209e-06
1.477893935e-06
4.793521076e-06
2.274482489e-07
2.426949341e-06
2.790263661e-04
1.411695733e-02
-5.610418560e-06
+5.851159771e-06
1.222952974e+00
1.841651984e+02
3.962193099e-02
7.575329958e-05
2.302985029e-04
2.986165595e-03
8.808106987e-03
5.367867416e-08
3.629488229e+02
6.565633407e-07
2.763279312e-07
8.792666186e-08
4.312444225e-07
2.084090097e-05
5.553313339e-08
1.824845466e-03
1.628190320e+01
8.032792019e+00
5.045965101e-12
1.309316910e-06
-2.125762884e-03
+2.878762187e-03
1.771992742e-05
-1.305278849e-06
-1.020519720e-05
+1.368456153e-06
+3.488097659e-05
9.285755927e-05
8.707117109e-05
2.458948201e-06
1.264146894e-04
-9.375340255e-08
+1.649871961e-07
2.612269543e-07
8.656036107e-04
-1.396060738e-01
+2.361474093e-01
6.541188422e-04
1.248762684e-07
4.828081916e-07
2.666096671e+02
2.779624128e-09
1.275654743e-11
1.622124438e-09
3.535882708e+01
8.637645168e-05
-3.316676713e-06
+5.354673545e-06
1.985078302e-05
3.769679004e-07
1.893519630e-08
-1.848731557e-02
-3.177966912e+01
+1.953971729e-02
+3.988768599e+01
2.898043591e-10
1.381188536e-06
9.778652394e-07
3.129079728e-04
1.006792969e-03
1.324187996e-05
4.670316575e-03
1.714481366e-02
9.746261540e-07
8.754150483e-06
8.871860946e-06
1.302177141e-03
6.687989253e-07
-3.629112534e-10
+3.402145738e-10
2.428070629e-01
1.652839606e-07
2.464020929e-04
2.376283608e-03
-4.862459470e-08
+4.889479121e-08
7.369154255e-12
2.187410343e-02
6.583332200e-09
7.586000565e-08
6.230704627e-04
2.301894399e-07
8.933274543e-07
1.742752087e-07
-2.329319180e-06
+3.602989883e-06
5.505250354e-08
4.664050600e-04
3.406810468e-10
9.055849938e-09
1.358011703e-01
2.511809081e-06
9.330572939e-06
7.547511867e-06
3.643813774e+00
-2.201783885e-05
+1.727836880e-05
4.812451470e-07
2.258393748e-07
2.233315236e-06
3.159599249e-07
1.438419527e-05
-8.216411210e-04
+3.618151636e-03
2.401748292e+01
-4.441039608e-09
+2.170235020e-08
4.182507375e-06
1.817768494e-03
4.358306112e-09
3.366166577e+06
9.748286443e-04
3.665246802e-02
5.257456411e-01
-6.787190103e-03
+1.295078479e-02
2.345660154e-06
6.085901852e-02
4.397967866e-04
2.027126088e-08
1.824801845e-04
3.284634641e-04
-4.443519448e-07
+4.751940713e-07
2.940093142e-08
-4.726548742e-02
+7.093376010e-02
8.679944530e-07
1.929082941e+01
3.427794650e-04
1.620709084e-07
4.976512597e-04
4.199111596e-07
6.038191476e-09
1.165738541e-02
5.973500915e-05
1.493338629e-08
3.492347166e-01
1.795227293e-06
1.037966149e-07
1.116776921e-08
-7.096793504e-09
+9.883552532e-09
3.063922251e-03
4.659880760e-06
6.685144842e-11
-1.337688011e-05
+3.175963721e-05
6.174930345e-02
4.874739894e-09
-1.806147160e-05
-4.631036657e-04
-1.022513411e-03
+2.143245742e-05
+6.315087596e-04
+1.703553203e-03
2.342719974e-04
4.323244263e-06
1.217044592e-07
1.076613707e-03
8.266921906e-06
1.764292648e-10
6.887713583e-08
6.045824798e+02
1.581575863e-07
4.321419033e-02
2.747231122e-08
5.176464067e-04
1.283947898e-10
2.635146077e-07
1.866099754e-06
1.077625828e-10
1.227034128e-07
3.462488088e-02
6.572734893e-04
3.682533741e-09
1.258102652e-05
1.039023360e-05
9.860921117e-06
2.764566092e-04
9.083830083e-09
-1.779107470e-07
+2.892506858e-07
3.309101491e-05
1.630414134e-11
3.408138743e-03
6.234054635e-08
3.798460345e-04
2.056820068e-04
3.723185048e-11
9.116442122e-09
2.047558303e-08
2.432333844e-08
4.876844945e-09
-3.792916630e-12
+6.400747894e-12
1.086734095e-07
2.678246345e-07
-3.737761942e-11
+4.798273244e-10
2.518544572e-02
3.543478653e-05
3.144209706e-09
-2.571078481e-08
+3.174760543e-08
2.905763262e-10
8.845631144e-06
5.299197118e-09
3.212858955e-11
1.574326626e-03
-6.260075096e-08
-2.849518253e-09
+4.435561089e-07
+3.668751182e-09
7.677924584e-10
1.019360586e-02
1.103600437e-06
-1.540425721e-06
+8.863330579e-06
3.727582277e-09
6.887332609e-09
1.302011294e-09
6.527101708e-12
3.443844857e-06
-1.066905832e-08
+1.491651329e-08
7.948118615e-05
6.284425219e-05
1.649790491e-06
7.173724647e-09
4.153972683e-10
2.405566428e+05
8.355925992e-03
8.745341043e-10
2.269492014e-10
3.309506110e-08
1.413945418e-06
2.232475177e-08
1.631049240e-08
4.510105717e-05
5.086183012e-04
1.988765291e-03
3.062340138e-05
5.993816281e-04
7.223618099e-06
6.919829161e-06
4.084309097e-06
5.317909021e-03
2.390820360e-09
9.926494617e-06
1.203124209e-08
1.587085982e-08
3.209965319e-11
3.730564190e-01
1.294323217e-09
4.525994100e-04
-1.578300749e-08
+5.925068168e-08
8.883022051e-07
7.242134641e-11
1.469712006e-06
2.146381110e-02
1.190600444e-02
4.002908719e-09
8.716239815e-09
1.439376814e-08
8.214348516e-10
7.841363574e-04
2.502302822e-12
2.237540399e-06
-4.601576463e-01
-1.010314456e-05
+7.971959419e-01
+1.197655595e-05
2.747503032e-09
3.152499662e-06
-2.220972872e-06
-1.617414124e-09
+8.544853525e-06
+4.228939850e-09
2.785775036e-08
3.505026909e-09
5.852871676e-06
6.930894599e-05
2.218608906e-07
8.336025248e-08
5.321324864e-07
6.957006774e-11
1.756920847e-06
9.201475866e-07
-5.293876717e-04
+6.325845812e-04
2.623905961e-03
6.200680271e-11
1.830818882e-04
7.754292544e-14
1.375087808e-08
1.089787443e-06
4.669668495e-07
7.929650811e-07
2.541277492e+00
7.548645527e-11
-2.866196441e-05
+1.782387304e-04
1.507840761e-07
3.976718923e-09
8.170369827e-09
1.244907359e-04
2.305047052e-11
1.868748852e-03
1.151371320e-02
-1.095371751e-06
+2.343899166e-06
4.685416671e-11
4.257552002e-10
4.676237105e-05
5.067525573e-04
7.631196519e-09
4.186397884e-13
2.672149954e-03
2.649317492e-08
6.788068043e-08
3.881131771e-11
2.442520598e-01
9.611315772e-08
2.532528157e-03
1.187572603e-11
1.653186265e-09
9.024678356e-08
3.482565421e-10
-1.724845600e-06
+1.717331034e-06
9.067490575e-07
8.135923216e-13
-9.086122702e-08
+1.017778260e-07
5.089372500e-08
3.779620535e-05
1.597856376e-06
4.649833682e-08
3.899419379e-05
2.385486151e-04
-3.509627138e-08
+5.459714911e-08
2.048011836e-10
1.598484276e-05
2.842204256e-06
4.300810814e-10
1.236712825e-09
9.724480523e-10
5.137729447e-06
1.206863564e-03
-2.997179873e-07
+3.463868768e-07
2.968956835e-06
3.892655757e-06
-7.966608049e-09
+1.686754279e-08
9.315475683e-06
4.685745597e-03
1.264393372e-11
1.651517618e-06
4.093555503e-04
6.291217780e-02
2.232241817e-12
1.581588279e-10
2.176076635e-01
2.778841978e-02
-4.020486964e-11
+5.519437992e-11
1.606840276e-03
-1.997885092e+00
+3.243666419e+00
8.696453002e-01
9.849266934e-02
5.923627073e-11
1.000520546e-11
5.484410290e-02
1.900079973e-04
6.710428134e-08
4.023506025e-07
9.262433958e-07
3.971033910e-04
2.798384077e-11
2.733321071e-04
5.949377984e-06
5.804131920e-04
4.149708488e-09
-7.157829015e-08
+2.580771599e-07
3.459693749e-09
8.152801222e-12
4.442083122e-08
4.885241039e-07
1.286023795e-11
9.146948664e-12
7.438541958e-07
3.933356062e-11
1.992948079e-08
1.233914164e-01
1.179935767e-06
-7.442591418e-07
+2.913128174e-06
2.614263483e-07
1.305318834e-04
4.563775945e-04
-8.536151068e-10
+1.172627296e-09
9.124754450e-06
1.181449830e-08
4.457412126e-07
1.105658535e-15
7.403561460e-08
6.857923072e-05
2.595980444e-06
-3.399059969e-06
+6.947800944e-06
2.275429709e-10
1.608232344e-05
-1.695525590e-04
+2.081451699e-04
1.471558450e-09
3.413025936e-03
4.519315643e-05
3.265308485e-09
7.421214523e-10
3.097172719e-04
4.702159026e-05
8.124970186e-10
6.737184939e-12
3.875912321e-05
8.002679747e-05
4.570485914e-05
1.372447479e-06
9.295972807e-10
9.091336789e-07
2.002021098e-06
4.844911625e-09
1.902794787e-08
1.566263784e-08
9.357485889e-06
1.048780982e-04
6.452709776e-07
4.085398049e-06
1.535693061e-08
9.742658204e-12
2.622006774e-05
2.375471653e-02
3.141422539e-03
5.474762658e-08
1.414376429e-03
1.609237488e-12
1.107110125e+01
7.034088451e-04
-3.207731210e-06
+3.394611150e-06
5.029108582e-09
-6.486744021e-08
+9.924057220e-08
diff --git a/t/ME_data/ME_hj_mt_tree.dat b/t/ME_data/ME_hj_mt_tree.dat
index 2ac4b39..3953494 100644
--- a/t/ME_data/ME_hj_mt_tree.dat
+++ b/t/ME_data/ME_hj_mt_tree.dat
@@ -1,1687 +1,1687 @@
-2.661319236e-05
+3.658069369e-05
8.940615551e-04
-6.004167546e-01
+9.951582477e-01
4.962078017e-05
-5.597200365e-03
-1.009948618e-02
-2.315139002e-01
-2.325999319e-06
+6.739383744e-03
+1.312803016e-02
+2.402891196e-01
+3.160194705e-06
1.340132604e-04
-4.028562733e-03
-1.183898016e-01
-4.988972034e+00
-1.445162196e-01
-5.194905156e-01
-1.049933682e-04
-8.066756561e-03
+5.434415366e-03
+1.376623016e-01
+7.890577622e+00
+1.781015829e-01
+3.821365945e-01
+1.860024535e-04
+1.074432524e-02
5.503611068e-04
-1.205014557e-05
-5.822520959e-02
+1.293343189e-05
+8.654314963e-02
5.203461807e-04
-4.196592764e-01
-1.457185124e+00
-2.917142000e-02
-2.241517792e-03
+5.487460828e-01
+1.395668972e+00
+2.403404873e-02
+2.255637566e-03
2.426777728e-04
1.333737413e-04
-2.520947202e-03
+3.142025447e-03
3.139586002e-05
-4.288770804e-03
-1.630311237e+02
-3.949132370e+01
-3.164214927e-02
-4.772686947e-05
+6.945522030e-03
+3.244439407e+02
+5.136091842e+01
+3.326653429e-02
+5.148951029e-05
6.698816594e-05
-3.443310617e-04
-8.223003601e-04
-1.080208957e-02
+5.398244467e-04
+9.542462312e-04
+1.501450066e-02
9.476943064e-05
9.571932460e-05
3.519276992e-04
-2.923775392e-03
+3.548705892e-03
2.402237113e-03
-5.461786041e-02
-4.746279647e+01
+6.358651461e-02
+4.294727715e+01
2.004481588e-04
-1.494813068e+00
-1.208613519e-02
-3.836976907e-01
-3.446570716e-03
-1.515333279e-01
-2.738202817e-01
+2.528164666e+00
+1.931915847e-02
+3.710527705e-01
+4.062723907e-03
+1.901904259e-01
+2.293694462e-01
9.040698382e-05
-1.381054373e-02
+1.258675472e-02
1.170911575e-04
-1.993100787e+01
-2.942037446e-04
+2.086376148e+01
+2.897714741e-04
7.686560533e-04
-2.024388560e-01
+4.249920614e-01
5.384562568e-05
-2.989072173e-03
-5.072893295e-03
-4.462889935e-03
-8.249756103e-01
-3.382968006e-02
-8.396168342e-04
+2.453681146e-03
+5.678259145e-03
+5.931107601e-03
+1.519522074e+00
+4.320960179e-02
+7.999433987e-04
1.548373919e-04
2.219626944e-04
-5.592157661e-04
+6.843270039e-04
1.206401035e-04
1.374143772e-04
1.430183761e-04
-1.412597960e-03
+2.844736095e-03
1.641416376e-04
-9.698220633e-04
+1.103517361e-03
1.564987277e-04
1.446058195e-04
1.589217192e-04
-1.778440393e-02
-1.022192791e-01
-4.538538154e-02
+1.940098981e-02
+1.224226243e-01
+5.452587589e-02
5.121606009e-05
-6.105528663e-03
+3.057130574e-03
9.690901429e-05
4.090287069e-05
-2.759644259e-02
-5.988336036e+02
-9.660400714e-03
-1.387909079e-01
-1.497790376e+03
+2.221489564e-02
+8.613544876e+02
+1.478063204e-02
+1.401295201e-01
+1.057509752e+04
1.767900998e-04
2.621313835e-05
1.617763381e-04
-1.490044295e+01
+1.713898165e+01
3.202244573e-04
9.943546493e-05
-2.017568424e-04
-5.767995651e-05
-8.677184928e-05
+1.030339743e-03
+7.989738749e-05
+1.755212415e-04
2.990817149e-05
1.730479494e-04
8.772930668e-05
-1.887845198e-02
-1.850895033e-02
+2.615380544e-02
+3.265028741e-02
9.942594469e-05
-7.159966725e-04
+7.493478482e-04
1.139635388e-04
9.246189271e-05
1.755589844e-03
5.169547338e-05
-2.970053934e-03
-1.006489076e-03
-5.123611438e-01
-1.267179468e+00
-2.727911899e-01
-3.188942660e-03
+4.174387822e-03
+1.980912082e-03
+7.555150191e-01
+1.532034477e+00
+3.763425712e-01
+5.181760576e-03
1.496988630e-04
-4.769274343e-01
-1.761678402e-03
+6.293646765e-01
+1.977307663e-03
4.114643761e-05
1.064098887e-04
-1.390233160e-01
-3.622119452e-02
-1.287634004e-02
-2.513203095e-03
+3.008496265e-01
+5.599699334e-02
+1.011224916e-02
+4.211456123e-03
3.301387068e-03
7.202887739e-04
-1.035836117e-03
+2.146064861e-03
8.016682415e-05
-4.272859618e-04
+9.800931086e-04
9.216592222e-05
-7.440784150e-03
-7.803818007e-02
-1.262378336e-01
+8.672171893e-03
+1.198404624e-01
+1.339229989e-01
4.730584679e-04
-2.137941674e-02
+3.913244544e-02
1.143200638e-04
1.572528347e-04
3.332583136e-04
-7.234187919e-03
+1.102067137e-02
4.657478874e-04
2.335000440e-04
-2.381263234e+00
+4.095875047e+00
4.694991218e-05
1.155601519e-04
-1.020744023e-04
+1.189004942e-04
1.872001204e-02
-2.041429181e-03
-1.520362247e+01
-6.733425930e-01
+2.052492288e-03
+3.055041752e+01
+6.634042386e-01
3.019947372e-05
2.854568877e-04
-2.000525467e-03
+2.682132251e-03
1.062546944e-04
-9.891749862e-04
-9.899289420e-03
+1.551112532e-03
+8.241183451e-03
1.164133193e-04
-7.444377505e+01
+1.038186878e+02
1.338229149e-04
-2.796443497e+03
-1.050171239e-03
-3.484247673e-05
+3.392634302e+03
+1.153135773e-03
+4.268985591e-05
9.833177734e-05
-1.132268350e-02
+1.359905953e-02
8.849300471e-05
-5.748723048e-06
+7.469407001e-06
3.302543046e-04
-3.818378835e-05
-1.230606689e+01
-1.101824581e-03
+3.501642718e-05
+3.314711329e+01
+2.627995270e-03
6.491576028e-04
1.237898705e-04
5.707908311e-05
-3.299964933e-05
-1.078701945e-04
-3.305449858e-02
-4.937719727e-02
-6.922541846e-02
+3.120278888e-05
+1.027207879e-04
+3.724227160e-02
+4.959701091e-02
+1.061938857e-01
1.728325986e-04
-1.689022139e-03
+2.967431501e-03
4.180232517e-05
6.566173481e-04
3.999200411e-05
2.025673510e-04
-1.106325896e-04
-4.446047487e-05
+1.931283666e-04
+4.860843057e-05
2.319202528e-04
2.512992106e-04
3.915958059e-04
1.004311668e-03
-1.098788538e-02
+1.322158760e-02
6.821741192e-04
-1.430816279e-02
+1.924804720e-02
2.764400923e-04
-2.221336800e-04
+1.805987248e-04
1.566187042e-04
1.071433776e-04
-4.634569040e-05
-2.005068736e-03
-4.770661465e-03
-7.473726765e-04
-1.252337859e-04
-2.888605261e-03
-9.834925257e-03
-1.327905915e-01
-9.187986571e-03
-3.406744994e-03
-2.595512463e-03
-1.480789523e-03
-3.191225802e-02
+5.916750665e-05
+2.609036043e-03
+5.156673335e-03
+6.991496923e-04
+1.503503128e-04
+4.408880332e-03
+1.034866359e-02
+1.388445955e-01
+1.048625604e-02
+4.244746925e-03
+2.553378957e-03
+2.614031800e-03
+3.671033420e-02
3.253135189e-05
1.244794103e-04
-7.012125857e-03
-5.896288617e-02
-1.947236374e-04
-7.062868388e-01
-1.642829540e-01
-1.540627835e-03
-1.194994587e-02
-1.535686465e-02
-2.075933296e-02
-6.313540078e+00
+9.970099404e-03
+6.252750052e-02
+2.676910501e-04
+9.854544087e-01
+3.977308127e-01
+1.638902958e-03
+9.056850166e-03
+1.936866307e-02
+1.892065803e-02
+6.977025356e+00
3.696290843e-04
1.223725917e-04
-3.542531577e-03
+5.617817926e-03
2.979195146e-05
-2.836390469e-06
-2.289671170e-03
-9.800275134e-03
-1.320112458e+00
+4.538265176e-06
+3.389963560e-03
+1.730646893e-02
+1.756424329e+00
2.773809982e-04
-2.538157590e-03
-9.379551416e+01
-5.409254184e-03
-4.570693438e-03
-6.032333298e-05
-1.170658961e-02
-1.094801313e-03
-1.763693184e-02
-1.361396945e-03
-2.639008628e-01
+3.579604447e-03
+2.461219455e+02
+5.635753800e-03
+4.465306862e-03
+9.247447863e-05
+1.717805993e-02
+1.176818178e-03
+1.246151978e-02
+1.826922076e-03
+2.745890583e-01
2.208141941e-04
3.155546137e-03
-5.217712316e-05
+6.798042980e-05
3.887083341e-02
1.159375299e-03
-5.882303487e-05
+6.276028979e-05
2.539251111e-04
-1.569527444e-02
-5.984963907e-04
+3.088328060e-02
+9.102270524e-04
8.953471820e-05
-5.357985766e-02
+1.117450662e-01
3.039919090e-04
-1.662384318e+00
+2.218864589e+00
3.651008957e-05
-1.039696920e-03
-5.128188792e-01
-3.654439163e-03
+1.717113852e-03
+6.333406202e-01
+4.254302220e-03
1.931664389e-04
1.407062200e-04
1.258726258e-03
2.161174731e-04
-6.072121822e-04
-8.829947155e-04
-7.400718644e-04
+9.157279000e-04
+1.526308977e-03
+8.602208060e-04
2.855920531e-05
-4.017185454e-04
-2.676511272e-03
-1.990710525e+00
-9.420677722e+00
-8.767874780e-01
-1.130170619e+00
-3.725437377e+01
-7.341849401e-05
-2.057619303e-01
+6.337231638e-04
+3.614807334e-03
+3.828161501e+00
+1.341246701e+01
+9.130375946e-01
+1.687175693e+00
+5.475062915e+01
+8.008339096e-05
+2.296977822e-01
2.285735829e-04
-8.367194384e+02
+1.990989143e+03
1.033878637e-04
-1.303613823e+00
-2.863353845e+00
-4.399662540e-04
-7.267686559e-04
+1.731008253e+00
+3.184194146e+00
+4.984929980e-04
+7.597697988e-04
1.382911064e-04
-3.666573095e-03
-1.136592423e-02
-7.923789789e-05
-2.616992185e-02
+6.170908268e-03
+1.950326757e-02
+6.415847392e-05
+2.766160277e-02
9.854429345e-05
-1.745498750e-01
-7.982865114e-03
-9.918732990e-05
+1.860509108e-01
+1.065761157e-02
+9.472080458e-05
1.504984189e-04
-2.122380394e+01
-8.982051354e-02
-3.889901846e-03
-3.458347822e-08
-2.017176286e-04
-6.216509387e-01
-3.787288650e-03
-1.929294075e-02
+2.748230389e+01
+8.993894716e-02
+9.527222867e-03
+6.082122822e-08
+2.776623969e-04
+1.214042782e+00
+4.828349553e-03
+2.797920085e-02
2.136195639e-04
-1.564115002e-03
-5.877152472e-03
-2.064191790e-04
-5.986965864e-02
-6.851185923e-01
+2.151546500e-03
+4.533875900e-03
+3.452608385e-04
+1.399583862e-01
+1.122657263e+00
2.291240876e-04
-1.039761832e-01
+1.430509553e-01
5.633437047e-05
-1.715240495e-04
-1.069047049e+00
-1.206180350e+01
+2.063094689e-04
+7.390619034e-01
+1.199795443e+01
3.431448640e-04
2.412636548e-04
-6.224619602e-06
-5.883555935e-04
-9.936412198e-03
-5.788656528e-03
-2.142335403e-02
+7.041254534e-06
+6.370774994e-04
+6.294262038e-03
+7.179320434e-03
+1.877910558e-02
6.627341233e-05
-9.493955711e-03
+9.189404702e-03
1.041101113e-03
-3.781107030e-01
-2.851648403e-02
-1.092473624e-02
-1.649167840e-01
+4.046455853e-01
+2.857344354e-02
+1.171966914e-02
+2.583959489e-01
6.435885390e-05
1.892813917e-04
2.612286531e-04
-1.434880133e-04
-1.169872994e-01
-1.461184810e-04
-8.791272977e-04
-4.076097478e-03
-8.229101896e-03
+1.390704455e-04
+9.001222747e-02
+1.834089666e-04
+1.503449277e-03
+9.037095789e-03
+8.577142712e-03
1.713900213e-04
-1.705242825e+00
-9.171959893e-04
+1.599882158e+00
+1.329480218e-03
3.668967862e-03
-3.167536385e-02
-9.465259576e-03
-4.132589376e-03
-5.375426094e-01
-6.715413780e-05
-1.473625745e+00
-5.172272163e-05
-3.146332010e-03
+4.347572604e-02
+1.128448224e-02
+4.951129216e-03
+9.227201950e-01
+7.208038324e-05
+1.642873368e+00
+4.230515617e-05
+3.522743176e-03
2.459035526e-04
-6.608755497e-03
-6.583699335e-02
-3.689932494e+00
-5.006373416e-05
-3.772854517e-04
+7.489837746e-03
+7.115928120e-02
+7.784379574e+00
+5.723330659e-05
+4.589976199e-04
1.464300163e-04
-2.141827081e-03
-3.537345710e-03
-6.317434788e-02
-2.063089923e-02
-5.625693488e-05
+2.533051516e-03
+4.269606432e-03
+6.048737298e-02
+3.534512929e-02
+8.444420767e-05
5.941467954e-04
8.042533700e-04
-1.226636649e-02
-1.792591234e-04
-9.157865036e-01
-9.648738450e-01
-2.001556411e-02
-5.635506841e-04
-6.321256405e-04
-2.311950780e-02
-2.329663337e-01
+6.122672304e-03
+3.041172138e-04
+1.724083256e+00
+1.073004852e+00
+3.365264845e-02
+5.440297718e-04
+7.667859305e-04
+3.702377311e-02
+2.496495348e-01
2.721037027e-04
1.677477194e-03
-4.626005226e-03
-3.520712912e-05
-8.390982327e-02
-9.307163291e-05
-3.224184348e-04
+5.566005380e-03
+4.315169614e-05
+1.050242372e-01
+9.845866826e-05
+5.738311521e-04
1.204872098e-04
-2.193368861e+04
-1.185274805e-03
+3.910322023e+04
+1.092150134e-03
2.041883362e-04
-3.293327934e-05
-1.005486812e-02
-1.127959089e+00
+5.144087304e-05
+1.547476799e-02
+2.165974940e+00
3.809470459e-04
-5.638572557e-02
-2.460146271e-02
+6.563530765e-02
+4.679719401e-02
8.952441667e-05
-8.118018485e-02
+8.629478405e-02
4.806888890e-04
1.181390615e-04
3.899642009e-04
-7.905169502e-04
-7.810697274e-05
-5.415544441e-03
-4.898403891e-03
-4.185276616e+00
-1.867982471e-01
-5.147865820e-01
-6.627953649e-01
-1.425116985e-04
+4.140023853e-04
+1.071319989e-04
+1.761268011e-02
+5.150552841e-03
+6.201736862e+00
+3.012392610e-01
+4.675613963e-01
+8.512426074e-01
+1.792635290e-04
2.203884623e-04
-1.786376560e-03
+1.826009893e-03
5.035471215e-05
-1.902085412e-02
-1.194449294e+00
-2.359963373e-05
-3.196746213e-03
-4.929014391e-02
+2.445423419e-02
+1.526612977e+00
+2.708229422e-05
+4.614285214e-03
+5.805814267e-02
2.326484359e-05
-9.491948768e+02
+3.330246680e+03
1.187419651e-04
3.354621567e-04
-2.434912402e-03
+4.404402743e-03
1.054668949e-04
6.987605519e-04
-8.606250218e-05
+9.420508202e-05
2.610424509e-05
3.465094436e-05
8.169434684e-04
3.576380081e-04
-2.542199918e-05
-8.735783212e-03
-6.572673721e-03
-1.754108288e-03
-2.771488973e-06
+2.444127343e-05
+9.290674892e-03
+8.281814376e-03
+2.020379641e-03
+3.683423582e-06
2.702271771e-05
-1.494519315e-02
+1.852156407e-02
9.367667237e-05
-1.580270646e-01
-1.271272049e-01
-6.719076775e-05
+1.961300570e-01
+2.386152352e-01
+7.510720423e-05
4.074498532e-04
4.636001460e-04
-4.213958673e-02
+4.302265338e-02
1.161753231e-04
1.346056957e-04
1.290069541e-04
-2.298263217e-02
+3.666788702e-02
6.672240265e-05
-9.811948988e-02
+1.719014791e-01
4.190257284e-05
-5.615452059e-03
-3.329493669e-01
+1.361035544e-02
+3.860437414e-01
1.481991298e-04
-2.530425232e-02
-3.244262680e-05
-9.746550506e+02
-1.087376882e-02
+1.653465510e-02
+1.061779564e-04
+1.168976337e+03
+1.425605622e-02
5.005250501e-05
-1.027817576e-05
+1.284203329e-05
2.803078684e-04
1.501196219e-04
6.546908672e-05
-5.091917664e-02
+5.288197827e-02
3.595532363e-04
-2.603204900e-01
+2.767880676e-01
5.418962101e-05
-5.595939274e-04
+6.735506063e-04
2.478801044e-05
-1.778180575e+01
-1.779987718e-02
+1.900869692e+01
+3.314627565e-02
7.278908655e-05
1.064041144e-03
-5.620075997e-03
+1.579044721e-02
2.054758163e-04
-6.197819470e-02
-3.808481803e-02
-5.962621512e-03
+8.189832568e-02
+5.299280113e-02
+9.825722256e-03
1.079297929e-04
5.967715702e-05
-1.193322682e-03
+1.710550779e-03
2.017049443e-04
-3.232429956e-05
+4.760952077e-05
6.297601458e-04
9.033388182e-05
1.428570230e-04
1.123647346e-04
-4.283248046e+05
-1.656848554e-03
-5.754566596e-04
-5.757389295e-04
-2.794557381e+00
+6.121656315e+05
+2.060815549e-03
+6.377576966e-04
+6.519972338e-04
+2.285015280e+00
3.877786637e-04
-5.393386765e-03
-1.103587566e-04
+8.752826193e-03
+1.036719711e-04
3.641623493e-05
-9.071912391e-05
-2.336195827e-03
-2.160268289e-03
-1.305639212e-04
+1.309152229e-04
+2.959919963e-03
+3.577172021e-03
+1.640579601e-04
3.062055860e-04
1.352604491e-04
-4.307863820e-03
-2.427256886e-04
-5.168404375e-06
-5.901072756e-04
-8.145297444e-03
-3.395358941e-01
+5.255527590e-03
+2.645500472e-04
+7.228897247e-06
+6.288263741e-04
+9.675764687e-03
+3.344238908e-01
3.460346788e-04
-2.277447227e-01
-6.957760947e-01
-1.608121182e-03
+4.216496961e-01
+1.033326632e+00
+2.457185419e-03
1.128810268e-04
-1.877839474e-01
-1.329860363e-02
-2.920225723e-04
-1.026950669e-03
-1.780620334e+01
-8.670922211e-03
+3.505664973e-01
+1.772450977e-02
+2.813904971e-04
+1.683482128e-03
+2.382571163e+01
+1.106631816e-02
6.092735415e-04
-8.130774661e-02
-3.028231603e-04
+9.006343575e-02
+1.600119900e-03
1.903810063e-04
1.316114062e-04
8.751736734e-05
5.324899731e-04
-2.257165816e-02
-1.126581063e-01
-2.429873016e-05
+2.512574769e-02
+1.290669928e-01
+4.714614073e-05
1.192025563e-04
9.035971026e-04
1.202799087e-04
1.086936789e-03
8.090525352e-04
-3.716642326e-01
-4.198488297e-03
-6.081505783e-04
+4.520662234e-01
+7.281833305e-03
+1.625973085e-03
1.812362768e-04
1.868143803e-04
-2.211132532e-03
-2.559822971e-02
-9.429915044e-04
+3.085776151e-03
+9.600862747e-03
+9.627477765e-04
9.682323493e-05
3.051833722e-05
1.240958850e-04
-2.157971853e-02
+3.221821354e-02
1.848599570e-04
-1.914879104e-04
-5.284164122e+00
-1.071389391e-02
+3.184769030e-04
+6.295912721e+00
+1.317944632e-02
1.078062464e-04
-1.707221969e-01
-8.990987692e-02
-6.246747128e-01
-3.946780743e-04
-6.152273535e-04
+1.920919292e-01
+1.168073135e-01
+7.141208759e-01
+4.787795751e-04
+3.695122260e-04
1.325911213e-04
-1.039220458e-03
-8.800047066e-04
-5.777294556e-05
-5.666763796e-02
-1.723874019e-03
-5.033996435e-04
-4.612608906e-04
-1.117058316e-02
+1.187973623e-03
+1.080594663e-03
+6.559166666e-05
+6.509811721e-02
+2.281143364e-03
+6.279130660e-04
+5.126326349e-04
+1.185387250e-02
2.831152978e-04
7.436537858e-05
-2.636540682e-02
-2.098348514e-04
+3.137595714e-02
+3.291400270e-04
1.236411640e-04
6.700797958e-05
-2.305440420e-02
+2.314056292e-02
3.581738796e-04
-6.121483687e-02
-1.823684024e+01
+1.519042022e-01
+3.205751376e+01
5.637843362e-03
2.886486946e-05
-4.521791642e-04
-5.413542183e-03
-6.882562773e-03
-3.226228067e-03
-5.887166536e-02
+5.132567960e-04
+7.748660995e-03
+5.202925813e-03
+3.584202168e-03
+7.452861112e-02
1.857383456e-04
-1.016005018e-02
-1.403339475e-03
+1.287618520e-02
+1.584947312e-03
4.307017693e-05
-2.009856921e-01
+4.693036315e-01
2.108613757e-04
1.364438595e-04
3.028396108e-04
-5.668877139e-02
-1.110469799e-03
-5.550242297e-01
-1.162658925e-02
-1.443858018e+02
-3.298590647e-01
+4.887170800e-02
+1.210796703e-03
+1.249194006e+00
+1.044569134e-02
+1.720020808e+02
+4.097050472e-01
2.409652886e-03
-6.149813660e-05
-7.337678974e-01
+1.179014085e-04
+7.174329908e-01
5.585267214e-04
-8.262716016e-05
-4.247737922e-02
-2.278196391e-05
-3.831891378e-03
-6.518166522e+02
-1.977457258e-04
-1.053921097e-01
+1.021393659e-04
+5.093528099e-02
+4.104345148e-05
+4.000011168e-03
+7.963661004e+02
+2.387604491e-04
+5.838712916e-02
1.297727493e-04
1.288254848e-03
-1.995143307e-01
-1.418092547e-01
-2.571280277e-02
+2.624128616e-01
+1.568613267e-01
+5.787637667e-02
3.594993800e-03
-3.923230717e-02
-1.538973481e+01
-7.421099570e-04
-2.305454762e-02
+3.540499405e-02
+2.131153038e+01
+1.020540335e-03
+2.358165864e-02
9.120093055e-05
2.649427236e-04
-8.465260401e-03
-3.462780405e-03
+9.597606088e-03
+5.352908089e-03
3.976713970e-04
-5.309524538e-02
-7.410099488e-04
-8.918050173e-03
+8.298983723e-02
+1.125928861e-03
+8.433512246e-03
2.161592226e-04
1.180292954e-04
-5.066939297e+00
-2.427099254e-04
+5.072772956e+00
+3.731635313e-04
2.067585192e-04
-1.814006744e-03
+1.646907754e-03
2.612907887e-04
1.558178564e-04
-1.896899784e-03
-4.703744258e-03
-3.208097396e-02
-5.594684941e-03
+5.378985507e-03
+5.750137913e-03
+3.753707946e-02
+9.794692101e-03
9.167990797e-05
-8.425617636e-05
-6.693678705e-02
+8.727364807e-05
+9.828747366e-02
3.646091829e-05
-5.952662510e-01
+6.261687651e-01
5.278262423e-05
1.056258831e-04
-4.842385989e-04
+8.295112338e-04
1.101834183e-04
-6.652811518e-03
+1.826911201e-02
2.656195165e-04
-8.554424270e-01
+3.740341238e-01
1.422189121e-04
8.978476844e-05
-1.796483363e+02
+3.022433094e+02
1.038138392e-04
-2.195514782e-02
-7.391281319e-05
-3.847421730e-02
-3.261019857e-03
-9.936798875e-03
+3.916807659e-02
+1.457787049e-04
+3.140410675e-02
+3.867746291e-03
+1.435868970e-02
1.795495714e-04
-1.337933520e-03
-5.165519561e-04
-9.845578558e-02
+3.089921072e-03
+7.251039922e-04
+1.392218345e-01
2.321586820e-04
-1.698366719e-02
-8.486593695e-03
+2.658392756e-02
+1.002400821e-02
1.255501295e-04
-9.575862777e+02
-4.317233094e-01
+9.462443584e+02
+5.216702996e-01
1.973475993e-03
-3.570871865e-03
+3.798461159e-03
4.252113805e-05
3.419014326e-04
2.067766995e-04
-1.125374956e-01
-1.338473402e-04
-1.692497813e-05
-2.348453459e-02
-4.884105234e-04
-7.249768924e-05
+1.766792562e-01
+1.755962310e-04
+2.269870814e-05
+2.484066264e-02
+1.927297817e-03
+1.155196307e-04
1.115209594e-03
-6.282966673e-02
-6.398356692e-02
+4.848316893e-01
+4.631116058e-02
1.126137343e-04
1.988956053e-04
1.133676981e-04
4.745781009e-05
-2.236671874e-01
-4.250663811e-06
-8.845659876e-06
-4.422585695e-04
+2.456642890e-01
+6.161548157e-06
+7.911862281e-06
+9.042984906e-04
1.097078839e-04
-8.107299969e-02
+9.900385985e-02
3.369983554e-04
-1.933728262e-06
-3.626222368e-03
-1.841904927e-01
+2.693021511e-06
+4.589018796e-03
+1.842933615e-01
2.432071408e-03
1.727869838e-04
2.489288621e-05
-1.201153233e+01
+1.250520179e+01
1.053412657e-04
4.432241081e-05
3.670737111e-04
9.248004661e-05
2.861126888e-04
9.626101921e-05
1.251144352e-04
-4.580260899e-06
-1.830272152e-03
-2.462713367e-02
-7.108661946e-04
+5.972535434e-06
+2.010426832e-03
+3.406860773e-02
+8.298419957e-04
3.078583681e-04
-1.016242923e-04
+2.303412462e-04
1.675279023e-04
-3.800616970e-03
+5.327015979e-03
9.085431787e-05
1.186134236e-04
-2.684684274e-02
-1.430149419e-02
+2.802197344e-02
+2.593553851e-02
2.779106174e-05
-7.340754621e-04
-1.844010689e-02
+8.854481583e-04
+3.487778561e-02
4.969047547e-05
3.941865906e-04
5.458287762e-05
4.322657702e-04
8.999592831e-04
-2.610331303e-03
+3.065675703e-03
2.831408321e-04
-4.889400950e-05
+6.493697982e-05
1.352704140e-04
2.276286207e-05
1.321459967e-04
3.236482777e-03
-3.327171522e-02
-1.553886580e-03
+3.404393697e-02
+1.713090414e-03
1.662666859e-04
-2.123734108e+01
-1.312466218e+01
-3.106515859e-02
-9.539559284e-04
-3.067801754e+00
-1.232082015e-03
+2.357502352e+01
+5.510912499e+01
+4.953469446e-02
+6.813143591e-04
+4.711209492e+00
+1.343218611e-03
1.026959488e-04
-9.417997823e-03
-6.878335476e-01
+1.453920299e-02
+1.002842536e+00
2.723242987e-05
-4.828541639e-03
+5.803694280e-03
3.873501736e-05
2.408801778e-04
1.063614242e-04
-5.897239914e-01
+9.807276790e-01
3.708363481e-05
-6.655116692e-04
-7.220734886e-03
-3.600091450e-01
+6.655046569e-04
+1.054713049e-02
+5.361059980e-01
1.443564571e-04
-1.261891229e-02
+1.068341590e-02
2.199834323e-04
-3.312843277e-03
+7.396059659e-03
1.116488405e-04
-9.267143110e-04
+8.739309804e-04
4.801407467e-05
4.901042440e-05
1.119882616e-04
2.629345647e-04
6.195849842e-04
2.219917588e-04
-1.203383046e-01
+2.505609274e-01
4.342611381e-03
-2.022635171e-02
+2.705696173e-02
1.934031836e-04
3.135956240e-04
3.085037505e-04
6.311297657e-04
-1.422738700e-04
-2.086081697e-01
-8.135856781e-04
-1.103637211e-03
-4.285006153e-04
-1.877914966e-02
-3.127013051e-03
-1.220899025e-05
-3.513491548e-05
-1.916890255e-03
+2.189094171e-04
+5.298884359e-01
+1.347688789e-03
+1.009727461e-03
+9.436209035e-04
+3.301519267e-02
+5.348780513e-03
+1.653638951e-05
+4.869799661e-05
+2.000632117e-03
2.614667625e-03
2.569041728e-04
5.996081143e-05
-1.443015276e-03
-4.457065331e+00
+1.607012211e-03
+6.228416211e+00
1.142543424e-04
-1.453117003e-04
+1.747375117e-04
2.077357478e-04
-7.706619346e-07
+1.190978313e-06
2.288061254e-04
3.016530755e-05
6.719547674e-04
-5.191979126e-06
-8.080124756e-03
-1.983321042e-02
-3.985812284e-03
+8.003969259e-06
+3.512615148e-03
+1.511178295e-02
+4.115228911e-03
1.806653914e-04
1.448354342e-04
2.754455341e-05
1.475916225e-04
9.673078740e-05
-1.454410271e-02
-6.760693302e+00
+1.878490850e-02
+9.150297196e+00
8.845015769e-05
-9.028110504e-02
-9.567452677e-04
-3.609380827e-04
-1.127676511e-01
-7.026084032e-01
-1.460566853e-03
-4.441580720e-02
+8.957589560e-02
+1.001385308e-03
+5.100505042e-04
+1.172958422e-01
+1.516452362e+00
+1.962061066e-03
+3.590695787e-02
4.572987876e-05
-1.024203287e-03
-2.790732253e-04
+1.251327346e-03
+4.212268929e-04
1.526331415e-04
-1.050795909e+01
-7.870212691e-02
+3.317453282e+01
+1.215936552e-01
3.811986194e-04
-3.204731362e-04
-8.280570466e-05
-1.293039399e+01
+3.081977907e-04
+1.028020852e-04
+2.229705801e+01
1.338527905e-04
2.610109553e-05
-3.402968408e+02
+5.605357791e+02
4.161175834e-04
2.260302602e-05
1.527296328e-04
-2.046817423e-02
+3.218670494e-02
4.973311749e-04
9.536418950e-05
-1.019013740e-04
-6.032991432e+01
-3.415346955e-04
-1.167862364e-04
+1.045039331e-04
+7.432514573e+01
+4.483064836e-04
+1.458274491e-04
3.502022880e-04
-9.363055479e-06
-8.133221945e-03
-2.653729797e+00
-4.568260461e-02
-1.663446335e-04
-3.708951334e-02
-7.905614549e-04
-3.072353657e-04
-7.693511860e+00
-1.402273387e-02
-1.313456434e-04
-5.169923015e-02
-7.324359205e-03
-3.279106496e-04
-1.753903418e-03
+3.110881001e-05
+8.186056186e-03
+2.645757089e+00
+7.044253992e-02
+3.382402630e-04
+5.821516949e-02
+1.095708096e-03
+3.525529321e-04
+9.094053486e+00
+1.680164762e-02
+1.403537333e-04
+9.107649964e-02
+6.899455231e-03
+4.690228088e-04
+6.668226254e-03
3.563072695e-04
1.107564999e-04
9.001403684e-05
-2.160684931e-05
-4.417014691e+04
-6.061032301e-06
-4.832706566e-04
+2.362905141e-05
+7.418125385e+04
+1.142359008e-05
+9.018582020e-04
9.491169297e-05
2.468143653e-04
-1.755928128e-03
+1.920893159e-03
1.061484901e-03
-2.479948328e-04
-3.260006486e-02
-1.284393643e+00
-1.175452321e-01
-1.068877767e+01
-6.613378674e+00
+3.554703275e-04
+4.610424132e-02
+4.400093870e+00
+1.169373318e-01
+1.427250762e+01
+7.269552734e+00
1.102681796e-04
1.500012154e-04
1.252573187e-04
-4.945154820e-02
-5.535486961e-05
+7.242453938e-02
+6.422533120e-05
3.163967114e-05
-1.019497878e-01
+1.020707090e-01
1.601811603e-04
-1.622256634e-01
+1.916032677e-01
9.837396716e-05
1.260199772e-04
-1.050955735e-03
-1.424471872e-02
-2.187951822e-01
-2.107121854e+02
+2.541798152e-03
+1.510896569e-02
+2.241504390e-01
+2.763235278e+02
2.556034992e-04
-6.047813429e-01
-1.370892412e-01
+7.975503718e-01
+2.259739894e-01
1.051281427e-04
-2.163897949e-02
-1.316514319e-02
-2.690122559e-03
+2.177388711e-02
+1.325212880e-02
+3.108449124e-03
8.115542286e-04
-1.304791044e-02
+1.378625303e-02
8.904809455e-04
-1.639509161e-02
-9.914415513e+00
+2.113432638e-02
+1.708130441e+01
1.178755528e-04
-1.919529383e-04
+2.005657230e-04
2.911308984e-04
-1.214662985e-02
-1.519557743e-02
-4.385178763e-02
-1.137576270e-03
-3.092498206e+00
-5.456742958e+05
+1.326305429e-02
+1.608060161e-02
+6.587894692e-02
+1.536723422e-03
+3.326904632e+00
+6.726887622e+05
1.257216158e-04
-1.645822079e-02
-5.582328754e+01
-8.416967287e-04
-1.993098091e-03
+1.902456529e-02
+5.487099400e+01
+1.073428777e-03
+3.026849715e-03
3.467336822e-04
-5.753196090e-03
-6.967536842e-03
-1.815047317e-01
-4.622054999e-03
+5.437472949e-03
+1.084011991e-02
+2.333004928e-01
+1.200216389e-02
1.240791987e-04
9.681082516e-05
-2.444195250e-03
-6.204760006e-03
+5.495809869e-03
+1.052919949e-02
9.796775252e-05
3.199467184e-04
-5.064848936e-04
+3.727283445e-04
3.174393204e-05
8.569575864e-04
-7.751538104e-03
-4.611774194e-02
+7.293446508e-03
+6.034442255e-02
6.552346737e-04
-2.380511335e-03
-1.067462701e+01
-2.350741365e-03
+2.640205256e-03
+1.965650264e+01
+4.614765278e-03
1.262278378e-04
4.278434726e-04
-8.076135636e+00
+1.160842456e+01
1.197862650e-04
1.219920520e-04
-6.990054017e-04
-8.575363631e-03
-8.317359097e-05
+6.887518602e-04
+1.349248112e-02
+9.153526993e-05
1.264686691e-04
-9.967953119e-05
+1.158972418e-04
2.954889490e-05
-2.604074284e-03
+3.045333989e-03
1.111154426e-04
-1.080206144e-04
-3.936678829e-02
-3.580270397e+01
-5.789259451e-03
-1.429765906e-02
-1.283811759e-01
+1.112678012e-04
+6.646970357e-02
+3.651857461e+01
+5.684778237e-03
+2.056924339e-02
+1.640256383e-01
2.406401354e-05
1.109074367e-04
4.586415637e-05
2.875190578e-04
-4.184381253e+01
-3.149111869e-03
+6.145807482e+01
+6.769308220e-03
1.205689423e-04
-5.944026444e+02
-1.090530767e-05
+1.893050334e+03
+1.837620697e-05
3.162457185e-05
-2.889084682e-01
+4.275538951e-01
3.372331588e-04
-1.822838665e-03
-4.569865461e-05
+1.210439470e-03
+7.773915841e-05
3.403294860e-03
1.037002802e-04
9.342423252e-05
-9.194945490e-03
+1.392614800e-02
5.794224579e-05
-1.211220694e-02
-5.351779301e-03
-4.735005280e-04
+1.100602562e-02
+8.098786462e-03
+5.452120018e-04
5.297818639e-05
-2.793608783e-03
+2.687162701e-03
2.111454356e-04
1.052493637e-04
1.001022281e-04
-1.022291999e-02
+2.889983775e-02
2.124345307e-04
-2.147548384e-02
-3.591431113e-02
+3.422174145e-02
+6.078556157e-02
8.545559192e-05
-5.394494559e-04
-3.654334717e-03
+1.232552350e-03
+5.043504303e-03
1.533277678e-04
4.841290358e-04
-1.102927303e+01
-9.189233874e-04
+1.087349118e+01
+2.695260027e-03
8.759710659e-05
-3.084494464e+00
+4.739978040e+00
9.196579824e-05
8.615138947e-04
-2.279674837e-03
+2.768584768e-03
5.636966215e-05
-1.504146965e-03
-9.440498178e-06
-1.593879975e-02
-6.843450104e+02
+2.526502421e-03
+1.230734634e-05
+1.585447594e-02
+8.013150417e+02
3.645507576e-04
-6.197922067e-01
-7.160839579e-06
-2.438970269e-01
+7.454997167e-01
+1.506691581e-05
+3.157773331e-01
1.855638940e-04
-3.492995711e-04
+7.758890057e-04
9.159020921e-05
-9.215050208e-05
-8.836736283e-01
+1.971048373e-04
+8.702610096e-01
1.094969626e-04
-7.121325033e-04
+1.222036142e-03
3.358423167e-05
1.990975464e-04
-4.059284100e-02
+8.222052116e-02
3.023331418e-05
-5.632274332e+01
+6.897500582e+01
1.370680176e-03
1.663634041e-04
-7.331440029e-03
+1.239144138e-02
5.606021962e-05
-7.492930718e-03
-3.952832961e-03
-6.611787759e-04
-3.964085006e-03
-1.108191715e-01
-8.372452172e+02
+6.658962046e-03
+4.786448361e-03
+1.587570422e-03
+6.942428394e-03
+2.193817914e-01
+1.971968583e+03
3.331156639e-04
-5.812814370e-03
-2.905752714e-03
-5.122997073e+00
+5.479075323e-03
+4.576948305e-03
+9.177319162e+00
2.227425090e-04
-1.993174329e-04
+3.674714767e-04
5.009051638e-05
4.396041333e-05
5.624732172e-04
-2.147982770e-03
-1.088264958e-04
-3.162793628e-03
-8.264410083e-05
-7.002437991e-05
-1.821302934e-02
+3.517133021e-03
+2.120884356e-04
+4.879984905e-03
+1.170077257e-04
+6.769365810e-05
+4.681084647e-02
2.420847429e-05
9.300965996e-05
-3.316678232e-03
+4.228455463e-03
2.015995530e-04
-4.638817698e-03
-5.589742405e-04
+1.025763498e-02
+4.346792645e-04
6.253579113e-05
-3.989014426e-05
-4.083722510e-02
-1.286046205e-01
-4.103380654e+01
-4.469280515e-02
-2.242320499e-04
-2.574949089e-03
-9.695475416e-03
-2.693375956e-01
-3.874416812e-04
-3.403625969e+00
+3.552935656e-05
+5.204347659e-02
+1.945553162e-01
+4.045492803e+01
+5.695000622e-02
+3.102237558e-04
+3.551714814e-03
+1.031667173e-02
+2.984457424e-01
+7.674684715e-04
+1.620752041e+00
2.340701579e-04
4.351172445e-04
3.683938849e-05
2.292802575e-04
2.092055144e-04
-9.691816955e-03
+1.201811359e-02
3.922663167e-05
-1.507853299e-04
+2.758228738e-04
4.084453610e-05
-1.214499766e-04
+2.231113879e-04
1.322515300e-04
4.799256400e-04
3.978661240e-03
2.408033643e-03
-7.981269812e-01
+1.100122385e+00
5.247777671e-04
-6.802070347e-04
+6.855827443e-04
4.685251235e-03
2.230147511e-04
-1.975391315e-01
-6.764331068e-04
-8.944263509e-04
+2.435478209e-01
+1.694670607e-03
+1.419328059e-03
1.424095254e-04
-1.569605692e-03
+2.617534766e-03
3.024134706e-04
-1.168621200e-02
+1.326773862e-02
2.404807692e-05
-4.774934227e-05
-2.409133530e-01
+8.454531094e-05
+4.561834062e-01
3.106341520e-05
-5.158441771e-02
-1.806913059e-04
-2.466835028e-01
+6.212133530e-02
+3.206327154e-04
+2.926545473e-01
3.221654294e-04
-1.862517855e-03
+2.294476259e-03
1.068448622e-04
3.582903541e-05
-1.378403074e+01
-1.696496493e-02
-7.330490036e-02
+1.677923890e+01
+2.530093006e-02
+8.903324176e-02
1.201779818e-04
-2.497387359e-03
-9.926517210e-03
+4.176588335e-03
+1.561121294e-02
3.097095879e-04
-7.374121444e-05
+1.219231156e-04
9.186748181e-05
-7.063310893e-04
-3.299894103e-03
+8.668219898e-04
+2.748806643e-03
2.217834849e-05
-1.753370352e+00
-6.820392351e-04
-4.574623617e-04
-9.467015272e-01
+1.696880838e+00
+8.095101404e-04
+6.260530079e-04
+1.725605439e+00
1.513306867e-04
-7.912637320e-01
-7.266432911e-04
+1.054502665e+00
+7.229628683e-04
9.177460213e-05
-8.595967140e-03
+1.495099458e-02
7.211584172e-05
4.706942545e-04
1.376640212e-04
2.440553877e-04
-1.771777774e+00
-2.993816429e-02
+2.990541482e+00
+3.388657104e-02
1.063513774e-04
-9.605898058e-03
-4.997616777e-01
-7.018079451e-05
+1.233565713e-02
+1.841023958e-01
+7.459317897e-05
6.820531667e-05
-4.324455253e-03
+5.857411531e-03
3.188534907e-05
-1.181540195e-02
-7.890335328e-02
-1.558341845e-03
+1.285698985e-02
+1.013724111e-01
+1.709197162e-03
8.648418494e-05
-5.093650822e-01
-1.257068196e-01
+3.042257665e-01
+1.359436946e-01
2.877907780e-05
-9.710601791e-03
-1.895899508e+00
-1.747842782e-04
-1.643767346e+01
-1.503327720e-02
-7.998717224e-02
+1.626032340e-02
+2.045449500e+00
+2.962628178e-04
+1.562396761e+01
+1.791751698e-02
+9.245745985e-02
1.961941091e-04
-1.197966084e-04
-8.432538822e-03
+2.032375210e-04
+8.615564056e-03
1.564417650e-04
-1.104165076e-04
-3.492593824e-02
-5.268810374e-05
+1.928898075e-04
+4.399073429e-02
+6.638009750e-05
4.208877910e-04
-2.753150323e-01
-7.671867331e-04
+2.935936282e-01
+1.557313061e-03
1.007171302e-04
-7.232281006e-05
-8.054407233e-05
+7.411282747e-05
+1.460576439e-04
4.622835124e-05
1.124397369e-02
-8.329750339e-03
+9.869194319e-03
3.939835424e-04
-1.339338845e-01
+1.823992068e-01
2.718788725e-04
-2.087915231e-01
+1.925533117e-01
1.311113939e-04
-3.703057225e-03
-8.472190889e-01
-3.973184926e-03
-4.259858807e-04
-4.955991684e-01
+4.659417328e-03
+9.525216918e-01
+4.302483195e-03
+4.320139241e-04
+8.454142930e-01
1.613745262e-03
-7.449278824e-02
+7.023262020e-02
9.155411459e-05
-3.669975421e+01
+4.439384876e+01
1.391712736e-04
-1.217904345e-03
+1.662516963e-03
1.225018228e-04
-4.973374152e-01
-8.910047246e-02
-4.281740220e+00
+7.192131697e-01
+9.832865861e-02
+4.418916140e+00
1.009490044e-04
1.126056020e-04
-1.745391728e-02
+3.127555108e-02
4.031078840e-05
-9.422534851e+01
-2.499957530e-03
-3.347956077e-04
+2.277690955e+02
+2.858199645e-03
+4.750801203e-04
1.330672854e-04
-2.364409491e-03
-1.729886479e+00
+4.305337154e-03
+1.056826941e+00
1.153862115e-04
-9.115301066e-02
-1.447338333e-03
-1.483838983e-04
+1.475071238e-01
+2.094361919e-03
+2.060443919e-04
2.395076744e-05
-6.199050078e-02
-7.192475367e-01
+1.384435834e-01
+6.984912443e-01
2.284966205e-03
-9.580048208e+00
-1.444134335e-03
-9.357761980e-06
-2.682270997e-04
-9.194777227e-04
+2.013061339e+01
+1.409493384e-03
+1.154147096e-05
+5.704092103e-04
+1.031768840e-03
1.492731445e-04
9.728002189e-05
-5.817027051e-01
+5.925576947e-01
4.465026659e-05
1.554788121e-04
9.487234600e-05
-2.658559415e-04
+4.566735763e-04
8.819347125e-05
-2.981097834e-01
+2.137614309e-01
1.357400704e-04
-2.304597983e-03
+2.644306425e-03
1.657394712e-04
-8.376224356e-05
+1.289473198e-04
2.858580657e-05
9.199637996e-05
1.679369248e-04
-6.479335731e-03
-6.748826145e-03
+6.819763478e-03
+1.507635639e-02
9.674690976e-05
-3.769921073e-02
-2.910426679e-03
-1.128340361e-01
-1.148516911e-02
-2.779645451e-05
-2.857840772e-04
+3.784273225e-02
+4.325662474e-03
+1.194047796e-01
+1.560240984e-02
+3.501047105e-05
+4.477566475e-04
9.364485617e-05
-6.854112805e-05
+6.765612266e-05
1.014902766e-04
-2.136167326e-02
+2.374748497e-02
1.837677591e-04
-7.365451542e-02
+5.388426607e-02
2.221820531e-04
7.092449200e-04
-1.348641464e-03
+1.781689599e-03
2.083932909e-04
3.108287570e-05
-1.306047713e-04
-1.091973460e-01
+1.491270794e-04
+1.376372555e-01
9.942652268e-05
-1.054487950e+01
-3.147546101e-05
+3.116777708e+01
+3.509700497e-05
3.242447220e-04
-3.865735649e-04
-1.112740643e+01
+4.695578480e-04
+1.125706122e+01
2.140845812e-04
6.978807002e-04
-2.527825602e+01
+2.865996760e+01
1.047252618e-04
-2.967538438e-03
+4.958806468e-03
2.388445112e-04
-7.039057270e-02
-4.101092200e-02
+7.820711665e-02
+5.472137551e-02
1.184780344e-04
-3.601076905e-04
+6.056265144e-04
1.328732549e-04
-2.610549275e-05
-9.448532713e-04
-1.136454418e+01
-4.886463466e-03
-3.004767189e-03
-7.746790944e-03
+4.507910200e-05
+1.195245708e-03
+1.686900960e+01
+5.481253203e-03
+3.822530087e-03
+7.815371197e-03
1.380143055e-04
3.897556644e-04
2.828249674e-05
5.472704139e-05
-7.005022215e-05
+8.937635687e-05
1.478557825e-03
2.385116251e-04
-4.160712230e-04
+5.847268973e-04
1.960994143e-04
-1.619663209e-02
-1.764157856e-02
-9.648968755e-02
-1.559444010e-01
+1.824997574e-02
+2.319719902e-02
+8.836921046e-02
+1.992049419e-01
1.134858798e-04
-6.573178825e-02
-3.696724374e-01
+7.693972466e-02
+3.744797480e-01
2.055494870e-04
-4.229822313e-04
-2.014166417e+03
+4.556798132e-04
+3.025195520e+03
1.014908151e-04
3.033721716e-04
-7.578413896e+00
-6.744505457e-04
-1.345283911e-03
+9.201889194e+00
+7.563874819e-04
+1.653001814e-03
8.586628367e-05
2.523126583e-04
2.064733756e-04
9.624989810e-05
-9.167097981e-06
-4.462010068e-05
+1.251359032e-05
+4.644515707e-05
1.219392083e-04
3.027940006e-04
1.797127066e-04
-1.507081081e-03
-1.120017338e-03
-1.165407195e-03
+1.495123795e-03
+1.184362970e-03
+1.512879674e-03
2.487129887e-05
3.009503760e-05
-1.789049583e-01
+2.813260275e-01
1.725555670e-04
1.138533877e-04
8.316585784e-04
-3.476398312e-04
-7.697746581e-04
-1.597763678e-03
-3.792148663e-04
+4.422513957e-04
+1.445288861e-03
+1.654657171e-03
+7.757008666e-04
6.765935458e-05
2.381645311e-05
9.628254541e-04
1.348445414e-04
-4.561070351e+01
-1.184704374e-01
+6.202979665e+01
+1.235840464e-01
5.937669809e-03
-5.457772782e-03
+1.167486638e-02
1.646243934e-04
4.017204340e-04
6.409337383e-05
1.389799447e-04
-7.301908760e-03
-1.168523280e-02
-7.149171403e-03
-1.332748628e-05
+1.187196546e-02
+6.228640847e-02
+2.534851087e-02
+2.415495553e-05
4.685808471e-05
-5.208380633e+02
-6.563333300e-04
-8.126825646e-02
-1.317696261e+00
+9.988379671e+02
+6.969549912e-04
+1.013424228e-01
+2.685656190e+00
9.857203656e-05
1.075250831e-04
-1.810977598e-02
+2.177161603e-02
3.587036355e-05
-1.082083064e-03
-2.223131316e-02
-2.515639127e-05
+1.148542553e-03
+2.400712049e-02
+6.899907047e-05
1.398015803e-04
1.181976743e-04
-1.889791068e-04
-2.240267616e-02
+2.655479052e-04
+3.219321405e-02
1.727266043e-04
-2.040947328e-01
+1.821838362e-01
3.202388512e-04
2.291553900e-04
-1.537168655e-04
-2.123852861e-02
-1.690160719e-04
-4.566105254e-01
-5.906280558e-04
-3.864983803e-02
-2.684952065e-06
+1.922636424e-04
+2.039132531e-02
+2.220686385e-04
+4.139781750e-01
+7.415026429e-04
+5.991160335e-02
+3.963234844e-06
2.426588460e-04
-2.347466848e-04
+3.736717365e-04
1.200221477e-04
2.188775822e-04
-1.640713607e-02
-1.190353970e-06
-1.210678673e-04
-3.836294150e-01
-1.013130741e-02
-8.626748390e-05
+2.519957680e-02
+2.007391647e-06
+1.854849231e-04
+3.916957981e-01
+1.268923323e-02
+9.254386207e-05
1.057036249e-04
-1.113607142e-04
-1.455773011e-02
-7.904216140e-02
-4.126161926e-05
-3.863644119e-05
-1.177606185e-03
+1.392461345e-04
+1.898703320e-02
+1.306680284e-01
+5.299831583e-05
+5.400435661e-05
+1.789725574e-03
6.276488790e-05
2.301082374e-04
-1.918475270e-01
+2.703534787e-01
1.403799563e-04
-9.204458719e+01
+1.052154236e+02
8.735283457e-05
3.504971858e-05
3.983875756e-05
3.887056580e-04
1.059731878e-04
-2.019453884e-02
-4.077046396e-02
-1.858923477e-01
-1.026401108e-03
+1.455184303e-02
+4.112799901e-02
+3.244380439e-01
+1.111218099e-03
9.774550447e-05
2.856320129e-04
1.393976246e-04
-1.571118601e-02
-3.414997006e-04
-7.873287028e-02
-5.471571060e-05
+2.014494959e-02
+4.928483030e-04
+1.185000417e-01
+1.006981941e-04
9.044726739e-05
-1.627383137e+01
+1.930406041e+01
9.011842931e-05
-1.193983134e-01
+1.824356853e-01
9.372020282e-04
-2.010166427e-03
+2.219221913e-03
5.475254119e-04
-1.305637443e+00
-5.659765140e-04
-1.729343878e-04
+1.365598217e+00
+7.156479747e-04
+1.927831793e-04
3.523285947e-04
1.365365067e-04
-4.962580091e-02
-6.272132890e+00
+6.247707421e-02
+8.301120172e+00
4.874269623e-05
-9.711254609e-03
-1.186838401e-04
+2.035056432e-02
+1.435387198e-04
1.320285302e-04
1.168278206e-04
-1.713761696e-02
-2.006425261e+00
+1.724032226e-02
+1.983200950e+00
1.175630987e-03
-4.905582593e-01
-3.711985830e-04
-3.654885862e-04
+5.789086174e-01
+5.796524789e-04
+4.661621632e-04
2.104361761e-04
2.905861019e-05
-1.164371319e+00
+1.046138986e+00
1.807165668e-04
-4.562666087e-01
-5.783971056e+02
-1.028493380e-01
-5.656582442e+00
+8.572833563e-01
+5.637587853e+02
+1.373916395e-01
+1.034215758e+01
2.799445354e-04
8.912654299e-05
-1.952692568e-04
-3.185389237e-04
-6.833819420e-04
-4.889944909e-03
-2.459937652e-03
+3.469420243e-04
+5.145904099e-04
+1.210784331e-03
+9.318384918e-04
+1.611599459e-03
8.486259641e-04
-2.497852261e-02
-1.323109949e-04
-9.365138301e-04
+3.001417743e-02
+1.371236146e-04
+1.653005057e-03
5.251416782e-05
1.492280481e-03
1.208002598e-04
-3.674093872e-03
-8.763305343e+02
+3.749804619e-03
+1.191217041e+03
1.128669536e-04
8.573299851e-05
-1.654856222e-03
-8.526234513e-01
+1.599829917e-03
+8.346502139e-01
5.788808569e-04
-8.424841779e-03
-1.531465346e-02
-3.853384704e-02
+9.073394978e-03
+1.510825315e-02
+4.028290777e-02
1.904171842e-04
1.165465552e-04
2.673657719e-04
-1.260432544e-03
-1.234890832e+01
-7.605918747e-04
-2.879892831e+00
+1.578725584e-03
+1.330281927e+01
+8.392838008e-04
+3.951566908e+00
2.447458150e-05
-8.747098540e-04
+1.165043634e-03
5.737757205e-05
-1.570662378e+02
+1.793172443e+02
6.840137839e-04
2.197806597e-05
1.183878359e-04
1.861971421e-04
1.224115431e-04
-1.638766387e-01
+1.940307452e-01
1.280196915e-04
-1.975347420e-02
-3.958007211e-05
-2.069532215e-02
-7.197465343e+00
-3.528763654e-04
+1.848796936e-02
+4.294058317e-05
+1.864214196e-02
+5.448653336e+00
+4.385123750e-04
2.436021109e-04
-4.377793479e-02
-3.389799602e+02
-2.512827062e-03
-8.747720953e-06
-8.952288628e-04
-2.450213765e-02
+4.771683014e-02
+1.028630584e+03
+2.801969323e-03
+1.539230605e-05
+1.110407995e-03
+3.558239321e-02
1.372504642e-04
1.332560123e-04
6.026818174e-04
5.283921018e-04
-2.546464603e-02
-1.739089575e-04
-7.860559172e-04
-3.733095695e-01
-6.086045754e-03
+2.546646486e-02
+2.014799313e-04
+1.070656444e-03
+3.316980732e-01
+7.487147537e-03
3.425584617e-05
-1.932608206e-03
+2.337541079e-03
9.333124046e-05
-1.337715003e+01
+3.032672790e+01
9.662334604e-05
4.752631315e-04
-1.974566821e-03
-2.433578458e-03
+2.128069944e-03
+3.952782124e-03
9.909672297e-05
4.241325859e-04
-4.032114663e-02
-2.564974214e-03
-7.203384985e-05
-8.724776670e-04
+4.777783105e-02
+5.098887574e-03
+7.943732510e-05
+9.251753403e-04
3.535662513e-04
-3.280086212e-02
-2.555542014e-02
-4.757904784e-04
+3.239846382e-02
+3.345028580e-02
+5.117635568e-04
5.367416626e-04
-3.009836770e-03
-2.969419669e-02
-3.227756790e-02
-1.619825811e-01
+5.515314516e-03
+2.112815316e-02
+5.158192289e-02
+2.236722203e-01
4.425280375e-05
-3.485467654e-04
-2.288792345e-04
-2.183435260e-03
+5.435814202e-04
+4.308252588e-04
+2.548190599e-03
2.400336392e-04
6.928608160e-03
-1.787711221e-01
-7.547679647e-04
-1.118937371e-03
-6.720865808e-06
-4.388652132e-04
-3.657571493e-05
-5.818823587e-04
-4.061133241e-01
-8.184400453e-03
-1.068223258e-01
+2.668027714e-01
+7.032686791e-04
+1.561893744e-03
+7.365465042e-06
+4.897105515e-04
+5.198059401e-05
+9.290295855e-04
+5.224281937e-01
+9.968155977e-03
+1.027998719e-01
6.614819248e-05
-4.178082252e-04
-5.809030842e-05
-6.048434254e-03
-8.273683285e-05
+7.000432746e-04
+2.056269794e-04
+7.950125317e-03
+1.151626262e-04
2.198042408e-04
-8.303704518e-03
-8.937504304e-05
-1.131969431e-03
+1.449231315e-02
+1.183983436e-04
+1.764074161e-03
1.578958076e-04
-8.360599724e-03
-2.311652105e-02
-5.720746867e+00
-1.315722061e+01
+1.947935057e-02
+3.406165712e-02
+9.661377440e+00
+1.755169728e+01
1.219376964e-04
-1.495910147e-03
-1.938938018e-01
-5.705720746e-03
-6.777316699e-04
+1.906904357e-03
+2.002051254e-01
+6.556462152e-03
+9.483227607e-04
2.403169849e-05
6.433086907e-05
-5.372253714e-02
+1.003598503e-01
4.586835872e-04
-1.954162659e-02
-3.043899550e-04
+2.843343555e-02
+2.917198878e-04
3.020217854e-04
5.481912482e-05
8.773343978e-05
1.410949925e-04
4.381318155e-05
-2.415321194e-03
-5.806870029e-02
-1.177242534e+02
-4.551026254e-01
-1.080746190e-02
+3.880918742e-03
+9.945238483e-02
+1.549468327e+02
+5.436736059e-01
+1.563031209e-02
2.782108612e-04
-4.457609141e-03
+5.358279879e-03
1.078515122e-04
-1.117569091e-03
-1.551246811e-05
-8.277719307e-04
-5.111759612e-02
-9.273791301e-05
+1.983652515e-03
+1.796914049e-05
+9.902334200e-04
+6.223106640e-02
+1.086055543e-04
1.384760598e-04
9.758233323e-04
-2.573766259e-03
-1.149129604e-03
-3.535248525e-04
+4.083302099e-03
+2.062488596e-03
+4.669338714e-04
2.650786679e-04
-3.302490991e+00
+4.378669086e+00
1.092584812e-04
-2.166505436e+02
+2.339702624e+02
1.362831234e-04
-7.672726236e-04
-3.680708220e-02
+9.739031355e-04
+4.592411726e-02
1.324954741e-04
-9.932984883e-04
+1.537728455e-03
2.381058177e-04
-1.513300025e+00
-3.414154052e+00
+2.331691900e+00
+4.314945734e+00
2.214112599e-04
1.376942619e-04
3.772136354e-05
-1.551767736e-03
+2.336715534e-03
3.734834880e-04
-2.576634307e-03
-4.898182833e-01
+3.166610869e-03
+6.310336616e-01
1.128912697e-04
-2.887406537e+05
+3.465271420e+05
1.127078549e-03
2.306733545e-04
-8.539681392e-02
-6.237634011e-02
+1.613670020e-01
+7.060514358e-02
2.903281039e-04
-1.262430312e-03
-6.655443780e-05
-2.354820029e-03
-2.976202888e-03
+1.314924506e-03
+1.616846899e-04
+4.416756282e-03
+9.560636812e-03
9.662931551e-05
1.362826036e-04
1.333129466e-04
-1.415746286e-03
-1.719227603e-01
-3.953878818e-04
-6.006726527e-02
-2.037725815e-02
+2.093441608e-03
+5.685471840e-01
+6.395644383e-04
+6.683261805e-02
+3.009056744e-02
1.803387945e-04
-1.908215999e-01
+1.328756287e-01
9.081510552e-05
-8.936469122e+01
+1.354592982e+02
1.109940588e-04
-4.736166519e-05
-1.160199102e+00
-4.331810459e-02
-1.204969792e+02
-2.240092847e+00
+4.839727496e-05
+1.123955916e+00
+5.987366863e-02
+1.683339935e+02
+1.357111783e+00
9.675154622e-04
-6.380640958e-06
+1.159160583e-05
3.008405535e-04
-4.122478287e-03
-3.350770389e-02
+4.600133967e-03
+6.519973714e-02
1.233796507e-03
-2.731096961e-03
+3.845681541e-03
3.467842068e-04
-4.189652234e-03
-2.222337522e+00
+4.758689812e-03
+2.581723437e+00
1.342272675e-04
2.167947253e-04
-1.922750316e+00
-1.360418353e+00
-4.361644415e-02
-4.546491916e-04
+2.202579921e+00
+1.349257947e+00
+4.419957694e-02
+7.088108288e-04
5.698557824e-04
-1.180822224e-03
-2.718283353e-03
-2.511513860e-02
-4.272071893e-01
-8.297304776e-03
-1.680620543e-03
-3.875303807e-04
+2.209207888e-03
+4.912167439e-03
+2.666105316e-02
+6.347044198e-01
+8.518559698e-03
+2.265737153e-03
+5.770553200e-04
1.414994442e-04
-5.015683975e+00
-9.328116284e-03
-1.074747344e-01
-9.646929457e-03
+5.124059233e+00
+1.888028253e-02
+1.076825861e-01
+1.363071202e-02
1.100373749e-04
-1.798215831e-02
-1.929543254e+00
-3.168529997e-02
-1.174966995e-02
-1.468769880e-03
-3.422975556e-01
-7.625528039e+02
-5.514052938e-01
+2.781188455e-02
+2.863968113e+00
+6.978592014e-02
+1.152504016e-02
+2.129534255e-03
+7.450954293e-01
+2.158583342e+03
+1.354226689e+00
7.344799521e-05
7.878350296e-05
-1.948107079e-04
+2.298771710e-04
1.160554440e-04
-1.328218764e-04
+1.622189303e-04
4.726767436e-05
-6.532976171e-03
+6.513677908e-03
1.480314514e-04
4.270215880e-05
-2.992432197e-03
+3.294636021e-03
1.787451217e-04
5.847170327e-05
-1.034872264e-03
-8.427765199e-04
+9.348831423e-04
+1.370441038e-03
1.713423908e-04
-2.186659055e-03
+2.369659728e-03
9.298278806e-05
-1.345378910e-02
-5.309233659e-02
-6.719450842e-04
-6.246156319e+00
-1.021988724e-02
-1.506317698e+01
+1.480620640e-02
+1.311580659e-01
+9.063124904e-04
+8.918106838e+00
+1.233151665e-02
+2.273164038e+01
1.507864474e-03
1.568644945e-03
1.288777111e-04
1.046182036e-04
-8.440438885e-02
-8.380922465e+00
+1.739414490e-02
+1.271476084e+01
4.428699551e-04
-1.242086201e-02
+1.557482243e-02
2.799184349e-04
-5.309072786e-05
-3.036501685e-01
-3.290245021e-03
+6.960769130e-05
+3.261195984e-01
+4.743934650e-03
3.975564077e-05
-3.397049732e-03
-7.354813478e+02
+6.476092276e-03
+1.761625596e+03
diff --git a/t/ME_data/ME_hj_mtinf_tree.dat b/t/ME_data/ME_hj_mtinf_tree.dat
index 1128daa..89eb229 100644
--- a/t/ME_data/ME_hj_mtinf_tree.dat
+++ b/t/ME_data/ME_hj_mtinf_tree.dat
@@ -1,1687 +1,1687 @@
-2.871621040e-05
+3.947136001e-05
8.482408231e-04
-5.846238075e-01
+9.689822934e-01
5.988623570e-05
-7.014683226e-03
-9.783630051e-03
-2.220322616e-01
-2.361116907e-06
+8.446122888e-03
+1.271745791e-02
+2.304480924e-01
+3.207906850e-06
1.334030960e-04
-3.842070935e-03
-1.144631395e-01
-4.783887356e+00
-1.375918212e-01
-3.161790492e+00
-1.007619707e-04
-7.759859742e-03
+5.182843289e-03
+1.330964239e-01
+7.566214894e+00
+1.695679642e-01
+2.325809259e+00
+1.785062627e-04
+1.033556129e-02
6.605786721e-04
-1.160709230e-05
-7.953919200e-02
+1.245790243e-05
+1.182232274e-01
5.011391735e-04
-4.004933637e-01
-1.400218724e+00
-3.212439991e-02
-2.206789573e-03
+5.236847530e-01
+1.341107451e+00
+2.646698011e-02
+2.220690587e-03
2.347264952e-04
1.305283685e-04
-2.714827552e-03
+3.383671521e-03
3.022266876e-05
-4.103877053e-03
-1.797507474e+02
-3.889663185e+01
-3.151837501e-02
-4.646924820e-05
+6.646092733e-03
+3.577172229e+02
+5.058748474e+01
+3.313640595e-02
+5.013274199e-05
6.515542072e-05
-3.432251747e-04
-1.217115903e-03
-1.049805445e-02
+5.380906940e-04
+1.412413662e-03
+1.459190321e-02
9.380590075e-05
9.663822340e-05
3.413360992e-04
-2.935776467e-03
+3.563272087e-03
2.309784522e-03
-5.209299245e-02
-4.761972895e+01
+6.064704476e-02
+4.308927938e+01
1.913397959e-04
-1.819047239e+00
-1.164239965e-02
-3.657921184e-01
-3.688356464e-03
-1.501002030e-01
-3.919888467e-01
+3.076539171e+00
+1.860986662e-02
+3.537372840e-01
+4.347734376e-03
+1.883917019e-01
+3.283550221e-01
9.052947966e-05
-1.350030498e-02
+1.230400704e-02
1.136000130e-04
-1.902060332e+01
-3.170821325e-04
+1.991075080e+01
+3.123051920e-04
7.299153197e-04
-1.946450289e-01
+4.086300115e-01
5.479200105e-05
-3.039287027e-03
-4.890222275e-03
-4.965725526e-03
-7.847110848e-01
-3.263716732e-02
-9.278555688e-04
+2.494901710e-03
+5.473789362e-03
+6.599367863e-03
+1.445358869e+00
+4.168644222e-02
+8.840126913e-04
2.180372682e-04
2.124625358e-04
-5.734270248e-04
+7.017176941e-04
1.297810376e-04
1.394811377e-04
1.917531823e-04
-1.385879097e-03
+2.790928772e-03
1.700787508e-04
-9.576708692e-04
+1.089691058e-03
1.502555720e-04
1.746151284e-04
5.892393268e-04
-1.692838298e-02
-1.044658601e-01
-4.616175226e-02
+1.846715735e-02
+1.251132355e-01
+5.545860559e-02
4.902133595e-05
-2.863429459e-02
+1.433762452e-02
9.552114790e-05
4.401274997e-05
-2.907851767e-02
-8.101461920e+02
-1.096836900e-02
-1.378566749e-01
-1.461426923e+03
+2.340795316e-02
+1.165303774e+03
+1.678185317e-02
+1.391862765e-01
+1.031835461e+04
1.876159987e-04
2.714073765e-05
1.557931548e-04
-1.441659515e+01
+1.658244394e+01
3.771116715e-04
9.839084423e-05
-1.968729945e-04
-5.793249343e-05
-8.601260902e-05
+1.005398717e-03
+8.024719775e-05
+1.739854577e-04
2.888357058e-05
1.927159961e-04
1.802526169e-04
-2.014986100e-02
-1.757708284e-02
+2.791518844e-02
+3.100644802e-02
1.027836599e-04
-6.814214678e-04
+7.131621280e-04
1.225325087e-04
9.717915665e-05
1.739331196e-03
5.393795209e-05
-2.832080793e-03
-9.941810795e-04
-4.888030249e-01
-1.266339619e+00
-2.597834417e-01
-3.194351186e-03
+3.980467639e-03
+1.956688213e-03
+7.207768020e-01
+1.531019089e+00
+3.583970892e-01
+5.190548971e-03
1.456261381e-04
-4.549094931e-01
-1.696311727e-03
+6.003092827e-01
+1.903940112e-03
4.378514713e-05
1.040920177e-04
-1.349020372e-01
-3.482573286e-02
-1.521613202e-02
-2.452542675e-03
+2.919310853e-01
+5.383964712e-02
+1.194977127e-02
+4.109805485e-03
4.464221451e-03
6.876725809e-04
-9.867422579e-04
+2.044351274e-03
7.722410541e-05
-4.337347790e-04
+9.948851727e-04
9.871609144e-05
-7.572718976e-03
-7.542365830e-02
-1.235225550e-01
+8.825940833e-03
+1.158254342e-01
+1.310424182e-01
7.919446129e-04
-2.051909619e-02
+3.755773237e-02
1.109827264e-04
1.507178654e-04
3.306119738e-04
-7.001504061e-03
+1.066619725e-02
8.473900624e-04
2.307042167e-04
-2.342978463e+00
+4.030023598e+00
5.505701496e-05
1.234375421e-04
-9.765107993e-05
+1.137480249e-04
1.780959600e-02
-1.939612463e-03
-1.493360697e+01
-6.368261151e-01
+1.950123796e-03
+3.000784380e+01
+6.274267339e-01
3.297089198e-05
2.736355553e-04
-1.928222140e-03
+2.585194177e-03
1.038945515e-04
-9.469907317e-04
-1.002215204e-02
+1.484963947e-03
+8.343466891e-03
2.706103208e-04
-8.352600098e+01
+1.164846867e+02
1.290905962e-04
-2.651777350e+03
-1.003095022e-03
-3.341114654e-05
+3.217125899e+03
+1.101443946e-03
+4.093615510e-05
9.667039166e-05
-1.203184457e-02
+1.445079433e-02
8.873279099e-05
-7.432487545e-06
+9.657148907e-06
4.201719529e-04
-3.786742225e-05
-1.177513356e+01
-1.055497515e-03
+3.472630377e-05
+3.171701320e+01
+2.517499177e-03
8.586239565e-04
1.376075171e-04
5.900956196e-05
-3.304188772e-05
-1.050272127e-04
-5.763393059e-02
-4.681629612e-02
-6.712866542e-02
+3.124272735e-05
+1.000135217e-04
+6.493574515e-02
+4.702470933e-02
+1.029774031e-01
1.657812293e-04
-1.728793055e-03
+3.037304752e-03
4.005356031e-05
1.479487238e-03
4.817816160e-05
2.101410030e-04
-1.072215176e-04
-5.482689102e-05
+1.871737489e-04
+5.994198518e-05
2.231706393e-04
2.515293033e-04
4.914222198e-04
1.034856519e-03
-1.124050542e-02
+1.352556219e-02
7.421883311e-04
-2.919319876e-02
+3.927213269e-02
3.246703871e-04
-2.783613990e-03
+2.263128837e-03
2.115618964e-04
1.216662663e-04
-4.525415188e-05
-1.902297367e-03
-4.554684564e-03
-8.099000781e-04
-1.196743259e-04
-3.004580589e-03
-9.553216330e-03
-1.724521051e-01
-8.869850898e-03
-3.692618107e-03
-2.459522349e-03
-1.580477081e-03
-3.505919039e-02
+5.777398738e-05
+2.475307855e-03
+4.923220943e-03
+7.576426168e-04
+1.436758635e-04
+4.585893560e-03
+1.005223928e-02
+1.803143016e-01
+1.012316756e-02
+4.600940012e-03
+2.419596400e-03
+2.790009844e-03
+4.033041457e-02
3.170181064e-05
1.259242657e-04
-6.776648362e-03
-6.187117019e-02
-1.879957822e-04
-6.727464819e-01
-1.608863055e-01
-1.544718909e-03
-4.493014166e-02
-1.482432841e-02
-2.148927010e-02
-5.986639961e+00
+9.635288808e-03
+6.561160549e-02
+2.584421133e-04
+9.386568602e-01
+3.895074898e-01
+1.643254997e-03
+3.405250244e-02
+1.869700808e-02
+1.958594391e-02
+6.615771545e+00
5.339502147e-04
1.232359181e-04
-3.433103978e-03
+5.444285436e-03
2.979382847e-05
-2.740034631e-06
-2.246998964e-03
-9.597159142e-03
-1.944167731e+00
+4.384094462e-06
+3.326785394e-03
+1.694778302e-02
+2.586736821e+00
1.229674568e-03
-2.577705993e-03
-1.111966572e+02
-5.136773930e-03
-4.885700167e-03
-5.756036963e-05
-5.221778765e-02
-1.108375479e-03
-4.040311450e-02
-1.874692760e-03
-2.588199721e-01
+3.635380195e-03
+2.917830116e+02
+5.351864085e-03
+4.773050474e-03
+8.823891036e-05
+7.662353558e-02
+1.191409250e-03
+2.854715407e-02
+2.515737679e-03
+2.693023874e-01
2.626953532e-04
5.312533538e-03
-5.036208285e-05
+6.561565358e-05
4.040166584e-02
1.166592334e-03
-5.644166932e-05
+6.021953017e-05
3.328635288e-04
-1.543232966e-02
-6.222533975e-04
+3.036588937e-02
+9.463580477e-04
8.939017244e-05
-5.108426530e-02
+1.065403093e-01
1.103007744e-03
-2.183731990e+00
+2.914732491e+00
3.641419834e-05
-1.045490671e-03
-5.116683973e-01
-3.521098226e-03
+1.726682535e-03
+6.319197542e-01
+4.099073847e-03
1.862302741e-04
2.905283845e-04
1.205702805e-03
2.067519902e-04
-5.829791562e-04
-8.446833667e-04
-8.235707448e-04
+8.791824243e-04
+1.460085528e-03
+9.572755350e-04
2.956949293e-05
-3.867207478e-04
-3.053371645e-03
-1.923238131e+00
-9.469954280e+00
-8.859260855e-01
-1.089902859e+00
-9.803171060e+02
-7.151818346e-05
-2.041010172e-01
+6.100636842e-04
+4.123782453e-03
+3.698411235e+00
+1.348262335e+01
+9.225540310e-01
+1.627061950e+00
+1.440716160e+03
+7.801057110e-05
+2.278436587e-01
2.782398916e-04
-7.949830859e+02
+1.891676732e+03
1.058104006e-04
-1.253106906e+00
-2.764775107e+00
-4.208502361e-04
-6.936094730e-04
+1.663942464e+00
+3.074569608e+00
+4.768340617e-04
+7.251049223e-04
2.737991525e-04
-3.496899910e-03
-1.116340003e-02
-8.550902474e-05
-2.524829940e-02
+5.885345255e-03
+1.915574777e-02
+6.923616955e-05
+2.668744801e-02
9.726814715e-05
-1.131920779e+00
-9.370423514e-03
-1.446426723e-04
+1.206502679e+00
+1.251008662e-02
+1.381292379e-04
1.591930536e-04
-2.600663846e+01
-8.602533850e-02
-3.720873183e-03
-3.355267543e-08
-2.018686886e-04
-6.004792326e-01
-3.689224984e-03
-1.908483386e-02
+3.367550622e+01
+8.613876796e-02
+9.113234595e-03
+5.900837727e-08
+2.778703296e-04
+1.172695854e+00
+4.703329861e-03
+2.767739801e-02
2.611738866e-04
-1.535816131e-03
-6.373760508e-03
-1.977717393e-04
-5.806371076e-02
-8.207469956e-01
+2.112619480e-03
+4.916979659e-03
+3.307969583e-04
+1.357365891e-01
+1.344902307e+00
2.380320027e-04
-1.001560086e-01
+1.377951399e-01
6.536817951e-05
-1.668340691e-04
-1.016798326e+01
-1.146379405e+01
+2.006683511e-04
+7.029409106e+00
+1.140311054e+01
6.355386528e-04
4.498508259e-04
-9.029659661e-06
-7.449343680e-04
-1.233063424e-02
-5.566619728e-03
-3.535727524e-02
+1.021430000e-05
+8.066226099e-04
+7.810892043e-03
+6.903941626e-03
+3.099318639e-02
6.815641127e-05
-9.223464887e-03
+8.927590793e-03
9.878961729e-04
-3.644894378e-01
-2.765439774e-02
-1.301667780e-02
-1.571418602e-01
+3.900684131e-01
+2.770963529e-02
+1.396382976e-02
+2.462139940e-01
6.232970275e-05
1.881428423e-04
6.272730742e-04
-1.423938413e-04
-1.219911220e-01
-1.584904132e-04
-8.946637422e-04
-4.157511979e-03
-1.019538910e-02
+1.380099598e-04
+9.386226266e-02
+1.989383047e-04
+1.530019099e-03
+9.217599481e-03
+1.062659187e-02
2.101190202e-04
-1.702191735e+00
-8.905552576e-04
+1.597019584e+00
+1.290864342e-03
3.581973671e-03
-3.327079623e-02
-9.000958181e-03
-3.990804428e-03
-5.417088623e-01
-6.437551097e-05
-1.435000287e+00
-6.579567819e-05
-1.112393714e-02
+4.566552191e-02
+1.073094212e-02
+4.781260996e-03
+9.298717874e-01
+6.909792387e-05
+1.599811732e+00
+5.381573809e-05
+1.245474842e-02
4.855437902e-04
-6.294519117e-03
-8.947245709e-02
-3.690838130e+00
-1.059022762e-04
-3.657007907e-04
+7.133707231e-03
+9.670544492e-02
+7.786290128e+00
+1.210684250e-04
+4.449039628e-04
1.718543474e-04
-3.513509992e-03
-4.226360533e-03
-6.851009387e-02
-1.978115476e-02
-6.097660895e-05
+4.155284937e-03
+5.101253198e-03
+6.559617535e-02
+3.388933582e-02
+9.152865224e-05
5.679697897e-04
7.641055953e-04
-2.841296010e-02
-1.790049300e-04
-8.768074100e-01
-9.526538364e-01
-1.933893198e-02
-5.542762512e-04
-6.345006245e-04
-2.200252186e-02
-2.331313011e-01
+1.418213324e-02
+3.036859689e-04
+1.650700211e+00
+1.059415377e+00
+3.251501060e-02
+5.350765973e-04
+7.696668519e-04
+3.523502248e-02
+2.498263158e-01
2.631971077e-04
1.658017381e-03
-4.403155586e-03
-3.533254016e-05
-8.024784206e-02
-9.148157105e-05
-3.741139365e-04
+5.297872891e-03
+4.330540646e-05
+1.004407836e-01
+9.677657277e-05
+6.658373344e-04
1.171603196e-04
-2.224415050e+04
-1.173750747e-03
+3.965670943e+04
+1.081531499e-03
1.963644915e-04
-3.179547270e-05
-1.315807006e-02
-1.087033272e+00
+4.966365048e-05
+2.025069638e-02
+2.087386721e+00
4.143379301e-04
-5.377037092e-02
-2.416197264e-02
+6.259092709e-02
+4.596119080e-02
8.943591274e-05
-7.696142965e-02
+8.181023441e-02
1.138683610e-03
1.188792530e-04
7.755760501e-04
-2.881016346e-03
-8.045940781e-05
-5.281199466e-03
-4.971375302e-03
-4.140029648e+00
-1.791036690e-01
-5.779100902e-01
-6.402048820e-01
-1.419900800e-04
+1.508819816e-03
+1.103586131e-04
+1.717575726e-02
+5.227280509e-03
+6.134689970e+00
+2.888306381e-01
+5.248941176e-01
+8.222291553e-01
+1.786073923e-04
2.713089085e-04
-1.707029605e-03
+1.744902511e-03
5.053366118e-05
-1.870291582e-02
-1.135111200e+00
-4.026937550e-05
-3.118212152e-03
-4.669560508e-02
+2.404547559e-02
+1.450773588e+00
+4.621203397e-05
+4.500926651e-03
+5.500207316e-02
2.352443866e-05
-9.276080551e+02
+3.254509397e+03
1.336982087e-04
3.228200101e-04
-2.316165102e-03
+4.189606131e-03
2.292160958e-04
6.669587495e-04
-8.367454825e-05
+9.159119803e-05
2.547175457e-05
3.453386366e-05
1.816099897e-03
3.500016670e-04
-2.567346064e-05
-2.458856896e-02
-6.427892550e-03
-1.686158150e-03
-2.836974102e-06
+2.468303405e-05
+2.615042003e-02
+8.099384694e-03
+1.942114761e-03
+3.770456029e-06
2.616569963e-05
-1.445419008e-02
+1.791306442e-02
9.485213549e-05
-1.596280284e-01
-1.245274971e-01
-7.988411072e-05
+1.981170402e-01
+2.337356353e-01
+8.929608070e-05
4.303221527e-04
4.933341078e-04
-5.216222128e-02
+5.325531975e-02
1.134928927e-04
1.330103721e-04
2.307216630e-04
-2.473293538e-02
+3.946042704e-02
6.542994242e-05
-1.036991002e-01
+1.816767364e-01
4.175692348e-05
-5.755198815e-03
-3.152429795e-01
+1.394906424e-02
+3.655137728e-01
1.455139863e-04
-6.840438795e-02
-3.202570061e-05
-9.336878590e+02
-1.223843577e-02
+4.469774281e-02
+1.048134439e-04
+1.119841336e+03
+1.604520304e-02
6.208854430e-05
-1.353353341e-05
+1.690942933e-05
7.649460685e-04
1.917789315e-04
8.490924347e-05
-5.602795032e-02
+5.818768187e-02
1.496703330e-03
-2.521458969e-01
+2.680963591e-01
5.176095505e-05
-5.886185913e-04
+7.084859031e-04
2.439926475e-05
-1.680800925e+01
-1.711237046e-02
+1.796771138e+01
+3.186602594e-02
1.194902425e-04
1.007485262e-03
-5.500865886e-03
+1.545550851e-02
2.119606052e-04
-8.914436799e-02
-3.652943192e-02
-5.703056887e-03
+1.177958558e-01
+5.082857215e-02
+9.397989268e-03
1.057173298e-04
7.823616238e-05
-1.267278149e-03
+1.816561151e-03
1.929756192e-04
-3.166595110e-05
+4.663985847e-05
6.225502140e-04
9.012630657e-05
2.341330415e-04
1.092838301e-04
-4.094508416e+05
-1.912472942e-03
-5.495923061e-04
-5.498501786e-04
-4.784766978e+00
+5.851907951e+05
+2.378765378e-03
+6.090931739e-04
+6.226794422e-04
+3.912342517e+00
6.102727938e-04
-5.152849142e-03
-1.166974491e-04
+8.362462197e-03
+1.096265937e-04
3.514669206e-05
-8.869475237e-05
-2.258292101e-03
-2.177036550e-03
-1.404087239e-04
+1.279938868e-04
+2.861217282e-03
+3.604938459e-03
+1.764282859e-04
8.772305840e-04
1.319691825e-04
-4.115231584e-03
-2.707169941e-04
-5.686891424e-06
-6.218721056e-04
-8.286804080e-03
-3.247837111e-01
+5.020519225e-03
+2.950581538e-04
+7.954090040e-06
+6.626754108e-04
+9.843859826e-03
+3.198938144e-01
3.412238220e-04
-2.278520098e-01
-6.628649037e-01
-1.553168849e-03
+4.218483291e-01
+9.844488238e-01
+2.373219066e-03
1.121006795e-04
-1.882511943e-01
-1.284783626e-02
-3.125848034e-04
-9.919746150e-04
-2.410035966e+01
-1.035488378e-02
+3.514387822e-01
+1.712372258e-02
+3.012040903e-04
+1.626145818e-03
+3.224765036e+01
+1.321548453e-02
5.814988234e-04
-7.849522937e-02
-2.942937664e-04
+8.694805036e-02
+1.555050517e-03
2.211932389e-04
1.317148437e-04
8.853379631e-05
1.698626184e-03
-2.141321086e-02
-1.091874754e-01
-2.374410203e-05
+2.383621661e-02
+1.250908574e-01
+4.607001141e-05
1.156768617e-04
1.345628080e-03
1.351791830e-04
1.048692002e-03
7.659984144e-04
-3.553305017e-01
-3.990180365e-03
-5.811965001e-04
+4.321990224e-01
+6.920545259e-03
+1.553907700e-03
1.949543385e-04
2.487570187e-04
-2.173457617e-03
-1.998119461e-01
-8.962259803e-04
+3.033198409e-03
+7.494139601e-02
+9.150024849e-04
1.249095297e-04
3.048158426e-05
1.358866081e-04
-2.170187812e-02
+3.240059607e-02
1.982695526e-04
-1.860292569e-04
-5.021524957e+00
-1.130111618e-02
+3.093982354e-04
+5.982986548e+00
+1.390180408e-02
2.026047785e-04
-2.289825031e-01
-9.033258846e-02
-5.926377080e-01
-4.109211591e-04
-6.714548738e-04
+2.576448263e-01
+1.173564834e-01
+6.774965442e-01
+4.984838803e-04
+4.032830850e-04
1.326690907e-04
-1.031654115e-03
-9.427710638e-04
-5.771859021e-05
-5.911064105e-02
-1.669111905e-03
-5.306384330e-04
-4.641347883e-04
-1.071530974e-02
+1.179324240e-03
+1.157668104e-03
+6.552995512e-05
+6.790456737e-02
+2.208678536e-03
+6.618892359e-04
+5.158266056e-04
+1.137075062e-02
3.585231072e-04
1.010859098e-04
-2.569313920e-02
-2.047013208e-04
+3.057593004e-02
+3.210877403e-04
1.196029848e-04
1.130078533e-04
-2.181121646e-02
+2.189272915e-02
5.462924040e-04
-6.587633728e-02
-1.733860216e+01
+1.634716838e-01
+3.047855166e+01
7.674648592e-03
2.861325223e-05
-4.796145119e-04
-6.817902507e-03
-9.331736321e-03
-3.105489269e-03
-5.711304170e-02
+5.443979447e-04
+9.758788874e-03
+7.054397234e-03
+3.450066499e-03
+7.230228071e-02
2.218007689e-04
-9.764189030e-03
-1.409540098e-03
+1.237449659e-02
+1.591950365e-03
4.122424817e-05
-1.953220833e-01
+4.560790476e-01
3.002934658e-04
1.576701104e-04
2.964544045e-04
-8.278459048e-02
-1.082051028e-03
-5.395325322e-01
-1.604957529e-02
-1.535098430e+02
-3.296149554e-01
+7.136906011e-02
+1.179810399e-03
+1.214326816e+00
+1.441944030e-02
+1.828712525e+02
+4.094018486e-01
3.270375437e-03
-5.985706382e-05
-1.026847845e+00
+1.147552190e-04
+1.003988486e+00
2.862351014e-03
-7.919553910e-05
-4.049900495e-02
-2.869433527e-05
-4.510098401e-03
-6.189769829e+02
-2.042106089e-04
-1.270838036e-01
+9.789737577e-05
+4.856298187e-02
+5.169504095e-05
+4.707973738e-03
+7.562437758e+02
+2.465662229e-04
+7.040430710e-02
1.304682329e-04
1.272381905e-03
-1.923776589e-01
-1.355099900e-01
-2.512758955e-02
+2.530262954e-01
+1.498934386e-01
+5.655913324e-02
3.442773958e-03
-4.112446359e-02
-1.459364811e+01
-7.428580152e-04
-2.196312559e-02
+3.711256089e-02
+2.020911854e+01
+1.021569055e-03
+2.246528272e-02
9.105385295e-05
3.196550800e-04
-8.083245636e-03
-3.383875629e-03
+9.164491565e-03
+5.230933846e-03
3.887054972e-04
-5.413630645e-02
-7.264413158e-04
-8.866822356e-03
+8.461705430e-02
+1.103792526e-03
+8.385067753e-03
2.389381890e-04
1.145087663e-04
-6.891563721e+00
-2.344741339e-04
+6.899498103e+00
+3.605011030e-04
1.998781400e-04
-2.662263915e-03
+2.417026894e-03
2.497410143e-04
7.865518238e-04
-1.818306253e-03
-4.543940224e-03
-3.051452523e-02
-5.820780618e-03
+5.156120038e-03
+5.554783917e-03
+3.570422020e-02
+1.019052092e-02
9.131317435e-05
-9.346455075e-05
-6.464107824e-02
+9.681180254e-05
+9.491654073e-02
4.234930999e-05
-8.181437576e-01
+8.606166829e-01
5.104899637e-05
1.031686219e-04
-4.654809655e-04
+7.973790004e-04
1.538111920e-04
-6.510364855e-03
+1.787794295e-02
5.683088536e-04
-1.478985853e+00
+6.466725988e-01
1.368665343e-04
1.327708143e-04
-1.951624847e+02
+3.283445672e+02
1.016227822e-04
-2.093912937e-02
-7.307508218e-05
-4.494030417e-02
-3.153164639e-03
-1.122171130e-02
+3.735549537e-02
+1.441264428e-04
+3.668197064e-02
+3.739824157e-03
+1.621539013e-02
2.314086783e-04
-1.302514948e-03
-5.082906567e-04
-1.025084023e-01
+3.008122843e-03
+7.135072862e-04
+1.449524550e-01
2.429151940e-04
-1.713630185e-02
-1.264720922e-02
+2.682284113e-02
+1.493835261e-02
1.443909390e-04
-9.064245161e+02
-4.422146552e-01
+8.956885711e+02
+5.343474551e-01
1.967070025e-03
-3.581265453e-03
+3.809517182e-03
4.082949409e-05
3.325070512e-04
1.980349940e-04
-1.134886339e-01
-3.107474757e-04
-1.636172778e-05
-2.428851195e-02
-4.850016384e-04
-1.333120106e-04
+1.781725043e-01
+4.076740371e-04
+2.194331247e-05
+2.569106614e-02
+1.913846148e-03
+2.124226909e-04
1.084252329e-03
-6.247614236e-02
-7.554038445e-02
+4.821036816e-01
+5.467595889e-02
1.270852312e-04
2.363608534e-04
1.081187931e-04
5.866428338e-05
-2.171492179e-01
-4.179984558e-06
-9.981449116e-06
-4.239882478e-04
+2.385052937e-01
+6.059095072e-06
+8.927751222e-06
+8.669406518e-04
1.107651578e-04
-7.905073740e-02
+9.653433518e-02
3.312004292e-04
-2.156379988e-06
-3.848264728e-03
-1.746611611e-01
+3.003099146e-06
+4.870015509e-03
+1.747587078e-01
2.641679656e-03
1.659422981e-04
2.574609938e-05
-1.201459062e+01
+1.250838576e+01
1.028823285e-04
4.251506937e-05
3.584679392e-04
9.198070248e-05
4.757957034e-04
9.944297030e-05
1.233041524e-04
-4.409146610e-06
-1.792428620e-03
-2.490685334e-02
-6.841996524e-04
+5.749407062e-06
+1.968858341e-03
+3.445556547e-02
+7.987123447e-04
8.689492733e-04
-1.727230304e-04
+3.914933837e-04
1.603005891e-04
-4.189013541e-03
+5.871399892e-03
9.471483797e-05
1.325691700e-04
-2.608969755e-02
-1.391776254e-02
+2.723168675e-02
+2.523964708e-02
2.717944127e-05
-1.922170820e-03
-1.890448389e-02
+2.318539034e-03
+3.575611249e-02
4.817361202e-05
5.597543563e-04
5.366165893e-05
4.632967058e-04
8.528760092e-04
-2.505664044e-03
+2.942750359e-03
3.008247068e-04
-5.391035472e-05
+7.159927468e-05
1.302288887e-04
2.216628194e-05
1.319354316e-04
3.166257907e-03
-3.199295076e-02
-1.494842120e-03
+3.273549296e-02
+1.647996539e-03
1.593662014e-04
-2.069242990e+01
-1.262043143e+01
-3.222022229e-02
-1.206233775e-03
-3.225092367e+00
-2.350265160e-03
+2.297013169e+01
+5.299191122e+01
+5.137649183e-02
+8.614909419e-04
+4.952759987e+00
+2.562264415e-03
1.106338670e-04
-9.228687453e-03
-6.859527130e-01
+1.424695171e-02
+1.000100331e+00
2.813297748e-05
-5.720327812e-03
+6.875581963e-03
4.438349045e-05
3.511888524e-04
1.038017069e-04
-5.655616467e-01
+9.405450163e-01
4.047400869e-05
-7.213189813e-04
-6.860719410e-03
-3.574795777e-01
+7.213113810e-04
+1.002126570e-02
+5.323391042e-01
1.556031343e-04
-1.358058173e-02
+1.149758390e-02
2.104797085e-04
-3.283774555e-03
+7.331162536e-03
1.106890700e-04
-1.023043041e-03
+9.647730665e-04
5.373465517e-05
5.531040757e-05
1.201016909e-04
2.677576910e-04
2.520796301e-03
2.199549814e-04
-1.164021173e-01
+2.423652432e-01
4.136377234e-03
-2.118703492e-02
+2.834207578e-02
1.940927696e-04
3.003327096e-04
5.048927857e-04
5.989765438e-04
-1.361352249e-04
-1.986766459e-01
-7.791222955e-04
-1.862044196e-03
-4.140341139e-04
-2.589913228e-02
-3.012386329e-03
-1.267588949e-05
-3.486823546e-05
-1.834751424e-03
+2.094642026e-04
+5.046612380e-01
+1.290600868e-03
+1.703600730e-03
+9.117635556e-04
+4.553267094e-02
+5.152710599e-03
+1.716877824e-05
+4.832837047e-05
+1.914904944e-03
2.485781756e-03
5.532431568e-04
5.730896738e-05
-2.485613048e-03
-4.242278650e+00
+2.768099954e-03
+5.928267852e+00
1.138212266e-04
-1.902086234e-04
+2.287261212e-04
8.423434364e-04
-7.501294127e-07
+1.159247424e-06
2.679695387e-04
3.152383817e-05
6.501731542e-04
-5.037215464e-06
-2.216972183e-02
-2.601286503e-02
-3.924094654e-03
+7.765385173e-06
+9.637685442e-03
+1.982032973e-02
+4.051507352e-03
1.744759920e-04
1.424992887e-04
2.699062923e-05
1.434003696e-04
1.045161675e-04
-1.396551777e-02
-6.408078722e+00
+1.803761832e-02
+8.673049071e+00
9.075391337e-05
-1.044170826e-01
-9.561453144e-04
-3.974321284e-04
-1.076990211e-01
-7.624488530e-01
-1.580106193e-03
-1.396154765e-01
+1.036014533e-01
+1.000757362e-03
+5.616211401e-04
+1.120236811e-01
+1.645607081e+00
+2.122644940e-03
+1.128689840e-01
5.808781233e-05
-9.906060242e-04
-2.676244222e-04
+1.210279662e-03
+4.039463252e-04
1.515269251e-04
-1.153964521e+01
-8.379271694e-02
+3.643165484e+01
+1.294585437e-01
9.718844799e-04
-3.189248664e-04
-8.138172006e-05
-1.247302821e+01
+3.067088256e-04
+1.010342289e-04
+2.150838047e+01
1.625049606e-04
2.563102833e-05
-3.251854281e+02
+5.356443123e+02
9.427956565e-04
2.195925180e-05
1.922535030e-04
-2.002403342e-02
+3.148828264e-02
4.758650505e-04
1.029789005e-04
-1.130907480e-04
-6.274699539e+01
-3.783596417e-04
-1.140234316e-04
+1.159790835e-04
+7.730293718e+01
+4.966437752e-04
+1.423776181e-04
3.662430916e-04
-9.803718163e-06
-8.198453728e-03
-3.014299376e+00
-4.419093638e-02
-1.637034568e-04
-3.534178819e-02
-8.377220735e-04
-2.980425735e-04
-7.485358913e+00
-1.360939085e-02
-1.257388725e-04
-5.088024336e-02
-7.335760447e-03
-3.242040864e-04
-1.745443939e-03
+3.257291451e-05
+8.251711721e-03
+3.005243394e+00
+6.814238869e-02
+3.328697723e-04
+5.547196510e-02
+1.161072112e-03
+3.420041926e-04
+8.848007978e+00
+1.630639158e-02
+1.343624327e-04
+8.963372283e-02
+6.910195059e-03
+4.637211734e-04
+6.636063866e-03
3.441649445e-04
1.082261010e-04
8.976760558e-05
-2.185970683e-05
-5.199705025e+04
-6.076884136e-06
-4.658128863e-04
+2.390557406e-05
+8.732609363e+04
+1.145346699e-05
+8.692792876e-04
9.058420494e-05
2.731067905e-04
-1.696006045e-03
+1.855341547e-03
2.389963331e-03
-2.374201560e-04
-3.303100692e-02
-1.230147393e+00
-1.115161450e-01
-1.011034445e+01
-6.288330417e+00
+3.403128188e-04
+4.671369583e-02
+4.214256298e+00
+1.109394250e-01
+1.350013750e+01
+6.912253453e+00
1.079748170e-04
1.540430218e-04
1.316290546e-04
-4.764982212e-02
-6.640030175e-05
+6.978581145e-02
+7.704076267e-05
3.094400442e-05
-9.912221058e-02
+9.923977804e-02
1.727801911e-04
-3.265390437e-01
+3.856723191e-01
9.794647714e-05
1.445379016e-04
-1.013874798e-03
-1.407671564e-02
-2.073172042e-01
-1.997505321e+02
+2.452115731e-03
+1.493076962e-02
+2.123915247e-01
+2.619486462e+02
2.431747813e-04
-5.786980574e-01
-1.416413057e-01
+7.631532558e-01
+2.334774826e-01
1.079438153e-04
-2.077193169e-02
-1.286551785e-02
-2.733483086e-03
+2.090143373e-02
+1.295052375e-02
+3.158552415e-03
1.344822840e-02
-1.269017227e-02
+1.340827152e-02
8.586744736e-04
-1.608607035e-02
-9.978918370e+00
+2.073597812e-02
+1.719243480e+01
1.152699232e-04
-2.060869926e-04
+2.153339617e-04
3.139393623e-04
-1.265479087e-02
-1.513568455e-02
-4.569403325e-02
-1.159712361e-03
-3.006756632e+00
-5.396471457e+05
+1.381792155e-02
+1.601722043e-02
+6.864656959e-02
+1.566626516e-03
+3.234663984e+00
+6.652586961e+05
1.540278565e-04
-1.587167845e-02
-5.602024240e+01
-8.122954791e-04
-1.935432592e-03
+1.834656290e-02
+5.506458899e+01
+1.035932912e-03
+2.939275099e-03
3.330573999e-04
-5.616854495e-03
-6.871050615e-03
-1.848802593e-01
-5.608218540e-03
+5.308613490e-03
+1.069000628e-02
+2.376392901e-01
+1.456295048e-02
1.199456761e-04
1.039532170e-04
-2.671960451e-03
-5.907318331e-03
+6.007943358e-03
+1.002445430e-02
1.021441490e-04
3.069081287e-04
-6.033182921e-04
+4.439892109e-04
3.474698565e-05
2.418041921e-03
-7.684174962e-03
-4.417459132e-02
+7.230064317e-03
+5.780183705e-02
6.746325611e-04
-2.291458777e-03
-1.025603629e+01
-2.456562218e-03
+2.541437807e-03
+1.888570011e+01
+4.822503314e-03
1.554257428e-04
2.332727301e-03
-8.019041615e+00
+1.152635912e+01
1.161014511e-04
1.190187747e-04
-6.749828518e-04
-8.559415906e-03
-8.373436386e-05
+6.650816912e-04
+1.346738896e-02
+9.215241892e-05
1.230360174e-04
-9.914519133e-05
+1.152759656e-04
2.851505832e-05
-2.728166362e-03
+3.190453438e-03
1.098319839e-04
-1.466762208e-04
-3.856361878e-02
-4.423268227e+01
-6.122216919e-03
-1.366452645e-02
-1.277559269e-01
+1.510854263e-04
+6.511357467e-02
+4.511710928e+01
+6.011726681e-03
+1.965839086e-02
+1.632267917e-01
2.439572283e-05
1.603293733e-04
5.646741069e-05
4.566728266e-04
-4.000074919e+01
-3.048770004e-03
+5.875107663e+01
+6.553614069e-03
1.158332019e-04
-5.744887242e+02
-1.060120461e-05
+1.829628589e+03
+1.786377202e-05
3.157310874e-05
-3.683685908e-01
+5.451464499e-01
3.747626910e-04
-1.130073796e-01
-4.470034868e-05
+7.504152470e-02
+7.604091449e-05
3.668196229e-03
1.025185058e-04
9.273809105e-05
-8.895001350e-03
+1.347186945e-02
5.672343727e-05
-1.361492512e-02
-5.138674152e-03
-4.738976273e-04
+1.237150384e-02
+7.776296876e-03
+5.456692417e-04
7.010059951e-05
-2.673582997e-03
+2.571710310e-03
2.518096953e-04
1.084864113e-04
1.027172047e-04
-9.838708293e-03
+2.781368469e-02
2.054786108e-04
-2.060256447e-02
-3.492343089e-02
+3.283072176e-02
+5.910848049e-02
8.136267604e-05
-5.149454269e-04
-3.484764696e-03
+1.176564716e-03
+4.809473434e-03
1.502710585e-04
4.709319215e-04
-1.122120671e+01
-9.098326426e-04
+1.106271391e+01
+2.668596301e-03
8.932765053e-05
-2.969591984e+00
+4.563406082e+00
9.128053176e-05
8.771873115e-04
-2.376060416e-03
+2.885641658e-03
5.417083157e-05
-1.432145602e-03
-9.110855355e-06
-1.566801597e-02
-6.492450642e+02
+2.405562366e-03
+1.187759906e-05
+1.558512473e-02
+7.602157214e+02
3.729195815e-04
-6.158840098e-01
-7.026375336e-06
-2.543774151e-01
+7.407988514e-01
+1.478399348e-05
+3.293464573e-01
2.121603044e-04
-3.378433866e-04
+7.504417155e-04
9.126491126e-05
-9.137541887e-05
-8.435901169e-01
+1.954469771e-04
+8.307858957e-01
1.111109380e-04
-7.138397931e-04
+1.224965892e-03
3.412513552e-05
3.135274841e-04
-4.412761458e-02
+8.938018081e-02
2.911681023e-05
-5.725200571e+01
+7.011301642e+01
1.312509812e-03
1.613642790e-04
-7.019457135e-03
+1.186413464e-02
5.422531174e-05
-1.253986917e-02
-3.787166231e-03
-6.392732154e-04
-4.326425777e-03
-1.056906038e-01
-8.260231372e+02
+1.114417256e-02
+4.585844072e-03
+1.534972515e-03
+7.577007332e-03
+2.092290863e-01
+1.945537152e+03
3.218545480e-04
-5.695804185e-03
-2.900418255e-03
-2.146207895e+01
+5.368783203e-03
+4.568545820e-03
+3.844709368e+01
3.367808240e-04
-1.909985746e-04
+3.521344180e-04
4.888505542e-05
4.808063713e-05
5.612738991e-04
-2.151645193e-03
-1.116201178e-04
-3.022804475e-03
-8.059348757e-05
-1.145759432e-04
-1.760936028e-02
+3.523129917e-03
+2.175328351e-04
+4.663990744e-03
+1.141044623e-04
+1.107623478e-04
+4.525930558e-02
2.366619821e-05
9.240043396e-05
-3.317635875e-03
+4.229676368e-03
2.674951749e-04
-4.450218420e-03
-6.377413282e-04
+9.840592824e-03
+4.959314963e-04
6.362640249e-05
-4.127537855e-05
-3.871611372e-02
-1.248980494e-01
-3.948331060e+01
-4.542337051e-02
-2.140097204e-04
-2.483594136e-03
-9.618341264e-03
-2.570656590e-01
-3.716902514e-04
-3.826901008e+00
+3.676315714e-05
+4.934030540e-02
+1.889479507e-01
+3.892630549e+01
+5.788093238e-02
+2.960812215e-04
+3.425705822e-03
+1.023459553e-02
+2.848475397e-01
+7.362670641e-04
+1.822308819e+00
2.508965025e-04
5.492112486e-04
4.033350589e-05
3.029881998e-04
3.473304858e-04
-9.312098850e-03
+1.154725293e-02
3.918675945e-05
-1.651786170e-04
+3.021516806e-04
3.911735258e-05
-1.176613601e-04
+2.161514567e-04
1.274488887e-04
9.955775183e-04
7.047594490e-03
2.402198122e-03
-7.650844627e-01
+1.054577233e+00
4.983023617e-04
-6.446755521e-04
+6.497704547e-04
4.631950898e-03
4.338330579e-04
-1.911950174e-01
-7.049018940e-04
-8.653593740e-04
+2.357261039e-01
+1.765993575e-03
+1.373202879e-03
1.537140959e-04
-1.509326113e-03
+2.517010225e-03
1.333400008e-03
-1.246338586e-02
+1.415008951e-02
2.334057711e-05
-4.685751992e-05
-2.396936029e-01
+8.296624421e-05
+4.538737386e-01
3.026678414e-05
-6.774556426e-02
-1.744612233e-04
-2.370183257e-01
+8.158364677e-02
+3.095775719e-04
+2.811882028e-01
3.630398347e-04
-1.808922993e-03
+2.228451583e-03
1.191341224e-04
3.547898828e-05
-1.366248018e+01
-1.627207101e-02
-8.508027241e-02
+1.663127595e+01
+2.426757332e-02
+1.033351444e-01
1.244872802e-04
-2.403438658e-03
-9.490627482e-03
+4.019470118e-03
+1.492569886e-02
4.261424311e-04
-7.619134278e-05
+1.259741376e-04
9.551111854e-05
-7.009804627e-04
-4.441547998e-03
+8.602556064e-04
+3.699802558e-03
2.157000178e-05
-1.704934420e+00
-6.574312603e-04
-4.916816998e-04
-9.013593687e-01
+1.650005398e+00
+7.803030155e-04
+6.728833516e-04
+1.642957770e+00
1.477458756e-04
-7.517405078e-01
-6.920613310e-04
+1.001830789e+00
+6.885560647e-04
9.115905339e-05
-8.452768873e-03
+1.470192935e-02
7.042886926e-05
4.106438108e-03
1.547935327e-04
2.342856935e-04
-1.717419540e+00
-3.218140617e-02
+2.898791513e+00
+3.642566376e-02
1.038695440e-04
-9.320597152e-03
-8.100525895e-01
-7.079485654e-05
+1.196928075e-02
+2.984074792e-01
+7.524584811e-05
8.853609071e-05
-4.142326704e-03
+5.610721069e-03
3.395964744e-05
-1.854234428e-02
-7.908373703e-02
-4.258410786e-03
+2.017694643e-02
+1.016041622e-01
+4.670646338e-03
1.873605147e-04
-6.027693445e+00
-1.353719540e-01
+3.600128321e+00
+1.463959046e-01
2.787141459e-05
-1.055372228e-02
-1.815141035e+00
-1.676539851e-04
-1.902848647e+01
-1.494202547e-02
-1.593654751e-01
+1.767212178e-02
+1.958320737e+00
+2.841768296e-04
+1.808652892e+01
+1.780875797e-02
+1.842111253e-01
2.050443392e-04
-1.167640041e-04
-8.638487041e-03
+1.980926426e-04
+8.825982306e-03
2.120107376e-04
-1.060486880e-04
-3.334421917e-02
-5.279501326e-05
+1.852595364e-04
+4.199849051e-02
+6.651478946e-05
4.077745922e-04
-2.610042216e-01
-7.456103761e-04
+2.783327003e-01
+1.513515194e-03
1.018323466e-04
-6.901454661e-05
-7.742843237e-05
+7.072268323e-05
+1.404077802e-04
4.909127924e-05
1.273653363e-02
-7.985314406e-03
+9.461102237e-03
3.936279714e-04
-1.291516513e-01
+1.758864744e-01
2.995287720e-04
-2.651956943e-01
+2.445707968e-01
1.600526119e-04
-3.612296595e-03
-1.279544755e+00
-4.183827039e-03
-4.051000701e-04
-4.702842597e-01
+4.545216648e-03
+1.438582004e+00
+4.530583364e-03
+4.108325624e-04
+8.022310371e-01
1.593739257e-03
-7.673301482e-02
+7.234473046e-02
9.145684691e-05
-3.619928917e+01
+4.378846135e+01
1.474871706e-04
-1.187865403e-03
+1.621511896e-03
1.263927797e-04
-5.492357103e-01
-8.522712854e-02
-4.056699517e+00
+7.942647063e-01
+9.405415027e-02
+4.186665712e+00
1.055466952e-04
1.357591392e-04
-1.748736405e-02
+3.133548410e-02
4.666513843e-05
-9.333837188e+01
-2.445420885e-03
-4.093200447e-04
+2.256250242e+02
+2.795847937e-03
+5.808314435e-04
1.460578524e-04
-2.255367348e-03
-2.155171685e+00
+4.106783058e-03
+1.316643333e+00
1.122165089e-04
-8.791940688e-02
-1.523733577e-03
-1.531512607e-04
+1.422743884e-01
+2.204909181e-03
+2.126643035e-04
2.371851429e-05
-5.945351648e-02
-6.818363419e-01
+1.327777283e-01
+6.621596745e-01
3.353992032e-03
-9.215896665e+00
-1.529139719e-03
-9.274690141e-06
-2.677488933e-04
-8.883354752e-04
+1.936541955e+01
+1.492459715e-03
+1.143901364e-05
+5.693922612e-04
+9.968233490e-04
1.999449961e-04
1.068643670e-04
-7.422347408e-01
+7.560853732e-01
4.809383598e-05
1.956270075e-04
9.846263782e-05
-2.548275845e-04
+4.377296355e-04
8.879794317e-05
-3.327347107e-01
+2.385894453e-01
1.308768687e-04
-2.443947412e-03
+2.804196607e-03
1.595299950e-04
-8.302061071e-05
+1.278056172e-04
2.766273723e-05
9.139637163e-05
1.613952354e-04
-6.617868621e-03
-6.457781796e-03
+6.965574960e-03
+1.442618579e-02
9.606570167e-05
-4.736684330e-02
-2.865560088e-03
-1.072809848e-01
-1.144303823e-02
-2.878264145e-05
-3.082463646e-04
+4.754716967e-02
+4.258978874e-03
+1.135283535e-01
+1.554517575e-02
+3.625260318e-05
+4.829497857e-04
9.611297782e-05
-6.616368439e-05
+6.530937664e-05
9.944437150e-05
-2.082011563e-02
+2.314544264e-02
1.785473536e-04
-8.062916496e-02
+5.898678923e-02
4.515563014e-04
8.816542793e-04
-1.363355642e-03
+1.801128493e-03
1.987894141e-04
3.283217373e-05
-1.246856258e-04
-1.157064859e-01
+1.423684834e-04
+1.458416687e-01
9.861002820e-05
-1.013085337e+01
-3.216675288e-05
+2.994402917e+01
+3.586783638e-05
3.094484962e-04
-3.741993782e-04
-2.082274389e+01
+4.545273415e-04
+2.106536724e+01
3.208676656e-04
7.250634429e-04
-2.565818985e+01
+2.909072877e+01
9.963050780e-05
-2.900509129e-03
+4.846799369e-03
2.855755215e-04
-6.663478968e-02
-4.065901362e-02
+7.403427148e-02
+5.425181985e-02
1.172433796e-04
-3.434910578e-04
+5.776807815e-04
2.434579811e-04
-2.579364552e-05
-2.107265609e-03
-1.077482701e+01
-4.896969448e-03
-3.218164899e-03
-8.120588212e-03
+4.454060257e-05
+2.665705091e-03
+1.599366040e+01
+5.493037993e-03
+4.094005086e-03
+8.192477591e-03
1.366782157e-04
4.069314661e-04
2.859383541e-05
5.522785730e-05
-7.040931448e-05
+8.983451907e-05
1.616280394e-03
2.293972441e-04
-3.953229601e-04
+5.555682659e-04
2.708105582e-04
-1.589260452e-02
-1.678634581e-02
-9.865405933e-02
-1.483097858e-01
+1.790740478e-02
+2.207263954e-02
+9.035143084e-02
+1.894524078e-01
1.128036107e-04
-7.255547131e-02
-3.505437940e-01
+8.492691488e-02
+3.551023511e-01
1.984166616e-04
-4.049497751e-04
-2.114662645e+03
+4.362534032e-04
+3.176136740e+03
1.211013435e-04
1.248931676e-03
-7.582074438e+00
-6.416845155e-04
-1.296293166e-03
+9.206333910e+00
+7.196408068e-04
+1.592805012e-03
1.282187343e-04
2.412535843e-04
2.330209042e-04
9.501570909e-05
-9.614958957e-06
-5.015836892e-05
+1.312494505e-05
+5.220995218e-05
1.169138042e-04
1.211464882e-03
1.973325376e-04
-1.891607124e-03
-1.162140050e-03
-1.117696922e-03
+1.876598982e-03
+1.228905656e-03
+1.450944324e-03
2.415373649e-05
2.934615606e-05
-2.124454320e-01
+3.340680439e-01
1.671264464e-04
1.344034805e-04
8.721867576e-04
-3.821772157e-04
-7.699890506e-04
-1.539333491e-03
-3.668372333e-04
+4.861882669e-04
+1.445691393e-03
+1.594146389e-03
+7.503818681e-04
8.507990639e-05
2.311063991e-05
1.127911890e-03
1.587714734e-04
-4.449246223e+01
-1.166516481e-01
+6.050900714e+01
+1.216867516e-01
5.653602216e-03
-6.518636905e-03
+1.394418893e-02
2.022317953e-04
4.768246397e-04
6.473780298e-05
1.590729830e-04
-7.357326980e-03
-1.131855787e-02
-6.868854794e-03
-1.322596342e-05
+1.196206836e-02
+6.033190189e-02
+2.435460427e-02
+2.397095382e-05
4.557424840e-05
-5.127274318e+02
-6.936451333e-04
-8.431894382e-02
-1.259258122e+00
+9.832837916e+02
+7.365760898e-04
+1.051466640e-01
+2.566550783e+00
9.738600735e-05
1.123231587e-04
-1.721492247e-02
+2.069582099e-02
3.496585607e-05
-1.045061306e-03
-3.691782360e-02
-2.486633330e-05
+1.109246989e-03
+3.986676959e-02
+6.820349807e-05
1.366690264e-04
1.148649342e-04
-1.979241464e-04
-2.377774735e-02
+2.781172129e-04
+3.416922624e-02
1.667109793e-04
-2.141359201e-01
+1.911470367e-01
5.754643197e-04
2.410656905e-04
-1.480751657e-04
-2.097989719e-02
-1.611713122e-04
-5.731357745e-01
-5.888202253e-04
-4.102148650e-02
-2.812474159e-06
+1.852072029e-04
+2.014301067e-02
+2.117614819e-04
+5.196238124e-01
+7.392330062e-04
+6.358792566e-02
+4.151469120e-06
2.453269962e-04
-2.288993800e-04
+3.643639479e-04
1.179422404e-04
2.109045835e-04
-1.620585866e-02
-1.170465806e-06
-1.272369719e-04
-3.638318670e-01
-9.674914176e-03
-1.024658715e-04
+2.489043658e-02
+1.973852603e-06
+1.949364474e-04
+3.714819770e-01
+1.211761104e-02
+1.099207610e-04
1.036877486e-04
-1.083835114e-04
-1.408131680e-02
-7.834006353e-02
-4.045170270e-05
-3.824743465e-05
-1.157862124e-03
+1.355234214e-04
+1.836566741e-02
+1.295073599e-01
+5.195802187e-05
+5.346062000e-05
+1.759718555e-03
6.562522724e-05
2.222154811e-04
-1.991359699e-01
+2.806244263e-01
1.847172402e-04
-8.798010400e+01
+1.005693457e+02
8.888517240e-05
3.493921489e-05
4.371948208e-05
3.719291396e-04
1.034471740e-04
-2.660901597e-02
-3.949321211e-02
-1.833647367e-01
-9.742747106e-04
+1.917400673e-02
+3.983954636e-02
+3.200266026e-01
+1.054784220e-03
9.621410640e-05
9.506661460e-04
2.459730056e-04
-1.629853849e-02
-3.489886088e-04
-7.491902671e-02
-5.948261981e-05
+2.089805544e-02
+5.036562062e-04
+1.127598645e-01
+1.094711616e-04
9.358708530e-05
-1.669324325e+01
+1.980156785e+01
8.984404898e-05
-1.206455721e-01
+1.843414450e-01
9.323198099e-04
-1.923570051e-03
+2.123619593e-03
5.200130923e-04
-1.243523903e+00
-5.391953839e-04
-1.778454806e-04
+1.300632143e+00
+6.817846235e-04
+1.982579498e-04
3.459477147e-04
1.323895172e-04
-4.727671587e-02
-6.990304119e+00
+5.951966178e-02
+9.251614331e+00
5.741307226e-05
-1.654839352e-02
-1.177493419e-04
+3.467823265e-02
+1.424085181e-04
1.342091356e-04
1.139384028e-04
-1.631287579e-02
-1.920974517e+00
+1.641063844e-02
+1.898739295e+00
1.240013047e-03
-4.690468593e-01
-3.555322918e-04
-4.926525883e-04
+5.535229785e-01
+5.551884724e-04
+6.283534014e-04
2.110905540e-04
2.811115644e-05
-1.815918553e+00
+1.631526956e+00
1.728427741e-04
-4.444398798e-01
-5.476677137e+02
-9.798199691e-02
-5.671122996e+00
+8.350620109e-01
+5.338071059e+02
+1.308895853e-01
+1.036874266e+01
3.492810941e-04
1.090285268e-04
-2.043277783e-04
-3.050287069e-04
-6.806933758e-04
-2.836538334e-02
-2.682552063e-03
+3.630366306e-04
+4.927650458e-04
+1.206020855e-03
+5.405368879e-03
+1.757442694e-03
1.280233282e-03
-2.602042261e-02
-1.317499959e-04
-8.956413433e-04
+3.126612382e-02
+1.365422101e-04
+1.580862580e-03
6.494003226e-05
1.873036368e-03
1.188530270e-04
-3.642281475e-03
-8.597036875e+02
+3.717336675e-03
+1.168615770e+03
1.076904595e-04
1.087404182e-04
-1.588422132e-03
-8.624647108e-01
+1.535604855e-03
+8.442840205e-01
5.688846506e-04
-8.266745680e-03
-1.449074600e-02
-5.001847712e-02
+8.903128475e-03
+1.429544975e-02
+5.228882801e-02
1.833303507e-04
1.131963244e-04
2.601662362e-04
-1.418040719e-03
-1.193276516e+01
-7.579518003e-04
-2.740632626e+00
+1.776134053e-03
+1.285453047e+01
+8.363705805e-04
+3.760484792e+00
2.414333460e-05
-8.686485751e-04
+1.156970495e-03
5.751731222e-05
-1.488862135e+02
+1.699783855e+02
9.128757124e-04
2.146830000e-05
1.172440755e-04
1.803925493e-04
1.374565795e-04
-1.595590178e-01
+1.889186608e-01
1.530729321e-04
-2.308208498e-02
-3.898450019e-05
-2.097415794e-02
-8.061163222e+00
-3.446917721e-04
+2.160333295e-02
+4.229444475e-05
+1.889331449e-02
+6.102493279e+00
+4.283415453e-04
2.885029381e-04
-4.524202155e-02
-3.218825308e+02
-5.317281318e-03
-9.065304103e-06
-1.052546440e-03
-2.629892754e-02
+4.931264728e-02
+9.767486420e+02
+5.929122366e-03
+1.595111869e-05
+1.305538763e-03
+3.819172001e-02
1.320653737e-04
1.283670693e-04
5.835986440e-04
1.654285696e-03
-2.422940424e-02
-2.021482118e-04
-7.586341220e-04
-4.383659779e-01
-1.265136396e-02
+2.423113485e-02
+2.341961473e-04
+1.033306275e-03
+3.895028742e-01
+1.556390345e-02
3.448991669e-05
-1.885250726e-03
+2.280260946e-03
9.368060644e-05
-1.284735242e+01
+2.912564786e+01
9.612522601e-05
4.880226451e-04
-1.887820769e-03
-2.367397583e-03
+2.034580241e-03
+3.845286687e-03
9.957072546e-05
4.100436426e-04
-5.291476382e-02
-2.851325810e-03
-6.910768064e-05
-8.385317679e-04
+6.270041548e-02
+5.668123159e-03
+7.621041088e-05
+8.891791081e-04
3.509269690e-04
-3.212389454e-02
-2.452446405e-02
-4.566982764e-04
+3.172980122e-02
+3.210083524e-02
+4.912278511e-04
7.631682253e-04
-2.911861614e-03
-3.797395386e-02
-4.516134522e-02
-1.692613798e-01
+5.335781923e-03
+2.701940456e-02
+7.217114480e-02
+2.337230853e-01
4.698333202e-05
-3.713357711e-04
-2.192284940e-04
-2.346595257e-03
+5.791223614e-04
+4.126594221e-04
+2.738607406e-03
2.313377103e-04
9.614002357e-03
-1.712101134e-01
-7.321417198e-04
-1.367034591e-03
-8.901981463e-06
-4.367481883e-04
-3.582914274e-05
-5.539468517e-04
-3.960864848e-01
-8.474842825e-03
-1.040834769e-01
+2.555185212e-01
+6.821862669e-04
+1.908205796e-03
+9.755771822e-06
+4.873482557e-04
+5.091958218e-05
+8.844279370e-04
+5.095295684e-01
+1.032189904e-02
+1.001641558e-01
6.702809113e-05
-4.050507695e-04
-6.227722917e-05
-5.900496098e-03
-7.955267157e-05
+6.786679870e-04
+2.204477626e-04
+7.755673856e-03
+1.107305449e-04
2.910375378e-04
-7.913861878e-03
-8.534865441e-05
-1.081603572e-03
+1.381192747e-02
+1.130644413e-04
+1.685583429e-03
2.169522002e-04
-8.745246892e-03
-2.261408778e-02
-5.509010045e+00
-1.255794392e+01
+2.037553952e-02
+3.332133335e-02
+9.303789628e+00
+1.675226376e+01
1.286972400e-04
-5.011431891e-03
-1.847797828e-01
-5.451323027e-03
-6.584877780e-04
+6.388299007e-03
+1.907944413e-01
+6.264132911e-03
+9.213955541e-04
2.420750808e-05
6.220656908e-05
-5.209790191e-02
+9.732484572e-02
5.003506474e-04
-1.922088606e-02
-2.995299066e-04
+2.796675202e-02
+2.870621363e-04
4.081698450e-04
6.336742941e-05
8.953477854e-05
1.467650930e-04
4.210145128e-05
-3.053782863e-03
-5.554558477e-02
-1.583492508e+02
-4.413747082e-01
-1.029679765e-02
+4.906793834e-03
+9.513112649e-02
+2.084168229e+02
+5.272739944e-01
+1.489176296e-02
3.636496730e-04
-4.325427162e-03
+5.199390211e-03
1.051491941e-04
-1.069623321e-03
-1.525614770e-05
-8.223492897e-04
-6.385161606e-02
-8.852458644e-05
+1.898550172e-03
+1.767222723e-05
+9.837465119e-04
+7.773358804e-02
+1.036713192e-04
1.609568597e-04
2.062929633e-03
-2.699034803e-03
-1.103357831e-03
-3.921930595e-04
+4.282041710e-03
+1.980336191e-03
+5.180066474e-04
3.586523782e-04
-3.150865900e+00
+4.177634141e+00
1.116854085e-04
-1.641584966e+03
+1.772818378e+03
1.313656828e-04
-9.197982791e-04
-3.703793690e-02
+1.167504744e-03
+4.621215417e-02
1.448717314e-04
-9.836967783e-04
+1.522864018e-03
2.808143403e-04
-1.463385018e+00
-3.290493136e+00
+2.254782883e+00
+4.158658076e+00
4.459815627e-04
1.573624139e-04
4.066652323e-05
-1.511657341e-03
+2.276315656e-03
3.814582481e-04
-2.901442675e-03
-4.644144602e-01
+3.565791191e-03
+5.983058765e-01
1.240302918e-04
-2.761663981e+05
+3.314363648e+05
1.072521873e-03
2.945735308e-04
-8.176402477e-02
-5.966833128e-02
+1.545024333e-01
+6.753988916e-02
2.798888985e-04
-1.287370218e-03
-6.911317621e-05
-2.250939462e-03
-2.870126997e-03
+1.340901460e-03
+1.679007867e-04
+4.221915427e-03
+9.219882801e-03
9.366881035e-05
1.528036278e-04
1.401847478e-04
-1.504644546e-03
-1.647485899e-01
-3.763208585e-04
-5.953215168e-02
-2.420301864e-02
+2.224894056e-03
+5.448222602e-01
+6.087223447e-04
+6.623723482e-02
+3.573996852e-02
2.388656923e-04
-2.710393226e-01
+1.887339820e-01
9.482033317e-05
-8.873488914e+01
+1.345046421e+02
1.079741758e-04
-4.543463111e-05
-1.380369610e+00
-5.252113073e-02
-1.145823911e+02
-2.449930683e+00
+4.642810437e-05
+1.337248569e+00
+7.259396060e-02
+1.600713279e+02
+1.484237496e+00
9.834477093e-04
-6.510455407e-06
+1.182743761e-05
2.879663518e-04
-4.681496832e-03
-3.292794491e-02
+5.223923838e-03
+6.407163439e-02
1.169227525e-03
-2.805843011e-03
+3.950932108e-03
3.519812829e-04
-3.995440817e-03
-2.236126015e+00
+4.538100647e-03
+2.597741740e+00
1.574908754e-04
2.057140647e-04
-1.868921726e+00
-1.297363692e+00
-4.232041081e-02
-4.462849813e-04
+2.140917327e+00
+1.286720565e+00
+4.288621619e-02
+6.957707906e-04
5.406569097e-04
-1.165876886e-03
-2.725490035e-03
-2.458383109e-02
-4.098097916e-01
-8.040306218e-03
-1.800516398e-03
-3.725326127e-04
+2.181246560e-03
+4.925190521e-03
+2.609704202e-02
+6.088569961e-01
+8.254708048e-03
+2.427375362e-03
+5.547227695e-04
1.365139586e-04
-4.804135754e+00
-9.385664992e-03
-3.220704964e-01
-9.188596655e-03
+4.907940031e+00
+1.899676219e-02
+3.226933676e-01
+1.298310674e-02
1.160997818e-04
-1.814472732e-02
-1.831987830e+00
-3.021952357e-02
-1.748238639e-02
-1.457866046e-03
-3.345252481e-01
-1.083862853e+03
-5.355710331e-01
+2.806331991e-02
+2.719169273e+00
+6.655759170e-02
+1.714815872e-02
+2.113725048e-03
+7.281770765e-01
+3.068126283e+03
+1.315338454e+00
7.217911188e-05
9.443838897e-05
-2.023917699e-04
+2.388228450e-04
1.220461141e-04
-1.279016223e-04
+1.562096916e-04
5.236369442e-05
-7.902731080e-03
+7.879386592e-03
1.430661929e-04
4.101706939e-05
-2.896169867e-03
+3.188652220e-03
1.712494380e-04
6.715561884e-05
-1.047703033e-03
-8.180128139e-04
+9.464742057e-04
+1.330172713e-03
1.679107995e-04
-2.169655649e-03
+2.351233313e-03
9.196927686e-05
-1.277858203e-02
-5.538484661e-02
-6.513003175e-04
-6.201298319e+00
-9.764655420e-03
-1.443689137e+01
+1.406312539e-02
+1.368214290e-01
+8.784670454e-04
+8.854059699e+00
+1.178222500e-02
+2.178652108e+01
1.472582170e-03
1.491476570e-03
1.351789888e-04
1.022254576e-04
-2.592061086e+01
-8.805867470e+00
+5.341746649e+00
+1.335944812e+01
5.519060034e-04
-2.307444786e-02
+2.893361410e-02
2.775230005e-04
-5.173617752e-05
-2.905379444e-01
-3.133294771e-03
+6.783172918e-05
+3.120370992e-01
+4.517640948e-03
4.294888552e-05
-3.339861288e-03
-7.552334106e+02
+6.367068956e-03
+1.808935755e+03
diff --git a/t/ME_data/ME_hj_mtmb_tree.dat b/t/ME_data/ME_hj_mtmb_tree.dat
index 84dcd2a..362c35a 100644
--- a/t/ME_data/ME_hj_mtmb_tree.dat
+++ b/t/ME_data/ME_hj_mtmb_tree.dat
@@ -1,1687 +1,1687 @@
-2.750198212e-05
+3.780236397e-05
8.671995071e-04
-6.081591909e-01
+1.007990916e+00
5.116795157e-05
-5.765484290e-03
-1.018354475e-02
-2.304538715e-01
-2.394449211e-06
+6.942008249e-03
+1.323729547e-02
+2.391889120e-01
+3.253193437e-06
1.373133786e-04
-3.966325473e-03
-1.191333168e-01
-4.964815982e+00
-1.416820905e-01
-5.261660014e-01
-1.046281588e-04
-8.066931411e-03
+5.350459090e-03
+1.385268525e-01
+7.852372315e+00
+1.746088062e-01
+3.870470738e-01
+1.853554617e-04
+1.074455812e-02
5.676100325e-04
-1.207204970e-05
-5.983557555e-02
+1.295694161e-05
+8.893672009e-02
5.211894727e-04
-4.137938297e-01
-1.454926797e+00
-3.014409364e-02
-2.286316904e-03
+5.410764301e-01
+1.393505982e+00
+2.483542507e-02
+2.300718876e-03
2.443111283e-04
1.355818252e-04
-2.605103434e-03
+3.246915000e-03
3.142691059e-05
-4.252186549e-03
-1.684651299e+02
-4.028945245e+01
-3.242820689e-02
-4.834046948e-05
+6.886275042e-03
+3.352580132e+02
+5.239893441e+01
+3.409294506e-02
+5.215148465e-05
6.779263262e-05
-3.529644486e-04
-8.434431958e-04
-1.092437971e-02
+5.533594245e-04
+9.787816349e-04
+1.518447939e-02
9.690055689e-05
9.843829623e-05
3.552724992e-04
-3.003191502e-03
+3.645096476e-03
2.400727072e-03
-5.378257006e-02
-4.874240639e+01
+6.261406344e-02
+4.410514744e+01
1.977525490e-04
-1.541056296e+00
-1.210897441e-02
-3.774187920e-01
-3.561375384e-03
-1.549857803e-01
-2.810725616e-01
+2.606375446e+00
+1.935566596e-02
+3.649807955e-01
+4.198052530e-03
+1.945236204e-01
+2.354444213e-01
9.279747242e-05
-1.402861994e-02
+1.278550661e-02
1.182358000e-04
-1.965208654e+01
-3.040268708e-04
+2.057178688e+01
+2.994466119e-04
7.478247704e-04
-2.023074901e-01
+4.247162769e-01
5.545170727e-05
-3.077866102e-03
-5.087237408e-03
-4.611114488e-03
-8.067202493e-01
-3.395819521e-02
-8.675805625e-04
+2.526570650e-03
+5.694314991e-03
+6.128095603e-03
+1.485897536e+00
+4.337375021e-02
+8.265857895e-04
1.590003676e-04
2.202028269e-04
-5.764850094e-04
+7.054598301e-04
1.246663059e-04
1.414568985e-04
1.470448972e-04
-1.438132887e-03
+2.896159169e-03
1.693803125e-04
-9.906169122e-04
+1.127178894e-03
1.560588481e-04
1.491123365e-04
1.613346359e-04
-1.742493784e-02
-1.053324258e-01
-4.673580216e-02
+1.900884859e-02
+1.261510753e-01
+5.614826761e-02
5.080490862e-05
-6.190694123e-03
+3.099774209e-03
9.890360335e-05
4.226803922e-05
-2.850431659e-02
-6.155488884e+02
-9.977530802e-03
-1.421009428e-01
-1.519482212e+03
+2.294572630e-02
+8.853975365e+02
+1.526584827e-02
+1.434714796e-01
+1.072825198e+04
1.826478789e-04
2.704811658e-05
1.620224704e-04
-1.500552852e+01
+1.725985455e+01
3.304358345e-04
1.016571990e-04
-2.046895882e-04
-5.925058505e-05
-8.877373861e-05
+1.045316804e-03
+8.207299796e-05
+1.795706435e-04
3.005810998e-05
1.787929760e-04
8.950237919e-05
-1.950644654e-02
-1.801065188e-02
+2.702381574e-02
+3.177127549e-02
1.025796688e-04
-7.012126170e-04
+7.338751503e-04
1.177663365e-04
9.549380059e-05
1.795729591e-03
5.337074081e-05
-2.922996638e-03
-1.028209484e-03
-5.048290902e-01
-1.299954883e+00
-2.676111747e-01
-3.273560512e-03
+4.108249156e-03
+2.023660900e-03
+7.444084399e-01
+1.571660328e+00
+3.691962253e-01
+5.319257388e-03
1.515162354e-04
-4.697042421e-01
-1.764066014e-03
+6.198327820e-01
+1.979987518e-03
4.251259173e-05
1.081397144e-04
-1.404051474e-01
-3.619625936e-02
-1.328568924e-02
-2.549866207e-03
+3.038399413e-01
+5.595844426e-02
+1.043372569e-02
+4.272893692e-03
3.393580930e-03
7.108601904e-04
-1.016958031e-03
+2.106952885e-03
8.031907484e-05
-4.398598195e-04
+1.008934569e-03
9.523712082e-05
-7.662902290e-03
-7.849841074e-02
-1.283130888e-01
+8.931048733e-03
+1.205472223e-01
+1.361245924e-01
4.840585055e-04
-2.130720033e-02
+3.900026202e-02
1.155051020e-04
1.563673688e-04
3.410531682e-04
-7.287618816e-03
+1.110206880e-02
4.759407876e-04
2.385661944e-04
-2.428122477e+00
+4.176474958e+00
4.845260934e-05
1.194058958e-04
-1.011587929e-04
+1.178339544e-04
1.831519467e-02
-1.989602306e-03
-1.548870267e+01
-6.446772767e-01
+2.000384549e-03
+3.112326252e+01
+6.351620146e-01
3.120827620e-05
2.839228937e-04
-2.005833766e-03
+2.689249161e-03
1.079509650e-04
-9.816246192e-04
-1.018590824e-02
+1.539272899e-03
+8.479794345e-03
1.186032313e-04
-7.690571739e+01
+1.072520927e+02
1.343124167e-04
-2.707457452e+03
-1.037485311e-03
-3.467543544e-05
+3.284676780e+03
+1.139206048e-03
+4.248519283e-05
1.002231990e-04
-1.169823877e-02
+1.405011855e-02
9.086510186e-05
-5.916372253e-06
+7.687236271e-06
3.400382495e-04
-3.907175719e-05
-1.220030003e+01
-1.094648318e-03
+3.583073864e-05
+3.286222405e+01
+2.610878946e-03
6.676743565e-04
1.279030130e-04
5.888983770e-05
-3.387152450e-05
-1.092565659e-04
-3.380016602e-02
-4.778126101e-02
-6.987028451e-02
+3.202718966e-05
+1.040409780e-04
+3.808240987e-02
+4.799396998e-02
+1.071831297e-01
1.720873494e-04
-1.740801628e-03
+3.058402532e-03
4.154616729e-05
6.691856820e-04
4.124107931e-05
2.090512277e-04
-1.116032635e-04
-4.581842675e-05
+1.948228460e-04
+5.009307306e-05
2.320316339e-04
2.579132701e-04
4.033540611e-04
1.035860427e-03
-1.132396718e-02
+1.362599069e-02
7.049685793e-04
-1.459859381e-02
+1.963874936e-02
2.852761909e-04
-2.245103168e-04
+1.825309738e-04
1.609967772e-04
1.106603450e-04
-4.704172185e-05
-1.944785365e-03
-4.708323250e-03
-7.723450495e-04
-1.238382750e-04
-2.981628886e-03
-9.941857026e-03
-1.366463099e-01
-9.229987812e-03
-3.520577886e-03
-2.506228002e-03
-1.530047520e-03
-3.297701380e-02
+6.005609942e-05
+2.530594099e-03
+5.089291104e-03
+7.225107642e-04
+1.486749222e-04
+4.550862359e-03
+1.046118106e-02
+1.428760984e-01
+1.053419209e-02
+4.386580793e-03
+2.465543871e-03
+2.700986743e-03
+3.793517828e-02
3.297188979e-05
1.280647104e-04
-7.052847342e-03
-6.089192647e-02
-1.956313582e-04
-6.932423019e-01
-1.670732560e-01
-1.581903181e-03
-1.213040897e-02
-1.542608947e-02
-2.142021142e-02
-6.111552345e+00
+1.002799871e-02
+6.457316138e-02
+2.689389147e-04
+9.672538764e-01
+4.044861642e-01
+1.682811217e-03
+9.193622938e-03
+1.945597206e-02
+1.952300183e-02
+6.753810880e+00
3.793395998e-04
1.257819038e-04
-3.573408369e-03
+5.666782965e-03
3.056884047e-05
-2.851574339e-06
-2.331438740e-03
-9.966415160e-03
-1.354204297e+00
+4.562559586e-06
+3.451802369e-03
+1.759985837e-02
+1.801783900e+00
2.813254175e-04
-2.613055859e-03
-9.676874121e+01
-5.263156416e-03
-4.722857745e-03
-5.946163652e-05
-1.187270452e-02
-1.126497077e-03
-1.797140157e-02
-1.398767335e-03
-2.686175396e-01
+3.685234679e-03
+2.539237731e+02
+5.483538537e-03
+4.613962714e-03
+9.115351497e-05
+1.742181426e-02
+1.210888425e-03
+1.269784213e-02
+1.877071145e-03
+2.794967641e-01
2.277916484e-04
3.228608761e-03
-5.240539022e-05
+6.827783395e-05
4.012059090e-02
1.191456567e-03
-5.860064442e-05
+6.252301389e-05
2.612313212e-04
-1.599840350e-02
-6.177517762e-04
+3.147974166e-02
+9.395117282e-04
9.182482169e-05
-5.271484203e-02
+1.099410071e-01
3.086465016e-04
-1.710119333e+00
+2.282578818e+00
3.743238494e-05
-1.068307990e-03
-5.258355167e-01
-3.662462400e-03
+1.764366531e-03
+6.494164036e-01
+4.263642443e-03
1.937381717e-04
1.435414072e-04
1.250345653e-03
2.141785293e-04
-6.054898017e-04
-8.749800191e-04
-7.646500678e-04
+9.131304028e-04
+1.512455096e-03
+8.887892234e-04
2.946888713e-05
-4.021347732e-04
-2.764084896e-03
-2.001548767e+00
-9.679155813e+00
-9.018388173e-01
-1.133920628e+00
-3.759890823e+01
-7.439026836e-05
-2.105641543e-01
+6.343797757e-04
+3.733081366e-03
+3.849003578e+00
+1.378046908e+01
+9.391246627e-01
+1.692773895e+00
+5.525697180e+01
+8.114338253e-05
+2.350586389e-01
2.356425672e-04
-8.154619072e+02
+1.940406461e+03
1.065558870e-04
-1.302289779e+00
-2.877127069e+00
-4.359193830e-04
-7.166859005e-04
+1.729250116e+00
+3.199510667e+00
+4.939077898e-04
+7.492292052e-04
1.411517857e-04
-3.610076233e-03
-1.157866424e-02
-8.188422643e-05
-2.627044213e-02
+6.075823036e-03
+1.986831710e-02
+6.630119104e-05
+2.776785270e-02
1.006379126e-04
-1.767519273e-01
-8.238151996e-03
-1.017712173e-04
+1.883980556e-01
+1.099843512e-02
+9.718833640e-05
1.554703969e-04
-2.187603370e+01
-8.920120887e-02
-3.854088021e-03
-3.492186660e-08
-2.070172873e-04
-6.249158118e-01
-3.837388403e-03
-1.972167614e-02
+2.832686393e+01
+8.931882590e-02
+9.439506954e-03
+6.141634468e-08
+2.849573267e-04
+1.220418862e+00
+4.892220872e-03
+2.860096576e-02
2.201984812e-04
-1.593144721e-03
-6.073536248e-03
-2.051324085e-04
-6.043465805e-02
-7.066293595e-01
+2.191478853e-03
+4.685374380e-03
+3.431085604e-04
+1.412791956e-01
+1.157905495e+00
2.364827302e-04
-1.041689409e-01
+1.433161523e-01
5.815357776e-05
-1.735862903e-04
-1.081238704e+00
-1.176684239e+01
+2.087899362e-04
+7.474903327e-01
+1.170455470e+01
3.505629248e-04
2.464554963e-04
-6.387533857e-06
-6.058687121e-04
-1.023804650e-02
-5.786125750e-03
-2.192699258e-02
+7.225542219e-06
+6.560408847e-04
+6.485333552e-03
+7.176181663e-03
+1.922058087e-02
6.834193649e-05
-9.598497830e-03
+9.290593275e-03
1.010363523e-03
-3.791722907e-01
-2.878374165e-02
-1.126946216e-02
-1.620185559e-01
+4.057816726e-01
+2.884123498e-02
+1.208947886e-02
+2.538549289e-01
6.487755032e-05
1.938452083e-04
2.660571709e-04
-1.468616400e-04
-1.207742212e-01
-1.510010260e-04
-9.053625916e-04
-4.199121570e-03
-8.479303011e-03
+1.423402083e-04
+9.292595626e-02
+1.895375722e-04
+1.548315855e-03
+9.309851902e-03
+8.837925808e-03
1.766544583e-04
-1.748767438e+00
-9.268292345e-04
+1.640717546e+00
+1.343443655e-03
3.723644941e-03
-3.271314015e-02
-9.248933975e-03
-4.153056631e-03
-5.526014262e-01
-6.679741823e-05
-1.492739330e+00
-5.325524884e-05
-3.195004299e-03
+4.490011624e-02
+1.102657886e-02
+4.975650408e-03
+9.485694470e-01
+7.169749569e-05
+1.664182170e+00
+4.355864401e-05
+3.577238370e-03
2.509990957e-04
-6.485645405e-03
-6.766683493e-02
-3.786349051e+00
-5.105782998e-05
-3.806439567e-04
+7.350314562e-03
+7.313704788e-02
+7.987782504e+00
+5.836976579e-05
+4.630835071e-04
1.511134107e-04
-2.192416739e-03
-3.648682029e-03
-6.528530224e-02
-2.052812889e-02
-5.813670098e-05
+2.592881840e-03
+4.403990319e-03
+6.250854278e-02
+3.516906177e-02
+8.726582174e-05
5.879437618e-04
7.837220677e-04
-1.249756636e-02
-1.838549477e-04
-9.089393496e-01
-9.855018435e-01
-2.012660372e-02
-5.745255410e-04
-6.492404366e-04
-2.264057713e-02
-2.390843043e-01
+6.238074125e-03
+3.119141353e-04
+1.711192628e+00
+1.095944578e+00
+3.383934200e-02
+5.546244691e-04
+7.875466527e-04
+3.625680953e-02
+2.562056259e-01
2.739448698e-04
1.714154217e-03
-4.531989094e-03
-3.615862201e-05
-8.310542953e-02
-9.485217445e-05
-3.328304772e-04
+5.452885253e-03
+4.431789552e-05
+1.040174321e-01
+1.003422685e-04
+5.923622087e-04
1.219078379e-04
-2.257561398e+04
-1.212149467e-03
+4.024764012e+04
+1.116913307e-03
2.041112720e-04
-3.308687829e-05
-1.034466025e-02
-1.130742365e+00
+5.168079035e-05
+1.592076748e-02
+2.171319554e+00
3.936763242e-04
-5.550218982e-02
-2.506129167e-02
+6.460683565e-02
+4.767188611e-02
9.183125539e-05
-7.852401702e-02
+8.347126955e-02
4.896389001e-04
1.214092116e-04
3.980077904e-04
-8.026000722e-04
-8.055832097e-05
-5.491802119e-03
-5.042388658e-03
-4.278239440e+00
-1.858664444e-01
-5.318058675e-01
-6.662556260e-01
-1.460639065e-04
+4.203304486e-04
+1.104942830e-04
+1.786068880e-02
+5.301949331e-03
+6.339489040e+00
+2.997365941e-01
+4.830193767e-01
+8.556866965e-01
+1.837318032e-04
2.271309523e-04
-1.766374919e-03
+1.805564486e-03
5.171547061e-05
-1.938860548e-02
-1.164869205e+00
-2.414055598e-05
-3.242346864e-03
-4.754563053e-02
+2.492703514e-02
+1.488806978e+00
+2.770304180e-05
+4.680106645e-03
+5.600330576e-02
2.393291872e-05
-9.639989270e+02
+3.382186635e+03
1.226608835e-04
3.356429452e-04
-2.381303791e-03
+4.307432556e-03
1.075278917e-04
6.892491511e-04
-8.706712897e-05
+9.530475895e-05
2.648325234e-05
3.551785367e-05
8.327007634e-04
3.635545916e-04
-2.614563808e-05
-8.884920331e-03
-6.678429233e-03
-1.752342771e-03
-2.856481151e-06
+2.513699591e-05
+9.449285111e-03
+8.415070272e-03
+2.018346121e-03
+3.796381704e-06
2.723523786e-05
-1.504430872e-02
+1.864439791e-02
9.639130647e-05
-1.625329517e-01
-1.293048085e-01
-6.931513680e-05
+2.017223895e-01
+2.427025538e-01
+7.748186708e-05
4.208892971e-04
4.789927857e-04
-4.342192339e-02
+4.433186237e-02
1.179587272e-04
1.375335879e-04
1.318645463e-04
-2.374972134e-02
+3.789174766e-02
6.791015521e-05
-1.013582397e-01
+1.775756411e-01
4.294957170e-05
-5.788516285e-03
-3.203987505e-01
+1.402981688e-02
+3.714917181e-01
1.509474611e-04
-2.574464167e-02
-3.313339165e-05
-9.683307372e+02
-1.123272955e-02
+1.682242041e-02
+1.084386858e-04
+1.161391118e+03
+1.472667175e-02
5.157250165e-05
-1.057263523e-05
+1.320994472e-05
2.851640909e-04
1.545491189e-04
6.737254153e-05
-5.261739279e-02
+5.464565622e-02
3.647813939e-04
-2.624528239e-01
+2.790552905e-01
5.353611518e-05
-5.779632936e-04
+6.956607421e-04
2.528096887e-05
-1.697661326e+01
-1.778500598e-02
+1.814794857e+01
+3.311858304e-02
7.450740100e-05
1.024063912e-03
-5.713573139e-03
+1.605314146e-02
2.119528478e-04
-6.361275951e-02
-3.791792439e-02
-5.906782929e-03
+8.405824857e-02
+5.276057838e-02
+9.733706619e-03
1.097751556e-04
6.139410404e-05
-1.232884407e-03
+1.767259948e-03
1.999182632e-04
-3.287969237e-05
+4.842754268e-05
6.435720974e-04
9.262523817e-05
1.462336834e-04
1.137083762e-04
-4.238472393e+05
-1.710580334e-03
-5.683553770e-04
-5.686083343e-04
-2.858448703e+00
+6.057662551e+05
+2.127648023e-03
+6.298876033e-04
+6.439221704e-04
+2.337257059e+00
3.972459960e-04
-5.330910566e-03
-1.140035042e-04
+8.651434743e-03
+1.070958786e-04
3.657215748e-05
-9.216098373e-05
-2.350392574e-03
-2.220791904e-03
-1.349208985e-04
+1.329959463e-04
+2.977906998e-03
+3.677392620e-03
+1.695326486e-04
3.113902797e-04
1.372138095e-04
-4.256864976e-03
-2.507781815e-04
-5.340777461e-06
-6.095234866e-04
-8.387995759e-03
-3.364133022e-01
+5.193309785e-03
+2.733265693e-04
+7.469990481e-06
+6.495165537e-04
+9.964064997e-03
+3.313483121e-01
3.532281647e-04
-2.337102821e-01
-6.832662909e-01
-1.616348731e-03
+4.326944145e-01
+1.014747791e+00
+2.469756993e-03
1.155654942e-04
-1.928066385e-01
-1.337097209e-02
-3.017508723e-04
-1.032343013e-03
-1.830301688e+01
-8.943956721e-03
+3.599431626e-01
+1.782096316e-02
+2.907646053e-04
+1.692321808e-03
+2.449047637e+01
+1.141478014e-02
6.008754576e-04
-8.168280467e-02
-3.062459367e-04
+9.047888223e-02
+1.618205876e-03
1.965225149e-04
1.350705602e-04
9.003818774e-05
5.410849900e-04
-2.188753855e-02
-1.136494690e-01
-2.467628347e-05
+2.436421671e-02
+1.302027496e-01
+4.787869675e-05
1.203950066e-04
9.267072769e-04
1.242539249e-04
1.091153989e-03
7.784308869e-04
-3.678691149e-01
-4.095344387e-03
-6.014656742e-04
+4.474501094e-01
+7.102941117e-03
+1.608100087e-03
1.872846732e-04
1.921087689e-04
-2.253489245e-03
-2.590514113e-02
-9.198905052e-04
+3.144887638e-03
+9.715972832e-03
+9.391627966e-04
9.965289925e-05
3.130274250e-05
1.282393462e-04
-2.217401356e-02
+3.310548758e-02
1.910233589e-04
-1.935937522e-04
-5.152891349e+00
-1.106679437e-02
+3.219792754e-04
+6.139505406e+00
+1.361355858e-02
1.101138203e-04
-1.755269751e-01
-9.236526186e-02
-6.058256777e-01
-4.074142011e-04
-6.357796535e-04
+1.974981337e-01
+1.199972513e-01
+6.925728779e-01
+4.942296287e-04
+3.818561605e-04
1.360686220e-04
-1.063790763e-03
-9.093316268e-04
-5.926244854e-05
-5.850313918e-02
-1.737336649e-03
-5.199681629e-04
-4.740251136e-04
-1.112322005e-02
+1.216060902e-03
+1.116606418e-03
+6.728275203e-05
+6.720668708e-02
+2.298958001e-03
+6.485797271e-04
+5.268184404e-04
+1.180361225e-02
2.915411294e-04
7.643180068e-05
-2.672248028e-02
-2.128443342e-04
+3.180088977e-02
+3.338606026e-04
1.244875843e-04
6.855742465e-05
-2.210725343e-02
+2.218987247e-02
3.671489298e-04
-6.325799486e-02
-1.780904491e+01
+1.569742849e-01
+3.130551645e+01
5.794290765e-03
2.953118149e-05
-4.671551094e-04
-5.575524178e-03
-7.074274922e-03
-3.229163000e-03
-5.944396810e-02
+5.302556014e-04
+7.980513546e-03
+5.347852075e-03
+3.587462755e-03
+7.525311804e-02
1.915872005e-04
-1.014634863e-02
-1.441566419e-03
+1.285882075e-02
+1.628121250e-03
4.272389089e-05
-2.032550976e-01
+4.746027165e-01
2.164725458e-04
1.408648363e-04
3.079029637e-04
-5.816370318e-02
-1.125426847e-03
-5.614227714e-01
-1.194500648e-02
-1.491767263e+02
-3.383832567e-01
+5.014325497e-02
+1.227105066e-03
+1.263595216e+00
+1.073176734e-02
+1.777093524e+02
+4.202926128e-01
2.476709985e-03
-6.227176645e-05
-7.536097259e-01
+1.193845762e-04
+7.368331069e-01
5.660936046e-04
-8.216567297e-05
-4.179184665e-02
-2.346358242e-05
-3.954143606e-03
-6.341927796e+02
-2.039994748e-04
-1.086809468e-01
+1.015688996e-04
+5.011324830e-02
+4.227143938e-05
+4.127627071e-03
+7.748338879e+02
+2.463112972e-04
+6.020914183e-02
1.333373503e-04
1.316001137e-03
-2.001403476e-01
-1.402205845e-01
-2.611351736e-02
+2.632362354e-01
+1.551040301e-01
+5.877833625e-02
3.569609392e-03
-4.051382570e-02
-1.490023426e+01
-7.616610461e-04
-2.263766602e-02
+3.656149386e-02
+2.063367556e+01
+1.047426748e-03
+2.315524560e-02
9.353370065e-05
2.732060143e-04
-8.357388496e-03
-3.516679699e-03
+9.475304825e-03
+5.436227829e-03
4.039281758e-04
-5.469498729e-02
-7.540693810e-04
-9.133943908e-03
+8.549029315e-02
+1.145772038e-03
+8.637675984e-03
2.233578137e-04
1.191817489e-04
-5.207658975e+00
-2.440202281e-04
+5.213654647e+00
+3.751781056e-04
2.080312081e-04
-1.860996854e-03
+1.689569325e-03
2.584839289e-04
1.579391875e-04
-1.886637064e-03
-4.728910657e-03
-3.136910195e-02
-5.774952299e-03
+5.349883800e-03
+5.780902822e-03
+3.670413729e-02
+1.011028865e-02
9.395471637e-05
-8.705826541e-05
-6.726928731e-02
+9.017608851e-05
+9.877570459e-02
3.763740223e-05
-6.116355611e-01
+6.433878678e-01
5.313319830e-05
1.072341825e-04
-4.837522101e-04
+8.286780391e-04
1.131697262e-04
-6.762610796e-03
+1.857062894e-02
2.708581972e-04
-8.748600221e-01
+3.825242839e-01
1.423058910e-04
9.209516242e-05
-1.856514059e+02
+3.123429721e+02
1.055481244e-04
-2.161677923e-02
-7.553763075e-05
-3.970981334e-02
-3.281842309e-03
-1.026415093e-02
+3.856442559e-02
+1.489833428e-04
+3.241264682e-02
+3.892442848e-03
+1.483171391e-02
1.848018893e-04
-1.355000016e-03
-5.267400023e-04
-1.016329615e-01
+3.129335681e-03
+7.394053472e-04
+1.437145340e-01
2.397200980e-04
-1.746394500e-02
-8.703509981e-03
+2.733568925e-02
+1.028022063e-02
1.296334020e-04
-9.204403457e+02
-4.449984325e-01
+9.095383932e+02
+5.377112160e-01
2.022934739e-03
-3.666778291e-03
+3.900480175e-03
4.240908426e-05
3.459727102e-04
2.053420888e-04
-1.157071891e-01
-1.363669456e-04
-1.702912281e-05
-2.423037100e-02
-5.000134449e-04
-7.407267627e-05
+1.816555451e-01
+1.789017372e-04
+2.283838039e-05
+2.562956780e-02
+1.973083655e-03
+1.180292544e-04
1.128215585e-03
-6.435332253e-02
-6.601933196e-02
+4.965891385e-01
+4.778464270e-02
1.163252660e-04
2.051867257e-04
1.116142409e-04
4.890392337e-05
-2.259964752e-01
-4.333049437e-06
-9.137212628e-06
-4.399601535e-04
+2.482226563e-01
+6.280970212e-06
+8.172637085e-06
+8.995988551e-04
1.128250461e-04
-8.220609960e-02
+1.003875667e-01
3.434228729e-04
-1.997885285e-06
-3.746373625e-03
-1.783264969e-01
+2.782370281e-06
+4.741071351e-03
+1.784260907e-01
2.513340762e-03
1.723785745e-04
2.568353575e-05
-1.232542079e+01
+1.283199094e+01
1.069392684e-04
4.413292795e-05
3.726152071e-04
9.473019173e-05
2.927996899e-04
9.930838136e-05
1.276803422e-04
-4.584846266e-06
-1.861357833e-03
-2.533527887e-02
-7.114240229e-04
+5.978514627e-06
+2.044572294e-03
+3.504823945e-02
+8.304931863e-04
3.131072504e-04
-1.039604966e-04
+2.356364783e-04
1.660890629e-04
-3.927308744e-03
+5.504589544e-03
9.379375770e-05
1.225443190e-04
-2.714942420e-02
-1.447964912e-02
+2.833779938e-02
+2.625861972e-02
2.823860181e-05
-7.470523204e-04
-1.900906380e-02
+9.011009568e-04
+3.595391586e-02
5.014169465e-05
4.047037530e-04
5.563333417e-05
4.466739563e-04
8.692795891e-04
-2.602127277e-03
+3.056040572e-03
2.925309790e-04
-5.052368103e-05
+6.710137478e-05
1.354226954e-04
2.305815648e-05
1.355268547e-04
3.289279911e-03
-3.325337978e-02
-1.554025776e-03
+3.402517598e-02
+1.713243871e-03
1.653465800e-04
-2.152226639e+01
-1.311773002e+01
-3.205902794e-02
-9.823884396e-04
-3.168430463e+00
-1.258193298e-03
+2.389131174e+01
+5.508001759e+01
+5.111946070e-02
+7.016208298e-04
+4.865744554e+00
+1.371685192e-03
1.061245162e-04
-9.581398749e-03
-7.051854639e-01
+1.479145609e-02
+1.028141156e+00
2.809456687e-05
-4.981698631e-03
+5.987782235e-03
3.999833670e-05
2.471565349e-04
1.079186221e-04
-5.870062606e-01
+9.762080159e-01
3.832244738e-05
-6.877489971e-04
-7.037801185e-03
-3.685553769e-01
+6.877417505e-04
+1.027992422e-02
+5.488325807e-01
1.491764933e-04
-1.304009780e-02
+1.103999972e-02
2.180676924e-04
-3.389240168e-03
+7.566618880e-03
1.142315046e-04
-9.575899657e-04
+9.030480350e-04
4.960417218e-05
5.062567959e-05
1.157219344e-04
2.708079495e-04
6.286693208e-04
2.270751602e-04
-1.211556245e-01
+2.522627000e-01
4.262378055e-03
-2.088632017e-02
+2.793980711e-02
1.986301851e-04
3.114100076e-04
3.158039050e-04
6.128501856e-04
-1.410503310e-04
-2.046889015e-01
-8.078140376e-04
-1.129148878e-03
-4.309000352e-04
-1.929389979e-02
-3.133165382e-03
-1.260054614e-05
-3.596146856e-05
-1.901510069e-03
+2.170268212e-04
+5.199330497e-01
+1.338128179e-03
+1.033068311e-03
+9.489047764e-04
+3.392016308e-02
+5.359304124e-03
+1.706672991e-05
+4.984362278e-05
+1.984580027e-03
2.553021289e-03
2.619515722e-04
5.931373303e-05
-1.475859767e-03
-4.366272933e+00
+1.643589439e-03
+6.101540610e+00
1.170972641e-04
-1.494986734e-04
+1.797723524e-04
2.107853089e-04
-7.803837399e-07
+1.206002358e-06
2.361375492e-04
3.114570131e-05
6.767353195e-04
-5.242771012e-06
-8.219747471e-03
-2.040357385e-02
-4.065491314e-03
+8.082270169e-06
+3.573312337e-03
+1.554636757e-02
+4.197495065e-03
1.815709729e-04
1.476815224e-04
2.802228835e-05
1.492292367e-04
9.996196807e-05
-1.450582643e-02
-6.534519523e+00
+1.873547152e-02
+8.844181063e+00
9.118804523e-05
-9.320429646e-02
-9.815014615e-04
-3.729733622e-04
-1.113756309e-01
-7.260863411e-01
-1.509362918e-03
-4.513728355e-02
+9.247625320e-02
+1.027296582e-03
+5.270578544e-04
+1.158479253e-01
+1.567125218e+00
+2.027611546e-03
+3.649021915e-02
4.708677043e-05
-1.031052948e-03
-2.777621140e-04
+1.259695966e-03
+4.192479309e-04
1.562437699e-04
-1.085859233e+01
-8.131613704e-02
+3.428151219e+01
+1.256322633e-01
3.880282578e-04
-3.283342319e-04
-8.438467332e-05
-1.297754706e+01
+3.157577764e-04
+1.047623520e-04
+2.237836835e+01
1.380029047e-04
2.658677913e-05
-3.364947681e+02
+5.542730180e+02
4.240577221e-04
2.285210337e-05
1.573018018e-04
-2.080205759e-02
+3.271174470e-02
4.930386129e-04
9.854944074e-05
-1.052896280e-04
-6.227241435e+01
-3.528991205e-04
-1.185312483e-04
+1.079787230e-04
+7.671826364e+01
+4.632236955e-04
+1.480063928e-04
3.615986547e-04
-9.668361425e-06
-8.361545327e-03
-2.740821113e+00
-4.599572047e-02
-1.696356509e-04
-3.643987106e-02
-8.167226124e-04
-3.102075683e-04
-7.787896961e+00
-1.416435128e-02
-1.303327707e-04
-5.272305796e-02
-7.518430943e-03
-3.351234898e-04
-1.796930896e-03
+3.212319091e-05
+8.415862780e-03
+2.732586753e+00
+7.092536433e-02
+3.449321205e-04
+5.719550026e-02
+1.131967126e-03
+3.559635380e-04
+9.205620631e+00
+1.697132964e-02
+1.392713947e-04
+9.288013681e-02
+7.082268393e-03
+4.793396026e-04
+6.831813915e-03
3.581697236e-04
1.124757858e-04
9.228471900e-05
-2.222957005e-05
-4.557912620e+04
-6.223351052e-06
-4.845643963e-04
+2.431005308e-05
+7.654755458e+04
+1.172952194e-05
+9.042725215e-04
9.360164410e-05
2.550307096e-04
-1.765008108e-03
+1.930826180e-03
1.081811315e-03
-2.461043324e-04
-3.354875943e-02
-1.275580650e+00
-1.139959672e-01
-1.023979237e+01
-6.460315878e+00
+3.527605258e-04
+4.744592096e-02
+4.369902194e+00
+1.134064224e-01
+1.367298667e+01
+7.101303172e+00
1.121323513e-04
1.546594530e-04
1.293638214e-04
-4.956363611e-02
-5.709073082e-05
+7.258869834e-02
+6.623935927e-05
3.214963224e-05
-1.031409169e-01
+1.032632509e-01
1.655303263e-04
-1.655465115e-01
+1.955254915e-01
1.008034112e-04
1.301270298e-04
-1.054905192e-03
-1.455493528e-02
-2.112107789e-01
-2.037737039e+02
+2.551350148e-03
+1.543800351e-02
+2.163803989e-01
+2.672245491e+02
2.500822314e-04
-5.996018951e-01
-1.414309119e-01
+7.907200180e-01
+2.331306754e-01
1.083909825e-04
-2.157197690e-02
-1.337031769e-02
-2.769741919e-03
+2.170646680e-02
+1.345865894e-02
+3.200449665e-03
8.197414678e-04
-1.320395245e-02
+1.395112500e-02
8.933345362e-04
-1.669210751e-02
-1.018939946e+01
+2.151719896e-02
+1.755506753e+01
1.197659900e-04
-1.983551782e-04
+2.072552266e-04
3.008525154e-04
-1.253912175e-02
-1.557291634e-02
-4.526924177e-02
-1.171826786e-03
-3.128654585e+00
-5.577390760e+05
+1.369162101e-02
+1.647991757e-02
+6.800840141e-02
+1.582991589e-03
+3.365801607e+00
+6.875618140e+05
1.295857876e-04
-1.651265256e-02
-5.733146242e+01
-8.452290913e-04
-2.014240383e-03
+1.908748465e-02
+5.635344081e+01
+1.077933654e-03
+3.058957788e-03
3.460074285e-04
-5.838985700e-03
-7.112566945e-03
-1.869466438e-01
-4.765440485e-03
+5.518554608e-03
+1.106575829e-02
+2.402953560e-01
+1.237449527e-02
1.248378501e-04
1.000399208e-04
-2.525828094e-03
-6.082682953e-03
+5.679362549e-03
+1.032204020e-02
1.011381634e-04
3.185923639e-04
-5.224705147e-04
+3.844923560e-04
3.280390914e-05
8.715706159e-04
-7.930556369e-03
-4.580985182e-02
+7.461885355e-03
+5.994155262e-02
6.757655850e-04
-2.382727584e-03
-1.065609853e+01
-2.427139501e-03
+2.642663278e-03
+1.962238387e+01
+4.764743268e-03
1.300888123e-04
4.335274882e-04
-8.267723810e+00
+1.188380835e+01
1.208458030e-04
1.237501363e-04
-7.024189439e-04
-8.794054280e-03
-8.548494953e-05
+6.921153299e-04
+1.383656909e-02
+9.407899597e-05
1.280108983e-04
-1.021062160e-04
+1.187187446e-04
2.967084289e-05
-2.689063097e-03
+3.144724135e-03
1.135473926e-04
-1.110252903e-04
-4.004230347e-02
-3.689425036e+01
-5.980471294e-03
-1.414167825e-02
-1.315285877e-01
+1.143628001e-04
+6.761029177e-02
+3.763194633e+01
+5.872539200e-03
+2.034484250e-02
+1.680469150e-01
2.476672527e-05
1.138191748e-04
4.726715474e-05
2.944863584e-04
-4.140798684e+01
-3.173382963e-03
+6.081795609e+01
+6.821481189e-03
1.203475363e-04
-5.979086173e+02
-1.103127774e-05
+1.904216138e+03
+1.858847535e-05
3.243333439e-05
-2.974493193e-01
+4.401934489e-01
3.484398356e-04
-1.837552457e-03
-4.643960352e-05
+1.220210030e-03
+7.899960568e-05
3.516928637e-03
1.059770653e-04
9.563081020e-05
-9.258296340e-03
+1.402209564e-02
5.891289261e-05
-1.251235076e-02
-5.337367630e-03
-4.859525943e-04
+1.136962519e-02
+8.076977444e-03
+5.595499288e-04
5.448877343e-05
-2.770576922e-03
+2.665008433e-03
2.178023997e-04
1.085590656e-04
1.032016725e-04
-1.022991935e-02
+2.891962469e-02
2.138692546e-04
-2.138839427e-02
-3.633844768e-02
+3.408296197e-02
+6.150341965e-02
8.378415142e-05
-5.322144621e-04
-3.596902641e-03
+1.216021592e-03
+4.964239828e-03
1.560038234e-04
4.899843769e-04
-1.135795298e+01
-9.396936619e-04
+1.119752872e+01
+2.756180547e-03
9.023823569e-05
-3.088045747e+00
+4.745435338e+00
9.413418639e-05
8.872917930e-04
-2.353400476e-03
+2.858121959e-03
5.628977029e-05
-1.474836093e-03
-9.480268554e-06
-1.624456418e-02
-6.636857291e+02
+2.477269207e-03
+1.235919400e-05
+1.615862272e-02
+7.771246223e+02
3.756995307e-04
-6.346707812e-01
-7.290867703e-06
-2.517949649e-01
+7.633959938e-01
+1.534050423e-05
+3.260029181e-01
1.916257136e-04
-3.516378334e-04
+7.810829201e-04
9.387644444e-05
-9.428890442e-05
-8.719505546e-01
+2.016787618e-04
+8.587158717e-01
1.127126157e-04
-7.311629248e-04
+1.254692794e-03
3.457815336e-05
2.039559066e-04
-4.194926473e-02
+8.496794813e-02
3.028158196e-05
-5.799317948e+01
+7.102068643e+01
1.360753276e-03
1.679520947e-04
-7.276754706e-03
+1.229901344e-02
5.643962954e-05
-7.667206385e-03
-3.928060744e-03
-6.653581254e-04
-4.096509145e-03
-1.091107920e-01
-8.548524659e+02
+6.813840704e-03
+4.756451916e-03
+1.597605547e-03
+7.174347009e-03
+2.159998193e-01
+2.013439039e+03
3.349636293e-04
-5.913560784e-03
-2.979877290e-03
-5.197317955e+00
+5.574037446e-03
+4.693704404e-03
+9.310457332e+00
2.283654120e-04
-1.981310670e-04
+3.652842338e-04
5.082389398e-05
4.542851813e-05
5.767698162e-04
-2.204984267e-03
-1.121904341e-04
-3.128429170e-03
-8.380749835e-05
-7.168165555e-05
-1.832787071e-02
+3.610467962e-03
+2.186443061e-04
+4.826962780e-03
+1.186548668e-04
+6.929577226e-05
+4.710600998e-02
2.459180649e-05
9.523408352e-05
-3.403382942e-03
+4.338995882e-03
2.073324990e-04
-4.619931543e-03
-5.772622252e-04
+1.021587277e-02
+4.489006850e-04
6.439976526e-05
-4.115863452e-05
-3.950532689e-02
-1.299819887e-01
-4.105004463e+01
-4.601722241e-02
-2.211404837e-04
-2.583990232e-03
-9.922194871e-03
-2.656394920e-01
-3.858654455e-04
-3.516052424e+00
+3.665917556e-05
+5.034608865e-02
+1.966390229e-01
+4.047093704e+01
+5.863765082e-02
+3.059465917e-04
+3.564185570e-03
+1.055791727e-02
+2.943479734e-01
+7.643461664e-04
+1.674287714e+00
2.418724223e-04
4.481083929e-04
3.806946044e-05
2.358260482e-04
2.141012234e-04
-9.675511093e-03
+1.199789388e-02
4.023708400e-05
-1.558195410e-04
+2.850316648e-04
4.056034531e-05
-1.224707562e-04
+2.249866253e-04
1.325723645e-04
4.895684571e-04
4.067396732e-03
2.469019094e-03
-7.938547254e-01
+1.094233592e+00
5.104679277e-04
-6.572373702e-04
+6.624315495e-04
4.788159213e-03
2.276806510e-04
-1.990084794e-01
-6.983011462e-04
-9.007090319e-04
+2.453593934e-01
+1.749456695e-03
+1.429297784e-03
1.471657954e-04
-1.568809966e-03
+2.616207784e-03
3.067219810e-04
-1.207477743e-02
+1.370888966e-02
2.429222425e-05
-4.861923373e-05
-2.468034872e-01
+8.608554669e-05
+4.673367169e-01
3.148048725e-05
-5.306600282e-02
-1.815492624e-04
-2.462680043e-01
+6.390555717e-02
+3.221551402e-04
+2.921616179e-01
3.327928345e-04
-1.882544138e-03
+2.319147072e-03
1.103899372e-04
3.664071097e-05
-1.410166036e+01
-1.689054711e-02
-7.567167690e-02
+1.716588801e+01
+2.518994603e-02
+9.190783524e-02
1.240105753e-04
-2.498971531e-03
-9.825890714e-03
+4.179237678e-03
+1.545295989e-02
3.182174684e-04
-7.607676274e-05
+1.257846919e-04
9.482292407e-05
-7.229516539e-04
-3.392454948e-03
+8.872190404e-04
+2.825909683e-03
2.244334434e-05
-1.774024765e+00
-6.839046456e-04
-4.727255665e-04
-9.281857447e-01
+1.716869813e+00
+8.117241901e-04
+6.469412298e-04
+1.691855695e+00
1.535883616e-04
-7.709875055e-01
-7.130244301e-04
+1.027480910e+00
+7.094129864e-04
9.396416016e-05
-8.762427628e-03
+1.524051986e-02
7.320722624e-05
4.761782022e-04
1.422110884e-04
2.433148599e-04
-1.787594550e+00
-3.093708511e-02
+3.017238240e+00
+3.501723493e-02
1.079651944e-04
-9.700861802e-03
-5.116775019e-01
-7.216192107e-05
+1.245760722e-02
+1.884919516e-01
+7.669886228e-05
7.018661752e-05
-4.295732553e-03
+5.818507053e-03
3.294463373e-05
-1.210453147e-02
-8.100956569e-02
-1.585321910e-03
+1.317160762e-02
+1.040784030e-01
+1.738789034e-03
8.817738764e-05
-5.148847198e-01
-1.299032429e-01
+3.075224509e-01
+1.404818516e-01
2.901071197e-05
-1.003508641e-02
-1.881606260e+00
-1.740318079e-04
-1.696952094e+01
-1.539545047e-02
-8.163515934e-02
+1.680367025e-02
+2.030028790e+00
+2.949873658e-04
+1.612948731e+01
+1.834917574e-02
+9.436237405e-02
2.025713456e-04
-1.214363546e-04
-8.691956517e-03
+2.060193856e-04
+8.880612319e-03
1.608013885e-04
-1.101652851e-04
-3.446830873e-02
-5.409091500e-05
+1.924509396e-04
+4.341433008e-02
+6.814745562e-05
4.244420895e-04
-2.662941694e-01
-7.758870243e-04
+2.839738561e-01
+1.574973790e-03
1.036076609e-04
-7.129974834e-05
-8.046972731e-05
+7.306444458e-05
+1.459228275e-04
4.776089006e-05
1.161366560e-02
-8.285895084e-03
+9.817234053e-03
4.041457526e-04
-1.343652142e-01
+1.829866175e-01
2.809430727e-04
-2.149871994e-01
+1.982671356e-01
1.351552343e-04
-3.756040907e-03
-8.686266262e-01
-4.103791235e-03
-4.162803530e-04
-4.810111700e-01
+4.726084697e-03
+9.765900160e-01
+4.443914179e-03
+4.221710553e-04
+8.205294603e-01
1.648445512e-03
-7.683037789e-02
+7.243652543e-02
9.391122442e-05
-3.746742912e+01
+4.532246653e+01
1.437770918e-04
-1.235186996e-03
+1.686108883e-03
1.263656361e-04
-5.139052981e-01
-8.827684721e-02
-4.131602477e+00
+7.431724358e-01
+9.741973003e-02
+4.263968370e+00
1.042327086e-04
1.161200978e-04
-1.791809445e-02
+3.210730687e-02
4.161504213e-05
-9.637383692e+01
-2.540542612e-03
-3.451065513e-04
+2.329625946e+02
+2.904600539e-03
+4.897115080e-04
1.375080609e-04
-2.328872007e-03
-1.782198706e+00
+4.240627192e-03
+1.088785668e+00
1.167608492e-04
-9.147351716e-02
-1.494902039e-03
-1.530690309e-04
+1.480257791e-01
+2.163188683e-03
+2.125501201e-04
2.449407644e-05
-6.170980956e-02
-6.955847458e-01
+1.378167148e-01
+6.755113223e-01
2.344147663e-03
-9.580718135e+00
-1.491890895e-03
-9.573173402e-06
-2.750738576e-04
-9.245097109e-04
+2.013202112e+01
+1.456104392e-03
+1.180715037e-05
+5.849694609e-04
+1.037415359e-03
1.534796761e-04
1.005258457e-04
-5.988869543e-01
+6.100626143e-01
4.614088778e-05
1.601353109e-04
9.791225750e-05
-2.643941643e-04
+4.541626111e-04
9.064656048e-05
-3.079960351e-01
+2.208504277e-01
1.361559760e-04
-2.380912405e-03
+2.731869947e-03
1.658806385e-04
-8.569119726e-05
+1.319168368e-04
2.879302961e-05
9.419752050e-05
1.677128322e-04
-6.676152296e-03
-6.691071371e-03
+7.026920890e-03
+1.494733669e-02
9.904304271e-05
-3.882984707e-02
-2.968711665e-03
-1.102007470e-01
-1.177141451e-02
-2.868207238e-05
-2.953275916e-04
+3.897767295e-02
+4.412289351e-03
+1.166181443e-01
+1.599126942e-02
+3.612593341e-05
+4.627090971e-04
9.654682824e-05
-6.884934400e-05
+6.796035892e-05
1.032474367e-04
-2.165344231e-02
+2.407184069e-02
1.858051144e-04
-7.611391207e-02
+5.568351467e-02
2.267029091e-04
7.307390695e-04
-1.387304113e-03
+1.832766807e-03
2.052774045e-04
3.210827035e-05
-1.288836707e-04
-1.128107515e-01
+1.471618931e-04
+1.421917545e-01
1.017415635e-04
-1.052576251e+01
-3.243400126e-05
+3.111127248e+01
+3.616583417e-05
3.197408063e-04
-3.894927923e-04
-1.136627647e+01
+4.731037348e-04
+1.149871454e+01
2.195296405e-04
7.202976656e-04
-2.602185986e+01
+2.950305036e+01
1.024559301e-04
-3.014142540e-03
+5.036682704e-03
2.463569686e-04
-6.768254698e-02
-4.195984062e-02
+7.519837733e-02
+5.598752925e-02
1.211295294e-04
-3.546733580e-04
+5.964870933e-04
1.357670363e-04
-2.667222247e-05
-9.630440305e-04
-1.099605755e+01
-5.016723110e-03
-3.104891543e-03
-7.999847226e-03
+4.605773387e-05
+1.218257140e-03
+1.632204489e+01
+5.627368302e-03
+3.949903801e-03
+8.070667718e-03
1.411460123e-04
4.024018503e-04
2.909383475e-05
5.627652994e-05
-7.197045665e-05
+9.182636429e-05
1.527939945e-03
2.384578790e-04
-4.055189638e-04
+5.698972493e-04
2.014679260e-04
-1.649079849e-02
-1.726791289e-02
-9.943404808e-02
-1.524247216e-01
+1.858143537e-02
+2.270585994e-02
+9.106577651e-02
+1.947088682e-01
1.162223002e-04
-6.792188710e-02
-3.578913900e-01
+7.950325757e-02
+3.625454971e-01
2.064700725e-04
-4.197650112e-04
-2.080114197e+03
+4.522138939e-04
+3.124246386e+03
1.046890360e-04
3.078011245e-04
-7.776949058e+00
-6.599654781e-04
-1.348364593e-03
+9.442955277e+00
+7.401426676e-04
+1.656787166e-03
8.805722407e-05
2.497968081e-04
2.132780758e-04
9.830052305e-05
-9.466811723e-06
-4.609414732e-05
+1.292271597e-05
+4.797949533e-05
1.213265970e-04
3.072609546e-04
1.857096047e-04
-1.552325558e-03
-1.155885756e-03
-1.160103610e-03
+1.540009299e-03
+1.222292048e-03
+1.505994796e-03
2.513699688e-05
3.051704234e-05
-1.845676222e-01
+2.902305027e-01
1.739580726e-04
1.174762036e-04
8.588444340e-04
-3.592368648e-04
-7.898958791e-04
-1.601094482e-03
-3.818193760e-04
+4.570046082e-04
+1.483067419e-03
+1.658106579e-03
+7.810285070e-04
6.968689320e-05
2.405338247e-05
9.936696575e-04
1.391451560e-04
-4.626304893e+01
-1.208468603e-01
+6.291697554e+01
+1.260630442e-01
5.822398475e-03
-5.629607566e-03
+1.204244272e-02
1.696711863e-04
4.144406619e-04
6.591990768e-05
1.435163652e-04
-7.506207850e-03
-1.178122353e-02
-7.136806085e-03
-1.364087703e-05
+1.220412953e-02
+6.279807290e-02
+2.530466769e-02
+2.472295007e-05
4.741922973e-05
-5.312260852e+02
-6.779973748e-04
-8.387043840e-02
-1.303135677e+00
+1.018759611e+03
+7.199598631e-04
+1.045873728e-01
+2.655979608e+00
1.007080930e-04
1.110172615e-04
-1.767620376e-02
+2.125037446e-02
3.636411613e-05
-1.087565662e-03
-2.275146457e-02
-2.570721130e-05
+1.154361882e-03
+2.456882090e-02
+7.050986228e-05
1.420146209e-04
1.195304794e-04
-1.951438002e-04
-2.314505051e-02
+2.742103518e-04
+3.326002481e-02
1.734735034e-04
-2.107707587e-01
+1.881431473e-01
3.273084954e-04
2.366787035e-04
-1.540099548e-04
-2.169736108e-02
-1.663549064e-04
-4.703180165e-01
-6.054657458e-04
-3.993058982e-02
-2.772559541e-06
+1.926302282e-04
+2.083185498e-02
+2.185721580e-04
+4.264058389e-01
+7.601305869e-04
+6.189691291e-02
+4.092551493e-06
2.496193832e-04
-2.380338581e-04
+3.789042865e-04
1.223018739e-04
2.193758625e-04
-1.676091477e-02
-1.213373273e-06
-1.250374679e-04
-3.716033766e-01
-1.000399840e-02
-8.899739384e-05
+2.574294241e-02
+2.046210988e-06
+1.915666446e-04
+3.794168942e-01
+1.252978158e-02
+9.547238621e-05
1.076044744e-04
-1.127569696e-04
-1.465633937e-02
-8.086150878e-02
-4.198961265e-05
-3.950688700e-05
-1.200341280e-03
+1.409920210e-04
+1.911564509e-02
+1.336756705e-01
+5.393338393e-05
+5.522102834e-05
+1.824278365e-03
6.480661903e-05
2.312503029e-04
-1.979967947e-01
+2.790190891e-01
1.444043311e-04
-9.106449667e+01
+1.040950900e+02
8.995789800e-05
3.592918908e-05
4.116833287e-05
3.853527107e-04
1.075427047e-04
-2.077270549e-02
-4.110755225e-02
-1.897843450e-01
-9.972438065e-04
+1.496846014e-02
+4.146804339e-02
+3.312307496e-01
+1.079651374e-03
9.969016666e-05
2.901606512e-04
1.425151937e-04
-1.621407284e-02
-3.518980820e-04
-7.707372015e-02
-5.654405319e-05
+2.078975322e-02
+5.078551233e-04
+1.160028717e-01
+1.040630558e-04
9.332336478e-05
-1.677706272e+01
+1.990099472e+01
9.238284645e-05
-1.228102850e-01
+1.876490368e-01
9.600679071e-04
-1.993144658e-03
+2.200429896e-03
5.329630001e-04
-1.281229552e+00
-5.557753608e-04
-1.783317591e-04
+1.340069405e+00
+7.027491452e-04
+1.988000417e-04
3.588640855e-04
1.377971071e-04
-4.872908077e-02
-6.480286726e+00
+6.134813625e-02
+8.576610190e+00
5.029674162e-05
-9.934069791e-03
-1.214629176e-04
+2.081748800e-02
+1.468997942e-04
1.359446358e-04
1.184796147e-04
-1.679163335e-02
-1.991328550e+00
+1.689226519e-02
+1.968278983e+00
1.214352694e-03
-4.856466889e-01
-3.686723944e-04
-3.757261605e-04
+5.731124650e-01
+5.757076591e-04
+4.792196703e-04
2.160989276e-04
2.925931586e-05
-1.193010614e+00
+1.071870196e+00
1.790104239e-04
-4.622920674e-01
-5.567250388e+02
-1.009938372e-01
-5.808002991e+00
+8.686046437e-01
+5.426352043e+02
+1.349129625e-01
+1.061900587e+01
2.883979858e-04
9.186991967e-05
-2.016297647e-04
-3.162474764e-04
-7.003534461e-04
-4.953687878e-03
-2.542121619e-03
+3.582429712e-04
+5.108886432e-04
+1.240853652e-03
+9.439854900e-04
+1.665441327e-03
8.700896036e-04
-2.578545527e-02
-1.355832797e-04
-9.275334440e-04
+3.098378721e-02
+1.405149239e-04
+1.637154118e-03
5.411374800e-05
1.537080481e-03
1.231747034e-04
-3.758991956e-03
-8.921408704e+02
+3.836452168e-03
+1.212708409e+03
1.112385376e-04
8.828054543e-05
-1.649526303e-03
-8.771704599e-01
+1.594677226e-03
+8.586797735e-01
5.898960724e-04
-8.577883281e-03
-1.469454030e-02
-3.965325460e-02
+9.238217776e-03
+1.449649745e-02
+4.145312552e-02
1.906454990e-04
1.178028573e-04
2.706747696e-04
-1.302051510e-03
-1.241894615e+01
-7.795976139e-04
-2.819890496e+00
+1.630854456e-03
+1.337826729e+01
+8.602559011e-04
+3.869236331e+00
2.498774377e-05
-8.955062845e-04
+1.192742817e-03
5.891145930e-05
-1.518587247e+02
+1.733720017e+02
7.033568819e-04
2.231380670e-05
1.210751613e-04
1.877660204e-04
1.264579897e-04
-1.659840025e-01
+1.965258742e-01
1.320462019e-04
-2.038764963e-02
-4.038022792e-05
-2.129851996e-02
-7.435728290e+00
-3.582670579e-04
+1.908151639e-02
+4.380867551e-05
+1.918549659e-02
+5.629024083e+00
+4.452112803e-04
2.513311254e-04
-4.516530721e-02
-3.297510819e+02
-2.562713308e-03
-9.027000831e-06
-9.238170468e-04
-2.531928212e-02
+4.922903062e-02
+1.000625665e+03
+2.857595806e-03
+1.588372106e-05
+1.145867697e-03
+3.676906338e-02
1.373062562e-04
1.335125321e-04
6.074539008e-04
5.369900572e-04
-2.492311403e-02
-1.795169585e-04
-7.893990096e-04
-3.852437641e-01
-6.208174010e-03
+2.492489419e-02
+2.079770069e-04
+1.075209942e-03
+3.423020055e-01
+7.637391606e-03
3.520850586e-05
-1.960267763e-03
+2.370996049e-03
9.585785657e-05
-1.334571718e+01
+3.025546792e+01
9.898259475e-05
4.900171378e-04
-1.954468828e-03
-2.463145888e-03
+2.106409531e-03
+4.000807536e-03
1.018049686e-04
4.267717529e-04
-4.148005723e-02
-2.650199534e-03
-7.174477761e-05
-8.713744946e-04
+4.915106172e-02
+5.268306168e-03
+7.911854267e-05
+9.240055363e-04
3.619008970e-04
-3.335875334e-02
-2.546482008e-02
-4.742717689e-04
+3.294951088e-02
+3.333169656e-02
+5.101300222e-04
5.510455038e-04
-3.030801503e-03
-3.056947669e-02
-3.315053717e-02
-1.672462329e-01
+5.553730917e-03
+2.175093646e-02
+5.297699186e-02
+2.309404876e-01
4.571960152e-05
-3.601283810e-04
-2.273382619e-04
-2.256283865e-03
+5.616437053e-04
+4.279246465e-04
+2.633208979e-03
2.406434239e-04
7.117447369e-03
-1.775247364e-01
-7.620281579e-04
-1.153421712e-03
-6.912314270e-06
-4.496315388e-04
-3.720311617e-05
-5.703206191e-04
-4.118684298e-01
-8.445167709e-03
-1.082570845e-01
+2.649426322e-01
+7.100334953e-04
+1.610029483e-03
+7.575275354e-06
+5.017242247e-04
+5.287224271e-05
+9.105701874e-04
+5.298316185e-01
+1.028575636e-02
+1.041806040e-01
6.807415661e-05
-4.215988499e-04
-6.002677003e-05
-6.135207878e-03
-8.268490174e-05
+7.063945171e-04
+2.124816297e-04
+8.064181477e-03
+1.150903425e-04
2.260675836e-04
-8.161941689e-03
-8.825143571e-05
-1.119111030e-03
+1.424489691e-02
+1.169098604e-04
+1.744035482e-03
1.622389800e-04
-8.632762162e-03
-2.349305042e-02
-5.729231842e+00
-1.297705190e+01
+2.011346149e-02
+3.461646440e-02
+9.675707133e+00
+1.731135269e+01
1.259568232e-04
-1.519563384e-03
-1.905554433e-01
-5.639776292e-03
-6.852533710e-04
+1.937056209e-03
+1.967581019e-01
+6.480685167e-03
+9.588475755e-04
2.470262316e-05
6.474543977e-05
-5.422549635e-02
+1.012994357e-01
4.740072402e-04
-1.992265382e-02
-3.103977965e-04
+2.898783735e-02
+2.974776562e-04
3.104605467e-04
5.659488989e-05
9.038825926e-05
1.456391164e-04
4.374694250e-05
-2.487315956e-03
-5.753437922e-02
-1.210284428e+02
-4.593975972e-01
-1.061456000e-02
+3.996599349e-03
+9.853727042e-02
+1.592957554e+02
+5.488044548e-01
+1.535132737e-02
2.862383002e-04
-4.501879272e-03
+5.411494897e-03
1.093495163e-04
-1.108490651e-03
-1.581400763e-05
-8.475687354e-04
-5.265945866e-02
-9.149233887e-05
+1.967538547e-03
+1.831843411e-05
+1.013915617e-03
+6.410814508e-02
+1.071468599e-04
1.429415766e-04
9.952070558e-04
-2.657892069e-03
-1.146012615e-03
-3.652815601e-04
+4.216768413e-03
+2.056894140e-03
+4.824620724e-04
2.724771515e-04
-3.254465759e+00
+4.314993939e+00
1.125893737e-04
-2.192686509e+02
+2.367976693e+02
1.366554114e-04
-7.913473591e-04
-3.782597720e-02
+1.004461323e-03
+4.719539036e-02
1.369205061e-04
-1.015843498e-03
+1.572630454e-03
2.456887865e-04
-1.523115465e+00
-3.422862957e+00
+2.346815525e+00
+4.325952399e+00
2.259416933e-04
1.421937261e-04
3.898091419e-05
-1.572350823e-03
+2.367710392e-03
3.848270122e-04
-2.661667965e-03
-4.739872211e-01
+3.271114836e-03
+6.106384793e-01
1.166578481e-04
-2.860269966e+05
+3.432703929e+05
1.103438901e-03
2.374822723e-04
-8.476209758e-02
-6.180692692e-02
+1.601676332e-01
+6.996061234e-02
2.911689675e-04
-1.300493641e-03
-6.868988577e-05
-2.329961156e-03
-2.986034208e-03
+1.354570579e-03
+1.668724618e-04
+4.370130389e-03
+9.592218558e-03
9.749602234e-05
1.407913649e-04
1.376873491e-04
-1.462709667e-03
-1.709018313e-01
-3.872968309e-04
-6.144923039e-02
-2.102210189e-02
+2.162885615e-03
+5.651709799e-01
+6.264766613e-04
+6.837023336e-02
+3.104279143e-02
1.854758324e-04
-1.959116825e-01
+1.364200279e-01
9.376191433e-05
-9.148540379e+01
+1.386738814e+02
1.123414064e-04
-4.716637145e-05
-1.196857067e+00
-4.466287729e-02
-1.177316530e+02
-2.314903709e+00
+4.819771093e-05
+1.159468731e+00
+6.173239434e-02
+1.644708393e+02
+1.402434326e+00
9.962053975e-04
-6.573553564e-06
+1.194206700e-05
2.984590978e-04
-4.257793553e-03
-3.414466498e-02
+4.751127691e-03
+6.643914452e-02
1.191655122e-03
-2.816036581e-03
+3.965285764e-03
3.569829141e-04
-4.124290336e-03
-2.283821700e+00
+4.684450477e-03
+2.653150547e+00
1.385213659e-04
2.103888027e-04
-1.944774213e+00
-1.339213108e+00
-4.404706241e-02
-4.630068903e-04
+2.227809091e+00
+1.328226663e+00
+4.463595237e-02
+7.218407153e-04
5.527571105e-04
-1.206071458e-03
-2.791106513e-03
-2.553389476e-02
-4.254196581e-01
-8.368916976e-03
-1.736629013e-03
-3.871618875e-04
+2.256446841e-03
+5.043765034e-03
+2.710558505e-02
+6.320486733e-01
+8.592081501e-03
+2.341245258e-03
+5.765066121e-04
1.420400446e-04
-4.981802572e+00
-9.586116308e-03
-1.092576081e-01
-9.468186838e-03
+5.089445745e+00
+1.940247942e-02
+1.094689079e-01
+1.337815610e-02
1.136629572e-04
-1.849087315e-02
-1.876225397e+00
-3.119823798e-02
-1.205040187e-02
-1.503416243e-03
-3.476448031e-01
-7.828807892e+02
-5.573640741e-01
+2.859868211e-02
+2.784829879e+00
+6.871318076e-02
+1.182002270e-02
+2.179767187e-03
+7.567350383e-01
+2.216126439e+03
+1.368861186e+00
7.484527837e-05
8.125565203e-05
-2.010678333e-04
+2.372605962e-04
1.198639243e-04
-1.330130379e-04
+1.624524009e-04
4.884049218e-05
-6.736229685e-03
+6.716331016e-03
1.488978611e-04
4.261148894e-05
-3.014520710e-03
+3.318955239e-03
1.776170834e-04
6.037534955e-05
-1.064832948e-03
-8.513619987e-04
+9.619490317e-04
+1.384401907e-03
1.743230221e-04
-2.237944193e-03
+2.425236900e-03
9.504451723e-05
-1.309867154e-02
-5.481224773e-02
-6.779140407e-04
-6.394068332e+00
-1.010270780e-02
-1.497781769e+01
+1.441539130e-02
+1.354068941e-01
+9.143633563e-04
+9.129291936e+00
+1.219012564e-02
+2.260282580e+01
1.530677272e-03
1.532131120e-03
1.330915341e-04
1.062403808e-04
-8.496368075e-02
-8.655627663e+00
+1.750940436e-02
+1.313151817e+01
4.562587100e-04
-1.268882032e-02
+1.591082191e-02
2.863978281e-04
-5.380908638e-05
-3.010177498e-01
-3.227609984e-03
+7.054953709e-05
+3.232923866e-01
+4.653626323e-03
4.108360358e-05
-3.462506248e-03
-7.583142415e+02
+6.600877744e-03
+1.816314964e+03
diff --git a/t/test_classify.cc b/t/test_classify.cc
index fbbbfb6..fbb2442 100644
--- a/t/test_classify.cc
+++ b/t/test_classify.cc
@@ -1,542 +1,557 @@
/**
* \authors The HEJ collaboration (see AUTHORS for details)
* \date 2019-2020
* \copyright GPLv2 or later
*/
#include "hej_test.hh"
#include <array>
#include <cstdlib>
#include <iostream>
#include <random>
#include <string>
#include <vector>
#include "fastjet/JetDefinition.hh"
#include "HEJ/Event.hh"
#include "HEJ/event_types.hh"
#include "HEJ/exceptions.hh"
#include "HEJ/PDG_codes.hh"
namespace {
const fastjet::JetDefinition JET_DEF{fastjet::JetAlgorithm::antikt_algorithm, 0.4};
const double MIN_JET_PT{30.};
const std::vector<std::string> ALL_QUARKS{"-4","-1","1","2","3","4"};
const std::vector<std::string> ALL_PARTONS{"g","-2","-1","1","2","3","4"};
const std::vector<std::string> ALL_BOSONS{"h", "Wp", "Wm", "Z_photon_mix"};
const std::vector<std::string> ALL_G_Z{"photon", "Z"};
const std::vector<std::string> ALL_W{"W+", "W-"};
const std::size_t MAX_MULTI = 6;
std::mt19937_64 RAN{0};
bool couple_quark(std::string const & boson, std::string & quark){
if(std::abs(HEJ::to_ParticleID(boson)) == HEJ::ParticleID::Wp){
auto qflav{ HEJ::to_ParticleID(quark) };
if(!HEJ::is_anyquark(qflav)) return false;
const int W_charge = HEJ::to_ParticleID(boson)>0?1:-1;
if(W_charge*qflav < 0 && !(std::abs(qflav)%2)) return false; // not anti-down
if(W_charge*qflav > 0 && (std::abs(qflav)%2)) return false; // not up
quark=std::to_string(qflav-W_charge);
}
if(HEJ::to_ParticleID(boson) == HEJ::ParticleID::Z_photon_mix){
auto qflav{ HEJ::to_ParticleID(quark) };
if(!HEJ::is_anyquark(qflav)) return false;
}
return true;
}
bool match_expectation( HEJ::event_type::EventType expected,
std::array<std::string,2> const & in, std::vector<std::string> const & out,
int const overwrite_boson = 0
){
HEJ::Event ev{ parse_configuration(
in,out,overwrite_boson ).cluster(JET_DEF, MIN_JET_PT)};
if(ev.type() != expected){
std::cerr << "Expected type " << name(expected)
<< " but found " << name(ev.type()) << "\n" << ev;
auto jet_idx{ ev.particle_jet_indices() };
std::cout << "Particle Jet indices: ";
for(int const i: jet_idx)
std::cout << i << " ";
std::cout << std::endl;
return false;
}
return true;
}
//! test FKL configurations
//! if implemented==false : check processes that are not in HEJ yet
bool check_fkl( bool const implemented=true ){
using namespace HEJ;
auto const type{ implemented?event_type::FKL:event_type::non_resummable };
std::vector<std::string> bosons;
if(implemented)
bosons = ALL_BOSONS;
else {
bosons = ALL_G_Z;
}
for(std::string const & first: ALL_PARTONS) // all quark flavours
for(std::string const & last: ALL_PARTONS){
for(std::size_t njet=1; njet<=MAX_MULTI; ++njet){ // all multiplicities
if(njet==5) continue;
std::array<std::string,2> base_in{first,last};
std::vector<std::string> base_out(njet, "g");
if(njet>1){ // pure jets only for >=2j
base_out.front() = first;
base_out.back() = last;
if(implemented && !match_expectation(type, base_in, base_out))
return false;
}
for(auto const & boson: bosons){ // any boson
for(std::size_t pos=0; pos<=njet; ++pos){ // at any position
if(njet == 1){
// special case: one jet only for g->h
if(boson != "h" || ((pos==0?first:last) != "g")){
continue;
} else {
base_out.front() = pos==0?last:first;
}
}
auto const & in{base_in};
auto out{base_out};
// change quark flavours for W
const bool couple_idx
= std::uniform_int_distribution<int>{0,1}(RAN) != 0;
if(!couple_quark(boson, couple_idx?out.back():out.front()))
continue;
out.insert(out.begin()+pos, boson);
if(!match_expectation(type, in, out))
return false;
}
}
}
}
return true;
}
//! test unordered configurations
//! if implemented==false : check processes that are not in HEJ yet
bool check_uno( bool const implemented=true ){
using namespace HEJ;
auto const b{ implemented?event_type::unob:event_type::non_resummable };
auto const f{ implemented?event_type::unof:event_type::non_resummable };
std::vector<std::string> bosons;
if(implemented) {
bosons = ALL_BOSONS;
} else {
bosons = ALL_G_Z;
}
for(std::string const & uno: ALL_QUARKS) // all quark flavours
for(std::string const & fkl: ALL_PARTONS){
for(std::size_t njet=3; njet<=MAX_MULTI; ++njet){ // all multiplicities >2
if(njet==5) continue;
for(std::size_t i=0; i<2; ++i){ // forward & backwards
std::array<std::string,2> base_in;
std::vector<std::string> base_out(njet, "g");
const std::size_t uno_pos = i?1:(njet-2);
const std::size_t fkl_pos = i?(njet-1):0;
base_in[i?0:1] = uno;
base_in[i?1:0] = fkl;
base_out[uno_pos] = uno;
base_out[fkl_pos] = fkl;
auto expectation{ i?b:f };
if( implemented
&& !match_expectation(expectation, base_in, base_out) )
return false;
for(auto const & boson: bosons){ // any boson
// at any position (higgs only inside FKL chain)
std::size_t start = 0;
std::size_t end = njet;
if(to_ParticleID(boson) == pid::higgs){
start = i?(uno_pos+1):fkl_pos;
end = i?(fkl_pos+1):uno_pos;
}
for(std::size_t pos=start; pos<=end; ++pos){
auto const & in{base_in};
auto out{base_out};
// change quark flavours for W
const bool couple_idx
= std::uniform_int_distribution<int>{0,1}(RAN) != 0;
if(!couple_quark(boson, couple_idx?out[fkl_pos]:out[uno_pos]))
continue;
out.insert(out.begin()+pos, boson);
if(!match_expectation(expectation, in, out))
return false;
}
}
}
}
}
return true;
}
//! test extremal qqbar configurations
//! if implemented==false : check processes that are not in HEJ yet
bool check_extremal_qqbar( bool const implemented=true ){
using namespace HEJ;
auto const b{ implemented?event_type::qqbar_exb:event_type::non_resummable };
auto const f{ implemented?event_type::qqbar_exf:event_type::non_resummable };
std::vector<std::string> bosons;
if(implemented)
bosons = ALL_W;
else {
bosons = ALL_G_Z;
bosons.emplace_back("h");
bosons.emplace_back("Z_photon_mix");
}
for(std::string const & qqbar: ALL_QUARKS) // all quark flavours
for(std::string const & fkl: ALL_PARTONS){
std::string const qqbar2{ std::to_string(HEJ::to_ParticleID(qqbar)*-1) };
for(std::size_t njet=3; njet<=MAX_MULTI; ++njet){ // all multiplicities >2
if(njet==5) continue;
for(std::size_t i=0; i<2; ++i){ // forward & backwards
std::array<std::string,2> base_in;
std::vector<std::string> base_out(njet, "g");
const std::size_t qqbar_pos = i?0:(njet-2);
const std::size_t fkl_pos = i?(njet-1):0;
base_in[i?0:1] = "g";
base_in[i?1:0] = fkl;
base_out[fkl_pos] = fkl;
base_out[qqbar_pos] = qqbar;
base_out[qqbar_pos+1] = qqbar2;
auto expectation{ i?b:f };
if( implemented
&& !match_expectation(expectation, base_in, base_out) )
return false;
for(auto const & boson: bosons){ // all bosons
// at any position (higgs only inside FKL chain)
std::size_t start = 0;
std::size_t end = njet;
if(to_ParticleID(boson) == pid::higgs){
start = i?(qqbar_pos+2):fkl_pos;
end = i?(fkl_pos+1):qqbar_pos;
}
for(std::size_t pos=start; pos<=end; ++pos){
auto const & in{base_in};
auto out{base_out};
// change quark flavours for W
const bool couple_idx
= std::uniform_int_distribution<int>{0,1}(RAN) != 0;
if(couple_idx || !couple_quark(boson, out[fkl_pos]) ){
// (randomly) try couple to FKL, else fall-back to qqbar
if(!couple_quark(boson, out[qqbar_pos]))
couple_quark(boson, out[qqbar_pos+1]);
}
out.insert(out.begin()+pos, boson);
if(!match_expectation(expectation, in, out))
return false;
}
}
}
}
// test allowed jet configurations
if( implemented){
if( !( match_expectation(f,{fkl,"g"},{fkl,"g","g","g","g",qqbar,qqbar2}, -3)
&& match_expectation(b,{"g",fkl},{qqbar,qqbar2,"g","g","g","g",fkl}, -4)
&& match_expectation(f,{fkl,"g"},{fkl,"g","g","g","g",qqbar,qqbar2}, -5)
&& match_expectation(b,{"g",fkl},{qqbar,qqbar2,"g","g","g","g",fkl}, -5)
&& match_expectation(f,{fkl,"g"},{fkl,"g","g","g","g",qqbar,qqbar2}, -6)
&& match_expectation(f,{fkl,"g"},{fkl,"g","g","g","g",qqbar,qqbar2}, -7)
&& match_expectation(b,{"g",fkl},{qqbar,qqbar2,"g","g","g","g",fkl}, -7)
&& match_expectation(f,{fkl,"g"},{fkl,"g","g","g","g",qqbar,qqbar2}, -8)
&& match_expectation(b,{"g",fkl},{qqbar,qqbar2,"g","g","g","g",fkl}, -8)
&& match_expectation(b,{"g",fkl},{qqbar,qqbar2,"g","g","g","g",fkl}, -9)
&& match_expectation(f,{fkl,"g"},{fkl,"g","g","g","g",qqbar,qqbar2}, -10)
&& match_expectation(f,{fkl,"g"},{fkl,"g","g","g","g",qqbar,qqbar2}, -11)
&& match_expectation(b,{"g",fkl},{qqbar,qqbar2,"g","g","g","g",fkl}, -11)
&& match_expectation(f,{fkl,"g"},{fkl,"g","g","g","g",qqbar,qqbar2}, -12)
&& match_expectation(b,{"g",fkl},{qqbar,qqbar2,"g","g","g","g",fkl}, -12)
))
return false;
if (fkl == "2") {
if( !( match_expectation(f,{"2","g"},{"1","Wp","g","g","g",qqbar,qqbar2}, -3)
&& match_expectation(b,{"g","2"},{qqbar,qqbar2,"g","Wp","g","g","1"}, -4)
&& match_expectation(f,{"2","g"},{"1","Wp","g","g","g",qqbar,qqbar2}, -5)
&& match_expectation(b,{"g","2"},{qqbar,qqbar2,"g","Wp","g","g","1"}, -5)
&& match_expectation(f,{"2","g"},{"1","g","Wp","g","g",qqbar,qqbar2}, -6)
&& match_expectation(f,{"2","g"},{"1","g","g","g","Wp",qqbar,qqbar2}, -7)
&& match_expectation(b,{"g","2"},{qqbar,qqbar2,"g","g","g","Wp","1"}, -7)
&& match_expectation(f,{"2","g"},{"1","Wp","g","g","g",qqbar,qqbar2}, -8)
&& match_expectation(b,{"g","2"},{qqbar,qqbar2,"Wp","g","g","g","1"}, -8)
&& match_expectation(b,{"g","2"},{qqbar,qqbar2,"g","Wp","g","g","1"}, -9)
&& match_expectation(f,{"2","g"},{"1","g","g","g","Wp",qqbar,qqbar2}, -10)
&& match_expectation(f,{"2","g"},{"1","g","g","g","Wp",qqbar,qqbar2}, -11)
&& match_expectation(b,{"g","2"},{qqbar,qqbar2,"g","g","g","Wp","1"}, -11)
&& match_expectation(f,{"2","g"},{"1","g","g","g","Wp",qqbar,qqbar2}, -12)
&& match_expectation(b,{"g","2"},{qqbar,qqbar2,"g","Wp","g","g","1"}, -12)
))
return false;
}
}
}
return true;
}
//! test central qqbar configurations
//! if implemented==false : check processes that are not in HEJ yet
bool check_central_qqbar(bool const implemented=true){
using namespace HEJ;
auto const t{ implemented?event_type::qqbar_mid:event_type::non_resummable };
std::vector<std::string> bosons;
if(implemented)
bosons = ALL_W;
else {
bosons = ALL_G_Z;
bosons.emplace_back("h");
bosons.emplace_back("Z_photon_mix");
}
for(std::string const & qqbar: ALL_QUARKS) // all quark flavours
for(std::string const & fkl1: ALL_PARTONS)
for(std::string const & fkl2: ALL_PARTONS){
std::string const qqbar2{ std::to_string(HEJ::to_ParticleID(qqbar)*-1) };
for(std::size_t njet=4; njet<=MAX_MULTI; ++njet){ // all multiplicities >3
if(njet==5) continue;
for(std::size_t qqbar_pos=1; qqbar_pos<njet-2; ++qqbar_pos){ // any qqbar position
std::array<std::string,2> base_in;
std::vector<std::string> base_out(njet, "g");
base_in[0] = fkl1;
base_in[1] = fkl2;
base_out.front() = fkl1;
base_out.back() = fkl2;
base_out[qqbar_pos] = qqbar;
base_out[qqbar_pos+1] = qqbar2;
if( implemented && !match_expectation(t, base_in, base_out) )
return false;
for(auto const & boson: bosons) // any boson
for(std::size_t pos=0; pos<=njet; ++pos){ // at any position
if( to_ParticleID(boson) == pid::higgs
&& (pos==qqbar_pos || pos==qqbar_pos+1) )
continue;
auto const & in{base_in};
auto out{base_out};
// change quark flavours for W
const int couple_idx{ std::uniform_int_distribution<int>{0,2}(RAN) };
// (randomly) try couple to FKL, else fall-back to qqbar
if( couple_idx == 0 && couple_quark(boson, out.front()) ){}
else if( couple_idx == 1 && couple_quark(boson, out.back()) ){}
else {
if(!couple_quark(boson, out[qqbar_pos]))
couple_quark(boson, out[qqbar_pos+1]);
}
out.insert(out.begin()+pos, boson);
if(!match_expectation(t, in, out))
return false;
}
}
}
}
return true;
}
// this checks a (non excessive) list of non-resummable states
bool check_non_resummable(){
auto type{ HEJ::event_type::non_resummable};
return
// 1j - crossing lines
match_expectation(type, {"g","2"}, {"2","h"})
&& match_expectation(type, {"-1","g"}, {"h","-1"})
// 2j - crossing lines
&& match_expectation(type, {"g","2"}, {"2","g"})
&& match_expectation(type, {"-1","g"}, {"g","-1"})
&& match_expectation(type, {"1","-1"}, {"-1","1"})
&& match_expectation(type, {"g","2"}, {"2","g","h"})
&& match_expectation(type, {"1","2"}, {"2","h","1"})
&& match_expectation(type, {"1","-1"}, {"h","-1","1"})
&& match_expectation(type, {"g","2"}, {"Wp","1","g"})
&& match_expectation(type, {"1","-1"}, {"-2","Wp","1"})
&& match_expectation(type, {"4","g"}, {"g","3","Wp"})
&& match_expectation(type, {"1","-2"}, {"-1","Wm","1"})
&& match_expectation(type, {"g","3"}, {"4","g","Wm"})
&& match_expectation(type, {"1","3"}, {"Wm","4","1"})
&& match_expectation(type, {"g","2"}, {"Z_photon_mix","2","g"})
&& match_expectation(type, {"1","-1"}, {"-1","Z_photon_mix","1"})
&& match_expectation(type, {"4","g"}, {"g","4","Z_photon_mix"})
// 2j - qqbar
&& match_expectation(type, {"g","g"}, {"1","-1"})
&& match_expectation(type, {"g","g"}, {"-2","2","h"})
&& match_expectation(type, {"g","g"}, {"-4","Wp","3"})
&& match_expectation(type, {"g","g"}, {"Wm","-1","2"})
&& match_expectation(type, {"g","g"}, {"-3","Z_photon_mix","3"})
// 3j - crossing lines
&& match_expectation(type, {"g","4"}, {"4","g","g"})
&& match_expectation(type, {"-1","g"}, {"g","g","-1"})
&& match_expectation(type, {"1","3"}, {"3","g","1"})
&& match_expectation(type, {"-2","2"}, {"2","g","-2","h"})
&& match_expectation(type, {"-3","g"}, {"g","g","Wp","-4"})
&& match_expectation(type, {"1","-2"}, {"Wm","-1","g","1"})
&& match_expectation(type, {"-1","g"}, {"1","-1","-1"})
&& match_expectation(type, {"1","-4"}, {"Z_photon_mix","-4","g","1"})
// higgs inside uno
&& match_expectation(type, {"-1","g"}, {"g","h","-1","g"})
&& match_expectation(type, {"-1","1"}, {"g","h","-1","1"})
&& match_expectation(type, {"g","2"}, {"g","2","h","g"})
&& match_expectation(type, {"-1","1"}, {"-1","1","h","g"})
// higgs outside uno
&& match_expectation(type, {"-1","g"}, {"h","g","-1","g"})
&& match_expectation(type, {"-1","1"}, {"-1","1","g","h"})
// higgs inside qqbar
&& match_expectation(type, {"g","g"}, {"-1","h","1","g","g"})
&& match_expectation(type, {"g","g"}, {"g","-1","h","1","g"})
&& match_expectation(type, {"g","g"}, {"g","g","2","h","-2"})
// higgs outside qqbar
&& match_expectation(type, {"g","g"}, {"h","-1","1","g","g"})
&& match_expectation(type, {"g","g"}, {"g","g","2","-2","h"})
// 4j - two uno
&& match_expectation(type, {"-2","2"}, {"g","-2","2","g"})
&& match_expectation(type, {"1","3"}, {"g","1","h","3","g"})
&& match_expectation(type, {"1","2"}, {"g","1","3","Wp","g"})
&& match_expectation(type, {"1","-2"}, {"g","Wm","1","-1","g"})
&& match_expectation(type, {"3","2"}, {"g","3","Z_photon_mix","2","g"})
// 4j - two gluon outside
&& match_expectation(type, {"g","4"}, {"g","4","g","g"})
&& match_expectation(type, {"1","3"}, {"1","3","h","g","g"})
&& match_expectation(type, {"1","2"}, {"1","3","g","Wp","g"})
&& match_expectation(type, {"1","-2"}, {"1","Wm","-1","g","g"})
&& match_expectation(type, {"-1","g"}, {"g","g","-1","g"})
&& match_expectation(type, {"1","3"}, {"g","g","1","3","h"})
&& match_expectation(type, {"1","2"}, {"g","g","1","Wp","3"})
&& match_expectation(type, {"1","-2"}, {"Wm","g","g","1","-1"})
&& match_expectation(type, {"-1","2"}, {"g","g","-1","Z_photon_mix","2"})
// 4j - ggx+uno
&& match_expectation(type, {"g","4"}, {"1","-1","4","g"})
&& match_expectation(type, {"2","g"}, {"g","2","-3","3"})
&& match_expectation(type, {"g","4"}, {"1","-1","h","4","g"})
&& match_expectation(type, {"2","g"}, {"g","2","-3","3","h"})
&& match_expectation(type, {"g","4"}, {"Wp","1","-1","3","g"})
&& match_expectation(type, {"2","g"}, {"g","2","-4","Wp","3"})
&& match_expectation(type, {"g","4"}, {"2","Wm","-1","4","g"})
&& match_expectation(type, {"2","g"}, {"g","2","Wp","-3","4"})
&& match_expectation(type, {"-4","g"}, {"g","-4","-3","3","Z_photon_mix"})
// 3j - crossing+uno
&& match_expectation(type, {"1","4"}, {"g","4","1"})
&& match_expectation(type, {"1","4"}, {"4","1","g"})
&& match_expectation(type, {"1","4"}, {"g","h","4","1"})
&& match_expectation(type, {"-1","-3"},{"Wm","g","-4","-1"})
&& match_expectation(type, {"1","4"}, {"3","1","Wp","g"})
&& match_expectation(type, {"1","4"}, {"3","1","g","h"})
&& match_expectation(type, {"2","3"}, {"3","2","Z_photon_mix","g"})
// 3j - crossing+qqbar
&& match_expectation(type, {"1","g"}, {"-1","1","g","1"})
&& match_expectation(type, {"1","g"}, {"-1","1","1","g"})
&& match_expectation(type, {"g","1"}, {"1","g","1","-1"})
&& match_expectation(type, {"g","1"}, {"g","1","1","-1"})
&& match_expectation(type, {"1","g"}, {"2","-2","g","1"})
&& match_expectation(type, {"1","g"}, {"2","-2","1","g"})
&& match_expectation(type, {"g","1"}, {"1","g","-2","2"})
&& match_expectation(type, {"g","1"}, {"g","1","-2","2"})
&& match_expectation(type, {"1","g"}, {"-1","1","h","g","1"})
&& match_expectation(type, {"1","g"}, {"-1","h","1","1","g"})
&& match_expectation(type, {"g","1"}, {"1","g","1","h","-1"})
&& match_expectation(type, {"g","1"}, {"h","g","1","1","-1"})
&& match_expectation(type, {"1","g"}, {"2","-2","1","g","h"})
&& match_expectation(type, {"g","1"}, {"g","h","1","-2","2"})
&& match_expectation(type, {"1","g"}, {"Wp","3","-4","g","1"})
&& match_expectation(type, {"3","g"}, {"-2","Wm","1","3","g"})
&& match_expectation(type, {"g","1"}, {"1","g","Wm","-3","4"})
&& match_expectation(type, {"g","-3"}, {"g","-3","-1","Wp","2"})
&& match_expectation(type, {"g","2"}, {"2","g","Z_photon_mix","4","-4"})
// 4j- gluon in qqbar
&& match_expectation(type, {"g","1"}, {"1","g","-1","1"})
&& match_expectation(type, {"1","g"}, {"1","-1","g","1"})
&& match_expectation(type, {"g","1"}, {"1","g","Wm","-2","1"})
&& match_expectation(type, {"2","g"}, {"2","-2","g","Wp","1"})
&& match_expectation(type, {"g","g"}, {"Wp","3","g","-4","g"})
&& match_expectation(type, {"1","g"}, {"1","h","-1","g","1"})
&& match_expectation(type, {"3","g"}, {"3","1","g","Z_photon_mix","-1"})
// 6j - two qqbar
&& match_expectation(type, {"g","g"}, {"1","-1","g","g","1","-1"})
&& match_expectation(type, {"g","g"}, {"1","-1","g","1","-1","g"})
&& match_expectation(type, {"g","g"}, {"g","1","-1","g","1","-1"})
&& match_expectation(type, {"g","g"}, {"g","1","-1","1","-1","g"})
&& match_expectation(type, {"g","g"}, {"g","1","1","-1","-1","g"})
&& match_expectation(type, {"g","g"}, {"h","1","-1","g","g","1","-1"})
&& match_expectation(type, {"g","g"}, {"1","Wp","-2","g","1","-1","g"})
&& match_expectation(type, {"g","g"}, {"g","1","Wp","-1","g","1","-2"})
&& match_expectation(type, {"g","g"}, {"g","1","-1","Wm","2","-1","g"})
&& match_expectation(type, {"g","g"}, {"g","1","2","-1","Wm","-1","g"})
&& match_expectation(type, {"g","g"}, {"2","-2","g","-1","1","Z_photon_mix","g"})
// random stuff (can be non-physical)
&& match_expectation(type, {"g","g"}, {"1","-2","2","-1"}) // != 2 qqbar
&& match_expectation(type, {"g","g"}, {"1","-2","2","g"}) // could be qqbar
&& match_expectation(type, {"e+","e-"},{"1","-1"}) // bad initial state
&& match_expectation(type, {"1","e-"}, {"g","1","Wm"}) // bad initial state
&& match_expectation(type, {"h","g"}, {"g","g"}) // bad initial state
&& match_expectation(type, {"-1","g"}, {"-1","1","1"}) // bad qqbar
&& match_expectation(type, {"-1","g"}, {"1","1","-1"}) // crossing in bad qqbar
&& match_expectation(type, {"-1","g"}, {"-2","1","1","Wp"}) // bad qqbar
&& match_expectation(type, {"1","2"}, {"1","-1","g","g","g","2"}) // bad qqbar
&& match_expectation(type, {"1","2"}, {"1","-1","-2","g","g","2"}) // gluon in bad qqbar
&& match_expectation(type, {"g","g"}, {"-1","2","g","g"}) // wrong back qqbar
&& match_expectation(type, {"g","g"}, {"g","g","2","1"}) // wrong forward qqbar
&& match_expectation(type, {"g","g"}, {"g","-2","1","g"}) // wrong central qqbar
&& match_expectation(type, {"1","g"}, {"1","-2","g","g","Wp"}) // extra quark
&& match_expectation(type, {"g","1"}, {"g","g","-2","1","Wp"}) // extra quark
&& match_expectation(type, {"g","1"}, {"g","g","Wp","-2","1"}) // extra quark
&& match_expectation(type, {"g","1"}, {"g","-2","1","g","Wp"}) // extra quark
&& match_expectation(type, {"g","g"}, {"g","g","g","-2","1","-1","Wp"}) // extra quark
&& match_expectation(type, {"1","g"}, {"g","Wp","1","-2","g"}) // extra quark
&& match_expectation(type, {"g","g"}, {"1","-1","-2","g","g","g","Wp"}) // extra quark
;
}
// Two boson states, that are currently not implemented
bool check_bad_FS(){
auto type{ HEJ::event_type::bad_final_state};
return
match_expectation(type, {"g","g"}, {"g","h","h","g"})
&& match_expectation(type, {"g","g"}, {"h","g","h","g"})
&& match_expectation(type, {"g","-1"}, {"g","h","Wp","-2"})
&& match_expectation(type, {"-3","-1"},{"-4","g","Wp","Wp","-2"})
&& match_expectation(type, {"-4","-1"},{"-3","Wp","g","Wm","-2"})
&& match_expectation(type, {"-4","-1"},{"g","-3","Wp","Wm","-2"})
&& match_expectation(type, {"-4","-1"},{"-4","g","11","-11","-2"})
&& match_expectation(type, {"-4","-1"},{"-4","g","-13","g","-2"})
&& match_expectation(type, {"3","-2"}, {"Wp","3","Wm","g","g","g","-2"}, -13)
&& match_expectation(type, {"1","2"},{"1","g","Z_photon_mix","Z_photon_mix","2"})
&& match_expectation(type, {"-4","g"},{"-4","Z_photon_mix","g","Z_photon_mix","g"})
&& match_expectation(type, {"g","-2"}, {"g","Z_photon_mix","Wm","-1"})
&& match_expectation(type, {"3","1"},{"3","g","h","Z_photon_mix","1"})
;
}
// not enough jets
bool check_not_enough_jets(){
auto type{ HEJ::event_type::not_enough_jets};
return
match_expectation(type, {"g","g"}, {})
&& match_expectation(type, {"1","-1"}, {})
&& match_expectation(type, {"g","-1"}, {"-1"})
&& match_expectation(type, {"g","g"}, {"g"})
&& match_expectation(type, {"g","g"}, {"h"})
&& match_expectation(type, {"g","2"}, {"Wp","1"})
&& match_expectation(type, {"g","2"}, {"Z","2"})
;
}
// not implemented processes
bool check_not_implemented(){
return check_fkl(false)
&& check_uno(false)
&& check_extremal_qqbar(false)
&& check_central_qqbar(false);
}
+
+ // h + single jet
+ bool check_hj(){
+ using namespace HEJ::event_type;
+ return
+ match_expectation(FKL, {"g","g"}, {"h", "g"})
+ && match_expectation(FKL, {"g","g"}, {"g", "h"})
+ && match_expectation(FKL, {"u","g"}, {"u", "h"})
+ && match_expectation(FKL, {"g","u"}, {"h", "u"})
+ && match_expectation(non_resummable, {"g","u"}, {"u", "h"})
+ && match_expectation(non_resummable, {"u","u"}, {"u", "h"})
+ ;
+ }
+
} // namespace
int main() {
// tests for "no false negatives"
// i.e. all HEJ-configurations get classified correctly
if(!check_fkl()) return EXIT_FAILURE;
if(!check_uno()) return EXIT_FAILURE;
if(!check_extremal_qqbar()) return EXIT_FAILURE;
if(!check_central_qqbar()) return EXIT_FAILURE;
// test for "no false positive"
// i.e. non-resummable gives non-resummable
if(!check_non_resummable()) return EXIT_FAILURE;
if(!check_bad_FS()) return EXIT_FAILURE;
if(!check_not_enough_jets()) return EXIT_FAILURE;
if(!check_not_implemented()) return EXIT_FAILURE;
+ if(!check_hj()) return EXIT_FAILURE;
return EXIT_SUCCESS;
}

File Metadata

Mime Type
text/x-diff
Expires
Tue, Nov 19, 3:37 PM (1 d, 19 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3804985
Default Alt Text
(360 KB)

Event Timeline