Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef COLLINEAR_DISTRIBUTION_EVOLUTION_MODULE_H
0002 #define COLLINEAR_DISTRIBUTION_EVOLUTION_MODULE_H
0003 
0004 /**
0005  * @file CollinearDistributionEvolutionModule.h
0006  * @author Valerio BERTONE (CEA Saclay)
0007  * @date July 18, 2020
0008  * @version 1.0
0009  */
0010 
0011 #include "../../../ModuleObject.h"
0012 #include "../../../beans/collinear_distribution/CollinearDistributionType.h"
0013 #include "../../../beans/collinear_distribution/CollinearDistributionKinematic.h"
0014 #include "../../../beans/parton_distribution/PartonDistribution.h"
0015 #include "../../../beans/PerturbativeQCDOrderType.h"
0016 
0017 namespace PARTONS {
0018 
0019 class CollinearDistributionModule;
0020 class RunningAlphaStrongModule;
0021 class ActiveFlavorsThresholdsModule;
0022 
0023 /**
0024  * @class CollinearDistributionEvolutionModule
0025  *
0026  * @brief Abstract class for collinear distribution evolution implementation.
0027  *
0028  * This class acts as an abstract (mother) class for modules implementing collinear distribution evolution.
0029  */
0030 class CollinearDistributionEvolutionModule: public ModuleObject {
0031 
0032 public:
0033 
0034     /**
0035      * Type of module name used by the automatization.
0036      */
0037     static const std::string COLLINEAR_DISTRIBUTION_EVOLUTION_MODULE_CLASS_NAME;
0038 
0039     /**
0040      * Constructor.
0041      * @param className Name of class.
0042      */
0043     CollinearDistributionEvolutionModule(const std::string &className);
0044 
0045     /**
0046      * Destructor.
0047      */
0048     virtual ~CollinearDistributionEvolutionModule();
0049 
0050     virtual CollinearDistributionEvolutionModule* 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 CollinearDistributionKinematic &kinematic, CollinearDistributionModule* pCollinearDistributionModule);
0060 
0061     // ##### GETTERS & SETTERS #####
0062 
0063     void setPertOrder(const PerturbativeQCDOrderType::Type& pertOrder);
0064     void setCollinearDistributionType(CollinearDistributionType::Type type);
0065     void setRunningAlphaStrongModule(RunningAlphaStrongModule* runningAlphaStrongModule);
0066     void setActiveFlavorsModule(ActiveFlavorsThresholdsModule* activeFlavorsModule);
0067 
0068     PerturbativeQCDOrderType::Type getPertOrder() const;
0069     CollinearDistributionType::Type getCollinearDistributionType() const;
0070     RunningAlphaStrongModule* getRunningAlphaStrongModule() const;
0071     ActiveFlavorsThresholdsModule* getActiveFlavorsModule() const;
0072 
0073 protected:
0074 
0075     /**
0076      * Copy constructor.
0077      * @param other Object to be copied.
0078      */
0079     CollinearDistributionEvolutionModule(const CollinearDistributionEvolutionModule &other);
0080 
0081     virtual void initModule();
0082     virtual void isModuleWellConfigured();
0083 
0084     virtual void setKinematics(const CollinearDistributionKinematic& kinematic);
0085     virtual CollinearDistributionKinematic getKinematics() const;
0086 
0087     virtual PartonDistribution compute(CollinearDistributionModule* pCollinearDistributionModule) = 0;
0088 
0089     /**
0090      * Attributes
0091      */
0092     PerturbativeQCDOrderType::Type m_pertOrder; ///< pQCD order assumed in the calculation.
0093     CollinearDistributionType::Type m_type;  ///< collinear distribution type.
0094 
0095     RunningAlphaStrongModule* m_pRunningAlphaStrongModule; ///< Pointer to RunningAlphaStrongModule object being used.
0096     ActiveFlavorsThresholdsModule* m_pActiveFlavorsModule; ///< Pointer to ActiveFlavorsThresholdsModule object being used.
0097 
0098     /**
0099      * Kinematics
0100      */
0101     double m_x;     ///< Longitudinal momentum
0102     double m_MuF2;  ///< Factorization scale squared (in \f$GeV^{2}\f$).
0103     double m_MuR2;  ///< Renormalization scale squared (in \f$GeV^{2}\f$).
0104 };
0105 
0106 } /* namespace PARTONS */
0107 
0108 #endif /* COLLINEAR_DISTRIBUTION_EVOLUTION_MODULE_H */