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 
0011 #include <functional>
0012 
0013 namespace apfel
0014 {
0015   /**
0016    * @brief The AlphaQCDg is a specialization class of the
0017    * MatchedEvolution class for the computation of the QCD coupling
0018    * running using the analytic g functions.
0019    */
0020   class AlphaQCDg: public MatchedEvolution<double>
0021   {
0022   public:
0023     /**
0024      * @name Constructors
0025      * List of constructors.
0026      */
0027     ///@{
0028     AlphaQCDg() = delete;
0029 
0030     /**
0031      * @brief AlphaQCDg constructor.
0032      * @param AlphaRef: the reference value of the coupling
0033      * @param MuRef: the reference value of the scale
0034      * @param Masses: vector of masses
0035      * @param Thresholds: vector of thresholds
0036      * @param pt: perturbative order
0037      * @param kappa: resummation scale parameter (default: 1)
0038      */
0039     AlphaQCDg(double              const& AlphaRef,
0040               double              const& MuRef,
0041               std::vector<double> const& Masses,
0042               std::vector<double> const& Thresholds,
0043               int                 const& pt,
0044               double              const& kappa = 1);
0045 
0046     /**
0047      * @brief AlphaQCDg constructor.
0048      * @param AlphaRef: the reference value of the coupling
0049      * @param MuRef: the reference value of the scale
0050      * @param Masses: vector of masses
0051      * @param pt: perturbative order
0052      * @param kappa: resummation scale parameter (default: 1)
0053      * @note This constructor assumes that masses and thresholds coincide.
0054      */
0055     AlphaQCDg(double              const& AlphaRef,
0056               double              const& MuRef,
0057               std::vector<double> const& Masses,
0058               int                 const& pt,
0059               double              const& kappa = 1);
0060     ///@}
0061 
0062     /**
0063      * @brief Function for the computation of the matching.
0064      * @param Up: tells whether the matching is upward or not (downward)
0065      * @param nf: number of active flavours
0066      * @param Coup: value of the coupling to be matched
0067      * @return The matched value of the strong coupling \f$\alpha_s\f$ at the threshold
0068      */
0069     double MatchObject(bool const& Up, int const& nf, double const& Coup) const;
0070 
0071     /**
0072      * @brief Dummy function used to overload a purely virtual
0073      * function. It should never be called.
0074      */
0075     double Derivative(int const&, double const&, double const&) const { return 0; };
0076 
0077     /**
0078      * @brief Function for the computation of the evolution.
0079      * @param nf: the number of active flavours
0080      * @param lnmu02: the log of the initial value of the scale
0081      * @param lnmu2 the log of the final value of the scale
0082      * @param as0: the starting object
0083      * @return the object evolved at the scale mu2
0084      */
0085     double EvolveObject(int const& nf, double const& lnmu02, double const& lnmu2, double const& as0) const;
0086 
0087   private:
0088     int                                                           const _pt;                    //!< Perturbative order
0089     double                                                        const _kappa;                 //!< Resummation-scale parameter
0090     std::function<double(bool const&, int const&, double const&)>       _MatchingConditions;    //!< Matching condition functions
0091   };
0092 }