|
|
|||
File indexing completed on 2026-06-02 08:51:45
0001 #ifndef GPD_VGG99_H 0002 #define GPD_VGG99_H 0003 0004 /** 0005 * @file GPDVGG99.h 0006 * @author Michel Guidal (IPNO) 0007 * @author Pawel Sznajder (IPNO) 0008 * @date December 10, 2015 0009 * @version 1.0 0010 */ 0011 0012 #include <ElementaryUtils/parameters/Parameters.h> 0013 #include <string> 0014 #include <vector> 0015 #include <LHAPDF/LHAPDF.h> 0016 0017 #include "../../beans/gpd/GPDType.h" 0018 #include "../MathIntegratorModule.h" 0019 #include "GPDModule.h" 0020 0021 namespace NumA { 0022 class FunctionType1D; 0023 } /* namespace NumA */ 0024 0025 namespace PARTONS { 0026 0027 /** 0028 * @class GPDVGG99 0029 * 0030 * For the reference see: 0031 * - Prog. Part. Nucl. Phys. 47, 401 (2001) 0032 * - Phys. Rev. Lett. 80 5064 (1998). 0033 * - Phys. Rev. D 60, 094017 (1999). 0034 * - Phys. Rev. D 72, 054013 (2005). 0035 * 0036 * Module based on the original code received from M. Guidal as a private communication. 0037 * 0038 * Available GPD types: H, E, Ht, Et. 0039 */ 0040 class GPDVGG99: public GPDModule, public MathIntegratorModule { 0041 0042 public: 0043 0044 static const std::string PARAM_NAME_SET_NAME; 0045 static const std::string PARAM_NAME_MEMBER; 0046 0047 static const unsigned int classId; ///< ID assigned by BaseObjectRegistry. 0048 0049 /** 0050 * Constructor. 0051 * See BaseObject::BaseObject and ModuleObject::ModuleObject for more details. 0052 * 0053 * @param className name of child class. 0054 */ 0055 GPDVGG99(const std::string &className); 0056 0057 /** 0058 * Default destructor. 0059 */ 0060 virtual ~GPDVGG99(); 0061 virtual GPDVGG99* clone() const; 0062 virtual void resolveObjectDependencies(); 0063 virtual void configure(const ElemUtils::Parameters ¶meters); 0064 virtual std::string toString() const; 0065 0066 std::string getSetName() const; 0067 int getMember() const; 0068 0069 void setSetName(const std::string &setname); 0070 void setMember(const int &member); 0071 0072 protected: 0073 0074 /** Copy constructor 0075 @param other Object to be copied 0076 */ 0077 GPDVGG99(const GPDVGG99& other); 0078 0079 virtual void isModuleWellConfigured(); 0080 virtual void initModule(); 0081 0082 virtual PartonDistribution computeH(); 0083 virtual PartonDistribution computeE(); 0084 virtual PartonDistribution computeHt(); 0085 virtual PartonDistribution computeEt(); 0086 0087 private: 0088 0089 /** Quark flavors. 0090 */ 0091 enum flavour { 0092 UNDEFINED = 0, 0093 UP_VAL = 1, 0094 UP_SEA = 2, 0095 DOWN_VAL = 3, 0096 DOWN_SEA = 4, 0097 STRANGE = 5 0098 }; 0099 0100 const double kappa_u; ///< Anomalous magnetic moment for quarks u. 0101 const double kappa_d; ///< Anomalous magnetic moment for quarks d. 0102 0103 const double b_profile_val; ///< Parameter describing t dependence of the Regge residue for valence quarks. 0104 const double b_profile_sea; ///< Parameter describing t dependence of the Regge residue for see quarks. 0105 const double alphap_val; ///< Slope of Ragge trajectory for valence quarks. 0106 const double alphap_sea; ///< Slope of Ragge trajectory for for sea quarks. 0107 const double eta_e_largex_u_s; ///< Shape parameter for GPD E^uVal. 0108 const double eta_e_largex_d_s; ///< Shape parameter for GPD E^dVal. 0109 const double g_AXIAL; ///< Axial coupling constant of the nucleon. 0110 0111 std::string m_setName; 0112 int m_member; 0113 LHAPDF::PDF* m_Forward; 0114 0115 GPDType gpd_s5; ///< GPD Type for the current computation (internal variables used for the integration). 0116 flavour flavour_s5; ///< Flavor for the current computation (internal variables used for the integration). 0117 double x_s5; ///< Value of x for the current computation (internal variables used for the integration). 0118 0119 /** Evaluation of %double distribution for unpolarized GPDs. 0120 */ 0121 double offforward_distr(); 0122 0123 /** Evaluation of %double distribution for polarized GPDs. 0124 */ 0125 double offforward_pol_distr(); 0126 0127 /** %Double distribution profile function. 0128 @param beta, alpha %Double distribution variables. 0129 @param b_profile Profile parameter. 0130 \sa b_profile_val, b_profile_sea. 0131 */ 0132 double symm_profile_function(double beta, double alpha, double b_profile); 0133 0134 /** %Double distribution function for GPD H. 0135 @param beta, alpha %Double distribution variables. 0136 */ 0137 double symm_double_distr_reggeH(double beta, double alpha); 0138 0139 /** Wrapper for integration of %double distribution for GPD H and x. 0140 @param alpha %Double distribution variable. 0141 @param par Additional parameters (not used). 0142 */ 0143 double int_symm_double_distr_reggeH(double alpha, std::vector<double> par); 0144 0145 /** Wrapper for integration of %double distribution for GPD H and -x. 0146 @param alpha %Double distribution variable. 0147 @param par Additional parameters (not used). 0148 */ 0149 double int_symm_double_distr_reggeMxH(double alpha, 0150 std::vector<double> par); 0151 0152 /** %Double distribution function for GPD E. 0153 @param beta, alpha %Double distribution variables. 0154 */ 0155 double symm_double_distr_reggeE(double beta, double alpha); 0156 0157 /** Wrapper for integration of %double distribution for GPD E and x. 0158 @param alpha %Double distribution variable. 0159 @param par Additional parameters (not used). 0160 */ 0161 double int_symm_double_distr_reggeE(double alpha, std::vector<double> par); 0162 0163 /** Wrapper for integration of %double distribution for GPD E and -x. 0164 @param alpha %Double distribution variable. 0165 @param par Additional parameters (not used). 0166 */ 0167 double int_symm_double_distr_reggeMxE(double alpha, 0168 std::vector<double> par); 0169 0170 /** Normalization function for GPD E. 0171 @param beta %Double distribution variable. 0172 @param par Additional parameters (not used). 0173 */ 0174 double int_mom2_up_valence_e(double beta, std::vector<double> par); 0175 0176 /** %Double distribution function for GPD Ht. 0177 @param beta, alpha %Double distribution variables. 0178 */ 0179 double symm_double_distr_reggeHt(double beta, double alpha); 0180 0181 /** Wrapper for integration of %double distribution for GPD Ht and x. 0182 @param alpha %Double distribution variable. 0183 @param par Additional parameters (not used). 0184 */ 0185 double int_symm_double_distr_reggeHt(double alpha, std::vector<double> par); 0186 0187 /** Wrapper for integration of %double distribution for GPD Ht and -x. 0188 @param alpha %Double distribution variable. 0189 @param par Additional parameters (not used). 0190 */ 0191 double int_symm_double_distr_reggeMxHt(double alpha, 0192 std::vector<double> par); 0193 0194 /** Unpolarized PDF for quarks uVal, MRS93 (used only for cross-check purpose). 0195 @param x Fractional momentum of parton. 0196 */ 0197 double test_pdf_up_val(double x); 0198 0199 /** Unpolarized PDF for quarks dVal, MRS93 (used only for cross-check purpose). 0200 @param x Fractional momentum of parton. 0201 */ 0202 double test_pdf_down_val(double x); 0203 0204 /** Unpolarized PDF for quarks uSea, MRS93 (used only for cross-check purpose). 0205 @param x Fractional momentum of parton. 0206 */ 0207 double test_pdf_up_bar(double x); 0208 0209 /** Unpolarized PDF for quarks dSea, MRS93 (used only for cross-check purpose). 0210 @param x Fractional momentum of parton. 0211 */ 0212 double test_pdf_down_bar(double x); 0213 0214 /** Unpolarized PDF for quarks s, MRS93 (used only for cross-check purpose). 0215 @param x Fractional momentum of parton. 0216 */ 0217 double test_pdf_sea(double x); 0218 0219 /** Polarized PDF for quarks uVal, MRST98. 0220 @param x Fractional momentum of parton. 0221 */ 0222 double pol_up_valence(double x); 0223 0224 /** Polarized PDF for quarks dVal, MRST98. 0225 @param x Fractional momentum of parton. 0226 */ 0227 double pol_down_valence(double x); 0228 0229 /** Polarized PDF for quarks uSea, MRST98. 0230 @param x Fractional momentum of parton. 0231 */ 0232 double pol_up_bar(double x); 0233 0234 /** Polarized PDF for quarks dSea, MRST98. 0235 @param x Fractional momentum of parton. 0236 */ 0237 double pol_down_bar(double x); 0238 0239 /** Polarized PDF for quarks s, MRST98. 0240 @param x Fractional momentum of parton. 0241 */ 0242 double pol_strange_bar(double x); 0243 0244 /** Axial form factor parameterization. 0245 @param Q_sqr FF variable. 0246 */ 0247 double form_factor_G_A(double Q_sqr); 0248 0249 /** Pseudoscalar form factor parameterization. 0250 @param t FF variable. 0251 */ 0252 double form_factor_G_P(double t); 0253 0254 NumA::FunctionType1D* m_pint_symm_double_distr_reggeH; ///< Functor related to symm_double_distr_reggeH() 0255 NumA::FunctionType1D* m_pint_symm_double_distr_reggeMxH; ///< Functor related to symm_double_distr_reggeMxH() 0256 NumA::FunctionType1D* m_pint_symm_double_distr_reggeE; ///< Functor related to symm_double_distr_reggeE() 0257 NumA::FunctionType1D* m_pint_symm_double_distr_reggeMxE; ///< Functor related to symm_double_distr_reggeMxE() 0258 NumA::FunctionType1D* m_pint_symm_double_distr_reggeHt; ///< Functor related to symm_double_distr_reggeHt() 0259 NumA::FunctionType1D* m_pint_symm_double_distr_reggeMxHt; ///< Functor related to symm_double_distr_reggeMxHt() 0260 NumA::FunctionType1D* m_pint_mom2_up_valence_e; ///< Functor related to mom2_up_valence_e() 0261 0262 /** Initialize functors. 0263 */ 0264 void initFunctorsForIntegrations(); 0265 }; 0266 0267 } /* namespace PARTONS */ 0268 0269 #endif /* GPD_VGG99_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|