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/doubleexpression.h"
0010 
0011 namespace apfel
0012 {
0013   /**
0014   * @defgroup EWMasslessSIDIS Zero-mass coefficient functions for electroweak unpolarised SIDIS
0015   * Collection of the zero-mass coefficient functions for the
0016   * structure functions F<SUB>L</SUB>, F<SUB>T</SUB>, and F<SUB>3</SUB>
0017   * in unpolarised SIDIS up to O(&alpha;<SUB>s</SUB><SUP>2</SUP>)
0018   * for both neutral- and charged-current structure functions.
0019   * @note Expressions are extracted from the following reference:
0020   * https://arxiv.org/pdf/2506.19926.
0021   */
0022   ///@{
0023   /**
0024    * @defgroup NLOzmSIDISEW NLO zero-mass coefficient functions for electroweak unpolarised SIDIS
0025    * @ingroup EWMasslessSIDIS
0026    */
0027   ///@{
0028   /**
0029    * @brief O(&alpha;<SUB>s</SUB>) q2qM coefficient
0030    * function for FT
0031    */
0032   class FTC1q2qM: public DoubleExpression
0033   {
0034   public:
0035     FTC1q2qM();
0036     std::string GetName() const override { return "FTC1q2qM"; }
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>) q2gM coefficient
0050    * function for FT
0051    */
0052   class FTC1q2gM: public DoubleExpression
0053   {
0054   public:
0055     FTC1q2gM();
0056     std::string GetName() const override { return "FTC1q2gM"; }
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>) g2qM coefficient
0064    * function for FT
0065    */
0066   class FTC1g2qM: public DoubleExpression
0067   {
0068   public:
0069     FTC1g2qM();
0070     std::string GetName() const override { return "FTC1g2qM"; }
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    * @brief O(&alpha;<SUB>s</SUB>) q2qM coefficient
0078    * function for FL
0079    */
0080   class FLC1q2qM: public DoubleExpression
0081   {
0082   public:
0083     FLC1q2qM();
0084     std::string GetName() const override { return "FLC1q2qM"; }
0085     double RegularRegular(double const& x, double const& z) const override;
0086   };
0087 
0088   /**
0089    * @brief O(&alpha;<SUB>s</SUB>) q2gM coefficient
0090    * function for FL
0091    */
0092   class FLC1q2gM: public DoubleExpression
0093   {
0094   public:
0095     FLC1q2gM();
0096     std::string GetName() const override { return "FLC1q2gM"; }
0097     double RegularRegular(double const& x, double const& z) const override;
0098   };
0099 
0100   /**
0101    * @brief O(&alpha;<SUB>s</SUB>) g2qM coefficient
0102    * function for FL
0103    */
0104   class FLC1g2qM: public DoubleExpression
0105   {
0106   public:
0107     FLC1g2qM();
0108     std::string GetName() const override { return "FLC1g2qM"; }
0109     double RegularRegular(double const& x, double const& z) const override;
0110   };
0111 
0112   /**
0113    * @brief O(&alpha;<SUB>s</SUB>) q2qM coefficient
0114    * function for F3
0115    */
0116   class F3C1q2qM: public DoubleExpression
0117   {
0118   public:
0119     F3C1q2qM();
0120     std::string GetName() const override { return "F3C1q2qM"; }
0121     double LocalLocal(double const& x, double const& z) const override;
0122     double LocalSingular(double const& x, double const& z) const override;
0123     double LocalRegular(double const& x, double const& z) const override;
0124     double SingularLocal(double const& x, double const& z) const override;
0125     double SingularSingular(double const& x, double const& z) const override;
0126     double SingularRegular(double const& x, double const& z) const override;
0127     double RegularLocal(double const& x, double const& z) const override;
0128     double RegularSingular(double const& x, double const& z) const override;
0129     double RegularRegular(double const& x, double const& z) const override;
0130   };
0131 
0132   /**
0133    * @brief O(&alpha;<SUB>s</SUB>) q2gM coefficient
0134    * function for F3
0135    */
0136   class F3C1q2gM: public DoubleExpression
0137   {
0138   public:
0139     F3C1q2gM();
0140     std::string GetName() const override { return "F3C1q2gM"; }
0141     double LocalRegular(double const& x, double const& z) const override;
0142     double SingularRegular(double const& x, double const& z) const override;
0143     double RegularRegular(double const& x, double const& z) const override;
0144   };
0145 
0146   /**
0147    * @brief O(&alpha;<SUB>s</SUB>) g2qM coefficient
0148    * function for F3
0149    */
0150   class F3C1g2qM: public DoubleExpression
0151   {
0152   public:
0153     F3C1g2qM();
0154     std::string GetName() const override { return "F3C1g2qM"; }
0155     double RegularLocal(double const& x, double const& z) const override;
0156     double RegularSingular(double const& x, double const& z) const override;
0157     double RegularRegular(double const& x, double const& z) const override;
0158   };
0159   ///@}
0160 
0161   /**
0162    * @defgroup NNLOzmSIDISEW NNLO zero-mass coefficient functions for electroweak unpolarised SIDIS
0163    * @ingroup EWMasslessSIDIS
0164    */
0165   ///@{
0166   /**
0167    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qM coefficient
0168    * function for FT
0169    */
0170   class FTC2q2qM: public DoubleExpression
0171   {
0172   public:
0173     FTC2q2qM(int const& nf);
0174     std::string GetName() const override { return "FTC2q2qM_nf" + std::to_string(_nf); }
0175     double LocalLocal(double const& x, double const& z) const override;
0176     double LocalSingular(double const& x, double const& z) const override;
0177     double LocalRegular(double const& x, double const& z) const override;
0178     double SingularLocal(double const& x, double const& z) const override;
0179     double SingularSingular(double const& x, double const& z) const override;
0180     double SingularRegular(double const& x, double const& z) const override;
0181     double RegularLocal(double const& x, double const& z) const override;
0182     double RegularSingular(double const& x, double const& z) const override;
0183     double RegularRegular(double const& x, double const& z) const override;
0184   private:
0185     int const _nf;
0186   };
0187 
0188   /**
0189    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qMFcon1 coefficient
0190    * function for FT
0191    */
0192   class FTC2q2qMFcon1: public DoubleExpression
0193   {
0194   public:
0195     FTC2q2qMFcon1();
0196     std::string GetName() const override { return "FTC2q2qMFcon1"; }
0197     double RegularRegular(double const& x, double const& z) const override;
0198   };
0199 
0200   /**
0201    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qMFcon2 coefficient
0202    * function for FT
0203    */
0204   class FTC2q2qMFcon2: public DoubleExpression
0205   {
0206   public:
0207     FTC2q2qMFcon2();
0208     std::string GetName() const override { return "FTC2q2qMFcon2"; }
0209     double RegularRegular(double const& x, double const& z) const override;
0210   };
0211 
0212   /**
0213    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qMANoW coefficient
0214    * function for FT
0215    */
0216   class FTC2q2qMANoW: public DoubleExpression
0217   {
0218   public:
0219     FTC2q2qMANoW();
0220     std::string GetName() const override { return "FTC2q2qMANoW"; }
0221     double LocalLocal(double const& x, double const& z) const override;
0222     double RegularRegular(double const& x, double const& z) const override;
0223   };
0224 
0225   /**
0226    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2gM coefficient
0227    * function for FT
0228    */
0229   class FTC2q2gM: public DoubleExpression
0230   {
0231   public:
0232     FTC2q2gM();
0233     std::string GetName() const override { return "FTC2q2gM"; }
0234     double LocalRegular(double const& x, double const& z) const override;
0235     double SingularRegular(double const& x, double const& z) const override;
0236     double RegularRegular(double const& x, double const& z) const override;
0237   };
0238 
0239   /**
0240    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2gMANoW coefficient
0241    * function for FT
0242    */
0243   class FTC2q2gMANoW: public DoubleExpression
0244   {
0245   public:
0246     FTC2q2gMANoW();
0247     std::string GetName() const override { return "FTC2q2gMANoW"; }
0248     double RegularRegular(double const& x, double const& z) const override;
0249   };
0250 
0251   /**
0252    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) g2qM coefficient
0253    * function for FT
0254    */
0255   class FTC2g2qM: public DoubleExpression
0256   {
0257   public:
0258     FTC2g2qM();
0259     std::string GetName() const override { return "FTC2g2qM"; }
0260     double RegularLocal(double const& x, double const& z) const override;
0261     double RegularSingular(double const& x, double const& z) const override;
0262     double RegularRegular(double const& x, double const& z) const override;
0263   };
0264 
0265   /**
0266    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) g2qMANoW coefficient
0267    * function for FT
0268    */
0269   class FTC2g2qMANoW: public DoubleExpression
0270   {
0271   public:
0272     FTC2g2qMANoW();
0273     std::string GetName() const override { return "FTC2g2qMANoW"; }
0274     double RegularRegular(double const& x, double const& z) const override;
0275   };
0276 
0277   /**
0278    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) g2gM coefficient
0279    * function for FT
0280    */
0281   class FTC2g2gM: public DoubleExpression
0282   {
0283   public:
0284     FTC2g2gM();
0285     std::string GetName() const override { return "FTC2g2gM"; }
0286     double RegularRegular(double const& x, double const& z) const override;
0287   };
0288 
0289   /**
0290    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) g2gMAANoW coefficient
0291    * function for FT
0292    */
0293   class FTC2g2gMAANoW: public DoubleExpression
0294   {
0295   public:
0296     FTC2g2gMAANoW();
0297     std::string GetName() const override { return "FTC2g2gMAANoW"; }
0298     double LocalLocal(double const& x, double const& z) const override;
0299   };
0300 
0301   /**
0302    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qpM1 coefficient
0303    * function for FT
0304    */
0305   class FTC2q2qpM1: public DoubleExpression
0306   {
0307   public:
0308     FTC2q2qpM1();
0309     std::string GetName() const override { return "FTC2q2qpM1"; }
0310     double LocalRegular(double const& x, double const& z) const override;
0311     double SingularRegular(double const& x, double const& z) const override;
0312     double RegularRegular(double const& x, double const& z) const override;
0313   };
0314 
0315   /**
0316    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qpM2 coefficient
0317    * function for FT
0318    */
0319   class FTC2q2qpM2: public DoubleExpression
0320   {
0321   public:
0322     FTC2q2qpM2();
0323     std::string GetName() const override { return "FTC2q2qpM2"; }
0324     double RegularLocal(double const& x, double const& z) const override;
0325     double RegularSingular(double const& x, double const& z) const override;
0326     double RegularRegular(double const& x, double const& z) const override;
0327   };
0328 
0329   /**
0330    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qpMNoW3 coefficient
0331    * function for FT
0332    */
0333   class FTC2q2qpMNoW3: public DoubleExpression
0334   {
0335   public:
0336     FTC2q2qpMNoW3();
0337     std::string GetName() const override { return "FTC2q2qpMNoW3"; }
0338     double RegularRegular(double const& x, double const& z) const override;
0339   };
0340 
0341   /**
0342    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qpMNoW4 coefficient
0343    * function for FT
0344    */
0345   class FTC2q2qpMNoW4: public DoubleExpression
0346   {
0347   public:
0348     FTC2q2qpMNoW4();
0349     std::string GetName() const override { return "FTC2q2qpMNoW4"; }
0350     double RegularRegular(double const& x, double const& z) const override;
0351   };
0352 
0353   /**
0354    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qbM coefficient
0355    * function for FT
0356    */
0357   class FTC2q2qbM: public DoubleExpression
0358   {
0359   public:
0360     FTC2q2qbM();
0361     std::string GetName() const override { return "FTC2q2qbM"; }
0362     double LocalRegular(double const& x, double const& z) const override;
0363     double SingularRegular(double const& x, double const& z) const override;
0364     double RegularLocal(double const& x, double const& z) const override;
0365     double RegularSingular(double const& x, double const& z) const override;
0366     double RegularRegular(double const& x, double const& z) const override;
0367   };
0368 
0369   /**
0370    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qbMFcon coefficient
0371    * function for FT
0372    */
0373   class FTC2q2qbMFcon: public DoubleExpression
0374   {
0375   public:
0376     FTC2q2qbMFcon();
0377     std::string GetName() const override { return "FTC2q2qbMFcon"; }
0378     double RegularRegular(double const& x, double const& z) const override;
0379   };
0380 
0381   /**
0382    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qM coefficient
0383    * function for FL
0384    */
0385   class FLC2q2qM: public DoubleExpression
0386   {
0387   public:
0388     FLC2q2qM(int const& nf);
0389     std::string GetName() const override { return "FLC2q2qM_nf" + std::to_string(_nf); }
0390     double RegularRegular(double const& x, double const& z) const override;
0391   private:
0392     int const _nf;
0393   };
0394 
0395   /**
0396    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qMFcon1 coefficient
0397    * function for FL
0398    */
0399   class FLC2q2qMFcon1: public DoubleExpression
0400   {
0401   public:
0402     FLC2q2qMFcon1();
0403     std::string GetName() const override { return "FLC2q2qMFcon1"; }
0404     double RegularRegular(double const& x, double const& z) const override;
0405   };
0406 
0407   /**
0408    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qMFcon2 coefficient
0409    * function for FL
0410    */
0411   class FLC2q2qMFcon2: public DoubleExpression
0412   {
0413   public:
0414     FLC2q2qMFcon2();
0415     std::string GetName() const override { return "FLC2q2qMFcon2"; }
0416     double RegularRegular(double const& x, double const& z) const override;
0417   };
0418 
0419   /**
0420    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qMANoW coefficient
0421    * function for FL
0422    */
0423   class FLC2q2qMANoW: public DoubleExpression
0424   {
0425   public:
0426     FLC2q2qMANoW();
0427     std::string GetName() const override { return "FLC2q2qMANoW"; }
0428     double RegularRegular(double const& x, double const& z) const override;
0429   };
0430 
0431   /**
0432    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2gM coefficient
0433    * function for FL
0434    */
0435   class FLC2q2gM: public DoubleExpression
0436   {
0437   public:
0438     FLC2q2gM();
0439     std::string GetName() const override { return "FLC2q2gM"; }
0440     double RegularRegular(double const& x, double const& z) const override;
0441   };
0442 
0443   /**
0444    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2gMANoW coefficient
0445    * function for FL
0446    */
0447   class FLC2q2gMANoW: public DoubleExpression
0448   {
0449   public:
0450     FLC2q2gMANoW();
0451     std::string GetName() const override { return "FLC2q2gMANoW"; }
0452     double RegularRegular(double const& x, double const& z) const override;
0453   };
0454 
0455   /**
0456    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) g2qM coefficient
0457    * function for FL
0458    */
0459   class FLC2g2qM: public DoubleExpression
0460   {
0461   public:
0462     FLC2g2qM();
0463     std::string GetName() const override { return "FLC2g2qM"; }
0464     double RegularRegular(double const& x, double const& z) const override;
0465   };
0466 
0467   /**
0468    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) g2qMANoW coefficient
0469    * function for FL
0470    */
0471   class FLC2g2qMANoW: public DoubleExpression
0472   {
0473   public:
0474     FLC2g2qMANoW();
0475     std::string GetName() const override { return "FLC2g2qMANoW"; }
0476     double RegularRegular(double const& x, double const& z) const override;
0477   };
0478 
0479   /**
0480    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) g2gM coefficient
0481    * function for FL
0482    */
0483   class FLC2g2gM: public DoubleExpression
0484   {
0485   public:
0486     FLC2g2gM();
0487     std::string GetName() const override { return "FLC2g2gM"; }
0488     double RegularRegular(double const& x, double const& z) const override;
0489   };
0490 
0491   /**
0492    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) g2gMAANoW coefficient
0493    * function for FL
0494    */
0495   class FLC2g2gMAANoW: public DoubleExpression
0496   {
0497   public:
0498     FLC2g2gMAANoW();
0499     std::string GetName() const override { return "FLC2g2gMAANoW"; }
0500     double LocalLocal(double const& x, double const& z) const override;
0501   };
0502 
0503   /**
0504    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qpM1 coefficient
0505    * function for FL
0506    */
0507   class FLC2q2qpM1: public DoubleExpression
0508   {
0509   public:
0510     FLC2q2qpM1();
0511     std::string GetName() const override { return "FLC2q2qpM1"; }
0512     double RegularRegular(double const& x, double const& z) const override;
0513   };
0514 
0515   /**
0516    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qpM2 coefficient
0517    * function for FL
0518    */
0519   class FLC2q2qpM2: public DoubleExpression
0520   {
0521   public:
0522     FLC2q2qpM2();
0523     std::string GetName() const override { return "FLC2q2qpM2"; }
0524     double RegularRegular(double const& x, double const& z) const override;
0525   };
0526 
0527   /**
0528    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qpMNoW3 coefficient
0529    * function for FL
0530    */
0531   class FLC2q2qpMNoW3: public DoubleExpression
0532   {
0533   public:
0534     FLC2q2qpMNoW3();
0535     std::string GetName() const override { return "FLC2q2qpMNoW3"; }
0536     double RegularRegular(double const& x, double const& z) const override;
0537   };
0538 
0539   /**
0540    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qpMNoW4 coefficient
0541    * function for FL
0542    */
0543   class FLC2q2qpMNoW4: public DoubleExpression
0544   {
0545   public:
0546     FLC2q2qpMNoW4();
0547     std::string GetName() const override { return "FLC2q2qpMNoW4"; }
0548     double RegularRegular(double const& x, double const& z) const override;
0549   };
0550 
0551   /**
0552    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qbM coefficient
0553    * function for FL
0554    */
0555   class FLC2q2qbM: public DoubleExpression
0556   {
0557   public:
0558     FLC2q2qbM();
0559     std::string GetName() const override { return "FLC2q2qbM"; }
0560     double RegularRegular(double const& x, double const& z) const override;
0561   };
0562 
0563   /**
0564    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qbMFcon coefficient
0565    * function for FL
0566    */
0567   class FLC2q2qbMFcon: public DoubleExpression
0568   {
0569   public:
0570     FLC2q2qbMFcon();
0571     std::string GetName() const override { return "FLC2q2qbMFcon"; }
0572     double RegularRegular(double const& x, double const& z) const override;
0573   };
0574 
0575   /**
0576    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qM coefficient
0577    * function for F3
0578    */
0579   class F3C2q2qM: public DoubleExpression
0580   {
0581   public:
0582     F3C2q2qM(int const& nf);
0583     std::string GetName() const override { return "F3C2q2qM_nf" + std::to_string(_nf); }
0584     double LocalLocal(double const& x, double const& z) const override;
0585     double LocalSingular(double const& x, double const& z) const override;
0586     double LocalRegular(double const& x, double const& z) const override;
0587     double SingularLocal(double const& x, double const& z) const override;
0588     double SingularSingular(double const& x, double const& z) const override;
0589     double SingularRegular(double const& x, double const& z) const override;
0590     double RegularLocal(double const& x, double const& z) const override;
0591     double RegularSingular(double const& x, double const& z) const override;
0592     double RegularRegular(double const& x, double const& z) const override;
0593   private:
0594     int const _nf;
0595   };
0596 
0597   /**
0598    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qMFcon1 coefficient
0599    * function for F3
0600    */
0601   class F3C2q2qMFcon1: public DoubleExpression
0602   {
0603   public:
0604     F3C2q2qMFcon1();
0605     std::string GetName() const override { return "F3C2q2qMFcon1"; }
0606     double RegularRegular(double const& x, double const& z) const override;
0607   };
0608 
0609   /**
0610    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qMANoW coefficient
0611    * function for F3
0612    */
0613   class F3C2q2qMANoW: public DoubleExpression
0614   {
0615   public:
0616     F3C2q2qMANoW();
0617     std::string GetName() const override { return "F3C2q2qMANoW"; }
0618     double LocalLocal(double const& x, double const& z) const override;
0619     double RegularRegular(double const& x, double const& z) const override;
0620   };
0621 
0622   /**
0623    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2gM coefficient
0624    * function for F3
0625    */
0626   class F3C2q2gM: public DoubleExpression
0627   {
0628   public:
0629     F3C2q2gM();
0630     std::string GetName() const override { return "F3C2q2gM"; }
0631     double LocalRegular(double const& x, double const& z) const override;
0632     double SingularRegular(double const& x, double const& z) const override;
0633     double RegularRegular(double const& x, double const& z) const override;
0634   };
0635 
0636   /**
0637    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2gMANoW coefficient
0638    * function for F3
0639    */
0640   class F3C2q2gMANoW: public DoubleExpression
0641   {
0642   public:
0643     F3C2q2gMANoW();
0644     std::string GetName() const override { return "F3C2q2gMANoW"; }
0645     double RegularRegular(double const& x, double const& z) const override;
0646   };
0647 
0648   /**
0649    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) g2qM coefficient
0650    * function for F3
0651    */
0652   class F3C2g2qM: public DoubleExpression
0653   {
0654   public:
0655     F3C2g2qM();
0656     std::string GetName() const override { return "F3C2g2qM"; }
0657     double RegularLocal(double const& x, double const& z) const override;
0658     double RegularSingular(double const& x, double const& z) const override;
0659     double RegularRegular(double const& x, double const& z) const override;
0660   };
0661 
0662   /**
0663    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) g2qMANoW coefficient
0664    * function for F3
0665    */
0666   class F3C2g2qMANoW: public DoubleExpression
0667   {
0668   public:
0669     F3C2g2qMANoW();
0670     std::string GetName() const override { return "F3C2g2qMANoW"; }
0671     double RegularRegular(double const& x, double const& z) const override;
0672   };
0673 
0674   /**
0675    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qpM1 coefficient
0676    * function for F3
0677    */
0678   class F3C2q2qpM1: public DoubleExpression
0679   {
0680   public:
0681     F3C2q2qpM1();
0682     std::string GetName() const override { return "F3C2q2qpM1"; }
0683     double LocalRegular(double const& x, double const& z) const override;
0684     double SingularRegular(double const& x, double const& z) const override;
0685     double RegularRegular(double const& x, double const& z) const override;
0686   };
0687 
0688   /**
0689    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qpM2 coefficient
0690    * function for F3
0691    */
0692   class F3C2q2qpM2: public DoubleExpression
0693   {
0694   public:
0695     F3C2q2qpM2();
0696     std::string GetName() const override { return "F3C2q2qpM2"; }
0697     double RegularLocal(double const& x, double const& z) const override;
0698     double RegularSingular(double const& x, double const& z) const override;
0699     double RegularRegular(double const& x, double const& z) const override;
0700   };
0701 
0702   /**
0703    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qpMNoW3 coefficient
0704    * function for F3
0705    */
0706   class F3C2q2qpMNoW3: public DoubleExpression
0707   {
0708   public:
0709     F3C2q2qpMNoW3();
0710     std::string GetName() const override { return "F3C2q2qpMNoW3"; }
0711     double RegularRegular(double const& x, double const& z) const override;
0712   };
0713 
0714   /**
0715    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qpMNoW4 coefficient
0716    * function for F3
0717    */
0718   class F3C2q2qpMNoW4: public DoubleExpression
0719   {
0720   public:
0721     F3C2q2qpMNoW4();
0722     std::string GetName() const override { return "F3C2q2qpMNoW4"; }
0723     double RegularRegular(double const& x, double const& z) const override;
0724   };
0725 
0726   /**
0727    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qbM coefficient
0728    * function for F3
0729    */
0730   class F3C2q2qbM: public DoubleExpression
0731   {
0732   public:
0733     F3C2q2qbM();
0734     std::string GetName() const override { return "F3C2q2qbM"; }
0735     double LocalRegular(double const& x, double const& z) const override;
0736     double SingularRegular(double const& x, double const& z) const override;
0737     double RegularLocal(double const& x, double const& z) const override;
0738     double RegularSingular(double const& x, double const& z) const override;
0739     double RegularRegular(double const& x, double const& z) const override;
0740   };
0741 
0742   /**
0743    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) q2qbMFcon coefficient
0744    * function for F3
0745    */
0746   class F3C2q2qbMFcon: public DoubleExpression
0747   {
0748   public:
0749     F3C2q2qbMFcon();
0750     std::string GetName() const override { return "F3C2q2qbMFcon"; }
0751     double RegularRegular(double const& x, double const& z) const override;
0752   };
0753   ///@}
0754   ///@}
0755 }