|
|
|||
File indexing completed on 2026-06-02 08:51:48
0001 #ifndef RUNNING_ALPHA_STRONG_MODULE_H 0002 #define RUNNING_ALPHA_STRONG_MODULE_H 0003 0004 /** 0005 * @file ModuleObject.h 0006 * @author Bryan BERTHOU (SPhN / CEA Saclay) 0007 * @date 02 April 2015 0008 * @version 1.0 0009 */ 0010 0011 #include <map> 0012 #include <string> 0013 0014 #include "../../beans/automation/BaseObjectData.h" 0015 #include "../../ModuleObject.h" 0016 0017 namespace PARTONS { 0018 0019 /** 0020 * @class RunningAlphaStrongModule 0021 * 0022 * @brief Abstract class for modules evaluating QCD running coupling constant. 0023 * 0024 * This class acts as an abstract (mother) class for modules used in the evaluation of the QCD running coupling constant. 0025 * The usage of its derivatives is illustrated by the following example: 0026 \code{.cpp} 0027 //load one of RunningAlphaStrongModule modules with the BaseModuleFactory 0028 RunningAlphaStrongModule* pRunningAlphaStrongModule = Partons::getInstance()->getModuleObjectFactory()->newRunningAlphaStrongModule(RunningAlphaStrong::classId); 0029 0030 //evaluate for given scale and print 0031 double muR2 = 10.; 0032 0033 double alpha_s = pRunningAlphaStrongModule->compute(muR2); 0034 0035 Partons::getInstance()->getLoggerManager()->info("example", __func__, ElemUtils::Formatter() << "alpha_s at muR2 = " << muR2 << " GeV2 is " << alpha_s); 0036 \endcode 0037 which gives via Logger: 0038 \code 0039 06-06-2017 02:25:55 [INFO] (example::main) alpha_s at muR2 = 10GeV2 is 0.250786275698706 0040 \endcode 0041 */ 0042 class RunningAlphaStrongModule: public ModuleObject { 0043 0044 public: 0045 0046 /** 0047 * Type of module name used by the automatization. 0048 */ 0049 static const std::string RUNNING_ALPHA_STRONG_MODULE_CLASS_NAME; 0050 0051 /** 0052 * Constructor. 0053 * @param className Name of class. 0054 */ 0055 RunningAlphaStrongModule(const std::string &className); 0056 0057 /** 0058 * Destructor. 0059 */ 0060 virtual ~RunningAlphaStrongModule(); 0061 0062 virtual RunningAlphaStrongModule* clone() const = 0; 0063 virtual std::string toString() const; 0064 virtual void resolveObjectDependencies(); 0065 virtual void configure(const ElemUtils::Parameters ¶meters); 0066 virtual void prepareSubModules(const std::map<std::string, BaseObjectData>& subModulesData); 0067 0068 /** 0069 * Evaluate \f$\alpha_{s}\f$ for a given value of renormalization scale squared. 0070 * @param Mu2 Value of renormalization scale squared. 0071 * @return Evaluated value of \f$\alpha_{s}\f$. 0072 */ 0073 double compute(double Mu2); 0074 0075 //******************************************************** 0076 //*** SETTERS AND GETTERS ******************************** 0077 //******************************************************** 0078 0079 unsigned int getNf() const; 0080 void setNf(unsigned int nf); 0081 0082 protected: 0083 0084 /** 0085 * Copy constructor. 0086 * 0087 * @param other Object to be copied. 0088 */ 0089 RunningAlphaStrongModule(const RunningAlphaStrongModule &other); 0090 0091 /** 0092 * Do a pre-evaluation steps before the evaluation of \f$\alpha_{s}\f$. 0093 * @param Mu2 Value of renormalization scale squared. 0094 */ 0095 void preCompute(const double Mu2); 0096 0097 virtual void initModule(); 0098 virtual void isModuleWellConfigured(); 0099 0100 /** 0101 * Check if previous kinematics is different than the actual one. This allows to avoid a reevaluation of \f$\alpha_{s}\f$ when the renormalization scale is not changed. 0102 * @param MuF2 Value of renormalization scale squared. 0103 * @return True if previous kiematics is different, otherwise false. 0104 */ 0105 bool isPreviousKinematicsDifferent(const double MuF2) const; 0106 0107 /** 0108 * Evaluate \f$\alpha_{s}\f$. The value of renormalization scale should be set at this point by RunningAlphaStrongModule::preCompute() function. 0109 * @return 0110 */ 0111 virtual double compute() = 0; 0112 0113 /** 0114 * Current renormalization scale squared (in \f$GeV^2\f$) 0115 */ 0116 double m_Mu2; 0117 0118 /** 0119 * Current renormalization scale (in \f$GeV\f$) 0120 */ 0121 double m_Mu; 0122 0123 /** 0124 * Number of active quark flavors. 0125 */ 0126 unsigned int m_nf; 0127 0128 /** 0129 * Value of \f$\alpha_{s}\f$ for the current renormalization scale. 0130 */ 0131 double m_alphaS; 0132 }; 0133 0134 } /* namespace PARTONS */ 0135 0136 #endif /* RUNNING_ALPHA_STRONG_MODULE_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|