Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-06-02 08:51:44

0001 #ifndef GPD_EVOLUTION_MODULE_H
0002 #define GPD_EVOLUTION_MODULE_H
0003 
0004 /**
0005  * @file GPDEvolutionModule.h
0006  * @author Valerio BERTONE (CEA Saclay)
0007  * @date Sptember 17, 2020
0008  * @version 1.0
0009  */
0010 
0011 #include "../../../ModuleObject.h"
0012 #include "../../../beans/gpd/GPDType.h"
0013 #include "../../../beans/gpd/GPDKinematic.h"
0014 #include "../../../beans/parton_distribution/PartonDistribution.h"
0015 #include "../../../beans/PerturbativeQCDOrderType.h"
0016 
0017 namespace PARTONS {
0018 
0019 class GPDModule;
0020 class RunningAlphaStrongModule;
0021 class ActiveFlavorsThresholdsModule;
0022 
0023 /**
0024  * @class GPDEvolutionModule
0025  *
0026  * @brief Abstract class for GPD evolution implementation.
0027  *
0028  * This class acts as an abstract (mother) class for modules implementing GPD evolution.
0029  */
0030 class GPDEvolutionModule: public ModuleObject {
0031 
0032 public:
0033 
0034     /**
0035      * Type of module name used by the automatization.
0036      */
0037     static const std::string GPD_EVOLUTION_MODULE_CLASS_NAME;
0038 
0039     /**
0040      * Constructor.
0041      * @param className Name of class.
0042      */
0043     GPDEvolutionModule(const std::string &className);
0044 
0045     /**
0046      * Destructor.
0047      */
0048     virtual ~GPDEvolutionModule();
0049 
0050     virtual GPDEvolutionModule* clone() const = 0;
0051     virtual std::string toString() const;
0052     virtual void resolveObjectDependencies();
0053     virtual void configure(const ElemUtils::Parameters &parameters);
0054     virtual void prepareSubModules(const std::map<std::string, BaseObjectData>& subModulesData);
0055 
0056     /**
0057      * Evaluate PartonDistribution.
0058      */
0059     PartonDistribution compute(const GPDKinematic &kinematic, GPDModule* pGPDModule, const GPDType::Type &type);
0060 
0061     // ##### GETTERS & SETTERS #####
0062 
0063     void setMuF2_ref(const double& MuF2_ref);
0064     void setPertOrder(const PerturbativeQCDOrderType::Type& pertOrder);
0065     void setGPDType(GPDType::Type type);
0066     void setRunningAlphaStrongModule(RunningAlphaStrongModule* runningAlphaStrongModule);
0067     void setActiveFlavorsModule(ActiveFlavorsThresholdsModule* activeFlavorsModule);
0068 
0069     double getMuF2_ref() const;
0070     double getMuF_ref() const;
0071     PerturbativeQCDOrderType::Type getPertOrder() const;
0072     GPDType::Type getGPDType() const;
0073     RunningAlphaStrongModule* getRunningAlphaStrongModule() const;
0074     ActiveFlavorsThresholdsModule* getActiveFlavorsModule() const;
0075 
0076 protected:
0077 
0078     /**
0079      * Copy constructor.
0080      * @param other Object to be copied.
0081      */
0082     GPDEvolutionModule(const GPDEvolutionModule &other);
0083 
0084     virtual void initModule();
0085     virtual void isModuleWellConfigured();
0086 
0087     virtual void setKinematics(const GPDKinematic& kinematic);
0088     virtual GPDKinematic getKinematics() const;
0089 
0090     virtual PartonDistribution compute(GPDModule* pGPDModule, const GPDType::Type &type) = 0;
0091 
0092     /**
0093      * Attributes
0094      */
0095     double m_MuF2_ref;                          ///< Reference factorization scale squared (in \f$GeV^{2}\f$).
0096     PerturbativeQCDOrderType::Type m_pertOrder; ///< pQCD order assumed in the calculation.
0097     GPDType::Type m_type;                       ///< GPD distribution type.
0098 
0099     RunningAlphaStrongModule* m_pRunningAlphaStrongModule; ///< Pointer to RunningAlphaStrongModule object being used.
0100     ActiveFlavorsThresholdsModule* m_pActiveFlavorsModule; ///< Pointer to ActiveFlavorsThresholdsModule object being used.
0101 
0102     /**
0103      * Kinematics
0104      */
0105     double m_x;     ///< Longitudinal momentum
0106     double m_xi;    ///< Skewness variable.
0107     double m_t;     ///< Four-momentum transfer squared of hadron target (in \f$GeV^{2}\f$).
0108     double m_MuF2;  ///< Factorization scale squared (in \f$GeV^{2}\f$).
0109     double m_MuR2;  ///< Renormalization scale squared (in \f$GeV^{2}\f$).
0110 };
0111 
0112 } /* namespace PARTONS */
0113 
0114 #endif /* GPD_EVOLUTION_MODULE_H */