diff --git a/FixedOrderGen/src/EventGenerator.cc b/FixedOrderGen/src/EventGenerator.cc index e10dee6..b8f87e3 100644 --- a/FixedOrderGen/src/EventGenerator.cc +++ b/FixedOrderGen/src/EventGenerator.cc @@ -1,81 +1,81 @@ #include "EventGenerator.hh" #include "Process.hh" #include "Beam.hh" #include "JetParameters.hh" #include "PhaseSpacePoint.hh" #include "RHEJ/Event.hh" #include "RHEJ/config.hh" namespace HEJFOG{ EventGenerator::EventGenerator( Process process, Beam beam, RHEJ::ScaleGenerator scale_gen, JetParameters jets, int pdf_id, double uno_chance, HiggsProperties higgs_properties, RHEJ::HiggsCouplingSettings Higgs_coupling, RHEJ::RNG & ran ): pdf_{pdf_id, beam.particles[0], beam.particles[1]}, ME_{ [this](double mu){ return pdf_.Halphas(mu); }, RHEJ::MatrixElementConfig{ RHEJ::JetParameters{jets.def, jets.min_pt}, false, std::move(Higgs_coupling) } }, scale_gen_{std::move(scale_gen)}, process_{std::move(process)}, jets_{std::move(jets)}, beam_{std::move(beam)}, uno_chance_{uno_chance}, higgs_properties_{std::move(higgs_properties)}, ran_{ran} { } RHEJ::Event EventGenerator::gen_event(){ HEJFOG::PhaseSpacePoint psp{ process_, jets_, pdf_, beam_.energy, uno_chance_, higgs_properties_, ran_ }; status_ = psp.status(); if(status_ != good) return {}; - RHEJ::Event ev = scale_gen_( + RHEJ::Event ev = scale_gen_( RHEJ::Event{ to_UnclusteredEvent(std::move(psp)), jets_.def, jets_.min_pt } ); const double shat = RHEJ::shat(ev); const double xa = (ev.incoming()[0].E()-ev.incoming()[0].pz())/(2.*beam_.energy); const double xb = (ev.incoming()[1].E()+ev.incoming()[1].pz())/(2.*beam_.energy); // evaluate matrix element on this point ev.central().weight *= ME_.tree( - ev.central().mur, ev.incoming(), ev.outgoing(), false + ev.central().mur, ev.incoming(), ev.outgoing(), ev.decays(), false )/(shat*shat); ev.central().weight *= pdf_.pdfpt(0,xa,ev.central().muf, ev.incoming()[0].type); ev.central().weight *= pdf_.pdfpt(0,xb,ev.central().muf, ev.incoming()[1].type); for(auto & var: ev.variations()){ var.weight *= ME_.tree( - var.mur, ev.incoming(), ev.outgoing(), false + var.mur, ev.incoming(), ev.outgoing(), ev.decays(), false )/(shat*shat); var.weight *= pdf_.pdfpt(0,xa,var.muf, ev.incoming()[0].type); var.weight *= pdf_.pdfpt(0,xb,var.muf, ev.incoming()[1].type); } return ev; } }