|
|
|||
File indexing completed on 2026-09-27 09:14:54
0001 // Charged axial-vector meson photoproduction proceeding through a pseudoscalar (pion) exchange 0002 // 0003 // Author: Daniel Winney (2020) 0004 // Affiliation: Joint Physics Analysis Center (JPAC) 0005 // Email: dwinney@iu.edu 0006 // --------------------------------------------------------------------------- 0007 // References: 0008 // [1] arXiv:1503.02125 [hep-ph] 0009 // --------------------------------------------------------------------------- 0010 0011 #ifndef _PSCALAR_ 0012 #define _PSCALAR_ 0013 0014 #include "amplitude.hpp" 0015 #include "regge_trajectory.hpp" 0016 0017 // --------------------------------------------------------------------------- 0018 // pseudoscalar_exchange class describes the amplitude for a spin-0 exchange 0019 // in the t-channel. Derived in terms of simple feynman rules at tree level. 0020 // 0021 // Initialization required a reaction_kinematics object. 0022 // Then either: the mass (in GeV) of the exchange (for fixed-spin exchange), 0023 // or: a pointer to a linear_trajectory object (for Reggeize exchange). 0024 // and an optional string to identify the amplitude with. 0025 // 0026 // Evaluation requires two couplings: 0027 // photon coupling, gGamma, and nucleon coupling, gNN respectively. 0028 // 0029 // Set couplings with amp.set_params({gGamma, gNN}); 0030 // --------------------------------------------------------------------------- 0031 0032 namespace jpacPhoto 0033 { 0034 class pseudoscalar_exchange : public amplitude 0035 { 0036 public: 0037 // constructor for fixed meson exchange 0038 pseudoscalar_exchange(reaction_kinematics * xkinem, double mass, std::string name = "pseudoscalar_exchange") 0039 : amplitude(xkinem, name), _mEx2(mass*mass), _reggeized(false) 0040 { 0041 set_nParams(2); 0042 check_JP(xkinem->_jp); 0043 }; 0044 0045 // constructors for regge exchange 0046 pseudoscalar_exchange(reaction_kinematics * xkinem, linear_trajectory * traj, std::string name = "pseudoscalar_exchange") 0047 : amplitude(xkinem, name), _alpha(traj), _reggeized(true) 0048 { 0049 set_nParams(2); 0050 check_JP(xkinem->_jp); 0051 }; 0052 0053 // Setting utility 0054 void set_params(std::vector<double> params) 0055 { 0056 check_nParams(params); 0057 _gGamma = params[0]; 0058 _gNN = params[1]; 0059 }; 0060 0061 // Whether or not to include an exponential form factor (default false) 0062 void set_formfactor(bool FF, double bb = 0.) 0063 { 0064 _useFF = FF; 0065 _b = bb; 0066 } 0067 0068 // Assemble the helicity amplitude by contracting the spinor indices 0069 std::complex<double> helicity_amplitude(std::array<int, 4> helicities, double xs, double xt); 0070 0071 // only axial-vector kinematics allowed 0072 inline std::vector<std::array<int,2>> allowedJP() 0073 { 0074 return {{1, 1}}; 0075 }; 0076 0077 private: 0078 0079 // Whether to use fixed-spin propagator (false) or regge (true) 0080 bool _reggeized; 0081 0082 // Mass of the exchanged pseudo-scalar (if REGGE = false) 0083 // ignored otherwise 0084 double _mEx2; 0085 0086 // Regge trajectory for the pion (if REGGE = true) 0087 // ignored otherwise 0088 linear_trajectory * _alpha; 0089 0090 // Coupling constants 0091 double _gGamma = 0.; // Gamma - Axial - Pseudoscalar coupling 0092 double _gNN = 0.; // Pseudoscalar - Nucleon coupling 0093 0094 bool _useFF = false; // Whether to include the exponential form factor 0095 double _b = 0.; // "t-slope" parameter in the FF 0096 0097 // Whether to switch to using the feynman rules 0098 bool _useFourVecs = false; 0099 0100 // Photon - pseudoscalar - Axial vertex 0101 std::complex<double> top_vertex(double lam_gam, double lam_vec); 0102 0103 // Pseudoscalar - Nucleon vertex 0104 std::complex<double> bottom_vertex(double lam_targ, double lam_rec); 0105 0106 // Simple pole propagator 0107 std::complex<double> scalar_propagator(); 0108 }; 0109 }; 0110 0111 #endif
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|