Skip to content
Snippets Groups Projects
  • Daniel Winney's avatar
    5cbf92e6
    variable name overhaul: · 5cbf92e6
    Daniel Winney authored
    - global (namespace) constants in all caps
    - masses all follow convention: M_PARTICLENAME
    - decay constants: F_PARTICLENAME
    - all class member variables prefaced with an underscore to differenciate from local variables
    5cbf92e6
    History
    variable name overhaul:
    Daniel Winney authored
    - global (namespace) constants in all caps
    - masses all follow convention: M_PARTICLENAME
    - decay constants: F_PARTICLENAME
    - all class member variables prefaced with an underscore to differenciate from local variables
baryon_resonance.hpp 3.92 KiB
// Parameterization of a resonant amplitude in the s-channel
//
// Author:       Daniel Winney (2020)
// Affiliation:  Joint Physics Analysis Center (JPAC)
// Email:        dwinney@iu.edu
// ---------------------------------------------------------------------------

#ifndef _RESONANCE_
#define _RESONANCE_

#include "amplitude.hpp"

// ---------------------------------------------------------------------------
// baryon_resonance class describes the amplitude corresponding to a narrow
// (Breit-Wigner) resonance in the channel. It is parameterized in terms of
// 3 functions:
//
// 1. Breit-Wigner pole for given mass and width
// 2. Hadronic decay coupling to J/psi p final state
// 3. Photo-excitation coupling to the gamma p initial state
// ---------------------------------------------------------------------------

namespace jpacPhoto
{
    class baryon_resonance : public amplitude
    {
        public:
        // Constructor
        baryon_resonance(reaction_kinematics * xkinem, int j, int p, double mass, double width, std::string name = "baryon_resonance")
        : amplitude(xkinem, name),
          _mRes(mass), _gamRes(width), 
          _resJ(j), _resP(p), _naturality(p * pow(-1, (j-1)/2))
        {
            set_nParams(2);
            check_JP(xkinem->_jp);

            // save momentum and other J^P dependent quantities
            _pibar = real(xkinem->_initial_state->momentum(mass * mass));
            _pfbar = real(xkinem->_final_state->momentum(mass * mass));

            if (abs(p) != 1)
            {
                std::cout << "Invalid parity " << p << " passed to " << name << ". Quitting...\n";
                exit(0);
            };
            switch (p * j)
            {
                case  1: {_lmin = 0; _pt = 2./3.; break;}
                case -1: {_lmin = 1; _pt = 3./5.; break;}
                case  3: {_lmin = 1; _pt = 3./5.; break;}
                case -3: {_lmin = 0; _pt = 2./3.; break;}
                case  5: {_lmin = 1; _pt = 3./5.; break;}
                case -5: {_lmin = 2; _pt = 1./3.; break;}
            
                default:
                {
                std::cout << "\nbaryon_resonance: spin-parity combination for J = " << j << "/2 and p = " << p << " not available. ";
                std::cout << "Quiting... \n";
                exit(0);
                }
            };
        };

        // Setting utility
        void set_params(std::vector<double> params)
        {
            check_nParams(params);
            _xBR = params[0];
            _photoR = params[1];
        };

        // Combined total amplitude including Breit Wigner pole
        std::complex<double> helicity_amplitude(std::array<int, 4> helicities, double s, double t);

        // only vector kinematics allowed
        inline std::vector<std::array<int,2>> allowedJP()
        {
            return {{1, -1}};
        };

        private:

        // Photoexcitation helicity amplitude for the process gamma p -> R
        std::complex<double> photo_coupling(int lam_i);

        // Hadronic decay helicity amplitude for the R -> J/psi p process
        std::complex<double> hadronic_coupling(int lam_f);

        // Ad-hoc threshold factor to kill the resonance at threshold
        double threshold_factor(double beta);

        int _resJ, _resP, _naturality; // (2xSpin) and parity of the resonance
        double _mRes, _gamRes; // Resonant mass and width

        int _lmin; // lowest allowed relative angular momentum
        double _pt; // Combinatorial factor due to only transverse polarized J/psi contribute

        // Couplings
        double _xBR; // Hadronic banching fraction to j/psi p
        double _photoR; // Photocoupling ratio

        // Initial and final CoM momenta evaluated at resonance energy.
        double _pibar, _pfbar;

        // saved energies and angle
        double _s, _t, _theta;
    };
};
#endif