Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // Abstract class for a regge trajectory. Any user-defined class for a specific

0002 // for of the RT can be used in amplitudes (e.g. pomeron_exchange) as long as it

0003 // is derived from this class

0004 //

0005 // Author:       Daniel Winney (2020)

0006 // Affiliation:  Joint Physics Analysis Center (JPAC)

0007 // Email:        dwinney@iu.edu

0008 // ---------------------------------------------------------------------------

0009 
0010 #ifndef _REGGE_TRAJ_
0011 #define _REGGE_TRAJ_
0012 
0013 #include <complex>
0014 #include <string>
0015 
0016 class regge_trajectory
0017 {
0018     public:
0019 
0020     // constructor

0021     regge_trajectory(std::string name = "")
0022     : _parent(name)
0023     {};
0024 
0025     regge_trajectory(int sig, std::string name = "")
0026     : _signature(sig), _parent(name)
0027     {};
0028 
0029     // copy constructor

0030     regge_trajectory(const regge_trajectory & old)
0031     : _parent(old._parent), _signature(old._signature)
0032     {};
0033 
0034     // Only need a function to evaluate the trajectory at some s

0035     virtual std::complex<double> eval(double s) = 0;
0036 
0037     virtual std::complex<double> slope(double s = 0.){return 0.;};
0038 
0039     // These parameters define the trajectory

0040     // name, spin, and mass of the lowest lying resonance on the parent trajectory

0041     std::string _parent;
0042     int _signature;
0043 };
0044 
0045 
0046 // Basic linear regge_trajectory

0047 class linear_trajectory : public regge_trajectory
0048 {
0049     private:
0050 
0051     // Intercept and slope

0052     double _a0, _aprime;
0053 
0054     public:
0055 
0056     // Empty constructor

0057     linear_trajectory(){};
0058 
0059     // Parameterized constructor

0060     linear_trajectory(int sig, double inter, double slope, std::string name = "")
0061     : regge_trajectory(sig, name),
0062       _a0(inter), _aprime(slope)
0063     {};
0064 
0065     // copy Constructor

0066     linear_trajectory(const linear_trajectory & old)
0067     : regge_trajectory(old),
0068       _a0(old._a0), _aprime(old._aprime)
0069     {};
0070 
0071     // Setting utility

0072     void set_params(double inter, double slope)
0073     {
0074         _a0 = inter; _aprime = slope;
0075     };
0076 
0077     std::complex<double> eval(double s)
0078     {
0079         return _a0 + _aprime * s;
0080     };
0081 
0082     std::complex<double> slope(double s = 0.)
0083     {
0084         return _aprime;
0085     };
0086 };
0087 
0088 #endif