From 8b3aeb3b40f0e138e2fdfa6b49fc4d83a8635b7d Mon Sep 17 00:00:00 2001 From: Valerio Bertone Date: Thu, 16 Nov 2023 15:26:36 +0100 Subject: [PATCH] Implementing O(as) space-like polarised matching conditions --- inc/apfel/matchingconditions_sl.h | 78 +++++++++++++++++++++++++- src/evolution/dglapbuilder.cc | 24 +++++--- src/evolution/matchingconditions_sl.cc | 60 ++++++++++++++++++++ 3 files changed, 152 insertions(+), 10 deletions(-) diff --git a/inc/apfel/matchingconditions_sl.h b/inc/apfel/matchingconditions_sl.h index f806628aa..e616c5185 100644 --- a/inc/apfel/matchingconditions_sl.h +++ b/inc/apfel/matchingconditions_sl.h @@ -22,7 +22,7 @@ namespace apfel */ ///@{ /** - * @defgroup NLOMC NLO matching conditions + * @defgroup NLOMC NLO unpolarised matching conditions * @ingroup MatchCond */ ///@{ @@ -101,7 +101,79 @@ namespace apfel ///@} /** - * @defgroup NNLOMC NNLO matching conditions + * @defgroup NLOMCpol NLO longitudinally polarised matching conditions + * @ingroup MatchCond + */ + ///@{ + /** + * @brief O(αs) term propotional to + * ln(μ2/m2). + */ + class AS1polHg_L: public Expression + { + public: + AS1polHg_L(); + double Regular(double const& x) const; + }; + + /** + * @brief O(αs) term propotional to + * ln(μ2/m2). + */ + class AS1polggH_L: public Expression + { + public: + AS1polggH_L(); + double Local(double const&) const; + }; + + /** + * @brief O(αs) term propotional to + * ln(μ2/m2) for the HH matching. + */ + class AS1polHH_L: public Expression + { + public: + AS1polHH_L(); + double Singular(double const& x) const; + }; + + /** + * @brief O(αs) constant term for the HH + * matching. + */ + class AS1polHH_0: public Expression + { + public: + AS1polHH_0(); + double Singular(double const& x) const; + }; + + /** + * @brief O(αs) term propotional to + * ln(μ2/m2) for the gH matching. + */ + class AS1polgH_L: public Expression + { + public: + AS1polgH_L(); + double Regular(double const& x) const; + }; + + /** + * @brief O(αs) constant term for the gH + * matching. + */ + class AS1polgH_0: public Expression + { + public: + AS1polgH_0(); + double Regular(double const& x) const; + }; + ///@} + + /** + * @defgroup NNLOMC NNLO unpolarised matching conditions * @ingroup MatchCond */ ///@{ @@ -294,7 +366,7 @@ namespace apfel ///@} /** - * @defgroup NNNLOMC NNNLO matching conditions + * @defgroup NNNLOMC NNNLO unpolarised matching conditions * @note Approximated expressions from * https://github.com/MSHTPDF/N3LO_additions. Details to be found in * https://arxiv.org/pdf/2207.04739.pdf. Logarithmic terms currently diff --git a/src/evolution/dglapbuilder.cc b/src/evolution/dglapbuilder.cc index b42d37fb3..528a6f603 100644 --- a/src/evolution/dglapbuilder.cc +++ b/src/evolution/dglapbuilder.cc @@ -411,18 +411,28 @@ namespace apfel } // =============================================================== - // NLO matching conditions (unknown so far thus set to zero) + // NLO matching conditions std::map> MatchNLO; + const Operator AS1HgL {g, AS1polHg_L{}, IntEps}; + const Operator AS1ggHL{g, AS1polggH_L{}, IntEps}; + const Operator AS1gH0 {g, AS1polgH_0{}, IntEps}; + const Operator AS1gHL {g, AS1polgH_L{}, IntEps}; + const Operator AS1HH0 {g, AS1polHH_0{}, IntEps}; + const Operator AS1HHL {g, AS1polHH_L{}, IntEps}; for (int nf = nfi; nf <= nff; nf++) { + const Operator AS1Hg = LogKth[nf] * AS1HgL; + const Operator AS1ggH = LogKth[nf] * AS1ggHL; + const Operator AS1gH = AS1gH0 + LogKth[nf] * AS1gHL; + const Operator AS1HH = AS1HH0 + LogKth[nf] * AS1HHL; std::map OM; OM.insert({MatchingBasisQCD::M0, Zero}); - OM.insert({MatchingBasisQCD::M1, Zero}); - OM.insert({MatchingBasisQCD::M2, Zero}); - OM.insert({MatchingBasisQCD::M3, Zero}); - OM.insert({MatchingBasisQCD::M4, Zero}); - OM.insert({MatchingBasisQCD::M5, Zero}); - OM.insert({MatchingBasisQCD::M6, Zero}); + OM.insert({MatchingBasisQCD::M1, AS1ggH}); + OM.insert({MatchingBasisQCD::M2, AS1gH}); + OM.insert({MatchingBasisQCD::M3, AS1gH}); + OM.insert({MatchingBasisQCD::M4, AS1Hg}); + OM.insert({MatchingBasisQCD::M5, AS1HH}); + OM.insert({MatchingBasisQCD::M6, AS1HH}); OM.insert({MatchingBasisQCD::M7, Zero}); MatchNLO.insert({nf, OM}); } diff --git a/src/evolution/matchingconditions_sl.cc b/src/evolution/matchingconditions_sl.cc index 1ba44cf05..9ebf264bf 100644 --- a/src/evolution/matchingconditions_sl.cc +++ b/src/evolution/matchingconditions_sl.cc @@ -70,6 +70,66 @@ namespace apfel return 2 * CF * ( 1 + pow(1 - x, 2) ) * ( - 1 - 2 * log(x) ) / x; } + //_________________________________________________________________________________ + AS1polHg_L::AS1polHg_L(): + Expression() + { + } + double AS1polHg_L::Regular(double const& x) const + { + return 4 * TR * ( 2 * x - 1 ); + } + + //_________________________________________________________________________________ + AS1polggH_L::AS1polggH_L(): + Expression() + { + } + double AS1polggH_L::Local(double const&) const + { + return - 4 * TR / 3.; + } + + //_________________________________________________________________________________ + AS1polHH_L::AS1polHH_L(): + Expression() + { + } + double AS1polHH_L::Singular(double const& x) const + { + return 2 * CF * ( 1 + pow(x, 2) ) / ( 1 - x ); + } + + //_________________________________________________________________________________ + AS1polHH_0::AS1polHH_0(): + Expression() + { + } + double AS1polHH_0::Singular(double const& x) const + { + return 2 * CF * ( 1 + pow(x, 2) ) * ( - 1 - 2 * log(1 - x) ) / ( 1 - x ); + } + + //_________________________________________________________________________________ + AS1polgH_L::AS1polgH_L(): + Expression() + { + } + double AS1polgH_L::Regular(double const& x) const + { + return 2 * CF * ( 2 - x ); + } + + //_________________________________________________________________________________ + AS1polgH_0::AS1polgH_0(): + Expression() + { + } + double AS1polgH_0::Regular(double const& x) const + { + return 2 * CF * ( 2 - 2 * x - 2 * ( 2 - x ) * log(x) ); + } + //_________________________________________________________________________________ APS2Hq_0::APS2Hq_0(): Expression()