Back to home page

EIC code displayed by LXR

 
 

    


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

0001 //
0002 // APFEL++ 2017
0003 //
0004 // Author: Valerio Bertone: valerio.bertone@cern.ch
0005 //
0006 
0007 #pragma once
0008 
0009 #include "apfel/expression.h"
0010 
0011 namespace apfel
0012 {
0013   /**
0014    * @defgroup TMDMatchingFunctions TMD matching functions
0015    * The perturbative matching functions for PDFs and FFs (references:
0016    * https://arxiv.org/pdf/2012.03256.pdf,
0017    * https://arxiv.org/pdf/1604.07869.pdf, and
0018    * https://arxiv.org/pdf/1706.01473.pdf). Notice that the
0019    * expressions for FFs are implicitly multiplied by a factor
0020    * x<SUP>2</SUP>. This is because the convolution with FFs has the
0021    * form:
0022    *
0023    * \f$D(x) = C(x) \otimes d(x) / x^2 = (1/x^2) \int_x^1 (dy/y) [y^2 C(y)] d(x/y)\f$
0024    *
0025    * For the implementation of the O(&alpha;<SUB>s</SUB><SUP>2</SUP>)
0026    * and O(&alpha;<SUB>s</SUB><SUP>3</SUP>) expressions I have used
0027    * the parameterization provided with
0028    * https://arxiv.org/pdf/2012.03256.pdf. A notebook with the
0029    * expressions can be found in docs/latex/src/codes/.
0030    */
0031   ///@{
0032   ///@}
0033   /**
0034    * @defgroup SLMatchFunc Space-like matching functions
0035    * TMD mathing functions for PDFs (space-like hard scales)
0036    * @ingroup TMDMatchingFunctions
0037    */
0038   ///@{
0039   ///@}
0040   /**
0041    * @defgroup NLOmatch NLO matching functions for PDFs
0042    * @ingroup SLMatchFunc
0043    */
0044   ///@{
0045   /**
0046    * @brief The O(&alpha;<SUB>s</SUB>) non-singlet matching function
0047    * for PDFs (references: https://arxiv.org/pdf/1604.07869.pdf and
0048    * https://arxiv.org/pdf/1706.01473.pdf).
0049    */
0050   class C1nspdf: public Expression
0051   {
0052   public:
0053     C1nspdf();
0054     double Regular(double const& x) const;
0055     double Local(double const&)     const;
0056   };
0057 
0058   /**
0059    * @brief The O(&alpha;<SUB>s</SUB>) quark-gluon matching function
0060    * for PDFs (references: https://arxiv.org/pdf/1604.07869.pdf and
0061    * https://arxiv.org/pdf/1706.01473.pdf).
0062    */
0063   class C1qgpdf: public Expression
0064   {
0065   public:
0066     C1qgpdf();
0067     double Regular(double const& x) const;
0068   };
0069 
0070   /**
0071    * @brief The O(&alpha;<SUB>s</SUB>) gluon-quark matching function
0072    * for PDFs (references: https://arxiv.org/pdf/1604.07869.pdf and
0073    * https://arxiv.org/pdf/1706.01473.pdf).
0074    */
0075   class C1gqpdf: public Expression
0076   {
0077   public:
0078     C1gqpdf();
0079     double Regular(double const& x) const;
0080   };
0081 
0082   /**
0083    * @brief The O(&alpha;<SUB>s</SUB>) gluon-gluon matching function
0084    * for PDFs (references: https://arxiv.org/pdf/1604.07869.pdf and
0085    * https://arxiv.org/pdf/1706.01473.pdf).
0086    */
0087   class C1ggpdf: public Expression
0088   {
0089   public:
0090     C1ggpdf();
0091     double Local(double const&) const;
0092   };
0093   ///@}
0094 
0095   /**
0096    * @defgroup NNLOmatch NNLO matching functions for PDFs
0097    * @ingroup SLMatchFunc
0098    */
0099   ///@{
0100   /**
0101    * @brief The O(&alpha;<SUB>s</SUB><SUP>2</SUP>) valence plus
0102    * matching function for PDFs (reference:
0103    * https://arxiv.org/pdf/2012.03256.pdf).
0104    */
0105   class C2nsppdf: public Expression
0106   {
0107   public:
0108     C2nsppdf(int const& nf);
0109     double Regular(double const& x)  const;
0110     double Singular(double const& x) const;
0111     double Local(double const& x)    const;
0112   protected:
0113     int const _nf;
0114     double    _A2;
0115   };
0116 
0117   /**
0118    * @brief The O(&alpha;<SUB>s</SUB><SUP>2</SUP>) valence minus
0119    * matching function for PDFs (reference:
0120    * https://arxiv.org/pdf/2012.03256.pdf).
0121    */
0122   class C2nsmpdf: public Expression
0123   {
0124   public:
0125     C2nsmpdf(int const& nf);
0126     double Regular(double const& x)  const;
0127     double Singular(double const& x) const;
0128     double Local(double const& x)    const;
0129   protected:
0130     int const _nf;
0131     double    _A2;
0132   };
0133 
0134   /**
0135    * @brief The O(&alpha;<SUB>s</SUB><SUP>2</SUP>) pure-singlet
0136    * matching function for PDFs (reference:
0137    * https://arxiv.org/pdf/2012.03256.pdf).
0138    */
0139   class C2pspdf: public Expression
0140   {
0141   public:
0142     C2pspdf();
0143     double Regular(double const& x) const;
0144   };
0145 
0146   /**
0147    * @brief The O(&alpha;<SUB>s</SUB><SUP>2</SUP>) quark-gluon
0148    * matching function for PDFs (reference:
0149    * https://arxiv.org/pdf/2012.03256.pdf).
0150    */
0151   class C2qgpdf: public Expression
0152   {
0153   public:
0154     C2qgpdf();
0155     double Regular(double const& x) const;
0156   };
0157 
0158   /**
0159    * @brief The O(&alpha;<SUB>s</SUB><SUP>2</SUP>) gluon-quark
0160    * matching function for PDFs (reference:
0161    * https://arxiv.org/pdf/2012.03256.pdf).
0162    */
0163   class C2gqpdf: public Expression
0164   {
0165   public:
0166     C2gqpdf(int const& nf);
0167     double Regular(double const& x) const;
0168   private:
0169     int const _nf;
0170   };
0171 
0172   /**
0173    * @brief The O(&alpha;<SUB>s</SUB><SUP>2</SUP>) gluon-gluon
0174    * matching function for PDFs (reference:
0175    * https://arxiv.org/pdf/2012.03256.pdf).
0176    */
0177   class C2ggpdf: public Expression
0178   {
0179   public:
0180     C2ggpdf(int const& nf);
0181     double Regular(double const& x)  const;
0182     double Singular(double const& x) const;
0183     double Local(double const& x)    const;
0184   private:
0185     int const _nf;
0186     double    _A2;
0187   };
0188   ///@}
0189 
0190   /**
0191    * @defgroup NNNLOmatch NNNLO matching functions for PDFs
0192    * @ingroup SLMatchFunc
0193    */
0194   ///@{
0195   /**
0196    * @brief The O(&alpha;<SUB>s</SUB><SUP>3</SUP>) valence plus
0197    * matching function for PDFs (reference:
0198    * https://arxiv.org/pdf/2012.03256.pdf).
0199    */
0200   class C3nsppdf: public Expression
0201   {
0202   public:
0203     C3nsppdf(int const& nf);
0204     double Regular(double const& x)  const;
0205     double Singular(double const& x) const;
0206     double Local(double const& x)    const;
0207   protected:
0208     int const _nf;
0209     double    _A2;
0210   };
0211 
0212   /**
0213    * @brief The O(&alpha;<SUB>s</SUB><SUP>3</SUP>) valence minus
0214    * matching function for PDFs (reference:
0215    * https://arxiv.org/pdf/2012.03256.pdf).
0216    */
0217   class C3nsmpdf: public Expression
0218   {
0219   public:
0220     C3nsmpdf(int const& nf);
0221     double Regular(double const& x) const;
0222     double Singular(double const& x) const;
0223     double Local(double const& x)    const;
0224   protected:
0225     int const _nf;
0226     double    _A2;
0227   };
0228 
0229   /**
0230    * @brief The O(&alpha;<SUB>s</SUB><SUP>3</SUP>) pure-valence
0231    * matching function for PDFs (reference:
0232    * https://arxiv.org/pdf/2012.03256.pdf).
0233    */
0234   class C3pvpdf: public Expression
0235   {
0236   public:
0237     C3pvpdf();
0238     double Regular(double const& x) const;
0239   };
0240 
0241   /**
0242    * @brief The O(&alpha;<SUB>s</SUB><SUP>3</SUP>) pure-singlet
0243    * matching function for PDFs (reference:
0244    * https://arxiv.org/pdf/2012.03256.pdf).
0245    */
0246   class C3pspdf: public Expression
0247   {
0248   public:
0249     C3pspdf(int const& nf);
0250     double Regular(double const& x) const;
0251   protected:
0252     int const _nf;
0253   };
0254 
0255   /**
0256    * @brief The O(&alpha;<SUB>s</SUB><SUP>3</SUP>) quark-gluon
0257    * matching function for PDFs (reference:
0258    * https://arxiv.org/pdf/2012.03256.pdf).
0259    */
0260   class C3qgpdf: public Expression
0261   {
0262   public:
0263     C3qgpdf(int const& nf);
0264     double Regular(double const& x) const;
0265   protected:
0266     int const _nf;
0267   };
0268 
0269   /**
0270    * @brief The O(&alpha;<SUB>s</SUB><SUP>3</SUP>) gluon-quark
0271    * matching function for PDFs (reference:
0272    * https://arxiv.org/pdf/2012.03256.pdf).
0273    */
0274   class C3gqpdf: public Expression
0275   {
0276   public:
0277     C3gqpdf(int const& nf);
0278     double Regular(double const& x) const;
0279   protected:
0280     int const _nf;
0281   };
0282 
0283   /**
0284    * @brief The O(&alpha;<SUB>s</SUB><SUP>3</SUP>) gluon-gluon
0285    * matching function for PDFs (reference:
0286    * https://arxiv.org/pdf/2012.03256.pdf).
0287    */
0288   class C3ggpdf: public Expression
0289   {
0290   public:
0291     C3ggpdf(int const& nf);
0292     double Regular(double const& x)  const;
0293     double Singular(double const& x) const;
0294     double Local(double const& x)    const;
0295   protected:
0296     int const _nf;
0297     double    _A2;
0298   };
0299   ///@}
0300 
0301   /**
0302    * @defgroup NLOBM NLO matching functions for Boer-Mulders PDFs
0303    * NLO matching functions for linearly polarised gluon PDF (Boer-Mulders)
0304    * @ingroup SLMatchFunc
0305    */
0306   ///@{
0307   /**
0308    * @brief The O(&alpha;<SUB>s</SUB>) gluon-quark matching function
0309    * for linearly polarised gluon PDF (reference:
0310    * https://arxiv.org/pdf/1907.03780.pdf).
0311    */
0312   class C1gqpdfBM: public Expression
0313   {
0314   public:
0315     C1gqpdfBM();
0316     double Regular(double const& x) const;
0317   };
0318 
0319   /**
0320    * @brief The O(&alpha;<SUB>s</SUB>) gluon-gluon matching function
0321    * for linearly polarised gluon PDF (reference:
0322    * https://arxiv.org/pdf/1907.03780.pdf).
0323    */
0324   class C1ggpdfBM: public Expression
0325   {
0326   public:
0327     C1ggpdfBM();
0328     double Regular(double const& x) const;
0329   };
0330   ///@}
0331 
0332   /**
0333    * @defgroup NNLOBM NNLO matching functions for Boer-Mulders PDFs
0334    * NNLO matching functions for linearly polarised gluon PDF (Boer-Mulders)
0335    * @ingroup SLMatchFunc
0336    */
0337   ///@{
0338   /**
0339    * @brief The O(&alpha;<SUB>s</SUB><SUP>2</SUP>) gluon-quark
0340    * matching function for linearly polarised gluon PDF (reference:
0341    * https://arxiv.org/pdf/1907.03780.pdf).
0342    */
0343   class C2gqpdfBM: public Expression
0344   {
0345   public:
0346     C2gqpdfBM(int const& nf);
0347     double Regular(double const& x) const;
0348   protected:
0349     int const _nf;
0350   };
0351 
0352   /**
0353    * @brief The O(&alpha;<SUB>s</SUB><SUP>2</SUP>) gluon-gluon
0354    * matching function for linearly polarised gluon PDFs (reference:
0355    * https://arxiv.org/pdf/1907.03780.pdf).
0356    */
0357   class C2ggpdfBM: public Expression
0358   {
0359   public:
0360     C2ggpdfBM(int const& nf);
0361     double Regular(double const& x) const;
0362   protected:
0363     int const _nf;
0364   };
0365   ///@}
0366 
0367   /**
0368   * @defgroup NLOSivers NLO matching functions for Sivers quark PDFs
0369   * NLO matching functions for Sivers quark PDFs
0370   * @ingroup SLMatchFunc
0371   */
0372   ///@{
0373   /**
0374    * @brief The O(&alpha;<SUB>s</SUB>) non-singlet matching function
0375    * for Sivers PDFs (see Eq. (A.9) of
0376    * https://arxiv.org/pdf/2009.10710.pdf).
0377    */
0378   class C1nspdfSivers: public Expression
0379   {
0380   public:
0381     C1nspdfSivers();
0382     double Regular(double const& x) const;
0383     double Local(double const&)     const;
0384   };
0385   ///@}
0386 
0387   /**
0388    * @defgroup NLOg1 NLO matching functions for helicity PDFs g1
0389    * NLO matching functions for the helicity PDFs g1
0390    * @ingroup SLMatchFunc
0391    */
0392   ///@{
0393   /**
0394    * @brief The O(&alpha;<SUB>s</SUB>) non-singlet matching function
0395    * for g1 PDFs (reference: https://arxiv.org/pdf/1702.06558.pdf).
0396    */
0397   class C1nspdfg1: public Expression
0398   {
0399   public:
0400     C1nspdfg1();
0401     double Regular(double const& x) const;
0402     double Local(double const&)     const;
0403   };
0404 
0405   /**
0406    * @brief The O(&alpha;<SUB>s</SUB>) quark-gluon matching function
0407    * for g1 PDFs (reference: https://arxiv.org/pdf/1702.06558.pdf).
0408    */
0409   class C1qgpdfg1: public Expression
0410   {
0411   public:
0412     C1qgpdfg1();
0413     double Regular(double const& x) const;
0414   };
0415 
0416   /**
0417    * @brief The O(&alpha;<SUB>s</SUB>) gluon-quark matching function
0418    * for g1 PDFs (reference: https://arxiv.org/pdf/1702.06558.pdf).
0419    */
0420   class C1gqpdfg1: public Expression
0421   {
0422   public:
0423     C1gqpdfg1();
0424     double Regular(double const& x) const;
0425   };
0426 
0427   /**
0428    * @brief The O(&alpha;<SUB>s</SUB>) gluon-gluon matching function
0429    * for g1 PDFs (reference: https://arxiv.org/pdf/1702.06558.pdf).
0430    */
0431   class C1ggpdfg1: public Expression
0432   {
0433   public:
0434     C1ggpdfg1();
0435     double Regular(double const& x) const;
0436     double Local(double const&)     const;
0437   };
0438   ///@}
0439 }