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 NCMasslessSIDISpol Zero-mass coefficient functions for longitudinally polarised SIDIS
0015    * Collection of the zero-mass coefficient functions for the
0016    * structure function G<SUB>1</SUB> in longitudinally polarised
0017    * 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/2404.08597.
0021    */
0022   ///@{
0023   /**
0024    * @defgroup NLOzmSIDISpol NLO zero-mass coefficient functions for longitudinally polarised SIDIS
0025    * @ingroup NCMasslessSIDISpol
0026    */
0027   ///@{
0028   /**
0029    * @brief O(&alpha;<SUB>s</SUB>) non-singlet quark-in-quark
0030    * coefficient function for G1
0031    */
0032   class DC1Q2Q: public DoubleExpression
0033   {
0034   public:
0035     DC1Q2Q();
0036     std::string GetName() const override { return "DC1Q2Q"; }
0037     double LocalLocal(double const& x, double const& z) const override;
0038     double LocalSingular(double const& x, double const& z) const override;
0039     double LocalRegular(double const& x, double const& z) const override;
0040     double SingularLocal(double const& x, double const& z) const override;
0041     double SingularSingular(double const& x, double const& z) const override;
0042     double SingularRegular(double const& x, double const& z) const override;
0043     double RegularLocal(double const& x, double const& z) const override;
0044     double RegularSingular(double const& x, double const& z) const override;
0045     double RegularRegular(double const& x, double const& z) const override;
0046   };
0047 
0048   /**
0049    * @brief O(&alpha;<SUB>s</SUB>) gluon-in-quark coefficient function
0050    * for G1
0051    */
0052   class DC1Q2G: public DoubleExpression
0053   {
0054   public:
0055     DC1Q2G();
0056     std::string GetName() const override { return "DC1Q2G"; }
0057     double LocalRegular(double const& x, double const& z) const override;
0058     double SingularRegular(double const& x, double const& z) const override;
0059     double RegularRegular(double const& x, double const& z) const override;
0060   };
0061 
0062   /**
0063    * @brief O(&alpha;<SUB>s</SUB>) quark-in-gluon coefficient function
0064    * for G1
0065    */
0066   class DC1G2Q: public DoubleExpression
0067   {
0068   public:
0069     DC1G2Q();
0070     std::string GetName() const override { return "DC1G2Q"; }
0071     double RegularLocal(double const& x, double const& z) const override;
0072     double RegularSingular(double const& x, double const& z) const override;
0073     double RegularRegular(double const& x, double const& z) const override;
0074   };
0075   ///@}
0076 
0077   /**
0078    * @defgroup NNLOzmSIDISpol NNLO zero-mass coefficient functions for longitudinally polarised SIDIS
0079    * @ingroup NCMasslessSIDISpol
0080    */
0081   ///@{
0082   /**
0083    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) gluon-in-quark
0084    * coefficient function for G1.
0085    */
0086   class DC2Q2G: public DoubleExpression
0087   {
0088   public:
0089     DC2Q2G(int const& nf);
0090     std::string GetName() const override { return "DC2Q2G_nf" + std::to_string(_nf); }
0091     double LocalRegular(double const& x, double const& z) const override;
0092     double SingularRegular(double const& x, double const& z) const override;
0093     double RegularRegular(double const& x, double const& z) const override;
0094   private:
0095     int const _nf;
0096   };
0097 
0098   /**
0099    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) gluon-in-gluon
0100    * coefficient function for G1.
0101    */
0102   class DC2G2G: public DoubleExpression
0103   {
0104   public:
0105     DC2G2G();
0106     std::string GetName() const override { return "DC2G2G"; }
0107     double RegularRegular(double const& x, double const& z) const override;
0108   };
0109 
0110   /**
0111    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) quark-in-gluon
0112    * coefficient function for G1.
0113    */
0114   class DC2G2Q: public DoubleExpression
0115   {
0116   public:
0117     DC2G2Q(int const& nf);
0118     std::string GetName() const override { return "DC2G2Q_nf" + std::to_string(_nf); }
0119     double RegularLocal(double const& x, double const& z) const override;
0120     double RegularSingular(double const& x, double const& z) const override;
0121     double RegularRegular(double const& x, double const& z) const override;
0122   private:
0123     int const _nf;
0124   };
0125 
0126   /**
0127    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) non-singlet
0128    * quark-in-quark coefficient function for G1.
0129    */
0130   class DC2Q2QNS: public DoubleExpression
0131   {
0132   public:
0133     DC2Q2QNS(int const& nf);
0134     std::string GetName() const override { return "DC2Q2QNS_nf" + std::to_string(_nf); }
0135     double LocalLocal(double const& x, double const& z) const override;
0136     double LocalSingular(double const& x, double const& z) const override;
0137     double LocalRegular(double const& x, double const& z) const override;
0138     double SingularLocal(double const& x, double const& z) const override;
0139     double SingularSingular(double const& x, double const& z) const override;
0140     double SingularRegular(double const& x, double const& z) const override;
0141     double RegularLocal(double const& x, double const& z) const override;
0142     double RegularSingular(double const& x, double const& z) const override;
0143     double RegularRegular(double const& x, double const& z) const override;
0144   private:
0145     int const _nf;
0146   };
0147 
0148   /**
0149    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) pure-singlet
0150    * quark-in-quark coefficient function for G1.
0151    */
0152   class DC2Q2QPS: public DoubleExpression
0153   {
0154   public:
0155     DC2Q2QPS();
0156     std::string GetName() const override { return "DC2Q2QPS"; }
0157     double RegularLocal(double const& x, double const& z) const override;
0158     double RegularRegular(double const& x, double const& z) const override;
0159   };
0160 
0161   /**
0162    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) pure-singlet
0163    * antiquark-in-quark coefficient function for G1.
0164    */
0165   class DC2Q2QB: public DoubleExpression
0166   {
0167   public:
0168     DC2Q2QB();
0169     std::string GetName() const override { return "DC2Q2QB"; }
0170     double LocalRegular(double const& x, double const& z) const override;
0171     double SingularRegular(double const& x, double const& z) const override;
0172     double RegularLocal(double const& x, double const& z) const override;
0173     double RegularSingular(double const& x, double const& z) const override;
0174     double RegularRegular(double const& x, double const& z) const override;
0175   };
0176 
0177   /**
0178    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) pure-singlet
0179    * quark(prime)-in-quark (1) coefficient function for G1.
0180    */
0181   class DC2Q2QP1: public DoubleExpression
0182   {
0183   public:
0184     DC2Q2QP1();
0185     std::string GetName() const override { return "DC2Q2QP1"; }
0186     double LocalRegular(double const& x, double const& z) const override;
0187     double SingularRegular(double const& x, double const& z) const override;
0188     double RegularRegular(double const& x, double const& z) const override;
0189   };
0190 
0191   /**
0192    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) pure-singlet
0193    * quark(prime)-in-quark (2) coefficient function for G1.
0194    */
0195   class DC2Q2QP2: public DoubleExpression
0196   {
0197   public:
0198     DC2Q2QP2();
0199     std::string GetName() const override { return "DC2Q2QP2"; }
0200     double RegularLocal(double const& x, double const& z) const override;
0201     double RegularSingular(double const& x, double const& z) const override;
0202     double RegularRegular(double const& x, double const& z) const override;
0203   };
0204 
0205   /**
0206    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) pure-singlet
0207    * quark(prime)-in-quark (1) coefficient function for G1.
0208    */
0209   class DC2Q2QP3: public DoubleExpression
0210   {
0211   public:
0212     DC2Q2QP3();
0213     std::string GetName() const override { return "DC2Q2QP3"; }
0214     double RegularRegular(double const& x, double const& z) const override;
0215   };
0216   ///@}
0217   ///@}
0218 }