示例#1
0
matrix<double>& EvolDF1nlep::Df1Evolnlep(double mu, double M, orders order, orders_ew order_ew, schemes scheme) {
    switch (scheme) {
        case NDR:
            break;
        case LRI:
        case HV:
        default:
            std::stringstream out;
            out << scheme;
            throw std::runtime_error("EvolDF1nlep::Df1Evolnlep_EM(): scheme " + out.str()
                    + " not implemented ");
    }

    if (mu == this->mu && M == this->M && scheme == this->scheme && order_ew == NULL_ew)
       return (*Evol(order));
    
    if (mu == this->mu && M == this->M && scheme == this->scheme &&  order_ew == NLO_ew)
       return (*Evol(order_ew));
        
    if (M < mu) {
        std::stringstream out;
        out << "M = " << M << " < mu = " << mu;
        throw out.str();
    }

    setScales(mu, M); // also assign evol to identity

    double m_down = mu;
    double m_up = model.AboveTh(m_down);
    double nf = model.Nf(m_down);
    
    while (m_up < M) {
        Df1Evolnlep(m_down, m_up, nf, scheme);
        Df1threshold_nlep(m_up, nf+1.);
        m_down = m_up;
        m_up = model.AboveTh(m_down);
        nf += 1.;
    }
    
    Df1Evolnlep(m_down, M, nf, scheme);
    
    if(order_ew != NULL_ew){
    
    return (*Evol(order_ew));
    }
    
    else { 
    return (*Evol(order)); 
    }
   
   }
示例#2
0
gslpp::matrix<double>& EvolDC1Buras::DC1EvolBuras(double mu, double M, orders order, schemes scheme) 
{
    switch (scheme) {
        case NDR:
            break;
        case LRI:
        case HV:
        default:
            std::stringstream out;
            out << scheme;
            throw std::runtime_error("EvolDC1::Df1EvolDC1(): scheme " + out.str() + " not implemented "); 
    }

    double alsMZ = model.getAlsMz();
    double Mz = model.getMz();
    if(alsMZ == alsMZ_cache && Mz == Mz_cache) {
        if (mu == this-> mu && M == this->M && scheme == this->scheme)
        return (*Evol(order));        
    }
    alsMZ_cache = alsMZ;
    Mz_cache = Mz;

    if (M < mu) {
        std::stringstream out;
        out << "M = " << M << " < mu = " << mu;
        throw out.str();
    }

    setScales(mu, M); // also assign evol to identity

    double m_down = mu;
    double m_up = model.AboveTh(m_down);
    double nf = model.Nf(m_down);
    while (m_up < M) {
        DC1EvolBuras(m_down, m_up, nf, scheme);
        DC1PenguinThresholds(m_up, order);
        m_down = m_up;
        m_up = model.AboveTh(m_down);
        nf += 1.;
    }
    DC1EvolBuras(m_down, M, nf, scheme);
    return (*Evol(order));
    
    }