File indexing completed on 2025-04-19 09:10:04
0001 #ifndef HADRONS_ME_Library_PseudoScalar_Decay_MEs_H
0002 #define HADRONS_ME_Library_PseudoScalar_Decay_MEs_H
0003
0004 #include "HADRONS++/ME_Library/HD_ME_Base.H"
0005 #include "ATOOLS/Math/MyComplex.H"
0006
0007 namespace HADRONS {
0008 class P_PP : public HD_ME_Base {
0009 Complex m_global;
0010 public:
0011 P_PP(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0012 HD_ME_Base(flavs,n,indices,name), m_global(Complex(0.,0.)) {};
0013 void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0014 void SetModelParameters(GeneralModel);
0015 };
0016
0017 class P_LNu : public HD_ME_Base {
0018 Complex m_global;
0019 public:
0020 P_LNu(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0021 HD_ME_Base(flavs,n,indices,name), m_global(Complex(0.,0.)) {};
0022 void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0023 void SetModelParameters(GeneralModel);
0024 };
0025
0026 class P_PV : public HD_ME_Base {
0027 int m_npol;
0028 Complex m_global;
0029 public:
0030 P_PV(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0031 HD_ME_Base(flavs,n,indices,name), m_npol(3), m_global(Complex(0.,0.)) {};
0032 void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0033 void SetModelParameters(GeneralModel);
0034 };
0035
0036 class P_VV : public HD_ME_Base {
0037 int m_npol1,m_npol2;
0038 Complex m_global;
0039 public:
0040 P_VV(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0041 HD_ME_Base(flavs,n,indices,name), m_npol1(3), m_npol2(3), m_global(Complex(0.,0.)) {};
0042 void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0043 void SetModelParameters(GeneralModel);
0044 };
0045
0046 class S_VV : public HD_ME_Base {
0047 int m_npol1,m_npol2;
0048 Complex m_global;
0049 public:
0050 S_VV(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0051 HD_ME_Base(flavs,n,indices,name), m_npol1(3), m_npol2(3), m_global(Complex(0.,0.)) {};
0052 void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0053 void SetModelParameters(GeneralModel);
0054 };
0055
0056 class P_PT : public HD_ME_Base {
0057 Complex m_global;
0058 public:
0059 P_PT(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0060 HD_ME_Base(flavs,n,indices,name), m_global(Complex(0.,0.)) {};
0061 void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0062 void SetModelParameters(GeneralModel);
0063 };
0064
0065 class P_PPP : public HD_ME_Base {
0066 int m_ff;
0067 double m_g,m_h,m_j,m_k,m_f;
0068 Complex m_global;
0069 double Formfactor(const ATOOLS::Vec4D *);
0070 public:
0071 P_PPP(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0072 HD_ME_Base(flavs,n,indices,name),
0073 m_ff(0), m_g(0.), m_h(0.), m_j(0.), m_k(0.), m_f(0.),
0074 m_global(Complex(0.,0.)) {};
0075 void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0076 void SetModelParameters(GeneralModel);
0077 };
0078
0079 class P_VFF : public HD_ME_Base {
0080 int m_npol;
0081 bool m_VDM;
0082 double m_VDM_mass, m_VDM_width;
0083 Complex m_global;
0084 public:
0085 P_VFF(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0086 HD_ME_Base(flavs,n,indices,name),
0087 m_npol(3), m_VDM(false), m_VDM_mass(0.), m_VDM_width(0.), m_global(Complex(0.,0.)) {};
0088 void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0089 void SetModelParameters(GeneralModel);
0090 };
0091
0092 class P_PLNu : public HD_ME_Base {
0093 int m_ff;
0094 double m_Norm,m_fP,m_aplus0,m_aplus1,m_azero0,m_azero1,m_masssqr_diff;
0095 Complex m_global;
0096
0097 double fplus(const double,const double,const double);
0098 double fzero(const double,const double,const double);
0099 public:
0100 P_PLNu(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0101 HD_ME_Base(flavs,n,indices,name), m_ff(0),m_fP(1.),m_Norm(1.),
0102 m_aplus0(0.),m_aplus1(0.),m_azero0(0.),m_azero1(0.),m_masssqr_diff(0.),
0103 m_global(Complex(0.,0.)) {};
0104 void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0105 void SetModelParameters(GeneralModel);
0106 };
0107
0108 class P_PPLNu : public HD_ME_Base {
0109 int m_ff;
0110 double m_fP,m_f1_0,m_lambda1,m_f2_0,m_lambda2,m_g_0,m_kappa;
0111 Complex m_global;
0112
0113 double f1(const double,const double,const double);
0114 double f2(const double,const double,const double);
0115 double g(const double,const double,const double);
0116 public:
0117 P_PPLNu(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0118 HD_ME_Base(flavs,n,indices,name), m_ff(0),m_fP(1.),
0119 m_f1_0(1.),m_lambda1(0.),m_f2_0(1.),m_lambda2(0.),m_g_0(1.),m_kappa(0.),
0120 m_global(Complex(0.,0.)) {};
0121 void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0122 void SetModelParameters(GeneralModel);
0123 };
0124
0125 class P_FFFF : public HD_ME_Base {
0126 bool m_exchange;
0127 Complex m_global;
0128 public:
0129 P_FFFF(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0130 HD_ME_Base(flavs,n,indices,name), m_exchange(false), m_global(Complex(0.,0.)) {};
0131 void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0132 void SetModelParameters(GeneralModel);
0133 };
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186
0187
0188
0189
0190
0191
0192
0193
0194
0195
0196
0197
0198
0199
0200
0201
0202
0203
0204
0205
0206
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228
0229
0230
0231
0232 };
0233
0234 #endif