Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-09-27 07:03:24

0001 // SPDX-License-Identifier: LGPL-3.0-or-later
0002 // Copyright (C) 2023 Duane Byer
0003 
0004 #ifndef Prokudin_
0005 #define Prokudin_
0006 
0007 #include "StructureFunction.h"
0008 
0009 /**
0010  * Use data files from \cite bastami2019ww to calculate structure functions.
0011  */
0012 class ProkudinSfSet final : public SfSet {
0013     struct Impl;
0014     Impl* _impl;
0015 
0016     // Fragmentation functions.
0017     double D1(Hadron h, unsigned fl, double z, double Q_sq) const;
0018     double H1perpM1(Hadron h, unsigned fl, double z, double Q_sq) const;
0019 
0020     // Transverse momentum distributions.
0021     double xf1(unsigned fl, double x, double Q_sq) const;
0022     double xf1TperpM1(unsigned fl, double x, double Q_sq) const;
0023     double xg1(unsigned fl, double x, double Q_sq) const;
0024     double xgT(unsigned fl, double x, double Q_sq) const;
0025     double xh1(unsigned fl, double x, double Q_sq) const;
0026     double xh1M1(unsigned fl, double x, double Q_sq) const;
0027     double xh1LperpM1(unsigned fl, double x, double Q_sq) const;
0028     double xh1TperpM2(unsigned fl, double x, double Q_sq) const;
0029     double xh1perpM1(unsigned fl, double x, double Q_sq) const;
0030 
0031 public:
0032     ProkudinSfSet();
0033     ProkudinSfSet(ProkudinSfSet const& other) = delete;
0034     ProkudinSfSet(ProkudinSfSet&& other) noexcept;
0035     ProkudinSfSet& operator=(ProkudinSfSet const& other) = delete;
0036     ProkudinSfSet& operator=(ProkudinSfSet&& other) noexcept;
0037     virtual ~ProkudinSfSet();
0038 
0039     // Structure functions.
0040     double F_UUT(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const override;
0041     double F_UU_cos_phih(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const override;
0042     double F_UU_cos_2phih(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const override;
0043 
0044     double F_UL_sin_phih(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const override;
0045     double F_UL_sin_2phih(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const override;
0046 
0047     double F_UTT_sin_phih_m_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const override;
0048     double F_UT_sin_2phih_m_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const override;
0049     double F_UT_sin_3phih_m_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const override;
0050     double F_UT_sin_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const override;
0051     double F_UT_sin_phih_p_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const override;
0052 
0053     double F_LL(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const override;
0054     double F_LL_cos_phih(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const override;
0055 
0056     double F_LT_cos_phih_m_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const override;
0057     double F_LT_cos_2phih_m_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const override;
0058     double F_LT_cos_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const override;
0059 };
0060 
0061 #endif
0062