|
|
|||
File indexing completed on 2026-06-02 08:51:45
0001 #ifndef GPD_MPSSW13_H 0002 #define GPD_MPSSW13_H 0003 0004 /** 0005 * @file GPDMPSSW13.h 0006 * @author Herve Moutarde (CEA/Irfu, Saclay) 0007 * @date November 11, 2014 0008 * @version 1.0 0009 */ 0010 0011 #include <ElementaryUtils/parameters/Parameters.h> 0012 #include <string> 0013 #include <vector> 0014 #include <LHAPDF/LHAPDF.h> 0015 0016 #include "../MathIntegratorModule.h" 0017 #include "GPDModule.h" 0018 0019 namespace NumA { 0020 class FunctionType1D; 0021 } /* namespace NumA */ 0022 0023 namespace PARTONS { 0024 0025 /** 0026 * @class GPDMPSSW13 0027 * 0028 * Module based on the original code (TBDP class) received from H.\ Moutarde as a private communication. 0029 * 0030 * For the reference, see arxiv:1301.3819 @cite Moutarde:2013qs. 0031 * 0032 * Available GPD types: H. 0033 */ 0034 class GPDMPSSW13: public GPDModule, public MathIntegratorModule { 0035 0036 public: 0037 0038 static const std::string PARAM_NAME_SET_NAME; 0039 static const std::string PARAM_NAME_MEMBER; 0040 0041 static const unsigned int classId; ///< ID assigned by BaseObjectRegistry. 0042 0043 /** 0044 * Constructor. 0045 * See BaseObject::BaseObject and ModuleObject::ModuleObject for more details. 0046 * 0047 * @param className name of child class. 0048 */ 0049 GPDMPSSW13(const std::string &className); 0050 0051 /** 0052 * Default constructor. 0053 */ 0054 virtual ~GPDMPSSW13(); 0055 virtual GPDMPSSW13* clone() const; 0056 virtual void resolveObjectDependencies(); 0057 virtual void configure(const ElemUtils::Parameters ¶meters); 0058 0059 std::string getSetName() const; 0060 int getMember() const; 0061 0062 void setSetName(const std::string &setname); 0063 void setMember(const int &member); 0064 0065 //TODO no toString 0066 void setParameters(std::vector<double> Parameters); 0067 0068 unsigned int getNbOfQuarkFlavor() const; ///< Get #m_NbOfQuarkFlavor. 0069 unsigned int getNbOfColor() const; ///< Get #m_NbOfColor. 0070 double getMx() const; ///< Get #m_Mx. 0071 double getCA() const; ///< Get #m_CA. 0072 double getCF() const; ///< Get #m_CF. 0073 double getTF() const; ///< Get #m_TF. 0074 double getF1d() const; ///< Get #m_F1u. 0075 double getF1u() const; ///< Get #m_F1d. 0076 double getFD() const; ///< Get #m_FD. 0077 double getProfileShapeVal() const; ///< Get #m_ProfileShapeVal. 0078 double getProfileShapeSea() const; ///< Get #m_ProfileShapeSea. 0079 double getProfileShapeGlue() const; ///< Get #m_ProfileShapeGlue. 0080 double getQuarkDTerm() const; ///< Get #m_QuarkDTerm. 0081 double getGluonDTerm() const; ///< Get #m_GluonDTerm. 0082 void setGluonDTerm(double gluonDTerm); //TODO why? 0083 0084 protected: 0085 0086 /** Copy constructor 0087 @param other Object to be copied 0088 */ 0089 GPDMPSSW13(const GPDMPSSW13& other); 0090 0091 //TODO private isModuleWellConfigured? 0092 //TODO private initModule? 0093 //TODO private computeH? 0094 0095 private: 0096 0097 virtual void isModuleWellConfigured(); 0098 virtual void initModule(); 0099 virtual PartonDistribution computeH(); 0100 0101 unsigned int m_NbOfQuarkFlavor; ///< TO BE REMOVED? (is it defined here?) 0102 unsigned int m_NbOfColor; ///< Number of colors. 0103 0104 double m_Mx; ///< Negative value of x. 0105 0106 double m_CA; ///< Number of active quark flavors. 0107 double m_CF; ///< Color factor. 0108 double m_TF; ///< SU(3) color factor. 0109 0110 double m_F1u; ///< Contribution of quarks u to Pauli n and p form factors. 0111 double m_F1d; ///< Contribution of quarks d to Pauli n and p form factors. 0112 double m_FD; ///< Dipole form factor. 0113 0114 double m_ProfileShapeVal; ///< %Double distribution profile parameter for valence quarks. 0115 double m_ProfileShapeSea; ///< %Double distribution profile parameter for sea quarks. 0116 double m_ProfileShapeGlue; ///< %Double distribution profile parameter for gluons. 0117 0118 double m_QuarkDTerm; ///< Value of D term for quarks. 0119 double m_GluonDTerm; ///< Value of D term for gluons. 0120 0121 std::string m_setName; 0122 int m_member; 0123 LHAPDF::PDF* m_Forward; 0124 0125 /** Compute D terms. 0126 */ 0127 void ComputeDTerms(); 0128 0129 /** Compute form factors. 0130 */ 0131 void ComputeFormFactors(); 0132 0133 /** %Double distribution profile function. 0134 @param N Profile parameter. 0135 @param alpha, beta %Double distribution variables. 0136 */ 0137 double Profile(double N, double alpha, double beta); 0138 0139 /** %Double distribution ansatz for quarks uVal and x. 0140 @param x %Double distribution variable. 0141 @param Par Additional parameters (not used). 0142 */ 0143 double IntegralHuVal(double x, std::vector<double> Par); 0144 0145 /** %Double distribution ansatz for quarks uVal and -x. 0146 @param x %Double distribution variable. 0147 @param Par Additional parameters (not used). 0148 */ 0149 double IntegralHuValMx(double x, std::vector<double> Par); 0150 0151 /** %Double distribution ansatz for quarks uSea and x and |x| > xi. 0152 @param x %Double distribution variable. 0153 @param Par Additional parameters (not used). 0154 */ 0155 double IntegralxLargeHuSea(double x, std::vector<double> Par); 0156 0157 /** %Double distribution ansatz for quarks uSea and -x and |x| > xi. 0158 @param x %Double distribution variable. 0159 @param Par Additional parameters (not used). 0160 */ 0161 double IntegralxLargeHuSeaMx(double x, std::vector<double> Par); 0162 0163 /** %Double distribution ansatz for quarks uSea and x and |x| < xi (part 1). 0164 @param x %Double distribution variable. 0165 @param Par Additional parameters (not used). 0166 */ 0167 double IntegralxSmall1HuSea(double x, std::vector<double> Par); 0168 0169 /** %Double distribution ansatz for quarks uSea and x and |x| < xi (part 2). 0170 @param x %Double distribution variable. 0171 @param Par Additional parameters (not used). 0172 */ 0173 double IntegralxSmall2HuSea(double x, std::vector<double> Par); 0174 0175 /** %Double distribution ansatz for quarks dVal and x. 0176 @param x %Double distribution variable. 0177 @param Par Additional parameters (not used). 0178 */ 0179 double IntegralHdVal(double x, std::vector<double> Par); 0180 0181 /** %Double distribution ansatz for quarks dVal and -x. 0182 @param x %Double distribution variable. 0183 @param Par Additional parameters (not used). 0184 */ 0185 double IntegralHdValMx(double x, std::vector<double> Par); 0186 0187 /** %Double distribution ansatz for quarks dSea and x and |x| > xi. 0188 @param x %Double distribution variable. 0189 @param Par Additional parameters (not used). 0190 */ 0191 double IntegralxLargeHdSea(double x, std::vector<double> Par); 0192 0193 /** %Double distribution ansatz for quarks dSea and -x and |x| > xi. 0194 @param x %Double distribution variable. 0195 @param Par Additional parameters (not used). 0196 */ 0197 double IntegralxLargeHdSeaMx(double x, std::vector<double> Par); 0198 0199 /** %Double distribution ansatz for quarks dSea and x and |x| < xi (part 1) 0200 @param x %Double distribution variable 0201 @param Par Additional parameters (not used) 0202 */ 0203 double IntegralxSmall1HdSea(double x, std::vector<double> Par); 0204 0205 /** %Double distribution ansatz for quarks dSea and x and |x| < xi (part 2). 0206 @param x %Double distribution variable. 0207 @param Par Additional parameters (not used). 0208 */ 0209 double IntegralxSmall2HdSea(double x, std::vector<double> Par); 0210 0211 /** %Double distribution ansatz for quarks s and x and |x| > xi. 0212 @param x %Double distribution variable. 0213 @param Par Additional parameters (not used). 0214 */ 0215 double IntegralxLargeHsSea(double x, std::vector<double> Par); 0216 0217 /** %Double distribution ansatz for quarks s and -x and |x| > xi. 0218 @param x %Double distribution variable. 0219 @param Par Additional parameters (not used). 0220 */ 0221 double IntegralxLargeHsSeaMx(double x, std::vector<double> Par); 0222 0223 /** %Double distribution ansatz for quarks s and x and |x| < xi (part 1). 0224 @param x %Double distribution variable. 0225 @param Par Additional parameters (not used). 0226 */ 0227 double IntegralxSmall1HsSea(double x, std::vector<double> Par); 0228 0229 /** %Double distribution ansatz for quarks s and x and |x| < xi (part 2). 0230 @param x %Double distribution variable. 0231 @param Par Additional parameters (not used). 0232 */ 0233 double IntegralxSmall2HsSea(double x, std::vector<double> Par); 0234 0235 /** %Double distribution ansatz for quarks g and x and |x| > xi. 0236 @param x %Double distribution variable. 0237 @param Par Additional parameters (not used). 0238 */ 0239 double IntegralxLargeHg(double x, std::vector<double> Par); 0240 0241 /** %Double distribution ansatz for quarks g and -x and |x| > xi. 0242 @param x %Double distribution variable. 0243 @param Par Additional parameters (not used). 0244 */ 0245 double IntegralxLargeHgMx(double x, std::vector<double> Par); 0246 0247 /** %Double distribution ansatz for quarks g and x and |x| < xi (part 1). 0248 @param x %Double distribution variable. 0249 @param Par Additional parameters (not used). 0250 */ 0251 double IntegralxSmall1Hg(double x, std::vector<double> Par); 0252 0253 /** %Double distribution ansatz for quarks g and x and |x| < xi (part 2). 0254 @param x %Double distribution variable. 0255 @param Par Additional parameters (not used). 0256 */ 0257 double IntegralxSmall2Hg(double x, std::vector<double> Par); 0258 0259 /** Evaluation of anomalous dimension matrix for qq. 0260 @param nflavour Number of active flavors. 0261 @param n Gegenbauer order. 0262 */ 0263 double GammaQQ(const unsigned int nflavour, const unsigned int n); 0264 0265 /** Evaluation of anomalous dimension matrix for qg. 0266 @param nflavour Number of active flavors. 0267 @param n Gegenbauer order. 0268 */ 0269 double GammaQG(const unsigned int nflavour, const unsigned int n); 0270 0271 /** Evaluation of anomalous dimension matrix for gq. 0272 @param nflavour Number of active flavors. 0273 @param n Gegenbauer order. 0274 */ 0275 double GammaGQ(const unsigned int nflavour, const unsigned int n); 0276 0277 /** Evaluation of anomalous dimension matrix for gg. 0278 @param nflavour Number of active flavors. 0279 @param n Gegenbauer order. 0280 */ 0281 double GammaGG(const unsigned int nflavour, const unsigned int n); 0282 0283 /** Throw exception if beta < 0 or beta > 1. 0284 @param funcName Name of function where the error appeared. 0285 @param betaValue Value of beta. 0286 */ 0287 void throwBetaException(const std::string &funcName, double betaValue); 0288 0289 NumA::FunctionType1D* m_pIntegralHuVal; ///< Functor related to IntegralHuVal() 0290 NumA::FunctionType1D* m_pIntegralHdVal; ///< Functor related to IntegralHdVal() 0291 NumA::FunctionType1D* m_pIntegralHuValMx; ///< Functor related to IntegralHuValMx() 0292 NumA::FunctionType1D* m_pIntegralHdValMx; ///< Functor related to IntegralHdValMx() 0293 NumA::FunctionType1D* m_pIntegralxLargeHuSea; ///< Functor related to IntegralxLargeHuSea() 0294 NumA::FunctionType1D* m_pIntegralxLargeHdSea; ///< Functor related to IntegralxLargeHdSea() 0295 NumA::FunctionType1D* m_pIntegralxSmall1HuSea; ///< Functor related to IntegralxSmall1HuSea() 0296 NumA::FunctionType1D* m_pIntegralxSmall2HuSea; ///< Functor related to IntegralxSmall2HuSea() 0297 NumA::FunctionType1D* m_pIntegralxSmall1HdSea; ///< Functor related to IntegralxSmall1HdSea() 0298 NumA::FunctionType1D* m_pIntegralxSmall2HdSea; ///< Functor related to IntegralxSmall2HdSea() 0299 NumA::FunctionType1D* m_pIntegralxLargeHuSeaMx; ///< Functor related to IntegralxLargeHuSeaMx() 0300 NumA::FunctionType1D* m_pIntegralxLargeHdSeaMx; ///< Functor related to IntegralxLargeHdSeaMx() 0301 NumA::FunctionType1D* m_pIntegralxLargeHsSea; ///< Functor related to IntegralxLargeHsSea() 0302 NumA::FunctionType1D* m_pIntegralxSmall1HsSea; ///< Functor related to IntegralxSmall1HsSea() 0303 NumA::FunctionType1D* m_pIntegralxSmall2HsSea; ///< Functor related to IntegralxSmall2HsSea() 0304 NumA::FunctionType1D* m_pIntegralxLargeHsSeaMx; ///< Functor related to IntegralxLargeHsSeaMx() 0305 NumA::FunctionType1D* m_pIntegralxLargeHg; ///< Functor related to IntegralxLargeHg() 0306 NumA::FunctionType1D* m_pIntegralxSmall1Hg; ///< Functor related to IntegralxSmall1Hg() 0307 NumA::FunctionType1D* m_pIntegralxSmall2Hg; ///< Functor related to IntegralxSmall2Hg() 0308 NumA::FunctionType1D* m_pIntegralxLargeHgMx; ///< Functor related to IntegralxLargeHgMx() 0309 0310 /** Initialize functors. 0311 */ 0312 void initFunctorsForIntegrations(); 0313 }; 0314 0315 } /* namespace PARTONS */ 0316 0317 #endif /* GPD_MPSSW13_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|