diff --git a/src/MatrixElement.cc b/src/MatrixElement.cc index 2314ca5..637c3a0 100644 --- a/src/MatrixElement.cc +++ b/src/MatrixElement.cc @@ -1,1761 +1,1743 @@ /** * \authors The HEJ collaboration (see AUTHORS for details) * \date 2019 * \copyright GPLv2 or later */ #include "HEJ/MatrixElement.hh" #include <algorithm> #include <assert.h> #include <limits> #include <math.h> #include <stddef.h> #include <unordered_map> #include <utility> #include "CLHEP/Vector/LorentzVector.h" #include "fastjet/ClusterSequence.hh" #include "HEJ/Constants.hh" #include "HEJ/currents.hh" #include "HEJ/PDG_codes.hh" #include "HEJ/event_types.hh" #include "HEJ/Event.hh" #include "HEJ/exceptions.hh" #include "HEJ/Particle.hh" #include "HEJ/utility.hh" namespace HEJ{ double MatrixElement::omega0( double alpha_s, double mur, fastjet::PseudoJet const & q_j ) const { const double lambda = param_.regulator_lambda; const double result = - alpha_s*N_C/M_PI*log(q_j.perp2()/(lambda*lambda)); if(! param_.log_correction) return result; // use alpha_s(sqrt(q_j*lambda)), evolved to mur return ( 1. + alpha_s/(4.*M_PI)*beta0*log(mur*mur/(q_j.perp()*lambda)) )*result; } Weights MatrixElement::operator()( Event const & event ) const { return tree(event)*virtual_corrections(event); } Weights MatrixElement::tree( Event const & event ) const { return tree_param(event)*tree_kin(event); } Weights MatrixElement::tree_param( Event const & event ) const { if(! is_HEJ(event.type())) { return Weights{0., std::vector<double>(event.variations().size(), 0.)}; } Weights result; // only compute once for each renormalisation scale std::unordered_map<double, double> known; result.central = tree_param(event, event.central().mur); known.emplace(event.central().mur, result.central); for(auto const & var: event.variations()) { const auto ME_it = known.find(var.mur); if(ME_it == end(known)) { const double wt = tree_param(event, var.mur); result.variations.emplace_back(wt); known.emplace(var.mur, wt); } else { result.variations.emplace_back(ME_it->second); } } return result; } Weights MatrixElement::virtual_corrections( Event const & event ) const { if(! is_HEJ(event.type())) { return Weights{0., std::vector<double>(event.variations().size(), 0.)}; } Weights result; // only compute once for each renormalisation scale std::unordered_map<double, double> known; result.central = virtual_corrections(event, event.central().mur); known.emplace(event.central().mur, result.central); for(auto const & var: event.variations()) { const auto ME_it = known.find(var.mur); if(ME_it == end(known)) { const double wt = virtual_corrections(event, var.mur); result.variations.emplace_back(wt); known.emplace(var.mur, wt); } else { result.variations.emplace_back(ME_it->second); } } return result; } double MatrixElement::virtual_corrections_W( Event const & event, double mur, Particle const & WBoson ) const{ auto const & in = event.incoming(); const auto partons = filter_partons(event.outgoing()); fastjet::PseudoJet const & pa = in.front().p; #ifndef NDEBUG fastjet::PseudoJet const & pb = in.back().p; double const norm = (in.front().p + in.back().p).E(); #endif assert(std::is_sorted(partons.begin(), partons.end(), rapidity_less{})); assert(partons.size() >= 2); assert(pa.pz() < pb.pz()); fastjet::PseudoJet q = pa - partons[0].p; size_t first_idx = 0; size_t last_idx = partons.size() - 1; bool wc = true; bool wqq = false; // With extremal qqx or unordered gluon outside the extremal // partons then it is not part of the FKL ladder and does not // contribute to the virtual corrections. W emitted from the // most backward leg must be taken into account in t-channel if (event.type() == event_type::FKL) { if (in[0].type != partons[0].type ){ q -= WBoson.p; wc = false; } } else if (event.type() == event_type::unob) { q -= partons[1].p; ++first_idx; if (in[0].type != partons[1].type ){ q -= WBoson.p; wc = false; } } else if (event.type() == event_type::qqxexb) { q -= partons[1].p; ++first_idx; if (abs(partons[0].type) != abs(partons[1].type)){ q -= WBoson.p; wc = false; } } if(event.type() == event_type::unof || event.type() == event_type::qqxexf){ --last_idx; } size_t first_idx_qqx = last_idx; size_t last_idx_qqx = last_idx; //if qqxMid event, virtual correction do not occur between //qqx pair. if(event.type() == event_type::qqxmid){ const auto backquark = std::find_if( begin(partons) + 1, end(partons) - 1 , [](Particle const & s){ return (s.type != pid::gluon); } ); if(backquark == end(partons) || (backquark+1)->type==pid::gluon) return 0; if(abs(backquark->type) != abs((backquark+1)->type)) { wqq=true; wc=false; } last_idx = std::distance(begin(partons), backquark); first_idx_qqx = last_idx+1; } double exponent = 0; const double alpha_s = alpha_s_(mur); for(size_t j = first_idx; j < last_idx; ++j){ exponent += omega0(alpha_s, mur, q)*( partons[j+1].rapidity() - partons[j].rapidity() ); q -=partons[j+1].p; } // End Loop one if (last_idx != first_idx_qqx) q -= partons[last_idx+1].p; if (wqq) q -= WBoson.p; for(size_t j = first_idx_qqx; j < last_idx_qqx; ++j){ exponent += omega0(alpha_s, mur, q)*( partons[j+1].rapidity() - partons[j].rapidity() ); q -= partons[j+1].p; } if (wc) q -= WBoson.p; assert( nearby(q, -1*pb, norm) || is_AWZH_boson(partons.back().type) || event.type() == event_type::unof || event.type() == event_type::qqxexf ); return exp(exponent); } double MatrixElement::virtual_corrections( Event const & event, double mur ) const{ auto const & in = event.incoming(); auto const & out = event.outgoing(); fastjet::PseudoJet const & pa = in.front().p; #ifndef NDEBUG fastjet::PseudoJet const & pb = in.back().p; double const norm = (in.front().p + in.back().p).E(); #endif const auto AWZH_boson = std::find_if( begin(out), end(out), [](Particle const & p){ return is_AWZH_boson(p); } ); if(AWZH_boson != end(out) && abs(AWZH_boson->type) == pid::Wp){ return virtual_corrections_W(event, mur, *AWZH_boson); } assert(std::is_sorted(out.begin(), out.end(), rapidity_less{})); assert(out.size() >= 2); assert(pa.pz() < pb.pz()); fastjet::PseudoJet q = pa - out[0].p; size_t first_idx = 0; size_t last_idx = out.size() - 1; // if there is a Higgs boson, extremal qqx or unordered gluon // outside the extremal partons then it is not part of the FKL // ladder and does not contribute to the virtual corrections if((out.front().type == pid::Higgs) || event.type() == event_type::unob || event.type() == event_type::qqxexb){ q -= out[1].p; ++first_idx; } if((out.back().type == pid::Higgs) || event.type() == event_type::unof || event.type() == event_type::qqxexf){ --last_idx; } size_t first_idx_qqx = last_idx; size_t last_idx_qqx = last_idx; //if qqxMid event, virtual correction do not occur between //qqx pair. if(event.type() == event_type::qqxmid){ const auto backquark = std::find_if( begin(out) + 1, end(out) - 1 , [](Particle const & s){ return (s.type != pid::gluon && is_parton(s.type)); } ); if(backquark == end(out) || (backquark+1)->type==pid::gluon) return 0; last_idx = std::distance(begin(out), backquark); first_idx_qqx = last_idx+1; } double exponent = 0; const double alpha_s = alpha_s_(mur); for(size_t j = first_idx; j < last_idx; ++j){ exponent += omega0(alpha_s, mur, q)*( out[j+1].rapidity() - out[j].rapidity() ); q -= out[j+1].p; } if (last_idx != first_idx_qqx) q -= out[last_idx+1].p; for(size_t j = first_idx_qqx; j < last_idx_qqx; ++j){ exponent += omega0(alpha_s, mur, q)*( out[j+1].rapidity() - out[j].rapidity() ); q -= out[j+1].p; } assert( nearby(q, -1*pb, norm) || out.back().type == pid::Higgs || event.type() == event_type::unof || event.type() == event_type::qqxexf ); return exp(exponent); } } // namespace HEJ namespace { //! Lipatov vertex for partons emitted into extremal jets double C2Lipatov(CLHEP::HepLorentzVector qav, CLHEP::HepLorentzVector qbv, CLHEP::HepLorentzVector p1, CLHEP::HepLorentzVector p2) { CLHEP::HepLorentzVector temptrans=-(qav+qbv); CLHEP::HepLorentzVector p5=qav-qbv; CLHEP::HepLorentzVector CL=temptrans + p1*(qav.m2()/p5.dot(p1) + 2.*p5.dot(p2)/p1.dot(p2)) - p2*(qbv.m2()/p5.dot(p2) + 2.*p5.dot(p1)/p1.dot(p2)); return -CL.dot(CL); } //! Lipatov vertex with soft subtraction for partons emitted into extremal jets double C2Lipatovots( CLHEP::HepLorentzVector qav, CLHEP::HepLorentzVector qbv, CLHEP::HepLorentzVector p1, CLHEP::HepLorentzVector p2, double lambda ) { double kperp=(qav-qbv).perp(); if (kperp>lambda) return C2Lipatov(qav, qbv, p1, p2)/(qav.m2()*qbv.m2()); else { double Cls=(C2Lipatov(qav, qbv, p1, p2)/(qav.m2()*qbv.m2())); return Cls-4./(kperp*kperp); } } //! Lipatov vertex double C2Lipatov(CLHEP::HepLorentzVector qav, CLHEP::HepLorentzVector qbv, CLHEP::HepLorentzVector pim, CLHEP::HepLorentzVector pip, CLHEP::HepLorentzVector pom, CLHEP::HepLorentzVector pop) // B { CLHEP::HepLorentzVector temptrans=-(qav+qbv); CLHEP::HepLorentzVector p5=qav-qbv; CLHEP::HepLorentzVector CL=temptrans + qav.m2()*(1./p5.dot(pip)*pip + 1./p5.dot(pop)*pop)/2. - qbv.m2()*(1./p5.dot(pim)*pim + 1./p5.dot(pom)*pom)/2. + ( pip*(p5.dot(pim)/pip.dot(pim) + p5.dot(pom)/pip.dot(pom)) + pop*(p5.dot(pim)/pop.dot(pim) + p5.dot(pom)/pop.dot(pom)) - pim*(p5.dot(pip)/pip.dot(pim) + p5.dot(pop)/pop.dot(pim)) - pom*(p5.dot(pip)/pip.dot(pom) + p5.dot(pop)/pop.dot(pom)) )/2.; return -CL.dot(CL); } //! Lipatov vertex with soft subtraction double C2Lipatovots( CLHEP::HepLorentzVector qav, CLHEP::HepLorentzVector qbv, CLHEP::HepLorentzVector pa, CLHEP::HepLorentzVector pb, CLHEP::HepLorentzVector p1, CLHEP::HepLorentzVector p2, double lambda ) { double kperp=(qav-qbv).perp(); if (kperp>lambda) return C2Lipatov(qav, qbv, pa, pb, p1, p2)/(qav.m2()*qbv.m2()); else { double Cls=(C2Lipatov(qav, qbv, pa, pb, p1, p2)/(qav.m2()*qbv.m2())); double temp=Cls-4./(kperp*kperp); return temp; } } /** Matrix element squared for tree-level current-current scattering * @param aptype Particle a PDG ID * @param bptype Particle b PDG ID * @param pn Particle n Momentum * @param pb Particle b Momentum * @param p1 Particle 1 Momentum * @param pa Particle a Momentum * @returns ME Squared for Tree-Level Current-Current Scattering */ double ME_current( int aptype, int bptype, CLHEP::HepLorentzVector const & pn, CLHEP::HepLorentzVector const & pb, CLHEP::HepLorentzVector const & p1, CLHEP::HepLorentzVector const & pa ){ if (aptype==21&&bptype==21) { return jM2gg(pn,pb,p1,pa); } else if (aptype==21&&bptype!=21) { if (bptype > 0) return jM2qg(pn,pb,p1,pa); else return jM2qbarg(pn,pb,p1,pa); } else if (bptype==21&&aptype!=21) { // ----- || ----- if (aptype > 0) return jM2qg(p1,pa,pn,pb); else return jM2qbarg(p1,pa,pn,pb); } else { // they are both quark if (bptype>0) { if (aptype>0) return jM2qQ(pn,pb,p1,pa); else return jM2qQbar(pn,pb,p1,pa); } else { if (aptype>0) return jM2qQbar(p1,pa,pn,pb); else return jM2qbarQbar(pn,pb,p1,pa); } } throw std::logic_error("unknown particle types"); } /** Matrix element squared for tree-level current-current scattering With W+Jets * @param aptype Particle a PDG ID * @param bptype Particle b PDG ID * @param pn Particle n Momentum * @param pb Particle b Momentum * @param p1 Particle 1 Momentum * @param pa Particle a Momentum * @param wc Boolean. True->W Emitted from b. Else; emitted from leg a * @returns ME Squared for Tree-Level Current-Current Scattering */ double ME_W_current( int aptype, int bptype, CLHEP::HepLorentzVector const & pn, CLHEP::HepLorentzVector const & pb, CLHEP::HepLorentzVector const & p1, CLHEP::HepLorentzVector const & pa, CLHEP::HepLorentzVector const & plbar, CLHEP::HepLorentzVector const & pl, bool const wc ){ // We know it cannot be gg incoming. assert(!(aptype==21 && bptype==21)); if (aptype==21&&bptype!=21) { if (bptype > 0) return jMWqg(pn,plbar,pl,pb,p1,pa); else return jMWqbarg(pn,plbar,pl,pb,p1,pa); } else if (bptype==21&&aptype!=21) { // ----- || ----- if (aptype > 0) return jMWqg(p1,plbar,pl,pa,pn,pb); else return jMWqbarg(p1,plbar,pl,pa,pn,pb); } else { // they are both quark if (wc==true){ // emission off b, (first argument pbout) if (bptype>0) { if (aptype>0) return jMWqQ(pn,plbar,pl,pb,p1,pa); else return jMWqQbar(pn,plbar,pl,pb,p1,pa); } else { if (aptype>0) return jMWqbarQ(pn,plbar,pl,pb,p1,pa); else return jMWqbarQbar(pn,plbar,pl,pb,p1,pa); } } else{ // emission off a, (first argument paout) if (aptype > 0) { if (bptype > 0) return jMWqQ(p1,plbar,pl,pa,pn,pb); else return jMWqQbar(p1,plbar,pl,pa,pn,pb); } else { // a is anti-quark if (bptype > 0) return jMWqbarQ(p1,plbar,pl,pa,pn,pb); else return jMWqbarQbar(p1,plbar,pl,pa,pn,pb); } } } throw std::logic_error("unknown particle types"); } /** Matrix element squared for backwards uno tree-level current-current * scattering With W+Jets * * @param aptype Particle a PDG ID * @param bptype Particle b PDG ID * @param pn Particle n Momentum * @param pb Particle b Momentum * @param p1 Particle 1 Momentum * @param pa Particle a Momentum * @param pg Unordered gluon momentum * @param wc Boolean. True->W Emitted from b. Else; emitted from leg a * @returns ME Squared for unob Tree-Level Current-Current Scattering */ double ME_W_unob_current( int aptype, int bptype, CLHEP::HepLorentzVector const & pn, CLHEP::HepLorentzVector const & pb, CLHEP::HepLorentzVector const & p1, CLHEP::HepLorentzVector const & pa, CLHEP::HepLorentzVector const & pg, CLHEP::HepLorentzVector const & plbar, CLHEP::HepLorentzVector const & pl, bool const wc ){ // we know they are not both gluons if (bptype == 21 && aptype != 21) { // b gluon => W emission off a if (aptype > 0) return jM2Wunogqg(pg,p1,plbar,pl,pa,pn,pb); else return jM2Wunogqbarg(pg,p1,plbar,pl,pa,pn,pb); } else { // they are both quark if (wc==true) {// emission off b, i.e. b is first current if (bptype>0){ if (aptype>0) return junobMWqQg(pn,plbar,pl,pb,p1,pa,pg); else return junobMWqQbarg(pn,plbar,pl,pb,p1,pa,pg); } else{ if (aptype>0) return junobMWqbarQg(pn,plbar,pl,pb,p1,pa,pg); else return junobMWqbarQbarg(pn,plbar,pl,pb,p1,pa,pg); } } else {// wc == false, emission off a, i.e. a is first current if (aptype > 0) { if (bptype > 0) //qq return jM2WunogqQ(pg,p1,plbar,pl,pa,pn,pb); else //qqbar return jM2WunogqQbar(pg,p1,plbar,pl,pa,pn,pb); } else { // a is anti-quark if (bptype > 0) //qbarq return jM2WunogqbarQ(pg,p1,plbar,pl,pa,pn,pb); else //qbarqbar return jM2WunogqbarQbar(pg,p1,plbar,pl,pa,pn,pb); } } } } /** Matrix element squared for uno forward 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 unof Tree-Level Current-Current Scattering */ double ME_W_unof_current( int aptype, int bptype, CLHEP::HepLorentzVector const & pn, CLHEP::HepLorentzVector const & pb, CLHEP::HepLorentzVector const & p1, CLHEP::HepLorentzVector const & pa, CLHEP::HepLorentzVector const & pg, CLHEP::HepLorentzVector const & plbar, CLHEP::HepLorentzVector const & pl, bool const wc ){ // we know they are not both gluons if (aptype==21 && bptype!=21) {//a gluon => W emission off b if (bptype > 0) return jM2Wunogqg(pg, pn,plbar, pl, pb, p1, pa); else return jM2Wunogqbarg(pg, pn,plbar, pl, pb, p1, pa); } else { // they are both quark if (wc==true) {// emission off b, i.e. b is first current if (bptype>0){ if (aptype>0) return jM2WunogqQ(pg,pn,plbar,pl,pb,p1,pa); else return jM2WunogqQbar(pg,pn,plbar,pl,pb,p1,pa); } else{ if (aptype>0) return jM2WunogqbarQ(pg,pn,plbar,pl,pb,p1,pa); else return jM2WunogqbarQbar(pg,pn,plbar,pl,pb,p1,pa); } } else {// wc == false, emission off a, i.e. a is first current if (aptype > 0) { if (bptype > 0) //qq return junofMWgqQ(pg,pn,pb,p1,plbar,pl,pa); else //qqbar return junofMWgqQbar(pg,pn,pb,p1,plbar,pl,pa); } else { // a is anti-quark if (bptype > 0) //qbarq return junofMWgqbarQ(pg,pn,pb,p1,plbar,pl,pa); else //qbarqbar return junofMWgqbarQbar(pg,pn,pb,p1,plbar,pl,pa); } } } } /** \brief Matrix element squared for backward qqx tree-level current-current * scattering With W+Jets * * @param aptype Particle a PDG ID * @param bptype Particle b PDG ID * @param pa Initial state a Momentum * @param pb Initial state b Momentum * @param pq Final state q Momentum * @param pqbar Final state qbar Momentum * @param pn Final state n Momentum * @param plbar Final state anti-lepton momentum * @param pl Final state lepton momentum * @param wc Boolean. True->W Emitted from b. Else; emitted from leg a * @returns ME Squared for qqxb Tree-Level Current-Current Scattering */ double ME_W_qqxb_current( int aptype, int bptype, CLHEP::HepLorentzVector const & pa, CLHEP::HepLorentzVector const & pb, CLHEP::HepLorentzVector const & pq, CLHEP::HepLorentzVector const & pqbar, CLHEP::HepLorentzVector const & pn, CLHEP::HepLorentzVector const & plbar, CLHEP::HepLorentzVector const & pl, bool const wc ){ // CAM factors for the qqx amps, and qqbar ordering (default, qbar extremal) bool swapQuarkAntiquark=false; double CFbackward; if (pqbar.rapidity() > pq.rapidity()){ swapQuarkAntiquark=true; CFbackward = (0.5*(3.-1./3.)*(pa.minus()/(pq.minus())+(pq.minus())/pa.minus())+1./3.)*3./4.; } else{ CFbackward = (0.5*(3.-1./3.)*(pa.minus()/(pqbar.minus())+(pqbar.minus())/pa.minus())+1./3.)*3./4.; } // With qqbar we could have 2 incoming gluons and W Emission if (aptype==21&&bptype==21) {//a gluon, b gluon gg->qqbarWg // This will be a wqqx emission as there is no other possible W Emission Site. if (swapQuarkAntiquark){ return jM2Wggtoqqbarg(pa, pqbar, plbar, pl, pq, pn,pb)*CFbackward;} else { return jM2Wggtoqbarqg(pa, pq, plbar, pl, pqbar, pn,pb)*CFbackward;} } else if (aptype==21&&bptype!=21 ) {//a gluon => W emission off b leg or qqx if (wc!=1){ // W Emitted from backwards qqx if (swapQuarkAntiquark){ return jM2WgQtoqqbarQ(pa, pq, plbar, pl, pqbar, pn, pb)*CFbackward;} else{ return jM2WgQtoqbarqQ(pa, pq, plbar, pl, pqbar, pn, pb)*CFbackward;} } else { // W Must be emitted from forwards leg. if(bptype > 0){ if (swapQuarkAntiquark){ return jM2WgqtoQQqW(pb, pa, pn, pqbar, pq, plbar, pl, false)*CFbackward;} else{ return jM2WgqtoQQqW(pb, pa, pn, pq, pqbar, plbar, pl, false)*CFbackward;} } else { if (swapQuarkAntiquark){ return jM2WgqtoQQqW(pb, pa, pn, pqbar, pq, plbar, pl, true)*CFbackward;} else{ return jM2WgqtoQQqW(pb, pa, pn, pq, pqbar, plbar, pl, true)*CFbackward;} } } } else{ throw std::logic_error("Incompatible incoming particle types with qqxb"); } } /* \brief Matrix element squared for forward qqx tree-level current-current * scattering With W+Jets * * @param aptype Particle a PDG ID * @param bptype Particle b PDG ID * @param pa Initial state a Momentum * @param pb Initial state b Momentum * @param pq Final state q Momentum * @param pqbar Final state qbar Momentum * @param p1 Final state 1 Momentum * @param plbar Final state anti-lepton momentum * @param pl Final state lepton momentum * @param wc Boolean. True->W Emitted from b. Else; emitted from leg a * @returns ME Squared for qqxf Tree-Level Current-Current Scattering */ double ME_W_qqxf_current( int aptype, int bptype, CLHEP::HepLorentzVector const & pa, CLHEP::HepLorentzVector const & pb, CLHEP::HepLorentzVector const & pq, CLHEP::HepLorentzVector const & pqbar, CLHEP::HepLorentzVector const & p1, CLHEP::HepLorentzVector const & plbar, CLHEP::HepLorentzVector const & pl, bool const wc ){ // CAM factors for the qqx amps, and qqbar ordering (default, qbar extremal) bool swapQuarkAntiquark=false; double CFforward; if (pqbar.rapidity() < pq.rapidity()){ swapQuarkAntiquark=true; CFforward = (0.5*(3.-1./3.)*(pb.plus()/(pq.plus())+(pq.plus())/pb.plus())+1./3.)*3./4.; } else{ CFforward = (0.5*(3.-1./3.)*(pb.plus()/(pqbar.plus())+(pqbar.plus())/pb.plus())+1./3.)*3./4.; } // With qqbar we could have 2 incoming gluons and W Emission if (aptype==21&&bptype==21) {//a gluon, b gluon gg->qqbarWg // This will be a wqqx emission as there is no other possible W Emission Site. if (swapQuarkAntiquark){ return jM2Wggtoqqbarg(pb, pqbar, plbar, pl, pq, p1,pa)*CFforward;} else { return jM2Wggtoqbarqg(pb, pq, plbar, pl, pqbar, p1,pa)*CFforward;} } else if (bptype==21&&aptype!=21) {// b gluon => W emission off a or qqx if (wc==1){ // W Emitted from forwards qqx if (swapQuarkAntiquark){ return jM2WgQtoqbarqQ(pb, pq, plbar,pl, pqbar, p1, pa)*CFforward;} else { return jM2WgQtoqqbarQ(pb, pq, plbar,pl, pqbar, p1, pa)*CFforward;} } // W Must be emitted from backwards leg. if (aptype > 0){ if (swapQuarkAntiquark){ return jM2WgqtoQQqW(pa,pb, p1, pqbar, pq, plbar, pl, false)*CFforward;} else{ return jM2WgqtoQQqW(pa,pb, p1, pq, pqbar, plbar, pl, false)*CFforward;} } else { if (swapQuarkAntiquark){ return jM2WgqtoQQqW(pa,pb, p1, pqbar, pq, plbar, pl, true)*CFforward;} else{ return jM2WgqtoQQqW(pa,pb, p1, pq, pqbar, plbar, pl, true)*CFforward;} } } else{ throw std::logic_error("Incompatible incoming particle types with qqxf"); } } /* \brief Matrix element squared for central qqx tree-level current-current * scattering With W+Jets * * @param aptype Particle a PDG ID * @param bptype Particle b PDG ID * @param nabove Number of gluons emitted before central qqxpair * @param nbelow Number of gluons emitted after central qqxpair * @param pa Initial state a Momentum * @param pb Initial state b Momentum\ * @param pq Final state qbar Momentum * @param pqbar Final state q Momentum * @param partons Vector of all outgoing partons * @param plbar Final state anti-lepton momentum * @param pl Final state lepton momentum * @param wqq Boolean. True siginfies W boson is emitted from Central qqx * @param wc Boolean. wc=true signifies w boson emitted from leg b; if wqq=false. * @returns ME Squared for qqxmid Tree-Level Current-Current Scattering */ double ME_W_qqxmid_current( int aptype, int bptype, int nabove, int nbelow, CLHEP::HepLorentzVector const & pa, CLHEP::HepLorentzVector const & pb, CLHEP::HepLorentzVector const & pq, CLHEP::HepLorentzVector const & pqbar, std::vector<HLV> partons, CLHEP::HepLorentzVector const & plbar, CLHEP::HepLorentzVector const & pl, bool const wqq, bool const wc ){ // CAM factors for the qqx amps, and qqbar ordering (default, pq backwards) bool swapQuarkAntiquark=false; if (pqbar.rapidity() < pq.rapidity()){ swapQuarkAntiquark=true; } double CFforward = (0.5*(3.-1./3.)*( pb.plus()/(partons[partons.size()-1].plus()) + (partons[partons.size()-1].plus())/pb.plus() )+1./3.)*3./4.; double CFbackward = (0.5*(3.-1./3.)*( pa.minus()/(partons[0].minus()) + (partons[0].minus())/pa.minus() )+1./3.)*3./4.; double wt=1.; if (aptype==21) wt*=CFbackward; if (bptype==21) wt*=CFforward; if (aptype <=0 && bptype <=0){ // Both External AntiQuark if (wqq==1){//emission from central qqbar return wt*jM2WqqtoqQQq(pa, pb, pl,plbar, partons,true,true, swapQuarkAntiquark, nabove); } else if (wc==1){//emission from b leg return wt*jM2WqqtoqQQqW(pa, pb, pl,plbar, partons, true,true, swapQuarkAntiquark, nabove, nbelow, true); } else { // emission from a leg return wt*jM2WqqtoqQQqW(pa, pb, pl,plbar, partons, true,true, swapQuarkAntiquark, nabove, nbelow, false); } } // end both antiquark else if (aptype<=0){ // a is antiquark if (wqq==1){//emission from central qqbar return wt*jM2WqqtoqQQq(pa, pb, pl,plbar, partons, false, true, swapQuarkAntiquark, nabove); } else if (wc==1){//emission from b leg return wt*jM2WqqtoqQQqW(pa, pb, pl,plbar, partons,false,true, swapQuarkAntiquark, nabove, nbelow, true); } else { // emission from a leg return wt*jM2WqqtoqQQqW(pa, pb, pl,plbar, partons, false, true, swapQuarkAntiquark, nabove, nbelow, false); } } // end a is antiquark else if (bptype<=0){ // b is antiquark if (wqq==1){//emission from central qqbar return wt*jM2WqqtoqQQq(pa, pb, pl,plbar, partons, true, false, swapQuarkAntiquark, nabove); } else if (wc==1){//emission from b leg return wt*jM2WqqtoqQQqW(pa, pb, pl,plbar, partons, true, false, swapQuarkAntiquark, nabove, nbelow, true); } else { // emission from a leg return wt*jM2WqqtoqQQqW(pa, pb, pl,plbar, partons, true, false, swapQuarkAntiquark, nabove, nbelow, false); } } //end b is antiquark else{ //Both Quark or gluon if (wqq==1){//emission from central qqbar return wt*jM2WqqtoqQQq(pa, pb, pl, plbar, partons, false, false, swapQuarkAntiquark, nabove);} else if (wc==1){//emission from b leg return wt*jM2WqqtoqQQqW(pa, pb, pl,plbar, partons, false, false, swapQuarkAntiquark, nabove, nbelow, true); } else { // emission from a leg return wt*jM2WqqtoqQQqW(pa, pb, pl,plbar, partons, false, false, swapQuarkAntiquark, nabove, nbelow, false); } } } /** \brief Matrix element squared for tree-level current-current scattering with Higgs * @param aptype Particle a PDG ID * @param bptype Particle b PDG ID * @param pn Particle n Momentum * @param pb Particle b Momentum * @param p1 Particle 1 Momentum * @param pa Particle a Momentum * @param qH t-channel momentum before Higgs * @param qHp1 t-channel momentum after Higgs * @returns ME Squared for Tree-Level Current-Current Scattering with Higgs */ double ME_Higgs_current( int aptype, int bptype, CLHEP::HepLorentzVector const & pn, CLHEP::HepLorentzVector const & pb, CLHEP::HepLorentzVector const & p1, CLHEP::HepLorentzVector const & pa, CLHEP::HepLorentzVector const & qH, // t-channel momentum before Higgs CLHEP::HepLorentzVector const & qHp1, // t-channel momentum after Higgs double mt, bool include_bottom, double mb ){ if (aptype==21&&bptype==21) // gg initial state return MH2gg(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb); else if (aptype==21&&bptype!=21) { if (bptype > 0) return MH2qg(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb)*4./9.; else return MH2qbarg(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb)*4./9.; } else if (bptype==21&&aptype!=21) { if (aptype > 0) return MH2qg(p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb)*4./9.; else return MH2qbarg(p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb)*4./9.; } else { // they are both quark if (bptype>0) { if (aptype>0) return MH2qQ(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb)*4.*4./(9.*9.); else return MH2qQbar(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb)*4.*4./(9.*9.); } else { if (aptype>0) return MH2qQbar(p1,pa,pn,pb,-qH,-qHp1,mt,include_bottom,mb)*4.*4./(9.*9.); else return MH2qbarQbar(pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb)*4.*4./(9.*9.); } } throw std::logic_error("unknown particle types"); } /** \brief Current matrix element squared with Higgs and unordered forward emission * @param aptype Particle A PDG ID * @param bptype Particle B PDG ID * @param punof Unordered Particle Momentum * @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 with Higgs and unordered forward emission */ double ME_Higgs_current_unof( int aptype, int bptype, CLHEP::HepLorentzVector const & punof, 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 ){ if (aptype==21&&bptype!=21) { if (bptype > 0) return jM2unogqHg(punof,pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb); else return jM2unogqbarHg(punof,pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb); } else { // they are both quark if (bptype>0) { if (aptype>0) return jM2unogqHQ(punof,pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb); else return jM2unogqHQbar(punof,pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb); } else { if (aptype>0) return jM2unogqbarHQ(punof,pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb); else return jM2unogqbarHQbar(punof,pn,pb,p1,pa,-qHp1,-qH,mt,include_bottom,mb); } } throw std::logic_error("unknown particle types"); } /** \brief Current matrix element squared with Higgs and unordered backward emission * @param aptype Particle A PDG ID * @param bptype Particle B PDG ID * @param pn Particle n Momentum * @param pb Particle b Momentum * @param punob 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 */ double ME_Higgs_current_unob( int aptype, int bptype, CLHEP::HepLorentzVector const & pn, CLHEP::HepLorentzVector const & pb, CLHEP::HepLorentzVector const & punob, 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 ){ if (bptype==21&&aptype!=21) { if (aptype > 0) return jM2unobgHQg(pn,pb,punob,p1,pa,-qHp1,-qH,mt,include_bottom,mb); else return jM2unobgHQbarg(pn,pb,punob,p1,pa,-qHp1,-qH,mt,include_bottom,mb); } else { // they are both quark if (aptype>0) { if (bptype>0) return jM2unobqHQg(pn,pb,punob,p1,pa,-qHp1,-qH,mt,include_bottom,mb); else return jM2unobqbarHQg(pn,pb,punob,p1,pa,-qHp1,-qH,mt,include_bottom,mb); } else { if (bptype>0) return jM2unobqHQbarg(pn,pb,punob,p1,pa,-qHp1,-qH,mt,include_bottom,mb); else return jM2unobqbarHQbarg(pn,pb,punob,p1,pa,-qHp1,-qH,mt,include_bottom,mb); } } throw std::logic_error("unknown particle types"); } CLHEP::HepLorentzVector to_HepLorentzVector(HEJ::Particle const & particle){ return {particle.p.px(), particle.p.py(), particle.p.pz(), particle.p.E()}; } void validate(HEJ::MatrixElementConfig const & config) { #ifndef HEJ_BUILD_WITH_QCDLOOP if(!config.Higgs_coupling.use_impact_factors) { throw std::invalid_argument{ "Invalid Higgs coupling settings.\n" "HEJ without QCDloop support can only use impact factors.\n" "Set use_impact_factors to true or recompile HEJ.\n" }; } #endif if(config.Higgs_coupling.use_impact_factors && config.Higgs_coupling.mt != std::numeric_limits<double>::infinity()) { throw std::invalid_argument{ "Conflicting settings: " "impact factors may only be used in the infinite top mass limit" }; } } } // namespace anonymous namespace HEJ{ MatrixElement::MatrixElement( std::function<double (double)> alpha_s, MatrixElementConfig conf ): alpha_s_{std::move(alpha_s)}, param_{std::move(conf)} { validate(param_); } double MatrixElement::tree_kin( Event const & ev ) const { if(! is_HEJ(ev.type())) return 0.; auto AWZH_boson = std::find_if( begin(ev.outgoing()), end(ev.outgoing()), [](Particle const & p){return is_AWZH_boson(p);} ); if(AWZH_boson == end(ev.outgoing())) return tree_kin_jets(ev); switch(AWZH_boson->type){ case pid::Higgs: return tree_kin_Higgs(ev); case pid::Wp: case pid::Wm: return tree_kin_W(ev); // TODO case pid::photon: case pid::Z: default: throw not_implemented("Emission of boson of unsupported type"); } } namespace{ constexpr int extremal_jet_idx = 1; constexpr int no_extremal_jet_idx = 0; bool treat_as_extremal(Particle const & parton){ return parton.p.user_index() == extremal_jet_idx; } template<class InputIterator> double FKL_ladder_weight( InputIterator begin_gluon, InputIterator end_gluon, CLHEP::HepLorentzVector const & q0, CLHEP::HepLorentzVector const & pa, CLHEP::HepLorentzVector const & pb, CLHEP::HepLorentzVector const & p1, CLHEP::HepLorentzVector const & pn, double lambda ){ double wt = 1; auto qi = q0; for(auto gluon_it = begin_gluon; gluon_it != end_gluon; ++gluon_it){ assert(gluon_it->type == pid::gluon); const auto g = to_HepLorentzVector(*gluon_it); const auto qip1 = qi - g; if(treat_as_extremal(*gluon_it)){ wt *= C2Lipatovots(qip1, qi, pa, pb, lambda)*C_A; } else{ wt *= C2Lipatovots(qip1, qi, pa, pb, p1, pn, lambda)*C_A; } qi = qip1; } return wt; } } // namespace anonymous std::vector<Particle> MatrixElement::tag_extremal_jet_partons( Event const & ev ) const{ auto out_partons = filter_partons(ev.outgoing()); if(out_partons.size() == ev.jets().size()){ // no additional emissions in extremal jets, don't need to tag anything for(auto & parton: out_partons){ parton.p.set_user_index(no_extremal_jet_idx); } return out_partons; } // TODO: avoid reclustering fastjet::ClusterSequence cs(to_PseudoJet(out_partons), ev.jet_def()); const auto jets = sorted_by_rapidity(cs.inclusive_jets(ev.min_jet_pt())); assert(jets.size() >= 2); auto most_backward = begin(jets); auto most_forward = end(jets) - 1; // skip jets caused by unordered emission or qqx if(ev.type() == event_type::unob || ev.type() == event_type::qqxexb){ assert(jets.size() >= 3); ++most_backward; } else if(ev.type() == event_type::unof || ev.type() == event_type::qqxexf){ assert(jets.size() >= 3); --most_forward; } const auto extremal_jet_indices = cs.particle_jet_indices( {*most_backward, *most_forward} ); assert(extremal_jet_indices.size() == out_partons.size()); for(size_t i = 0; i < out_partons.size(); ++i){ assert(HEJ::is_parton(out_partons[i])); const int idx = (extremal_jet_indices[i]>=0)? extremal_jet_idx: no_extremal_jet_idx; out_partons[i].p.set_user_index(idx); } return out_partons; } double MatrixElement::tree_kin_jets( Event const & ev ) const { auto const & incoming = ev.incoming(); const auto partons = tag_extremal_jet_partons(ev); if(is_uno(ev.type())){ throw not_implemented("unordered emission not implemented for pure jets"); } 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 ); } namespace{ double tree_kin_W_FKL( int aptype, int bptype, HLV pa, HLV pb, std::vector<Particle> const & partons, HLV plbar, HLV pl, double lambda ) { auto p1 = to_HepLorentzVector(partons[0]); auto pn = to_HepLorentzVector(partons[partons.size() - 1]); auto begin_ladder = begin(partons) + 1; auto end_ladder = end(partons) - 1; bool wc = true; auto q0 = pa - p1; if (aptype!=partons[0].type) { //leg a emits w wc = false; q0 -=pl + plbar; } const double current_factor = ME_W_current( aptype, bptype, pn, pb, p1, pa, plbar, pl, wc ); const double ladder_factor = FKL_ladder_weight( begin_ladder, end_ladder, q0, pa, pb, p1, pn, lambda ); return current_factor*ladder_factor; } double tree_kin_W_unob( int aptype, int bptype, HLV pa, HLV pb, std::vector<Particle> const & partons, HLV plbar, HLV pl, double lambda ) { auto pg = to_HepLorentzVector(partons[0]); auto p1 = to_HepLorentzVector(partons[1]); auto pn = to_HepLorentzVector(partons[partons.size() - 1]); auto begin_ladder = begin(partons) + 2; auto end_ladder = end(partons) - 1; bool wc = true; auto q0 = pa - p1 -pg; if (aptype!=partons[1].type) { //leg a emits w wc = false; q0 -=pl + plbar; } const double current_factor = ME_W_unob_current( aptype, bptype, pn, pb, p1, pa, pg, plbar, pl, wc ); const double ladder_factor = FKL_ladder_weight( begin_ladder, end_ladder, q0, pa, pb, p1, pn, lambda ); return current_factor*C_A*C_A/(N_C*N_C-1.)*ladder_factor; } double tree_kin_W_unof( int aptype, int bptype, HLV pa, HLV pb, std::vector<Particle> const & partons, HLV plbar, HLV pl, double lambda ) { auto p1 = to_HepLorentzVector(partons[0]); auto pn = to_HepLorentzVector(partons[partons.size() - 2]); auto pg = to_HepLorentzVector(partons[partons.size() - 1]); auto begin_ladder = begin(partons) + 1; auto end_ladder = end(partons) - 2; bool wc = true; auto q0 = pa - p1; if (aptype!=partons[0].type) { //leg a emits w wc = false; q0 -=pl + plbar; } const double current_factor = ME_W_unof_current( aptype, bptype, pn, pb, p1, pa, pg, plbar, pl, wc ); const double ladder_factor = FKL_ladder_weight( begin_ladder, end_ladder, q0, pa, pb, p1, pn, lambda ); return current_factor*C_A*C_A/(N_C*N_C-1.)*ladder_factor; } double tree_kin_W_qqxb( int aptype, int bptype, HLV pa, HLV pb, std::vector<Particle> const & partons, HLV plbar, HLV pl, double lambda ) { HLV pq,pqbar; if(is_quark(partons[0])){ pq = to_HepLorentzVector(partons[0]); pqbar = to_HepLorentzVector(partons[1]); } else{ pq = to_HepLorentzVector(partons[1]); pqbar = to_HepLorentzVector(partons[0]); } auto p1 = to_HepLorentzVector(partons[0]); auto pn = to_HepLorentzVector(partons[partons.size() - 1]); auto begin_ladder = begin(partons) + 2; auto end_ladder = end(partons) - 1; bool wc = true; auto q0 = pa - pq - pqbar; if (partons[1].type!=partons[0].type) { //leg a emits w wc = false; q0 -=pl + plbar; } const double current_factor = ME_W_qqxb_current( aptype, bptype, pa, pb, pq, pqbar, pn, plbar, pl, wc ); const double ladder_factor = FKL_ladder_weight( begin_ladder, end_ladder, q0, pa, pb, p1, pn, lambda ); return current_factor*C_A*C_A/(N_C*N_C-1.)*ladder_factor; } double tree_kin_W_qqxf( int aptype, int bptype, HLV pa, HLV pb, std::vector<Particle> const & partons, HLV plbar, HLV pl, double lambda ) { HLV pq,pqbar; if(is_quark(partons[partons.size() - 1])){ pq = to_HepLorentzVector(partons[partons.size() - 1]); pqbar = to_HepLorentzVector(partons[partons.size() - 2]); } else{ pq = to_HepLorentzVector(partons[partons.size() - 2]); pqbar = to_HepLorentzVector(partons[partons.size() - 1]); } auto p1 = to_HepLorentzVector(partons[0]); auto pn = to_HepLorentzVector(partons[partons.size() - 1]); auto begin_ladder = begin(partons) + 1; auto end_ladder = end(partons) - 2; bool wc = true; auto q0 = pa - p1; if (aptype!=partons[0].type) { //leg a emits w wc = false; q0 -=pl + plbar; } const double current_factor = ME_W_qqxf_current( aptype, bptype, pa, pb, pq, pqbar, p1, plbar, pl, wc ); const double ladder_factor = FKL_ladder_weight( begin_ladder, end_ladder, q0, pa, pb, p1, pn, lambda ); return current_factor*C_A*C_A/(N_C*N_C-1.)*ladder_factor; } double tree_kin_W_qqxmid( int aptype, int bptype, HLV pa, HLV pb, std::vector<Particle> const & partons, HLV plbar, HLV pl, double lambda ) { HLV pq,pqbar; const auto backmidquark = std::find_if( begin(partons)+1, end(partons)-1, [](Particle const & s){ return s.type != pid::gluon; } ); assert(backmidquark!=end(partons)-1); if (is_quark(backmidquark->type)){ pq = to_HepLorentzVector(*backmidquark); pqbar = to_HepLorentzVector(*(backmidquark+1)); } else { pqbar = to_HepLorentzVector(*backmidquark); pq = to_HepLorentzVector(*(backmidquark+1)); } auto p1 = to_HepLorentzVector(partons[0]); auto pn = to_HepLorentzVector(partons[partons.size() - 1]); auto q0 = pa - p1; // t-channel momentum after qqx auto qqxt = q0; bool wc, wqq; if (backmidquark->type == -(backmidquark+1)->type){ // Central qqx does not emit wqq=false; if (aptype==partons[0].type) { wc = true; } else{ wc = false; q0-=pl+plbar; } } else{ wqq = true; wc = false; qqxt-=pl+plbar; } auto begin_ladder = begin(partons) + 1; auto end_ladder_1 = (backmidquark); auto begin_ladder_2 = (backmidquark+2); auto end_ladder = end(partons) - 1; for(auto parton_it = begin_ladder; parton_it < begin_ladder_2; ++parton_it){ qqxt -= to_HepLorentzVector(*parton_it); } int nabove = std::distance(begin_ladder, backmidquark); int nbelow = std::distance(begin_ladder_2, end_ladder); std::vector<HLV> partonsHLV; partonsHLV.reserve(partons.size()); for (size_t i = 0; i != partons.size(); ++i) { partonsHLV.push_back(to_HepLorentzVector(partons[i])); } const double current_factor = ME_W_qqxmid_current( aptype, bptype, nabove, nbelow, pa, pb, pq, pqbar, partonsHLV, plbar, pl, wqq, wc ); const double ladder_factor = FKL_ladder_weight( begin_ladder, end_ladder_1, q0, pa, pb, p1, pn, lambda )*FKL_ladder_weight( begin_ladder_2, end_ladder, qqxt, pa, pb, p1, pn, lambda ); return current_factor*C_A*C_A/(N_C*N_C-1.)*ladder_factor; } } // namespace anonymous double MatrixElement::tree_kin_W(Event const & ev) const { using namespace event_type; auto const & incoming(ev.incoming()); auto const & decays(ev.decays()); HLV plbar, pl; for (auto& x: decays) { if (x.second.at(0).type < 0){ plbar = to_HepLorentzVector(x.second.at(0)); pl = to_HepLorentzVector(x.second.at(1)); } else{ pl = to_HepLorentzVector(x.second.at(0)); plbar = to_HepLorentzVector(x.second.at(1)); } } const auto pa = to_HepLorentzVector(incoming[0]); const auto pb = to_HepLorentzVector(incoming[1]); const auto partons = tag_extremal_jet_partons(ev); if(ev.type() == unordered_backward){ return tree_kin_W_unob(incoming[0].type, incoming[1].type, pa, pb, partons, plbar, pl, param_.regulator_lambda); } if(ev.type() == unordered_forward){ return tree_kin_W_unof(incoming[0].type, incoming[1].type, pa, pb, partons, plbar, pl, param_.regulator_lambda); } if(ev.type() == extremal_qqxb){ return tree_kin_W_qqxb(incoming[0].type, incoming[1].type, pa, pb, partons, plbar, pl, param_.regulator_lambda); } if(ev.type() == extremal_qqxf){ return tree_kin_W_qqxf(incoming[0].type, incoming[1].type, pa, pb, partons, plbar, pl, param_.regulator_lambda); } if(ev.type() == central_qqx){ return tree_kin_W_qqxmid(incoming[0].type, incoming[1].type, pa, pb, partons, plbar, pl, param_.regulator_lambda); } return tree_kin_W_FKL(incoming[0].type, incoming[1].type, pa, pb, partons, plbar, pl, param_.regulator_lambda); } double MatrixElement::tree_kin_Higgs( Event const & ev ) const { if(is_uno(ev.type())){ return tree_kin_Higgs_between(ev); } if(ev.outgoing().front().type == pid::Higgs){ return tree_kin_Higgs_first(ev); } if(ev.outgoing().back().type == pid::Higgs){ return tree_kin_Higgs_last(ev); } return tree_kin_Higgs_between(ev); } namespace { // Colour acceleration multipliers, for gluons see eq. (7) in arXiv:0910.5113 #ifdef HEJ_BUILD_WITH_QCDLOOP // TODO: code duplication with currents.cc double K_g(double p1minus, double paminus) { return 1./2.*(p1minus/paminus + paminus/p1minus)*(C_A - 1./C_A) + 1./C_A; } double K_g( CLHEP::HepLorentzVector const & pout, CLHEP::HepLorentzVector const & pin ) { if(pin.z() > 0) return K_g(pout.plus(), pin.plus()); return K_g(pout.minus(), pin.minus()); } double K( ParticleID type, CLHEP::HepLorentzVector const & pout, CLHEP::HepLorentzVector const & pin ) { if(type == ParticleID::gluon) return K_g(pout, pin); return C_F; } #endif // Colour factor in strict MRK limit double K_MRK(ParticleID type) { return (type == ParticleID::gluon)?C_A:C_F; } } double MatrixElement::MH2_forwardH( CLHEP::HepLorentzVector p1out, CLHEP::HepLorentzVector p1in, ParticleID type2, CLHEP::HepLorentzVector p2out, CLHEP::HepLorentzVector p2in, CLHEP::HepLorentzVector pH, double t1, double t2 ) const{ ignore(p2out, p2in); const double shat = p1in.invariantMass2(p2in); // gluon case #ifdef HEJ_BUILD_WITH_QCDLOOP if(!param_.Higgs_coupling.use_impact_factors){ return K(type2, p2out, p2in)*C_A*1./(16*M_PI*M_PI)*t1/t2*MH2gq_outsideH( p1out, p1in, p2out, p2in, pH, param_.Higgs_coupling.mt, param_.Higgs_coupling.include_bottom, param_.Higgs_coupling.mb )/(4*(N_C*N_C - 1)); } #endif return K_MRK(type2)/C_A*9./2.*shat*shat*( C2gHgp(p1in,p1out,pH) + C2gHgm(p1in,p1out,pH) )/(t1*t2); } double MatrixElement::tree_kin_Higgs_first( Event const & ev ) const { auto const & incoming = ev.incoming(); auto const & outgoing = ev.outgoing(); assert(outgoing.front().type == pid::Higgs); if(outgoing[1].type != pid::gluon) { assert(incoming.front().type == outgoing[1].type); return tree_kin_Higgs_between(ev); } const auto pH = to_HepLorentzVector(outgoing.front()); const auto partons = tag_extremal_jet_partons( ev ); const auto pa = to_HepLorentzVector(incoming[0]); const auto pb = to_HepLorentzVector(incoming[1]); const auto p1 = to_HepLorentzVector(partons.front()); const auto pn = to_HepLorentzVector(partons.back()); const auto q0 = pa - p1 - pH; const double t1 = q0.m2(); const double t2 = (pn - pb).m2(); return MH2_forwardH( p1, pa, incoming[1].type, pn, pb, pH, t1, t2 )*FKL_ladder_weight( begin(partons) + 1, end(partons) - 1, q0, pa, pb, p1, pn, param_.regulator_lambda ); } double MatrixElement::tree_kin_Higgs_last( Event const & ev ) const { auto const & incoming = ev.incoming(); auto const & outgoing = ev.outgoing(); assert(outgoing.back().type == pid::Higgs); if(outgoing[outgoing.size()-2].type != pid::gluon) { assert(incoming.back().type == outgoing[outgoing.size()-2].type); return tree_kin_Higgs_between(ev); } const auto pH = to_HepLorentzVector(outgoing.back()); const auto partons = tag_extremal_jet_partons( ev ); const auto pa = to_HepLorentzVector(incoming[0]); const auto pb = to_HepLorentzVector(incoming[1]); auto p1 = to_HepLorentzVector(partons.front()); const auto pn = to_HepLorentzVector(partons.back()); auto q0 = pa - p1; const double t1 = q0.m2(); const double t2 = (pn + pH - pb).m2(); return MH2_forwardH( pn, pb, incoming[0].type, p1, pa, pH, t2, t1 )*FKL_ladder_weight( begin(partons) + 1, end(partons) - 1, q0, pa, pb, p1, pn, param_.regulator_lambda ); } double MatrixElement::tree_kin_Higgs_between( Event const & ev ) const { using namespace event_type; auto const & incoming = ev.incoming(); auto const & outgoing = ev.outgoing(); const auto the_Higgs = std::find_if( begin(outgoing), end(outgoing), [](Particle const & s){ return s.type == pid::Higgs; } ); assert(the_Higgs != end(outgoing)); const auto pH = to_HepLorentzVector(*the_Higgs); const auto partons = tag_extremal_jet_partons(ev); const auto pa = to_HepLorentzVector(incoming[0]); const auto pb = to_HepLorentzVector(incoming[1]); auto p1 = to_HepLorentzVector( partons[(ev.type() == unob)?1:0] ); auto pn = to_HepLorentzVector( partons[partons.size() - ((ev.type() == unof)?2:1)] ); auto first_after_Higgs = begin(partons) + (the_Higgs-begin(outgoing)); assert( (first_after_Higgs == end(partons) && ( (ev.type() == unob) || partons.back().type != pid::gluon )) || first_after_Higgs->rapidity() >= the_Higgs->rapidity() ); assert( (first_after_Higgs == begin(partons) && ( (ev.type() == unof) || partons.front().type != pid::gluon )) || (first_after_Higgs-1)->rapidity() <= the_Higgs->rapidity() ); // always treat the Higgs as if it were in between the extremal FKL partons if(first_after_Higgs == begin(partons)) ++first_after_Higgs; else if(first_after_Higgs == end(partons)) --first_after_Higgs; // t-channel momentum before Higgs auto qH = pa; for(auto parton_it = begin(partons); parton_it != first_after_Higgs; ++parton_it){ qH -= to_HepLorentzVector(*parton_it); } auto q0 = pa - p1; auto begin_ladder = begin(partons) + 1; auto end_ladder = end(partons) - 1; double current_factor; if(ev.type() == unob){ current_factor = C_A*C_A/2.*ME_Higgs_current_unob( // 1/2 = "K_uno" incoming[0].type, incoming[1].type, pn, pb, to_HepLorentzVector(partons.front()), p1, pa, qH, qH - pH, param_.Higgs_coupling.mt, param_.Higgs_coupling.include_bottom, param_.Higgs_coupling.mb ); 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.*ME_Higgs_current_unof( // 1/2 = "K_uno" incoming[0].type, incoming[1].type, to_HepLorentzVector(partons.back()), pn, pb, p1, pa, qH, qH - pH, param_.Higgs_coupling.mt, param_.Higgs_coupling.include_bottom, param_.Higgs_coupling.mb ); pn += to_HepLorentzVector(partons.back()); --end_ladder; } else{ 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 ); } 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; } - double MatrixElement::tree_param_partons( - double alpha_s, double mur, - std::vector<Particle> const & partons - ) const{ - const double gs2 = 4.*M_PI*alpha_s; - double wt = std::pow(gs2, partons.size()); - if(param_.log_correction){ - // use alpha_s(q_perp), evolved to mur - assert(partons.size() >= 2); - for(size_t i = 1; i < partons.size()-1; ++i){ - wt *= 1. + alpha_s/(2.*M_PI)*beta0*log(mur/partons[i].p.perp()); - } - } - return wt; - } - namespace { double get_AWZH_coupling(Event const & ev, double alpha_s) { const auto AWZH_boson = std::find_if( begin(ev.outgoing()), end(ev.outgoing()), [](auto const & p){return is_AWZH_boson(p);} ); if(AWZH_boson == end(ev.outgoing())) return 1.; switch(AWZH_boson->type){ case pid::Higgs: return alpha_s*alpha_s; case pid::Wp: case pid::Wm: return gw*gw*gw*gw/4.; // TODO case pid::photon: case pid::Z: default: throw not_implemented("Emission of boson of unsupported type"); } } } double MatrixElement::tree_param( Event const & ev, double mur ) const{ assert(is_HEJ(ev.type())); - const auto & out = ev.outgoing(); + const auto partons = filter_partons(ev.outgoing()); const double alpha_s = alpha_s_(mur); - const double AWZH_coupling = get_AWZH_coupling(ev, alpha_s); - if(ev.type() == event_type::unob || ev.type() == event_type::qqxexb){ - return AWZH_coupling*4.*M_PI*alpha_s*tree_param_partons( - alpha_s, mur, filter_partons({begin(out) + 1, end(out)}) - ); - } - if(ev.type() == event_type::unof || ev.type() == event_type::qqxexf){ - return AWZH_coupling*4.*M_PI*alpha_s*tree_param_partons( - alpha_s, mur, filter_partons({begin(out), end(out) - 1}) - ); + const double gs2 = 4.*M_PI*alpha_s; + double res = std::pow(gs2, partons.size()); + if(param_.log_correction){ + // use alpha_s(q_perp), evolved to mur + assert(partons.size() >= 2); + for(size_t i = 1; i < partons.size()-1; ++i){ + res *= 1. + alpha_s/(2.*M_PI)*beta0*log(mur/partons[i].p.perp()); + } } - return AWZH_coupling*tree_param_partons(alpha_s, mur, filter_partons(out)); + return get_AWZH_coupling(ev, alpha_s)*res; } } // namespace HEJ diff --git a/t/ME_data/ME_Wm.dat b/t/ME_data/ME_Wm.dat index 5c37191..95149c7 100644 --- a/t/ME_data/ME_Wm.dat +++ b/t/ME_data/ME_Wm.dat @@ -1,1308 +1,1308 @@ 2.928675692e-06 1.647116461e-06 6.792853649e-07 8.309213874e-05 1.188586835e-09 7.418850985e-09 4.641858351e-07 4.469299635e-07 6.109075964e-06 2.937428029e-06 4.834759305e-06 8.223080997e-06 1.984882889e-06 4.724373663e-06 2.284512955e-07 6.086791509e-08 9.402879575e-07 2.134932663e-05 1.344153838e-06 6.325190057e-08 5.042205822e-06 0.0002285013435 2.294857015e-06 6.277759204e-05 1.337020968e-07 3.953835541e-06 9.658506379e-05 2.316868337e-06 2.819688016e-07 0.0001081216619 3.432998402e-06 3.368523741e-06 1.11288709e-08 3.29543466e-07 3.989570061e-10 1.948796723e-05 1.282013086e-10 3.210202477e-07 3.239728865e-06 8.604875852e-06 7.617842534e-10 1.878886612e-06 8.602552313e-09 2.905134545e-09 9.580831652e-08 2.761377426e-07 1.121758088e-05 8.305715929e-07 3.094575366e-06 9.009051399e-07 3.660116555e-07 4.545389317e-08 1.619299497e-09 0.01367636241 3.915774786e-06 2.025205952e-06 3.6814996e-09 4.179895596e-06 3.07283947e-08 8.89627591e-07 -2.048586989e-08 +1.381537057737695e-08 1.817403251e-09 4.337439968e-10 1.271896091e-06 6.045011555e-06 9.89332115e-09 1.214106087e-05 2.958683161e-08 2.061281825e-09 1.93033348e-05 6.299313702e-07 2.644016282e-07 2.061367847e-06 4.34253878e-05 1.164199395e-06 2.499007952e-06 4.358489891e-06 9.241699824e-05 9.12437674e-05 0.0001159481718 2.350252878e-06 7.845324212e-06 0.000638536879 4.723440426e-08 6.954486577e-09 5.357700283e-06 1.473730225e-07 1.054004829e-07 5.920067571e-07 1.175811475e-05 -5.246498884e-08 +3.538161996944155e-08 0.0004236100189 3.617420289e-06 4.516879429e-05 3.955718614e-05 0.0001365328248 5.126170478e-05 2.005036424e-07 1.018758481e-08 -9.831902939e-09 +6.630491325177325e-09 6.836738619e-07 5.827603078e-09 1.557658774e-09 6.048954972e-05 1.652858793e-07 2.956993046e-07 3.715591231e-06 1.403931806e-08 2.060713606e-07 0.001033146046 9.773118638e-07 2.935985027e-05 1.151256054e-05 7.794713809e-06 2.17436307e-05 4.056751186e-08 2.955377882e-08 8.030872004e-05 2.603215792e-07 0.0001681672442 2.930133644e-08 7.197036394e-05 1.920989813e-06 3.637607439e-09 7.893842383e-06 0.0001175217074 4.802925073e-10 4.83556567e-07 2.878827354e-05 1.898723086e-09 2.754516812e-08 1.403679092e-10 5.826558306e-07 2.433773671e-06 7.927708105e-06 1.020983626e-08 1.052585256e-07 7.737192672e-06 3.400645867e-06 2.714553382e-08 6.774637317e-09 0.0001490868071 9.612832588e-11 1.654742249e-05 1.57073488e-07 1.609407803e-06 2.782539582e-09 0.04337790658 9.860795665e-06 1.103405546e-05 0.01558805851 1.359140493e-06 2.104988229e-07 4.483328013e-08 2.527261731e-08 1.967859428e-09 1.75962763e-07 4.16236019e-07 3.66072855e-07 2.475097776e-06 2.142069091e-05 3.962234552e-07 5.0752339e-06 2.831972358e-08 8.260228591e-08 2.191466894e-08 7.392657036e-05 1.244008807e-09 1.264513056e-08 3.373173459e-05 1.515657759e-07 4.183645033e-07 1.162296215e-07 7.731815775e-06 1.077601875e-05 2.331663061e-07 4.316286429e-10 4.05516744e-09 1.282346148e-09 -2.825013126e-09 +1.905147471814478e-09 2.799718364e-07 6.430044079e-08 3.336162544e-07 2.847516226e-07 2.8800296e-05 5.034816791e-08 0.0001697859258 7.357868068e-08 -1.946917349e-07 +1.312972541815244e-07 1.494668933e-07 1.309682993e-09 1.452620265e-08 7.003475182e-07 2.392867531e-06 6.228302547e-06 2.32207831e-07 8.172158542e-08 4.289261389e-07 2.619009165e-07 7.684975193e-06 3.149447044e-10 1.235480059e-06 4.345702611e-07 1.019591398e-07 1.014400081e-05 1.198511446e-05 3.072393212e-05 2.47145635e-06 6.141459748e-06 2.217791841e-05 7.506816715e-07 4.156597855e-07 0.0003928655193 6.192512495e-07 9.058620171e-07 7.767884384e-06 1.506541078e-06 1.438366886e-08 2.856106448e-08 -4.815309756e-05 +3.247374364864003e-05 1.013840918e-07 1.941618603e-05 1.098271271e-06 7.583485063e-07 1.924040495e-08 2.683414048e-06 0.0005387206665 4.514003014e-09 7.345041607e-06 4.863384343e-08 5.137710227e-07 1.341025387e-07 1.385096075e-09 0.001475731456 4.766899706e-09 2.788152153e-07 4.885059085e-07 4.389966638e-07 0.0006056993831 2.260959244e-06 1.622050932e-07 8.044376305e-07 0.002874337098 8.545204208e-05 2.859915875e-07 3.520051428e-05 3.83840617e-05 -6.693256832e-11 +4.513834365350505e-11 6.711555934e-09 1.221714284e-07 4.175432874e-09 1.276099272e-06 9.349373741e-06 5.093349519e-07 2.102059997e-05 2.546943624e-06 4.307372366e-07 0.0001405081607 1.532593492e-06 0.004327081818 1.798381994e-07 0.0002232914245 1.177488117e-07 1.784201554e-06 2.027515818e-09 3.74919864e-07 1.128537898e-07 4.135413677e-05 1.320654261e-08 -1.300969977e-06 +8.773550961839615e-07 9.824802351e-10 -2.419281993e-07 +1.631528338714485e-07 2.288354101e-05 2.035248598e-07 0.0001019103655 3.912289372e-06 5.329003459e-08 3.815264848e-10 1.388142926e-05 -3.064871302e-08 +2.066904312077937e-08 9.173930152e-07 6.957230348e-09 2.903877008e-05 4.478794954e-09 6.770693006e-07 9.714079428e-08 1.998883986e-05 0.001799109057 1.236217788e-08 1.118375624e-05 1.144499288e-07 1.1864756e-06 4.716258378e-06 3.464456734e-07 7.532453996e-11 1.742294659e-06 4.696151226e-09 8.449545648e-08 8.954221651e-07 2.432487759e-06 0.0001400677698 0.001713444386 1.075048353e-07 4.105406541e-05 3.733656311e-07 1.984952182e-06 0.001480322688 0.0001151217974 0.00209287627 3.27555809e-06 2.185782336e-09 0.0004548139237 0.01477027961 3.934273672e-05 0.001243829892 5.430764382e-08 4.380856265e-07 4.297458002e-06 1.467632945e-08 1.820453663e-08 2.699514835e-09 8.420814307e-07 8.634913084e-10 1.182745993e-06 8.508146264e-09 7.184712053e-07 1.192590185e-06 1.766408443e-08 0.002934313619 1.283384372e-06 6.255055172e-06 8.703331507e-06 9.664774229e-06 2.675288802e-09 3.392650797e-08 0.0001071682868 5.832833131e-09 8.881117172e-08 0.0002166070842 1.248608916e-08 1.726759584e-06 2.99705455e-06 2.119854874e-07 7.412646571e-06 2.755998704e-08 9.960376424e-06 3.051416349e-05 1.129492506e-08 -3.883632292e-08 +2.619064730671114e-08 5.532504512e-10 2.177158595e-10 0.0003851956976 4.247896087e-05 1.005180535e-08 7.063067217e-08 0.0002453874122 6.569452237e-09 2.430119913e-06 1.727937098e-07 1.211730869e-05 9.94795514e-06 0.0001605757277 5.961378248e-08 1.63764285e-06 1.925056588e-07 1.895751671e-05 3.584139499e-09 2.424148932e-07 0.001006931825 6.133075998e-07 1.237484464e-06 2.006432918e-06 1.665677334e-05 8.731387573e-06 1.333871332e-07 7.301399559e-09 0.0005093528313 7.645422963e-08 2.020202554e-06 6.813091876e-08 1.10814416e-06 1.95551597e-05 2.003879505e-06 3.670933614e-07 1.728622505e-07 0.0007263797041 1.411925493e-05 1.571311147e-07 3.392287113e-06 1.377047714e-09 6.630650805e-07 5.227904356e-08 1.127011492e-06 0.0003754771874 1.865169444e-07 6.576952888e-06 3.329497044e-06 7.07257004e-06 2.88154104e-07 -2.944075529e-07 +1.98544141222215e-07 6.929088895e-08 2.565897108e-07 6.217791051e-06 3.877741985e-07 1.707903155e-08 5.10233078e-08 4.572653519e-09 0.1095009268 7.449132821e-07 2.09740422e-06 9.378911822e-09 7.910046337e-08 1.223499404e-05 2.672193111e-10 1.02969936e-09 3.503343355e-13 1.602894349e-07 5.890632996e-07 1.487885964e-05 1.978704988e-05 2.552121299e-08 3.565602472e-08 0.0004467518296 1.005865545e-09 1.554902214e-07 2.235788016e-07 1.136525751e-07 2.962478329e-08 9.303967807e-06 3.925082515e-10 1.017880604e-05 1.434347997e-08 4.47759051e-06 1.996980966e-09 4.66863509e-05 5.845204451e-06 -2.238363039e-07 +1.509519246185828e-07 1.741949098e-06 2.215116471e-10 1.532616641e-06 1.571651059e-08 7.107477006e-05 7.234687759e-06 1.621643207e-06 2.56453036e-08 8.069391642e-09 2.035933164e-07 7.550817486e-08 8.659572881e-06 0.000432153513 3.337724504e-05 4.782082889e-05 2.323101105e-08 1.19309915e-05 0.0001350492201 2.75397447e-06 1.823126697e-08 2.411767675e-05 2.283494193e-09 3.766390067e-08 3.588343942e-05 6.787383948e-05 8.832490704e-10 5.621457713e-10 1.917361443e-08 5.849351718e-06 2.28541183e-06 6.146818441e-06 1.827359426e-05 3.231234221e-05 9.921186251e-07 3.779404373e-09 6.904752827e-06 7.698409214e-06 -1.648217403e-06 +1.111533673613149e-06 1.642479046e-06 3.301215266e-07 0.0004602920172 3.293196018e-07 3.950685019e-07 2.805273751e-05 1.739207752e-08 3.773037585e-06 1.537008391e-06 2.434913209e-08 8.315956868e-05 6.88859927e-06 -1.018611709e-07 +6.869368158598052e-08 4.672444205e-09 7.02639721e-05 7.305366536e-07 2.162269825e-05 0.0004328624246 1.653264992e-07 1.553411281e-05 5.165593047e-10 -3.193620733e-10 -1.548539649e-08 +2.153731042127394e-10 +1.044312456634803e-08 8.974979512e-09 7.520620911e-07 6.416418106e-08 1.653991504e-07 9.9043617e-09 6.542874961e-09 0.0005318553158 1.144555776e-05 8.760870822e-10 7.62010085e-08 3.426636308e-07 8.099206646e-06 1.154675564e-09 4.916072586e-06 2.013222915e-05 8.510967278e-07 3.442296018e-07 1.194853419e-07 1.251233575e-07 2.847893723e-06 2.51170281e-08 3.662564708e-07 1.646271735e-07 5.373793619e-07 4.353476735e-08 8.727968448e-08 1.053026857e-05 8.908419895e-07 1.461412043e-06 1.220147207e-06 0.0009307060856 3.48570189e-07 2.208034886e-08 8.740398335e-08 0.0001005182181 5.658935843e-06 3.660460092e-07 5.210218655e-06 1.176510494e-09 1.167510222e-09 1.74723538e-07 -6.898754196e-10 -2.43098736e-06 +4.652418777294805e-10 +1.639422266502427e-06 9.200100093e-06 0.0001764752281 7.379070775e-09 2.542944745e-07 3.71783565e-06 4.778249403e-10 6.09916388e-07 7.389397856e-06 1.030208854e-08 5.091853226e-08 1.929321992e-06 2.953703561e-07 1.428266933e-08 3.65646162e-05 8.358213962e-06 1.269052515e-05 3.142034606e-10 1.192354439e-08 3.42519028e-07 1.238073279e-05 4.592188983e-07 4.907760576e-08 2.605803561e-07 1.290266109e-06 8.91015308e-08 1.171147313e-05 6.948329894e-06 0.0001320627046 4.467361346e-08 1.343011103e-06 2.786658719e-09 1.674877668e-07 1.158457021e-07 7.247035325e-08 0.0001328992567 1.456012145e-05 1.974800428e-05 9.916997919e-05 7.076016655e-07 7.36330363e-07 8.750739052e-07 2.098702267e-05 1.200784083e-09 6.974041336e-07 6.433390899e-08 1.654868124e-05 0.0009302881479 1.821579155e-07 6.800514105e-07 1.766155755e-07 8.004650647e-07 9.941901599e-05 2.06752057e-05 1.488709742e-10 1.506772094e-06 8.10845767e-05 7.610845142e-05 0.0002115710954 2.12571763e-09 2.910738954e-06 9.48875277e-06 1.847390948e-06 7.436554496e-05 1.286439322e-10 1.413106449e-06 4.724231895e-08 5.001854028e-07 1.14055774e-06 6.718621271e-11 8.472867506e-09 9.810486272e-10 2.498427647e-07 6.987204698e-06 4.08117914e-06 2.82229796e-07 3.98589612e-09 6.278231145e-05 9.793860499e-07 9.666736058e-07 1.367103841e-08 3.490044251e-07 3.782645161e-10 8.131830282e-08 6.664325458e-06 2.365503287e-08 1.096958037e-06 3.776083109e-07 2.990539686e-08 0.002754346975 4.047644861e-07 1.411988389e-07 3.694067085e-08 0.0002320708655 3.71338597e-07 3.835998288e-05 2.623922776e-05 6.474281304e-10 0.0003219022096 -4.976400801e-07 +3.356011806202945e-07 4.178663868e-10 9.856721257e-08 2.793861685e-07 5.195375958e-06 2.632243695e-06 6.350302361e-07 -4.896870712e-10 +3.302377879428893e-10 3.043526423e-08 2.372803041e-08 6.617140209e-06 6.330476168e-07 1.870130608e-06 2.338555597e-07 4.591171378e-10 5.61933523e-05 1.955958771e-08 3.044175709e-08 5.161106748e-08 0.0001378680549 2.750711746e-09 2.289389014e-08 4.001113699e-09 2.236415233e-10 3.473425904e-06 7.311516826e-06 8.898096465e-08 1.481216022e-08 2.435208033e-12 1.189787819e-10 5.333724185e-06 4.664375968e-11 2.381386364e-10 1.249165957e-08 1.128630934e-07 1.550941521e-06 2.360856297e-14 5.846728434e-10 4.069354108e-10 4.063144762e-08 1.749554102e-08 5.155167146e-11 1.688297139e-11 2.774930205e-09 6.091667068e-08 2.87170322e-10 3.66643664e-10 8.258926512e-10 7.390910771e-09 1.48715158e-10 6.565786352e-12 3.475089984e-09 2.002380042e-09 7.274321744e-11 6.359749104e-09 7.940393308e-13 1.098611945e-06 7.438494044e-07 2.339207348e-10 4.499165346e-09 3.082882191e-09 1.878464872e-10 4.005585989e-09 2.63828057e-10 2.218789497e-09 5.827641219e-09 1.543332934e-10 4.907581247e-10 6.901620609e-10 2.088068542e-13 7.837109261e-10 1.937213353e-10 1.715044299e-08 4.069918057e-06 2.91951045e-08 1.565114165e-08 3.443423804e-08 1.256948998e-07 4.363190898e-09 2.287393528e-12 6.966944807e-09 5.995890076e-08 1.289835029e-10 1.695089305e-10 2.301282525e-11 9.445474271e-09 2.115405965e-08 1.662358545e-09 1.025068565e-09 -1.441219578e-10 -2.569402823e-11 +9.719373728155117e-11 +1.732767627245824e-11 4.41946888e-11 5.657095809e-11 5.288646625e-07 5.324238867e-07 2.221589565e-07 2.48971658e-09 1.285025395e-12 1.075626423e-09 7.782686578e-11 2.946128307e-11 3.399399058e-11 1.446405065e-08 2.187225844e-08 7.820238975e-09 2.40229777e-09 7.46594076e-10 1.281010307e-06 3.598219943e-08 2.214721626e-12 3.332304338e-11 7.617797708e-10 9.909367591e-11 4.653906139e-10 3.587191007e-06 4.446718734e-08 1.894297187e-09 4.744577059e-05 4.433959517e-09 2.210894416e-08 1.036168503e-09 1.103345617e-07 -7.407100956e-08 +4.995240386235438e-08 8.363740584e-12 3.281022886e-10 3.148002148e-08 6.330438798e-10 3.863775656e-10 5.96035067e-10 4.255627067e-11 1.165981634e-07 2.50543766e-09 1.33188621e-10 9.172189534e-07 6.582275731e-08 -2.287354562e-10 +1.542558411660617e-10 1.297572348e-09 8.107196167e-09 2.070977659e-06 6.93677041e-09 2.329665548e-07 2.684341075e-07 3.375521064e-12 4.781691571e-11 5.350983865e-09 9.177711402e-10 3.059268527e-08 1.113405482e-07 5.998651665e-10 3.911876462e-10 1.176693635e-08 8.693402036e-10 2.320788866e-05 2.036112191e-07 3.21298594e-08 7.836398482e-08 1.481220144e-09 9.13398584e-07 9.416502413e-11 1.481517933e-08 2.317808347e-06 2.429491433e-08 4.627625989e-12 2.494572686e-08 9.094749026e-10 1.806091619e-08 2.095822035e-08 7.215954213e-08 2.372708431e-09 9.374174236e-13 1.029823717e-11 5.170443463e-07 3.317414045e-07 1.109713675e-08 6.47170925e-07 1.864432618e-06 3.397272389e-11 4.168205664e-08 1.346830208e-11 3.171866066e-06 7.866352681e-11 3.289251567e-10 7.057976269e-14 2.67944287e-07 4.480095364e-10 2.542532019e-10 1.046877898e-09 4.692932633e-12 5.841384928e-10 5.254681082e-07 9.003591534e-11 3.637362188e-13 9.047013259e-09 1.769883631e-08 9.48770427e-07 2.457011926e-10 7.931261407e-08 2.511617984e-07 1.749603857e-09 1.158718175e-07 1.833652906e-06 4.450176914e-08 5.71537314e-10 1.070556403e-10 2.448737924e-10 6.262272951e-06 2.141707476e-08 4.258981326e-09 5.49246536e-09 9.566266675e-12 3.797543387e-11 2.705369876e-08 4.238910221e-07 1.784747449e-09 3.595414385e-08 3.222996111e-09 6.210164067e-05 2.258039015e-08 1.191514021e-13 1.513303142e-06 9.658853509e-11 5.082215114e-06 9.44022394e-10 8.437053744e-09 1.463048848e-10 -5.108251604e-09 +3.444930056306798e-09 7.868562747e-12 1.272388225e-11 3.427574116e-10 8.990110201e-08 2.83369365e-11 3.0757007e-10 5.265605819e-14 4.26291208e-13 7.393316606e-13 5.385884913e-05 8.367399832e-10 1.271720599e-05 8.40960929e-11 6.150536572e-08 5.764038353e-10 1.4827533e-05 2.322813811e-10 4.431637476e-09 1.319799794e-08 1.965682244e-09 5.782112632e-06 7.526132679e-07 -1.594961722e-09 +1.0756188221237e-09 8.186541654e-13 3.952010247e-07 3.136663182e-10 1.366784094e-10 2.291961377e-13 7.468862634e-11 2.13931093e-07 2.325391866e-09 7.657293509e-07 3.023206769e-07 1.974192114e-11 2.239591754e-13 1.575764712e-08 3.894663093e-07 2.463427596e-09 1.169483637e-07 7.445202399e-07 3.876016309e-06 6.204312046e-07 5.089616453e-10 2.563342578e-13 4.108963768e-09 8.534723944e-11 3.062921512e-14 5.084635637e-08 3.964438906e-09 9.56064042e-09 5.713458485e-07 8.602373058e-10 9.674381801e-09 5.575533604e-08 -1.147257577e-09 +7.736937051663231e-10 5.25696461e-10 2.604611015e-08 5.185877553e-08 5.136914596e-07 4.457967612e-09 7.087532094e-06 2.866869842e-09 2.555695269e-07 1.14983411e-06 2.121499808e-11 6.538598731e-11 4.397576097e-10 1.68339254e-10 7.632177773e-10 3.194450213e-07 4.743002807e-08 5.174172592e-09 1.378394044e-06 0.0001075134541 0.0002104593459 1.291514926e-09 1.113812317e-09 2.836821935e-07 2.119414007e-05 3.257830135e-07 6.904331208e-08 1.133565101e-07 2.515736584e-07 2.868370103e-07 1.316255824e-07 1.143196584e-07 6.920318436e-10 1.261652011e-08 7.917924522e-13 7.954494796e-10 6.551135771e-09 5.085806996e-09 1.197408695e-11 7.765435603e-11 1.137649191e-10 9.984771335e-11 1.206636661e-07 9.837079112e-09 3.488285266e-08 4.035219127e-08 1.411962856e-08 1.030986206e-07 0.0001339305599 2.858760077e-12 3.300471596e-09 1.938419056e-10 3.176459434e-12 1.739161428e-09 4.024412744e-07 3.711166771e-08 2.706304314e-09 9.299354827e-11 4.060060302e-10 1.4612779e-05 9.474942894e-11 6.71405306e-14 2.422793691e-09 1.239892236e-07 2.586764905e-08 3.834829456e-09 4.981089193e-08 4.442178086e-10 -2.539439066e-13 +1.712560508754375e-13 5.885874705e-12 3.850099718e-12 5.815334596e-10 2.871382336e-07 3.360539652e-09 4.474272729e-08 4.854260426e-09 6.835712438e-09 4.513662362e-10 1.937015923e-09 3.204387319e-07 2.834110865e-06 2.373908594e-10 1.827447632e-10 2.230101714e-07 2.935469223e-08 1.283653118e-05 1.768922904e-09 1.023937016e-07 1.810088219e-10 1.898013563e-06 1.555535859e-07 2.081843632e-11 1.130189635e-07 5.044203176e-10 5.33181246e-12 8.383860763e-08 1.081590063e-05 4.255989963e-09 4.961325451e-09 4.722044461e-12 2.605827829e-07 6.302277862e-12 7.401607027e-11 5.826773899e-09 3.775837499e-06 7.970709192e-06 1.077514227e-08 4.597223421e-10 6.830064994e-09 2.132411988e-10 3.596324757e-11 6.420547725e-09 2.577236401e-09 3.303229315e-09 6.18774819e-09 4.85351932e-08 4.830745338e-10 3.720076558e-06 1.356666145e-08 2.380000545e-09 6.934200897e-11 3.297569231e-09 3.435257108e-10 5.29774949e-08 4.382596642e-09 2.15867853e-08 5.682155814e-12 2.87290739e-07 1.68447438e-10 3.702374348e-08 4.342623412e-10 6.279260244e-08 2.403676166e-08 6.186547757e-09 1.906369995e-07 4.632234292e-10 2.755342608e-09 1.375328487e-08 2.872876599e-08 6.101397141e-07 3.268512848e-10 2.065059787e-07 2.629402879e-09 4.962476519e-11 4.062857789e-10 6.600566104e-08 2.769850168e-07 8.89254745e-07 4.790857584e-07 8.513434203e-09 2.371056219e-11 1.969882054e-08 1.194180775e-06 2.536127752e-06 3.538123306e-11 7.535922813e-11 3.279643366e-09 5.915578256e-09 3.02572337e-12 2.425014125e-08 1.736441207e-08 9.148487522e-11 2.773967859e-09 6.97620218e-08 1.281934525e-09 3.47740087e-11 7.026364385e-12 3.159133311e-08 2.31268605e-06 1.021090566e-11 6.311611218e-10 3.496581068e-09 5.006407047e-09 1.086254132e-09 6.442837702e-07 3.40398573e-08 1.040533844e-07 2.015250069e-08 2.367399296e-08 1.455786943e-08 4.519557691e-07 6.28474478e-08 1.681943257e-08 3.350671592e-10 1.788948112e-11 8.659128848e-08 1.581729673e-10 3.16899147e-08 1.269452476e-09 3.307661094e-11 6.743047887e-11 4.30353612e-10 1.049230002e-07 7.726948943e-12 5.740327635e-07 7.011998453e-07 5.337360544e-09 5.348339963e-12 6.365307921e-10 1.704476599e-14 2.368415063e-08 1.761682817e-07 8.032268925e-11 5.988468898e-06 1.432690031e-12 7.971925347e-11 1.851944696e-07 1.679623381e-10 6.480885684e-06 9.759515118e-09 3.448768806e-09 7.000972121e-11 2.170432861e-09 5.016191785e-09 1.49812676e-09 5.87915813e-10 6.048689475e-10 1.149696962e-08 8.392285319e-11 2.869985172e-13 9.120207147e-09 1.023039271e-06 1.843349283e-11 1.00493373e-06 1.437966503e-09 3.104285805e-06 3.736848159e-10 9.594801088e-11 1.232024101e-11 3.535931521e-07 7.131216184e-08 2.337326742e-10 2.82410779e-07 3.138271299e-08 5.494774408e-12 3.07020008e-12 2.011245542e-10 1.46145366e-11 3.082048934e-09 1.460968738e-10 3.186600527e-07 8.613894657e-10 4.227362638e-07 1.132945088e-08 1.385877833e-08 2.535124307e-09 5.647614453e-08 1.712204167e-10 9.689130473e-07 2.23306088e-09 2.607948681e-11 1.678634611e-13 2.258659145e-06 1.695727868e-09 1.706090682e-11 4.758749529e-12 1.426536131e-05 1.449437791e-07 5.476310283e-08 3.617494916e-10 8.345680248e-12 7.09135827e-13 8.179812515e-09 3.323888637e-09 1.436305431e-08 5.885631636e-10 3.584884074e-08 9.15498181e-09 9.640861937e-11 1.908907816e-09 2.558536978e-10 5.232929043e-10 1.261308954e-09 2.535469757e-10 1.402765641e-06 9.405064753e-10 1.920855926e-07 4.40419547e-11 5.00514635e-10 1.406592654e-07 4.52773411e-10 4.146849421e-07 1.166300995e-07 7.051208905e-09 2.309332429e-09 9.269115967e-07 -1.602436999e-10 +1.080660039831632e-10 1.045618377e-06 4.94758944e-07 3.094362842e-13 1.351633908e-08 2.784256537e-09 1.934517844e-08 -7.880756508e-13 +5.314666752529101e-13 1.357165448e-09 4.977436192e-12 6.477152561e-11 4.234578629e-08 4.918295292e-13 3.683451803e-08 3.727223271e-09 1.040244287e-09 6.604553745e-10 3.806952288e-09 1.097089218e-08 1.705682648e-08 6.319891143e-07 1.574130537e-09 3.013782963e-08 4.772880086e-09 -2.994218614e-10 +2.019257173887625e-10 8.938611559e-10 5.601588127e-09 1.526952592e-05 3.497239887e-10 9.33354413e-08 1.359301132e-08 6.404370059e-11 1.535628496e-11 -3.32672467e-09 +2.2434943877662e-09 4.662210325e-09 1.022052539e-10 1.383917366e-07 1.619072147e-12 1.507995029e-08 2.056138551e-09 1.984766447e-05 5.313284134e-09 1.04749306e-08 1.156452533e-07 1.201443255e-06 1.584111891e-09 2.09858386e-11 3.445445203e-09 4.164676e-06 4.092776954e-12 9.944337818e-10 5.276009823e-09 3.628978704e-11 2.197020798e-10 1.052815682e-08 1.068627029e-08 3.831431452e-11 1.364029236e-07 3.403124343e-10 5.38162347e-08 6.729323819e-12 1.207769187e-07 4.017542328e-09 1.315683749e-08 7.126836658e-11 1.491126652e-07 7.209030864e-10 6.628062787e-08 1.21591155e-10 6.230923352e-09 0.000101234359 5.30942773e-10 5.741385346e-10 2.429893426e-08 7.325998025e-12 3.533987787e-09 7.926231814e-10 8.291189826e-11 3.746302962e-11 5.242302307e-11 8.718447375e-08 6.176050515e-11 6.09961364e-09 2.644343829e-09 2.306901235e-08 7.322344218e-10 1.884045094e-06 3.755632286e-08 1.659778169e-08 5.495025114e-08 3.546727594e-09 2.674246643e-07 1.028252112e-09 9.289249703e-06 7.959960572e-08 1.068081079e-11 5.674343265e-07 6.214463157e-09 1.601066932e-06 1.977738539e-06 3.462786645e-07 7.373697384e-09 5.726726673e-12 diff --git a/t/ME_data/ME_Wp.dat b/t/ME_data/ME_Wp.dat index d9e12fc..53c7f25 100644 --- a/t/ME_data/ME_Wp.dat +++ b/t/ME_data/ME_Wp.dat @@ -1,1289 +1,1289 @@ 0.0001355688725 3.608722302e-05 4.306341977e-07 9.75550325e-07 7.965530581e-08 1.158741173e-06 2.661843554e-06 2.305034582e-09 2.352135748e-07 1.82973514e-06 7.663338515e-10 1.356607225e-07 3.025163564e-07 9.674844388e-08 1.08577046e-08 1.140610128e-07 9.611408862e-06 9.926076721e-06 0.0002395617463 3.935060204e-07 1.135288401e-06 3.820198516e-06 9.707598452e-05 1.989871939e-08 4.670964333e-06 6.369460204e-08 5.769260099e-06 6.100771974e-07 4.177606056e-07 5.131150168e-05 2.623663346e-08 9.921267961e-07 2.81862487e-05 2.357728363e-06 1.52940914e-07 3.812119407e-09 4.089890436e-06 5.519579034e-08 3.108467376e-05 6.275083181e-07 0.0004711631212 3.321145292e-11 3.599907229e-07 0.0005693438579 5.344259311e-06 1.369519561e-07 4.610580273e-08 2.759136384e-08 0.0002011663129 8.79267475e-06 2.70389756e-06 1.871332754e-09 6.64520168e-07 0.0134591178 8.026976255e-06 1.13118716e-07 2.178470183e-07 3.510890511e-05 1.899844473e-07 1.045126454e-06 1.869095429e-06 2.768546174e-06 8.551014192e-08 7.773400333e-07 4.53144298e-06 1.601156732e-06 1.364165622e-07 1.896432416e-08 1.972891892e-07 7.870126436e-08 1.027083098e-09 1.68746816e-07 6.312089294e-10 3.505278148e-07 4.91589775e-06 1.471309784e-08 5.806965344e-07 1.107356095e-06 2.913951197e-05 2.124037647e-06 2.12990617e-07 1.356428765e-06 2.199225656e-08 9.711357262e-08 0.0001385574064 6.515223743e-07 2.535298939e-05 9.498820108e-06 7.275424133e-08 3.660521443e-08 1.057452388e-07 1.476424382e-10 1.535388646e-05 8.248395671e-07 3.681439971e-07 6.978801279e-07 2.186342703e-08 0.00317235351 0.0002184140294 1.851577146e-06 2.387181833e-07 0.0002408737015 2.563590676e-07 1.00063893e-09 4.85334472e-06 1.03755407e-07 7.119588285e-06 2.561890817e-06 6.552784786e-08 2.501651241e-08 3.220116707e-08 4.669231392e-07 1.713317361e-05 1.245254933e-09 7.470170779e-06 1.12179479e-10 2.566806243e-08 0.000690252632 1.619690789e-08 0.007842918829 3.718578613e-05 0.0007152644659 3.366872929e-05 3.590280598e-05 0.0001083353837 1.746053028e-07 2.714474998e-05 5.49513934e-05 6.535082158e-05 5.041690215e-07 3.546092261e-06 1.20179547e-08 2.615186068e-08 0.005544506156 2.669153415e-08 1.124413241e-07 2.097675904e-07 0.0004497021745 3.522902236e-06 3.609795144e-10 2.381543307e-06 0.0001723836125 8.005109609e-06 2.55897517e-05 1.661304559e-05 7.830076033e-06 8.689122826e-05 1.60422181e-05 1.56327932e-07 7.475227738e-08 3.375304186e-08 7.208470216e-08 -8.191390486e-10 +5.524153757135919e-10 5.4103721e-09 9.793444055e-05 1.21018852e-06 5.403237195e-06 9.396037827e-07 -1.366976742e-06 +9.218690916306924e-07 1.916819566e-05 2.177871221e-06 0.0003020897612 6.197213888e-08 2.556142456e-08 1.364194249e-05 1.038835664e-05 1.181892855e-07 5.005165507e-06 -5.35483996e-08 +3.611225631803286e-08 1.221974589e-08 1.942760585e-05 3.734309313e-06 0.0001093995311 2.068051727e-06 8.857501175e-06 4.173118322e-06 2.109563994e-08 1.44827703e-06 4.552053973e-07 1.371432834e-06 8.524886363e-07 1.659141663e-09 1.245863146e-07 0.0002242637793 3.699075972e-06 2.084644637e-10 2.212848552e-08 8.425415515e-08 2.259085562e-07 0.007259913649 4.467603509e-06 3.025351151e-06 1.224940717e-08 1.15612173e-07 1.910495778e-06 6.957098183e-08 3.814134721e-08 4.664811457e-07 1.051815649e-05 3.412719008e-13 6.131289047e-07 6.896616304e-06 2.90239901e-05 5.756729461e-09 1.528995487e-08 5.225540705e-09 3.429458529e-05 2.622252694e-09 0.0005682063516 7.453799242e-07 1.807444313e-05 9.740908615e-07 2.028479198e-06 9.039653406e-08 2.480442463e-06 0.0004804561921 1.082404311e-08 2.792579136e-06 0.0002121921202 9.812552393e-05 7.828388801e-07 0.001456303522 1.943547444e-08 1.718825287e-07 -1.018305194e-09 +6.867301068547712e-10 1.796235147e-07 3.651695186e-07 1.227417157e-07 -9.855784321e-06 +6.64659657953662e-06 8.406970187e-05 0.001885290476 0.0001570330885 2.314708659e-06 0.0002982727873 0.003229609179 2.42756184e-10 1.896039184e-06 -1.765970661e-08 +1.190944745856344e-08 4.219946428e-07 7.272059576e-08 1.591962088e-06 2.437096009e-07 2.465458718e-10 3.867407921e-06 7.355333709e-09 3.882793753e-06 0.003249948478 1.636247528e-05 0.0003223792165 2.270764742e-05 1.158210386e-07 4.803440794e-06 -2.87447101e-06 +1.938501144056279e-06 1.00011733e-06 7.966528549e-08 1.977164344e-05 3.697861147e-06 0.0001118273732 8.542125574e-09 3.549017984e-05 4.419576384e-08 0.000415723574 1.269135249e-06 1.336086492e-09 0.0001810768552 5.607526182e-08 7.073836906e-08 6.226377541e-05 3.842918719e-07 6.352284838e-05 1.767534549e-08 0.002554251878 1.646540099e-08 1.960645506e-08 0.0002646807702 1.199915361e-05 4.194897886e-08 0.000116967724 1.112499069e-08 4.229713001e-07 4.907009816e-08 1.380172172e-06 1.086563506e-05 4.639365797e-08 5.978111043e-07 7.468593061e-08 2.128107648e-08 3.566631743e-10 1.4537143e-09 3.088717592e-05 3.041172443e-05 2.604197881e-07 1.592445808e-06 1.544432896e-07 3.372379695e-06 0.0001468102323 5.574768414e-07 4.759127919e-10 0.00093067198 5.974247937e-06 0.0002033151473 2.248619959e-06 1.737481127e-05 3.508166199e-06 2.435498983e-09 6.369004222e-06 9.703729079e-09 1.740708919e-06 3.283306645e-07 1.701425138e-08 4.192916377e-08 4.498845691e-05 3.834128247e-05 1.152621968e-09 1.27759416e-05 0.000281123799 1.725068848e-07 1.077501014e-06 0.004189517285 1.659706255e-07 1.343358849e-07 8.327570633e-07 1.678461499e-08 5.667318085e-07 1.495443328e-09 6.283129102e-07 7.691168852e-09 1.613371844e-08 4.367733457e-08 1.328415042e-09 1.452913836e-06 2.025565342e-07 1.29314441e-06 3.674495466e-07 4.037738642e-06 2.086123437e-08 1.579986535e-06 7.231915707e-10 3.157015643e-07 0.0003660037209 0.0008949054777 5.638174345e-08 3.288585027e-06 5.432504634e-08 5.180759332e-10 5.121204016e-08 1.939451095e-08 1.979142335e-05 2.529002486e-08 0.0002538283082 3.80397913e-05 7.172326439e-06 2.759121311e-06 3.708767178e-06 4.71298987e-08 0.0001084418497 5.277822142e-08 -6.471171803e-08 +4.364063474995147e-08 1.209897825e-07 3.136890863e-08 1.044095011e-07 6.962956326e-08 6.454347396e-06 2.03105437e-09 4.064764112e-07 1.125205343e-06 3.916697214e-06 5.611785349e-07 1.848611741e-07 2.582403728e-07 8.839788397e-05 2.850326226e-06 2.108292593e-07 1.232805123e-08 9.539264139e-08 0.006539873531 2.250970922e-05 3.287682183e-08 3.209268362e-11 3.531432382e-10 1.155035491e-07 1.892464014e-07 1.339909548e-08 5.52939388e-08 1.151900346e-05 0.005889722048 8.216256879e-05 1.557120111e-07 9.089312296e-08 4.410189849e-07 4.12565868e-08 1.888812372e-07 5.726907174e-05 1.874558888e-09 9.008463668e-12 1.709044906e-05 1.67931414e-07 8.335566347e-06 1.14159826e-08 0.002680456252 1.068398085e-08 1.957173741e-06 2.244367604e-05 1.231910962e-05 4.629935916e-05 4.576226372e-06 1.980987784e-08 3.93911073e-07 2.650096111e-05 8.453749094e-06 3.871976822e-08 0.002862691182 4.135291611e-08 0.0002240310514 1.626024307e-07 1.446697749e-07 1.81572275e-06 3.82343645e-07 1.519921801e-06 7.180741242e-10 3.48543689e-05 7.358200622e-08 7.791803572e-06 7.340099307e-07 1.64882977e-05 5.701378479e-07 1.101811989e-07 2.180113388e-08 0.005048614688 1.4109536e-08 1.796629531e-05 3.537585755e-05 2.035011121e-05 1.003894855e-08 0.0007063054044 8.670678472e-05 6.82639369e-08 5.900706666e-06 1.447352541e-08 -2.170801903e-06 +1.463957005451528e-06 2.460311e-05 3.389946454e-08 3.777468751e-07 7.004890999e-07 3.633307241e-05 4.394910201e-07 7.401664237e-07 0.004667703381 4.822543865e-07 1.289604844e-08 0.0001296635825 1.387032601e-06 2.915976119e-05 1.716214639e-07 2.901236713e-08 7.505249455e-10 1.054930074e-09 5.765824783e-07 9.011588796e-11 1.700596863e-06 3.410463387e-08 7.817851611e-06 0.000171359498 4.092934015e-08 9.55513037e-08 2.412195475e-06 3.183516928e-09 0.0006930495435 1.228003613e-07 8.804634278e-05 2.13517622e-06 4.693017624e-06 5.984372321e-08 2.487744823e-06 1.776206816e-07 6.533684691e-07 1.015310185e-06 4.483048832e-06 1.390213091e-06 2.463272722e-09 0.0001373179166 4.692519624e-10 6.223649822e-09 3.026899135e-06 5.540599649e-08 5.422865018e-08 8.715360663e-08 3.005262078e-06 4.491518597e-06 1.296331911e-08 8.034189259e-07 8.445679444e-07 1.331376027e-08 1.808292903e-06 4.811816349e-06 3.356636075e-06 3.718204067e-07 1.63321067e-06 1.145748524e-06 1.082083666e-06 6.645503138e-07 7.690061877e-06 9.446655788e-07 0.0001628166399 0.0004161528763 2.733182188e-06 4.797973294e-06 0.0001243192011 0.0004489774904 4.018994469e-08 6.294131882e-05 0.0006300938801 3.276964999e-07 5.253447013e-07 -8.917191585e-09 +6.013623386455616e-09 6.133379962e-07 7.498082273e-08 9.70785668e-08 2.892020441e-07 0.0008858500922 5.834224897e-12 2.657258192e-05 1.937050603e-08 1.014207639e-08 2.078416478e-09 9.09266244e-09 1.171070677e-06 6.186008954e-07 7.316626453e-08 1.137928043e-05 3.926244745e-07 9.411347464e-08 2.358883261e-05 3.718597508e-06 8.746279414e-07 2.158976175e-07 7.682516501e-08 4.623476813e-08 1.822643012e-09 5.649636691e-07 8.861102166e-07 3.661799027e-06 0.005151284527 1.333261465e-08 0.01070078066 3.557312307e-07 7.956062001e-07 1.102026215e-05 9.099085434e-08 9.760469392e-07 4.026083515e-07 3.148718342e-05 3.344966932e-10 5.83259011e-08 0.000275860311 5.979810844e-06 2.336312158e-06 1.214278297e-06 1.257019376e-05 4.380094449e-07 8.01469852e-07 0.003169580958 9.221636814e-05 4.690760304e-07 7.648050266e-07 1.418690988e-05 2.220802016e-07 3.14201845e-07 1.911591064e-07 2.452984351e-08 0.0001445594492 3.388666373e-11 1.315444637e-09 3.270418535e-05 2.302140766e-07 4.002096106e-06 -1.469589992e-06 +9.910699640329833e-07 1.156198845e-08 4.49026944e-08 0.0002105189957 1.502882545e-10 0.0003938508954 2.359522705e-06 -8.550778195e-05 +5.766519563931604e-05 4.012744154e-07 1.060136498e-07 0.0002141768308 2.679472087e-06 1.069266147e-05 2.48432308e-09 0.0001019831675 1.193130845e-06 1.086711459e-06 1.985358343e-07 -1.739018449e-10 -7.388141233e-07 +1.172768568716882e-10 +4.982454226859217e-07 2.574857412e-05 0.001250253279 2.058059351e-09 1.333980604e-07 9.818799108e-09 5.15408822e-07 0.0001083932826 1.428558882e-06 1.74625784e-05 2.151559189e-05 0.01028504249 7.324000358e-07 2.685867501e-08 4.250514247e-05 0.0004356795916 3.289457433e-07 0.00323686003 3.007561717e-08 2.793887221e-06 1.897911806e-05 1.61972882e-07 8.953729168e-05 4.802035152e-06 7.858920744e-06 7.610825707e-07 2.314286712e-05 4.93977485e-09 4.92614674e-09 8.469370311e-07 3.80925189e-05 8.402086849e-09 4.426792197e-07 2.426545735e-06 3.814110561e-08 1.746240227e-06 1.52446212e-07 7.921180881e-05 2.10135866e-07 4.839236788e-07 5.352097408e-07 4.622274946e-05 0.001900140645 -2.85310478e-06 +1.924092071480528e-06 0.001430541179 4.980473899e-08 0.001646505316 1.600615719e-05 2.692315114e-06 4.189143283e-06 9.988552464e-08 3.325410404e-05 1.063381388e-06 4.230272945e-06 3.9885381e-06 0.0001050685482 5.986074981e-08 2.025564094e-06 4.345191943e-07 8.910595474e-05 2.543279105e-06 0.0002129944726 8.738486781e-06 4.913962453e-09 4.914524134e-10 3.330632607e-05 1.95151118e-06 1.384784661e-05 -3.18562271e-07 +2.148337292837028e-07 1.685318586e-07 1.114845673e-07 6.020836887e-05 1.280889433e-07 4.215297019e-07 3.062431208e-07 6.986710594e-07 1.615334662e-07 1.317663183e-07 0.0008030217322 2.015927418e-05 5.19186806e-06 5.500044264e-07 3.714750104e-08 0.0002157285841 9.440044669e-07 6.51295213e-08 1.03903577e-08 0.0001795918463 1.962893454e-05 7.871495075e-10 2.12576483e-08 1.743490745e-05 1.541416437e-06 3.391980216e-06 8.359096999e-06 1.415613908e-09 7.887561636e-07 1.745081946e-07 1.932727685e-07 9.828062711e-07 1.291461662e-07 9.278171187e-05 4.264104098e-06 3.754457748e-07 3.452634763e-05 8.101309385e-06 4.056256865e-09 2.25304955e-07 1.172523704e-05 4.796449304e-07 -5.612956712e-09 +3.785295788394707e-09 2.390481542e-05 5.308836572e-08 4.670595432e-05 6.758171771e-05 -1.509575766e-09 +1.01803578427425e-09 1.661568152e-05 5.893560303e-08 3.900939999e-05 3.504262189e-08 8.675964674e-05 0.0001335992511 1.302314855e-06 1.146394419e-06 6.394209116e-06 2.519496842e-05 0.0001367050958 4.154554201e-09 2.099823438e-06 2.146448613e-05 1.233863159e-09 0.001728586801 4.09215386e-05 0.007151464488 4.760189124e-09 0.0007525692076 1.763213602e-08 2.706320225e-07 4.168939514e-06 6.813774053e-07 6.199680386e-06 1.450358601e-09 0.001178944008 3.552524877e-07 0.001006338796 3.68488544e-07 2.167674892e-07 2.537842791e-06 7.658583099e-07 -3.842627831e-07 +2.591411922436858e-07 4.604369581e-08 4.168373998e-07 7.238778845e-09 1.170127806e-06 4.393582652e-07 0.0007919330066 1.02877764e-06 6.918341723e-08 9.436339417e-08 1.591183988e-06 2.089478745e-06 1.613369096e-07 3.637102293e-07 9.604977934e-07 9.357975878e-07 2.88751538e-06 6.126247948e-06 1.015660592e-05 5.755046456e-06 0.002323684387 8.012994582e-07 5.26519905e-07 0.0002032569161 1.451031711e-07 5.477022502e-07 7.468911459e-07 1.172272701e-05 5.000191366e-06 1.572889827e-06 6.442064306e-08 2.908881721e-05 4.569175874e-05 0.0003671971117 1.009483851e-07 1.696662855e-09 1.138346461e-08 7.716922378e-07 3.529252959e-06 6.363107685e-07 1.932801483e-07 5.985897033e-07 3.856271125e-06 8.483829284e-07 7.519170568e-09 6.046535116e-06 8.332016051e-05 0.0004929003218 1.066348909e-06 6.354668796e-05 2.325179903e-05 3.330122089e-07 7.907070499e-09 3.514991564e-06 6.69519932e-06 7.791955281e-08 3.007406815e-09 1.687262337e-06 2.966015995e-06 2.551884972e-08 0.02757085539 1.902124521e-06 1.858863499e-06 1.174589642e-07 6.265121517e-07 0.0001498056382 2.510077007e-07 0.003704558135 7.86457155e-05 1.776365133e-08 0.0002011705313 4.239853347e-06 1.056573955e-06 0.0008521527377 4.768494505e-07 5.244547978e-06 0.0001425058496 4.507288271e-07 3.092538831e-07 0.007681533942 1.571813043e-07 3.341399818e-08 9.577252789e-07 1.135356146e-09 1.20086557e-07 4.167792379e-06 7.827764185e-06 1.444125375e-06 2.567040739e-05 3.703109657e-07 3.826055602e-08 2.223174582e-07 1.771598439e-05 1.154475457e-07 4.676107532e-07 1.045592241e-08 5.174223151e-07 8.734482888e-07 1.146406702e-08 8.784052908e-07 7.500525642e-10 1.921656528e-05 5.899142263e-08 7.30476082e-05 1.070817446e-08 2.432332991e-05 -3.657113723e-09 +2.466303925798377e-09 1.587801136e-05 5.253580132e-08 1.186388137e-06 2.513054181e-08 2.878235795e-05 1.268594957e-09 -5.985219895e-07 +4.036344625890604e-07 1.480245097e-05 0.007764649525 1.266626553e-05 2.673316923e-07 2.052285557e-07 3.026411522e-09 3.958784188e-09 5.153150957e-10 2.304903761e-10 4.00173635e-09 5.422672396e-12 1.0797419e-08 7.876103608e-07 2.04929605e-13 2.452584831e-10 6.723994081e-09 1.881390676e-09 8.769218159e-09 1.325727129e-07 2.663023215e-10 8.598804962e-09 1.838865267e-09 1.411793749e-09 3.180735014e-09 1.657163946e-09 6.291662125e-07 1.407385591e-08 2.446407045e-10 3.694683988e-06 7.168303932e-08 1.515131945e-07 5.976833117e-07 9.943757029e-11 1.770333656e-10 6.826832537e-10 6.831079527e-10 1.003726202e-11 2.246655664e-10 1.56313715e-08 1.258803718e-08 1.510698504e-09 1.860286446e-08 7.436041453e-11 8.891989836e-11 8.343726115e-07 7.82113065e-10 7.372199042e-09 1.73794743e-08 4.796628283e-10 1.006843364e-11 2.297522292e-07 2.964339936e-09 5.119472399e-06 1.217098723e-09 1.247855962e-10 2.379923838e-10 6.847023572e-08 1.126084853e-08 9.36637247e-09 8.815353934e-13 1.248942677e-09 1.288006978e-06 1.862006179e-05 5.986024169e-09 3.576379278e-09 1.396207867e-07 5.597776909e-09 1.227869194e-07 3.184774841e-10 1.281546379e-09 3.785370242e-08 2.653293919e-11 1.797326593e-08 4.870914289e-09 1.481397924e-08 6.148653826e-13 2.60768604e-08 7.503399778e-09 7.319978311e-10 3.917579972e-06 2.456000696e-09 1.6358728e-09 1.504286785e-07 4.626076109e-12 2.544705854e-10 2.326334049e-09 1.209466619e-07 9.766234969e-09 2.844168649e-07 1.201220077e-06 7.29513531e-08 2.673472495e-08 3.217664769e-11 3.051103391e-08 8.284753217e-08 2.058274741e-10 2.829620954e-09 6.31774405e-05 5.647654886e-08 3.939849241e-09 6.945357028e-09 2.688851327e-09 1.246699666e-07 1.659903866e-07 2.236198294e-05 9.480526263e-09 9.500853178e-07 7.271132888e-08 4.043174967e-07 7.378138213e-10 1.151223659e-07 3.256246906e-08 1.170385775e-12 5.503748995e-08 1.04382963e-11 1.203555924e-08 1.075568292e-10 8.108085296e-07 4.847854101e-11 7.343632975e-06 1.187566413e-11 6.085942402e-09 7.018111299e-12 2.463652527e-10 1.851835159e-10 1.513115041e-09 8.018679868e-09 3.929445577e-06 2.084075835e-07 5.951216671e-10 3.507041185e-06 5.267975954e-12 3.372609083e-06 1.694025855e-11 1.867026183e-10 2.116504705e-10 3.831483929e-10 6.969465117e-05 1.539468292e-08 1.101455262e-11 1.388260351e-10 5.247893014e-08 4.682122453e-08 6.387349339e-14 2.19360099e-08 1.553226092e-09 2.996160973e-08 2.723720456e-11 1.94231476e-09 1.292957006e-11 3.828519911e-12 1.610161407e-08 1.687340225e-06 1.925507425e-09 4.366763058e-13 6.454545293e-07 6.024146742e-07 2.580279916e-10 1.225824367e-05 1.999348472e-11 4.860969609e-11 2.362388708e-08 1.373681959e-08 3.790417277e-12 2.360779892e-11 3.1293099e-07 1.364398624e-09 1.715330241e-05 3.172978773e-08 1.823609884e-08 3.114529471e-09 3.261473002e-10 2.126205049e-05 5.67083409e-08 6.583915678e-14 7.465321603e-10 1.354621048e-10 2.460861072e-08 1.087512798e-09 2.736687033e-07 5.113035943e-10 6.306214627e-07 4.283779224e-11 2.044825034e-08 6.895612973e-10 6.338164558e-12 5.398174211e-09 1.015670208e-07 5.845735119e-10 4.836785182e-08 5.100824595e-10 1.572989395e-08 1.787382013e-10 1.632652152e-08 7.01728011e-08 7.320289671e-12 3.029928398e-11 1.409128876e-12 1.238566734e-06 8.502740668e-08 3.438552357e-08 4.863721359e-07 5.154442037e-07 2.08972413e-09 3.431301186e-10 5.565393637e-13 1.544285017e-09 4.30867667e-09 2.652046726e-09 1.604339305e-11 1.019689627e-05 1.123301038e-09 2.815571339e-12 1.072295152e-10 6.773569516e-09 2.399435949e-09 1.754778047e-07 6.118111465e-11 8.592783136e-06 6.887731648e-11 1.799971692e-09 2.674451282e-10 1.267736949e-08 1.616784109e-09 2.41843279e-10 2.161775938e-07 3.594767539e-06 1.314807907e-05 3.035193063e-06 5.146951027e-12 8.12518692e-07 2.904383885e-07 8.278942839e-08 1.491259815e-12 3.232983294e-10 3.014861189e-07 3.869348398e-08 4.060145232e-09 2.722588887e-09 1.252225008e-06 8.534088341e-10 1.170269802e-13 1.013048217e-07 1.173680983e-10 1.230880253e-06 3.603057796e-07 2.340496864e-10 1.622753822e-07 1.855111476e-10 1.873444017e-13 1.477986621e-10 5.974804124e-09 5.502900798e-08 6.238803852e-09 2.281648706e-08 2.708668262e-09 8.942323868e-07 8.600240612e-08 5.313999062e-08 1.150328412e-06 4.275682161e-10 2.535797082e-12 1.472728159e-07 2.05454394e-10 2.452447725e-06 2.149816554e-09 1.302067004e-08 1.354519139e-05 1.493773984e-10 4.155192241e-09 1.975441615e-09 4.417745266e-09 3.017038977e-08 6.10674516e-07 7.43296019e-09 3.802076048e-08 1.356542979e-08 7.945938899e-11 3.638927521e-12 1.061272859e-06 3.425627163e-09 4.724471432e-09 2.264988832e-06 5.206993128e-12 1.903839604e-11 5.585175902e-09 9.146019191e-13 8.796344869e-08 2.018357672e-09 7.316136952e-07 6.365052389e-11 5.084402628e-08 4.955636143e-10 7.579083396e-10 1.041589492e-10 1.067922679e-10 2.629804234e-10 7.253503328e-09 3.644406678e-09 3.524116213e-06 1.911509485e-10 7.70936902e-09 9.497529697e-06 1.776186622e-07 7.672088841e-12 1.053749536e-07 4.528511033e-07 2.689071764e-11 2.172737406e-09 1.388580447e-10 8.063951339e-10 5.664084936e-08 1.744805297e-09 2.052101897e-11 2.110860659e-11 4.471965163e-07 1.547872897e-09 1.123990826e-08 1.220466442e-08 7.869401405e-07 1.643506226e-10 1.008594225e-08 3.353990229e-07 6.498833539e-10 1.784315183e-10 3.805120267e-07 8.427310035e-07 1.498076756e-09 1.039474025e-10 1.111563184e-08 1.747513597e-09 2.355165317e-09 1.678233595e-08 3.217683158e-12 5.649816397e-08 7.451025295e-08 3.278979106e-11 3.654252804e-11 1.935635959e-11 4.454493836e-09 1.468843362e-11 6.571277705e-09 6.056988847e-10 1.451019442e-07 1.129031793e-10 1.042132383e-11 3.257388686e-11 9.125965424e-09 1.157787061e-08 1.347062065e-10 1.77255365e-07 2.066007246e-07 1.183381206e-10 4.34066107e-11 1.724089241e-07 1.017527409e-09 4.44819419e-08 9.298034227e-10 1.457982094e-08 1.344707431e-06 3.942998333e-10 6.431805784e-10 2.598344406e-09 9.723411144e-11 5.888094133e-07 1.250960845e-08 1.918965372e-08 4.048461902e-10 2.358561388e-08 9.312555038e-07 4.777092354e-09 1.101320525e-05 4.464641617e-10 7.607867556e-08 5.154678729e-10 2.264518558e-08 8.764203667e-09 8.615359173e-07 1.400305016e-06 2.971220423e-07 1.703068601e-09 9.085894816e-08 7.676840903e-09 3.495641886e-07 5.3486215e-10 8.550499106e-10 5.359621176e-10 3.270585775e-08 2.199341422e-11 3.481833841e-07 1.663118365e-12 1.079199186e-09 2.042388686e-11 1.522460286e-08 1.814687048e-09 3.79827064e-08 3.251582144e-06 1.339564566e-08 1.067207794e-10 2.907408741e-09 2.121056487e-09 -2.860605344e-10 +1.929150342315743e-10 5.485146663e-10 2.944552971e-10 3.400695511e-09 2.722315508e-07 1.103475015e-07 4.918180357e-10 1.403530754e-08 1.186111191e-10 2.383851903e-09 6.366433869e-10 2.884801368e-08 3.233653883e-09 0.0001662977498 2.949009865e-10 2.818141905e-08 4.590633891e-10 2.878567552e-11 1.429984095e-11 2.151490092e-11 4.991815907e-07 7.608561997e-11 4.322238014e-08 8.515965863e-10 4.522028585e-09 4.658966814e-08 4.872474226e-10 1.225955173e-08 9.732456294e-09 -8.233972895e-08 +5.552870709834466e-08