#include "PHASIC++/Selectors/Selector.H" #include "PHASIC++/Process/Process_Base.H" namespace SHNNLO { class DIS_Selector : public PHASIC::Selector_Base { double m_qtmin, m_q2; int m_type; double R2(const ATOOLS::Vec4D &p1,const ATOOLS::Vec4D &p2) const; public: DIS_Selector(const PHASIC::Selector_Key &key); double KT2(ATOOLS::Vec4D_Vector &moms,const int beam); bool Trigger(ATOOLS::Selector_List &sl); void BuildCuts(PHASIC::Cut_Data *) {} }; }// end of namespace SHNNLO #include "PHASIC++/Main/Process_Integrator.H" #include "ATOOLS/Phys/Flavour.H" #include "ATOOLS/Org/Run_Parameter.H" #include "ATOOLS/Org/Exception.H" #include "ATOOLS/Org/Message.H" #include "ATOOLS/Org/MyStrStream.H" #define s_ymax std::numeric_limits::max() using namespace SHNNLO; using namespace PHASIC; using namespace ATOOLS; DIS_Selector::DIS_Selector(const Selector_Key &key): Selector_Base("DISNNLO_Selector",key.p_proc) { m_nin=key.p_proc->NIn(); m_nout=key.p_proc->NOut(); m_n=m_nin+m_nout; m_smin=0.0; m_smax=sqr(rpa->gen.Ecms()); m_sel_log = new Selector_Log(m_name); Scoped_Settings s{ key.m_settings }; const auto parameters = s.SetDefault({}).GetVector(); assert(parameters[0] == "DISNNLO"); m_qtmin=s.Interprete(parameters[1]); m_type=m_nout-(p_proc->Info().Has(nlo_type::real)?2+1:2); } bool DIS_Selector::Trigger(ATOOLS::Selector_List &sl) { DEBUG_FUNC(p_proc->Name()); Vec4D_Vector p(1,sl[1].Momentum()); for (size_t i(3);iHit(1-false); int trig=(m_type==0 && kt2sqr(m_qtmin)); return 1-m_sel_log->Hit(1-trig); } double DIS_Selector::KT2(Vec4D_Vector &moms,const int beam) { DEBUG_FUNC("beam = "<gen.PBeam(beam)); pp[0]=pp.PSpat(); for (size_t i(0);ix) // only if hfs energy large enough if (!IsEqual(pp,p,1.0e-3) || !IsEqual(qq,q,1.0e-3)) msg_Error()< "< p_imap(n); std::vector > p_ktij(n,std::vector(n)); double dmin=std::numeric_limits::max(); for (int i=0;i2) { msg_Debugging()<<"Q_{"<"<:: operator()(const Selector_Key &key) const { return new DIS_Selector(key); } void ATOOLS::Getter:: PrintInfo(std::ostream &str,const size_t width) const { str<<"NNLO selector"; }