Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-06-02 08:17:11

0001 //
0002 // APFEL++ 2017
0003 //
0004 // Author: Valerio Bertone: valerio.bertone@cern.ch
0005 //
0006 
0007 #pragma once
0008 
0009 #include "apfel/matchedevolution.h"
0010 #include "apfel/constants.h"
0011 
0012 #include <functional>
0013 #include <complex>
0014 
0015 namespace apfel
0016 {
0017   /**
0018    * @brief The AlphaQCDLambda is a specialization class of the
0019    * MatchedEvolution class for the computation of the QCD coupling
0020    * running in terms of LambdaQCD.
0021    */
0022   class AlphaQCDLambda
0023   {
0024   public:
0025     /**
0026      * @name Constructors
0027      * List of constructors.
0028      */
0029     ///@{
0030     AlphaQCDLambda() = delete;
0031 
0032     /**
0033      * @brief AlphaQCDLambda constructor.
0034      * @param LambdaQCD: the value of LambdaQCD
0035      * @param nfRef: the number of flavours of LambdaQCD
0036      * @param Thresholds: vector of thresholds
0037      * @param pt: perturbative order
0038      */
0039     AlphaQCDLambda(double              const& LambdaQCD,
0040                    int                 const& nfRef,
0041                    std::vector<double> const& Thresholds,
0042                    int                 const& pt);
0043     ///@}
0044 
0045     /**
0046      * @brief Function that returns the evolved object over the full complex plane
0047      * @param t: the complex final scale expressed as log(m2)
0048      * @param nf: the number of active flavours
0049      * @return the evolved object.
0050      */
0051     std::complex<double> Evaluate(std::complex<double> const& t, int const& nf) const;
0052 
0053     /**
0054      * @brief Function that returns the evolved object.
0055      * @param mu: the final scale
0056      * @return the evolved object.
0057      */
0058     double Evaluate(double const& mu) const;
0059 
0060     /**
0061      * @brief Function that returns the evolved object using the
0062      * analytic-perturbation-theory prescription.
0063      * @param mu: the final scale
0064      * @param f: function of the coupling (default: linear)
0065      * @param eps: integration accuracy (default: 10<SUP>-5</SUP>)
0066      * @return the evolved object.
0067      */
0068     double EvaluateAPT(double                                                           const& mu,
0069                        std::function<std::complex<double>(std::complex<double> const&)> const& f = [] (std::complex<double> const& a) -> std::complex<double> { return a; },
0070                        double                                                           const& eps = eps5) const;
0071 
0072     /**
0073      * @brief Function that returns the values of LambdaQCD.
0074      */
0075     std::vector<double> GetLambdaQCD() const { return _LambdaQCD; };
0076 
0077   private:
0078     std::vector<double> const _Thresholds; //!< Vector of heavy-quark thresholds
0079     int                 const _pt;         //!< Perturbative order
0080     std::vector<double>       _LambdaQCD;  //!< Values of LambdaQCD according to the number of active flavours
0081   };
0082 }