Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:24:28

0001 // -*- C++ -*-
0002 //
0003 // AlphaS.h is a part of Herwig - A multi-purpose Monte Carlo event generator
0004 // Copyright (C) 2018-2019 The Herwig Collaboration
0005 //
0006 // Herwig is licenced under version 3 of the GPL, see COPYING for details.
0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
0008 //
0009 #ifndef HERWIG_UtilAlphaS_H
0010 #define HERWIG_UtilAlphaS_H
0011 
0012 namespace Herwig {
0013 
0014 namespace Math {
0015 
0016   /**
0017    * The derivative of \f$\alpha_S\f$ with respect to \f$\ln(Q^2/\Lambda^2)\f$
0018    * @param q The scale
0019    * @param lam \f$\Lambda_{\rm QCD}\f$
0020    * @param nf The number of flavours 
0021    */
0022 inline double derivativeAlphaS(Energy q, Energy lam, 
0023                                unsigned int nf, unsigned int nloop) {
0024   using Constants::pi;
0025   double lx = log(sqr(q/lam));
0026   double b0 = 11. - 2./3.*nf;
0027   double b1 = 51. - 19./3.*nf;
0028   double b2 = 2857. - 5033./9.*nf + 325./27.*sqr(nf);
0029   if(nloop==1)
0030     return -4.*pi/(b0*sqr(lx));
0031   else if(nloop==2)
0032     return -4.*pi/(b0*sqr(lx))*(1.+2.*b1/sqr(b0)/lx*(1.-2.*log(lx)));
0033   else
0034     return -4.*pi/(b0*sqr(lx))*
0035       (1.  + 2.*b1/sqr(b0)/lx*(1.-2.*log(lx))
0036        + 4.*sqr(b1)/(sqr(sqr(b0))*sqr(lx))*(1. - 2.*log(lx)
0037                         + 3.*(sqr(log(lx) - 0.5)+b2*b0/(8.*sqr(b1))-1.25)));
0038 }
0039 
0040   /**
0041    * The 1,2,3-loop parametrization of \f$\alpha_S\f$.
0042    * @param q The scale
0043    * @param lam \f$\Lambda_{\rm QCD}\f$
0044    * @param nf The number of flavours 
0045    */
0046 inline double alphaS(Energy q, Energy lam, 
0047                      unsigned int nf, unsigned int nloop) {
0048   using Constants::pi;
0049   double lx(log(sqr(q/lam)));
0050   double b0 = 11. - 2./3.*nf;
0051   double b1 = 51. - 19./3.*nf;
0052   double b2 = 2857. - 5033./9.*nf + 325./27.*sqr(nf);
0053   // one loop
0054   if(nloop==1)
0055     {return 4.*pi/(b0*lx);}
0056   // two loop
0057   else if(nloop==2) {
0058     return 4.*pi/(b0*lx)*(1.-2.*b1/sqr(b0)*log(lx)/lx);
0059   }
0060   // three loop
0061   else
0062     {return 4.*pi/(b0*lx)*(1.-2.*b1/sqr(b0)*log(lx)/lx + 
0063                4.*sqr(b1)/(sqr(sqr(b0))*sqr(lx))*
0064                (sqr(log(lx) - 0.5) + b2*b0/(8.*sqr(b1)) - 5./4.));}
0065 }
0066 
0067 
0068 }
0069 
0070 }
0071 
0072 #endif