File indexing completed on 2026-06-02 08:51:44
0001 #ifndef GPD_EVOLUTION_APFEL_H
0002 #define GPD_EVOLUTION_APFEL_H
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include "GPDEvolutionModule.h"
0012 #include "../../../../../include/partons/modules/gpd/GPDModule.h"
0013 #include "../../active_flavors_thresholds/ActiveFlavorsThresholdsModule.h"
0014
0015 #include <apfel/apfelxx.h>
0016 #include <functional>
0017
0018 namespace PARTONS {
0019
0020 class RunningAlphaStrongModule;
0021
0022
0023
0024
0025 class GPDEvolutionApfel: public GPDEvolutionModule {
0026
0027 public:
0028
0029
0030
0031
0032 static const std::string PARAM_NAME_SUBGRID_NODES;
0033 static const std::string PARAM_NAME_SUBGRID_LOWER_BOUNDS;
0034 static const std::string PARAM_NAME_SUBGRID_INTER_DEGREES;
0035
0036 static const std::string PARAM_NAME_TAB_NODES;
0037 static const std::string PARAM_NAME_TAB_LOWER_BOUND;
0038 static const std::string PARAM_NAME_TAB_UPPER_BOUND;
0039 static const std::string PARAM_NAME_TAB_INTER_DEGREE;
0040
0041
0042
0043
0044 static const unsigned int classId;
0045
0046
0047
0048
0049
0050 GPDEvolutionApfel(const std::string &className);
0051
0052
0053
0054
0055 virtual ~GPDEvolutionApfel();
0056
0057 virtual GPDEvolutionApfel* clone() const;
0058 virtual std::string toString() const;
0059 virtual void resolveObjectDependencies();
0060 virtual void configure(const ElemUtils::Parameters ¶meters);
0061 virtual void prepareSubModules(const std::map<std::string, BaseObjectData>& subModulesData);
0062
0063
0064
0065 void setSubgridNodes(const std::vector<int>& subgridNodes);
0066 void setSubgridLowerBounds(const std::vector<double>& subgridLowerBounds);
0067 void setSubgridInterDegrees(const std::vector<int>& subgridInterDegrees);
0068
0069 void setTabNodes(const int& tabNodes);
0070 void setTabLowerBound(const double& tabLowerBound);
0071 void setTabUpperBound(const double& tabUpperBound);
0072 void setTabInterDegree(const int& tabInterDegree);
0073
0074 void setPreviousXi(const double& xi_prev);
0075
0076 std::vector<int> getSubgridNodes() const;
0077 std::vector<double> getSubgridLowerBounds() const;
0078 std::vector<int> getSubgridInterDegrees() const;
0079
0080 int getTabNodes() const;
0081 double getTabLowerBound() const;
0082 double getTabUpperBound() const;
0083 int getTabInterDegree() const;
0084 double getPreviousXi() const;
0085 std::shared_ptr<apfel::Grid> getGrid() const;
0086 std::function<double(double const&)> getAlphas() const;
0087 std::shared_ptr<apfel::TabulateObject<apfel::Set<apfel::Distribution>>> getTabulatedGPDs() const;
0088
0089 protected:
0090
0091
0092
0093
0094
0095 GPDEvolutionApfel(const GPDEvolutionApfel &other);
0096
0097 virtual void initModule();
0098 virtual void isModuleWellConfigured();
0099
0100 virtual PartonDistribution compute(GPDModule* pGPDModule, const GPDType::Type &type);
0101
0102 std::function<std::map<int, double>(double const&, double const&)> initialScaleDistributions(GPDModule* pGPDModule);
0103
0104 private:
0105
0106 std::vector<int> m_subgridNodes;
0107 std::vector<double> m_subgridLowerBounds;
0108 std::vector<int> m_subgridInterDegrees;
0109 int m_tabNodes;
0110 double m_tabLowerBound;
0111 double m_tabUpperBound;
0112 int m_tabInterDegree;
0113 double m_xi_prev;
0114
0115 std::shared_ptr<apfel::Grid> m_g;
0116 std::function<double(double const&)> m_as;
0117 std::shared_ptr<apfel::TabulateObject<apfel::Set<apfel::Distribution>>> m_tabulatedGpds;
0118 };
0119
0120 }
0121
0122 #endif