Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-27 09:14:54

0001 // Vector meson photoproduction dynamics proceeding through a pomeron exchange
0002 //
0003 // Author:       Daniel Winney (2020)
0004 // Affiliation:  Joint Physics Analysis Center (JPAC)
0005 // Email:        dwinney@iu.edu
0006 // ---------------------------------------------------------------------------
0007 // REFERENCES:
0008 // [1] 1907.09393
0009 // [2] 1606.08912
0010 // [3] 1904.11706
0011 // ---------------------------------------------------------------------------
0012 
0013 #ifndef _POMERON_
0014 #define _POMERON_
0015 
0016 #include "amplitude.hpp"
0017 #include "regge_trajectory.hpp"
0018 
0019 // ---------------------------------------------------------------------------
0020 // The pomeron_exchange class describes the amplitude correspinding to
0021 // vector meson photoproduction via a vector pomeron coupling.
0022 //
0023 // As a reggeon exchange model it is parameterized in terms three functions
0024 // 1. top_vertex() coupling the vector meson to the incoming photon
0025 // 2. bottom_vertex() coupling the two proton dirac spinors
0026 // 3. regge_factor() the function describing the energy dependence of the amplitude
0027 // ---------------------------------------------------------------------------
0028 
0029 namespace jpacPhoto
0030 {
0031     class pomeron_exchange : public amplitude
0032     {
0033         public:
0034 
0035         // Constructor
0036         // need a pointer to kinematic object, pointer to trajectory.
0037         pomeron_exchange(reaction_kinematics * xkinem, regge_trajectory * alpha, int model = 0, std::string name = "pomeron_exchange")
0038         : amplitude(xkinem, name), _traj(alpha), _model(model)
0039         {
0040             set_nParams(2);
0041             check_JP(xkinem->_jp);
0042         };
0043 
0044         // Setting utility
0045         void set_params(std::vector<double> params)
0046         {
0047             check_nParams(params);
0048             _norm = params[0];
0049             _b0 = params[1];
0050         };
0051 
0052         // Assemble the helicity amplitude by contracting the lorentz indices
0053         std::complex<double> helicity_amplitude(std::array<int, 4> helicities, double s, double t);
0054 
0055         // only vector kinematics allowed
0056         inline std::vector<std::array<int,2>> allowedJP()
0057         {
0058             return {{1, -1}};
0059         };
0060 
0061         private:
0062         
0063         // Which model to use. 
0064         int _model = 0; 
0065         // 0 - model in [1] Lesniak-Szcepaniak
0066         // 1 - model in [2] Helicity conserving
0067         // 2 - model in [3] Wang et al.
0068 
0069         double _norm = 0., _b0 = 0.; // Regge factor parameters: normalization and t-slope
0070         regge_trajectory * _traj;
0071 
0072         // Photon - Vector - Pomeron vertex
0073         std::complex<double> top_vertex(int mu, int lam_gam, int lam_vec);
0074 
0075         // Nucleon - Nucleon - Pomeron vertex
0076         std::complex<double> bottom_vertex(int mu, int lam_targ, int lam_rec);
0077 
0078         // Energy dependence from Pomeron propogator
0079         std::complex<double> regge_factor();
0080     };
0081 };
0082 
0083 #endif