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 #include "apfel/ome.h"
0011 
0012 namespace apfel
0013 {
0014 
0015   /**
0016    * @defgroup MatchCond Space-like matching conditions from libome
0017    * @note This is a set of classes whic wrap the functions of
0018    * libome. The original code can be found at:
0019    * https://gitlab.com/libome/libome and the reference publication
0020    * is:
0021    * J. Ablinger, A. Behring, J. Blümlein, A. De Freitas, A. von
0022    * Manteuffel, C. Schneider, and K. Schönwald, "The Single-Mass
0023    * Variable Flavor Number Scheme at Three-Loop Order",
0024    * https://arxiv.org/pdf/2510.02175 (DESY 24-037).
0025    */
0026   ///@{
0027   /**
0028    * @defgroup NLOMCOME NLO unpolarised matching conditions from libome
0029    * @ingroup MatchCond
0030    */
0031   ///@{
0032   /**
0033    * @brief O(&alpha;<SUB>s</SUB>) term propotional to
0034    * ln(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0035    */
0036   class AS1Hg_L_ome: public Expression
0037   {
0038   public:
0039     AS1Hg_L_ome();
0040     double Regular(double const& x) const;
0041   private:
0042     ome::ome_nf<double> const& _ome_r;
0043   };
0044 
0045   /**
0046    * @brief O(&alpha;<SUB>s</SUB>) term propotional to
0047    * ln(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0048    */
0049   class AS1ggH_L_ome: public Expression
0050   {
0051   public:
0052     AS1ggH_L_ome();
0053     double Local(double const&) const;
0054   private:
0055     ome::ome_nf_const<double> const& _ome_l;
0056   };
0057   ///@}
0058 
0059   /**
0060    * @defgroup NNLOMCOME NNLO unpolarised matching conditions from libome
0061    * @ingroup MatchCond
0062    */
0063   ///@{
0064   /**
0065    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) constant term.
0066    */
0067   class APS2Hq_0_ome: public Expression
0068   {
0069   public:
0070     APS2Hq_0_ome();
0071     double Regular(double const& x) const;
0072   private:
0073     ome::ome_nf<double> const& _ome_r;
0074   };
0075 
0076   /**
0077    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0078    * ln(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0079    */
0080   class APS2Hq_L_ome: public Expression
0081   {
0082   public:
0083     APS2Hq_L_ome();
0084     double Regular(double const& x) const;
0085   private:
0086     ome::ome_nf<double> const& _ome_r;
0087   };
0088 
0089   /**
0090    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0091    * ln<SUP>2</SUP>(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0092    */
0093   class APS2Hq_L2_ome: public Expression
0094   {
0095   public:
0096     APS2Hq_L2_ome();
0097     double Regular(double const& x) const;
0098   private:
0099     ome::ome_nf<double> const& _ome_r;
0100   };
0101 
0102   /**
0103    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) constant term.
0104    */
0105   class AS2Hg_0_ome: public Expression
0106   {
0107   public:
0108     AS2Hg_0_ome();
0109     double Regular(double const& x) const;
0110   private:
0111     ome::ome_nf<double> const& _ome_r;
0112   };
0113 
0114   /**
0115    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0116    * ln(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0117    */
0118   class AS2Hg_L_ome: public Expression
0119   {
0120   public:
0121     AS2Hg_L_ome();
0122     double Regular(double const& x) const;
0123   private:
0124     ome::ome_nf<double> const& _ome_r;
0125   };
0126 
0127   /**
0128    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0129    * ln<SUP>2</SUP>(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0130    */
0131   class AS2Hg_L2_ome: public Expression
0132   {
0133   public:
0134     AS2Hg_L2_ome();
0135     double Regular(double const& x) const;
0136   private:
0137     ome::ome_nf<double> const& _ome_r;
0138   };
0139 
0140   /**
0141    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) constant term.
0142    */
0143   class ANS2qqH_0_ome: public Expression
0144   {
0145   public:
0146     ANS2qqH_0_ome();
0147     double Regular(double const& x)  const;
0148     double Singular(double const& x) const;
0149     double Local(double const& x)    const;
0150   private:
0151     ome::ome_nf<double>       const& _ome_r;
0152     ome::ome_nf_plus<double>  const& _ome_s;
0153     ome::ome_nf_const<double> const& _ome_l;
0154   };
0155 
0156   /**
0157    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0158    * ln(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0159    */
0160   class ANS2qqH_L_ome: public Expression
0161   {
0162   public:
0163     ANS2qqH_L_ome();
0164     double Regular(double const& x)  const;
0165     double Singular(double const& x) const;
0166     double Local(double const& x)    const;
0167   private:
0168     ome::ome_nf<double>       const& _ome_r;
0169     ome::ome_nf_plus<double>  const& _ome_s;
0170     ome::ome_nf_const<double> const& _ome_l;
0171   };
0172 
0173   /**
0174    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0175    * ln<SUP>2</SUP>(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0176    */
0177   class ANS2qqH_L2_ome: public Expression
0178   {
0179   public:
0180     ANS2qqH_L2_ome();
0181     double Regular(double const& x)  const;
0182     double Singular(double const& x) const;
0183     double Local(double const& x)    const;
0184   private:
0185     ome::ome_nf<double>       const& _ome_r;
0186     ome::ome_nf_plus<double>  const& _ome_s;
0187     ome::ome_nf_const<double> const& _ome_l;
0188   };
0189 
0190   /**
0191    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) constant term.
0192    */
0193   class AS2gqH_0_ome: public Expression
0194   {
0195   public:
0196     AS2gqH_0_ome();
0197     double Regular(double const& x) const;
0198   private:
0199     ome::ome_nf<double> const& _ome_r;
0200   };
0201 
0202   /**
0203    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0204    * ln(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0205    */
0206   class AS2gqH_L_ome: public Expression
0207   {
0208   public:
0209     AS2gqH_L_ome();
0210     double Regular(double const& x) const;
0211   private:
0212     ome::ome_nf<double> const& _ome_r;
0213   };
0214 
0215   /**
0216    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0217    * ln<SUP>2</SUP>(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0218    */
0219   class AS2gqH_L2_ome: public Expression
0220   {
0221   public:
0222     AS2gqH_L2_ome();
0223     double Regular(double const& x) const;
0224   private:
0225     ome::ome_nf<double> const& _ome_r;
0226   };
0227 
0228   /**
0229    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) constant term.
0230    */
0231   class AS2ggH_0_ome: public Expression
0232   {
0233   public:
0234     AS2ggH_0_ome();
0235     double Regular(double const& x)  const;
0236     double Singular(double const& x) const;
0237     double Local(double const& x)    const;
0238   private:
0239     ome::ome_nf<double>       const& _ome_r;
0240     ome::ome_nf_plus<double>  const& _ome_s;
0241     ome::ome_nf_const<double> const& _ome_l;
0242   };
0243 
0244   /**
0245    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0246    * ln(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0247    */
0248   class AS2ggH_L_ome: public Expression
0249   {
0250   public:
0251     AS2ggH_L_ome();
0252     double Regular(double const& x)  const;
0253     double Singular(double const& x) const;
0254     double Local(double const& x)    const;
0255   private:
0256     ome::ome_nf<double>       const& _ome_r;
0257     ome::ome_nf_plus<double>  const& _ome_s;
0258     ome::ome_nf_const<double> const& _ome_l;
0259   };
0260 
0261   /**
0262    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0263    * ln<SUP>2</SUP>(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0264    */
0265   class AS2ggH_L2_ome: public Expression
0266   {
0267   public:
0268     AS2ggH_L2_ome();
0269     double Regular(double const& x)  const;
0270     double Singular(double const& x) const;
0271     double Local(double const& x)    const;
0272   private:
0273     ome::ome_nf<double>       const& _ome_r;
0274     ome::ome_nf_plus<double>  const& _ome_s;
0275     ome::ome_nf_const<double> const& _ome_l;
0276   };
0277   ///@}
0278 
0279   /**
0280    * @defgroup NNNLOMCOME NNNLO unpolarised matching conditions from libome
0281    * @ingroup MatchCond
0282    */
0283   ///@{
0284   /**
0285    * @brief O(&alpha;<SUB>s</SUB><SUP>3</SUP>) constant term.
0286    */
0287   class APS3Hq_0_ome: public Expression
0288   {
0289   public:
0290     APS3Hq_0_ome(int const& nf);
0291     double Regular(double const& x) const;
0292   private:
0293     int const _nf;
0294     ome::ome_nf<double> const& _ome_r;
0295   };
0296 
0297   /**
0298    * @brief O(&alpha;<SUB>s</SUB><SUP>3</SUP>) constant term.
0299    */
0300   class AS3Hg_0_ome: public Expression
0301   {
0302   public:
0303     AS3Hg_0_ome(int const& nf);
0304     double Regular(double const& x) const;
0305   private:
0306     int const _nf;
0307     ome::ome_nf<double> const& _ome_r;
0308   };
0309 
0310   /**
0311    * @brief O(&alpha;<SUB>s</SUB><SUP>3</SUP>) constant term.
0312    */
0313   class ANS3qqH_0_ome: public Expression
0314   {
0315   public:
0316     ANS3qqH_0_ome(int const& nf);
0317     double Regular(double const& x)  const;
0318     double Singular(double const& x) const;
0319     double Local(double const& x)    const;
0320   private:
0321     int const _nf;
0322     ome::ome_nf<double>       const& _ome_r;
0323     ome::ome_nf_plus<double>  const& _ome_s;
0324     ome::ome_nf_const<double> const& _ome_l;
0325   };
0326 
0327   /**
0328    * @brief O(&alpha;<SUB>s</SUB><SUP>3</SUP>) constant term.
0329    */
0330   class ANS3qqHm_0_ome: public Expression
0331   {
0332   public:
0333     ANS3qqHm_0_ome(int const& nf);
0334     double Regular(double const& x)  const;
0335     double Singular(double const& x) const;
0336     double Local(double const& x)    const;
0337   private:
0338     int const _nf;
0339     ome::ome_nf<double>       const& _ome_r;
0340     ome::ome_nf_plus<double>  const& _ome_s;
0341     ome::ome_nf_const<double> const& _ome_l;
0342   };
0343 
0344   /**
0345    * @brief O(&alpha;<SUB>s</SUB><SUP>3</SUP>) constant term.
0346    */
0347   class AS3gqH_0_ome: public Expression
0348   {
0349   public:
0350     AS3gqH_0_ome(int const& nf);
0351     double Regular(double const& x) const;
0352   private:
0353     int const _nf;
0354     ome::ome_nf<double> const& _ome_r;
0355   };
0356 
0357   /**
0358    * @brief O(&alpha;<SUB>s</SUB><SUP>3</SUP>) constant term.
0359    */
0360   class AS3ggH_0_ome: public Expression
0361   {
0362   public:
0363     AS3ggH_0_ome(int const& nf);
0364     double Regular(double const& x)  const;
0365     double Singular(double const& x) const;
0366     double Local(double const& x)    const;
0367   private:
0368     int const _nf;
0369     ome::ome_nf<double>       const& _ome_r;
0370     ome::ome_nf_plus<double>  const& _ome_s;
0371     ome::ome_nf_const<double> const& _ome_l;
0372   };
0373 
0374   /**
0375    * @brief O(&alpha;<SUB>s</SUB><SUP>3</SUP>) constant term.
0376    */
0377   class AS3qgQ_0_ome: public Expression
0378   {
0379   public:
0380     AS3qgQ_0_ome(int const& nf);
0381     double Regular(double const& x)  const;
0382   private:
0383     int const _nf;
0384     ome::ome_nf<double> const& _ome_r;
0385   };
0386 
0387   /**
0388    * @brief O(&alpha;<SUB>s</SUB><SUP>3</SUP>) constant term.
0389    */
0390   class APS3qqQ_0_ome: public Expression
0391   {
0392   public:
0393     APS3qqQ_0_ome(int const& nf);
0394     double Regular(double const& x)  const;
0395   private:
0396     int const _nf;
0397     ome::ome_nf<double> const& _ome_r;
0398   };
0399   ///@}
0400 
0401   /**
0402    * @defgroup NLOMCpolOME NLO longitudinally polarised matching conditions from libome
0403    * @ingroup MatchCond
0404    */
0405   ///@{
0406   /**
0407    * @brief O(&alpha;<SUB>s</SUB>) term propotional to
0408    * ln(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0409    */
0410   class AS1polHg_L_ome: public Expression
0411   {
0412   public:
0413     AS1polHg_L_ome();
0414     double Regular(double const& x) const;
0415   private:
0416     ome::ome_nf<double> const& _ome_r;
0417   };
0418 
0419   /**
0420    * @brief O(&alpha;<SUB>s</SUB>) term propotional to
0421    * ln(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0422    */
0423   class AS1polggH_L_ome: public Expression
0424   {
0425   public:
0426     AS1polggH_L_ome();
0427     double Local(double const&) const;
0428   private:
0429     ome::ome_nf_const<double> const& _ome_l;
0430   };
0431   ///@}
0432 
0433   /**
0434    * @defgroup NNLOMCpolOME NNLO longitudinally polarised matching conditions from libome
0435    * @ingroup MatchCond
0436    */
0437   ///@{
0438   /**
0439    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) constant term.
0440    */
0441   class APS2polHq_0_ome: public Expression
0442   {
0443   public:
0444     APS2polHq_0_ome();
0445     double Regular(double const& x) const;
0446   private:
0447     ome::ome_nf<double> const& _ome_r;
0448   };
0449 
0450   /**
0451    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0452    * ln(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0453    */
0454   class APS2polHq_L_ome: public Expression
0455   {
0456   public:
0457     APS2polHq_L_ome();
0458     double Regular(double const& x) const;
0459   private:
0460     ome::ome_nf<double> const& _ome_r;
0461   };
0462 
0463   /**
0464    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0465    * ln<SUP>2</SUP>(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0466    */
0467   class APS2polHq_L2_ome: public Expression
0468   {
0469   public:
0470     APS2polHq_L2_ome();
0471     double Regular(double const& x) const;
0472   private:
0473     ome::ome_nf<double> const& _ome_r;
0474   };
0475 
0476   /**
0477    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) constant term.
0478    */
0479   class AS2polHg_0_ome: public Expression
0480   {
0481   public:
0482     AS2polHg_0_ome();
0483     double Regular(double const& x) const;
0484   private:
0485     ome::ome_nf<double> const& _ome_r;
0486   };
0487 
0488   /**
0489    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0490    * ln(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0491    */
0492   class AS2polHg_L_ome: public Expression
0493   {
0494   public:
0495     AS2polHg_L_ome();
0496     double Regular(double const& x) const;
0497   private:
0498     ome::ome_nf<double> const& _ome_r;
0499   };
0500 
0501   /**
0502    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0503    * ln<SUP>2</SUP>(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0504    */
0505   class AS2polHg_L2_ome: public Expression
0506   {
0507   public:
0508     AS2polHg_L2_ome();
0509     double Regular(double const& x) const;
0510   private:
0511     ome::ome_nf<double> const& _ome_r;
0512   };
0513 
0514   /**
0515    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) constant term.
0516    */
0517   class ANS2polqqH_0_ome: public Expression
0518   {
0519   public:
0520     ANS2polqqH_0_ome();
0521     double Regular(double const& x)  const;
0522     double Singular(double const& x) const;
0523     double Local(double const& x)    const;
0524   private:
0525     ome::ome_nf<double>       const& _ome_r;
0526     ome::ome_nf_plus<double>  const& _ome_s;
0527     ome::ome_nf_const<double> const& _ome_l;
0528   };
0529 
0530   /**
0531    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0532    * ln(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0533    */
0534   class ANS2polqqH_L_ome: public Expression
0535   {
0536   public:
0537     ANS2polqqH_L_ome();
0538     double Regular(double const& x)  const;
0539     double Singular(double const& x) const;
0540     double Local(double const& x)    const;
0541   private:
0542     ome::ome_nf<double>       const& _ome_r;
0543     ome::ome_nf_plus<double>  const& _ome_s;
0544     ome::ome_nf_const<double> const& _ome_l;
0545   };
0546 
0547   /**
0548    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0549    * ln<SUP>2</SUP>(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0550    */
0551   class ANS2polqqH_L2_ome: public Expression
0552   {
0553   public:
0554     ANS2polqqH_L2_ome();
0555     double Regular(double const& x)  const;
0556     double Singular(double const& x) const;
0557     double Local(double const& x)    const;
0558   private:
0559     ome::ome_nf<double>       const& _ome_r;
0560     ome::ome_nf_plus<double>  const& _ome_s;
0561     ome::ome_nf_const<double> const& _ome_l;
0562   };
0563 
0564   /**
0565    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) constant term.
0566    */
0567   class AS2polgqH_0_ome: public Expression
0568   {
0569   public:
0570     AS2polgqH_0_ome();
0571     double Regular(double const& x) const;
0572   private:
0573     ome::ome_nf<double> const& _ome_r;
0574   };
0575 
0576   /**
0577    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0578    * ln(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0579    */
0580   class AS2polgqH_L_ome: public Expression
0581   {
0582   public:
0583     AS2polgqH_L_ome();
0584     double Regular(double const& x) const;
0585   private:
0586     ome::ome_nf<double> const& _ome_r;
0587   };
0588 
0589   /**
0590    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0591    * ln<SUP>2</SUP>(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0592    */
0593   class AS2polgqH_L2_ome: public Expression
0594   {
0595   public:
0596     AS2polgqH_L2_ome();
0597     double Regular(double const& x) const;
0598   private:
0599     ome::ome_nf<double> const& _ome_r;
0600   };
0601 
0602   /**
0603    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) constant term.
0604    */
0605   class AS2polggH_0_ome: public Expression
0606   {
0607   public:
0608     AS2polggH_0_ome();
0609     double Regular(double const& x)  const;
0610     double Singular(double const& x) const;
0611     double Local(double const& x)    const;
0612   private:
0613     ome::ome_nf<double>       const& _ome_r;
0614     ome::ome_nf_plus<double>  const& _ome_s;
0615     ome::ome_nf_const<double> const& _ome_l;
0616   };
0617 
0618   /**
0619    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0620    * ln(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0621    */
0622   class AS2polggH_L_ome: public Expression
0623   {
0624   public:
0625     AS2polggH_L_ome();
0626     double Regular(double const& x)  const;
0627     double Singular(double const& x) const;
0628     double Local(double const& x)    const;
0629   private:
0630     ome::ome_nf<double>       const& _ome_r;
0631     ome::ome_nf_plus<double>  const& _ome_s;
0632     ome::ome_nf_const<double> const& _ome_l;
0633   };
0634 
0635   /**
0636    * @brief O(&alpha;<SUB>s</SUB><SUP>2</SUP>) term propotional to
0637    * ln<SUP>2</SUP>(&mu;<SUP>2</SUP>/m<SUP>2</SUP>).
0638    */
0639   class AS2polggH_L2_ome: public Expression
0640   {
0641   public:
0642     AS2polggH_L2_ome();
0643     double Regular(double const& x)  const;
0644     double Singular(double const& x) const;
0645     double Local(double const& x)    const;
0646   private:
0647     ome::ome_nf<double>       const& _ome_r;
0648     ome::ome_nf_plus<double>  const& _ome_s;
0649     ome::ome_nf_const<double> const& _ome_l;
0650   };
0651   ///@}
0652   ///@}
0653 }