Back to home page

EIC code displayed by LXR

 
 

    


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

0001 /*
0002  * GPDVinnikov06.h
0003  *
0004  *  Created on: Oct 1, 2015
0005  *      Author: Pawel Sznajder (NCBJ)
0006  */
0007 
0008 #ifndef GPD_VINNIKOV06_H
0009 #define GPD_VINNIKOV06_H
0010 
0011 #include <ElementaryUtils/parameters/Parameters.h>
0012 #include <string>
0013 
0014 #include "GPDModule.h"
0015 
0016 namespace PARTONS {
0017 
0018 /**
0019  * @class GPDVinnikov06
0020  *
0021  * Module based on the original code from http://hepdata.cedar.ac.uk/pdfs
0022  *
0023  * For the reference, see arxiv:hep-ph/0604248 @cite Vinnikov:2006xw.
0024  *
0025  * Available GPD types: H, Ht.
0026  */
0027 class GPDVinnikov06: public GPDModule {
0028 
0029 public:
0030 
0031     static const unsigned int classId; ///< ID assigned by BaseObjectRegistry.
0032 
0033     /**
0034      * Constructor.
0035      * See BaseObject::BaseObject and ModuleObject::ModuleObject for more details.
0036      *
0037      * @param className name of child class.
0038      */
0039     GPDVinnikov06(const std::string &className);
0040 
0041     /**
0042      * Default destructor.
0043      */
0044     virtual ~GPDVinnikov06();
0045     virtual GPDVinnikov06* clone() const;
0046     virtual void resolveObjectDependencies();
0047     virtual void configure(const ElemUtils::Parameters &parameters);
0048     virtual std::string toString() const;
0049 
0050 protected:
0051 
0052     /** Copy constructor.
0053      @param other Object to be copied.
0054      */
0055     GPDVinnikov06(const GPDVinnikov06& other);
0056 
0057     virtual void isModuleWellConfigured();
0058     virtual void initModule();
0059 
0060     virtual PartonDistribution computeH();
0061     virtual PartonDistribution computeHt();
0062 
0063 private:
0064 
0065     const double EPS_BETR; ///< Epsilon to avoid the evaluation for x=xi.
0066     const int SIMP_INT; ///< Number of steps used in the integration.
0067 
0068     int n_par; ///< Number of model parameters.
0069     double param[6]; ///< Model parameters (double distribution profile function parameter for all partons).
0070 
0071     /** Evaluation of GPD H.
0072      @param i_part Parton selection (0 for g, -1/+1 for uSea/uVal, -2/+2 for dSea/dVal, 3 for s).
0073      @param x, xi, t GPD variables.
0074      @param n_par Number of input parameters.
0075      @param param Input parameters.
0076      \sa n_par, param
0077      */
0078     double gpdh(int const i_part, double x, double const xi, double const t,
0079             int const n_par, double* const param);
0080 
0081     /** Evaluation of GPD Ht
0082      @param i_part Parton selection (0 for g, -1/+1 for uSea/uVal, -2/+2 for dSea/dVal, 3 for s).
0083      @param x, xi, t GPD variables.
0084      @param n_par Number of input parameters.
0085      @param param Input parameters.
0086      \sa n_par, param
0087      */
0088     double gpdh_pol(int const i_part, double x, double const xi, double const t,
0089             int const n_par, double* const param);
0090 
0091     /** %Double distribution for GPD H and x < -xi part
0092      @param i_part Parton selection (0 for g, -1/+1 for uSea/uVal, -2/+2 for dSea/dVal, 3 for s)
0093      @param beta %Double distribution variable.
0094      @param x, xi, t GPD variables.
0095      @param n_par Number of input parameters.
0096      @param param Input parameters.
0097      \sa n_par, param
0098      */
0099     double dd1(int const i_part, double const beta, double const x,
0100             double const xi, double const t, int const n_par,
0101             double* const param);
0102 
0103     /** %Double distribution for GPD H and -xi < x < xi part.
0104      @param i_part Parton selection (0 for g, -1/+1 for uSea/uVal, -2/+2 for dSea/dVal, 3 for s).
0105      @param beta %Double distribution variable.
0106      @param x, xi, t GPD variables.
0107      @param n_par Number of input parameters.
0108      @param param Input parameters.
0109      \sa n_par, param
0110      */
0111     double dd2(int const i_part, double const beta, double const x,
0112             double const xi, double const t, int const n_par,
0113             double* const param);
0114 
0115     /** %Double distribution for GPD H and x > xi part.
0116      @param i_part Parton selection (0 for g, -1/+1 for uSea/uVal, -2/+2 for dSea/dVal, 3 for s)
0117      @param beta %Double distribution variable.
0118      @param x, xi, t GPD variables.
0119      @param n_par Number of input parameters.
0120      @param param Input parameters.
0121      \sa n_par, param
0122      */
0123     double dd3(int const i_part, double const beta, double const x,
0124             double const xi, double const t, int const n_par,
0125             double* const param);
0126 
0127     /** %Double distribution for GPD Ht and x < -xi part.
0128      @param i_part Parton selection (0 for g, -1/+1 for uSea/uVal, -2/+2 for dSea/dVal, 3 for s).
0129      @param beta %Double distribution variable.
0130      @param x, xi, t GPD variables.
0131      @param n_par Number of input parameters.
0132      @param param Input parameters.
0133      \sa n_par, param
0134      */
0135     double dd1_pol(int const i_part, double const beta, double const x,
0136             double const xi, double const t, int const n_par,
0137             double* const param);
0138 
0139     /** %Double distribution for GPD Ht and x > xi part.
0140      @param i_part Parton selection (0 for g, -1/+1 for uSea/uVal, -2/+2 for dSea/dVal, 3 for s).
0141      @param beta %Double distribution variable.
0142      @param x, xi, t GPD variables.
0143      @param n_par Number of input parameters.
0144      @param param Input parameters.
0145      \sa n_par, param
0146      */
0147     double dd2_pol(int const i_part, double const beta, double const x,
0148             double const xi, double const t, int const n_par,
0149             double* const param);
0150 
0151     /** %Double distribution for GPD Ht and x > xi part.
0152      @param i_part Parton selection (0 for g, -1/+1 for uSea/uVal, -2/+2 for dSea/dVal, 3 for s).
0153      @param beta %Double distribution variable.
0154      @param x, xi, t GPD variables.
0155      @param n_par Number of input parameters.
0156      @param param Input parameters.
0157      \sa n_par, param
0158      */
0159     double dd3_pol(int const i_part, double const beta, double const x,
0160             double const xi, double const t, int const n_par,
0161             double* const param);
0162 
0163     /** Unpolarized PDF for quarks uVal convoluted with t-dependence.
0164      @param x, t GPD variables.
0165      */
0166     double uval(double const x, double const t);
0167 
0168     /** Unpolarized PDF for quarks dVal convoluted with t-dependence.
0169      @param x, t GPD variables.
0170      */
0171     double dval(double const x, double const t);
0172 
0173     /** Unpolarized PDF for quarks uSea convoluted with t-dependence.
0174      @param x, t GPD variables.
0175      */
0176     double usea(double const x, double const t);
0177 
0178     /** Unpolarized PDF for quarks dSea convoluted with t-dependence.
0179      @param x, t GPD variables.
0180      */
0181     double dsea(double const x, double const t);
0182 
0183     /** Unpolarized PDF for quarks s convoluted with t-dependence.
0184      @param x, t GPD variables.
0185      */
0186     double ssea(double const x, double const t);
0187 
0188     /** Unpolarized PDF for gluons convoluted with t-dependence.
0189      @param x, t GPD variables.
0190      */
0191     double glu(double const x, double const t);
0192 
0193     /** Polarized PDF for quarks uVal convoluted with t-dependence.
0194      @param x, t GPD variables.
0195      */
0196     double uval_pol(double const x, double const t);
0197 
0198     /** Polarized PDF for quarks dVal convoluted with t-dependence.
0199      @param x, t GPD variables.
0200      */
0201     double dval_pol(double const x, double const t);
0202 
0203     /** Polarized PDF for quarks uSea convoluted with t-dependence.
0204      @param x, t GPD variables.
0205      */
0206     double usea_pol(double const x, double const t);
0207 
0208     /** Polarized PDF for quarks dSea convoluted with t-dependence.
0209      @param x, t GPD variables.
0210      */
0211     double dsea_pol(double const x, double const t);
0212 
0213     /** Polarized PDF for quarks s convoluted with t-dependence.
0214      @param x, t GPD variables.
0215      */
0216     double ssea_pol(double const x, double const t);
0217 
0218     /** Polarized PDF for gluons convoluted with t-dependence.
0219      @param x, t GPD variables.
0220      */
0221     double glu_pol(double const x, double const t);
0222 
0223     /** Integration for %double distribution.
0224      @param bmin Integration limit min.
0225      @param bmax Integration limit max.
0226      @param dd %Double distribution function to be integrated.
0227      @param i_part Parton selection (0 for g, -1/+1 for uSea/uVal, -2/+2 for dSea/dVal, 3 for s).
0228      @param x, xi, t GPD variables.
0229      @param n_par Number of input parameters.
0230      @param param Input parameters.
0231      \sa n_par, param
0232      */
0233     double dd_int_simp(double const bmin, double const bmax,
0234             double (GPDVinnikov06::*dd)(int, double, double, double, double,
0235                     int, double*), int const i_part, double const x,
0236             double const xi, double const t, int const n_par, double* param);
0237 
0238     /** Gamma function.
0239      @param x Argument.
0240      */
0241     double gammf(double const x);
0242 
0243     /** %Double distribution profile function.
0244      @param b Profile parameter.
0245      @param beta, alpha %Double distribution variables.
0246      */
0247     double prof_funct(double const b, double const beta, double const alpha);
0248 
0249     /** Exponentiation function.
0250      @param x, y Exponentiation parameters x^y.
0251      */
0252     double power(double const x, double const y);
0253 };
0254 
0255 } /* namespace PARTONS */
0256 
0257 #endif /* GPD_VINNIKOV06_H */