From f32810cf716ca2074ee4c8e3899da237ef546c90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Wed, 20 Mar 2024 11:30:51 +0100 Subject: [PATCH] Fix indentation of class --- .clang-format | 4 +- inc/adani/ApproximateCoefficientFunction.h | 167 ++++----- inc/adani/AsymptoticCoefficientFunction.h | 37 +- inc/adani/CoefficientFunction.h | 60 ++-- inc/adani/Convolution.h | 233 ++++++------ inc/adani/ExactCoefficientFunction.h | 261 +++++++------- inc/adani/HighEnergyCoefficientFunction.h | 397 +++++++++++---------- inc/adani/HighScaleCoefficientFunction.h | 190 +++++----- inc/adani/HighScaleSplitLogs.h | 139 ++++---- inc/adani/MasslessCoefficientFunction.h | 151 ++++---- inc/adani/MatchingCondition.h | 54 +-- inc/adani/SplittingFunction.h | 324 ++++++++--------- inc/adani/ThresholdCoefficientFunction.h | 156 ++++---- inc/adani/Value.h | 56 +-- 14 files changed, 1138 insertions(+), 1091 deletions(-) diff --git a/.clang-format b/.clang-format index fba057b..f1155d4 100644 --- a/.clang-format +++ b/.clang-format @@ -1,6 +1,6 @@ --- Language: Cpp -AccessModifierOffset: -2 +AccessModifierOffset: 0 AlignAfterOpenBracket: BlockIndent #### AlignArrayOfStructures: None AlignConsecutiveAssignments: @@ -117,7 +117,7 @@ IncludeCategories: CaseSensitive: false IncludeIsMainRegex: '(Test)?$' IncludeIsMainSourceRegex: '' -IndentAccessModifiers: false +IndentAccessModifiers: true IndentCaseBlocks: false IndentCaseLabels: false IndentExternBlock: Indent diff --git a/inc/adani/ApproximateCoefficientFunction.h b/inc/adani/ApproximateCoefficientFunction.h index f1311db..30bd92a 100644 --- a/inc/adani/ApproximateCoefficientFunction.h +++ b/inc/adani/ApproximateCoefficientFunction.h @@ -27,10 +27,10 @@ //------------------------------------------------------------------------------------------// struct approximation_parameters { - double A; - double B; - double C; - double D; + double A; + double B; + double C; + double D; }; //==========================================================================================// @@ -39,8 +39,8 @@ struct approximation_parameters { //------------------------------------------------------------------------------------------// struct variation_parameters { - double var; - double fact; + double var; + double fact; }; //==========================================================================================// @@ -48,11 +48,11 @@ struct variation_parameters { //------------------------------------------------------------------------------------------// struct klmv_params { - double gamma; - double C; - double log_coeff; - double log_pow; - double const_coeff; + double gamma; + double C; + double log_coeff; + double log_pow; + double const_coeff; }; //==========================================================================================// @@ -60,24 +60,25 @@ struct klmv_params { //------------------------------------------------------------------------------------------// class AbstractApproximate : public CoefficientFunction { - public: - AbstractApproximate( - const int &order, const char &kind, const char &channel, - const double &abserr = 1e-3, const double &relerr = 1e-3, - const int &dim = 1000, const int &method_flag = 1, - const int &MCcalls = 25000 - ); - ~AbstractApproximate(); - - double MuIndependentTerms(double x, double m2Q2, int nf) const override; - - Value fxBand(double x, double m2Q2, double m2mu2, int nf) const override; - double MuDependentTerms( - double x, double m2Q2, double m2mu2, int nf - ) const override; - - private: - ExactCoefficientFunction *muterms_; + public: + AbstractApproximate( + const int &order, const char &kind, const char &channel, + const double &abserr = 1e-3, const double &relerr = 1e-3, + const int &dim = 1000, const int &method_flag = 1, + const int &MCcalls = 25000 + ); + ~AbstractApproximate(); + + double MuIndependentTerms(double x, double m2Q2, int nf) const override; + + Value + fxBand(double x, double m2Q2, double m2mu2, int nf) const override; + double MuDependentTerms( + double x, double m2Q2, double m2mu2, int nf + ) const override; + + private: + ExactCoefficientFunction *muterms_; }; //==========================================================================================// @@ -85,30 +86,31 @@ class AbstractApproximate : public CoefficientFunction { //------------------------------------------------------------------------------------------// class ApproximateCoefficientFunction : public AbstractApproximate { - public: - ApproximateCoefficientFunction( - const int &order, const char &kind, const char &channel, - const bool &NLL = true, const bool &exact_highscale = false, - const bool &revised_approx_highscale = true, - const double &abserr = 1e-3, const double &relerr = 1e-3, - const int &dim = 1000, const int &method_flag = 1, - const int &MCcalls = 25000 - ); - ~ApproximateCoefficientFunction() override; - - Value MuIndependentTermsBand(double x, double m2Q2, int nf) const override; - - private: - ThresholdCoefficientFunction *threshold_; - AsymptoticCoefficientFunction *asymptotic_; - - struct approximation_parameters approximation_; - struct variation_parameters variation_; - - double Approximation( - double x, double m2Q2, double asy, double thresh, double A, double B, - double C, double D - ) const; + public: + ApproximateCoefficientFunction( + const int &order, const char &kind, const char &channel, + const bool &NLL = true, const bool &exact_highscale = false, + const bool &revised_approx_highscale = true, + const double &abserr = 1e-3, const double &relerr = 1e-3, + const int &dim = 1000, const int &method_flag = 1, + const int &MCcalls = 25000 + ); + ~ApproximateCoefficientFunction() override; + + Value + MuIndependentTermsBand(double x, double m2Q2, int nf) const override; + + private: + ThresholdCoefficientFunction *threshold_; + AsymptoticCoefficientFunction *asymptotic_; + + struct approximation_parameters approximation_; + struct variation_parameters variation_; + + double Approximation( + double x, double m2Q2, double asy, double thresh, double A, + double B, double C, double D + ) const; }; //==========================================================================================// @@ -117,35 +119,36 @@ class ApproximateCoefficientFunction : public AbstractApproximate { //------------------------------------------------------------------------------------------// class ApproximateCoefficientFunctionKLMV : public AbstractApproximate { - public: - ApproximateCoefficientFunctionKLMV( - const int &order, const char &kind, const char &channel, - const bool &revised_approx_highscale = true, - const double &abserr = 1e-3, const double &relerr = 1e-3, - const int &dim = 1000, const int &method_flag = 1, - const int &MCcalls = 25000 - ); - ~ApproximateCoefficientFunctionKLMV() override; - - Value MuIndependentTermsBand(double x, double m2Q2, int nf) const override; - - private: - ThresholdCoefficientFunction *threshold_; - HighScaleCoefficientFunction *highscale_; - HighEnergyCoefficientFunction *highenergy_; - - struct klmv_params params_A_; - struct klmv_params params_B_; - - double ApproximationA( - double x, double m2Q2, double he_ll, double he_nll, double hs, - double thr, double thr_const, double gamma, double C - ) const; - double ApproximationB( - double x, double m2Q2, double he_ll, double he_nll, double hs, - double thr, double thr_const, double delta, double D - ) const; - Value ApproximateNLL(double x, double m2Q2) const; + public: + ApproximateCoefficientFunctionKLMV( + const int &order, const char &kind, const char &channel, + const bool &revised_approx_highscale = true, + const double &abserr = 1e-3, const double &relerr = 1e-3, + const int &dim = 1000, const int &method_flag = 1, + const int &MCcalls = 25000 + ); + ~ApproximateCoefficientFunctionKLMV() override; + + Value + MuIndependentTermsBand(double x, double m2Q2, int nf) const override; + + private: + ThresholdCoefficientFunction *threshold_; + HighScaleCoefficientFunction *highscale_; + HighEnergyCoefficientFunction *highenergy_; + + struct klmv_params params_A_; + struct klmv_params params_B_; + + double ApproximationA( + double x, double m2Q2, double he_ll, double he_nll, double hs, + double thr, double thr_const, double gamma, double C + ) const; + double ApproximationB( + double x, double m2Q2, double he_ll, double he_nll, double hs, + double thr, double thr_const, double delta, double D + ) const; + Value ApproximateNLL(double x, double m2Q2) const; }; // //==========================================================================================// diff --git a/inc/adani/AsymptoticCoefficientFunction.h b/inc/adani/AsymptoticCoefficientFunction.h index 4029f38..6332fed 100644 --- a/inc/adani/AsymptoticCoefficientFunction.h +++ b/inc/adani/AsymptoticCoefficientFunction.h @@ -27,24 +27,25 @@ class AsymptoticCoefficientFunction : public AbstractHighEnergyCoefficientFunction { - public: - AsymptoticCoefficientFunction( - const int &order, const char &kind, const char &channel, - const bool &NLL = true, const bool &exact_highscale = false, - const bool &revised_approx_highscale = true - ); - ~AsymptoticCoefficientFunction(); - - double fx(double x, double m2Q2, double m2mu2, int nf) const override; - // double MuIndependentTerms(double x, double m2Q2, int nf) const override ; - // double MuDependentTerms(double x, double m2Q2, double m2mu2, int nf) - // const override ; - - Value fxBand(double x, double m2Q2, double m2mu2, int nf) const override; - - private: - HighScaleCoefficientFunction *highscale_; - PowerTermsCoefficientFunction *powerterms_; + public: + AsymptoticCoefficientFunction( + const int &order, const char &kind, const char &channel, + const bool &NLL = true, const bool &exact_highscale = false, + const bool &revised_approx_highscale = true + ); + ~AsymptoticCoefficientFunction(); + + double fx(double x, double m2Q2, double m2mu2, int nf) const override; + // double MuIndependentTerms(double x, double m2Q2, int nf) const + // override ; double MuDependentTerms(double x, double m2Q2, double + // m2mu2, int nf) const override ; + + Value + fxBand(double x, double m2Q2, double m2mu2, int nf) const override; + + private: + HighScaleCoefficientFunction *highscale_; + PowerTermsCoefficientFunction *powerterms_; }; #endif diff --git a/inc/adani/CoefficientFunction.h b/inc/adani/CoefficientFunction.h index 8cc7728..f25509e 100644 --- a/inc/adani/CoefficientFunction.h +++ b/inc/adani/CoefficientFunction.h @@ -41,40 +41,42 @@ class CoefficientFunction { - public: - CoefficientFunction( - const int &order, const char &kind, const char &channel - ); - CoefficientFunction(CoefficientFunction *coeff) - : CoefficientFunction( - coeff->GetOrder(), coeff->GetKind(), coeff->GetChannel() - ){}; + public: + CoefficientFunction( + const int &order, const char &kind, const char &channel + ); + CoefficientFunction(CoefficientFunction *coeff) + : CoefficientFunction( + coeff->GetOrder(), coeff->GetKind(), coeff->GetChannel() + ){}; - virtual ~CoefficientFunction() = 0; + virtual ~CoefficientFunction() = 0; - virtual double MuIndependentTerms(double x, double m2Q2, int nf) const; - virtual double fx(double x, double m2Q2, double m2mu2, int nf) const; - virtual double - MuDependentTerms(double x, double m2Q2, double m2mu2, int nf) const; - virtual Value fxBand(double x, double m2Q2, double m2mu2, int nf) const = 0; - virtual Value MuIndependentTermsBand(double x, double m2Q2, int nf) const; - virtual Value - MuDependentTermsBand(double x, double m2Q2, double m2mu2, int nf) const; + virtual double MuIndependentTerms(double x, double m2Q2, int nf) const; + virtual double fx(double x, double m2Q2, double m2mu2, int nf) const; + virtual double + MuDependentTerms(double x, double m2Q2, double m2mu2, int nf) const; + virtual Value + fxBand(double x, double m2Q2, double m2mu2, int nf) const = 0; + virtual Value + MuIndependentTermsBand(double x, double m2Q2, int nf) const; + virtual Value + MuDependentTermsBand(double x, double m2Q2, double m2mu2, int nf) const; - // get methods - int GetOrder() const { return order_; }; - char GetKind() const { return kind_; }; - char GetChannel() const { return channel_; }; + // get methods + int GetOrder() const { return order_; }; + char GetKind() const { return kind_; }; + char GetChannel() const { return channel_; }; - // set methods - void SetOrder(const int &order); - void SetKind(const char &kind); - void SetChannel(const char &channel); + // set methods + void SetOrder(const int &order); + void SetKind(const char &kind); + void SetChannel(const char &channel); - private: - int order_; // order = 1, 2, or 3 - char kind_; // kind_ = '2' for F2 and 'L' for FL - char channel_; // channel_ = 'g' for Cg and 'q' for Cq + private: + int order_; // order = 1, 2, or 3 + char kind_; // kind_ = '2' for F2 and 'L' for FL + char channel_; // channel_ = 'g' for Cg and 'q' for Cq }; #endif diff --git a/inc/adani/Convolution.h b/inc/adani/Convolution.h index 4541912..3c3df80 100644 --- a/inc/adani/Convolution.h +++ b/inc/adani/Convolution.h @@ -36,42 +36,42 @@ //------------------------------------------------------------------------------------------// class AbstractConvolution { - public: - AbstractConvolution( - CoefficientFunction *coefffunc, AbstractSplittingFunction *splitfunc, - const double &abserr = 1e-3, const double &relerr = 1e-3, - const int &dim = 1000 - ); - virtual ~AbstractConvolution() = 0; - - // result of the convolution - double Convolute(double x, double m2Q2, int nf) const; - - // integrals of the reular, singular and local parts of the splittings - virtual double RegularPart(double x, double m2Q2, int nf) const = 0; - virtual double SingularPart(double x, double m2Q2, int nf) const = 0; - virtual double LocalPart(double x, double m2Q2, int nf) const = 0; - - // get methods - double GetAbserr() const { return abserr_; }; - double GetRelerr() const { return relerr_; }; - int GetDim() const { return dim_; }; - CoefficientFunction *GetCoeffFunc() const { return coefffunc_; }; - AbstractSplittingFunction *GetSplitFunc() const { return splitfunc_; }; - - // set methods - void SetAbserr(const double &abserr); - void SetRelerr(const double &relerr); - void SetDim(const int &dim); - - private: - double abserr_; - double relerr_; - int dim_; - - protected: - CoefficientFunction *coefffunc_; - AbstractSplittingFunction *splitfunc_; + public: + AbstractConvolution( + CoefficientFunction *coefffunc, + AbstractSplittingFunction *splitfunc, const double &abserr = 1e-3, + const double &relerr = 1e-3, const int &dim = 1000 + ); + virtual ~AbstractConvolution() = 0; + + // result of the convolution + double Convolute(double x, double m2Q2, int nf) const; + + // integrals of the reular, singular and local parts of the splittings + virtual double RegularPart(double x, double m2Q2, int nf) const = 0; + virtual double SingularPart(double x, double m2Q2, int nf) const = 0; + virtual double LocalPart(double x, double m2Q2, int nf) const = 0; + + // get methods + double GetAbserr() const { return abserr_; }; + double GetRelerr() const { return relerr_; }; + int GetDim() const { return dim_; }; + CoefficientFunction *GetCoeffFunc() const { return coefffunc_; }; + AbstractSplittingFunction *GetSplitFunc() const { return splitfunc_; }; + + // set methods + void SetAbserr(const double &abserr); + void SetRelerr(const double &relerr); + void SetDim(const int &dim); + + private: + double abserr_; + double relerr_; + int dim_; + + protected: + CoefficientFunction *coefffunc_; + AbstractSplittingFunction *splitfunc_; }; //==========================================================================================// @@ -79,23 +79,23 @@ class AbstractConvolution { //------------------------------------------------------------------------------------------// class Convolution : public AbstractConvolution { - public: - Convolution( - CoefficientFunction *coefffunc, AbstractSplittingFunction *splitfunc, - const double &abserr = 1e-3, const double &relerr = 1e-3, - const int &dim = 1000 - ) - : AbstractConvolution(coefffunc, splitfunc, abserr, relerr, dim){}; - ~Convolution() override{}; - - double RegularPart(double x, double m2Q2, int nf) const override; - double SingularPart(double x, double m2Q2, int nf) const override; - double LocalPart(double x, double m2Q2, int nf) const override; - - // support function for the integral. it is static in order to be passed to - // gsl - static double regular_integrand(double z, void *p); - static double singular_integrand(double z, void *p); + public: + Convolution( + CoefficientFunction *coefffunc, + AbstractSplittingFunction *splitfunc, const double &abserr = 1e-3, + const double &relerr = 1e-3, const int &dim = 1000 + ) + : AbstractConvolution(coefffunc, splitfunc, abserr, relerr, dim){}; + ~Convolution() override{}; + + double RegularPart(double x, double m2Q2, int nf) const override; + double SingularPart(double x, double m2Q2, int nf) const override; + double LocalPart(double x, double m2Q2, int nf) const override; + + // support function for the integral. it is static in order to be passed + // to gsl + static double regular_integrand(double z, void *p); + static double singular_integrand(double z, void *p); }; //==========================================================================================// @@ -104,28 +104,29 @@ class Convolution : public AbstractConvolution { //------------------------------------------------------------------------------------------// class ConvolutedCoefficientFunction : public CoefficientFunction { - public: - ConvolutedCoefficientFunction( - CoefficientFunction *coefffunc, AbstractSplittingFunction *splitfunc, - const double &abserr = 1e-3, const double &relerr = 1e-3, - const int &dim = 1000 - ); - ~ConvolutedCoefficientFunction() override; - - // get method - Convolution *GetConv() const { return conv_; }; - - double MuIndependentTerms(double x, double m2Q2, int nf) const override; - double MuDependentTerms( - double /*x*/, double /*m2Q2*/, double /*m2mu2*/, int /*nf*/ - ) const override { - return 0.; - }; - double fx(double x, double m2Q2, double m2mu2, int nf) const override; - Value fxBand(double x, double m2Q2, double m2mu2, int nf) const override; - - private: - Convolution *conv_; + public: + ConvolutedCoefficientFunction( + CoefficientFunction *coefffunc, + AbstractSplittingFunction *splitfunc, const double &abserr = 1e-3, + const double &relerr = 1e-3, const int &dim = 1000 + ); + ~ConvolutedCoefficientFunction() override; + + // get method + Convolution *GetConv() const { return conv_; }; + + double MuIndependentTerms(double x, double m2Q2, int nf) const override; + double MuDependentTerms( + double /*x*/, double /*m2Q2*/, double /*m2mu2*/, int /*nf*/ + ) const override { + return 0.; + }; + double fx(double x, double m2Q2, double m2mu2, int nf) const override; + Value + fxBand(double x, double m2Q2, double m2mu2, int nf) const override; + + private: + Convolution *conv_; }; //==========================================================================================// @@ -133,43 +134,43 @@ class ConvolutedCoefficientFunction : public CoefficientFunction { //------------------------------------------------------------------------------------------// class DoubleConvolution : public AbstractConvolution { - public: - DoubleConvolution( - CoefficientFunction *coefffunc, AbstractSplittingFunction *splitfunc, - const double &abserr = 1e-3, const double &relerr = 1e-3, - const int &dim = 1000, const int &method_flag = 1, - const int &MCcalls = 25000 - ); - ~DoubleConvolution() override; - - double RegularPart(double x, double m2Q2, int nf) const override; - double SingularPart(double x, double m2Q2, int nf) const override; - double LocalPart(double x, double m2Q2, int nf) const override; - - // get methods - int GetMethodFlag() const { return method_flag_; }; - int GetMCcalls() const { return MCcalls_; }; - - // set methods - void SetMethodFlag(const int &method_flag); - void SetMCcalls(const int &MCcalls); - - // support function for the integral. it is static in order to be passed to - // gsl - static double regular1_integrand(double z[], size_t /*dim*/, void *p); - static double regular2_integrand(double z[], size_t /*dim*/, void *p); - static double regular3_integrand(double z, void *p); - - static double singular1_integrand(double z[], size_t /*dim*/, void *p); - static double singular2_integrand(double z[], size_t /*dim*/, void *p); - static double singular3_integrand(double z, void *p); - - private: - int method_flag_; - int MCcalls_; - - Convolution *convolution_; - ConvolutedCoefficientFunction *conv_coeff_; + public: + DoubleConvolution( + CoefficientFunction *coefffunc, + AbstractSplittingFunction *splitfunc, const double &abserr = 1e-3, + const double &relerr = 1e-3, const int &dim = 1000, + const int &method_flag = 1, const int &MCcalls = 25000 + ); + ~DoubleConvolution() override; + + double RegularPart(double x, double m2Q2, int nf) const override; + double SingularPart(double x, double m2Q2, int nf) const override; + double LocalPart(double x, double m2Q2, int nf) const override; + + // get methods + int GetMethodFlag() const { return method_flag_; }; + int GetMCcalls() const { return MCcalls_; }; + + // set methods + void SetMethodFlag(const int &method_flag); + void SetMCcalls(const int &MCcalls); + + // support function for the integral. it is static in order to be passed + // to gsl + static double regular1_integrand(double z[], size_t /*dim*/, void *p); + static double regular2_integrand(double z[], size_t /*dim*/, void *p); + static double regular3_integrand(double z, void *p); + + static double singular1_integrand(double z[], size_t /*dim*/, void *p); + static double singular2_integrand(double z[], size_t /*dim*/, void *p); + static double singular3_integrand(double z, void *p); + + private: + int method_flag_; + int MCcalls_; + + Convolution *convolution_; + ConvolutedCoefficientFunction *conv_coeff_; }; //==========================================================================================// @@ -177,10 +178,10 @@ class DoubleConvolution : public AbstractConvolution { //------------------------------------------------------------------------------------------// struct function_params { - double x; - double m2Q2; - int nf; - const AbstractConvolution *conv; + double x; + double m2Q2; + int nf; + const AbstractConvolution *conv; }; #endif diff --git a/inc/adani/ExactCoefficientFunction.h b/inc/adani/ExactCoefficientFunction.h index 15df355..3b305fd 100644 --- a/inc/adani/ExactCoefficientFunction.h +++ b/inc/adani/ExactCoefficientFunction.h @@ -29,134 +29,139 @@ class ExactCoefficientFunction : public CoefficientFunction { - public: - ExactCoefficientFunction( - const int &order, const char &kind, const char &channel, - const double &abserr = 1e-3, const double &relerr = 1e-3, - const int &dim = 1000, const int &method_flag = 1, - const int &MCcalls = 25000 - ); - ~ExactCoefficientFunction() override; - - // get methods - int GetMethodFlag() const { return method_flag_; }; - int GetAbserr() const { return abserr_; }; - int GetRelerr() const { return relerr_; }; - int GetMCcalls() const { return MCcalls_; }; - int GetDim() const { return dim_; }; - - // set methods - void SetMethodFlag(const int &method_flag); - void SetAbserr(const double &abserr); - void SetRelerr(const double &relerr); - void SetMCcalls(const int &MCcalls); - void SetDim(const int &dim); - - double fx(double x, double m2Q2, double m2mu2, int nf) const override; - double MuIndependentTerms(double x, double m2Q2, int nf) const override; - double MuDependentTerms( - double x, double m2Q2, double m2mu2, int nf - ) const override; - - Value fxBand(double x, double m2Q2, double m2mu2, int nf) const override; - - void SetFunctions(); - - private: - int method_flag_; - double abserr_; - double relerr_; - int MCcalls_; - int dim_; - - double (ExactCoefficientFunction::*mu_indep_)(double, double, int) const; - double (ExactCoefficientFunction::*mu_dep_)( - double, double, double, int - ) const; - - std::vector convolutions_lmu1_; - std::vector convolutions_lmu2_; - - ExactCoefficientFunction *gluon_lo_; - ExactCoefficientFunction *gluon_nlo_; - ExactCoefficientFunction *quark_nlo_; - - SplittingFunction *Pgq0_; - SplittingFunction *Pgg0_; - SplittingFunction *Pgq1_; - SplittingFunction *Pqq0_; - ConvolutedSplittingFunctions *Pgg0Pgq0_; - ConvolutedSplittingFunctions *Pqq0Pgq0_; - SplittingFunction *Pgg1_; - SplittingFunction *Pqg0_; - ConvolutedSplittingFunctions *Pgq0Pqg0_; - - Delta *delta_; - - //==========================================================================================// - // Exact massive coefficient functions - // O(as) - //------------------------------------------------------------------------------------------// - - double C2_g1(double x, double m2Q2, int /*nf*/) const; - double CL_g1(double x, double m2Q2, int /*nf*/) const; - - //==========================================================================================// - // Exact massive coefficient functions O(as^2): - // mu-independent terms - //------------------------------------------------------------------------------------------// - - double C2_g20(double x, double m2Q2, int /*nf*/) const; - double CL_g20(double x, double m2Q2, int /*nf*/) const; - double C2_ps20(double x, double m2Q2, int /*nf*/) const; - double CL_ps20(double x, double m2Q2, int /*nf*/) const; - - //==========================================================================================// - // Exact massive coefficient functions O(as^2): terms - // proportional to log(mu^2/m^2) - //------------------------------------------------------------------------------------------// - - double C_g21(double x, double m2Q2) const; - double C_ps21(double x, double m2Q2) const; - - //==========================================================================================// - // Exact massive coefficient functions O(as^2): - // mu-dependent terms - //------------------------------------------------------------------------------------------// - - double C_ps2_MuDep(double x, double m2Q2, double m2mu2, int /*nf*/) const; - double C_g2_MuDep(double x, double m2Q2, double m2mu2, int /*nf*/) const; - - //==========================================================================================// - // Exact massive coefficient functions O(as^3): terms - // proportional to log(mu^2/m^2) - //------------------------------------------------------------------------------------------// - - double C_ps31(double x, double m2Q2, int nf) const; - double C_g31(double x, double m2Q2, int nf) const; - - //==========================================================================================// - // Exact massive coefficient functions O(as^3): terms - // proportional to log(mu^2/m^2)^2 - //------------------------------------------------------------------------------------------// - - double C_ps32(double x, double m2Q2, int nf) const; - double C_g32(double x, double m2Q2, int nf) const; - - //==========================================================================================// - // Exact massive coefficient functions O(as^3): - // mu-dependent terms - //------------------------------------------------------------------------------------------// - - double C_ps3_MuDep(double x, double m2Q2, double m2mu2, int nf) const; - double C_g3_MuDep(double x, double m2Q2, double m2mu2, int nf) const; - - double - ZeroFunction(double /*x*/, double /*m2Q2*/, double /*m2mu2*/, int /*nf*/) - const { - return 0.; - }; - double WarningFunc(double /*x*/, double /*m2Q2*/, int /*nf*/) const; + public: + ExactCoefficientFunction( + const int &order, const char &kind, const char &channel, + const double &abserr = 1e-3, const double &relerr = 1e-3, + const int &dim = 1000, const int &method_flag = 1, + const int &MCcalls = 25000 + ); + ~ExactCoefficientFunction() override; + + // get methods + int GetMethodFlag() const { return method_flag_; }; + int GetAbserr() const { return abserr_; }; + int GetRelerr() const { return relerr_; }; + int GetMCcalls() const { return MCcalls_; }; + int GetDim() const { return dim_; }; + + // set methods + void SetMethodFlag(const int &method_flag); + void SetAbserr(const double &abserr); + void SetRelerr(const double &relerr); + void SetMCcalls(const int &MCcalls); + void SetDim(const int &dim); + + double fx(double x, double m2Q2, double m2mu2, int nf) const override; + double MuIndependentTerms(double x, double m2Q2, int nf) const override; + double MuDependentTerms( + double x, double m2Q2, double m2mu2, int nf + ) const override; + + Value + fxBand(double x, double m2Q2, double m2mu2, int nf) const override; + + void SetFunctions(); + + private: + int method_flag_; + double abserr_; + double relerr_; + int MCcalls_; + int dim_; + + double (ExactCoefficientFunction::*mu_indep_)( + double, double, int + ) const; + double (ExactCoefficientFunction::*mu_dep_)( + double, double, double, int + ) const; + + std::vector convolutions_lmu1_; + std::vector convolutions_lmu2_; + + ExactCoefficientFunction *gluon_lo_; + ExactCoefficientFunction *gluon_nlo_; + ExactCoefficientFunction *quark_nlo_; + + SplittingFunction *Pgq0_; + SplittingFunction *Pgg0_; + SplittingFunction *Pgq1_; + SplittingFunction *Pqq0_; + ConvolutedSplittingFunctions *Pgg0Pgq0_; + ConvolutedSplittingFunctions *Pqq0Pgq0_; + SplittingFunction *Pgg1_; + SplittingFunction *Pqg0_; + ConvolutedSplittingFunctions *Pgq0Pqg0_; + + Delta *delta_; + + //==========================================================================================// + // Exact massive coefficient functions + // O(as) + //------------------------------------------------------------------------------------------// + + double C2_g1(double x, double m2Q2, int /*nf*/) const; + double CL_g1(double x, double m2Q2, int /*nf*/) const; + + //==========================================================================================// + // Exact massive coefficient functions O(as^2): + // mu-independent terms + //------------------------------------------------------------------------------------------// + + double C2_g20(double x, double m2Q2, int /*nf*/) const; + double CL_g20(double x, double m2Q2, int /*nf*/) const; + double C2_ps20(double x, double m2Q2, int /*nf*/) const; + double CL_ps20(double x, double m2Q2, int /*nf*/) const; + + //==========================================================================================// + // Exact massive coefficient functions O(as^2): terms + // proportional to log(mu^2/m^2) + //------------------------------------------------------------------------------------------// + + double C_g21(double x, double m2Q2) const; + double C_ps21(double x, double m2Q2) const; + + //==========================================================================================// + // Exact massive coefficient functions O(as^2): + // mu-dependent terms + //------------------------------------------------------------------------------------------// + + double + C_ps2_MuDep(double x, double m2Q2, double m2mu2, int /*nf*/) const; + double + C_g2_MuDep(double x, double m2Q2, double m2mu2, int /*nf*/) const; + + //==========================================================================================// + // Exact massive coefficient functions O(as^3): terms + // proportional to log(mu^2/m^2) + //------------------------------------------------------------------------------------------// + + double C_ps31(double x, double m2Q2, int nf) const; + double C_g31(double x, double m2Q2, int nf) const; + + //==========================================================================================// + // Exact massive coefficient functions O(as^3): terms + // proportional to log(mu^2/m^2)^2 + //------------------------------------------------------------------------------------------// + + double C_ps32(double x, double m2Q2, int nf) const; + double C_g32(double x, double m2Q2, int nf) const; + + //==========================================================================================// + // Exact massive coefficient functions O(as^3): + // mu-dependent terms + //------------------------------------------------------------------------------------------// + + double C_ps3_MuDep(double x, double m2Q2, double m2mu2, int nf) const; + double C_g3_MuDep(double x, double m2Q2, double m2mu2, int nf) const; + + double ZeroFunction( + double /*x*/, double /*m2Q2*/, double /*m2mu2*/, int /*nf*/ + ) const { + return 0.; + }; + double WarningFunc(double /*x*/, double /*m2Q2*/, int /*nf*/) const; }; /// @cond UNNECESSARY diff --git a/inc/adani/HighEnergyCoefficientFunction.h b/inc/adani/HighEnergyCoefficientFunction.h index 3ac15eb..743d962 100644 --- a/inc/adani/HighEnergyCoefficientFunction.h +++ b/inc/adani/HighEnergyCoefficientFunction.h @@ -34,30 +34,30 @@ //------------------------------------------------------------------------------------------// class AbstractHighEnergyCoefficientFunction : public CoefficientFunction { - public: - AbstractHighEnergyCoefficientFunction( - const int &order, const char &kind, const char &channel, - const bool &NLL = true - ); - ~AbstractHighEnergyCoefficientFunction() override{}; - - // get methods - bool GetNLL() const { return NLL_; }; - - // set methods - void SetNLL(const bool &NLL) { NLL_ = NLL; }; - - private: - bool NLL_; - - //==========================================================================================// - // Color factors O(as^3) - //------------------------------------------------------------------------------------------// - - protected: - double a_10(int nf) const; - double a_11() const; - double a_21(int nf) const; + public: + AbstractHighEnergyCoefficientFunction( + const int &order, const char &kind, const char &channel, + const bool &NLL = true + ); + ~AbstractHighEnergyCoefficientFunction() override{}; + + // get methods + bool GetNLL() const { return NLL_; }; + + // set methods + void SetNLL(const bool &NLL) { NLL_ = NLL; }; + + private: + bool NLL_; + + //==========================================================================================// + // Color factors O(as^3) + //------------------------------------------------------------------------------------------// + + protected: + double a_10(int nf) const; + double a_11() const; + double a_21(int nf) const; }; //==========================================================================================// @@ -67,74 +67,82 @@ class AbstractHighEnergyCoefficientFunction : public CoefficientFunction { class HighEnergyCoefficientFunction : public AbstractHighEnergyCoefficientFunction { - public: - HighEnergyCoefficientFunction( - const int &order, const char &kind, const char &channel, - const bool &NLL = true - ); - ~HighEnergyCoefficientFunction() override{}; - - Value fxBand(double x, double m2Q2, double m2mu2, int nf) const override; - - void SetFunctions(); - - private: - double (HighEnergyCoefficientFunction::*LL_)(double, double, double) const; - Value (HighEnergyCoefficientFunction::*NLL_)( - double, double, double, int - ) const; - - //==========================================================================================// - // High energy coefficient functions - // O(as^2) - //------------------------------------------------------------------------------------------// - - double C2_g2_highenergy(double x, double m2Q2, double m2mu2) const; - double C2_ps2_highenergy(double x, double m2Q2, double m2mu2) const; - double CL_g2_highenergy(double x, double m2Q2, double m2mu2) const; - double CL_ps2_highenergy(double x, double m2Q2, double m2mu2) const; - - //==========================================================================================// - // High energy coefficient functions - // O(as^3) at leading log - //------------------------------------------------------------------------------------------// - - double C2_g3_highenergyLL(double x, double m2Q2, double m2mu2) const; - double CL_g3_highenergyLL(double x, double m2Q2, double m2mu2) const; - double C2_ps3_highenergyLL(double x, double m2Q2, double m2mu2) const; - double CL_ps3_highenergyLL(double x, double m2Q2, double m2mu2) const; - - Value - C2_g3_highenergyNLL(double x, double m2Q2, double m2mu2, int nf) const; - Value - CL_g3_highenergyNLL(double x, double m2Q2, double m2mu2, int nf) const; - Value - C2_ps3_highenergyNLL(double x, double m2Q2, double m2mu2, int nf) const; - Value - CL_ps3_highenergyNLL(double x, double m2Q2, double m2mu2, int nf) const; - - //==========================================================================================// - // High energy coefficient functions - // O(as^3) - //------------------------------------------------------------------------------------------// - - Value C2_g3_highenergy(double x, double m2Q2, double m2mu2, int nf) const; - Value C2_ps3_highenergy(double x, double m2Q2, double m2mu2, int nf) const; - Value CL_g3_highenergy(double x, double m2Q2, double m2mu2, int nf) const; - Value CL_ps3_highenergy(double x, double m2Q2, double m2mu2, int nf) const; - - //==========================================================================================// - // Function needed to make LL_ and NLL_ point to a zero function - //------------------------------------------------------------------------------------------// - - double ZeroFunction(double /*x*/, double /*m2Q2*/, double /*m2mu2*/) const { - return 0.; - }; - Value ZeroFunctionBand( - double /*x*/, double /*m2Q2*/, double /*m2mu2*/, int /*nf*/ - ) const { - return Value(0.); - }; + public: + HighEnergyCoefficientFunction( + const int &order, const char &kind, const char &channel, + const bool &NLL = true + ); + ~HighEnergyCoefficientFunction() override{}; + + Value + fxBand(double x, double m2Q2, double m2mu2, int nf) const override; + + void SetFunctions(); + + private: + double (HighEnergyCoefficientFunction::*LL_)( + double, double, double + ) const; + Value (HighEnergyCoefficientFunction::*NLL_)( + double, double, double, int + ) const; + + //==========================================================================================// + // High energy coefficient functions + // O(as^2) + //------------------------------------------------------------------------------------------// + + double C2_g2_highenergy(double x, double m2Q2, double m2mu2) const; + double C2_ps2_highenergy(double x, double m2Q2, double m2mu2) const; + double CL_g2_highenergy(double x, double m2Q2, double m2mu2) const; + double CL_ps2_highenergy(double x, double m2Q2, double m2mu2) const; + + //==========================================================================================// + // High energy coefficient functions + // O(as^3) at leading log + //------------------------------------------------------------------------------------------// + + double C2_g3_highenergyLL(double x, double m2Q2, double m2mu2) const; + double CL_g3_highenergyLL(double x, double m2Q2, double m2mu2) const; + double C2_ps3_highenergyLL(double x, double m2Q2, double m2mu2) const; + double CL_ps3_highenergyLL(double x, double m2Q2, double m2mu2) const; + + Value + C2_g3_highenergyNLL(double x, double m2Q2, double m2mu2, int nf) const; + Value + CL_g3_highenergyNLL(double x, double m2Q2, double m2mu2, int nf) const; + Value + C2_ps3_highenergyNLL(double x, double m2Q2, double m2mu2, int nf) const; + Value + CL_ps3_highenergyNLL(double x, double m2Q2, double m2mu2, int nf) const; + + //==========================================================================================// + // High energy coefficient functions + // O(as^3) + //------------------------------------------------------------------------------------------// + + Value + C2_g3_highenergy(double x, double m2Q2, double m2mu2, int nf) const; + Value + C2_ps3_highenergy(double x, double m2Q2, double m2mu2, int nf) const; + Value + CL_g3_highenergy(double x, double m2Q2, double m2mu2, int nf) const; + Value + CL_ps3_highenergy(double x, double m2Q2, double m2mu2, int nf) const; + + //==========================================================================================// + // Function needed to make LL_ and NLL_ point to a zero function + //------------------------------------------------------------------------------------------// + + double + ZeroFunction(double /*x*/, double /*m2Q2*/, double /*m2mu2*/) const { + return 0.; + }; + Value ZeroFunctionBand( + double /*x*/, double /*m2Q2*/, double /*m2mu2*/, int /*nf*/ + ) const { + return Value(0.); + }; }; //==========================================================================================// @@ -144,96 +152,100 @@ class HighEnergyCoefficientFunction class HighEnergyHighScaleCoefficientFunction : public AbstractHighEnergyCoefficientFunction { - public: - HighEnergyHighScaleCoefficientFunction( - const int &order, const char &kind, const char &channel, - const bool &NLL = true - ); - ~HighEnergyHighScaleCoefficientFunction() override{}; - - Value fxBand(double x, double m2Q2, double m2mu2, int nf) const override; - - void SetFunctions(); - - private: - double (HighEnergyHighScaleCoefficientFunction::*LL_)( - double, double, double - ) const; - Value (HighEnergyHighScaleCoefficientFunction::*NLL_)( - double, double, double, int - ) const; - - //==========================================================================================// - // Q>>m limit of the high energy - // coefficient functions O(as^2) - //------------------------------------------------------------------------------------------// - - double - C2_g2_highenergy_highscale(double x, double m2Q2, double m2mu2) const; - double - C2_ps2_highenergy_highscale(double x, double m2Q2, double m2mu2) const; - double - CL_g2_highenergy_highscale(double x, double m2Q2, double m2mu2) const; - double - CL_ps2_highenergy_highscale(double x, double m2Q2, double m2mu2) const; - - //==========================================================================================// - // Q>>m limit of the high energy coefficient functions - // O(as^3) at leading log - //------------------------------------------------------------------------------------------// - - double - C2_g3_highenergy_highscaleLL(double x, double m2Q2, double m2mu2) const; - double - CL_g3_highenergy_highscaleLL(double x, double m2Q2, double m2mu2) const; - double - C2_ps3_highenergy_highscaleLL(double x, double m2Q2, double m2mu2) const; - double - CL_ps3_highenergy_highscaleLL(double x, double m2Q2, double m2mu2) const; - - Value C2_g3_highenergy_highscaleNLL( - double x, double m2Q2, double m2mu2, int nf - ) const; - Value C2_ps3_highenergy_highscaleNLL( - double x, double m2Q2, double m2mu2, int nf - ) const; - Value CL_g3_highenergy_highscaleNLL( - double x, double m2Q2, double m2mu2, int nf - ) const; - Value CL_ps3_highenergy_highscaleNLL( - double x, double m2Q2, double m2mu2, int nf - ) const; - - //==========================================================================================// - // Q^2>>m^2 limit of the high energy - // coefficient functions O(as^3) - //------------------------------------------------------------------------------------------// - - Value C2_g3_highenergy_highscale( - double x, double m2Q2, double m2mu2, int nf - ) const; - Value C2_ps3_highenergy_highscale( - double x, double m2Q2, double m2mu2, int nf - ) const; - Value CL_g3_highenergy_highscale( - double x, double m2Q2, double m2mu2, int nf - ) const; - Value CL_ps3_highenergy_highscale( - double x, double m2Q2, double m2mu2, int nf - ) const; - - //==========================================================================================// - // Function needed to make LL_ and NLL_ point to a zero function - //------------------------------------------------------------------------------------------// - - double ZeroFunction(double /*x*/, double /*m2Q2*/, double /*m2mu2*/) const { - return 0.; - }; - Value ZeroFunctionBand( - double /*x*/, double /*m2Q2*/, double /*m2mu2*/, int /*nf*/ - ) const { - return Value(0.); - }; + public: + HighEnergyHighScaleCoefficientFunction( + const int &order, const char &kind, const char &channel, + const bool &NLL = true + ); + ~HighEnergyHighScaleCoefficientFunction() override{}; + + Value + fxBand(double x, double m2Q2, double m2mu2, int nf) const override; + + void SetFunctions(); + + private: + double (HighEnergyHighScaleCoefficientFunction::*LL_)( + double, double, double + ) const; + Value (HighEnergyHighScaleCoefficientFunction::*NLL_)( + double, double, double, int + ) const; + + //==========================================================================================// + // Q>>m limit of the high energy + // coefficient functions O(as^2) + //------------------------------------------------------------------------------------------// + + double + C2_g2_highenergy_highscale(double x, double m2Q2, double m2mu2) const; + double + C2_ps2_highenergy_highscale(double x, double m2Q2, double m2mu2) const; + double + CL_g2_highenergy_highscale(double x, double m2Q2, double m2mu2) const; + double + CL_ps2_highenergy_highscale(double x, double m2Q2, double m2mu2) const; + + //==========================================================================================// + // Q>>m limit of the high energy coefficient functions + // O(as^3) at leading log + //------------------------------------------------------------------------------------------// + + double + C2_g3_highenergy_highscaleLL(double x, double m2Q2, double m2mu2) const; + double + CL_g3_highenergy_highscaleLL(double x, double m2Q2, double m2mu2) const; + double C2_ps3_highenergy_highscaleLL( + double x, double m2Q2, double m2mu2 + ) const; + double CL_ps3_highenergy_highscaleLL( + double x, double m2Q2, double m2mu2 + ) const; + + Value C2_g3_highenergy_highscaleNLL( + double x, double m2Q2, double m2mu2, int nf + ) const; + Value C2_ps3_highenergy_highscaleNLL( + double x, double m2Q2, double m2mu2, int nf + ) const; + Value CL_g3_highenergy_highscaleNLL( + double x, double m2Q2, double m2mu2, int nf + ) const; + Value CL_ps3_highenergy_highscaleNLL( + double x, double m2Q2, double m2mu2, int nf + ) const; + + //==========================================================================================// + // Q^2>>m^2 limit of the high energy + // coefficient functions O(as^3) + //------------------------------------------------------------------------------------------// + + Value C2_g3_highenergy_highscale( + double x, double m2Q2, double m2mu2, int nf + ) const; + Value C2_ps3_highenergy_highscale( + double x, double m2Q2, double m2mu2, int nf + ) const; + Value CL_g3_highenergy_highscale( + double x, double m2Q2, double m2mu2, int nf + ) const; + Value CL_ps3_highenergy_highscale( + double x, double m2Q2, double m2mu2, int nf + ) const; + + //==========================================================================================// + // Function needed to make LL_ and NLL_ point to a zero function + //------------------------------------------------------------------------------------------// + + double + ZeroFunction(double /*x*/, double /*m2Q2*/, double /*m2mu2*/) const { + return 0.; + }; + Value ZeroFunctionBand( + double /*x*/, double /*m2Q2*/, double /*m2mu2*/, int /*nf*/ + ) const { + return Value(0.); + }; }; //==========================================================================================// @@ -243,18 +255,19 @@ class HighEnergyHighScaleCoefficientFunction class PowerTermsCoefficientFunction : public AbstractHighEnergyCoefficientFunction { - public: - PowerTermsCoefficientFunction( - const int &order, const char &kind, const char &channel, - const bool &NLL = true - ); - ~PowerTermsCoefficientFunction() override; + public: + PowerTermsCoefficientFunction( + const int &order, const char &kind, const char &channel, + const bool &NLL = true + ); + ~PowerTermsCoefficientFunction() override; - Value fxBand(double x, double m2Q2, double m2mu2, int nf) const override; + Value + fxBand(double x, double m2Q2, double m2mu2, int nf) const override; - private: - HighEnergyCoefficientFunction *highenergy_; - HighEnergyHighScaleCoefficientFunction *highenergyhighscale_; + private: + HighEnergyCoefficientFunction *highenergy_; + HighEnergyHighScaleCoefficientFunction *highenergyhighscale_; }; #endif diff --git a/inc/adani/HighScaleCoefficientFunction.h b/inc/adani/HighScaleCoefficientFunction.h index 78a1b36..03f9af5 100644 --- a/inc/adani/HighScaleCoefficientFunction.h +++ b/inc/adani/HighScaleCoefficientFunction.h @@ -35,96 +35,106 @@ //------------------------------------------------------------------------------------------// class HighScaleCoefficientFunction : public CoefficientFunction { - public: - HighScaleCoefficientFunction( - const int &order, const char &kind, const char &channel, - const bool &exact, const bool &revised_approx - ); - ~HighScaleCoefficientFunction() override; - - double fx(double x, double m2Q2, double m2mu2, int nf) const override; - // double MuIndependentTerms(double x, double m2Q2, int nf) const override ; - // double MuDependentTerms(double x, double m2Q2, double m2mu2, int nf) - // const override ; - Value fxBand(double x, double m2Q2, double m2mu2, int nf) const override; - - void SetFunctions(); - - private: - Value (HighScaleCoefficientFunction::*fx_)( - double, double, double, int - ) const; - - MasslessCoefficientFunction *massless_lo_; - MasslessCoefficientFunction *massless_nlo_; - MasslessCoefficientFunction *massless_nnlo_; - MatchingCondition *a_muindep_; - - //==========================================================================================// - // High scale (Q^2 >> m^2) coefficient - // functions O(as) - //------------------------------------------------------------------------------------------// - - Value - C2_g1_highscale(double x, double m2Q2, double /*m2mu2*/, int /*nf*/) const; - Value - CL_g1_highscale(double x, double /*m2Q2*/, double /*m2mu2*/, int /*nf*/) - const; - - double D2_g1_highscale(double x, double m2Q2) const; - double DL_g1_highscale(double x) const; - - //==========================================================================================// - // High scale (Q^2 >> m^2) coefficient - // functions O(as^2) - //------------------------------------------------------------------------------------------// - - Value - C2_g2_highscale(double x, double m2Q2, double m2mu2, int /*nf*/) const; - Value - C2_ps2_highscale(double z, double m2Q2, double m2mu2, int /*nf*/) const; - - Value - CL_g2_highscale(double x, double m2Q2, double m2mu2, int /*nf*/) const; - Value - CL_ps2_highscale(double x, double m2Q2, double m2mu2, int /*nf*/) const; - - double D2_g2_highscale(double x, double m2Q2, double m2mu2) const; - double D2_ps2_highscale(double x, double m2Q2, double m2mu2) const; - - double DL_g2_highscale(double z, double m2Q2, double m2mu2) const; - double DL_ps2_highscale(double z, double m2Q2, double m2mu2) const; - - //==========================================================================================// - // High scale (Q^2 >> m^2) coefficient - // functions O(as^3) - //------------------------------------------------------------------------------------------// - - Value C2_g3_highscale(double x, double m2Q2, double m2mu2, int nf) const; - Value C2_ps3_highscale(double x, double m2Q2, double m2mu2, int nf) const; - - Value CL_g3_highscale(double x, double m2Q2, double m2mu2, int nf) const; - Value CL_ps3_highscale(double x, double m2Q2, double m2mu2, int nf) const; - - double DL_g3_highscale(double z, double m2Q2, double m2mu2, int nf) const; - double DL_ps3_highscale(double z, double m2Q2, double m2mu2, int nf) const; - - Value D2_g3_highscale(double x, double m2Q2, double m2mu2, int nf) const; - Value D2_ps3_highscale(double x, double m2Q2, double m2mu2, int nf) const; - - //==========================================================================================// - // High scale (Q^2 >> m^2) coefficient functions at - // O(as^3) used in [arXiv:1205.5727] klmv = Kawamura, - // Lo Presti, Moch, Vogt This functions uses the - // approximation for aQqPS30 (that now is exactly known) - // from Eq. ?? of [arXiv:1205.5727]. It is only used for - // benchmark against the plots on the paper - //------------------------------------------------------------------------------------------// - - // double - // C2_ps3_highscale_klmv_paper(double x, double m2Q2, double m2mu2, int nf, - // int v) const ; double D2_ps3_highscale_klmv_paper(double x, double m2Q2, - // double m2mu2, int nf, int v) const ; + public: + HighScaleCoefficientFunction( + const int &order, const char &kind, const char &channel, + const bool &exact, const bool &revised_approx + ); + ~HighScaleCoefficientFunction() override; + + double fx(double x, double m2Q2, double m2mu2, int nf) const override; + // double MuIndependentTerms(double x, double m2Q2, int nf) const + // override ; double MuDependentTerms(double x, double m2Q2, double + // m2mu2, int nf) const override ; + Value + fxBand(double x, double m2Q2, double m2mu2, int nf) const override; + + void SetFunctions(); + + private: + Value (HighScaleCoefficientFunction::*fx_)( + double, double, double, int + ) const; + + MasslessCoefficientFunction *massless_lo_; + MasslessCoefficientFunction *massless_nlo_; + MasslessCoefficientFunction *massless_nnlo_; + MatchingCondition *a_muindep_; + + //==========================================================================================// + // High scale (Q^2 >> m^2) coefficient + // functions O(as) + //------------------------------------------------------------------------------------------// + + Value + C2_g1_highscale(double x, double m2Q2, double /*m2mu2*/, int /*nf*/) + const; + Value + CL_g1_highscale(double x, double /*m2Q2*/, double /*m2mu2*/, int /*nf*/) + const; + + double D2_g1_highscale(double x, double m2Q2) const; + double DL_g1_highscale(double x) const; + + //==========================================================================================// + // High scale (Q^2 >> m^2) coefficient + // functions O(as^2) + //------------------------------------------------------------------------------------------// + + Value + C2_g2_highscale(double x, double m2Q2, double m2mu2, int /*nf*/) const; + Value + C2_ps2_highscale(double z, double m2Q2, double m2mu2, int /*nf*/) const; + + Value + CL_g2_highscale(double x, double m2Q2, double m2mu2, int /*nf*/) const; + Value + CL_ps2_highscale(double x, double m2Q2, double m2mu2, int /*nf*/) const; + + double D2_g2_highscale(double x, double m2Q2, double m2mu2) const; + double D2_ps2_highscale(double x, double m2Q2, double m2mu2) const; + + double DL_g2_highscale(double z, double m2Q2, double m2mu2) const; + double DL_ps2_highscale(double z, double m2Q2, double m2mu2) const; + + //==========================================================================================// + // High scale (Q^2 >> m^2) coefficient + // functions O(as^3) + //------------------------------------------------------------------------------------------// + + Value + C2_g3_highscale(double x, double m2Q2, double m2mu2, int nf) const; + Value + C2_ps3_highscale(double x, double m2Q2, double m2mu2, int nf) const; + + Value + CL_g3_highscale(double x, double m2Q2, double m2mu2, int nf) const; + Value + CL_ps3_highscale(double x, double m2Q2, double m2mu2, int nf) const; + + double + DL_g3_highscale(double z, double m2Q2, double m2mu2, int nf) const; + double + DL_ps3_highscale(double z, double m2Q2, double m2mu2, int nf) const; + + Value + D2_g3_highscale(double x, double m2Q2, double m2mu2, int nf) const; + Value + D2_ps3_highscale(double x, double m2Q2, double m2mu2, int nf) const; + + //==========================================================================================// + // High scale (Q^2 >> m^2) coefficient functions at + // O(as^3) used in [arXiv:1205.5727] klmv = Kawamura, + // Lo Presti, Moch, Vogt This functions uses the + // approximation for aQqPS30 (that now is exactly known) + // from Eq. ?? of [arXiv:1205.5727]. It is only used for + // benchmark against the plots on the paper + //------------------------------------------------------------------------------------------// + + // double + // C2_ps3_highscale_klmv_paper(double x, double m2Q2, double m2mu2, int + // nf, int v) const ; double D2_ps3_highscale_klmv_paper(double x, + // double m2Q2, double m2mu2, int nf, int v) const ; }; #endif diff --git a/inc/adani/HighScaleSplitLogs.h b/inc/adani/HighScaleSplitLogs.h index 82cf1d3..5616244 100644 --- a/inc/adani/HighScaleSplitLogs.h +++ b/inc/adani/HighScaleSplitLogs.h @@ -34,75 +34,76 @@ //------------------------------------------------------------------------------------------// class HighScaleSplitLogs : public CoefficientFunction { - public: - HighScaleSplitLogs( - const int &order, const char &kind, const char &channel, - const bool &exact, const bool &revised_approx - ); - ~HighScaleSplitLogs() override; - - double - fx(double /*x*/, double /*m2Q2*/, double /*m2mu2*/, - int /*nf*/) const override; - double fx(double x, double m2Q2, int nf) const; - - Value fxBand(double /*x*/, double /*m2Q2*/, double /*m2mu2*/, int /*nf*/) - const override; - Value fxBand(double x, double m2Q2, int nf) const; - - // division of the total result in the log terms - double LL(double x, int nf) const { return (this->*LL_)(x, nf); } - double NLL(double x, int nf) const { return (this->*NLL_)(x, nf); } - double N2LL(double x, int nf) const { return (this->*N2LL_)(x, nf); } - Value N3LL(double x, int nf) const { return (this->*N3LL_)(x, nf); } - - void SetFunctions(); - - private: - MasslessCoefficientFunction *massless_lo_; - MasslessCoefficientFunction *massless_; - MatchingCondition *a_muindep_; - - double (HighScaleSplitLogs::*LL_)(double, int) const; - double (HighScaleSplitLogs::*NLL_)(double, int) const; - double (HighScaleSplitLogs::*N2LL_)(double, int) const; - Value (HighScaleSplitLogs::*N3LL_)(double, int) const; - - //==========================================================================================// - // Gluon channel, F2 - //------------------------------------------------------------------------------------------// - - double C2_g3_highscale_LL(double x, int nf) const; - double C2_g3_highscale_NLL(double x, int nf) const; - double C2_g3_highscale_N2LL(double x, int nf) const; - Value C2_g3_highscale_N3LL(double x, int nf) const; - - //==========================================================================================// - // Pure singlet channel, F2 - //------------------------------------------------------------------------------------------// - - double C2_ps3_highscale_LL(double x, int nf) const; - double C2_ps3_highscale_NLL(double x, int nf) const; - double C2_ps3_highscale_N2LL(double x, int nf) const; - Value C2_ps3_highscale_N3LL(double x, int nf) const; - - //==========================================================================================// - // Gluon channel, FL - //------------------------------------------------------------------------------------------// - - double CL_g3_highscale_NLL(double x, int /*nf*/) const; - double CL_g3_highscale_N2LL(double x, int nf) const; - Value CL_g3_highscale_N3LL(double x, int nf) const; - - //==========================================================================================// - // Pure singlet channel, FL - //------------------------------------------------------------------------------------------// - - double CL_ps3_highscale_NLL(double x, int /*nf*/) const; - double CL_ps3_highscale_N2LL(double x, int /*nf*/) const; - Value CL_ps3_highscale_N3LL(double x, int nf) const; - - double ZeroFunction(double /*x*/, int /*nf*/) const { return 0.; }; + public: + HighScaleSplitLogs( + const int &order, const char &kind, const char &channel, + const bool &exact, const bool &revised_approx + ); + ~HighScaleSplitLogs() override; + + double + fx(double /*x*/, double /*m2Q2*/, double /*m2mu2*/, + int /*nf*/) const override; + double fx(double x, double m2Q2, int nf) const; + + Value + fxBand(double /*x*/, double /*m2Q2*/, double /*m2mu2*/, int /*nf*/) + const override; + Value fxBand(double x, double m2Q2, int nf) const; + + // division of the total result in the log terms + double LL(double x, int nf) const { return (this->*LL_)(x, nf); } + double NLL(double x, int nf) const { return (this->*NLL_)(x, nf); } + double N2LL(double x, int nf) const { return (this->*N2LL_)(x, nf); } + Value N3LL(double x, int nf) const { return (this->*N3LL_)(x, nf); } + + void SetFunctions(); + + private: + MasslessCoefficientFunction *massless_lo_; + MasslessCoefficientFunction *massless_; + MatchingCondition *a_muindep_; + + double (HighScaleSplitLogs::*LL_)(double, int) const; + double (HighScaleSplitLogs::*NLL_)(double, int) const; + double (HighScaleSplitLogs::*N2LL_)(double, int) const; + Value (HighScaleSplitLogs::*N3LL_)(double, int) const; + + //==========================================================================================// + // Gluon channel, F2 + //------------------------------------------------------------------------------------------// + + double C2_g3_highscale_LL(double x, int nf) const; + double C2_g3_highscale_NLL(double x, int nf) const; + double C2_g3_highscale_N2LL(double x, int nf) const; + Value C2_g3_highscale_N3LL(double x, int nf) const; + + //==========================================================================================// + // Pure singlet channel, F2 + //------------------------------------------------------------------------------------------// + + double C2_ps3_highscale_LL(double x, int nf) const; + double C2_ps3_highscale_NLL(double x, int nf) const; + double C2_ps3_highscale_N2LL(double x, int nf) const; + Value C2_ps3_highscale_N3LL(double x, int nf) const; + + //==========================================================================================// + // Gluon channel, FL + //------------------------------------------------------------------------------------------// + + double CL_g3_highscale_NLL(double x, int /*nf*/) const; + double CL_g3_highscale_N2LL(double x, int nf) const; + Value CL_g3_highscale_N3LL(double x, int nf) const; + + //==========================================================================================// + // Pure singlet channel, FL + //------------------------------------------------------------------------------------------// + + double CL_ps3_highscale_NLL(double x, int /*nf*/) const; + double CL_ps3_highscale_N2LL(double x, int /*nf*/) const; + Value CL_ps3_highscale_N3LL(double x, int nf) const; + + double ZeroFunction(double /*x*/, int /*nf*/) const { return 0.; }; }; #endif diff --git a/inc/adani/MasslessCoefficientFunction.h b/inc/adani/MasslessCoefficientFunction.h index ad97386..c896f0f 100644 --- a/inc/adani/MasslessCoefficientFunction.h +++ b/inc/adani/MasslessCoefficientFunction.h @@ -27,81 +27,82 @@ class MasslessCoefficientFunction : public CoefficientFunction { - public: - MasslessCoefficientFunction( - const int &order, const char &kind, const char &channel - ); - ~MasslessCoefficientFunction() override{}; - - double fx(double x, double m2Q2, double m2mu2, int nf) const override; - double MuIndependentTerms(double /*x*/, double /*m2Q2*/, int /*nf*/) - const override; - double MuIndependentTerms(double x, int nf) const; - double MuDependentTerms( - double /*x*/, double /*m2Q2*/, double /*m2mu2*/, int /*nf*/ - ) const override; - - Value fxBand(double x, double m2Q2, double m2mu2, int nf) const override; - - void SetFunctions(); - - private: - double (MasslessCoefficientFunction::*mu_indep_)(double, int) const; - - //==========================================================================================// - // Massless coefficient functions - // O(as) - //------------------------------------------------------------------------------------------// - - double C2_g1_massless(double x, int nf) const; - double CL_g1_massless(double x, int nf) const; - - //==========================================================================================// - // Massless coefficient functions - // O(as^2) - //------------------------------------------------------------------------------------------// - - double C2_g2_massless(double x, int nf) const; - double C2_ps2_massless(double x, int nf) const; - double CL_g2_massless(double x, int nf) const; - double CL_ps2_massless(double x, int nf) const; - - //==========================================================================================// - // Massless coefficient functions - // O(as^3) - //------------------------------------------------------------------------------------------// - - double C2_g3_massless(double x, int nf) const; - double C2_ps3_massless(double x, int nf) const; - double CL_g3_massless(double x, int nf) const; - double CL_ps3_massless(double x, int nf) const; - - //==========================================================================================// - // Charge factors - //------------------------------------------------------------------------------------------// - - double fl11g(int nf) const; - double fl11ps(int nf) const; - - //==========================================================================================// - // Massless coefficient functions (parametrization) - // O(as^2) - //------------------------------------------------------------------------------------------// - - // double C2_g2_massless_param(double x, int nf) const; - // double C2_ps2_massless_param(double x, int nf) const; - // double CL_g2_massless_param(double x, int nf) const; - // double CL_ps2_massless_param(double x, int nf) const; - - //==========================================================================================// - // Massless coefficient functions (parametrization) - // O(as^3) - //------------------------------------------------------------------------------------------// - - // double C2_g3_massless_param(double x, int nf) const; - // double C2_ps3_massless_param(double x, int nf) const; - // double CL_g3_massless_param(double x, int nf) const; - // double CL_ps3_massless_param(double x, int nf) const; + public: + MasslessCoefficientFunction( + const int &order, const char &kind, const char &channel + ); + ~MasslessCoefficientFunction() override{}; + + double fx(double x, double m2Q2, double m2mu2, int nf) const override; + double MuIndependentTerms(double /*x*/, double /*m2Q2*/, int /*nf*/) + const override; + double MuIndependentTerms(double x, int nf) const; + double MuDependentTerms( + double /*x*/, double /*m2Q2*/, double /*m2mu2*/, int /*nf*/ + ) const override; + + Value + fxBand(double x, double m2Q2, double m2mu2, int nf) const override; + + void SetFunctions(); + + private: + double (MasslessCoefficientFunction::*mu_indep_)(double, int) const; + + //==========================================================================================// + // Massless coefficient functions + // O(as) + //------------------------------------------------------------------------------------------// + + double C2_g1_massless(double x, int nf) const; + double CL_g1_massless(double x, int nf) const; + + //==========================================================================================// + // Massless coefficient functions + // O(as^2) + //------------------------------------------------------------------------------------------// + + double C2_g2_massless(double x, int nf) const; + double C2_ps2_massless(double x, int nf) const; + double CL_g2_massless(double x, int nf) const; + double CL_ps2_massless(double x, int nf) const; + + //==========================================================================================// + // Massless coefficient functions + // O(as^3) + //------------------------------------------------------------------------------------------// + + double C2_g3_massless(double x, int nf) const; + double C2_ps3_massless(double x, int nf) const; + double CL_g3_massless(double x, int nf) const; + double CL_ps3_massless(double x, int nf) const; + + //==========================================================================================// + // Charge factors + //------------------------------------------------------------------------------------------// + + double fl11g(int nf) const; + double fl11ps(int nf) const; + + //==========================================================================================// + // Massless coefficient functions (parametrization) + // O(as^2) + //------------------------------------------------------------------------------------------// + + // double C2_g2_massless_param(double x, int nf) const; + // double C2_ps2_massless_param(double x, int nf) const; + // double CL_g2_massless_param(double x, int nf) const; + // double CL_ps2_massless_param(double x, int nf) const; + + //==========================================================================================// + // Massless coefficient functions (parametrization) + // O(as^3) + //------------------------------------------------------------------------------------------// + + // double C2_g3_massless_param(double x, int nf) const; + // double C2_ps3_massless_param(double x, int nf) const; + // double CL_g3_massless_param(double x, int nf) const; + // double CL_ps3_massless_param(double x, int nf) const; }; #endif diff --git a/inc/adani/MatchingCondition.h b/inc/adani/MatchingCondition.h index 930e255..ab22a97 100644 --- a/inc/adani/MatchingCondition.h +++ b/inc/adani/MatchingCondition.h @@ -23,42 +23,42 @@ //------------------------------------------------------------------------------------------// class MatchingCondition { - public: - MatchingCondition( - const int &order, const char &entry1, const char &entry2, - const bool &exact, const bool &revised_approx - ); - ~MatchingCondition(){}; + public: + MatchingCondition( + const int &order, const char &entry1, const char &entry2, + const bool &exact, const bool &revised_approx + ); + ~MatchingCondition(){}; - Value MuIndependentNfIndependentTerm(double x) const; + Value MuIndependentNfIndependentTerm(double x) const; - private: - int order_; - char entry1_; - char entry2_; + private: + int order_; + char entry1_; + char entry2_; - bool exact_; - bool revised_approx_; + bool exact_; + bool revised_approx_; - //==========================================================================================// - // Matching conditions O(as) - //------------------------------------------------------------------------------------------// + //==========================================================================================// + // Matching conditions O(as) + //------------------------------------------------------------------------------------------// - // double K_Qg1(double x, double m2mu2) const; - // double K_gg1_local(double m2mu2) const ; + // double K_Qg1(double x, double m2mu2) const; + // double K_gg1_local(double m2mu2) const ; - //==========================================================================================// - // Matching conditions O(as^2) - //------------------------------------------------------------------------------------------// + //==========================================================================================// + // Matching conditions O(as^2) + //------------------------------------------------------------------------------------------// - // double K_Qg2(double x, double m2mu2) const ; + // double K_Qg2(double x, double m2mu2) const ; - //==========================================================================================// - // Matching conditions O(as^3) - //------------------------------------------------------------------------------------------// + //==========================================================================================// + // Matching conditions O(as^3) + //------------------------------------------------------------------------------------------// - double a_Qg_30(double x, int v) const; - double a_Qq_PS_30(double x, int v) const; + double a_Qg_30(double x, int v) const; + double a_Qq_PS_30(double x, int v) const; }; #endif diff --git a/inc/adani/SplittingFunction.h b/inc/adani/SplittingFunction.h index 9303915..d08e3c1 100644 --- a/inc/adani/SplittingFunction.h +++ b/inc/adani/SplittingFunction.h @@ -22,22 +22,24 @@ //------------------------------------------------------------------------------------------// class AbstractSplittingFunction { - public: - AbstractSplittingFunction() { mult_factor_ = 1.; }; - virtual ~AbstractSplittingFunction() = 0; - - // Components of the Splitting Function - virtual double Regular(double x, int nf) const = 0; - virtual double Singular(double x, int nf) const = 0; - virtual double Local(int nf) const = 0; - // Integral from 0 to x of the Singular part - virtual double SingularIntegrated(double x, int nf) const = 0; - - double GetMultFact() const { return mult_factor_; }; - void SetMultFact(const double &mult_factor) { mult_factor_ = mult_factor; }; - - private: - double mult_factor_; + public: + AbstractSplittingFunction() { mult_factor_ = 1.; }; + virtual ~AbstractSplittingFunction() = 0; + + // Components of the Splitting Function + virtual double Regular(double x, int nf) const = 0; + virtual double Singular(double x, int nf) const = 0; + virtual double Local(int nf) const = 0; + // Integral from 0 to x of the Singular part + virtual double SingularIntegrated(double x, int nf) const = 0; + + double GetMultFact() const { return mult_factor_; }; + void SetMultFact(const double &mult_factor) { + mult_factor_ = mult_factor; + }; + + private: + double mult_factor_; }; //==========================================================================================// @@ -45,80 +47,82 @@ class AbstractSplittingFunction { //------------------------------------------------------------------------------------------// class SplittingFunction : public AbstractSplittingFunction { - public: - SplittingFunction(const int &order, const char &entry1, const char &entry2); - ~SplittingFunction() override{}; - - // overloading operators - SplittingFunction operator*(const double &rhs) const; - friend SplittingFunction - operator*(const double &lhs, const SplittingFunction &rhs); - SplittingFunction operator/(const double &rhs) const; - - // Components of the Splitting Function - double Regular(double x, int nf) const override; - double Singular(double x, int nf) const override; - double Local(int nf) const override; - // Integral from 0 to x of the Singular part - double SingularIntegrated(double x, int nf) const override; - - void SetFunctions(); - - // get methods - double GetOrder() const { return order_; }; - char GetEntry1() const { return entry1_; }; - char GetEntry2() const { return entry2_; }; - - private: - int order_; - char entry1_; - char entry2_; - - double (SplittingFunction::*reg_)(double, int) const; - double (SplittingFunction::*sing_)(double, int) const; - double (SplittingFunction::*sing_int_)(double, int) const; - double (SplittingFunction::*loc_)(int) const; - - //==========================================================================================// - // Splitting functions O(as) - // without color factors - //------------------------------------------------------------------------------------------// - - double pgq(double x) const; - double pqg(double x) const; - double pggreg(double x) const; - double pggsing(double x) const; - - //==========================================================================================// - // Splitting functions O(as) - //------------------------------------------------------------------------------------------// - - double Pgq0(double x, int /*nf*/) const; - double Pqg0(double x, int nf) const; - - double Pgg0reg(double x, int /*nf*/) const; - double Pgg0loc(int nf) const; - double Pgg0sing(double x, int /*nf*/) const; - double Pgg0sing_integrated(double x, int /*nf*/) const; - - double Pqq0reg(double x, int /*nf*/) const; - double Pqq0loc(int /*nf*/) const; - double Pqq0sing(double x, int /*nf*/) const; - double Pqq0sing_integrated(double x, int /*nf*/) const; - - //==========================================================================================// - // Splitting functions O(as^2) - //------------------------------------------------------------------------------------------// - - double Pgq1(double x, int nf) const; - - double Pgg1reg(double x, int nf) const; - double Pgg1sing(double x, int nf) const; - double Pgg1sing_integrated(double x, int nf) const; - double Pgg1loc(int nf) const; - - double ZeroFunction_x_nf(double /*x*/, int /*nf*/) const { return 0.; }; - double ZeroFunction_nf(int /*nf*/) const { return 0.; }; + public: + SplittingFunction( + const int &order, const char &entry1, const char &entry2 + ); + ~SplittingFunction() override{}; + + // overloading operators + SplittingFunction operator*(const double &rhs) const; + friend SplittingFunction + operator*(const double &lhs, const SplittingFunction &rhs); + SplittingFunction operator/(const double &rhs) const; + + // Components of the Splitting Function + double Regular(double x, int nf) const override; + double Singular(double x, int nf) const override; + double Local(int nf) const override; + // Integral from 0 to x of the Singular part + double SingularIntegrated(double x, int nf) const override; + + void SetFunctions(); + + // get methods + double GetOrder() const { return order_; }; + char GetEntry1() const { return entry1_; }; + char GetEntry2() const { return entry2_; }; + + private: + int order_; + char entry1_; + char entry2_; + + double (SplittingFunction::*reg_)(double, int) const; + double (SplittingFunction::*sing_)(double, int) const; + double (SplittingFunction::*sing_int_)(double, int) const; + double (SplittingFunction::*loc_)(int) const; + + //==========================================================================================// + // Splitting functions O(as) + // without color factors + //------------------------------------------------------------------------------------------// + + double pgq(double x) const; + double pqg(double x) const; + double pggreg(double x) const; + double pggsing(double x) const; + + //==========================================================================================// + // Splitting functions O(as) + //------------------------------------------------------------------------------------------// + + double Pgq0(double x, int /*nf*/) const; + double Pqg0(double x, int nf) const; + + double Pgg0reg(double x, int /*nf*/) const; + double Pgg0loc(int nf) const; + double Pgg0sing(double x, int /*nf*/) const; + double Pgg0sing_integrated(double x, int /*nf*/) const; + + double Pqq0reg(double x, int /*nf*/) const; + double Pqq0loc(int /*nf*/) const; + double Pqq0sing(double x, int /*nf*/) const; + double Pqq0sing_integrated(double x, int /*nf*/) const; + + //==========================================================================================// + // Splitting functions O(as^2) + //------------------------------------------------------------------------------------------// + + double Pgq1(double x, int nf) const; + + double Pgg1reg(double x, int nf) const; + double Pgg1sing(double x, int nf) const; + double Pgg1sing_integrated(double x, int nf) const; + double Pgg1loc(int nf) const; + + double ZeroFunction_x_nf(double /*x*/, int /*nf*/) const { return 0.; }; + double ZeroFunction_nf(int /*nf*/) const { return 0.; }; }; //==========================================================================================// @@ -127,64 +131,64 @@ class SplittingFunction : public AbstractSplittingFunction { //------------------------------------------------------------------------------------------// class ConvolutedSplittingFunctions : public AbstractSplittingFunction { - public: - ConvolutedSplittingFunctions( - const int &order1, const char &entry1, const char &entry2, - const int &order2, const char &entry3, const char &entry4 - ); - ~ConvolutedSplittingFunctions() override{}; - - // overloading operators - ConvolutedSplittingFunctions operator*(const double &rhs) const; - friend ConvolutedSplittingFunctions - operator*(const double &lhs, const ConvolutedSplittingFunctions &rhs); - ConvolutedSplittingFunctions operator/(const double &rhs) const; - - // Components of the Convoluted Splitting Function - double Regular(double x, int nf) const override; - double Singular(double /*x*/, int /*nf*/) const override { return 0.; }; - double Local(int /*nf*/) const override { return 0.; }; - // Integral from 0 to x of the Singular part - double SingularIntegrated(double /*x*/, int /*nf*/) const override { - return 0.; - }; - - void SetFunctions(); - - // get methods - double GetOrder1() const { return order1_; }; - char GetEntry1() const { return entry1_; }; - char GetEntry2() const { return entry2_; }; - double GetOrder2() const { return order2_; }; - char GetEntry3() const { return entry3_; }; - char GetEntry4() const { return entry4_; }; - - private: - int order1_; - char entry1_; - char entry2_; - int order2_; - char entry3_; - char entry4_; - - double (ConvolutedSplittingFunctions::*reg_)(double, int) const; - - //==========================================================================================// - // Convolution between the splitting functions Pgg0/Pqq0 - // and Pgq0 - //------------------------------------------------------------------------------------------// - - double Pgg0_x_Pgq0(double x, int nf) const; - double Pqq0_x_Pgq0(double x, int /*nf*/) const; - - //==========================================================================================// - // Convolution between the splitting functions Pgq0 and Pqg0 - //------------------------------------------------------------------------------------------// - - double Pgq0_x_Pqg0(double x, int nf) const; - - double ZeroFunction_x_nf(double /*x*/, int /*nf*/) const { return 0.; }; - double ZeroFunction_nf(int /*nf*/) const { return 0.; }; + public: + ConvolutedSplittingFunctions( + const int &order1, const char &entry1, const char &entry2, + const int &order2, const char &entry3, const char &entry4 + ); + ~ConvolutedSplittingFunctions() override{}; + + // overloading operators + ConvolutedSplittingFunctions operator*(const double &rhs) const; + friend ConvolutedSplittingFunctions + operator*(const double &lhs, const ConvolutedSplittingFunctions &rhs); + ConvolutedSplittingFunctions operator/(const double &rhs) const; + + // Components of the Convoluted Splitting Function + double Regular(double x, int nf) const override; + double Singular(double /*x*/, int /*nf*/) const override { return 0.; }; + double Local(int /*nf*/) const override { return 0.; }; + // Integral from 0 to x of the Singular part + double SingularIntegrated(double /*x*/, int /*nf*/) const override { + return 0.; + }; + + void SetFunctions(); + + // get methods + double GetOrder1() const { return order1_; }; + char GetEntry1() const { return entry1_; }; + char GetEntry2() const { return entry2_; }; + double GetOrder2() const { return order2_; }; + char GetEntry3() const { return entry3_; }; + char GetEntry4() const { return entry4_; }; + + private: + int order1_; + char entry1_; + char entry2_; + int order2_; + char entry3_; + char entry4_; + + double (ConvolutedSplittingFunctions::*reg_)(double, int) const; + + //==========================================================================================// + // Convolution between the splitting functions Pgg0/Pqq0 + // and Pgq0 + //------------------------------------------------------------------------------------------// + + double Pgg0_x_Pgq0(double x, int nf) const; + double Pqq0_x_Pgq0(double x, int /*nf*/) const; + + //==========================================================================================// + // Convolution between the splitting functions Pgq0 and Pqg0 + //------------------------------------------------------------------------------------------// + + double Pgq0_x_Pqg0(double x, int nf) const; + + double ZeroFunction_x_nf(double /*x*/, int /*nf*/) const { return 0.; }; + double ZeroFunction_nf(int /*nf*/) const { return 0.; }; }; //==========================================================================================// @@ -192,21 +196,21 @@ class ConvolutedSplittingFunctions : public AbstractSplittingFunction { //------------------------------------------------------------------------------------------// class Delta : public AbstractSplittingFunction { - public: - Delta() : AbstractSplittingFunction(){}; - ~Delta() override{}; + public: + Delta() : AbstractSplittingFunction(){}; + ~Delta() override{}; - double Regular(double /*x*/, int /*nf*/) const override { return 0.; }; - double Singular(double /*x*/, int /*nf*/) const override { return 0.; }; - double Local(int /*nf*/) const override { return GetMultFact() * 1.; }; - double SingularIntegrated(double /*x*/, int /*nf*/) const override { - return 0.; - }; + double Regular(double /*x*/, int /*nf*/) const override { return 0.; }; + double Singular(double /*x*/, int /*nf*/) const override { return 0.; }; + double Local(int /*nf*/) const override { return GetMultFact() * 1.; }; + double SingularIntegrated(double /*x*/, int /*nf*/) const override { + return 0.; + }; - Delta operator*(const double &rhs) const; - friend Delta operator*(const double &lhs, const Delta &rhs); + Delta operator*(const double &rhs) const; + friend Delta operator*(const double &lhs, const Delta &rhs); - Delta operator/(const double &rhs) const; + Delta operator/(const double &rhs) const; }; #endif diff --git a/inc/adani/ThresholdCoefficientFunction.h b/inc/adani/ThresholdCoefficientFunction.h index 17bd7ea..acca976 100644 --- a/inc/adani/ThresholdCoefficientFunction.h +++ b/inc/adani/ThresholdCoefficientFunction.h @@ -27,81 +27,87 @@ class ThresholdCoefficientFunction : public CoefficientFunction { - public: - ThresholdCoefficientFunction( - const int &order, const char &kind, const char &channel - ); - ~ThresholdCoefficientFunction() override; - - double fx(double x, double m2Q2, double m2mu2, int nf) const override; - Value fxBand(double x, double m2Q2, double m2mu2, int nf) const override; - - double BetaIndependentTerms(double x, double m2Q2, double m2mu2) const; - - void SetFunctions(); - - private: - double (ThresholdCoefficientFunction::*fx_)( - double, double, double, int - ) const; - - ExactCoefficientFunction *exactlo_; - - //==========================================================================================// - // Threshold (s -> 4m^2) coefficient - // functions O(as) - //------------------------------------------------------------------------------------------// - - double - C2_g1_threshold(double x, double m2Q2, double /*m2mu2*/, int /*nf*/) const; - - //==========================================================================================// - // Threshold (s -> 4m^2) coefficient - // functions O(as^2) - //------------------------------------------------------------------------------------------// - - double - C2_g2_threshold(double x, double m2Q2, double m2mu2, int /*nf*/) const; - double - CL_g2_threshold(double x, double m2Q2, double m2mu2, int /*nf*/) const; - - double threshold_expansion_g2(double x, double m2Q2, double m2mu2) const; - double threshold_expansion_g2_const(double m2Q2, double m2mu2) const; - - double C2_g2_threshold_const(double x, double m2Q2, double m2mu2) const; - double CL_g2_threshold_const(double x, double m2Q2, double m2mu2) const; - - //==========================================================================================// - // Threshold (s -> 4m^2) coefficient - // functions O(as^3) - //------------------------------------------------------------------------------------------// - - double C2_g3_threshold(double x, double m2Q2, double m2mu2, int nf) const; - double CL_g3_threshold(double x, double m2Q2, double m2mu2, int nf) const; - - double - threshold_expansion_g3(double x, double m2Q2, double m2mu2, int nf) const; - double threshold_expansion_g3_const(double m2Q2, double m2mu2) const; - - double C2_g3_threshold_const(double x, double m2Q2, double m2mu2) const; - double CL_g3_threshold_const(double x, double m2Q2, double m2mu2) const; - - //==========================================================================================// - // Functions needed for the threshold limit. - //------------------------------------------------------------------------------------------// - - double c0(double xi) const; - double c0_bar(double xi) const; - - //==========================================================================================// - // Function needed to make fx_ point to a zero function - //------------------------------------------------------------------------------------------// - - double - ZeroFunction(double /*x*/, double /*m2Q2*/, double /*m2mu2*/, int /*nf*/) - const { - return 0.; - }; + public: + ThresholdCoefficientFunction( + const int &order, const char &kind, const char &channel + ); + ~ThresholdCoefficientFunction() override; + + double fx(double x, double m2Q2, double m2mu2, int nf) const override; + Value + fxBand(double x, double m2Q2, double m2mu2, int nf) const override; + + double BetaIndependentTerms(double x, double m2Q2, double m2mu2) const; + + void SetFunctions(); + + private: + double (ThresholdCoefficientFunction::*fx_)( + double, double, double, int + ) const; + + ExactCoefficientFunction *exactlo_; + + //==========================================================================================// + // Threshold (s -> 4m^2) coefficient + // functions O(as) + //------------------------------------------------------------------------------------------// + + double + C2_g1_threshold(double x, double m2Q2, double /*m2mu2*/, int /*nf*/) + const; + + //==========================================================================================// + // Threshold (s -> 4m^2) coefficient + // functions O(as^2) + //------------------------------------------------------------------------------------------// + + double + C2_g2_threshold(double x, double m2Q2, double m2mu2, int /*nf*/) const; + double + CL_g2_threshold(double x, double m2Q2, double m2mu2, int /*nf*/) const; + + double + threshold_expansion_g2(double x, double m2Q2, double m2mu2) const; + double threshold_expansion_g2_const(double m2Q2, double m2mu2) const; + + double C2_g2_threshold_const(double x, double m2Q2, double m2mu2) const; + double CL_g2_threshold_const(double x, double m2Q2, double m2mu2) const; + + //==========================================================================================// + // Threshold (s -> 4m^2) coefficient + // functions O(as^3) + //------------------------------------------------------------------------------------------// + + double + C2_g3_threshold(double x, double m2Q2, double m2mu2, int nf) const; + double + CL_g3_threshold(double x, double m2Q2, double m2mu2, int nf) const; + + double threshold_expansion_g3( + double x, double m2Q2, double m2mu2, int nf + ) const; + double threshold_expansion_g3_const(double m2Q2, double m2mu2) const; + + double C2_g3_threshold_const(double x, double m2Q2, double m2mu2) const; + double CL_g3_threshold_const(double x, double m2Q2, double m2mu2) const; + + //==========================================================================================// + // Functions needed for the threshold limit. + //------------------------------------------------------------------------------------------// + + double c0(double xi) const; + double c0_bar(double xi) const; + + //==========================================================================================// + // Function needed to make fx_ point to a zero function + //------------------------------------------------------------------------------------------// + + double ZeroFunction( + double /*x*/, double /*m2Q2*/, double /*m2mu2*/, int /*nf*/ + ) const { + return 0.; + }; }; #endif diff --git a/inc/adani/Value.h b/inc/adani/Value.h index 7ebcc78..d1ae12f 100644 --- a/inc/adani/Value.h +++ b/inc/adani/Value.h @@ -27,45 +27,45 @@ using std::vector; //------------------------------------------------------------------------------------------// class Value { - public: - Value(const double ¢ral, const double &higher, const double &lower); - Value(const double ¢ral); - Value(const double &higher, const double &lower); - Value(const Value &value); + public: + Value(const double ¢ral, const double &higher, const double &lower); + Value(const double ¢ral); + Value(const double &higher, const double &lower); + Value(const Value &value); - // get methods - double GetCentral() const { return central_; }; - double GetHigher() const { return higher_; }; - double GetLower() const { return lower_; }; + // get methods + double GetCentral() const { return central_; }; + double GetHigher() const { return higher_; }; + double GetLower() const { return lower_; }; - vector ToVect() const; + vector ToVect() const; - // overload of operators + // overload of operators - Value operator+(const Value &rhs) const; - // Value operator-(const Value& rhs) const; + Value operator+(const Value &rhs) const; + // Value operator-(const Value& rhs) const; - Value operator+(const double &rhs) const; - friend Value operator+(const double &lhs, const Value &rhs); + Value operator+(const double &rhs) const; + friend Value operator+(const double &lhs, const Value &rhs); - Value operator-(const double &rhs) const; + Value operator-(const double &rhs) const; - Value operator*(const double &rhs) const; - friend Value operator*(const double &lhs, const Value &rhs); + Value operator*(const double &rhs) const; + friend Value operator*(const double &lhs, const Value &rhs); - Value operator/(const double &rhs) const; + Value operator/(const double &rhs) const; - const Value &operator=(const Value &rhs); + const Value &operator=(const Value &rhs); - const Value &operator*=(const double &rhs); - const Value &operator/=(const double &rhs); + const Value &operator*=(const double &rhs); + const Value &operator/=(const double &rhs); - friend ostream &operator<<(ostream &os, const Value &rhs); + friend ostream &operator<<(ostream &os, const Value &rhs); - private: - double central_; - double higher_; - double lower_; + private: + double central_; + double higher_; + double lower_; }; -#endif \ No newline at end of file +#endif