Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef GPD_GK19_H
0002 #define GPD_GK19_H
0003 
0004 /**
0005  * @file GPDGK19.h
0006  * @author Kemal Tezgin
0007  * @date 2019
0008  * @version 1.0
0009  */
0010 
0011 #include <string>
0012 #include <vector>
0013 
0014 #include "GPDGK16.h"
0015 
0016 namespace PARTONS {
0017 
0018 /**
0019  * @class GPDGK19
0020  *
0021  * @brief The module implements GPDs which appear in Goloskokov-Kroll (GK) model in pseudoscalar meson production
0022  *
0023  * This model is defined in the series of references:
0024  * - arxiv:0906.0460 \cite Goloskokov:2009ia ;
0025  * - arxiv:1106.4897 \cite Goloskokov:2011rd ;
0026  *
0027  * Available GPD types: H, E, \tilde{H}, \tilde{E}, H_T and \bar{E}_T
0028  *
0029  * We use the following parameters for GPDs (all GPDs have Regge-like profile function):
0030  *   1) \tilde{H}: Table 1 in arxiv:1901.11380 with \alpha(0) = 0.32
0031  *   2) \tilde{E}: Table 1 in arxiv:1901.11380
0032  *   3)       H_T: Table 1 in arxiv:1901.11380 with \alpha(0) = -0.17
0033  *   4) \bar{E}_T: Table 1 in arxiv:1901.11380
0034  *   with PDFs (forward-limits) parametrizations ABM: arXiv:1202.2281 and DSSV: arXiv:0904.3821
0035  *
0036  * Parameterization of GPDs H and E as in GPDGK16
0037  */
0038 
0039 class GPDGK19: public GPDGK16 {
0040 
0041 public:
0042 
0043     static const unsigned int classId; ///< Unique ID to automatically register the class in the registry.
0044 
0045     /**
0046      * Constructor.
0047      * See BaseObject::BaseObject and ModuleObject::ModuleObject for more details.
0048      *
0049      * @param className name of child class.
0050      */
0051     GPDGK19(const std::string &className);
0052 
0053     /**
0054      * Destructor.
0055      */
0056     virtual ~GPDGK19();
0057 
0058     virtual GPDGK19* clone() const;
0059 
0060 protected:
0061 
0062     /**
0063      * Copy constructor.
0064      */
0065     GPDGK19(const GPDGK19& other);
0066 
0067     virtual void initModule();
0068     virtual void isModuleWellConfigured();
0069 
0070     virtual PartonDistribution computeHt();
0071     virtual PartonDistribution computeEt();
0072     virtual PartonDistribution computeHTrans();
0073     virtual PartonDistribution computeEbarTrans();
0074 
0075     void calculateHtCoefs();
0076     void calculateEtCoefs();
0077     void calculateHTransCoefs();
0078     void calculateETransCoefs();
0079 
0080 private:
0081 
0082     double kHtgluon;                 ///< Exponent of correlated x-t dependence.
0083     double kHtsea;                   ///< Exponent of correlated x-t dependence.
0084     double kHtuval;                  ///< Exponent of correlated x-t dependence.
0085     double kHtdval;                  ///< Exponent of correlated x-t dependence.
0086 
0087     double kEtgluon;                 ///< Exponent of correlated x-t dependence.
0088     double kEtsea;                   ///< Exponent of correlated x-t dependence.
0089     double kEtuval;                  ///< Exponent of correlated x-t dependence.
0090     double kEtdval;                  ///< Exponent of correlated x-t dependence.
0091 
0092     double kHTransgluon;             ///< Exponent of correlated x-t dependence.
0093     double kHTranssea;               ///< Exponent of correlated x-t dependence.
0094     double kHTransuval;              ///< Exponent of correlated x-t dependence.
0095     double kHTransdval;              ///< Exponent of correlated x-t dependence.
0096 
0097     double kETransgluon;             ///< Exponent of correlated x-t dependence.
0098     double kETranssea;               ///< Exponent of correlated x-t dependence.
0099     double kETransuval;              ///< Exponent of correlated x-t dependence.
0100     double kETransdval;              ///< Exponent of correlated x-t dependence.
0101 
0102     std::vector<double> Htuval1tab;             ///< Htval1(i=0,1,2) for valence u
0103     std::vector<double> Htdval1tab;             ///< Htval1(i=0,1,2) for valence d
0104     std::vector<double> Htuval1mtab;            ///< Htval1(i=0,1,2) for valence u for -xb
0105     std::vector<double> Htdval1mtab;            ///< Htval1(i=0,1,2) for valence d for -xb
0106 
0107     std::vector<double> Etuval1tab;             ///< Etval1(i=0,1,2,3) for valence u
0108     std::vector<double> Etdval1tab;             ///< Etval1(i=0,1,2,3) for valence d
0109     std::vector<double> Etuval1mtab;            ///< Etval1(i=0,1,2,3) for valence u for -xb
0110     std::vector<double> Etdval1mtab;            ///< Etval1(i=0,1,2,3) for valence d for -xb
0111 
0112     std::vector<double> HTransuval1tab;         ///< HTransval1(i=0,1,2,3,4,5) for valence u
0113     std::vector<double> HTransdval1tab;         ///< HTransval1(i=0,1,2,3,4,5) for valence d
0114     std::vector<double> HTransuval1mtab;        ///< HTransval1(i=0,1,2,3,4,5) for valence u for -xb
0115     std::vector<double> HTransdval1mtab;        ///< HTransval1(i=0,1,2,3,4,5) for valence d for -xb
0116 
0117     std::vector<double> ETransuval1tab;         ///< ETransval1(i=0,1,2) for valence u
0118     std::vector<double> ETransdval1tab;         ///< ETransval1(i=0,1,2) for valence d
0119     std::vector<double> ETransuval1mtab;        ///< ETransval1(i=0,1,2) for valence u for -xb
0120     std::vector<double> ETransdval1mtab;        ///< ETransval1(i=0,1,2) for valence d for -xb
0121 
0122     void calculateHtKas();
0123     void calculateEtKas();
0124     void calculateHTransKas();
0125     void calculateETransKas();
0126 
0127     double ValenceExpansion(double x, double i, double k);
0128 };
0129 
0130 } /* namespace PARTONS */
0131 
0132 #endif /* GPD_GK19_H */