From 7275edb344f8dd6e5890fefc579cb68eb0e801da Mon Sep 17 00:00:00 2001 From: niccolo Date: Fri, 5 Apr 2024 18:16:29 +0200 Subject: [PATCH] Implement switch to limits for F2g --- inc/adani/ExactCoefficientFunction.h | 5 +++++ src/ExactCoefficientFunction.cc | 23 +++++++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/inc/adani/ExactCoefficientFunction.h b/inc/adani/ExactCoefficientFunction.h index 77697ad3..0f462404 100644 --- a/inc/adani/ExactCoefficientFunction.h +++ b/inc/adani/ExactCoefficientFunction.h @@ -17,9 +17,11 @@ #ifndef Exact_h #define Exact_h +#include "adani/AsymptoticCoefficientFunction.h" #include "adani/CoefficientFunction.h" #include "adani/Convolution.h" #include "adani/SplittingFunction.h" +#include "adani/ThresholdCoefficientFunction.h" #include @@ -57,6 +59,9 @@ class ExactCoefficientFunction : public CoefficientFunction { double, double, double, int ) const; + AsymptoticCoefficientFunction* asy_; + ThresholdCoefficientFunction* thr_; + std::vector convolutions_lmu1_; std::vector convolutions_lmu2_; diff --git a/src/ExactCoefficientFunction.cc b/src/ExactCoefficientFunction.cc index cbeb416f..13392d6a 100644 --- a/src/ExactCoefficientFunction.cc +++ b/src/ExactCoefficientFunction.cc @@ -35,6 +35,14 @@ ExactCoefficientFunction::ExactCoefficientFunction( delta_ = nullptr; + if (GetOrder() == 2) { + asy_ = new AsymptoticCoefficientFunction(order, kind, channel); + thr_ = new ThresholdCoefficientFunction(order, kind, channel); + } else { + asy_ = nullptr; + thr_ = nullptr; + } + if (GetOrder() > 1) { gluon_as1_ = new ExactCoefficientFunction(1, GetKind(), 'g'); @@ -146,6 +154,9 @@ ExactCoefficientFunction::~ExactCoefficientFunction() { delete Pgq0Pqg0_; delete delta_; + + delete asy_; + delete thr_; } //==========================================================================================// @@ -372,10 +383,14 @@ ExactCoefficientFunction::C2_g20(double x, double m2Q2, int /*nf*/) const { double xi = 1. / m2Q2; double eta = 0.25 * xi * (1 - x) / x - 1.; - if (eta > 1e6 || eta < 1e-6 || xi < 1e-3 || xi > 1e5) - return 0.; - - return 16 * M_PI * xi * c2nlog_(&eta, &xi) / x; + // if (eta > 1e6 || eta < 1e-6 || xi < 1e-3 || xi > 1e5) + // return 0.; + if (eta < 1e-6) return thr_ -> MuIndependentTerms(x, m2Q2, 1); + else if (eta > 1e6 || xi > 1e5) return asy_ -> MuIndependentTerms(x, m2Q2, 1); + else if (xi < 1e-3) { + cout << "Error in ExactCoefficientFunction::C2_g20: max value of m2Q2 is 1e3. Got " << m2Q2 << endl; + exit(-1); + } else return 16 * M_PI * xi * c2nlog_(&eta, &xi) / x; } //==========================================================================================//