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 AlphaQED is a specialization class of the
0017    * MatchedEvolution class for the computation of the QED coupling
0018    * running.
0019    */
0020   class AlphaQED: public MatchedEvolution<double>
0021   {
0022   public:
0023     /**
0024      * @name Constructors
0025      * List of constructors.
0026      */
0027     ///@{
0028     AlphaQED() = delete;
0029 
0030     /**
0031      * @brief AlphaQED constructor.
0032      * @param AlphaRef: the reference value of the coupling
0033      * @param MuRef: the reference value of the scale
0034      * @param QuarkThresholds: vector of quark thresholds
0035      * @param LeptThresholds: vector of charged-lepton thresholds
0036      * @param pt: perturbative order
0037      * @param nsteps: number of steps of the ODE solver
0038      */
0039     AlphaQED(double              const& AlphaRef,
0040              double              const& MuRef,
0041              std::vector<double> const& LeptThresholds,
0042              std::vector<double> const& QuarkThresholds,
0043              int                 const& pt,
0044              int                 const& nsteps = 10);
0045     ///@}
0046 
0047     /**
0048      * @brief Function for the computation of the matching.
0049      * @param Up: tells whether the matching is upward or not (downward)
0050      * @param nfl: total number of active flavours including both quarks and leptons
0051      * @param Coup: value of the coupling to be matched
0052      * @return The matched value of the strong coupling \f$\alpha_s\f$ at the threshold
0053      * @note This is a dummy function required only to instantiate the
0054      * pure-virtual 'MatchObject' of the mother class
0055      * 'MatchedEvolution': it always returns the input coupling. This
0056      * means that the evolution is assumed to be continuos at the
0057      * thresholds.
0058      */
0059     double MatchObject(bool const& Up, int const& nfl, double const& Coup) const;
0060 
0061     /**
0062      * @brief Function that returns QED \f$\beta\f$ function.
0063      * @param nfl: total number of active flavours including both quarks and leptons
0064      * @param a: value of the coupling
0065      * @return The the value of the QED \f$\beta\f$ function
0066      */
0067     double Derivative(int const& nfl, double const&, double const& a) const;
0068 
0069     /**
0070      * @brief Function for the computation of the single coefficients
0071      * of the expansion of the QED \f$\beta\f$ function.
0072      * @param pt: perturbative order
0073      * @param nf: number of active quark flavours
0074      * @param nl: number of active charged leptons
0075      * @return The pt-th coefficient of the QED \f$\beta\f$ function.
0076      */
0077     double betaQED(int const& pt, int const& nf, int const& nl) const;
0078 
0079   private:
0080     int                                              const _pt;                    //!< Perturbative order
0081     std::function<double(int const&, double const&)>       _BetaFunction;          //!< Beta function
0082   };
0083 }