File indexing completed on 2026-06-02 08:51:45
0001 #ifndef GPD_GK16_NUMERICAL_H
0002 #define GPD_GK16_NUMERICAL_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include <ElementaryUtils/parameters/Parameters.h>
0014 #include <string>
0015 #include <vector>
0016
0017 #include "../MathIntegratorModule.h"
0018 #include "GPDModule.h"
0019
0020
0021
0022
0023 namespace PARTONS {
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046 class GPDGK16Numerical: public GPDModule, public MathIntegratorModule {
0047 public:
0048
0049 static const unsigned int classId;
0050
0051
0052
0053
0054
0055
0056
0057 GPDGK16Numerical(const std::string &className);
0058
0059
0060
0061
0062 virtual ~GPDGK16Numerical();
0063
0064 virtual GPDGK16Numerical* clone() const;
0065
0066 virtual void configure(const ElemUtils::Parameters ¶meters);
0067
0068 virtual std::string toString() const;
0069
0070
0071
0072 protected:
0073
0074
0075
0076
0077
0078
0079
0080 GPDGK16Numerical(const GPDGK16Numerical& other);
0081
0082 virtual void isModuleWellConfigured();
0083 virtual void initModule();
0084
0085
0086
0087 virtual PartonDistribution computeH();
0088 virtual PartonDistribution computeE();
0089 virtual PartonDistribution computeHt();
0090 virtual PartonDistribution computeEt();
0091
0092
0093
0094
0095
0096 void calculateHCoefs();
0097 void calculateECoefs();
0098 void calculateHtCoefs();
0099 void calculateEtCoefs();
0100
0101 double c1, c2, c3, c4, c5, c6, c7, c8;
0102 double b0;
0103 double fL;
0104 double d0;
0105 double alphaP;
0106
0107 private:
0108 double m_Mx;
0109 double kappa_s;
0110
0111 double Et_pole(double x);
0112
0113 double Profile(double N, double alpha, double beta);
0114 double GKPdfAnsatz(double N, double beta, double* coeff);
0115 double GKPdfAnsatz_t(double N, double beta, double* coeff);
0116 double GKPdfAnsatz_tg(double N, double beta, double* coeff);
0117 double GKtDependentsDD(double beta, double alpha);
0118 double GKtDependentuDD_t(double beta, double alpha);
0119 double GKtDependentdDD_t(double beta, double alpha);
0120 double GKtDependentuValDD(double beta, double alpha);
0121 double GKtDependentdValDD(double beta, double alpha);
0122 double GKtDependentgDD(double beta, double alpha);
0123
0124 double GKtDependentHtgDD(double beta, double alpha);
0125
0126
0127 double GKtDependentDD_EuVal(double beta, double alpha);
0128 double GKtDependentDD_EdVal(double beta, double alpha);
0129 double GKtDependentDD_Es(double beta, double alpha);
0130 double GKtDependentDD_Eg(double beta, double alpha);
0131
0132 double GKtDependentDD_EtuVal(double beta, double alpha);
0133 double GKtDependentDD_EtdVal(double beta, double alpha);
0134
0135 void initFunctorsForIntegrations();
0136
0137 double IntegralHdValBp(double x, std::vector<double> Par);
0138 double IntegralHdValBm(double x, std::vector<double> Par);
0139
0140
0141 double IntegralHg(double x, std::vector<double> Par);
0142 double IntegralHs(double x, std::vector<double> Par);
0143 double IntegralHsBm(double x, std::vector<double> Par);
0144
0145 double IntegralHuVal(double x, std::vector<double> Par);
0146 double IntegralHtuVal(double x, std::vector<double> Par);
0147 double IntegralHtdVal(double x, std::vector<double> Par);
0148 double IntegralHuValMx(double x, std::vector<double> Par);
0149 double IntegralHtuValMx(double x, std::vector<double> Par);
0150 double IntegralHtdValMx(double x, std::vector<double> Par);
0151 double IntegralHdVal(double x, std::vector<double> Par);
0152 double IntegralHdValMx(double x, std::vector<double> Par);
0153 double IntegralxLargeHsSea(double x, std::vector<double> Par);
0154 double IntegralxLargeHsSeaMx(double x, std::vector<double> Par);
0155 double IntegralxSmallHsSea(double x, std::vector<double> Par);
0156 double IntegralxSmall1HsSea(double x, std::vector<double> Par);
0157 double IntegralxSmall2HsSea(double x, std::vector<double> Par);
0158 double IntegralxLargeHg(double x, std::vector<double> Par);
0159 double IntegralxLargeHgMx(double x, std::vector<double> Par);
0160 double IntegralxSmall1Hg(double x, std::vector<double> Par);
0161 double IntegralxSmall2Hg(double x, std::vector<double> Par);
0162
0163 double IntegralxLargeHtg(double x, std::vector<double> Par);
0164 double IntegralxLargeHtgMx(double x, std::vector<double> Par);
0165 double IntegralxSmall1Htg(double x, std::vector<double> Par);
0166 double IntegralxSmall2Htg(double x, std::vector<double> Par);
0167
0168
0169 double IntegralEuVal(double x, std::vector<double> Par);
0170 double IntegralEdVal(double x, std::vector<double> Par);
0171 double IntegralEuValMx(double x, std::vector<double> Par);
0172 double IntegralEdValMx(double x, std::vector<double> Par);
0173 double IntegralxLargeEsSea(double x, std::vector<double> Par);
0174 double IntegralxLargeEsSeaMx(double x, std::vector<double> Par);
0175 double IntegralxSmallEsSea(double x, std::vector<double> Par);
0176 double IntegralxSmall1EsSea(double x, std::vector<double> Par);
0177 double IntegralxSmall2EsSea(double x, std::vector<double> Par);
0178
0179 double IntegralxLargeEgSea(double x, std::vector<double> Par);
0180 double IntegralxLargeEgSeaMx(double x, std::vector<double> Par);
0181
0182 double IntegralxSmall1EgSea(double x, std::vector<double> Par);
0183 double IntegralxSmall2EgSea(double x, std::vector<double> Par);
0184
0185 double IntegralEtuVal(double x, std::vector<double> Par);
0186 double IntegralEtdVal(double x, std::vector<double> Par);
0187 double IntegralEtuValMx(double x, std::vector<double> Par);
0188 double IntegralEtdValMx(double x, std::vector<double> Par);
0189
0190 void throwBetaException(const std::string &funcName, double betaValue);
0191
0192 NumA::FunctionType1D* m_pIntegralHuVal;
0193 NumA::FunctionType1D* m_pIntegralHdVal;
0194 NumA::FunctionType1D* m_pIntegralHuValMx;
0195 NumA::FunctionType1D* m_pIntegralHdValMx;
0196 NumA::FunctionType1D* m_pIntegralxLargeHsSea;
0197 NumA::FunctionType1D* m_pIntegralxSmallHsSea;
0198 NumA::FunctionType1D* m_pIntegralxSmall1HsSea;
0199 NumA::FunctionType1D* m_pIntegralxSmall2HsSea;
0200 NumA::FunctionType1D* m_pIntegralxLargeHsSeaMx;
0201 NumA::FunctionType1D* m_pIntegralxLargeHg;
0202 NumA::FunctionType1D* m_pIntegralxSmall1Hg;
0203 NumA::FunctionType1D* m_pIntegralxSmall2Hg;
0204 NumA::FunctionType1D* m_pIntegralxLargeHgMx;
0205
0206 NumA::FunctionType1D* m_pIntegralHtuVal;
0207 NumA::FunctionType1D* m_pIntegralHtdVal;
0208 NumA::FunctionType1D* m_pIntegralHtuValMx;
0209 NumA::FunctionType1D* m_pIntegralHtdValMx;
0210 NumA::FunctionType1D* m_pIntegralxLargeHtg;
0211 NumA::FunctionType1D* m_pIntegralxSmall1Htg;
0212 NumA::FunctionType1D* m_pIntegralxSmall2Htg;
0213 NumA::FunctionType1D* m_pIntegralxLargeHtgMx;
0214
0215 NumA::FunctionType1D* m_pIntegralEuVal;
0216 NumA::FunctionType1D* m_pIntegralEdVal;
0217 NumA::FunctionType1D* m_pIntegralEuValMx;
0218 NumA::FunctionType1D* m_pIntegralEdValMx;
0219 NumA::FunctionType1D* m_pIntegralxLargeEsSea;
0220 NumA::FunctionType1D* m_pIntegralxLargeEsSeaMx;
0221 NumA::FunctionType1D* m_pIntegralxSmallEsSea;
0222 NumA::FunctionType1D* m_pIntegralxSmall1EsSea;
0223 NumA::FunctionType1D* m_pIntegralxSmall2EsSea;
0224 NumA::FunctionType1D* m_pIntegralxLargeEgSea;
0225 NumA::FunctionType1D* m_pIntegralxLargeEgSeaMx;
0226 NumA::FunctionType1D* m_pIntegralxSmall1EgSea;
0227 NumA::FunctionType1D* m_pIntegralxSmall2EgSea;
0228
0229 NumA::FunctionType1D* m_pIntegralEtuVal;
0230 NumA::FunctionType1D* m_pIntegralEtdVal;
0231 NumA::FunctionType1D* m_pIntegralEtuValMx;
0232 NumA::FunctionType1D* m_pIntegralEtdValMx;
0233 };
0234
0235 }
0236
0237 #endif