Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // Arrays containing helicity combinations for indexing.
0002 // Moved to a seperate file to not clutter up reaction_kinematics.hpp
0003 //
0004 // Author:       Daniel Winney (2020)
0005 // Affiliation:  Joint Physics Analysis Center (JPAC)
0006 // Email:        dwinney@iu.edu
0007 // ---------------------------------------------------------------------------
0008 
0009 #ifndef _HELIC_COMBO_
0010 #define _HELIC_COMBO_
0011 
0012 #include <iostream>
0013 #include <vector>
0014 #include <array>
0015 
0016 namespace jpacPhoto
0017 {
0018     const std::vector< std::array<int, 4> > SPIN_ZERO_HELICITIES =
0019     {
0020     //  {  γ,  p,  S,  p'}
0021         {  1, -1,  0, -1},
0022         {  1, -1,  0,  1},
0023         {  1,  1,  0, -1},
0024         {  1,  1,  0,  1},
0025         { -1, -1,  0, -1},
0026         { -1, -1,  0,  1},
0027         { -1,  1,  0, -1},
0028         { -1,  1,  0,  1} 
0029     };
0030 
0031     const std::vector< std::array<int, 4> > SPIN_ONE_HELICITIES =
0032     {
0033     //  {  γ,  p,  V,  p'}
0034         {  1, -1,  1, -1},
0035         {  1, -1,  1,  1},
0036         {  1, -1,  0, -1},
0037         {  1, -1,  0,  1},
0038         {  1, -1, -1, -1},
0039         {  1, -1, -1,  1},
0040         {  1,  1,  1, -1},
0041         {  1,  1,  1,  1},
0042         {  1,  1,  0, -1},
0043         {  1,  1,  0,  1},
0044         {  1,  1, -1, -1},
0045         {  1,  1, -1,  1},
0046         { -1, -1,  1, -1},
0047         { -1, -1,  1,  1},
0048         { -1, -1,  0, -1},
0049         { -1, -1,  0,  1},
0050         { -1, -1, -1, -1},
0051         { -1, -1, -1,  1},
0052         { -1,  1,  1, -1},
0053         { -1,  1,  1,  1},
0054         { -1,  1,  0, -1},
0055         { -1,  1,  0,  1}, 
0056         { -1,  1, -1, -1},
0057         { -1,  1, -1,  1}
0058     };
0059 
0060     const std::vector< std::array<int, 4> > SPIN_TWO_HELICITIES =
0061     {
0062     //  {  γ,  p,  V,  p'}
0063         {  1, -1,  2, -1},
0064         {  1, -1,  2,  1},
0065         {  1, -1,  1, -1},
0066         {  1, -1,  1,  1},
0067         {  1, -1,  0, -1},
0068         {  1, -1,  0,  1},
0069         {  1, -1, -1, -1},
0070         {  1, -1, -1,  1},
0071         {  1, -1, -2, -1},
0072         {  1, -1, -2,  1},
0073         {  1,  1,  2, -1},
0074         {  1,  1,  2,  1},
0075         {  1,  1,  1, -1},
0076         {  1,  1,  1,  1},
0077         {  1,  1,  0, -1},
0078         {  1,  1,  0,  1},
0079         {  1,  1, -1, -1},
0080         {  1,  1, -1,  1},
0081         {  1,  1, -2, -1},
0082         {  1,  1, -2,  1},
0083         { -1, -1,  2, -1},
0084         { -1, -1,  2,  1},
0085         { -1, -1,  1, -1},
0086         { -1, -1,  1,  1},
0087         { -1, -1,  0, -1},
0088         { -1, -1,  0,  1},
0089         { -1, -1, -1, -1},
0090         { -1, -1, -1,  1},
0091         { -1, -1, -2, -1},
0092         { -1, -1, -2,  1},
0093         { -1,  1,  2, -1},
0094         { -1,  1,  2,  1},
0095         { -1,  1,  1, -1},
0096         { -1,  1,  1,  1},
0097         { -1,  1,  0, -1},
0098         { -1,  1,  0,  1}, 
0099         { -1,  1, -1, -1},
0100         { -1,  1, -1,  1},
0101         { -1,  1, -2, -1},
0102         { -1,  1, -2,  1}
0103     };
0104 
0105 
0106     inline std::vector<std::array<int, 4>> get_helicities(int J)
0107     {
0108         switch (J)
0109         {   
0110             case 0: return SPIN_ZERO_HELICITIES;
0111             case 1: return SPIN_ONE_HELICITIES;
0112             case 2: return SPIN_TWO_HELICITIES;
0113             default:
0114             {
0115                 std::cout << "Error! Amplitudes for spin J = " << J << " not yet implemented. Quitting...\n";
0116                 exit(0);
0117             }
0118         };
0119         
0120         return {};
0121     };
0122 };
0123 
0124 #endif