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 StructureFunction_
0005 #define StructureFunction_
0006 
0007 enum class Hadron {
0008     PI_0,
0009     PI_P,
0010     PI_M,
0011     K_0,
0012     K_P,
0013     K_M,
0014 };
0015 
0016 /**
0017  * Complete set of structure functions bundled together. This abstract class is
0018  * to be derived for user-provided structure functions. If the structure
0019  * functions can be factorized into transverse momentum distributions (TMDs),
0020  * then one of the derived classes TmdSfSet, GaussianTmdSfSet, WwTmdSfSet, or
0021  * GaussianWwTmdSfSet will be more suitable.
0022  *
0023  * This class contains all leading twist and sub-leading twist structure
0024  * functions.
0025  */
0026 class SfSet {
0027 public:
0028     SfSet() { }
0029     SfSet(SfSet const&) = delete;
0030     SfSet(SfSet&&) = delete;
0031     SfSet& operator=(SfSet const&) = delete;
0032     SfSet& operator=(SfSet&&) = delete;
0033     virtual ~SfSet() = default;
0034 
0035     virtual double F_UUL(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0036         return 0.;
0037     }
0038     virtual double F_UUT(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0039         return 0.;
0040     }
0041     virtual double F_UU_cos_phih(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0042         return 0.;
0043     }
0044     virtual double F_UU_cos_2phih(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0045         return 0.;
0046     }
0047 
0048     virtual double F_UL_sin_phih(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0049         return 0.;
0050     }
0051     virtual double F_UL_sin_2phih(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0052         return 0.;
0053     }
0054 
0055     virtual double F_UTL_sin_phih_m_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0056         return 0.;
0057     }
0058     virtual double F_UTT_sin_phih_m_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0059         return 0.;
0060     }
0061     virtual double F_UT_sin_2phih_m_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0062         return 0.;
0063     }
0064     virtual double F_UT_sin_3phih_m_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0065         return 0.;
0066     }
0067     virtual double F_UT_sin_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0068         return 0.;
0069     }
0070     virtual double F_UT_sin_phih_p_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0071         return 0.;
0072     }
0073 
0074     virtual double F_LU_sin_phih(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0075         return 0.;
0076     }
0077 
0078     virtual double F_LL(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0079         return 0.;
0080     }
0081     virtual double F_LL_cos_phih(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0082         return 0.;
0083     }
0084 
0085     virtual double F_LT_cos_phih_m_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0086         return 0.;
0087     }
0088     virtual double F_LT_cos_2phih_m_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0089         return 0.;
0090     }
0091     virtual double F_LT_cos_phis(Hadron h, double x, double z, double Q_sq, double ph_t_sq) const {
0092         return 0.;
0093     }
0094 };
0095 
0096 #endif
0097