|
|
|||
File indexing completed on 2026-06-02 08:51:45
0001 #ifndef GPD_HM18_H 0002 #define GPD_HM18_H 0003 0004 /** 0005 * @file GPDHM18.h 0006 * @author Arkadiusz P. TrawiĆski (CEA) 0007 * @date July 2, 2018 0008 * @version 1.0 0009 */ 0010 0011 #include <ElementaryUtils/parameters/Parameters.h> 0012 #include <string> 0013 #include <vector> 0014 0015 #include "../MathIntegratorModule.h" 0016 #include "GPDModule.h" 0017 0018 namespace PARTONS { 0019 0020 /** 0021 * @class GPDHM18 0022 * 0023 * The proposition of the scalar di-quark model (SDQM) in the context 0024 * of GPDs back to the Jakob-Mulders-Rodrigues paper hep-ph/9704335 0025 * @cite Jakob:1997wg. 0026 * 0027 * Later, the model has been studied by Dae Sung Hwang and Dieter Mueller. 0028 * The short description of the GPDs derived from this model is given in 0029 * arXiv:0710.1567 @cite Hwang:2007tb. In the Ref. arXiv:1407.16655 0030 * @cite Muller:2014tqa full description is given. 0031 * 0032 * Available GPD types: H, Ht, E, Et. 0033 */ 0034 0035 class GPDHM18: public GPDModule, public MathIntegratorModule { 0036 public: 0037 static const std::string PARAMETER_NAME_HM18MODEL_M; ///< Name of parameter to set #m_M via configure() 0038 static const std::string PARAMETER_NAME_HM18MODEL_m; ///< Name of parameter to set #m_m via configure() 0039 static const std::string PARAMETER_NAME_HM18MODEL_lambda; ///< Name of parameter to set #m_lambda via configure() 0040 static const std::string PARAMETER_NAME_HM18MODEL_p; ///< Name of parameter to set #m_p via configure() 0041 /** 0042 * ID assigned by BaseObjectRegistry. 0043 */ 0044 static const unsigned int classId; 0045 /** 0046 * Default constructor. 0047 * @param className Name of class. 0048 */ 0049 GPDHM18(const std::string& className); 0050 /** 0051 * Destructor. 0052 */ 0053 virtual ~GPDHM18(); 0054 virtual GPDHM18* clone() const; 0055 virtual void resolveObjectDependencies(); 0056 virtual void configure(const ElemUtils::Parameters ¶meters); 0057 protected: 0058 /** 0059 * Copy constructor. 0060 * @param other Object to be copied. 0061 */ 0062 GPDHM18(const GPDHM18& other); 0063 virtual void isModuleWellConfigured(); 0064 virtual void initModule(); 0065 virtual PartonDistribution computeH(); 0066 virtual PartonDistribution computeHt(); 0067 virtual PartonDistribution computeE(); 0068 virtual PartonDistribution computeEt(); 0069 0070 private: 0071 double m_M; ///< Mass of the proton; 0072 double m_m; ///< Mass of the active quark. 0073 double m_lambda; ///< Mass of the spectator 0074 double m_p; ///< Parameter controlling the power. 0075 double m_N; ///< Normalization of the GPDs. 0076 0077 /** 0078 * Function setting the normalization of the GPDs @param m_N 0079 * according to the Eq. (22) Ref. @cite Hwang:2007tb. * 0080 */ 0081 void Normalize(); 0082 0083 /** 0084 * Integral given in Eq. (22) Ref. @cite Hwang:2007tb. 0085 * 0086 * @param y 0087 * @param par optional parameters of integration, not used. 0088 * @return 1/m_N 0089 */ 0090 double IntNorm(double y, std::vector<double> par); 0091 NumA::FunctionType1D* m_pint_IntNorm; ///< Functor related to IntNorm. 0092 0093 /** %Double distribution function for GPD E. Definition can be found 0094 * in Eqs. (18) and (19) in Ref. @cite Hwang:2007tb. 0095 * 0096 * @param y %Double distribution parameter y. 0097 * @param z %Double distribution parameter z. 0098 * @param t %Double distribution parameter t. 0099 * @return GPD E 0100 */ 0101 double DD_E(double y, double z, double t); 0102 double IntE(double y, std::vector<double> par); ///< Integrand of GPD E for xi <> 0. 0103 double IntE0(double z, std::vector<double> par); ///< Integrand of GPD E for xi == 0. 0104 NumA::FunctionType1D* m_pint_IntE; ///< Functor related to IntE. 0105 NumA::FunctionType1D* m_pint_IntE0; ///< Functor related to IntE0. 0106 0107 /** 0108 * %Double distribution function for GPD H. Definition can be found 0109 * in Eqs. (21) and (19) in Ref. @cite Hwang:2007tb. 0110 * 0111 * @param y %Double distribution parameter y. 0112 * @param z %Double distribution parameter z. 0113 * @param t %Double distribution parameter t. 0114 * @return GPD H 0115 */ 0116 double DD_H(double y, double z, double t); 0117 double IntH(double y, std::vector<double> par); ///< Integrand of GPD H for xi <> 0. 0118 double IntH0(double z, std::vector<double> par); ///< Integrand of GPD H for xi == 0. 0119 NumA::FunctionType1D* m_pint_IntH; ///< Functor related to IntH. 0120 NumA::FunctionType1D* m_pint_IntH0; ///< Functor related to IntH0. 0121 0122 /** 0123 * %Double distribution function for GPD Ht. Definition can be found 0124 * in Eqs. (4.23) and (4.26) in Ref. @cite Muller:2014tqa. 0125 * 0126 * @param y %Double distribution parameter y. 0127 * @param z %Double distribution parameter z. 0128 * @param t %Double distribution parameter t. 0129 * @return GPD Ht 0130 */ 0131 double DD_Ht(double y, double z, double t); 0132 double IntHt(double y, std::vector<double> par); ///< Integrand of GPD Ht for xi <> 0. 0133 double IntHt0(double z, std::vector<double> par); ///< Integrad of GPD Ht for xi == 0. 0134 NumA::FunctionType1D* m_pint_IntHt; ///< Functor related to IntHt. 0135 NumA::FunctionType1D* m_pint_IntHt0; ///< Functor related to IntHt0. 0136 0137 /** %Double distribution function for GPD Et. Definition can be found 0138 * in Eqs. (4.23) and (4.27) in Ref. @cite Muller:2014tqa. 0139 * 0140 * @param y %Double distribution parameter y. 0141 * @param z %Double distribution parameter z. 0142 * @param t %Double distribution parameter t. 0143 * @return GPD Et 0144 */ 0145 0146 double DD_Et(double y, double z, double t); 0147 double IntEt(double y, std::vector<double> par); ///< Integrand of GPD Et for xi <> 0. 0148 NumA::FunctionType1D* m_pint_IntEt; ///< Functor related to IntE for xi <> 0. 0149 0150 /** 0151 * Evaluates GPDs using %double distribution function 0152 * by integrating p_fun0 or p_fun function depending on kinematics. 0153 * 0154 * @param x 0155 * @param p_fun0 integrate this function if xi == 0 0156 * @param p_fun integrate this function if xi <> 0 0157 * @return computed GPD 0158 */ 0159 double evaluate(double x, NumA::FunctionType1D* p_fun0, 0160 NumA::FunctionType1D* p_fun); 0161 0162 /** 0163 * Computes GPDs using GPDHM18::evaluate function 0164 * and creates appropriate parton distributions. 0165 * 0166 * @param p_fun0 integrate this function if xi == 0 0167 * @param p_fun integrate this function if xi <> 0 0168 * @return parton distributions 0169 */ 0170 PartonDistribution compute(NumA::FunctionType1D* p_fun0, 0171 NumA::FunctionType1D* p_fun); 0172 0173 void initializeFunctorsForIntegrations(); ///< Initialize functors. 0174 void deleteFunctorsForIntegrations(); ///< Delete functors. 0175 0176 }; 0177 0178 } /* namespace PARTONS */ 0179 0180 #endif /* GPD_HM18_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|