|
|
|||
File indexing completed on 2026-06-02 08:51:45
0001 #ifndef GPD_MMS13_H 0002 #define GPD_MMS13_H 0003 0004 /** 0005 * @file GPDMMS13.h 0006 * @author Pawel Sznajder (IPNO) 0007 * @date March 29, 2015 0008 * @version 1.0 0009 */ 0010 0011 #include <ElementaryUtils/parameters/Parameters.h> 0012 #include <string> 0013 #include <vector> 0014 0015 #include "../../beans/QuarkFlavor.h" 0016 #include "../MathIntegratorModule.h" 0017 #include "GPDModule.h" 0018 0019 namespace PARTONS { 0020 0021 /** 0022 * @class GPDMMS13 0023 * 0024 * Mezrag-Moutarde-SabatiĆ© GPD model. For the reference, see arxiv:1304.7645 @cite Mezrag:2013mya. 0025 * 0026 * Available GPD types: H, E. 0027 */ 0028 class GPDMMS13: public GPDModule, public MathIntegratorModule { 0029 0030 public: 0031 0032 static const std::string PARAMETER_NAME_MMS13MODEL_NHpE; ///< Name of parameter to set #m_NHpE via configure() 0033 static const std::string PARAMETER_NAME_MMS13MODEL_NE; ///< Name of parameter to set #m_NE via configure() 0034 static const std::string PARAMETER_NAME_MMS13MODEL_C; ///< Name of parameter to set #m_C via configure() 0035 0036 static const unsigned int classId; ///< ID assigned by BaseObjectRegistry 0037 0038 /** 0039 * Constructor. 0040 * See BaseObject::BaseObject and ModuleObject::ModuleObject for more details. 0041 * 0042 * @param className name of child class. 0043 */ 0044 GPDMMS13(const std::string &className); 0045 0046 /** 0047 * Default destructor. 0048 */ 0049 virtual ~GPDMMS13(); 0050 virtual GPDMMS13* clone() const; 0051 virtual void resolveObjectDependencies(); 0052 virtual void configure(const ElemUtils::Parameters ¶meters); 0053 virtual std::string toString() const; 0054 0055 /** D term function. 0056 @param zeta Variable equals x/xi. 0057 */ 0058 double DTerm(double zeta) const; 0059 0060 protected: 0061 0062 /** Copy constructor. 0063 @param other Object to be copied. 0064 */ 0065 GPDMMS13(const GPDMMS13& other); 0066 0067 virtual void isModuleWellConfigured(); 0068 virtual void initModule(); 0069 0070 virtual PartonDistribution computeH(); 0071 virtual PartonDistribution computeE(); 0072 0073 private: 0074 0075 int m_NHpE; ///< %Double distribution profile function parameter for H_DD + E_DD. 0076 int m_NE; ///< %Double distribution profile function parameter for E+. 0077 double m_C; ///< Scaling parameter for D term. 0078 0079 /** Forward limit of GPD H. 0080 @param beta %Double distribution parameter. 0081 @param flavor Quark flavor. 0082 */ 0083 double forwardHval(double beta, QuarkFlavor::Type flavor) const; 0084 0085 /** Forward limit of GPD E. 0086 @param beta %Double distribution parameter. 0087 @param flavor Quark flavor. 0088 */ 0089 double forwardEval(double beta, QuarkFlavor::Type flavor) const; 0090 0091 /** Functional form of forward limit of GPD E. 0092 @param beta %Double distribution parameter. 0093 @param kappa Anomalous magnetic moment. 0094 @param nu power for (1 - beta)^nu term. 0095 @param mu power for beta^-mu term. 0096 */ 0097 double forwardEvalFunction(double beta, double kappa, double nu, 0098 double mu) const; 0099 0100 /** %Double distribution profile function. 0101 @param beta, alpha %Double distribution variables. 0102 @param N Profile parameter. 0103 */ 0104 double profileFunction(double beta, double alpha, int N); 0105 0106 /** H_DD + E_DD component. 0107 @param x GPD variable. 0108 @param flavor Quark flavor. 0109 @param N Profile parameter. 0110 */ 0111 double HpEDDVal(double x, QuarkFlavor::Type flavor, int N); 0112 0113 /** %Double distribution function for H_DD + E_DD component ((x-beta)/xi-alpha = 0 line). 0114 @param beta %Double distribution variable. 0115 @param par Additional parameters. 0116 */ 0117 double IntHpEDDval(double beta, std::vector<double> par); 0118 0119 /** E+ component. 0120 @param x GPD variable. 0121 @param flavor Quark flavor. 0122 @param N Profile parameter. 0123 */ 0124 double EValPlus(double x, QuarkFlavor::Type flavor, int N); 0125 0126 /** %Double distribution function for E+ component ((x-beta)/xi-alpha = 0 and x-alpha*xi lines). 0127 @param alpha %Double distribution variable. 0128 @param par Additional parameters. 0129 */ 0130 double IntEvalPlusAB(double alpha, std::vector<double> par); 0131 0132 /** %Double distribution function for E+ component ((x-beta)/xi-alpha = 0 line). 0133 @param alpha %Double distribution variable. 0134 @param par Additional parameters. 0135 */ 0136 double IntEvalPlusA(double alpha, std::vector<double> par); 0137 0138 /** %Double distribution function for E+ component (x/xi-alpha = 0 line). 0139 @param alpha %Double distribution variable. 0140 @param par Additional parameters. 0141 */ 0142 double IntEvalPlusB(double alpha, std::vector<double> par); 0143 0144 NumA::FunctionType1D* m_pint_IntHpEDDval; ///< Functor related to IntHpEDDval(). 0145 NumA::FunctionType1D* m_pint_IntEvalPlusAB; ///< Functor related to IntEvalPlusAB(). 0146 NumA::FunctionType1D* m_pint_IntEvalPlusA; ///< Functor related to IntEvalPlusA(). 0147 NumA::FunctionType1D* m_pint_IntEvalPlusB; ///< Functor related to IntEvalPlusB(). 0148 0149 /** Initialize functors. 0150 */ 0151 void initFunctorsForIntegrations(); 0152 }; 0153 0154 } /* namespace PARTONS */ 0155 0156 #endif /* GPD_MMS13_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|