Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef GPD_GK19_COMPASS_H
0002 #define GPD_GK19_COMPASS_H
0003 
0004 /**
0005  * @file GPDGK19COMPASS.h
0006  * @author Kemal Tezgin
0007  * @date 2019
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 "GPDGK16.h"
0017 
0018 namespace NumA {
0019 class FunctionType1D;
0020 } /* namespace NumA */
0021 
0022 namespace PARTONS {
0023 
0024 /**
0025  * @class GPDGK19COMPASS
0026  *
0027  * @brief TODO
0028  *
0029  * TODO
0030  */
0031 
0032 class GPDGK19COMPASS: public GPDGK16, public MathIntegratorModule {
0033 
0034 public:
0035 
0036     static const unsigned int classId; ///< Unique ID to automatically register the class in the registry.
0037 
0038     /**
0039      * Constructor.
0040      * See BaseObject::BaseObject and ModuleObject::ModuleObject for more details.
0041      *
0042      * @param className name of child class.
0043      */
0044     GPDGK19COMPASS(const std::string &className);
0045 
0046     /**
0047      * Destructor.
0048      */
0049     virtual ~GPDGK19COMPASS();
0050 
0051     virtual GPDGK19COMPASS* clone() const;
0052     virtual void resolveObjectDependencies();
0053     virtual void configure(const ElemUtils::Parameters &parameters);
0054 
0055 protected:
0056 
0057     /**
0058      * Copy constructor.
0059      */
0060     GPDGK19COMPASS(const GPDGK19COMPASS& other);
0061 
0062     virtual void initModule();
0063     virtual void isModuleWellConfigured();
0064 
0065     double HtUp(double rho, std::vector<double> par);
0066     double HtDown(double rho, std::vector<double> par);
0067 
0068     virtual PartonDistribution computeHt();
0069     virtual PartonDistribution computeEt();
0070     virtual PartonDistribution computeHTrans();
0071     virtual PartonDistribution computeEbarTrans();
0072 
0073     void calculateHtCoefs();
0074     void calculateEtCoefs();
0075     void calculateHTransCoefs();
0076     void calculateETransCoefs();
0077 
0078 private:
0079 
0080     double kHtgluon;                 ///< Exponent of correlated x-t dependence.
0081     double kHtsea;                   ///< Exponent of correlated x-t dependence.
0082     double kHtuval;                  ///< Exponent of correlated x-t dependence.
0083     double kHtdval;                  ///< Exponent of correlated x-t dependence.
0084 
0085     double kEtgluon;                 ///< Exponent of correlated x-t dependence.
0086     double kEtsea;                   ///< Exponent of correlated x-t dependence.
0087     double kEtuval;                  ///< Exponent of correlated x-t dependence.
0088     double kEtdval;                  ///< Exponent of correlated x-t dependence.
0089 
0090     double kHTransgluon;             ///< Exponent of correlated x-t dependence.
0091     double kHTranssea;               ///< Exponent of correlated x-t dependence.
0092     double kHTransuval;              ///< Exponent of correlated x-t dependence.
0093     double kHTransdval;              ///< Exponent of correlated x-t dependence.
0094 
0095     double kETransgluon;             ///< Exponent of correlated x-t dependence.
0096     double kETranssea;               ///< Exponent of correlated x-t dependence.
0097     double kETransuval;              ///< Exponent of correlated x-t dependence.
0098     double kETransdval;              ///< Exponent of correlated x-t dependence.
0099 
0100     std::vector<double> Etuval1tab;         ///< Etval1(i=0,1,2,3) for valence u
0101     std::vector<double> Etdval1tab;         ///< Etval1(i=0,1,2,3) for valence d
0102     std::vector<double> Etuval1mtab; ///< Etval1(i=0,1,2,3) for valence u for -xb
0103     std::vector<double> Etdval1mtab; ///< Etval1(i=0,1,2,3) for valence d for -xb
0104 
0105     std::vector<double> HTransuval1tab; ///< HTransval1(i=0,1,2,3,4,5) for valence u
0106     std::vector<double> HTransdval1tab; ///< HTransval1(i=0,1,2,3,4,5) for valence d
0107     std::vector<double> HTransuval1mtab; ///< HTransval1(i=0,1,2,3,4,5) for valence u for -xb
0108     std::vector<double> HTransdval1mtab; ///< HTransval1(i=0,1,2,3,4,5) for valence d for -xb
0109 
0110     std::vector<double> ETransuval1tab;   ///< ETransval1(i=0,1,2) for valence u
0111     std::vector<double> ETransdval1tab;   ///< ETransval1(i=0,1,2) for valence d
0112     std::vector<double> ETransuval1mtab; ///< ETransval1(i=0,1,2) for valence u for -xb
0113     std::vector<double> ETransdval1mtab; ///< ETransval1(i=0,1,2) for valence d for -xb
0114 
0115     void calculateHtKas();
0116     void calculateEtKas();
0117     void calculateHTransKas();
0118     void calculateETransKas();
0119 
0120     double ValenceExpansion(double x, double i, double k);
0121 
0122     /**
0123      * Initialize functors.
0124      */
0125     void initFunctorsForIntegrations();
0126 
0127     NumA::FunctionType1D* m_pint_HtUp;
0128     NumA::FunctionType1D* m_pint_HtDown;
0129 };
0130 
0131 } /* namespace PARTONS */
0132 
0133 #endif /* GPD_GK19_COMPASS_H */