File indexing completed on 2026-06-02 08:51:44
0001 #ifndef DVCS_CFF_STANDARD_H
0002 #define DVCS_CFF_STANDARD_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include <stddef.h>
0013 #include <complex>
0014 #include <map>
0015 #include <string>
0016 #include <vector>
0017
0018 #include "../../../beans/automation/BaseObjectData.h"
0019 #include "DVCSConvolCoeffFunctionModule.h"
0020
0021 namespace NumA {
0022 class FunctionType1D;
0023 }
0024 namespace PARTONS {
0025 class PartonDistribution;
0026 }
0027
0028 namespace PARTONS {
0029
0030
0031
0032
0033
0034
0035
0036
0037 class DVCSCFFStandard: public DVCSConvolCoeffFunctionModule {
0038 public:
0039
0040 static const unsigned int classId;
0041
0042
0043
0044
0045
0046
0047 DVCSCFFStandard(const std::string &className);
0048
0049 virtual DVCSCFFStandard* clone() const;
0050
0051
0052
0053
0054 virtual ~DVCSCFFStandard();
0055
0056 virtual void resolveObjectDependencies();
0057
0058 void prepareSubModules(
0059 const std::map<std::string, BaseObjectData>& subModulesData);
0060
0061
0062
0063
0064
0065
0066 RunningAlphaStrongModule* getRunningAlphaStrongModule() const;
0067
0068
0069
0070
0071 void setRunningAlphaStrongModule(
0072 RunningAlphaStrongModule* pRunningAlphaStrongModule);
0073
0074 protected:
0075
0076
0077
0078
0079 DVCSCFFStandard(const DVCSCFFStandard &other);
0080
0081 double m_logQ2OverMu2;
0082
0083 virtual void initModule();
0084 virtual void isModuleWellConfigured();
0085
0086 virtual std::complex<double> KernelGluonNLOA(double x);
0087 virtual std::complex<double> KernelGluonNLOV(double x);
0088
0089 virtual std::complex<double> KernelQuarkNLOV(double x);
0090 virtual std::complex<double> KernelQuarkNLOA(double x);
0091
0092 virtual void computeSubtractionFunctionsV();
0093 virtual void computeSubtractionFunctionsA();
0094
0095 double m_realPartSubtractQuark;
0096 double m_imaginaryPartSubtractQuark;
0097 double m_realPartSubtractGluon;
0098 double m_imaginaryPartSubtractGluon;
0099 double m_CF;
0100
0101 double m_Zeta;
0102 double m_Q;
0103 double m_alphaSOver2Pi;
0104
0105 virtual std::complex<double> computeUnpolarized();
0106 virtual std::complex<double> computePolarized();
0107
0108 private:
0109
0110 double m_quarkDiagonal;
0111 double m_gluonDiagonal;
0112
0113 size_t m_nf;
0114 RunningAlphaStrongModule *m_pRunningAlphaStrongModule;
0115
0116 virtual void computeDiagonalGPD();
0117
0118 virtual std::complex<double> KernelQuarkV(double x);
0119 virtual std::complex<double> KernelGluonV(double x);
0120
0121 virtual double ConvolReKernelQuark1V(double x, std::vector<double> params);
0122 virtual double ConvolReKernelQuark2V(double x, std::vector<double> params);
0123 virtual double ConvolImKernelQuarkV(double x, std::vector<double> params);
0124 virtual double ConvolReKernelGluon1V(double x, std::vector<double> params);
0125 virtual double ConvolReKernelGluon2V(double x, std::vector<double> params);
0126 virtual double ConvolImKernelGluonV(double x, std::vector<double> params);
0127
0128 virtual std::complex<double> KernelQuarkA(double x);
0129 virtual std::complex<double> KernelGluonA(double x);
0130
0131 virtual double ConvolReKernelQuark1A(double x, std::vector<double> params);
0132 virtual double ConvolReKernelQuark2A(double x, std::vector<double> params);
0133 virtual double ConvolImKernelQuarkA(double x, std::vector<double> params);
0134 virtual double ConvolReKernelGluon1A(double x, std::vector<double> params);
0135 virtual double ConvolReKernelGluon2A(double x, std::vector<double> params);
0136 virtual double ConvolImKernelGluonA(double x, std::vector<double> params);
0137
0138 std::complex<double> computeIntegralsV();
0139 std::complex<double> computeIntegralsA();
0140
0141 double computeSquareChargeAveragedGPD(
0142 const PartonDistribution &partonDistribution);
0143
0144 NumA::FunctionType1D* m_pConvolReKernelQuark1V;
0145 NumA::FunctionType1D* m_pConvolReKernelQuark2V;
0146 NumA::FunctionType1D* m_pConvolImKernelQuarkV;
0147 NumA::FunctionType1D* m_pConvolReKernelGluon1V;
0148 NumA::FunctionType1D* m_pConvolReKernelGluon2V;
0149 NumA::FunctionType1D* m_pConvolImKernelGluonV;
0150 NumA::FunctionType1D* m_pConvolReKernelQuark1A;
0151 NumA::FunctionType1D* m_pConvolReKernelQuark2A;
0152 NumA::FunctionType1D* m_pConvolImKernelQuarkA;
0153 NumA::FunctionType1D* m_pConvolReKernelGluon1A;
0154 NumA::FunctionType1D* m_pConvolReKernelGluon2A;
0155 NumA::FunctionType1D* m_pConvolImKernelGluonA;
0156
0157 void initFunctorsForIntegrations();
0158 };
0159
0160 }
0161
0162 #endif