Back to home page

EIC code displayed by LXR

 
 

    


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

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 AlphaQCDxi is a specialization class of the
0017    * MatchedEvolution class for the computation of the QCD coupling
0018    * running with the possibility to vary the resummation scale
0019    * through the parameter xi.
0020    */
0021   class AlphaQCDxi: public MatchedEvolution<double>
0022   {
0023   public:
0024     /**
0025      * @name Constructors
0026      * List of constructors.
0027      */
0028     ///@{
0029     AlphaQCDxi() = delete;
0030 
0031     /**
0032      * @brief AlphaQCDxi constructor.
0033      * @param AlphaRef: the reference value of the coupling
0034      * @param MuRef: the reference value of the scale
0035      * @param Masses: vector of masses
0036      * @param Thresholds: vector of thresholds
0037      * @param pt: perturbative order
0038      * @param xi: resummation-scale parameter (default: 1)
0039      * @param nsteps: number of steps of the ODE solver (default: 10)
0040      */
0041     AlphaQCDxi(double              const& AlphaRef,
0042                double              const& MuRef,
0043                std::vector<double> const& Masses,
0044                std::vector<double> const& Thresholds,
0045                int                 const& pt,
0046                double              const& xi = 1,
0047                int                 const& nsteps = 10);
0048 
0049     /**
0050      * @brief AlphaQCDxi constructor.
0051      * @param AlphaRef: the reference value of the coupling
0052      * @param MuRef: the reference value of the scale
0053      * @param Masses: vector of masses
0054      * @param pt: perturbative order
0055      * @param xi: resummation-scale parameter (default: 1)
0056      * @param nsteps: number of steps of the ODE solver (default: 10)
0057      * @note This constructor assumes that masses and thresholds coincide.
0058      */
0059     AlphaQCDxi(double              const& AlphaRef,
0060                double              const& MuRef,
0061                std::vector<double> const& Masses,
0062                int                 const& pt,
0063                double              const& xi = 1,
0064                int                 const& nsteps = 10);
0065     ///@}
0066 
0067     /**
0068      * @brief Function for the computation of the matching.
0069      * @param Up: tells whether the matching is upward or not (downward)
0070      * @param nf: number of active flavours
0071      * @param Coup: value of the coupling to be matched
0072      * @return The matched value of the strong coupling \f$\alpha_s\f$ at the threshold
0073      */
0074     double MatchObject(bool const& Up, int const& nf, double const& Coup) const;
0075 
0076     /**
0077      * @brief Function that returns QCD \f$\beta\f$ function.
0078      * @param nf: number of active flavours
0079      * @param as: value of the coupling
0080      * @return The the value of the QCD \f$\beta\f$ function
0081      */
0082     double Derivative(int const& nf, double const&, double const& as) const;
0083 
0084     /**
0085      * @brief Function for the computation of the single coefficients
0086      * of the expansion of the QCD \f$\beta\f$ function.
0087      * @param pt: perturbative order
0088      * @param nf: number of active flavours
0089      * @param lambda: argument of the g-functions
0090      * @return The pt-th coefficient of the QCD \f$\beta\f$ function.
0091      */
0092     double betaQCD(int const& pt, int const& nf, double const& lambda) const;
0093 
0094   private:
0095     int                                                           const _pt;                    //!< Perturbative order
0096     double                                                        const _xi;                    //!< Resummation-scale paremeter
0097     std::function<double(bool const&, int const&, double const&)>       _MatchingConditions;    //!< Matching condition functions
0098     std::function<double(int const&, double const&)>                    _BetaFunction;          //!< Beta function
0099   };
0100 }