File indexing completed on 2026-09-27 09:14:54
0001
0002
0003
0004
0005
0006
0007
0008 #ifndef _AXIAL_
0009 #define _AXIAL_
0010
0011 #include "amplitude.hpp"
0012 #include "regge_trajectory.hpp"
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 namespace jpacPhoto
0028 {
0029 class vector_exchange : public amplitude
0030 {
0031 public:
0032
0033
0034 vector_exchange(reaction_kinematics * xkinem, double mass, std::string id = "vector_exchange")
0035 : amplitude(xkinem, id), _mEx2(mass*mass), _ifReggeized(false)
0036 {
0037 set_nParams(3);
0038 check_JP(xkinem->_jp);
0039
0040
0041 if (xkinem->_jp[0] == 0) _useCovariant = true;
0042 };
0043
0044
0045 vector_exchange(reaction_kinematics * xkinem, linear_trajectory * traj, std::string id = "vector_exchange")
0046 : amplitude(xkinem, id), _alpha(traj), _ifReggeized(true)
0047 {
0048 set_nParams(3);
0049 check_JP(xkinem->_jp);
0050
0051 if (xkinem->_jp[0] == 0)
0052 {
0053 std::cout << "Error! Scalar production via Reggeized vector_exchange not yet implemented...\n";
0054 exit(0);
0055 }
0056 };
0057
0058
0059 inline void set_params(std::vector<double> params)
0060 {
0061 check_nParams(params);
0062 _gGam = params[0];
0063 _gV = params[1];
0064 _gT = params[2];
0065 };
0066
0067
0068 inline void set_formfactor(int FF, double bb = 0.)
0069 {
0070 _useFormFactor = FF;
0071 _cutoff = bb;
0072 }
0073
0074
0075 std::complex<double> helicity_amplitude(std::array<int, 4> helicities, double s, double t);
0076
0077
0078 inline std::vector<std::array<int,2>> allowedJP()
0079 {
0080 return {{1, 1}, {0, 1}, {0, -1}};
0081 };
0082
0083 private:
0084
0085
0086 bool _ifReggeized;
0087
0088 linear_trajectory * _alpha;
0089 double _zt;
0090
0091
0092 bool _useCovariant = false;
0093
0094
0095 int _useFormFactor = 0;
0096 double _cutoff = 0.;
0097 double form_factor();
0098
0099
0100 double _gGam = 0., _gpGam = 0., _gV = 0., _gT = 0.;
0101
0102
0103
0104
0105
0106 double _mEx2 = 0.;
0107
0108
0109 std::complex<double> covariant_amplitude(std::array<int, 4> helicities);
0110
0111
0112 std::complex<double> exchange_momenta(int mu);
0113
0114
0115 std::complex<double> top_vertex(int mu, int lam_gam, int lam_vec);
0116
0117
0118 std::complex<double> bottom_vertex(int nu, int lam_targ, int lam_rec);
0119
0120
0121 std::complex<double> field_tensor(int mu, int nu, int lambda);
0122
0123
0124 std::complex<double> vector_propagator(int mu, int nu);
0125
0126
0127
0128
0129
0130 std::complex<double> top_residue(int lam_gam, int lam_vec);
0131
0132
0133 std::complex<double> bottom_residue(int lam_targ, int lam_rec);
0134
0135
0136 std::complex<double> regge_propagator(int j, int lam, int lamp);
0137
0138
0139 std::complex<double> half_angle_factor(int lam, int lamp);
0140
0141
0142 std::complex<double> barrier_factor(int j, int M);
0143 };
0144 };
0145
0146 #endif