Back to home page

EIC code displayed by LXR

 
 

    


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  * @file GPDEvolutionApfel.h
0006  * @author Valerio BERTONE (CEA Saclay)
0007  * @date September 25, 2020
0008  * @version 1.0
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  * @class GPDEvolutionApfel
0024  */
0025 class GPDEvolutionApfel: public GPDEvolutionModule {
0026 
0027 public:
0028 
0029     /**
0030      * Settable parameters
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      * Unique ID to automatically register the class in the registry.
0043      */
0044     static const unsigned int classId;
0045 
0046     /**
0047      * Constructor.
0048      * @param className Name of class.
0049      */
0050     GPDEvolutionApfel(const std::string &className);
0051 
0052     /**
0053      * Destructor.
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 &parameters);
0061     virtual void prepareSubModules(const std::map<std::string, BaseObjectData>& subModulesData);
0062 
0063     // ##### GETTERS & SETTERS #####
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      * Copy constructor.
0093      * @param other Object to be copied.
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 } /* namespace PARTONS */
0121 
0122 #endif /* GPD_EVOLUTION_APFEL_H */