File indexing completed on 2026-06-02 08:51:48
0001 #ifndef DDVCS_PROCESS_DMSW22_H
0002 #define DDVCS_PROCESS_DMSW22_H
0003
0004 #include <complex>
0005 #include <string>
0006
0007 #include "../../../utils/type/PhysicalType.h"
0008 #include "DDVCSProcessModule.h"
0009
0010 namespace PARTONS {
0011
0012
0013
0014
0015
0016
0017
0018
0019 class DDVCSProcessDMSW22: public DDVCSProcessModule {
0020 public:
0021
0022 static const unsigned int classId;
0023
0024
0025
0026
0027
0028
0029
0030 DDVCSProcessDMSW22(const std::string &className);
0031
0032
0033
0034
0035 virtual ~DDVCSProcessDMSW22();
0036
0037 virtual DDVCSProcessDMSW22* clone() const;
0038
0039 protected:
0040
0041
0042
0043
0044 DDVCSProcessDMSW22(const DDVCSProcessDMSW22& other);
0045
0046 virtual void initModule();
0047 virtual void isModuleWellConfigured();
0048
0049 virtual PhysicalType<double> CrossSectionBH();
0050 virtual PhysicalType<double> CrossSectionVCS();
0051 virtual PhysicalType<double> CrossSectionInterf();
0052
0053 private:
0054
0055
0056 std::complex<double> ampliBH1(int s2, int s1, int sl, int s);
0057 std::complex<double> ampliBH1crossed(int s2, int s1, int sl, int s);
0058 std::complex<double> ampliBH2(int s2, int s1, int sl, int s);
0059 std::complex<double> ampliBH2crossed(int s2, int s1, int sl, int s);
0060 std::complex<double> ampliVCS(int s2, int s1, int sl, int s);
0061
0062
0063 double crossSectionBH(int targetPolariz);
0064 double crossSectionVCS(int targetPolariz);
0065 double crossSectionInterf(int targetPolariz);
0066
0067
0068 std::complex<double> sKS(const double r1[4], const double r2[4]) const;
0069 std::complex<double> tKS(const double r1[4], const double r2[4]) const;
0070 std::complex<double> fFunction(int lambda, double k0[4], double k1[4],
0071 int lambdaPrime, double k2[4], double k3[4]) const;
0072 std::complex<double> gFunction(int lambda, double L[4], double R[4],
0073 double k[4]) const;
0074 std::complex<double> Yfunction(int s2, int s1) const;
0075 std::complex<double> Zfunction(int s2, int s1) const;
0076 std::complex<double> J2function(int s2, int s1) const;
0077 double MinkProd(const double p[4], const double q[4]) const;
0078 std::complex<double> jFunction(int mu, int helic, double p1[4],
0079 double p2[4]) const;
0080 std::complex<double> J15plus(int s2, int s1) const;
0081 std::complex<double> J25plus(int s2, int s1) const;
0082 double LCperp(int mu, int nu) const;
0083 std::complex<double> Flong(int h1, int s1) const;
0084
0085 void computeInternalVariables(double Mnucleon);
0086
0087
0088 double m_DMSW_r1[4];
0089 double m_DMSW_r2[4];
0090 double m_DMSW_p[4];
0091 double m_DMSW_rPrime1[4];
0092 double m_DMSW_rPrime2[4];
0093 double m_DMSW_rPrime1_tMin[4];
0094 double m_DMSW_rPrime2_tMin[4];
0095 double m_DMSW_pPrim[4];
0096 double m_DMSW_pPrim_tMin[4];
0097 double m_DMSW_epsilon2;
0098 double m_DMSW_Q2Bar;
0099 double m_DMSW_Q2Bar_tMin;
0100
0101 double m_DMSW_cosTheta_e;
0102 double m_DMSW_sinTheta_e;
0103 double m_DMSW_cosGamma;
0104 double m_DMSW_sinGamma;
0105 double m_DMSW_sinGamma_tMin;
0106 double m_DMSW_cosGamma_tMin;
0107
0108
0109 double m_DMSW_y;
0110 double m_DMSW_k[4];
0111 double m_DMSW_k_tMin[4];
0112 double m_DMSW_Delta[4];
0113 double m_DMSW_qPrim[4];
0114 double m_DMSW_q[4];
0115 double m_DMSW_qPrim_tMin[4];
0116 double m_DMSW_q_tMin[4];
0117 double m_DMSW_kPrime[4];
0118 double m_DMSW_lminus[4];
0119 double m_DMSW_lplus[4];
0120 double m_DMSW_kPrime_tMin[4];
0121 double m_DMSW_lminus_tMin[4];
0122 double m_DMSW_lplus_tMin[4];
0123 double m_DMSW_nminus[4];
0124 double m_DMSW_nplus[4];
0125 double m_DMSW_nminus_tMin[4];
0126 double m_DMSW_nplus_tMin[4];
0127 double m_DMSW_nBM[4];
0128 double m_DMSW_nstarBM[4];
0129 double m_DMSW_HATnBM[4];
0130 double m_DMSW_nBM_tMin[4];
0131 double m_DMSW_nstarBM_tMin[4];
0132 double m_DMSW_HATnBM_tMin[4];
0133 double m_DMSW_k0[4];
0134 double m_DMSW_pBar[4];
0135 double m_DMSW_pBar_tMin[4];
0136
0137
0138 double m_DMSW_tMin;
0139
0140
0141 double m_DMSW_LCtensor[4][4][4][4];
0142
0143
0144 double m_DMSW_metric_[4][4];
0145
0146
0147 double m_DMSW_F1;
0148 double m_DMSW_F2;
0149
0150
0151 double m_DMSW_Mnucleon;
0152 double m_DMSW_charge_e;
0153
0154
0155 double m_DMSW_rho;
0156 double m_DMSW_rho_tMin;
0157 double m_DMSW_2pBarqBar;
0158 double m_DMSW_2pBarqBar_tMin;
0159
0160
0161 double m_DMSW_phiL;
0162 double m_DMSW_thetaL;
0163 double m_DMSW_jac;
0164
0165
0166 double m_DMSW_phi;
0167
0168
0169 double m_DMSW_thetaS;
0170 double m_DMSW_phiS;
0171
0172
0173 std::complex<double> m_cffH;
0174 std::complex<double> m_cffE;
0175 std::complex<double> m_cffHt;
0176 std::complex<double> m_cffEt;
0177 std::complex<double> m_cffHL;
0178 std::complex<double> m_cffEL;
0179 };
0180
0181 }
0182
0183 #endif
0184