Back to home page

EIC code displayed by LXR

 
 

    


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

0001 //
0002 // APFEL++ 2017
0003 //
0004 // Author:Valerio Bertone:valerio.bertone@cern.ch
0005 //
0006 
0007 #pragma once
0008 
0009 #include "apfel/doubleexpression.h"
0010 
0011 namespace apfel
0012 {
0013   /**
0014    * @defgroup NCMasslessSIDIS Zero-mass coefficient functions for unpolarised SIDIS
0015    * Collection of the zero-mass coefficient functions for the
0016    * structure functions F<SUB>L</SUB> and F<SUB>T</SUB> in
0017    * unpolarised SIDIS up to O(&alpha;<SUB>s</SUB><SUP>2</SUP>).
0018    * @note Expressions are extracted from the following references:
0019    * https://arxiv.org/pdf/hep-ph/9711387 and
0020    * https://arxiv.org/pdf/2401.16281.
0021    */
0022   ///@{
0023   /**
0024    * @defgroup NLOzmSIDIS NLO zero-mass coefficient functions for unpolarised SIDIS
0025    * @ingroup NCMasslessSIDIS
0026    */
0027   ///@{
0028   /**
0029    * @brief O(&alpha;<SUB>s</SUB>) non-singlet quark-in-quark
0030    * coefficient function for FL
0031    */
0032   class C1LQ2Q: public DoubleExpression
0033   {
0034   public:
0035     C1LQ2Q();
0036     std::string GetName() const override { return "C1LQ2Q"; }
0037     double RegularRegular(double const& x, double const& z) const override;
0038   };
0039 
0040   /**
0041    * @brief O(&alpha;<SUB>s</SUB>) gluon-in-quark coefficient function
0042    * for FL
0043    */
0044   class C1LQ2G: public DoubleExpression
0045   {
0046   public:
0047     C1LQ2G();
0048     std::string GetName() const override { return "C1LQ2G"; }
0049     double RegularRegular(double const& x, double const& z) const override;
0050   };
0051 
0052   /**
0053    * @brief O(&alpha;<SUB>s</SUB>) quark-in-gluon coefficient function
0054    * for FL
0055    */
0056   class C1LG2Q: public DoubleExpression
0057   {
0058   public:
0059     C1LG2Q();
0060     std::string GetName() const override { return "C1LG2Q"; }
0061     double RegularRegular(double const& x, double const& z) const override;
0062   };
0063 
0064   /**
0065    * @brief O(&alpha;<SUB>s</SUB>) non-singlet quark-in-quark
0066    * coefficient function for FT
0067    */
0068   class C1TQ2Q: public DoubleExpression
0069   {
0070   public:
0071     C1TQ2Q();
0072     std::string GetName() const override { return "C1TQ2Q"; }
0073     double LocalLocal(double const& x, double const& z) const override;
0074     double LocalSingular(double const& x, double const& z) const override;
0075     double LocalRegular(double const& x, double const& z) const override;
0076     double SingularLocal(double const& x, double const& z) const override;
0077     double SingularSingular(double const& x, double const& z) const override;
0078     double SingularRegular(double const& x, double const& z) const override;
0079     double RegularLocal(double const& x, double const& z) const override;
0080     double RegularSingular(double const& x, double const& z) const override;
0081     double RegularRegular(double const& x, double const& z) const override;
0082   };
0083 
0084   /**
0085    * @brief O(&alpha;<SUB>s</SUB>) gluon-in-quark coefficient function
0086    * for FT
0087    */
0088   class C1TQ2G: public DoubleExpression
0089   {
0090   public:
0091     C1TQ2G();
0092     std::string GetName() const override { return "C1TQ2G"; }
0093     double LocalRegular(double const& x, double const& z) const override;
0094     double SingularRegular(double const& x, double const& z) const override;
0095     double RegularRegular(double const& x, double const& z) const override;
0096   };
0097 
0098   /**
0099    * @brief O(&alpha;<SUB>s</SUB>) quark-in-gluon coefficient function
0100    * for FT
0101    */
0102   class C1TG2Q: public DoubleExpression
0103   {
0104   public:
0105     C1TG2Q();
0106     std::string GetName() const override { return "C1TG2Q"; }
0107     double RegularLocal(double const& x, double const& z) const override;
0108     double RegularSingular(double const& x, double const& z) const override;
0109     double RegularRegular(double const& x, double const& z) const override;
0110   };
0111   ///@}
0112 
0113   /**
0114    * @defgroup NNLOzmSIDIS NNLO zero-mass coefficient functions for unpolarised SIDIS
0115    * @ingroup NCMasslessSIDIS
0116    */
0117   ///@{
0118   /**
0119    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) gluon-in-quark
0120    * coefficient function for FL.
0121    */
0122   class C2LQ2G: public DoubleExpression
0123   {
0124   public:
0125     C2LQ2G();
0126     std::string GetName() const override { return "C2LQ2G"; }
0127     double RegularRegular(double const& x, double const& z) const override;
0128   };
0129 
0130   /**
0131    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) gluon-in-gluon
0132    * coefficient function for FL.
0133    */
0134   class C2LG2G: public DoubleExpression
0135   {
0136   public:
0137     C2LG2G();
0138     std::string GetName() const override { return "C2LG2G"; }
0139     double RegularRegular(double const& x, double const& z) const override;
0140   };
0141 
0142   /**
0143    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) quark-in-gluon
0144    * coefficient function for FL.
0145    */
0146   class C2LG2Q: public DoubleExpression
0147   {
0148   public:
0149     C2LG2Q();
0150     std::string GetName() const override { return "C2LG2Q"; }
0151     double RegularRegular(double const& x, double const& z) const override;
0152   };
0153 
0154   /**
0155    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) non-singlet
0156    * quark-in-quark coefficient function for FL.
0157    */
0158   class C2LQ2QNS: public DoubleExpression
0159   {
0160   public:
0161     C2LQ2QNS(int const& nf);
0162     std::string GetName() const override { return "C2LQ2QNS_nf" + std::to_string(_nf); }
0163     double RegularRegular(double const& x, double const& z) const override;
0164   private:
0165     int const _nf;
0166   };
0167 
0168   /**
0169    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) pure-singlet
0170    * quark-in-quark coefficient function for FL.
0171    */
0172   class C2LQ2QPS: public DoubleExpression
0173   {
0174   public:
0175     C2LQ2QPS();
0176     std::string GetName() const override { return "C2LQ2QPS"; }
0177     double RegularRegular(double const& x, double const& z) const override;
0178   };
0179 
0180   /**
0181    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) pure-singlet
0182    * antiquark-in-quark coefficient function for FL.
0183    */
0184   class C2LQ2QB: public DoubleExpression
0185   {
0186   public:
0187     C2LQ2QB();
0188     std::string GetName() const override { return "C2LQ2QB"; }
0189     double RegularRegular(double const& x, double const& z) const override;
0190   };
0191 
0192   /**
0193    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) pure-singlet
0194    * quark(prime)-in-quark (1) coefficient function for FL.
0195    */
0196   class C2LQ2QP1: public DoubleExpression
0197   {
0198   public:
0199     C2LQ2QP1();
0200     std::string GetName() const override { return "C2LQ2QP1"; }
0201     double RegularRegular(double const& x, double const& z) const override;
0202   };
0203 
0204   /**
0205    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) pure-singlet
0206    * quark(prime)-in-quark (2) coefficient function for FL.
0207    */
0208   class C2LQ2QP2: public DoubleExpression
0209   {
0210   public:
0211     C2LQ2QP2();
0212     std::string GetName() const override { return "C2LQ2QP2"; }
0213     double RegularRegular(double const& x, double const& z) const override;
0214   };
0215 
0216   /**
0217    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) pure-singlet
0218    * quark(prime)-in-quark (1) coefficient function for FL.
0219    */
0220   class C2LQ2QP3: public DoubleExpression
0221   {
0222   public:
0223     C2LQ2QP3();
0224     std::string GetName() const override { return "C2LQ2QP3"; }
0225     double RegularRegular(double const& x, double const& z) const override;
0226   };
0227 
0228   /**
0229    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) gluon-in-quark
0230    * coefficient function for FT.
0231    */
0232   class C2TQ2G: public DoubleExpression
0233   {
0234   public:
0235     C2TQ2G();
0236     std::string GetName() const override { return "C2TQ2G"; }
0237     double LocalRegular(double const& x, double const& z) const override;
0238     double SingularRegular(double const& x, double const& z) const override;
0239     double RegularRegular(double const& x, double const& z) const override;
0240   };
0241 
0242   /**
0243    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) gluon-in-gluon
0244    * coefficient function for FT.
0245    */
0246   class C2TG2G: public DoubleExpression
0247   {
0248   public:
0249     C2TG2G();
0250     std::string GetName() const override { return "C2TG2G"; }
0251     double RegularRegular(double const& x, double const& z) const override;
0252   };
0253 
0254   /**
0255    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) quark-in-gluon
0256    * coefficient function for FT.
0257    */
0258   class C2TG2Q: public DoubleExpression
0259   {
0260   public:
0261     C2TG2Q();
0262     std::string GetName() const override { return "C2TG2Q"; }
0263     double RegularLocal(double const& x, double const& z) const override;
0264     double RegularSingular(double const& x, double const& z) const override;
0265     double RegularRegular(double const& x, double const& z) const override;
0266   };
0267 
0268   /**
0269    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) non-singlet
0270    * quark-in-quark coefficient function for FT.
0271    */
0272   class C2TQ2QNS: public DoubleExpression
0273   {
0274   public:
0275     C2TQ2QNS(int const& nf);
0276     std::string GetName() const override { return "C2TQ2QNS_nf" + std::to_string(_nf); }
0277     double LocalLocal(double const& x, double const& z) const override;
0278     double LocalSingular(double const& x, double const& z) const override;
0279     double LocalRegular(double const& x, double const& z) const override;
0280     double SingularLocal(double const& x, double const& z) const override;
0281     double SingularSingular(double const& x, double const& z) const override;
0282     double SingularRegular(double const& x, double const& z) const override;
0283     double RegularLocal(double const& x, double const& z) const override;
0284     double RegularSingular(double const& x, double const& z) const override;
0285     double RegularRegular(double const& x, double const& z) const override;
0286   private:
0287     int const _nf;
0288   };
0289 
0290   /**
0291    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) pure-singlet
0292    * quark-in-quark coefficient function for FT.
0293    */
0294   class C2TQ2QPS: public DoubleExpression
0295   {
0296   public:
0297     C2TQ2QPS();
0298     std::string GetName() const override { return "C2TQ2QPS"; }
0299     double RegularRegular(double const& x, double const& z) const override;
0300   };
0301 
0302   /**
0303    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) pure-singlet
0304    * antiquark-in-quark coefficient function for FT.
0305    */
0306   class C2TQ2QB: public DoubleExpression
0307   {
0308   public:
0309     C2TQ2QB();
0310     std::string GetName() const override { return "C2TQ2QB"; }
0311     double LocalRegular(double const& x, double const& z) const override;
0312     double SingularRegular(double const& x, double const& z) const override;
0313     double RegularLocal(double const& x, double const& z) const override;
0314     double RegularSingular(double const& x, double const& z) const override;
0315     double RegularRegular(double const& x, double const& z) const override;
0316   };
0317 
0318   /**
0319    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) pure-singlet
0320    * quark(prime)-in-quark (1) coefficient function for FT.
0321    */
0322   class C2TQ2QP1: public DoubleExpression
0323   {
0324   public:
0325     C2TQ2QP1();
0326     std::string GetName() const override { return "C2TQ2QP1"; }
0327     double LocalRegular(double const& x, double const& z) const override;
0328     double SingularRegular(double const& x, double const& z) const override;
0329     double RegularRegular(double const& x, double const& z) const override;
0330   };
0331 
0332   /**
0333    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) pure-singlet
0334    * quark(prime)-in-quark (2) coefficient function for FT.
0335    */
0336   class C2TQ2QP2: public DoubleExpression
0337   {
0338   public:
0339     C2TQ2QP2();
0340     std::string GetName() const override { return "C2TQ2QP2"; }
0341     double RegularLocal(double const& x, double const& z) const override;
0342     double RegularSingular(double const& x, double const& z) const override;
0343     double RegularRegular(double const& x, double const& z) const override;
0344   };
0345 
0346   /**
0347    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) pure-singlet
0348    * quark(prime)-in-quark (1) coefficient function for FT.
0349    */
0350   class C2TQ2QP3: public DoubleExpression
0351   {
0352   public:
0353     C2TQ2QP3();
0354     std::string GetName() const override { return "C2TQ2QP3"; }
0355     double RegularRegular(double const& x, double const& z) const override;
0356   };
0357   ///@}
0358   ///@}
0359 }