File indexing completed on 2026-06-02 08:51:44
0001 #ifndef COLLINEAR_DISTRIBUTION_EVOLUTION_APFEL_H
0002 #define COLLINEAR_DISTRIBUTION_EVOLUTION_APFEL_H
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include "CollinearDistributionEvolutionModule.h"
0012 #include "../../../../../include/partons/modules/collinear_distribution/CollinearDistributionModule.h"
0013 #include "../../active_flavors_thresholds/ActiveFlavorsThresholdsModule.h"
0014
0015 #include <apfel/apfelxx.h>
0016
0017 namespace PARTONS {
0018
0019 class RunningAlphaStrongModule;
0020
0021
0022
0023
0024 class CollinearDistributionEvolutionApfel: public CollinearDistributionEvolutionModule {
0025
0026 public:
0027
0028
0029
0030
0031 static const std::string PARAM_NAME_SUBGRID_NODES;
0032 static const std::string PARAM_NAME_SUBGRID_LOWER_BOUNDS;
0033 static const std::string PARAM_NAME_SUBGRID_INTER_DEGREES;
0034
0035
0036
0037
0038 static const unsigned int classId;
0039
0040
0041
0042
0043
0044 CollinearDistributionEvolutionApfel(const std::string &className);
0045
0046
0047
0048
0049 virtual ~CollinearDistributionEvolutionApfel();
0050
0051 virtual CollinearDistributionEvolutionApfel* clone() const;
0052 virtual std::string toString() const;
0053 virtual void resolveObjectDependencies();
0054 virtual void configure(const ElemUtils::Parameters ¶meters);
0055 virtual void prepareSubModules(
0056 const std::map<std::string, BaseObjectData>& subModulesData);
0057
0058
0059
0060 void setSubgridNodes(const std::vector<int>& subgridNodes);
0061 void setSubgridLowerBounds(const std::vector<double>& subgridLowerBounds);
0062 void setSubgridInterDegrees(const std::vector<int>& subgridInterDegrees);
0063
0064 std::vector<int> getSubgridNodes() const;
0065 std::vector<double> getSubgridLowerBounds() const;
0066 std::vector<int> getSubgridInterDegrees() const;
0067
0068 virtual void setRunningAlphaStrongModule(RunningAlphaStrongModule* runningAlphaStrongModule);
0069
0070 protected:
0071
0072
0073
0074
0075
0076 CollinearDistributionEvolutionApfel(
0077 const CollinearDistributionEvolutionApfel &other);
0078
0079 virtual void initModule();
0080 virtual void isModuleWellConfigured();
0081
0082 virtual PartonDistribution compute(
0083 CollinearDistributionModule* pCollinearDistributionModule);
0084
0085 std::function<std::map<int, double>(double const&, double const&)> initialScaleDistributions(
0086 CollinearDistributionModule* pCollinearDistributionModule);
0087
0088 private:
0089
0090 std::vector<int> m_subgridNodes;
0091 std::vector<double> m_subgridLowerBounds;
0092 std::vector<int> m_subgridInterDegrees;
0093 std::shared_ptr<apfel::Grid> m_grid;
0094 std::map<int, apfel::DglapObjects> m_dglapobj;
0095
0096 bool m_setApfelTables;
0097 };
0098
0099 }
0100
0101 #endif