#include "MODEL/Main/Strong_Coupling.H" #include "ATOOLS/Math/Random.H" #include "ATOOLS/Org/Message.H" #include "ATOOLS/Org/My_MPI.H" using namespace MODEL; using namespace ATOOLS; Strong_Coupling::Strong_Coupling(Running_AlphaS * as,const asform::code & asf, const double & pt02) : m_form(asf), p_as(as), m_pt02(pt02) { switch (m_form) { case asform::constant: case asform::frozen: case asform::smooth: case asform::IR0: m_asmax = (*p_as)(m_pt02); break; case asform::GDH_inspired: m_beta0 = 12.*M_PI/(33.-2.*4.); m_Lambda = 0.349; m_Lambda2 = sqr(m_Lambda); m_gamma = m_beta0/M_PI; m_a = 3.008; m_b = 1.425; m_c = 0.908; m_d = 0.84; m_m2 = sqr(1.204); m_asmax = (*this)(0.); if (m_asmax<0.) { msg_Error()<<"Error in "<Get(); switch (m_form) { case asform::IRregularised_IR0: if (pt2max<=m_pt02) { pt2 = scale2min+(pt2max-scale2min)*sqrt(ran1); if ((*this)(pt2,false)/m_asmax * sqr(m_pt02/(m_pt02+pt2)) * (expo?exp(-4.*pt2/m_pt02):1.)>ran->Get()) runit = false; } else { pt2 = -m_pt02+mini*pow(maxi/mini,ran1); if ((*this)(pt2,false)/m_asmax * pt2/(m_pt02+pt2) * (expo?exp(-4.*pt2/m_pt02):1.)> ran->Get()) runit = false; } break; case asform::IRregularised: case asform::GDH_inspired: case asform::constant: default: pt2 = -m_pt02+mini*pow(maxi/mini,ran1); if ((*this)(pt2)/m_asmax>ran->Get()) runit = false; break; } } //msg_Out()< " // <<"pt^2_max = "<