10 #ifndef Pythia8_SusyCouplings_H
11 #define Pythia8_SusyCouplings_H
13 #include "Pythia8/PythiaComplex.h"
14 #include "Pythia8/Settings.h"
15 #include "Pythia8/StandardModel.h"
16 #include "Pythia8/SusyLesHouches.h"
32 CoupSUSY() : isInit(false), isSUSY(false), isNMSSM(false),
33 isLLE(false), isLQD(false), isUDD(false), mWpole(), wWpole(), mZpole(),
34 wZpole(), mW(), mZ(), sin2W(), sinW(), cosW(), tanb(), cosb(), sinb(),
35 muHiggs(), alphaHiggs(), mAHiggs(), LqqZ(), RqqZ(), LllZ(), RllZ(),
36 rvLLE(), rvLQD(), rvUDD(), slhaPtr(), infoPtr(), settingsPtr(),
37 particleDataPtr(), coupSMPtr() {}
40 void initSUSY(SusyLesHouches* slhaPtrIn, Info* infoPtrIn);
43 bool isInit, isSUSY, isNMSSM, isLLE, isLQD, isUDD;
46 double mWpole, wWpole, mZpole, wZpole;
50 double mW, mZ, sin2W, sinW, cosW;
53 double tanb, cosb, sinb;
56 double muHiggs, alphaHiggs, mAHiggs;
59 complex LsddG[7][4], RsddG[7][4];
60 complex LsuuG[7][4], RsuuG[7][4];
62 complex getLsqqG(
int iGenSq,
int idQ) {
if (abs(iGenSq) > 1000000)
63 iGenSq = 3*(abs(iGenSq)/2000000) + (abs(iGenSq)%10+1)/2;
64 return (abs(idQ)%2 == 0) ? LsuuG[iGenSq][abs(idQ)/2]
65 : LsddG[iGenSq][(abs(idQ)+1)/2] ;}
66 complex getRsqqG(
int iGenSq,
int idQ) {
if (abs(iGenSq) > 1000000)
67 iGenSq = 3*(abs(iGenSq)/2000000) + (abs(iGenSq)%10+1)/2;
68 return (abs(idQ)%2 == 0) ? RsuuG[iGenSq][abs(idQ)/2]
69 : RsddG[iGenSq][(abs(idQ)+1)/2] ;}
72 complex OLpp[6][6], ORpp[6][6];
75 complex OLp[3][3], ORp[3][3];
78 complex OL[6][3], OR[6][3];
81 double LqqZ[7], RqqZ[7];
84 complex LsdsdZ[7][7], RsdsdZ[7][7];
85 complex LsusuZ[7][7], RsusuZ[7][7];
86 complex getLsqsqZ(
int idSq1,
int idSq2) {
87 if (abs(idSq1)%2 != abs(idSq2)%2)
return complex(0.0,0.0);
88 int iGen1 = 3*(abs(idSq1)/2000000) + (abs(idSq1)%10+1)/2;
89 int iGen2 = 3*(abs(idSq2)/2000000) + (abs(idSq2)%10+1)/2;
90 return (abs(idSq1)%2 == 0) ? LsusuZ[iGen1][iGen2] : LsdsdZ[iGen1][iGen2];}
91 complex getRsqsqZ(
int idSq1,
int idSq2) {
92 if (abs(idSq1)%2 != abs(idSq2)%2)
return complex(0.0,0.0);
93 int iGen1 = 3*(abs(idSq1)/2000000) + (abs(idSq1)%10+1)/2;
94 int iGen2 = 3*(abs(idSq2)/2000000) + (abs(idSq2)%10+1)/2;
95 return (abs(idSq1)%2 == 0) ? RsusuZ[iGen1][iGen2] : RsdsdZ[iGen1][iGen2];}
98 complex LudW[4][4], RudW[4][4];
101 complex LsusdW[7][7], RsusdW[7][7];
104 complex LsddX[7][4][6], RsddX[7][4][6];
105 complex LsuuX[7][4][6], RsuuX[7][4][6];
106 complex getLsqqX(
int iSq,
int idQ,
int iNeut) {
return (abs(idQ)%2 == 0)
107 ? LsuuX[iSq][abs(idQ)/2][iNeut] : LsddX[iSq][(abs(idQ)+1)/2][iNeut] ;}
108 complex getRsqqX(
int iSq,
int idQ,
int iNeut) {
return (abs(idQ)%2 == 0)
109 ? RsuuX[iSq][abs(idQ)/2][iNeut] : RsddX[iSq][(abs(idQ)+1)/2][iNeut] ;}
112 complex LsduX[7][4][3], RsduX[7][4][3];
115 complex LsudX[7][4][3], RsudX[7][4][3];
118 double LllZ[7], RllZ[7];
121 complex LlvW[4][4], RlvW[4][4];
124 complex LslslZ[7][7],RslslZ[7][7];
125 complex LsvsvZ[7][7],RsvsvZ[7][7];
128 complex LslsvW[7][7], RslsvW[7][7];
131 complex LsvvX[7][4][6], RsvvX[7][4][6];
132 complex LsllX[7][4][6], RsllX[7][4][6];
135 complex LsvlX[7][4][3], RsvlX[7][4][3];
138 complex LslvX[7][4][3], RslvX[7][4][3];
141 double rvLLE[4][4][4], rvLQD[4][4][4], rvUDD[4][4][4];
144 complex Rusq[7][7], Rdsq[7][7];
145 complex Rsl[7][7], Rsv[7][7];
148 int idNeut(
int idChi);
149 int idChar(
int idChi);
151 int idSdown(
int iSdown);
152 int idSlep(
int iSlep);
155 int typeNeut(
int idPDG);
156 int typeChar(
int idPDG);
160 SusyLesHouches* slhaPtr;
168 Settings* settingsPtr;
171 ParticleData* particleDataPtr;
182 #endif // Pythia8_SusyCouplings_H