File indexing completed on 2025-01-18 10:06:32
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef Pythia8_SusyCouplings_H
0011 #define Pythia8_SusyCouplings_H
0012
0013 #include "Pythia8/PythiaComplex.h"
0014 #include "Pythia8/Settings.h"
0015 #include "Pythia8/StandardModel.h"
0016 #include "Pythia8/SusyLesHouches.h"
0017
0018 namespace Pythia8 {
0019
0020 class ParticleData;
0021
0022
0023
0024
0025
0026
0027 class CoupSUSY {
0028
0029 public:
0030
0031
0032 CoupSUSY() : isInit(false), isSUSY(false), isNMSSM(false),
0033 isLLE(false), isLQD(false), isUDD(false), mWpole(), wWpole(), mZpole(),
0034 wZpole(), mW(), mZ(), sin2W(), sinW(), cosW(), tanb(), cosb(), sinb(),
0035 muHiggs(), alphaHiggs(), mAHiggs(), LqqZ(), RqqZ(), LllZ(), RllZ(),
0036 rvLLE(), rvLQD(), rvUDD(), slhaPtr(), loggerPtr(), settingsPtr(),
0037 particleDataPtr(), coupSMPtr() {}
0038
0039
0040 void initSUSY(SusyLesHouches* slhaPtrIn, Info* infoPtrIn);
0041
0042
0043 bool isInit, isSUSY, isNMSSM, isLLE, isLQD, isUDD;
0044
0045
0046 double mWpole, wWpole, mZpole, wZpole;
0047
0048
0049
0050 double mW, mZ, sin2W, sinW, cosW;
0051
0052
0053 double tanb, cosb, sinb;
0054
0055
0056 double muHiggs, alphaHiggs, mAHiggs;
0057
0058
0059 complex LsddG[7][4], RsddG[7][4];
0060 complex LsuuG[7][4], RsuuG[7][4];
0061
0062 complex getLsqqG(int iGenSq, int idQ) {if (abs(iGenSq) > 1000000)
0063 iGenSq = 3*(abs(iGenSq)/2000000) + (abs(iGenSq)%10+1)/2;
0064 return (abs(idQ)%2 == 0) ? LsuuG[iGenSq][abs(idQ)/2]
0065 : LsddG[iGenSq][(abs(idQ)+1)/2] ;}
0066 complex getRsqqG(int iGenSq, int idQ) {if (abs(iGenSq) > 1000000)
0067 iGenSq = 3*(abs(iGenSq)/2000000) + (abs(iGenSq)%10+1)/2;
0068 return (abs(idQ)%2 == 0) ? RsuuG[iGenSq][abs(idQ)/2]
0069 : RsddG[iGenSq][(abs(idQ)+1)/2] ;}
0070
0071
0072 complex OLpp[6][6], ORpp[6][6];
0073
0074
0075 complex OLp[3][3], ORp[3][3];
0076
0077
0078 complex OL[6][3], OR[6][3];
0079
0080
0081 double LqqZ[7], RqqZ[7];
0082
0083
0084 complex LsdsdZ[7][7], RsdsdZ[7][7];
0085 complex LsusuZ[7][7], RsusuZ[7][7];
0086 complex getLsqsqZ(int idSq1, int idSq2) {
0087 if (abs(idSq1)%2 != abs(idSq2)%2) return complex(0.0,0.0);
0088 int iGen1 = 3*(abs(idSq1)/2000000) + (abs(idSq1)%10+1)/2;
0089 int iGen2 = 3*(abs(idSq2)/2000000) + (abs(idSq2)%10+1)/2;
0090 return (abs(idSq1)%2 == 0) ? LsusuZ[iGen1][iGen2] : LsdsdZ[iGen1][iGen2];}
0091 complex getRsqsqZ(int idSq1, int idSq2) {
0092 if (abs(idSq1)%2 != abs(idSq2)%2) return complex(0.0,0.0);
0093 int iGen1 = 3*(abs(idSq1)/2000000) + (abs(idSq1)%10+1)/2;
0094 int iGen2 = 3*(abs(idSq2)/2000000) + (abs(idSq2)%10+1)/2;
0095 return (abs(idSq1)%2 == 0) ? RsusuZ[iGen1][iGen2] : RsdsdZ[iGen1][iGen2];}
0096
0097
0098 complex LudW[4][4], RudW[4][4];
0099
0100
0101 complex LsusdW[7][7], RsusdW[7][7];
0102
0103
0104 complex LsddX[7][4][6], RsddX[7][4][6];
0105 complex LsuuX[7][4][6], RsuuX[7][4][6];
0106 complex getLsqqX(int iSq, int idQ, int iNeut) {return (abs(idQ)%2 == 0)
0107 ? LsuuX[iSq][abs(idQ)/2][iNeut] : LsddX[iSq][(abs(idQ)+1)/2][iNeut] ;}
0108 complex getRsqqX(int iSq, int idQ, int iNeut) {return (abs(idQ)%2 == 0)
0109 ? RsuuX[iSq][abs(idQ)/2][iNeut] : RsddX[iSq][(abs(idQ)+1)/2][iNeut] ;}
0110
0111
0112 complex LsduX[7][4][3], RsduX[7][4][3];
0113
0114
0115 complex LsudX[7][4][3], RsudX[7][4][3];
0116
0117
0118 double LllZ[7], RllZ[7];
0119
0120
0121 complex LlvW[4][4], RlvW[4][4];
0122
0123
0124 complex LslslZ[7][7],RslslZ[7][7];
0125 complex LsvsvZ[7][7],RsvsvZ[7][7];
0126
0127
0128 complex LslsvW[7][7], RslsvW[7][7];
0129
0130
0131 complex LsvvX[7][4][6], RsvvX[7][4][6];
0132 complex LsllX[7][4][6], RsllX[7][4][6];
0133
0134
0135 complex LsvlX[7][4][3], RsvlX[7][4][3];
0136
0137
0138 complex LslvX[7][4][3], RslvX[7][4][3];
0139
0140
0141 double rvLLE[4][4][4], rvLQD[4][4][4], rvUDD[4][4][4];
0142
0143
0144 complex Rusq[7][7], Rdsq[7][7];
0145 complex Rsl[7][7], Rsv[7][7];
0146
0147
0148 int idNeut(int idChi);
0149 int idChar(int idChi);
0150 int idSup(int iSup);
0151 int idSdown(int iSdown);
0152 int idSlep(int iSlep);
0153
0154
0155 int typeNeut(int idPDG);
0156 int typeChar(int idPDG);
0157
0158
0159
0160 SusyLesHouches* slhaPtr;
0161
0162 private:
0163
0164
0165 Logger* loggerPtr;
0166
0167
0168 Settings* settingsPtr;
0169
0170
0171 ParticleData* particleDataPtr;
0172
0173
0174 CoupSM* coupSMPtr;
0175
0176 };
0177
0178
0179
0180 }
0181
0182 #endif