Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
MesonMixingWilsonSUSY.cpp
Go to the documentation of this file.
2
5 {
6 {ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, //mass_c_muW_mcrun
7 {ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, //mass_b_muW_mbrun
8 {ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, //mass_t_muW_mbrun
9 {ParameterType::SM, "MASS", 24},
10 {ParameterType::BSM, "MASS", 37}, // M_H
11 {ParameterType::SM, "MASS", 1}, //m_d
12 {ParameterType::SM, "MASS", 2}, //m_u
13 {ParameterType::BSM, "MASS", 1000001},
14 {ParameterType::BSM, "MASS", 1000002},
15 {ParameterType::BSM, "MASS", 1000003},
16 {ParameterType::BSM, "MASS", 1000004},
17 {ParameterType::BSM, "MASS", 1000005},
18 {ParameterType::BSM, "MASS", 1000006},
19 {ParameterType::BSM, "MASS", 2000001},
20 {ParameterType::BSM, "MASS", 2000002},
21 {ParameterType::BSM, "MASS", 2000003},
22 {ParameterType::BSM, "MASS", 2000004},
23 {ParameterType::BSM, "MASS", 2000005},
24 {ParameterType::BSM, "MASS", 2000006},
25 {ParameterType::BSM, "MASS", 1000024},
26 {ParameterType::BSM, "MASS", 1000037},
27 {ParameterType::BSM, "MASS", 1000022},
28 {ParameterType::BSM, "MASS", 1000023},
29 {ParameterType::BSM, "MASS", 1000025},
30 {ParameterType::BSM, "MASS", 1000035},
31 {ParameterType::BSM, "MASS", 36},
32 {ParameterType::BSM, "MSOFT", 2},
33 {ParameterType::BSM, "HMIX", 1},
34 {ParameterType::BSM, "AU", LhaID(3,3)},
35 {ParameterType::SM, "GAUGE", 1}, //gp
36 {ParameterType::SM, "GAUGE", 2}, //g_2
37 {ParameterType::SM, "VCKM", LhaID(0, 0)}, // V_ud
38 {ParameterType::SM, "VCKM", LhaID(0, 1)}, // V_us
39 {ParameterType::SM, "VCKM", LhaID(0, 2)}, // V_ub
40 {ParameterType::SM, "VCKM", LhaID(1, 0)}, // V_cd
41 {ParameterType::SM, "VCKM", LhaID(1, 1)}, // V_cs
42 {ParameterType::SM, "VCKM", LhaID(1, 2)}, // V_cb
43 {ParameterType::SM, "VCKM", LhaID(2, 0)}, // V_td
44 {ParameterType::SM, "VCKM", LhaID(2, 1)}, // V_ts
45 {ParameterType::SM, "VCKM", LhaID(2, 2)}, // V_tb
46 {ParameterType::SM, "EW_SCALE", 1}
47 },
50 };
51}
52
54
55 double mu_W = src.get_val(ParameterType::WILSON, "EW_SCALE", 1);
56 double M_H=src.get_val(ParameterType::BSM, "MASS", 37);
57 double M_W=src.get_val(ParameterType::SM, "MASS", 24);
58 double M_H_pow_2 = pow(M_H,2.);
59 double M_W_pow_2 = pow(M_W,2.);
60 std::array<std::array<scalar_t, 3>, 3> V_CKM {};
61 double m_q = src.get_val(ParameterType::SM, "MASS", 1);
62
63 double m_b= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
64 double g_2=src.get_val(ParameterType::SM, "GAUGE", 2);
65 double tbeta = src.get_val(ParameterType::BSM, "HMIX", 2);
66 double m_u[4],m_u_pow_2[4];
67
68 for (int i = 0; i<3; ++i) {
69 for (int j = 0; j<3; j++) {
70 V_CKM[i][j] = src.get_val(ParameterType::SM, "VCKM", LhaID(i, j));
71 }
72 }
73 m_u[1]= src.get_val(ParameterType::SM, "MASS", 2);
74 m_u[2]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 4);
75 m_u[3]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 6);
76
77
78 for(int i =0;i<3;++i) {
79 m_u_pow_2[i]=pow(m_u[i],2.);
80 }
81
82 scalar_t C1_chargedhiggs=0.;
83
84 double D0h,D0h_c,D2h,D2h_c;
85 scalar_t CKM_product;
86
87
88 for(int i = 0; i<3; i++) for(int j=1; j<3; j++) {
89 D0h = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
90 D0h_c = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
91 D2h = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
92 D2h_c = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
93
94 CKM_product = V_CKM[i][3]*V_CKM[j][3]*conj(V_CKM[i][0])*conj(V_CKM[j][0]); /* NM: added 0eration dependence, V_CKM[ie][2] -> V_CKM[ie][0] */
95
96 C1_chargedhiggs += pow(g_2,4.)*CKM_product*m_u_pow_2[i]*m_u_pow_2[j]*(2.*pow(M_W,2.)*D0h*pow(tbeta,-2.) - D2h_c*pow(tbeta,-4.) - 2*D2h*pow(tbeta,-2.))/(128.*pow(PI,2.)*pow(M_W,4.));
97
98 }
99
100 //gluino ->
101
102
103 double M_D[6],M_D_pow_2[6],dm[6];
104 scalar_t Z_D[6][6];
105 double Mg=src.get_val(ParameterType::BSM, "MASS", 1000021);
106 double Mg_pow_2 = pow(Mg,2);
107 // double g_3=sqrt(4.*PI*alphas_running(mu_t,param->mass_top_pole,param->mass_b,param)); /* NM: compute from alphas instead of using g3 from SLHA file */
108 double g_3= sqrt(4.*PI*QCDHelper::alpha_s(mu_W)); //TODO : check pole or running
109 M_D[0]=src.get_val(ParameterType::BSM, "MASS", 1000001);
110 M_D[1]=src.get_val(ParameterType::BSM, "MASS", 1000003);
111 M_D[2]=src.get_val(ParameterType::BSM, "MASS", 1000005);
112 M_D[3]=src.get_val(ParameterType::BSM, "MASS", 2000001);
113 M_D[4]=src.get_val(ParameterType::BSM, "MASS", 2000003);
114 M_D[5]=src.get_val(ParameterType::BSM, "MASS", 2000005);
115
116 for(int i = 0; i<6; ++i) {
117 for(int j = 0; j<6; ++j) {
118 Z_D[i][j]= src.get_val(ParameterType::BSM, "DSQMIX", LhaID(j+1, i+1)); //TODO: deal with this group
119 }
120 } // inverse matrix, because in SLHA2 the second index denotes quark flavour (dl,sl,bl,dr,sr,br)
121 for(int i = 0; i<6; ++i) {
122 M_D_pow_2[i]=pow(M_D[i],2);
123 }
124
125 scalar_t C1_gluino=0.;
126
127 double D2g,D0g;
128
129 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie] and Z_D[5][ie] -> Z_D[0+3][ie] */
130
131 for(int i =0; i<6; ++i) {
132 for(int j = 0; j<6; ++j) {
133 D2g = D2p(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
134 D0g = D0(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
135 C1_gluino += -Z_D[2][i]*Z_D[2][j]*pow(g_3,4.)*(D0g*pow(Mg, 2) + 11.*D2g)*conj(Z_D[0][i])*conj(Z_D[0][j])/(144.*pow(PI, 2));
136 }
137 }
138
139
140 //chargino ->
141
142
143 double M_ch[2],M_ch_pow_2[2],M_U[6],M_U_pow_2[6];
144 scalar_t Z_p[2][2],Z_m[2][2],Z_U[6][6];
145 scalar_t Yd[3],Yu[3];
146 double sw=sin(atan(src.get_val(ParameterType::SM, "GAUGE", 2)/src.get_val(ParameterType::SM, "GAUGE", 2)));
147 double Q_e = (src.get_val(ParameterType::SM, "GAUGE", 2))*sw;
148 double swi=1./sw;
149
150 M_ch[0]=src.get_val(ParameterType::BSM, "MASS", 1000024);
151 M_ch[1]=src.get_val(ParameterType::BSM, "MASS", 1000037);
152
153 M_U[0]=src.get_val(ParameterType::BSM, "MASS", 1000002);
154 M_U[1]=src.get_val(ParameterType::BSM, "MASS", 1000004);
155 M_U[2]=src.get_val(ParameterType::BSM, "MASS", 1000006);
156 M_U[3]=src.get_val(ParameterType::BSM, "MASS", 2000002);
157 M_U[4]=src.get_val(ParameterType::BSM, "MASS", 2000004);
158 M_U[5]=src.get_val(ParameterType::BSM, "MASS", 2000006);
159
160 for(int i=0; i<2; ++i){
161 M_ch_pow_2[i]=pow(M_ch[i],2);
162 }
163 for(int i=0; i<6; ++i){
164 M_U_pow_2[i]=pow(M_U[i],2);
165 }
166 for(int i=0; i <2; ++i) {
167 for(int j=0; j<2; ++j) {
168 Z_p[i][j]=conj(src.get_val(ParameterType::BSM, "VMIX", LhaID(j+1, i+1)));
169 }
170 } /* NM: conversion from SLHA2 convention */
171 for(int i=2; i<2; ++i) {
172 for(int j=0; j<2; ++j) {
173 Z_m[i][j]=conj(src.get_val(ParameterType::BSM, "UMIX", LhaID(j+1, i+1)));
174 }
175 } /* NM: conversion from SLHA2 convention */
176 for(int i=0; i<6; ++i) {
177 for(int j=0; j<6; ++j) {
178 Z_U[i][j]=conj(src.get_val(ParameterType::BSM, "USQMIX", LhaID(j+1, i+1))); //TODO: deal with this group
179 }
180 } /* NM: conversion from SLHA2 convention */
181
182 double v1,v2,beta;
183 beta = atan(src.get_val(ParameterType::BSM, "EXTPAR", 25));
184 v1 = 2.*(src.get_val(ParameterType::SM, "MASS", 24))*cos(beta)/src.get_val(ParameterType::SM, "GAUGE", 2);
185 v2 = v1*tan(beta);
186
187 double mc = src.get_val(ParameterType::SM, "MASS", 4);
188
189 double m_b=QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR); /* NM: running mass */
190 double m_t=QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR); /* NM: running mass */
191
192 double common = sqrt(2.)/v2;
193 Yu[0] = common*src.get_val(ParameterType::SM, "MASS", 2);
194 Yu[1] = common*QCDHelper::msbar_mass(4, mu_W, MassType::POLE); //TODO : check this to be sure
195
196 Yu[2] = common*m_t; /* NM: running mass */
197 double otherc = sqrt(2.)/v1;
198 Yd[0] = otherc*src.get_val(ParameterType::SM, "MASS", 1);
199 Yd[1] = otherc*src.get_val(ParameterType::SM, "MASS", 3);
200 Yd[2] = otherc*m_b; /* NM: running mass */
201
202
203
204 scalar_t C1_chargino=0.;
205
206 double D0ch,D2ch;
207
208 /* NM: added 0eration dependence, Yd[2] -> Yd[0] and V_CKM[Ke][2] -> V_CKM[Ke][0] */
209
210 for(int i = 0; i<6; ++i) {
211 for(int j=0; j<6; ++j) {
212 for(int a =0; a<2; ++a) {
213 for (int b=0; b<2; ++b) {
214 D0ch = D0(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
215 D2ch = D2p(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
216 for(int k=0; k<3; ++k) {
217
218
219 C1_chargino += -D2ch*pow(V_CKM[k][2], 2)*(-Q_e*Z_p[0][a]*conj(Z_U[k][i])*swi + Yu[k]*Z_p[1][a]*conj(Z_U[k+3][i]))*(-Q_e*Z_p[0][b]*conj(Z_U[k][j])*swi + Yu[k]*Z_p[1][b]*conj(Z_U[k+3][j]))*(-Q_e*Z_U[k][i]*conj(Z_p[0][b])*swi + Z_U[k+3][i]*conj(Yu[k])*conj(Z_p[1][b]))*(-Q_e*Z_U[k][j]*conj(Z_p[0][a])*swi + Z_U[k+3][j]*conj(Yu[k])*conj(Z_p[1][a]))*pow(conj(V_CKM[k][0]), 2)/(32.0*pow(PI, 2));
220 }
221 }
222 }
223 }
224 }
225
226
227
228 //neutralino ->
229
230
231 double M_ch0[4],M_ch0_pow_2[4],M_D[6],M_D_pow_2[6];
232 scalar_t Z_N[4][4];
233
234 double cw=cos(atan(src.get_val(ParameterType::SM, "GAUGE", 1)/src.get_val(ParameterType::SM, "GAUGE", 2)));
235
236 double otherc = sqrt(2.)/v1;
237
238 std::array<double,4> temp_ch0 = {src.get_val(ParameterType::BSM, "MASS", 1000022),
239 src.get_val(ParameterType::BSM, "MASS", 1000023),
240 src.get_val(ParameterType::BSM, "MASS", 1000025),
241 src.get_val(ParameterType::BSM, "MASS", 1000035)};
242
243 M_ch0[0]=fabs(temp_ch0[0]);
244 M_ch0[1]=fabs(temp_ch0[1]);
245 M_ch0[2]=fabs(temp_ch0[2]);
246 M_ch0[3]=fabs(temp_ch0[3]);
247
248 for(int i=0; i<4; ++i){
249 M_ch0_pow_2[i]=pow(M_ch0[i],2);
250 }
251
252
253 for(int i=0; i<6; ++i) {
254 M_D_pow_2[i]=pow(M_D[i],2);
255 }
256
257
258
259 for(int i=0; i<4; ++i) {
260 for(int j=0; j<4; ++j) {
261 Z_N[i][j] = conj(src.get_val(ParameterType::BSM, "NMIX", LhaID(i+1, j+1))); //TODO : i,j or j,i like the others ?
262 }
263 }
264
265
266 for(int i=0; i<4; ++i){
267 if(temp_ch0[i]<0.) {
268 for(int j=0; j<4; ++j) {
269 Z_N[i][j]*=I;
270 }
271 }
272 } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
273
274 scalar_t C1_neutralino=0.;
275 double D0ne,D2ne;
276
277 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie], Z_D[5][ie] -> Z_D[0+3][ie] and Yd[2] -> Yd[0] */
278
279 for(int i=0; i<6; ++i) {
280 for(int j=0; j<6; ++j) {
281 for(int a=0; a<4; ++a) {
282 for (int b=0; b<4; ++b) {
283 D0ne = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
284 D2ne = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
285 C1_neutralino += -D0ne*M_ch0[a]*M_ch0[b]*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*
286 (-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][b]*sw/3.0 - Z_N[1][b]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][j]*Z_N[2][b])*
287 (-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a]))*
288 (-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 - conj(Z_N[1][b])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][b]))/(64.0*pow(PI, 2)) -
289 D2ne*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*
290 (-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][b]*sw/3.0 - Z_N[1][b]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][j]*Z_N[2][b])*
291 (-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a]))*
292 (-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 - conj(Z_N[1][b])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][b]))/(32.0*pow(PI, 2));
293 }
294 }
295 }
296 }
297
298
299
300 //mixed ->
301
302
303 scalar_t C1_mixed=0.;
304
305
306
307 double M_g=src.get_val(ParameterType::BSM, "MASS", 1000021);
308 double M_g_pow_2 = pow(M_g,2.);
309
310 // } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
311
312 double D0mix,D2mix;
313
314 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie], Z_D[5][ie] -> Z_D[0+3][ie] and Yd[2] -> Yd[0] */
315
316 for(int i=0; i<6; ++i) {
317 for(int j=0; j<6; ++j) {
318 for(int a=0; a<4; ++a) {
319 D0mix = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
320 D2mix = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
321
322 C1_mixed += -D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(Z_D[0][i]*Z_D[0][j]*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[2][i])/(2.0*cw*sw) +
323 conj(Yd[2])*conj(Z_D[5][i])*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[2][j])/(2.0*cw*sw) + conj(Yd[2])*conj(Z_D[5][j])*conj(Z_N[2][a])) +
324 Z_D[2][i]*Z_D[2][j]*pow(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a]), 2))/(96.0*pow(PI, 2)) -
325 D2mix*Z_D[2][j]*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) +
326 conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a]))*conj(Z_D[0][i])/(8.0*pow(PI, 2));
327 }
328 }
329 }
330
331 //higgs PInguin ->
332
333
334
335
336 return C1_chargedhiggs+C1_gluino+C1_chargino+C1_neutralino;
337
338}
339
340//BD_1_tilde
341
344 {
345 {ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, //mass_c_muW_mcrun
346 {ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, //mass_b_muW_mbrun
347 {ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, //mass_t_muW_mbrun
348 {ParameterType::SM, "MASS", 24},
349 {ParameterType::BSM, "MASS", 37}, // M_H
350 {ParameterType::SM, "MASS", 1}, //m_d
351 {ParameterType::SM, "MASS", 2}, //m_u
352 {ParameterType::BSM, "MASS", 1000001},
353 {ParameterType::BSM, "MASS", 1000002},
354 {ParameterType::BSM, "MASS", 1000003},
355 {ParameterType::BSM, "MASS", 1000004},
356 {ParameterType::BSM, "MASS", 1000005},
357 {ParameterType::BSM, "MASS", 1000006},
358 {ParameterType::BSM, "MASS", 2000001},
359 {ParameterType::BSM, "MASS", 2000002},
360 {ParameterType::BSM, "MASS", 2000003},
361 {ParameterType::BSM, "MASS", 2000004},
362 {ParameterType::BSM, "MASS", 2000005},
363 {ParameterType::BSM, "MASS", 2000006},
364 {ParameterType::BSM, "MASS", 1000024},
365 {ParameterType::BSM, "MASS", 1000037},
366 {ParameterType::BSM, "MASS", 1000022},
367 {ParameterType::BSM, "MASS", 1000023},
368 {ParameterType::BSM, "MASS", 1000025},
369 {ParameterType::BSM, "MASS", 1000035},
370 {ParameterType::BSM, "MASS", 36},
371 {ParameterType::BSM, "MSOFT", 2},
372 {ParameterType::BSM, "HMIX", 1},
373 {ParameterType::BSM, "AU", LhaID(3,3)},
374 {ParameterType::SM, "GAUGE", 1}, //gp
375 {ParameterType::SM, "GAUGE", 2}, //g_2
376 {ParameterType::SM, "VCKM", LhaID(0, 0)}, // V_ud
377 {ParameterType::SM, "VCKM", LhaID(0, 1)}, // V_us
378 {ParameterType::SM, "VCKM", LhaID(0, 2)}, // V_ub
379 {ParameterType::SM, "VCKM", LhaID(1, 0)}, // V_cd
380 {ParameterType::SM, "VCKM", LhaID(1, 1)}, // V_cs
381 {ParameterType::SM, "VCKM", LhaID(1, 2)}, // V_cb
382 {ParameterType::SM, "VCKM", LhaID(2, 0)}, // V_td
383 {ParameterType::SM, "VCKM", LhaID(2, 1)}, // V_ts
384 {ParameterType::SM, "VCKM", LhaID(2, 2)}, // V_tb
385 {ParameterType::SM, "EW_SCALE", 1}
386 },
389 };
390}
391
393
394 double mu_W = src.get_val(ParameterType::WILSON, "EW_SCALE", 1);
395 double M_H=src.get_val(ParameterType::BSM, "MASS", 37);
396 double M_W=src.get_val(ParameterType::SM, "MASS", 24);
397 double M_H_pow_2 = pow(M_H,2.);
398 double M_W_pow_2 = pow(M_W,2.);
399 std::array<std::array<scalar_t, 3>, 3> V_CKM {};
400 double m_q = src.get_val(ParameterType::SM, "MASS", 1);
401
402 double m_b= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
403 double g_2=src.get_val(ParameterType::SM, "GAUGE", 2);
404 double tbeta = src.get_val(ParameterType::BSM, "HMIX", 2);
405 double m_u[4],m_u_pow_2[4];
406
407 for (int i = 0; i<3; ++i) {
408 for (int j = 0; j<3; j++) {
409 V_CKM[i][j] = src.get_val(ParameterType::SM, "VCKM", LhaID(i, j));
410 }
411 }
412 m_u[1]= src.get_val(ParameterType::SM, "MASS", 2);
413 m_u[2]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 4);
414 m_u[3]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 6);
415
416
417 for(int i =0;i<3;++i) {
418 m_u_pow_2[i]=pow(m_u[i],2.);
419 }
420
421
422 scalar_t Cp1_chargedhiggs=0.;
423
424 double D0h,D0h_c,D2h,D2h_c;
425 scalar_t CKM_product;
426
427
428 for(int i = 0; i<3; i++) for(int j=1; j<3; j++) {
429 D0h = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
430 D0h_c = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
431 D2h = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
432 D2h_c = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
433
434 CKM_product = V_CKM[i][3]*V_CKM[j][3]*conj(V_CKM[i][0])*conj(V_CKM[j][0]); /* NM: added 0eration dependence, V_CKM[ie][2] -> V_CKM[ie][0] */
435
436 Cp1_chargedhiggs += -pow(g_2,4.)*pow(m_b,2.)*pow(m_q,2.)*CKM_product*(D2h_c*pow(tbeta,4.)+2.*D2h*pow(tbeta,2.))/(128.*pow(PI,2.)*pow(M_W,4.));
437 }
438
439 //gluino ->
440
441
442 double M_D[6],M_D_pow_2[6],dm[6];
443 scalar_t Z_D[6][6];
444 double Mg=src.get_val(ParameterType::BSM, "MASS", 1000021);
445 double Mg_pow_2 = pow(Mg,2);
446 // double g_3=sqrt(4.*PI*alphas_running(mu_t,param->mass_top_pole,param->mass_b,param)); /* NM: compute from alphas instead of using g3 from SLHA file */
447 double g_3= sqrt(4.*PI*QCDHelper::alpha_s(mu_W)); //TODO : check pole or running
448 M_D[0]=src.get_val(ParameterType::BSM, "MASS", 1000001);
449 M_D[1]=src.get_val(ParameterType::BSM, "MASS", 1000003);
450 M_D[2]=src.get_val(ParameterType::BSM, "MASS", 1000005);
451 M_D[3]=src.get_val(ParameterType::BSM, "MASS", 2000001);
452 M_D[4]=src.get_val(ParameterType::BSM, "MASS", 2000003);
453 M_D[5]=src.get_val(ParameterType::BSM, "MASS", 2000005);
454
455 for(int i = 0; i<6; ++i) {
456 for(int j = 0; j<6; ++j) {
457 Z_D[i][j]= src.get_val(ParameterType::BSM, "DSQMIX", LhaID(j+1, i+1)); //TODO: deal with this group
458 }
459 } // inverse matrix, because in SLHA2 the second index denotes quark flavour (dl,sl,bl,dr,sr,br)
460 for(int i = 0; i<6; ++i) {
461 M_D_pow_2[i]=pow(M_D[i],2);
462 }
463
464 scalar_t Cp1_gluino=0.;
465
466 double D2g,D0g;
467
468 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie] and Z_D[5][ie] -> Z_D[0+3][ie] */
469
470 for(int i =0; i<6; ++i) {
471 for(int j = 0; j<6; ++j) {
472 D2g = D2p(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
473 D0g = D0(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
474
475 Cp1_gluino += -Z_D[5][i]*Z_D[5][j]*pow(g_3,4.)*(D0g*pow(Mg, 2.) + 11.*D2g)*conj(Z_D[0+3][i])*conj(Z_D[0+3][j])/(144.*pow(PI, 2.));
476
477 }
478 }
479
480
481 //chargino ->
482
483
484 double M_ch[2],M_ch_pow_2[2],M_U[6],M_U_pow_2[6];
485 scalar_t Z_p[2][2],Z_m[2][2],Z_U[6][6];
486 scalar_t Yd[3],Yu[3];
487 double sw=sin(atan(src.get_val(ParameterType::SM, "GAUGE", 2)/src.get_val(ParameterType::SM, "GAUGE", 2)));
488 double Q_e = (src.get_val(ParameterType::SM, "GAUGE", 2))*sw;
489 double swi=1./sw;
490
491 M_ch[0]=src.get_val(ParameterType::BSM, "MASS", 1000024);
492 M_ch[1]=src.get_val(ParameterType::BSM, "MASS", 1000037);
493
494 M_U[0]=src.get_val(ParameterType::BSM, "MASS", 1000002);
495 M_U[1]=src.get_val(ParameterType::BSM, "MASS", 1000004);
496 M_U[2]=src.get_val(ParameterType::BSM, "MASS", 1000006);
497 M_U[3]=src.get_val(ParameterType::BSM, "MASS", 2000002);
498 M_U[4]=src.get_val(ParameterType::BSM, "MASS", 2000004);
499 M_U[5]=src.get_val(ParameterType::BSM, "MASS", 2000006);
500
501 for(int i=0; i<2; ++i){
502 M_ch_pow_2[i]=pow(M_ch[i],2);
503 }
504 for(int i=0; i<6; ++i){
505 M_U_pow_2[i]=pow(M_U[i],2);
506 }
507 for(int i=0; i <2; ++i) {
508 for(int j=0; j<2; ++j) {
509 Z_p[i][j]=conj(src.get_val(ParameterType::BSM, "VMIX", LhaID(j+1, i+1)));
510 }
511 } /* NM: conversion from SLHA2 convention */
512 for(int i=2; i<2; ++i) {
513 for(int j=0; j<2; ++j) {
514 Z_m[i][j]=conj(src.get_val(ParameterType::BSM, "UMIX", LhaID(j+1, i+1)));
515 }
516 } /* NM: conversion from SLHA2 convention */
517 for(int i=0; i<6; ++i) {
518 for(int j=0; j<6; ++j) {
519 Z_U[i][j]=conj(src.get_val(ParameterType::BSM, "USQMIX", LhaID(j+1, i+1))); //TODO: deal with this group
520 }
521 } /* NM: conversion from SLHA2 convention */
522
523 double v1,v2,beta;
524 beta = atan(src.get_val(ParameterType::BSM, "EXTPAR", 25));
525 v1 = 2.*(src.get_val(ParameterType::SM, "MASS", 24))*cos(beta)/src.get_val(ParameterType::SM, "GAUGE", 2);
526 v2 = v1*tan(beta);
527
528 double mc = src.get_val(ParameterType::SM, "MASS", 4);
529
530 double m_b=QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR); /* NM: running mass */
531 double m_t=QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR); /* NM: running mass */
532
533 double common = sqrt(2.)/v2;
534 Yu[0] = common*src.get_val(ParameterType::SM, "MASS", 2);
535 Yu[1] = common*QCDHelper::msbar_mass(4, mu_W, MassType::POLE); //TODO : check this to be sure
536
537 Yu[2] = common*m_t; /* NM: running mass */
538 double otherc = sqrt(2.)/v1;
539 Yd[0] = otherc*src.get_val(ParameterType::SM, "MASS", 1);
540 Yd[1] = otherc*src.get_val(ParameterType::SM, "MASS", 3);
541 Yd[2] = otherc*m_b; /* NM: running mass */
542
543
544
545 scalar_t Cp1_chargino=0.;
546
547 double D0ch,D2ch;
548
549 /* NM: added 0eration dependence, Yd[2] -> Yd[0] and V_CKM[Ke][2] -> V_CKM[Ke][0] */
550
551 for(int i = 0; i<6; ++i) {
552 for(int j=0; j<6; ++j) {
553 for(int a =0; a<2; ++a) {
554 for (int b=0; b<2; ++b) {
555 D0ch = D0(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
556 D2ch = D2p(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
557 for(int k=0; k<3; ++k) {
558
559 Cp1_chargino += -D2ch*pow(V_CKM[k][2], 2)*pow(Yd[2], 2)*Z_m[1][a]*Z_m[1][b]*Z_U[k][i]*Z_U[k][j]*pow(conj(V_CKM[k][0]), 2)*pow(conj(Yd[0]), 2)*conj(Z_m[1][a])*conj(Z_m[1][b])*conj(Z_U[k][i])*conj(Z_U[k][j])/(32.0*pow(PI, 2));
560
561 }
562 }
563 }
564 }
565 }
566
567
568
569 //neutralino ->
570
571
572 double M_ch0[4],M_ch0_pow_2[4],M_D[6],M_D_pow_2[6];
573 scalar_t Z_N[4][4];
574
575 double cw=cos(atan(src.get_val(ParameterType::SM, "GAUGE", 1)/src.get_val(ParameterType::SM, "GAUGE", 2)));
576
577 double otherc = sqrt(2.)/v1;
578
579 std::array<double,4> temp_ch0 = {src.get_val(ParameterType::BSM, "MASS", 1000022),
580 src.get_val(ParameterType::BSM, "MASS", 1000023),
581 src.get_val(ParameterType::BSM, "MASS", 1000025),
582 src.get_val(ParameterType::BSM, "MASS", 1000035)};
583
584 M_ch0[0]=fabs(temp_ch0[0]);
585 M_ch0[1]=fabs(temp_ch0[1]);
586 M_ch0[2]=fabs(temp_ch0[2]);
587 M_ch0[3]=fabs(temp_ch0[3]);
588
589 for(int i=0; i<4; ++i){
590 M_ch0_pow_2[i]=pow(M_ch0[i],2);
591 }
592
593
594 for(int i=0; i<6; ++i) {
595 M_D_pow_2[i]=pow(M_D[i],2);
596 }
597
598
599
600 for(int i=0; i<4; ++i) {
601 for(int j=0; j<4; ++j) {
602 Z_N[i][j] = conj(src.get_val(ParameterType::BSM, "NMIX", LhaID(i+1, j+1))); //TODO : i,j or j,i like the others ?
603 }
604 }
605
606
607 for(int i=0; i<4; ++i){
608 if(temp_ch0[i]<0.) {
609 for(int j=0; j<4; ++j) {
610 Z_N[i][j]*=I;
611 }
612 }
613 } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
614
615 scalar_t Cp1_neutralino=0.;
616
617 double D0ne,D2ne;
618
619 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie], Z_D[5][ie] -> Z_D[0+3][ie] and Yd[2] -> Yd[0] */
620
621 for(int i=0; i<6; ++i) {
622 for(int j=0; j<6; ++j) {
623 for(int a=0; a<4; ++a) {
624 for (int b=0; b<4; ++b) {
625 D0ne = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
626 D2ne = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
627
628 Cp1_neutralino += -D0ne*M_ch0[a]*M_ch0[b]*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][b])/(3.0*cw) +
629 Yd[2]*Z_D[2][j]*conj(Z_N[2][b]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][j])/(3.0*cw) + Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][j]))*(-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[0+3][i])/(3.0*cw) +
630 Z_N[2][b]*conj(Yd[0])*conj(Z_D[0][i]))/(64.0*pow(PI, 2)) - D2ne*(-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][b])/(3.0*cw) + Yd[2]*Z_D[2][j]*conj(Z_N[2][b]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][j])/(3.0*cw) +
631 Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][j]))*(-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[0+3][i])/(3.0*cw) + Z_N[2][b]*conj(Yd[0])*conj(Z_D[0][i]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) +
632 Yd[2]*Z_D[5][i]*Z_N[2][a])/(32.0*pow(PI, 2));
633
634 }
635 }
636 }
637 }
638
639
640
641 //mixed ->
642
643
644 scalar_t Cp1_mixed=0.;
645
646
647
648 double M_g=src.get_val(ParameterType::BSM, "MASS", 1000021);
649 double M_g_pow_2 = pow(M_g,2.);
650
651 // } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
652
653 double D0mix,D2mix;
654
655 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie], Z_D[5][ie] -> Z_D[0+3][ie] and Yd[2] -> Yd[0] */
656
657 for(int i=0; i<6; ++i) {
658 for(int j=0; j<6; ++j) {
659 for(int a=0; a<4; ++a) {
660 D0mix = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
661 D2mix = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
662
663 Cp1_mixed += -D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(Z_D[0+3][i]*Z_D[0+3][j]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[5][i])/(3.0*cw) + Z_N[2][a]*conj(Yd[2])*conj(Z_D[2][i]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[5][j])/(3.0*cw) +
664 Z_N[2][a]*conj(Yd[2])*conj(Z_D[2][j])) + Z_D[5][i]*Z_D[5][j]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][i])/(3.0*cw) + Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][i]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][j])/(3.0*cw) +
665 Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][j])))/(96.0*pow(PI, 2)) - D2mix*Z_D[5][j]*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) +
666 Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][j])/(3.0*cw) + Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][j]))*conj(Z_D[0+3][i])/(8.0*pow(PI, 2));
667
668 }
669 }
670 }
671
672 //higgs PInguin ->
673
674
675
676}
677
678//BD2
679
682 {
683 {ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, //mass_c_muW_mcrun
684 {ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, //mass_b_muW_mbrun
685 {ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, //mass_t_muW_mbrun
686 {ParameterType::SM, "MASS", 24},
687 {ParameterType::BSM, "MASS", 37}, // M_H
688 {ParameterType::SM, "MASS", 1}, //m_d
689 {ParameterType::SM, "MASS", 2}, //m_u
690 {ParameterType::BSM, "MASS", 1000001},
691 {ParameterType::BSM, "MASS", 1000002},
692 {ParameterType::BSM, "MASS", 1000003},
693 {ParameterType::BSM, "MASS", 1000004},
694 {ParameterType::BSM, "MASS", 1000005},
695 {ParameterType::BSM, "MASS", 1000006},
696 {ParameterType::BSM, "MASS", 2000001},
697 {ParameterType::BSM, "MASS", 2000002},
698 {ParameterType::BSM, "MASS", 2000003},
699 {ParameterType::BSM, "MASS", 2000004},
700 {ParameterType::BSM, "MASS", 2000005},
701 {ParameterType::BSM, "MASS", 2000006},
702 {ParameterType::BSM, "MASS", 1000024},
703 {ParameterType::BSM, "MASS", 1000037},
704 {ParameterType::BSM, "MASS", 1000022},
705 {ParameterType::BSM, "MASS", 1000023},
706 {ParameterType::BSM, "MASS", 1000025},
707 {ParameterType::BSM, "MASS", 1000035},
708 {ParameterType::BSM, "MASS", 36},
709 {ParameterType::BSM, "MSOFT", 2},
710 {ParameterType::BSM, "HMIX", 1},
711 {ParameterType::BSM, "AU", LhaID(3,3)},
712 {ParameterType::SM, "GAUGE", 1}, //gp
713 {ParameterType::SM, "GAUGE", 2}, //g_2
714 {ParameterType::SM, "VCKM", LhaID(0, 0)}, // V_ud
715 {ParameterType::SM, "VCKM", LhaID(0, 1)}, // V_us
716 {ParameterType::SM, "VCKM", LhaID(0, 2)}, // V_ub
717 {ParameterType::SM, "VCKM", LhaID(1, 0)}, // V_cd
718 {ParameterType::SM, "VCKM", LhaID(1, 1)}, // V_cs
719 {ParameterType::SM, "VCKM", LhaID(1, 2)}, // V_cb
720 {ParameterType::SM, "VCKM", LhaID(2, 0)}, // V_td
721 {ParameterType::SM, "VCKM", LhaID(2, 1)}, // V_ts
722 {ParameterType::SM, "VCKM", LhaID(2, 2)}, // V_tb
723 {ParameterType::SM, "EW_SCALE", 1}
724 },
727 };
728}
729
731
732 double mu_W = src.get_val(ParameterType::WILSON, "EW_SCALE", 1);
733 double M_H=src.get_val(ParameterType::BSM, "MASS", 37);
734 double M_W=src.get_val(ParameterType::SM, "MASS", 24);
735 double M_H_pow_2 = pow(M_H,2.);
736 double M_W_pow_2 = pow(M_W,2.);
737 std::array<std::array<scalar_t, 3>, 3> V_CKM {};
738 double m_q = src.get_val(ParameterType::SM, "MASS", 1);
739
740 double m_b= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
741 double g_2=src.get_val(ParameterType::SM, "GAUGE", 2);
742 double tbeta = src.get_val(ParameterType::BSM, "HMIX", 2);
743 double m_u[4],m_u_pow_2[4];
744
745 for (int i = 0; i<3; ++i) {
746 for (int j = 0; j<3; j++) {
747 V_CKM[i][j] = src.get_val(ParameterType::SM, "VCKM", LhaID(i, j));
748 }
749 }
750 m_u[1]= src.get_val(ParameterType::SM, "MASS", 2);
751 m_u[2]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 4);
752 m_u[3]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 6);
753
754
755 for(int i =0;i<3;++i) {
756 m_u_pow_2[i]=pow(m_u[i],2.);
757 }
758
759 scalar_t C2_chargedhiggs=0.;
760
761
762 double D0h,D0h_c,D2h,D2h_c;
763 scalar_t CKM_product;
764
765
766 for(int i = 0; i<3; i++) for(int j=1; j<3; j++) {
767 D0h = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
768 D0h_c = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
769 D2h = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
770 D2h_c = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
771
772 CKM_product = V_CKM[i][3]*V_CKM[j][3]*conj(V_CKM[i][0])*conj(V_CKM[j][0]); /* NM: added 0eration dependence, V_CKM[ie][2] -> V_CKM[ie][0] */
773
774 C2_chargedhiggs += -pow(g_2,4.)*pow(m_q,2.)*CKM_product*pow(m_u[i],2)*pow(m_u[j],2)*(D0h_c - 2*D0h)/(128.*pow(PI,2.)*pow(M_W,4.));
775
776 }
777
778 //gluino ->
779
780
781 double M_D[6],M_D_pow_2[6],dm[6];
782 scalar_t Z_D[6][6];
783 double Mg=src.get_val(ParameterType::BSM, "MASS", 1000021);
784 double Mg_pow_2 = pow(Mg,2);
785 // double g_3=sqrt(4.*PI*alphas_running(mu_t,param->mass_top_pole,param->mass_b,param)); /* NM: compute from alphas instead of using g3 from SLHA file */
786 double g_3= sqrt(4.*PI*QCDHelper::alpha_s(mu_W)); //TODO : check pole or running
787 M_D[0]=src.get_val(ParameterType::BSM, "MASS", 1000001);
788 M_D[1]=src.get_val(ParameterType::BSM, "MASS", 1000003);
789 M_D[2]=src.get_val(ParameterType::BSM, "MASS", 1000005);
790 M_D[3]=src.get_val(ParameterType::BSM, "MASS", 2000001);
791 M_D[4]=src.get_val(ParameterType::BSM, "MASS", 2000003);
792 M_D[5]=src.get_val(ParameterType::BSM, "MASS", 2000005);
793
794 for(int i = 0; i<6; ++i) {
795 for(int j = 0; j<6; ++j) {
796 Z_D[i][j]= src.get_val(ParameterType::BSM, "DSQMIX", LhaID(j+1, i+1)); //TODO: deal with this group
797 }
798 } // inverse matrix, because in SLHA2 the second index denotes quark flavour (dl,sl,bl,dr,sr,br)
799 for(int i = 0; i<6; ++i) {
800 M_D_pow_2[i]=pow(M_D[i],2);
801 }
802
803 scalar_t C2_gluino=0.;
804
805 double D2g,D0g;
806
807 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie] and Z_D[5][ie] -> Z_D[0+3][ie] */
808
809 for(int i =0; i<6; ++i) {
810 for(int j = 0; j<6; ++j) {
811 D2g = D2p(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
812 D0g = D0(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
813 C2_gluino += -17.*D0g*pow(Mg, 2)*Z_D[2][i]*Z_D[2][j]*pow(g_3, 4.)*conj(Z_D[0+3][i])*conj(Z_D[0+3][j])/(288.*pow(PI, 2));
814
815 }
816 }
817
818
819 //chargino ->
820
821
822 double M_ch[2],M_ch_pow_2[2],M_U[6],M_U_pow_2[6];
823 scalar_t Z_p[2][2],Z_m[2][2],Z_U[6][6];
824 scalar_t Yd[3],Yu[3];
825 double sw=sin(atan(src.get_val(ParameterType::SM, "GAUGE", 2)/src.get_val(ParameterType::SM, "GAUGE", 2)));
826 double Q_e = (src.get_val(ParameterType::SM, "GAUGE", 2))*sw;
827 double swi=1./sw;
828
829 M_ch[0]=src.get_val(ParameterType::BSM, "MASS", 1000024);
830 M_ch[1]=src.get_val(ParameterType::BSM, "MASS", 1000037);
831
832 M_U[0]=src.get_val(ParameterType::BSM, "MASS", 1000002);
833 M_U[1]=src.get_val(ParameterType::BSM, "MASS", 1000004);
834 M_U[2]=src.get_val(ParameterType::BSM, "MASS", 1000006);
835 M_U[3]=src.get_val(ParameterType::BSM, "MASS", 2000002);
836 M_U[4]=src.get_val(ParameterType::BSM, "MASS", 2000004);
837 M_U[5]=src.get_val(ParameterType::BSM, "MASS", 2000006);
838
839 for(int i=0; i<2; ++i){
840 M_ch_pow_2[i]=pow(M_ch[i],2);
841 }
842 for(int i=0; i<6; ++i){
843 M_U_pow_2[i]=pow(M_U[i],2);
844 }
845 for(int i=0; i <2; ++i) {
846 for(int j=0; j<2; ++j) {
847 Z_p[i][j]=conj(src.get_val(ParameterType::BSM, "VMIX", LhaID(j+1, i+1)));
848 }
849 } /* NM: conversion from SLHA2 convention */
850 for(int i=2; i<2; ++i) {
851 for(int j=0; j<2; ++j) {
852 Z_m[i][j]=conj(src.get_val(ParameterType::BSM, "UMIX", LhaID(j+1, i+1)));
853 }
854 } /* NM: conversion from SLHA2 convention */
855 for(int i=0; i<6; ++i) {
856 for(int j=0; j<6; ++j) {
857 Z_U[i][j]=conj(src.get_val(ParameterType::BSM, "USQMIX", LhaID(j+1, i+1))); //TODO: deal with this group
858 }
859 } /* NM: conversion from SLHA2 convention */
860
861 double v1,v2,beta;
862 beta = atan(src.get_val(ParameterType::BSM, "EXTPAR", 25));
863 v1 = 2.*(src.get_val(ParameterType::SM, "MASS", 24))*cos(beta)/src.get_val(ParameterType::SM, "GAUGE", 2);
864 v2 = v1*tan(beta);
865
866 double mc = src.get_val(ParameterType::SM, "MASS", 4);
867
868 double m_b=QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR); /* NM: running mass */
869 double m_t=QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR); /* NM: running mass */
870
871 double common = sqrt(2.)/v2;
872 Yu[0] = common*src.get_val(ParameterType::SM, "MASS", 2);
873 Yu[1] = common*QCDHelper::msbar_mass(4, mu_W, MassType::POLE); //TODO : check this to be sure
874
875 Yu[2] = common*m_t; /* NM: running mass */
876 double otherc = sqrt(2.)/v1;
877 Yd[0] = otherc*src.get_val(ParameterType::SM, "MASS", 1);
878 Yd[1] = otherc*src.get_val(ParameterType::SM, "MASS", 3);
879 Yd[2] = otherc*m_b; /* NM: running mass */
880
881
882
883 scalar_t C2_chargino=0.;
884
885
886 double D0ch,D2ch;
887
888 /* NM: added 0eration dependence, Yd[2] -> Yd[0] and V_CKM[Ke][2] -> V_CKM[Ke][0] */
889
890 for(int i = 0; i<6; ++i) {
891 for(int j=0; j<6; ++j) {
892 for(int a =0; a<2; ++a) {
893 for (int b=0; b<2; ++b) {
894 D0ch = D0(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
895 D2ch = D2p(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
896 for(int k=0; k<3; ++k) {
897
898 C2_chargino += 0.;
899
900 }
901 }
902 }
903 }
904 }
905
906
907
908 //neutralino ->
909
910
911 double M_ch0[4],M_ch0_pow_2[4],M_D[6],M_D_pow_2[6];
912 scalar_t Z_N[4][4];
913
914 double cw=cos(atan(src.get_val(ParameterType::SM, "GAUGE", 1)/src.get_val(ParameterType::SM, "GAUGE", 2)));
915
916 double otherc = sqrt(2.)/v1;
917
918 std::array<double,4> temp_ch0 = {src.get_val(ParameterType::BSM, "MASS", 1000022),
919 src.get_val(ParameterType::BSM, "MASS", 1000023),
920 src.get_val(ParameterType::BSM, "MASS", 1000025),
921 src.get_val(ParameterType::BSM, "MASS", 1000035)};
922
923 M_ch0[0]=fabs(temp_ch0[0]);
924 M_ch0[1]=fabs(temp_ch0[1]);
925 M_ch0[2]=fabs(temp_ch0[2]);
926 M_ch0[3]=fabs(temp_ch0[3]);
927
928 for(int i=0; i<4; ++i){
929 M_ch0_pow_2[i]=pow(M_ch0[i],2);
930 }
931
932
933 for(int i=0; i<6; ++i) {
934 M_D_pow_2[i]=pow(M_D[i],2);
935 }
936
937
938
939 for(int i=0; i<4; ++i) {
940 for(int j=0; j<4; ++j) {
941 Z_N[i][j] = conj(src.get_val(ParameterType::BSM, "NMIX", LhaID(i+1, j+1))); //TODO : i,j or j,i like the others ?
942 }
943 }
944
945
946 for(int i=0; i<4; ++i){
947 if(temp_ch0[i]<0.) {
948 for(int j=0; j<4; ++j) {
949 Z_N[i][j]*=I;
950 }
951 }
952 } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
953
954 scalar_t C2_neutralino=0.;
955
956 double D0ne,D2ne;
957
958 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie], Z_D[5][ie] -> Z_D[0+3][ie] and Yd[2] -> Yd[0] */
959
960 for(int i=0; i<6; ++i) {
961 for(int j=0; j<6; ++j) {
962 for(int a=0; a<4; ++a) {
963 for (int b=0; b<4; ++b) {
964 D0ne = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
965 D2ne = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
966
967 C2_neutralino += D0ne*M_ch0[a]*M_ch0[b]*(-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[0+3][i])/(3.0*cw) + Z_N[2][b]*conj(Yd[0])*conj(Z_D[0][i]))*(-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[0+3][j])/(3.0*cw) +
968 Z_N[2][b]*conj(Yd[0])*conj(Z_D[0][j]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/
969 (2.0*cw*sw) + Yd[2]*Z_D[5][j]*Z_N[2][a])/(32.0*pow(PI, 2));
970
971 }
972 }
973 }
974 }
975
976
977
978 //mixed ->
979
980 scalar_t C2_mixed=0.;
981
982
983
984 double M_g=src.get_val(ParameterType::BSM, "MASS", 1000021);
985 double M_g_pow_2 = pow(M_g,2.);
986
987 // } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
988
989 double D0mix,D2mix;
990
991 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie], Z_D[5][ie] -> Z_D[0+3][ie] and Yd[2] -> Yd[0] */
992
993 for(int i=0; i<6; ++i) {
994 for(int j=0; j<6; ++j) {
995 for(int a=0; a<4; ++a) {
996 D0mix = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
997 D2mix = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
998
999
1000 C2_mixed += D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(Z_D[2][i]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][i])/(3.0*cw) + Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][i]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][j])/(3.0*cw) +
1001 Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][j]))*conj(Z_D[2][j]) + 3.0*Z_D[2][j]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][j])/(3.0*cw) + Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][j]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 -
1002 Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*conj(Z_D[0+3][i]))/(48.0*pow(PI, 2)) + D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) +
1003 Yd[2]*Z_D[5][i]*Z_N[2][a])*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][j]*Z_N[2][a])*conj(Z_D[0+3][i])*conj(Z_D[0+3][j])/(48.0*pow(PI, 2));
1004
1005 }
1006 }
1007 }
1008
1009 //higgs PInguin ->
1010
1011}
1012
1013//BD2_tild
1014
1017 {
1018 {ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, //mass_c_muW_mcrun
1019 {ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, //mass_b_muW_mbrun
1020 {ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, //mass_t_muW_mbrun
1021 {ParameterType::SM, "MASS", 24},
1022 {ParameterType::BSM, "MASS", 37}, // M_H
1023 {ParameterType::SM, "MASS", 1}, //m_d
1024 {ParameterType::SM, "MASS", 2}, //m_u
1025 {ParameterType::BSM, "MASS", 1000001},
1026 {ParameterType::BSM, "MASS", 1000002},
1027 {ParameterType::BSM, "MASS", 1000003},
1028 {ParameterType::BSM, "MASS", 1000004},
1029 {ParameterType::BSM, "MASS", 1000005},
1030 {ParameterType::BSM, "MASS", 1000006},
1031 {ParameterType::BSM, "MASS", 2000001},
1032 {ParameterType::BSM, "MASS", 2000002},
1033 {ParameterType::BSM, "MASS", 2000003},
1034 {ParameterType::BSM, "MASS", 2000004},
1035 {ParameterType::BSM, "MASS", 2000005},
1036 {ParameterType::BSM, "MASS", 2000006},
1037 {ParameterType::BSM, "MASS", 1000024},
1038 {ParameterType::BSM, "MASS", 1000037},
1039 {ParameterType::BSM, "MASS", 1000022},
1040 {ParameterType::BSM, "MASS", 1000023},
1041 {ParameterType::BSM, "MASS", 1000025},
1042 {ParameterType::BSM, "MASS", 1000035},
1043 {ParameterType::BSM, "MASS", 36},
1044 {ParameterType::BSM, "MSOFT", 2},
1045 {ParameterType::BSM, "HMIX", 1},
1046 {ParameterType::BSM, "AU", LhaID(3,3)},
1047 {ParameterType::SM, "GAUGE", 1}, //gp
1048 {ParameterType::SM, "GAUGE", 2}, //g_2
1049 {ParameterType::SM, "VCKM", LhaID(0, 0)}, // V_ud
1050 {ParameterType::SM, "VCKM", LhaID(0, 1)}, // V_us
1051 {ParameterType::SM, "VCKM", LhaID(0, 2)}, // V_ub
1052 {ParameterType::SM, "VCKM", LhaID(1, 0)}, // V_cd
1053 {ParameterType::SM, "VCKM", LhaID(1, 1)}, // V_cs
1054 {ParameterType::SM, "VCKM", LhaID(1, 2)}, // V_cb
1055 {ParameterType::SM, "VCKM", LhaID(2, 0)}, // V_td
1056 {ParameterType::SM, "VCKM", LhaID(2, 1)}, // V_ts
1057 {ParameterType::SM, "VCKM", LhaID(2, 2)}, // V_tb
1058 {ParameterType::SM, "EW_SCALE", 1}
1059 },
1060 compute_LO,
1062 };
1063}
1064
1066
1067 double mu_W = src.get_val(ParameterType::WILSON, "EW_SCALE", 1);
1068 double M_H=src.get_val(ParameterType::BSM, "MASS", 37);
1069 double M_W=src.get_val(ParameterType::SM, "MASS", 24);
1070 double M_H_pow_2 = pow(M_H,2.);
1071 double M_W_pow_2 = pow(M_W,2.);
1072 std::array<std::array<scalar_t, 3>, 3> V_CKM {};
1073 double m_q = src.get_val(ParameterType::SM, "MASS", 1);
1074
1075 double m_b= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
1076 double g_2=src.get_val(ParameterType::SM, "GAUGE", 2);
1077 double tbeta = src.get_val(ParameterType::BSM, "HMIX", 2);
1078 double m_u[4],m_u_pow_2[4];
1079
1080 for (int i = 0; i<3; ++i) {
1081 for (int j = 0; j<3; j++) {
1082 V_CKM[i][j] = src.get_val(ParameterType::SM, "VCKM", LhaID(i, j));
1083 }
1084 }
1085 m_u[1]= src.get_val(ParameterType::SM, "MASS", 2);
1086 m_u[2]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 4);
1087 m_u[3]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 6);
1088
1089
1090 for(int i =0;i<3;++i) {
1091 m_u_pow_2[i]=pow(m_u[i],2.);
1092 }
1093
1094
1095 scalar_t Cp2_chargedhiggs=0.;
1096
1097 double D0h,D0h_c,D2h,D2h_c;
1098 scalar_t CKM_product;
1099
1100
1101 for(int i = 0; i<3; i++) for(int j=1; j<3; j++) {
1102 D0h = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
1103 D0h_c = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
1104 D2h = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
1105 D2h_c = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
1106
1107 CKM_product = V_CKM[i][3]*V_CKM[j][3]*conj(V_CKM[i][0])*conj(V_CKM[j][0]); /* NM: added 0eration dependence, V_CKM[ie][2] -> V_CKM[ie][0] */
1108
1109 Cp2_chargedhiggs += -pow(g_2,4.)*pow(m_b,2.)*CKM_product*pow(m_u[i],2)*pow(m_u[j],2)*(D0h_c-2.*D0h)/(128.*pow(PI,2.)*pow(M_W,4.));
1110 }
1111
1112 //gluino ->
1113
1114
1115 double M_D[6],M_D_pow_2[6],dm[6];
1116 scalar_t Z_D[6][6];
1117 double Mg=src.get_val(ParameterType::BSM, "MASS", 1000021);
1118 double Mg_pow_2 = pow(Mg,2);
1119 // double g_3=sqrt(4.*PI*alphas_running(mu_t,param->mass_top_pole,param->mass_b,param)); /* NM: compute from alphas instead of using g3 from SLHA file */
1120 double g_3= sqrt(4.*PI*QCDHelper::alpha_s(mu_W)); //TODO : check pole or running
1121 M_D[0]=src.get_val(ParameterType::BSM, "MASS", 1000001);
1122 M_D[1]=src.get_val(ParameterType::BSM, "MASS", 1000003);
1123 M_D[2]=src.get_val(ParameterType::BSM, "MASS", 1000005);
1124 M_D[3]=src.get_val(ParameterType::BSM, "MASS", 2000001);
1125 M_D[4]=src.get_val(ParameterType::BSM, "MASS", 2000003);
1126 M_D[5]=src.get_val(ParameterType::BSM, "MASS", 2000005);
1127
1128 for(int i = 0; i<6; ++i) {
1129 for(int j = 0; j<6; ++j) {
1130 Z_D[i][j]= src.get_val(ParameterType::BSM, "DSQMIX", LhaID(j+1, i+1)); //TODO: deal with this group
1131 }
1132 } // inverse matrix, because in SLHA2 the second index denotes quark flavour (dl,sl,bl,dr,sr,br)
1133 for(int i = 0; i<6; ++i) {
1134 M_D_pow_2[i]=pow(M_D[i],2);
1135 }
1136
1137 scalar_t Cp2_gluino=0.;
1138
1139 double D2g,D0g;
1140
1141 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie] and Z_D[5][ie] -> Z_D[0+3][ie] */
1142
1143 for(int i =0; i<6; ++i) {
1144 for(int j = 0; j<6; ++j) {
1145 D2g = D2p(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
1146 D0g = D0(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
1147
1148 Cp2_gluino += -17.*D0g*pow(Mg, 2.)*Z_D[5][i]*Z_D[5][j]*pow(g_3,4.)*conj(Z_D[0][i])*conj(Z_D[0][j])/(288.*pow(PI, 2.));
1149 }
1150 }
1151
1152
1153 //chargino ->
1154
1155
1156 double M_ch[2],M_ch_pow_2[2],M_U[6],M_U_pow_2[6];
1157 scalar_t Z_p[2][2],Z_m[2][2],Z_U[6][6];
1158 scalar_t Yd[3],Yu[3];
1159 double sw=sin(atan(src.get_val(ParameterType::SM, "GAUGE", 2)/src.get_val(ParameterType::SM, "GAUGE", 2)));
1160 double Q_e = (src.get_val(ParameterType::SM, "GAUGE", 2))*sw;
1161 double swi=1./sw;
1162
1163 M_ch[0]=src.get_val(ParameterType::BSM, "MASS", 1000024);
1164 M_ch[1]=src.get_val(ParameterType::BSM, "MASS", 1000037);
1165
1166 M_U[0]=src.get_val(ParameterType::BSM, "MASS", 1000002);
1167 M_U[1]=src.get_val(ParameterType::BSM, "MASS", 1000004);
1168 M_U[2]=src.get_val(ParameterType::BSM, "MASS", 1000006);
1169 M_U[3]=src.get_val(ParameterType::BSM, "MASS", 2000002);
1170 M_U[4]=src.get_val(ParameterType::BSM, "MASS", 2000004);
1171 M_U[5]=src.get_val(ParameterType::BSM, "MASS", 2000006);
1172
1173 for(int i=0; i<2; ++i){
1174 M_ch_pow_2[i]=pow(M_ch[i],2);
1175 }
1176 for(int i=0; i<6; ++i){
1177 M_U_pow_2[i]=pow(M_U[i],2);
1178 }
1179 for(int i=0; i <2; ++i) {
1180 for(int j=0; j<2; ++j) {
1181 Z_p[i][j]=conj(src.get_val(ParameterType::BSM, "VMIX", LhaID(j+1, i+1)));
1182 }
1183 } /* NM: conversion from SLHA2 convention */
1184 for(int i=2; i<2; ++i) {
1185 for(int j=0; j<2; ++j) {
1186 Z_m[i][j]=conj(src.get_val(ParameterType::BSM, "UMIX", LhaID(j+1, i+1)));
1187 }
1188 } /* NM: conversion from SLHA2 convention */
1189 for(int i=0; i<6; ++i) {
1190 for(int j=0; j<6; ++j) {
1191 Z_U[i][j]=conj(src.get_val(ParameterType::BSM, "USQMIX", LhaID(j+1, i+1))); //TODO: deal with this group
1192 }
1193 } /* NM: conversion from SLHA2 convention */
1194
1195 double v1,v2,beta;
1196 beta = atan(src.get_val(ParameterType::BSM, "EXTPAR", 25));
1197 v1 = 2.*(src.get_val(ParameterType::SM, "MASS", 24))*cos(beta)/src.get_val(ParameterType::SM, "GAUGE", 2);
1198 v2 = v1*tan(beta);
1199
1200 double mc = src.get_val(ParameterType::SM, "MASS", 4);
1201
1202 double m_b=QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR); /* NM: running mass */
1203 double m_t=QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR); /* NM: running mass */
1204
1205 double common = sqrt(2.)/v2;
1206 Yu[0] = common*src.get_val(ParameterType::SM, "MASS", 2);
1207 Yu[1] = common*QCDHelper::msbar_mass(4, mu_W, MassType::POLE); //TODO : check this to be sure
1208
1209 Yu[2] = common*m_t; /* NM: running mass */
1210 double otherc = sqrt(2.)/v1;
1211 Yd[0] = otherc*src.get_val(ParameterType::SM, "MASS", 1);
1212 Yd[1] = otherc*src.get_val(ParameterType::SM, "MASS", 3);
1213 Yd[2] = otherc*m_b; /* NM: running mass */
1214
1215
1216
1217 scalar_t Cp2_chargino=0.;
1218
1219
1220 double D0ch,D2ch;
1221
1222 /* NM: added 0eration dependence, Yd[2] -> Yd[0] and V_CKM[Ke][2] -> V_CKM[Ke][0] */
1223
1224 for(int i = 0; i<6; ++i) {
1225 for(int j=0; j<6; ++j) {
1226 for(int a =0; a<2; ++a) {
1227 for (int b=0; b<2; ++b) {
1228 D0ch = D0(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
1229 D2ch = D2p(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
1230 for(int k=0; k<3; ++k) {
1231
1232
1233 Cp2_chargino += 0.;
1234
1235 }
1236 }
1237 }
1238 }
1239 }
1240
1241
1242
1243 //neutralino ->
1244
1245
1246 double M_ch0[4],M_ch0_pow_2[4],M_D[6],M_D_pow_2[6];
1247 scalar_t Z_N[4][4];
1248
1249 double cw=cos(atan(src.get_val(ParameterType::SM, "GAUGE", 1)/src.get_val(ParameterType::SM, "GAUGE", 2)));
1250
1251 double otherc = sqrt(2.)/v1;
1252
1253 std::array<double,4> temp_ch0 = {src.get_val(ParameterType::BSM, "MASS", 1000022),
1254 src.get_val(ParameterType::BSM, "MASS", 1000023),
1255 src.get_val(ParameterType::BSM, "MASS", 1000025),
1256 src.get_val(ParameterType::BSM, "MASS", 1000035)};
1257
1258 M_ch0[0]=fabs(temp_ch0[0]);
1259 M_ch0[1]=fabs(temp_ch0[1]);
1260 M_ch0[2]=fabs(temp_ch0[2]);
1261 M_ch0[3]=fabs(temp_ch0[3]);
1262
1263 for(int i=0; i<4; ++i){
1264 M_ch0_pow_2[i]=pow(M_ch0[i],2);
1265 }
1266
1267
1268 for(int i=0; i<6; ++i) {
1269 M_D_pow_2[i]=pow(M_D[i],2);
1270 }
1271
1272
1273
1274 for(int i=0; i<4; ++i) {
1275 for(int j=0; j<4; ++j) {
1276 Z_N[i][j] = conj(src.get_val(ParameterType::BSM, "NMIX", LhaID(i+1, j+1))); //TODO : i,j or j,i like the others ?
1277 }
1278 }
1279
1280
1281 for(int i=0; i<4; ++i){
1282 if(temp_ch0[i]<0.) {
1283 for(int j=0; j<4; ++j) {
1284 Z_N[i][j]*=I;
1285 }
1286 }
1287 } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
1288
1289 scalar_t C1_neutralino=0.;
1290 scalar_t C2_neutralino=0.;
1291 scalar_t C3_neutralino=0.;
1292 scalar_t C4_neutralino=0.;
1293 scalar_t C5_neutralino=0.;
1294 scalar_t Cp1_neutralino=0.;
1295 scalar_t Cp2_neutralino=0.;
1296 scalar_t Cp3_neutralino=0.;
1297 double D0ne,D2ne;
1298
1299 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie], Z_D[5][ie] -> Z_D[0+3][ie] and Yd[2] -> Yd[0] */
1300
1301 for(int i=0; i<6; ++i) {
1302 for(int j=0; j<6; ++j) {
1303 for(int a=0; a<4; ++a) {
1304 for (int b=0; b<4; ++b) {
1305 D0ne = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
1306 D2ne = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
1307 C1_neutralino += -D0ne*M_ch0[a]*M_ch0[b]*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*
1308 (-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][b]*sw/3.0 - Z_N[1][b]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][j]*Z_N[2][b])*
1309 (-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a]))*
1310 (-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 - conj(Z_N[1][b])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][b]))/(64.0*pow(PI, 2)) -
1311 D2ne*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*
1312 (-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][b]*sw/3.0 - Z_N[1][b]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][j]*Z_N[2][b])*
1313 (-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a]))*
1314 (-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 - conj(Z_N[1][b])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][b]))/(32.0*pow(PI, 2));
1315
1316
1317 Cp2_neutralino += D0ne*M_ch0[a]*M_ch0[b]*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][a])/(3.0*cw) +
1318 Yd[2]*Z_D[2][j]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 - conj(Z_N[1][b])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][b]))*(-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 -
1319 conj(Z_N[1][b])*cw)*conj(Z_D[0][j])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][j])*conj(Z_N[2][b]))/(32.0*pow(PI, 2));
1320
1321 }
1322 }
1323 }
1324 }
1325
1326
1327
1328 //mixed ->
1329
1330
1331 scalar_t Cp2_mixed=0.;
1332
1333
1334 double M_g=src.get_val(ParameterType::BSM, "MASS", 1000021);
1335 double M_g_pow_2 = pow(M_g,2.);
1336
1337 // } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
1338
1339 double D0mix,D2mix;
1340
1341 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie], Z_D[5][ie] -> Z_D[0+3][ie] and Yd[2] -> Yd[0] */
1342
1343 for(int i=0; i<6; ++i) {
1344 for(int j=0; j<6; ++j) {
1345 for(int a=0; a<4; ++a) {
1346 D0mix = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
1347 D2mix = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
1348
1349 Cp2_mixed += D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(Z_D[5][i]*pow(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) +
1350 conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a]), 2)*conj(Z_D[5][j]) + 3.0*Z_D[5][j]*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
1351 conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a]))*conj(Z_D[0][i]))/(48.0*pow(PI, 2)) +
1352 D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][a])/(3.0*cw) +
1353 Yd[2]*Z_D[2][j]*conj(Z_N[2][a]))*conj(Z_D[0][i])*conj(Z_D[0][j])/(48.0*pow(PI, 2));
1354
1355 }
1356 }
1357 }
1358
1359 //higgs PInguin ->
1360
1361
1362}
1363
1364//BD3
1365
1368 {
1369 {ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, //mass_c_muW_mcrun
1370 {ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, //mass_b_muW_mbrun
1371 {ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, //mass_t_muW_mbrun
1372 {ParameterType::SM, "MASS", 24},
1373 {ParameterType::BSM, "MASS", 37}, // M_H
1374 {ParameterType::SM, "MASS", 1}, //m_d
1375 {ParameterType::SM, "MASS", 2}, //m_u
1376 {ParameterType::BSM, "MASS", 1000001},
1377 {ParameterType::BSM, "MASS", 1000002},
1378 {ParameterType::BSM, "MASS", 1000003},
1379 {ParameterType::BSM, "MASS", 1000004},
1380 {ParameterType::BSM, "MASS", 1000005},
1381 {ParameterType::BSM, "MASS", 1000006},
1382 {ParameterType::BSM, "MASS", 2000001},
1383 {ParameterType::BSM, "MASS", 2000002},
1384 {ParameterType::BSM, "MASS", 2000003},
1385 {ParameterType::BSM, "MASS", 2000004},
1386 {ParameterType::BSM, "MASS", 2000005},
1387 {ParameterType::BSM, "MASS", 2000006},
1388 {ParameterType::BSM, "MASS", 1000024},
1389 {ParameterType::BSM, "MASS", 1000037},
1390 {ParameterType::BSM, "MASS", 1000022},
1391 {ParameterType::BSM, "MASS", 1000023},
1392 {ParameterType::BSM, "MASS", 1000025},
1393 {ParameterType::BSM, "MASS", 1000035},
1394 {ParameterType::BSM, "MASS", 36},
1395 {ParameterType::BSM, "MSOFT", 2},
1396 {ParameterType::BSM, "HMIX", 1},
1397 {ParameterType::BSM, "AU", LhaID(3,3)},
1398 {ParameterType::SM, "GAUGE", 1}, //gp
1399 {ParameterType::SM, "GAUGE", 2}, //g_2
1400 {ParameterType::SM, "VCKM", LhaID(0, 0)}, // V_ud
1401 {ParameterType::SM, "VCKM", LhaID(0, 1)}, // V_us
1402 {ParameterType::SM, "VCKM", LhaID(0, 2)}, // V_ub
1403 {ParameterType::SM, "VCKM", LhaID(1, 0)}, // V_cd
1404 {ParameterType::SM, "VCKM", LhaID(1, 1)}, // V_cs
1405 {ParameterType::SM, "VCKM", LhaID(1, 2)}, // V_cb
1406 {ParameterType::SM, "VCKM", LhaID(2, 0)}, // V_td
1407 {ParameterType::SM, "VCKM", LhaID(2, 1)}, // V_ts
1408 {ParameterType::SM, "VCKM", LhaID(2, 2)}, // V_tb
1409 {ParameterType::SM, "EW_SCALE", 1}
1410 },
1411 compute_LO,
1413 };
1414}
1415
1417
1418 double mu_W = src.get_val(ParameterType::WILSON, "EW_SCALE", 1);
1419 double M_H=src.get_val(ParameterType::BSM, "MASS", 37);
1420 double M_W=src.get_val(ParameterType::SM, "MASS", 24);
1421 double M_H_pow_2 = pow(M_H,2.);
1422 double M_W_pow_2 = pow(M_W,2.);
1423 std::array<std::array<scalar_t, 3>, 3> V_CKM {};
1424 double m_q = src.get_val(ParameterType::SM, "MASS", 1);
1425
1426 double m_b= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
1427 double g_2=src.get_val(ParameterType::SM, "GAUGE", 2);
1428 double tbeta = src.get_val(ParameterType::BSM, "HMIX", 2);
1429 double m_u[4],m_u_pow_2[4];
1430
1431 for (int i = 0; i<3; ++i) {
1432 for (int j = 0; j<3; j++) {
1433 V_CKM[i][j] = src.get_val(ParameterType::SM, "VCKM", LhaID(i, j));
1434 }
1435 }
1436 m_u[1]= src.get_val(ParameterType::SM, "MASS", 2);
1437 m_u[2]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 4);
1438 m_u[3]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 6);
1439
1440
1441 for(int i =0;i<3;++i) {
1442 m_u_pow_2[i]=pow(m_u[i],2.);
1443 }
1444
1445
1446 scalar_t C3_chargedhiggs=0.;
1447
1448
1449 double D0h,D0h_c,D2h,D2h_c;
1450 scalar_t CKM_product;
1451
1452
1453 for(int i = 0; i<3; i++) for(int j=1; j<3; j++) {
1454 D0h = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
1455 D0h_c = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
1456 D2h = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
1457 D2h_c = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
1458
1459 CKM_product = V_CKM[i][3]*V_CKM[j][3]*conj(V_CKM[i][0])*conj(V_CKM[j][0]); /* NM: added 0eration dependence, V_CKM[ie][2] -> V_CKM[ie][0] */
1460
1461 C3_chargedhiggs += 0.;
1462
1463 }
1464
1465 //gluino ->
1466
1467
1468 double M_D[6],M_D_pow_2[6],dm[6];
1469 scalar_t Z_D[6][6];
1470 double Mg=src.get_val(ParameterType::BSM, "MASS", 1000021);
1471 double Mg_pow_2 = pow(Mg,2);
1472 // double g_3=sqrt(4.*PI*alphas_running(mu_t,param->mass_top_pole,param->mass_b,param)); /* NM: compute from alphas instead of using g3 from SLHA file */
1473 double g_3= sqrt(4.*PI*QCDHelper::alpha_s(mu_W)); //TODO : check pole or running
1474 M_D[0]=src.get_val(ParameterType::BSM, "MASS", 1000001);
1475 M_D[1]=src.get_val(ParameterType::BSM, "MASS", 1000003);
1476 M_D[2]=src.get_val(ParameterType::BSM, "MASS", 1000005);
1477 M_D[3]=src.get_val(ParameterType::BSM, "MASS", 2000001);
1478 M_D[4]=src.get_val(ParameterType::BSM, "MASS", 2000003);
1479 M_D[5]=src.get_val(ParameterType::BSM, "MASS", 2000005);
1480
1481 for(int i = 0; i<6; ++i) {
1482 for(int j = 0; j<6; ++j) {
1483 Z_D[i][j]= src.get_val(ParameterType::BSM, "DSQMIX", LhaID(j+1, i+1)); //TODO: deal with this group
1484 }
1485 } // inverse matrix, because in SLHA2 the second index denotes quark flavour (dl,sl,bl,dr,sr,br)
1486 for(int i = 0; i<6; ++i) {
1487 M_D_pow_2[i]=pow(M_D[i],2);
1488 }
1489
1490 scalar_t C3_gluino=0.;
1491
1492 double D2g,D0g;
1493
1494 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie] and Z_D[5][ie] -> Z_D[0+3][ie] */
1495
1496 for(int i =0; i<6; ++i) {
1497 for(int j = 0; j<6; ++j) {
1498 D2g = D2p(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
1499 D0g = D0(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
1500
1501 C3_gluino += -D0g*pow(Mg, 2)*Z_D[2][i]*Z_D[2][j]*pow(g_3,4.)*conj(Z_D[0+3][i])*conj(Z_D[0+3][j])/(96.*pow(PI, 2));
1502
1503 }
1504 }
1505
1506
1507 //chargino ->
1508
1509
1510 double M_ch[2],M_ch_pow_2[2],M_U[6],M_U_pow_2[6];
1511 scalar_t Z_p[2][2],Z_m[2][2],Z_U[6][6];
1512 scalar_t Yd[3],Yu[3];
1513 double sw=sin(atan(src.get_val(ParameterType::SM, "GAUGE", 2)/src.get_val(ParameterType::SM, "GAUGE", 2)));
1514 double Q_e = (src.get_val(ParameterType::SM, "GAUGE", 2))*sw;
1515 double swi=1./sw;
1516
1517 M_ch[0]=src.get_val(ParameterType::BSM, "MASS", 1000024);
1518 M_ch[1]=src.get_val(ParameterType::BSM, "MASS", 1000037);
1519
1520 M_U[0]=src.get_val(ParameterType::BSM, "MASS", 1000002);
1521 M_U[1]=src.get_val(ParameterType::BSM, "MASS", 1000004);
1522 M_U[2]=src.get_val(ParameterType::BSM, "MASS", 1000006);
1523 M_U[3]=src.get_val(ParameterType::BSM, "MASS", 2000002);
1524 M_U[4]=src.get_val(ParameterType::BSM, "MASS", 2000004);
1525 M_U[5]=src.get_val(ParameterType::BSM, "MASS", 2000006);
1526
1527 for(int i=0; i<2; ++i){
1528 M_ch_pow_2[i]=pow(M_ch[i],2);
1529 }
1530 for(int i=0; i<6; ++i){
1531 M_U_pow_2[i]=pow(M_U[i],2);
1532 }
1533 for(int i=0; i <2; ++i) {
1534 for(int j=0; j<2; ++j) {
1535 Z_p[i][j]=conj(src.get_val(ParameterType::BSM, "VMIX", LhaID(j+1, i+1)));
1536 }
1537 } /* NM: conversion from SLHA2 convention */
1538 for(int i=2; i<2; ++i) {
1539 for(int j=0; j<2; ++j) {
1540 Z_m[i][j]=conj(src.get_val(ParameterType::BSM, "UMIX", LhaID(j+1, i+1)));
1541 }
1542 } /* NM: conversion from SLHA2 convention */
1543 for(int i=0; i<6; ++i) {
1544 for(int j=0; j<6; ++j) {
1545 Z_U[i][j]=conj(src.get_val(ParameterType::BSM, "USQMIX", LhaID(j+1, i+1))); //TODO: deal with this group
1546 }
1547 } /* NM: conversion from SLHA2 convention */
1548
1549 double v1,v2,beta;
1550 beta = atan(src.get_val(ParameterType::BSM, "EXTPAR", 25));
1551 v1 = 2.*(src.get_val(ParameterType::SM, "MASS", 24))*cos(beta)/src.get_val(ParameterType::SM, "GAUGE", 2);
1552 v2 = v1*tan(beta);
1553
1554 double mc = src.get_val(ParameterType::SM, "MASS", 4);
1555
1556 double m_b=QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR); /* NM: running mass */
1557 double m_t=QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR); /* NM: running mass */
1558
1559 double common = sqrt(2.)/v2;
1560 Yu[0] = common*src.get_val(ParameterType::SM, "MASS", 2);
1561 Yu[1] = common*QCDHelper::msbar_mass(4, mu_W, MassType::POLE); //TODO : check this to be sure
1562
1563 Yu[2] = common*m_t; /* NM: running mass */
1564 double otherc = sqrt(2.)/v1;
1565 Yd[0] = otherc*src.get_val(ParameterType::SM, "MASS", 1);
1566 Yd[1] = otherc*src.get_val(ParameterType::SM, "MASS", 3);
1567 Yd[2] = otherc*m_b; /* NM: running mass */
1568
1569
1570 scalar_t C3_chargino=0.;
1571
1572
1573 double D0ch,D2ch;
1574
1575 /* NM: added 0eration dependence, Yd[2] -> Yd[0] and V_CKM[Ke][2] -> V_CKM[Ke][0] */
1576
1577 for(int i = 0; i<6; ++i) {
1578 for(int j=0; j<6; ++j) {
1579 for(int a =0; a<2; ++a) {
1580 for (int b=0; b<2; ++b) {
1581 D0ch = D0(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
1582 D2ch = D2p(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
1583 for(int k=0; k<3; ++k) {
1584
1585 C3_chargino += -D0ch*M_ch[a]*M_ch[b]*pow(V_CKM[k][2], 2)*Z_m[1][a]*Z_m[1][b]*Z_U[k][i]*Z_U[k][j]*(-Q_e*Z_p[0][a]*conj(Z_U[k][i])*swi + Yu[k]*Z_p[1][a]*conj(Z_U[k+3][i]))*(-Q_e*Z_p[0][b]*conj(Z_U[k][j])*swi + Yu[k]*Z_p[1][b]*conj(Z_U[k+3][j]))*pow(conj(V_CKM[k][0]), 2)*pow(conj(Yd[0]), 2)/(32.0*pow(PI, 2));
1586
1587 }
1588 }
1589 }
1590 }
1591 }
1592
1593
1594
1595 //neutralino ->
1596
1597
1598 double M_ch0[4],M_ch0_pow_2[4],M_D[6],M_D_pow_2[6];
1599 scalar_t Z_N[4][4];
1600
1601 double cw=cos(atan(src.get_val(ParameterType::SM, "GAUGE", 1)/src.get_val(ParameterType::SM, "GAUGE", 2)));
1602
1603 double otherc = sqrt(2.)/v1;
1604
1605 std::array<double,4> temp_ch0 = {src.get_val(ParameterType::BSM, "MASS", 1000022),
1606 src.get_val(ParameterType::BSM, "MASS", 1000023),
1607 src.get_val(ParameterType::BSM, "MASS", 1000025),
1608 src.get_val(ParameterType::BSM, "MASS", 1000035)};
1609
1610 M_ch0[0]=fabs(temp_ch0[0]);
1611 M_ch0[1]=fabs(temp_ch0[1]);
1612 M_ch0[2]=fabs(temp_ch0[2]);
1613 M_ch0[3]=fabs(temp_ch0[3]);
1614
1615 for(int i=0; i<4; ++i){
1616 M_ch0_pow_2[i]=pow(M_ch0[i],2);
1617 }
1618
1619
1620 for(int i=0; i<6; ++i) {
1621 M_D_pow_2[i]=pow(M_D[i],2);
1622 }
1623
1624
1625
1626 for(int i=0; i<4; ++i) {
1627 for(int j=0; j<4; ++j) {
1628 Z_N[i][j] = conj(src.get_val(ParameterType::BSM, "NMIX", LhaID(i+1, j+1))); //TODO : i,j or j,i like the others ?
1629 }
1630 }
1631
1632
1633 for(int i=0; i<4; ++i){
1634 if(temp_ch0[i]<0.) {
1635 for(int j=0; j<4; ++j) {
1636 Z_N[i][j]*=I;
1637 }
1638 }
1639 } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
1640
1641 scalar_t C3_neutralino=0.;
1642
1643 double D0ne,D2ne;
1644
1645 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie], Z_D[5][ie] -> Z_D[0+3][ie] and Yd[2] -> Yd[0] */
1646
1647 for(int i=0; i<6; ++i) {
1648 for(int j=0; j<6; ++j) {
1649 for(int a=0; a<4; ++a) {
1650 for (int b=0; b<4; ++b) {
1651 D0ne = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
1652 D2ne = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
1653
1654 C3_neutralino += -D0ne*M_ch0[a]*M_ch0[b]*((-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][j])/(3.0*cw) + Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][j]))*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][b]*sw/3.0 - Z_N[1][b]*cw)/(2.0*cw*sw) +
1655 Yd[2]*Z_D[5][j]*Z_N[2][b]) - (-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[0+3][j])/(3.0*cw) + Z_N[2][b]*conj(Yd[0])*conj(Z_D[0][j]))*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) +
1656 Yd[2]*Z_D[5][j]*Z_N[2][a]))*(-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[0+3][i])/(3.0*cw) + Z_N[2][b]*conj(Yd[0])*conj(Z_D[0][i]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) +
1657 Yd[2]*Z_D[5][i]*Z_N[2][a])/(32.0*pow(PI, 2));
1658
1659 }
1660 }
1661 }
1662 }
1663
1664
1665
1666 //mixed ->
1667
1668
1669 scalar_t C3_mixed=0.;
1670
1671
1672
1673 double M_g=src.get_val(ParameterType::BSM, "MASS", 1000021);
1674 double M_g_pow_2 = pow(M_g,2.);
1675
1676 // } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
1677
1678 double D0mix,D2mix;
1679
1680 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie], Z_D[5][ie] -> Z_D[0+3][ie] and Yd[2] -> Yd[0] */
1681
1682 for(int i=0; i<6; ++i) {
1683 for(int j=0; j<6; ++j) {
1684 for(int a=0; a<4; ++a) {
1685 D0mix = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
1686 D2mix = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
1687
1688 C3_mixed += D0mix*M_ch0[a]*M_g*Z_D[2][i]*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][i])/(3.0*cw) + Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][i]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][j])/(3.0*cw) +
1689 Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][j]))*conj(Z_D[2][j])/(48.0*pow(PI, 2)) - D0mix*M_ch0[a]*M_g*Z_D[2][j]*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][j])/(3.0*cw) +
1690 Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][j]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*conj(Z_D[0+3][i])/(48.0*pow(PI, 2)) +
1691 D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) +
1692 Yd[2]*Z_D[5][j]*Z_N[2][a])*conj(Z_D[0+3][i])*conj(Z_D[0+3][j])/(48.0*pow(PI, 2));
1693
1694 }
1695 }
1696 }
1697
1698 //higgs PInguin ->
1699
1700}
1701
1702//BD3_tilde
1703
1706 {
1707 {ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, //mass_c_muW_mcrun
1708 {ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, //mass_b_muW_mbrun
1709 {ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, //mass_t_muW_mbrun
1710 {ParameterType::SM, "MASS", 24},
1711 {ParameterType::BSM, "MASS", 37}, // M_H
1712 {ParameterType::SM, "MASS", 1}, //m_d
1713 {ParameterType::SM, "MASS", 2}, //m_u
1714 {ParameterType::BSM, "MASS", 1000001},
1715 {ParameterType::BSM, "MASS", 1000002},
1716 {ParameterType::BSM, "MASS", 1000003},
1717 {ParameterType::BSM, "MASS", 1000004},
1718 {ParameterType::BSM, "MASS", 1000005},
1719 {ParameterType::BSM, "MASS", 1000006},
1720 {ParameterType::BSM, "MASS", 2000001},
1721 {ParameterType::BSM, "MASS", 2000002},
1722 {ParameterType::BSM, "MASS", 2000003},
1723 {ParameterType::BSM, "MASS", 2000004},
1724 {ParameterType::BSM, "MASS", 2000005},
1725 {ParameterType::BSM, "MASS", 2000006},
1726 {ParameterType::BSM, "MASS", 1000024},
1727 {ParameterType::BSM, "MASS", 1000037},
1728 {ParameterType::BSM, "MASS", 1000022},
1729 {ParameterType::BSM, "MASS", 1000023},
1730 {ParameterType::BSM, "MASS", 1000025},
1731 {ParameterType::BSM, "MASS", 1000035},
1732 {ParameterType::BSM, "MASS", 36},
1733 {ParameterType::BSM, "MSOFT", 2},
1734 {ParameterType::BSM, "HMIX", 1},
1735 {ParameterType::BSM, "AU", LhaID(3,3)},
1736 {ParameterType::SM, "GAUGE", 1}, //gp
1737 {ParameterType::SM, "GAUGE", 2}, //g_2
1738 {ParameterType::SM, "VCKM", LhaID(0, 0)}, // V_ud
1739 {ParameterType::SM, "VCKM", LhaID(0, 1)}, // V_us
1740 {ParameterType::SM, "VCKM", LhaID(0, 2)}, // V_ub
1741 {ParameterType::SM, "VCKM", LhaID(1, 0)}, // V_cd
1742 {ParameterType::SM, "VCKM", LhaID(1, 1)}, // V_cs
1743 {ParameterType::SM, "VCKM", LhaID(1, 2)}, // V_cb
1744 {ParameterType::SM, "VCKM", LhaID(2, 0)}, // V_td
1745 {ParameterType::SM, "VCKM", LhaID(2, 1)}, // V_ts
1746 {ParameterType::SM, "VCKM", LhaID(2, 2)}, // V_tb
1747 {ParameterType::SM, "EW_SCALE", 1}
1748 },
1749 compute_LO,
1751 };
1752}
1753
1755
1756 double mu_W = src.get_val(ParameterType::WILSON, "EW_SCALE", 1);
1757 double M_H=src.get_val(ParameterType::BSM, "MASS", 37);
1758 double M_W=src.get_val(ParameterType::SM, "MASS", 24);
1759 double M_H_pow_2 = pow(M_H,2.);
1760 double M_W_pow_2 = pow(M_W,2.);
1761 std::array<std::array<scalar_t, 3>, 3> V_CKM {};
1762 double m_q = src.get_val(ParameterType::SM, "MASS", 1);
1763
1764 double m_b= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
1765 double g_2=src.get_val(ParameterType::SM, "GAUGE", 2);
1766 double tbeta = src.get_val(ParameterType::BSM, "HMIX", 2);
1767 double m_u[4],m_u_pow_2[4];
1768
1769 for (int i = 0; i<3; ++i) {
1770 for (int j = 0; j<3; j++) {
1771 V_CKM[i][j] = src.get_val(ParameterType::SM, "VCKM", LhaID(i, j));
1772 }
1773 }
1774 m_u[1]= src.get_val(ParameterType::SM, "MASS", 2);
1775 m_u[2]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 4);
1776 m_u[3]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 6);
1777
1778
1779 for(int i =0;i<3;++i) {
1780 m_u_pow_2[i]=pow(m_u[i],2.);
1781 }
1782
1783
1784 scalar_t Cp3_chargedhiggs=0.;
1785
1786 double D0h,D0h_c,D2h,D2h_c;
1787 scalar_t CKM_product;
1788
1789
1790 for(int i = 0; i<3; i++) for(int j=1; j<3; j++) {
1791 D0h = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
1792 D0h_c = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
1793 D2h = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
1794 D2h_c = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
1795
1796 CKM_product = V_CKM[i][3]*V_CKM[j][3]*conj(V_CKM[i][0])*conj(V_CKM[j][0]); /* NM: added 0eration dependence, V_CKM[ie][2] -> V_CKM[ie][0] */
1797
1798 Cp3_chargedhiggs += 0.;
1799 }
1800
1801 //gluino ->
1802
1803
1804 double M_D[6],M_D_pow_2[6],dm[6];
1805 scalar_t Z_D[6][6];
1806 double Mg=src.get_val(ParameterType::BSM, "MASS", 1000021);
1807 double Mg_pow_2 = pow(Mg,2);
1808 // double g_3=sqrt(4.*PI*alphas_running(mu_t,param->mass_top_pole,param->mass_b,param)); /* NM: compute from alphas instead of using g3 from SLHA file */
1809 double g_3= sqrt(4.*PI*QCDHelper::alpha_s(mu_W)); //TODO : check pole or running
1810 M_D[0]=src.get_val(ParameterType::BSM, "MASS", 1000001);
1811 M_D[1]=src.get_val(ParameterType::BSM, "MASS", 1000003);
1812 M_D[2]=src.get_val(ParameterType::BSM, "MASS", 1000005);
1813 M_D[3]=src.get_val(ParameterType::BSM, "MASS", 2000001);
1814 M_D[4]=src.get_val(ParameterType::BSM, "MASS", 2000003);
1815 M_D[5]=src.get_val(ParameterType::BSM, "MASS", 2000005);
1816
1817 for(int i = 0; i<6; ++i) {
1818 for(int j = 0; j<6; ++j) {
1819 Z_D[i][j]= src.get_val(ParameterType::BSM, "DSQMIX", LhaID(j+1, i+1)); //TODO: deal with this group
1820 }
1821 } // inverse matrix, because in SLHA2 the second index denotes quark flavour (dl,sl,bl,dr,sr,br)
1822 for(int i = 0; i<6; ++i) {
1823 M_D_pow_2[i]=pow(M_D[i],2);
1824 }
1825
1826
1827 scalar_t Cp3_gluino=0.;
1828 double D2g,D0g;
1829
1830 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie] and Z_D[5][ie] -> Z_D[0+3][ie] */
1831
1832 for(int i =0; i<6; ++i) {
1833 for(int j = 0; j<6; ++j) {
1834 D2g = D2p(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
1835 D0g = D0(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
1836
1837 Cp3_gluino += -D0g*pow(Mg, 2)*Z_D[5][i]*Z_D[5][j]*pow(g_3,4.)*conj(Z_D[0][i])*conj(Z_D[0][j])/(96.*pow(PI, 2));
1838 }
1839 }
1840
1841
1842 //chargino ->
1843
1844
1845 double M_ch[2],M_ch_pow_2[2],M_U[6],M_U_pow_2[6];
1846 scalar_t Z_p[2][2],Z_m[2][2],Z_U[6][6];
1847 scalar_t Yd[3],Yu[3];
1848 double sw=sin(atan(src.get_val(ParameterType::SM, "GAUGE", 2)/src.get_val(ParameterType::SM, "GAUGE", 2)));
1849 double Q_e = (src.get_val(ParameterType::SM, "GAUGE", 2))*sw;
1850 double swi=1./sw;
1851
1852 M_ch[0]=src.get_val(ParameterType::BSM, "MASS", 1000024);
1853 M_ch[1]=src.get_val(ParameterType::BSM, "MASS", 1000037);
1854
1855 M_U[0]=src.get_val(ParameterType::BSM, "MASS", 1000002);
1856 M_U[1]=src.get_val(ParameterType::BSM, "MASS", 1000004);
1857 M_U[2]=src.get_val(ParameterType::BSM, "MASS", 1000006);
1858 M_U[3]=src.get_val(ParameterType::BSM, "MASS", 2000002);
1859 M_U[4]=src.get_val(ParameterType::BSM, "MASS", 2000004);
1860 M_U[5]=src.get_val(ParameterType::BSM, "MASS", 2000006);
1861
1862 for(int i=0; i<2; ++i){
1863 M_ch_pow_2[i]=pow(M_ch[i],2);
1864 }
1865 for(int i=0; i<6; ++i){
1866 M_U_pow_2[i]=pow(M_U[i],2);
1867 }
1868 for(int i=0; i <2; ++i) {
1869 for(int j=0; j<2; ++j) {
1870 Z_p[i][j]=conj(src.get_val(ParameterType::BSM, "VMIX", LhaID(j+1, i+1)));
1871 }
1872 } /* NM: conversion from SLHA2 convention */
1873 for(int i=2; i<2; ++i) {
1874 for(int j=0; j<2; ++j) {
1875 Z_m[i][j]=conj(src.get_val(ParameterType::BSM, "UMIX", LhaID(j+1, i+1)));
1876 }
1877 } /* NM: conversion from SLHA2 convention */
1878 for(int i=0; i<6; ++i) {
1879 for(int j=0; j<6; ++j) {
1880 Z_U[i][j]=conj(src.get_val(ParameterType::BSM, "USQMIX", LhaID(j+1, i+1))); //TODO: deal with this group
1881 }
1882 } /* NM: conversion from SLHA2 convention */
1883
1884 double v1,v2,beta;
1885 beta = atan(src.get_val(ParameterType::BSM, "EXTPAR", 25));
1886 v1 = 2.*(src.get_val(ParameterType::SM, "MASS", 24))*cos(beta)/src.get_val(ParameterType::SM, "GAUGE", 2);
1887 v2 = v1*tan(beta);
1888
1889 double mc = src.get_val(ParameterType::SM, "MASS", 4);
1890
1891 double m_b=QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR); /* NM: running mass */
1892 double m_t=QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR); /* NM: running mass */
1893
1894 double common = sqrt(2.)/v2;
1895 Yu[0] = common*src.get_val(ParameterType::SM, "MASS", 2);
1896 Yu[1] = common*QCDHelper::msbar_mass(4, mu_W, MassType::POLE); //TODO : check this to be sure
1897
1898 Yu[2] = common*m_t; /* NM: running mass */
1899 double otherc = sqrt(2.)/v1;
1900 Yd[0] = otherc*src.get_val(ParameterType::SM, "MASS", 1);
1901 Yd[1] = otherc*src.get_val(ParameterType::SM, "MASS", 3);
1902 Yd[2] = otherc*m_b; /* NM: running mass */
1903
1904
1905 scalar_t Cp3_chargino=0.;
1906
1907 double D0ch,D2ch;
1908
1909 /* NM: added 0eration dependence, Yd[2] -> Yd[0] and V_CKM[Ke][2] -> V_CKM[Ke][0] */
1910
1911 for(int i = 0; i<6; ++i) {
1912 for(int j=0; j<6; ++j) {
1913 for(int a =0; a<2; ++a) {
1914 for (int b=0; b<2; ++b) {
1915 D0ch = D0(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
1916 D2ch = D2p(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
1917 for(int k=0; k<3; ++k) {
1918
1919 Cp3_chargino += -D0ch*M_ch[a]*M_ch[b]*pow(V_CKM[k][2], 2)*pow(Yd[2], 2)*(-Q_e*Z_U[k][i]*conj(Z_p[0][b])*swi + Z_U[k+3][i]*conj(Yu[k])*conj(Z_p[1][b]))*(-Q_e*Z_U[k][j]*conj(Z_p[0][a])*swi + Z_U[k+3][j]*conj(Yu[k])*conj(Z_p[1][a]))*pow(conj(V_CKM[k][0]), 2)*conj(Z_m[1][a])*conj(Z_m[1][b])*conj(Z_U[k][i])*conj(Z_U[k][j])/(32.0*pow(PI, 2));
1920 }
1921 }
1922 }
1923 }
1924 }
1925
1926
1927
1928 //neutralino ->
1929
1930
1931 double M_ch0[4],M_ch0_pow_2[4],M_D[6],M_D_pow_2[6];
1932 scalar_t Z_N[4][4];
1933
1934 double cw=cos(atan(src.get_val(ParameterType::SM, "GAUGE", 1)/src.get_val(ParameterType::SM, "GAUGE", 2)));
1935
1936 double otherc = sqrt(2.)/v1;
1937
1938 std::array<double,4> temp_ch0 = {src.get_val(ParameterType::BSM, "MASS", 1000022),
1939 src.get_val(ParameterType::BSM, "MASS", 1000023),
1940 src.get_val(ParameterType::BSM, "MASS", 1000025),
1941 src.get_val(ParameterType::BSM, "MASS", 1000035)};
1942
1943 M_ch0[0]=fabs(temp_ch0[0]);
1944 M_ch0[1]=fabs(temp_ch0[1]);
1945 M_ch0[2]=fabs(temp_ch0[2]);
1946 M_ch0[3]=fabs(temp_ch0[3]);
1947
1948 for(int i=0; i<4; ++i){
1949 M_ch0_pow_2[i]=pow(M_ch0[i],2);
1950 }
1951
1952
1953 for(int i=0; i<6; ++i) {
1954 M_D_pow_2[i]=pow(M_D[i],2);
1955 }
1956
1957
1958
1959 for(int i=0; i<4; ++i) {
1960 for(int j=0; j<4; ++j) {
1961 Z_N[i][j] = conj(src.get_val(ParameterType::BSM, "NMIX", LhaID(i+1, j+1))); //TODO : i,j or j,i like the others ?
1962 }
1963 }
1964
1965
1966 for(int i=0; i<4; ++i){
1967 if(temp_ch0[i]<0.) {
1968 for(int j=0; j<4; ++j) {
1969 Z_N[i][j]*=I;
1970 }
1971 }
1972 } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
1973
1974 scalar_t Cp3_neutralino=0.;
1975 double D0ne,D2ne;
1976
1977 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie], Z_D[5][ie] -> Z_D[0+3][ie] and Yd[2] -> Yd[0] */
1978
1979 for(int i=0; i<6; ++i) {
1980 for(int j=0; j<6; ++j) {
1981 for(int a=0; a<4; ++a) {
1982 for (int b=0; b<4; ++b) {
1983 D0ne = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
1984 D2ne = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
1985
1986 Cp3_neutralino += -D0ne*M_ch0[a]*M_ch0[b]*(-(-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][j]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 - conj(Z_N[1][b])*cw)*conj(Z_D[0][j])/(2.0*cw*sw) +
1987 conj(Yd[0])*conj(Z_D[0+3][j])*conj(Z_N[2][b])) + (-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][b])/(3.0*cw) + Yd[2]*Z_D[2][j]*conj(Z_N[2][b]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
1988 conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a])))*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) +
1989 Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 - conj(Z_N[1][b])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][b]))/(32.0*pow(PI, 2));
1990
1991 }
1992 }
1993 }
1994 }
1995
1996
1997
1998 //mixed ->
1999
2000
2001 scalar_t Cp3_mixed=0.;
2002
2003
2004 double M_g=src.get_val(ParameterType::BSM, "MASS", 1000021);
2005 double M_g_pow_2 = pow(M_g,2.);
2006
2007 // } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
2008
2009 double D0mix,D2mix;
2010
2011 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie], Z_D[5][ie] -> Z_D[0+3][ie] and Yd[2] -> Yd[0] */
2012
2013 for(int i=0; i<6; ++i) {
2014 for(int j=0; j<6; ++j) {
2015 for(int a=0; a<4; ++a) {
2016 D0mix = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
2017 D2mix = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
2018
2019 Cp3_mixed += D0mix*M_ch0[a]*M_g*Z_D[5][i]*pow(g_3, 2)*pow(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) +
2020 conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a]), 2)*conj(Z_D[5][j])/(48.0*pow(PI, 2)) - D0mix*M_ch0[a]*M_g*Z_D[5][j]*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) +
2021 Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) +
2022 conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a]))*conj(Z_D[0][i])/(48.0*pow(PI, 2)) + D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) +
2023 Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][j]*conj(Z_N[2][a]))*conj(Z_D[0][i])*conj(Z_D[0][j])/(48.0*pow(PI, 2));
2024 }
2025 }
2026 }
2027
2028 //higgs PInguin ->
2029
2030}
2031
2032//BD4
2033
2036 {
2037 {ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, //mass_c_muW_mcrun
2038 {ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, //mass_b_muW_mbrun
2039 {ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, //mass_t_muW_mbrun
2040 {ParameterType::SM, "MASS", 24},
2041 {ParameterType::BSM, "MASS", 37}, // M_H
2042 {ParameterType::SM, "MASS", 1}, //m_d
2043 {ParameterType::SM, "MASS", 2}, //m_u
2044 {ParameterType::BSM, "MASS", 1000001},
2045 {ParameterType::BSM, "MASS", 1000002},
2046 {ParameterType::BSM, "MASS", 1000003},
2047 {ParameterType::BSM, "MASS", 1000004},
2048 {ParameterType::BSM, "MASS", 1000005},
2049 {ParameterType::BSM, "MASS", 1000006},
2050 {ParameterType::BSM, "MASS", 2000001},
2051 {ParameterType::BSM, "MASS", 2000002},
2052 {ParameterType::BSM, "MASS", 2000003},
2053 {ParameterType::BSM, "MASS", 2000004},
2054 {ParameterType::BSM, "MASS", 2000005},
2055 {ParameterType::BSM, "MASS", 2000006},
2056 {ParameterType::BSM, "MASS", 1000024},
2057 {ParameterType::BSM, "MASS", 1000037},
2058 {ParameterType::BSM, "MASS", 1000022},
2059 {ParameterType::BSM, "MASS", 1000023},
2060 {ParameterType::BSM, "MASS", 1000025},
2061 {ParameterType::BSM, "MASS", 1000035},
2062 {ParameterType::BSM, "MASS", 36},
2063 {ParameterType::BSM, "MSOFT", 2},
2064 {ParameterType::BSM, "HMIX", 1},
2065 {ParameterType::BSM, "AU", LhaID(3,3)},
2066 {ParameterType::SM, "GAUGE", 1}, //gp
2067 {ParameterType::SM, "GAUGE", 2}, //g_2
2068 {ParameterType::SM, "VCKM", LhaID(0, 0)}, // V_ud
2069 {ParameterType::SM, "VCKM", LhaID(0, 1)}, // V_us
2070 {ParameterType::SM, "VCKM", LhaID(0, 2)}, // V_ub
2071 {ParameterType::SM, "VCKM", LhaID(1, 0)}, // V_cd
2072 {ParameterType::SM, "VCKM", LhaID(1, 1)}, // V_cs
2073 {ParameterType::SM, "VCKM", LhaID(1, 2)}, // V_cb
2074 {ParameterType::SM, "VCKM", LhaID(2, 0)}, // V_td
2075 {ParameterType::SM, "VCKM", LhaID(2, 1)}, // V_ts
2076 {ParameterType::SM, "VCKM", LhaID(2, 2)}, // V_tb
2077 {ParameterType::SM, "EW_SCALE", 1}
2078 },
2079 compute_LO,
2081 };
2082}
2083
2085
2086 double mu_W = src.get_val(ParameterType::WILSON, "EW_SCALE", 1);
2087 double M_H=src.get_val(ParameterType::BSM, "MASS", 37);
2088 double M_W=src.get_val(ParameterType::SM, "MASS", 24);
2089 double M_H_pow_2 = pow(M_H,2.);
2090 double M_W_pow_2 = pow(M_W,2.);
2091 std::array<std::array<scalar_t, 3>, 3> V_CKM {};
2092 double m_q = src.get_val(ParameterType::SM, "MASS", 1);
2093
2094 double m_b= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
2095 double g_2=src.get_val(ParameterType::SM, "GAUGE", 2);
2096 double tbeta = src.get_val(ParameterType::BSM, "HMIX", 2);
2097 double m_u[4],m_u_pow_2[4];
2098
2099 for (int i = 0; i<3; ++i) {
2100 for (int j = 0; j<3; j++) {
2101 V_CKM[i][j] = src.get_val(ParameterType::SM, "VCKM", LhaID(i, j));
2102 }
2103 }
2104 m_u[1]= src.get_val(ParameterType::SM, "MASS", 2);
2105 m_u[2]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 4);
2106 m_u[3]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 6);
2107
2108
2109 for(int i =0;i<3;++i) {
2110 m_u_pow_2[i]=pow(m_u[i],2.);
2111 }
2112
2113 scalar_t C4_chargedhiggs=0.;
2114
2115
2116 double D0h,D0h_c,D2h,D2h_c;
2117 scalar_t CKM_product;
2118
2119
2120 for(int i = 0; i<3; i++) for(int j=1; j<3; j++) {
2121 D0h = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
2122 D0h_c = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
2123 D2h = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
2124 D2h_c = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
2125
2126 CKM_product = V_CKM[i][3]*V_CKM[j][3]*conj(V_CKM[i][0])*conj(V_CKM[j][0]); /* NM: added 0eration dependence, V_CKM[ie][2] -> V_CKM[ie][0] */
2127
2128 C4_chargedhiggs += pow(g_2,4.)*CKM_product*(m_b*m_q*D2h*pow(tbeta,2.)/pow(M_W,2.) - m_b*m_q*pow(m_u[i],2)*pow(m_u[j],2)*(D0h_c + D0h*(pow(tbeta,2.) + pow(tbeta,-2.)))/(4*pow(M_W,4.)))/(16.*pow(PI,2.));
2129
2130 }
2131
2132 //gluino ->
2133
2134
2135 double M_D[6],M_D_pow_2[6],dm[6];
2136 scalar_t Z_D[6][6];
2137 double Mg=src.get_val(ParameterType::BSM, "MASS", 1000021);
2138 double Mg_pow_2 = pow(Mg,2);
2139 // double g_3=sqrt(4.*PI*alphas_running(mu_t,param->mass_top_pole,param->mass_b,param)); /* NM: compute from alphas instead of using g3 from SLHA file */
2140 double g_3= sqrt(4.*PI*QCDHelper::alpha_s(mu_W)); //TODO : check pole or running
2141 M_D[0]=src.get_val(ParameterType::BSM, "MASS", 1000001);
2142 M_D[1]=src.get_val(ParameterType::BSM, "MASS", 1000003);
2143 M_D[2]=src.get_val(ParameterType::BSM, "MASS", 1000005);
2144 M_D[3]=src.get_val(ParameterType::BSM, "MASS", 2000001);
2145 M_D[4]=src.get_val(ParameterType::BSM, "MASS", 2000003);
2146 M_D[5]=src.get_val(ParameterType::BSM, "MASS", 2000005);
2147
2148 for(int i = 0; i<6; ++i) {
2149 for(int j = 0; j<6; ++j) {
2150 Z_D[i][j]= src.get_val(ParameterType::BSM, "DSQMIX", LhaID(j+1, i+1)); //TODO: deal with this group
2151 }
2152 } // inverse matrix, because in SLHA2 the second index denotes quark flavour (dl,sl,bl,dr,sr,br)
2153 for(int i = 0; i<6; ++i) {
2154 M_D_pow_2[i]=pow(M_D[i],2);
2155 }
2156
2157 scalar_t C4_gluino=0.;
2158
2159 double D2g,D0g;
2160
2161 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie] and Z_D[5][ie] -> Z_D[0+3][ie] */
2162
2163 for(int i =0; i<6; ++i) {
2164 for(int j = 0; j<6; ++j) {
2165 D2g = D2p(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
2166 D0g = D0(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
2167
2168 C4_gluino += -7.*D0g*pow(Mg, 2)*Z_D[2][i]*Z_D[5][j]*pow(g_3,4.)*conj(Z_D[0][i])*conj(Z_D[0+3][j])/(48.*pow(PI, 2)) + D2g*pow(g_3,4.)*(6.*Z_D[2][i]*Z_D[5][j]*conj(Z_D[0][i])*conj(Z_D[0+3][j]) + 11.*Z_D[2][i]*Z_D[5][j]*conj(Z_D[0][j])*conj(Z_D[0+3][i]))/(72.*pow(PI, 2));
2169
2170 }
2171 }
2172
2173
2174 //chargino ->
2175
2176
2177 double M_ch[2],M_ch_pow_2[2],M_U[6],M_U_pow_2[6];
2178 scalar_t Z_p[2][2],Z_m[2][2],Z_U[6][6];
2179 scalar_t Yd[3],Yu[3];
2180 double sw=sin(atan(src.get_val(ParameterType::SM, "GAUGE", 2)/src.get_val(ParameterType::SM, "GAUGE", 2)));
2181 double Q_e = (src.get_val(ParameterType::SM, "GAUGE", 2))*sw;
2182 double swi=1./sw;
2183
2184 M_ch[0]=src.get_val(ParameterType::BSM, "MASS", 1000024);
2185 M_ch[1]=src.get_val(ParameterType::BSM, "MASS", 1000037);
2186
2187 M_U[0]=src.get_val(ParameterType::BSM, "MASS", 1000002);
2188 M_U[1]=src.get_val(ParameterType::BSM, "MASS", 1000004);
2189 M_U[2]=src.get_val(ParameterType::BSM, "MASS", 1000006);
2190 M_U[3]=src.get_val(ParameterType::BSM, "MASS", 2000002);
2191 M_U[4]=src.get_val(ParameterType::BSM, "MASS", 2000004);
2192 M_U[5]=src.get_val(ParameterType::BSM, "MASS", 2000006);
2193
2194 for(int i=0; i<2; ++i){
2195 M_ch_pow_2[i]=pow(M_ch[i],2);
2196 }
2197 for(int i=0; i<6; ++i){
2198 M_U_pow_2[i]=pow(M_U[i],2);
2199 }
2200 for(int i=0; i <2; ++i) {
2201 for(int j=0; j<2; ++j) {
2202 Z_p[i][j]=conj(src.get_val(ParameterType::BSM, "VMIX", LhaID(j+1, i+1)));
2203 }
2204 } /* NM: conversion from SLHA2 convention */
2205 for(int i=2; i<2; ++i) {
2206 for(int j=0; j<2; ++j) {
2207 Z_m[i][j]=conj(src.get_val(ParameterType::BSM, "UMIX", LhaID(j+1, i+1)));
2208 }
2209 } /* NM: conversion from SLHA2 convention */
2210 for(int i=0; i<6; ++i) {
2211 for(int j=0; j<6; ++j) {
2212 Z_U[i][j]=conj(src.get_val(ParameterType::BSM, "USQMIX", LhaID(j+1, i+1))); //TODO: deal with this group
2213 }
2214 } /* NM: conversion from SLHA2 convention */
2215
2216 double v1,v2,beta;
2217 beta = atan(src.get_val(ParameterType::BSM, "EXTPAR", 25));
2218 v1 = 2.*(src.get_val(ParameterType::SM, "MASS", 24))*cos(beta)/src.get_val(ParameterType::SM, "GAUGE", 2);
2219 v2 = v1*tan(beta);
2220
2221 double mc = src.get_val(ParameterType::SM, "MASS", 4);
2222
2223 double m_b=QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR); /* NM: running mass */
2224 double m_t=QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR); /* NM: running mass */
2225
2226 double common = sqrt(2.)/v2;
2227 Yu[0] = common*src.get_val(ParameterType::SM, "MASS", 2);
2228 Yu[1] = common*QCDHelper::msbar_mass(4, mu_W, MassType::POLE); //TODO : check this to be sure
2229
2230 Yu[2] = common*m_t; /* NM: running mass */
2231 double otherc = sqrt(2.)/v1;
2232 Yd[0] = otherc*src.get_val(ParameterType::SM, "MASS", 1);
2233 Yd[1] = otherc*src.get_val(ParameterType::SM, "MASS", 3);
2234 Yd[2] = otherc*m_b; /* NM: running mass */
2235
2236 scalar_t C4_chargino=0.;
2237
2238
2239 double D0ch,D2ch;
2240
2241 /* NM: added 0eration dependence, Yd[2] -> Yd[0] and V_CKM[Ke][2] -> V_CKM[Ke][0] */
2242
2243 for(int i = 0; i<6; ++i) {
2244 for(int j=0; j<6; ++j) {
2245 for(int a =0; a<2; ++a) {
2246 for (int b=0; b<2; ++b) {
2247 D0ch = D0(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
2248 D2ch = D2p(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
2249 for(int k=0; k<3; ++k) {
2250
2251 C4_chargino += D2ch*pow(V_CKM[k][2], 2)*Yd[2]*Z_m[1][a]*Z_U[k][j]*(-Q_e*Z_p[0][b]*conj(Z_U[k][j])*swi + Yu[k]*Z_p[1][b]*conj(Z_U[k+3][j]))*(-Q_e*Z_U[k][i]*conj(Z_p[0][b])*swi + Z_U[k+3][i]*conj(Yu[k])*conj(Z_p[1][b]))*pow(conj(V_CKM[k][0]), 2)*conj(Yd[0])*conj(Z_m[1][a])*conj(Z_U[k][i])/(8.0*pow(PI, 2));
2252
2253 }
2254 }
2255 }
2256 }
2257 }
2258
2259
2260
2261 //neutralino ->
2262
2263
2264 double M_ch0[4],M_ch0_pow_2[4],M_D[6],M_D_pow_2[6];
2265 scalar_t Z_N[4][4];
2266
2267 double cw=cos(atan(src.get_val(ParameterType::SM, "GAUGE", 1)/src.get_val(ParameterType::SM, "GAUGE", 2)));
2268
2269 double otherc = sqrt(2.)/v1;
2270
2271 std::array<double,4> temp_ch0 = {src.get_val(ParameterType::BSM, "MASS", 1000022),
2272 src.get_val(ParameterType::BSM, "MASS", 1000023),
2273 src.get_val(ParameterType::BSM, "MASS", 1000025),
2274 src.get_val(ParameterType::BSM, "MASS", 1000035)};
2275
2276 M_ch0[0]=fabs(temp_ch0[0]);
2277 M_ch0[1]=fabs(temp_ch0[1]);
2278 M_ch0[2]=fabs(temp_ch0[2]);
2279 M_ch0[3]=fabs(temp_ch0[3]);
2280
2281 for(int i=0; i<4; ++i){
2282 M_ch0_pow_2[i]=pow(M_ch0[i],2);
2283 }
2284
2285
2286 for(int i=0; i<6; ++i) {
2287 M_D_pow_2[i]=pow(M_D[i],2);
2288 }
2289
2290
2291
2292 for(int i=0; i<4; ++i) {
2293 for(int j=0; j<4; ++j) {
2294 Z_N[i][j] = conj(src.get_val(ParameterType::BSM, "NMIX", LhaID(i+1, j+1))); //TODO : i,j or j,i like the others ?
2295 }
2296 }
2297
2298
2299 for(int i=0; i<4; ++i){
2300 if(temp_ch0[i]<0.) {
2301 for(int j=0; j<4; ++j) {
2302 Z_N[i][j]*=I;
2303 }
2304 }
2305 } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
2306
2307 scalar_t C4_neutralino=0.;
2308
2309 double D0ne,D2ne;
2310
2311 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie], Z_D[5][ie] -> Z_D[0+3][ie] and Yd[2] -> Yd[0] */
2312
2313 for(int i=0; i<6; ++i) {
2314 for(int j=0; j<6; ++j) {
2315 for(int a=0; a<4; ++a) {
2316 for (int b=0; b<4; ++b) {
2317 D0ne = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
2318 D2ne = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
2319
2320 C4_neutralino += D2ne*((-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][j])/(3.0*cw) + Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][j]))*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][b]*sw/3.0 - Z_N[1][b]*cw)/(2.0*cw*sw) +
2321 Yd[2]*Z_D[5][j]*Z_N[2][b]) + (-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[0+3][j])/(3.0*cw) + Z_N[2][b]*conj(Yd[0])*conj(Z_D[0][j]))*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) +
2322 Yd[2]*Z_D[5][j]*Z_N[2][a]))*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 - conj(Z_N[1][b])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) +
2323 conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][b]))/(8.0*pow(PI, 2));
2324
2325
2326 }
2327 }
2328 }
2329 }
2330
2331
2332
2333 //mixed ->
2334
2335 scalar_t C4_mixed=0.;
2336
2337
2338
2339 double M_g=src.get_val(ParameterType::BSM, "MASS", 1000021);
2340 double M_g_pow_2 = pow(M_g,2.);
2341
2342 // } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
2343
2344 double D0mix,D2mix;
2345
2346 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie], Z_D[5][ie] -> Z_D[0+3][ie] and Yd[2] -> Yd[0] */
2347
2348 for(int i=0; i<6; ++i) {
2349 for(int j=0; j<6; ++j) {
2350 for(int a=0; a<4; ++a) {
2351 D0mix = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
2352 D2mix = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
2353
2354 C4_mixed += D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(Z_D[2][j]*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
2355 conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a]))*conj(Z_D[0+3][i]) + Z_D[5][j]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][j])/(3.0*cw) +
2356 Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][j]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*conj(Z_D[0][i]))/(16.0*pow(PI, 2)) -
2357 D2mix*pow(g_3, 2)*(-3.0*Z_D[2][j]*Z_D[5][i]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][i])/(3.0*cw) + Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][i]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
2358 conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a])) - 3.0*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[5][i])/(3.0*cw) +
2359 Z_N[2][a]*conj(Yd[2])*conj(Z_D[2][i]))*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][j]*Z_N[2][a])*conj(Z_D[0][j])*conj(Z_D[0+3][i]))/(24.0*pow(PI, 2)) -
2360 D2mix*pow(g_3, 2)*(-Z_D[2][j]*Z_D[5][i]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][j])/(3.0*cw) + Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][j]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
2361 conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a])) - (-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][a])/(3.0*cw) +
2362 Yd[2]*Z_D[2][j]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*conj(Z_D[0][j])*conj(Z_D[0+3][i]))/(24.0*pow(PI, 2)) -
2363 D2mix*pow(g_3, 2)*(Z_D[2][j]*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][j])/(3.0*cw) +
2364 Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][j]))*conj(Z_D[0][i]) + Z_D[5][j]*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) +
2365 Yd[2]*Z_D[5][i]*Z_N[2][a])*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a]))*conj(Z_D[0+3][i]))/(24.0*pow(PI, 2));
2366
2367
2368 }
2369 }
2370 }
2371
2372 //higgs PInguin ->
2373
2374
2375
2376
2377 scalar_t delta_d[6][6],delta_d_LL[3][3],delta_d_LR[3][3],delta_d_RL[3][3],delta_d_RR[3][3];
2378 scalar_t delta_u[6][6],delta_u_LL[3][3],delta_u_LR[3][3],delta_u_RL[3][3],delta_u_RR[3][3];
2379
2380 double m_av = (M_U[0]+M_U[1]+M_U[2]+M_U[3]+M_U[4]+M_U[5]+M_D[0]+M_D[1]+M_D[2]+M_D[3]+M_D[4]+M_D[5])/12.;
2381
2382 getDelta(delta_d,Z_D,M_D,m_av,delta_d_LL,delta_d_LR,delta_d_RL,delta_d_RR);
2383 getDelta(delta_u,Z_U,M_U,m_av,delta_u_LL,delta_u_LR,delta_u_RL,delta_u_RR);
2384
2385 double M_A=src.get_val(ParameterType::BSM, "MASS", 36);
2386 double A_t=src.get_val(ParameterType::BSM, "AU", LhaID(3,3)); //A_t
2387 double mu = src.get_val(ParameterType::BSM, "HMIX", 1);
2388 scalar_t M_2 = src.get_val(ParameterType::BSM, "MSOFT", 2);
2389 double x_mu = pow(abs(mu),2)/pow(m_av,2);
2390 scalar_t x_2 = pow(abs(M_2),2)/pow(m_av,2);
2391 double x_g = pow(M_g,2)/pow(m_av,2);
2392 double alpha_s = pow(g_3,2.)/(4.*PI) ;
2393 double alpha_2 = pow(g_2,2.)/(4.*PI);
2394 double eps=2*alpha_s*mu*M_g*f(x_g)/(3.*PI*pow(m_av,2));
2395
2396
2397 scalar_t V_tb = V_CKM[2][2];
2398 scalar_t V_tq = V_CKM[2][0];
2399 scalar_t a1 = alpha_s*alpha_2*pow(m_b,2)*pow(tbeta,4)*pow(abs(mu),2)/(8*PI*pow(M_W,2)*pow(M_A,2)*pow(m_av,4)*pow((1+eps*tbeta),4));
2400 scalar_t a2 = -alpha_s*pow(M_g,2)*delta_d_LL[2][0]*delta_d_RR[2][0]*pow(h1(x_g),2);
2401 scalar_t a3 = alpha_2*pow(m_t,2)*A_t*M_g*h1(x_g)*h3(x_mu)*delta_d_RR[2][0]*V_tb*conj(V_tq)/(pow(M_W,2));
2402 scalar_t a4 = alpha_2*M_2*M_g*delta_u_LL[2][0]*delta_d_RR[2][0]*h1(x_g)*h4(x_2,x_g);
2403
2404 scalar_t C4_higgspenguin = a1*(a2+a3+a4);
2405
2406}
2407
2408//BD_5
2409
2412 {
2413 {ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, //mass_c_muW_mcrun
2414 {ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, //mass_b_muW_mbrun
2415 {ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, //mass_t_muW_mbrun
2416 {ParameterType::SM, "MASS", 24},
2417 {ParameterType::BSM, "MASS", 37}, // M_H
2418 {ParameterType::SM, "MASS", 1}, //m_d
2419 {ParameterType::SM, "MASS", 2}, //m_u
2420 {ParameterType::BSM, "MASS", 1000001},
2421 {ParameterType::BSM, "MASS", 1000002},
2422 {ParameterType::BSM, "MASS", 1000003},
2423 {ParameterType::BSM, "MASS", 1000004},
2424 {ParameterType::BSM, "MASS", 1000005},
2425 {ParameterType::BSM, "MASS", 1000006},
2426 {ParameterType::BSM, "MASS", 2000001},
2427 {ParameterType::BSM, "MASS", 2000002},
2428 {ParameterType::BSM, "MASS", 2000003},
2429 {ParameterType::BSM, "MASS", 2000004},
2430 {ParameterType::BSM, "MASS", 2000005},
2431 {ParameterType::BSM, "MASS", 2000006},
2432 {ParameterType::BSM, "MASS", 1000024},
2433 {ParameterType::BSM, "MASS", 1000037},
2434 {ParameterType::BSM, "MASS", 1000022},
2435 {ParameterType::BSM, "MASS", 1000023},
2436 {ParameterType::BSM, "MASS", 1000025},
2437 {ParameterType::BSM, "MASS", 1000035},
2438 {ParameterType::BSM, "MASS", 36},
2439 {ParameterType::BSM, "MSOFT", 2},
2440 {ParameterType::BSM, "HMIX", 1},
2441 {ParameterType::BSM, "AU", LhaID(3,3)},
2442 {ParameterType::SM, "GAUGE", 1}, //gp
2443 {ParameterType::SM, "GAUGE", 2}, //g_2
2444 {ParameterType::SM, "VCKM", LhaID(0, 0)}, // V_ud
2445 {ParameterType::SM, "VCKM", LhaID(0, 1)}, // V_us
2446 {ParameterType::SM, "VCKM", LhaID(0, 2)}, // V_ub
2447 {ParameterType::SM, "VCKM", LhaID(1, 0)}, // V_cd
2448 {ParameterType::SM, "VCKM", LhaID(1, 1)}, // V_cs
2449 {ParameterType::SM, "VCKM", LhaID(1, 2)}, // V_cb
2450 {ParameterType::SM, "VCKM", LhaID(2, 0)}, // V_td
2451 {ParameterType::SM, "VCKM", LhaID(2, 1)}, // V_ts
2452 {ParameterType::SM, "VCKM", LhaID(2, 2)}, // V_tb
2453 {ParameterType::SM, "EW_SCALE", 1}
2454 },
2455 compute_LO,
2457 };
2458}
2459
2461
2462 double mu_W = src.get_val(ParameterType::WILSON, "EW_SCALE", 1);
2463 double M_H=src.get_val(ParameterType::BSM, "MASS", 37);
2464 double M_W=src.get_val(ParameterType::SM, "MASS", 24);
2465 double M_H_pow_2 = pow(M_H,2.);
2466 double M_W_pow_2 = pow(M_W,2.);
2467 std::array<std::array<scalar_t, 3>, 3> V_CKM {};
2468 double m_q = src.get_val(ParameterType::SM, "MASS", 1);
2469
2470 double m_b= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
2471 double g_2=src.get_val(ParameterType::SM, "GAUGE", 2);
2472 double tbeta = src.get_val(ParameterType::BSM, "HMIX", 2);
2473 double m_u[4],m_u_pow_2[4];
2474
2475 for (int i = 0; i<3; ++i) {
2476 for (int j = 0; j<3; j++) {
2477 V_CKM[i][j] = src.get_val(ParameterType::SM, "VCKM", LhaID(i, j));
2478 }
2479 }
2480 m_u[1]= src.get_val(ParameterType::SM, "MASS", 2);
2481 m_u[2]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 4);
2482 m_u[3]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 6);
2483
2484
2485 for(int i =0;i<3;++i) {
2486 m_u_pow_2[i]=pow(m_u[i],2.);
2487 }
2488
2489 scalar_t C5_chargedhiggs=0.;
2490
2491
2492
2493 double D0h,D0h_c,D2h,D2h_c;
2494 scalar_t CKM_product;
2495
2496
2497 for(int i = 0; i<3; i++) for(int j=1; j<3; j++) {
2498 D0h = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
2499 D0h_c = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
2500 D2h = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
2501 D2h_c = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
2502
2503 CKM_product = V_CKM[i][3]*V_CKM[j][3]*conj(V_CKM[i][0])*conj(V_CKM[j][0]); /* NM: added 0eration dependence, V_CKM[ie][2] -> V_CKM[ie][0] */
2504
2505 C5_chargedhiggs += pow(g_2,4.)*m_b*m_q*CKM_product*pow(m_u[i],2.)*(D2h_c-2.*D2h)/(32.*pow(PI,2.)*pow(M_W,4.));
2506
2507 }
2508
2509 //gluino ->
2510
2511
2512 double M_D[6],M_D_pow_2[6],dm[6];
2513 scalar_t Z_D[6][6];
2514 double Mg=src.get_val(ParameterType::BSM, "MASS", 1000021);
2515 double Mg_pow_2 = pow(Mg,2);
2516 // double g_3=sqrt(4.*PI*alphas_running(mu_t,param->mass_top_pole,param->mass_b,param)); /* NM: compute from alphas instead of using g3 from SLHA file */
2517 double g_3= sqrt(4.*PI*QCDHelper::alpha_s(mu_W)); //TODO : check pole or running
2518 M_D[0]=src.get_val(ParameterType::BSM, "MASS", 1000001);
2519 M_D[1]=src.get_val(ParameterType::BSM, "MASS", 1000003);
2520 M_D[2]=src.get_val(ParameterType::BSM, "MASS", 1000005);
2521 M_D[3]=src.get_val(ParameterType::BSM, "MASS", 2000001);
2522 M_D[4]=src.get_val(ParameterType::BSM, "MASS", 2000003);
2523 M_D[5]=src.get_val(ParameterType::BSM, "MASS", 2000005);
2524
2525 for(int i = 0; i<6; ++i) {
2526 for(int j = 0; j<6; ++j) {
2527 Z_D[i][j]= src.get_val(ParameterType::BSM, "DSQMIX", LhaID(j+1, i+1)); //TODO: deal with this group
2528 }
2529 } // inverse matrix, because in SLHA2 the second index denotes quark flavour (dl,sl,bl,dr,sr,br)
2530 for(int i = 0; i<6; ++i) {
2531 M_D_pow_2[i]=pow(M_D[i],2);
2532 }
2533
2534 scalar_t C5_gluino=0.;
2535
2536 double D2g,D0g;
2537
2538 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie] and Z_D[5][ie] -> Z_D[0+3][ie] */
2539
2540 for(int i =0; i<6; ++i) {
2541 for(int j = 0; j<6; ++j) {
2542 D2g = D2p(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
2543 D0g = D0(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
2544
2545 C5_gluino += -D0g*pow(Mg, 2)*Z_D[2][i]*Z_D[5][j]*pow(g_3,4.)*conj(Z_D[0][i])*conj(Z_D[0+3][j])/(144.*pow(PI, 2)) + 5.*D2g*pow(g_3,4.)*(-2.*Z_D[2][i]*Z_D[5][j]*conj(Z_D[0][i])*conj(Z_D[0+3][j]) + 3.*Z_D[2][i]*Z_D[5][j]*conj(Z_D[0][j])*conj(Z_D[0+3][i]))/(72.*pow(PI, 2));
2546
2547 }
2548 }
2549
2550
2551 //chargino ->
2552
2553
2554 double M_ch[2],M_ch_pow_2[2],M_U[6],M_U_pow_2[6];
2555 scalar_t Z_p[2][2],Z_m[2][2],Z_U[6][6];
2556 scalar_t Yd[3],Yu[3];
2557 double sw=sin(atan(src.get_val(ParameterType::SM, "GAUGE", 2)/src.get_val(ParameterType::SM, "GAUGE", 2)));
2558 double Q_e = (src.get_val(ParameterType::SM, "GAUGE", 2))*sw;
2559 double swi=1./sw;
2560
2561 M_ch[0]=src.get_val(ParameterType::BSM, "MASS", 1000024);
2562 M_ch[1]=src.get_val(ParameterType::BSM, "MASS", 1000037);
2563
2564 M_U[0]=src.get_val(ParameterType::BSM, "MASS", 1000002);
2565 M_U[1]=src.get_val(ParameterType::BSM, "MASS", 1000004);
2566 M_U[2]=src.get_val(ParameterType::BSM, "MASS", 1000006);
2567 M_U[3]=src.get_val(ParameterType::BSM, "MASS", 2000002);
2568 M_U[4]=src.get_val(ParameterType::BSM, "MASS", 2000004);
2569 M_U[5]=src.get_val(ParameterType::BSM, "MASS", 2000006);
2570
2571 for(int i=0; i<2; ++i){
2572 M_ch_pow_2[i]=pow(M_ch[i],2);
2573 }
2574 for(int i=0; i<6; ++i){
2575 M_U_pow_2[i]=pow(M_U[i],2);
2576 }
2577 for(int i=0; i <2; ++i) {
2578 for(int j=0; j<2; ++j) {
2579 Z_p[i][j]=conj(src.get_val(ParameterType::BSM, "VMIX", LhaID(j+1, i+1)));
2580 }
2581 } /* NM: conversion from SLHA2 convention */
2582 for(int i=2; i<2; ++i) {
2583 for(int j=0; j<2; ++j) {
2584 Z_m[i][j]=conj(src.get_val(ParameterType::BSM, "UMIX", LhaID(j+1, i+1)));
2585 }
2586 } /* NM: conversion from SLHA2 convention */
2587 for(int i=0; i<6; ++i) {
2588 for(int j=0; j<6; ++j) {
2589 Z_U[i][j]=conj(src.get_val(ParameterType::BSM, "USQMIX", LhaID(j+1, i+1))); //TODO: deal with this group
2590 }
2591 } /* NM: conversion from SLHA2 convention */
2592
2593 double v1,v2,beta;
2594 beta = atan(src.get_val(ParameterType::BSM, "EXTPAR", 25));
2595 v1 = 2.*(src.get_val(ParameterType::SM, "MASS", 24))*cos(beta)/src.get_val(ParameterType::SM, "GAUGE", 2);
2596 v2 = v1*tan(beta);
2597
2598 double mc = src.get_val(ParameterType::SM, "MASS", 4);
2599
2600 double m_b=QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR); /* NM: running mass */
2601 double m_t=QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR); /* NM: running mass */
2602
2603 double common = sqrt(2.)/v2;
2604 Yu[0] = common*src.get_val(ParameterType::SM, "MASS", 2);
2605 Yu[1] = common*QCDHelper::msbar_mass(4, mu_W, MassType::POLE); //TODO : check this to be sure
2606
2607 Yu[2] = common*m_t; /* NM: running mass */
2608 double otherc = sqrt(2.)/v1;
2609 Yd[0] = otherc*src.get_val(ParameterType::SM, "MASS", 1);
2610 Yd[1] = otherc*src.get_val(ParameterType::SM, "MASS", 3);
2611 Yd[2] = otherc*m_b; /* NM: running mass */
2612
2613
2614
2615 scalar_t C5_chargino=0.;
2616
2617
2618 double D0ch,D2ch;
2619
2620 /* NM: added 0eration dependence, Yd[2] -> Yd[0] and V_CKM[Ke][2] -> V_CKM[Ke][0] */
2621
2622 for(int i = 0; i<6; ++i) {
2623 for(int j=0; j<6; ++j) {
2624 for(int a =0; a<2; ++a) {
2625 for (int b=0; b<2; ++b) {
2626 D0ch = D0(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
2627 D2ch = D2p(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
2628 for(int k=0; k<3; ++k) {
2629
2630 C5_chargino += -D0ch*M_ch[a]*M_ch[b]*pow(V_CKM[k][2], 2)*Yd[2]*Z_m[1][b]*Z_U[k][i]*(-Q_e*Z_p[0][b]*conj(Z_U[k][j])*swi + Yu[k]*Z_p[1][b]*conj(Z_U[k+3][j]))*(-Q_e*Z_U[k][j]*conj(Z_p[0][a])*swi + Z_U[k+3][j]*conj(Yu[k])*conj(Z_p[1][a]))*pow(conj(V_CKM[k][0]), 2)*conj(Yd[0])*conj(Z_m[1][a])*conj(Z_U[k][i])/(16.0*pow(PI, 2));
2631
2632 }
2633 }
2634 }
2635 }
2636 }
2637
2638
2639
2640 //neutralino ->
2641
2642
2643 double M_ch0[4],M_ch0_pow_2[4],M_D[6],M_D_pow_2[6];
2644 scalar_t Z_N[4][4];
2645
2646 double cw=cos(atan(src.get_val(ParameterType::SM, "GAUGE", 1)/src.get_val(ParameterType::SM, "GAUGE", 2)));
2647
2648 double otherc = sqrt(2.)/v1;
2649
2650 std::array<double,4> temp_ch0 = {src.get_val(ParameterType::BSM, "MASS", 1000022),
2651 src.get_val(ParameterType::BSM, "MASS", 1000023),
2652 src.get_val(ParameterType::BSM, "MASS", 1000025),
2653 src.get_val(ParameterType::BSM, "MASS", 1000035)};
2654
2655 M_ch0[0]=fabs(temp_ch0[0]);
2656 M_ch0[1]=fabs(temp_ch0[1]);
2657 M_ch0[2]=fabs(temp_ch0[2]);
2658 M_ch0[3]=fabs(temp_ch0[3]);
2659
2660 for(int i=0; i<4; ++i){
2661 M_ch0_pow_2[i]=pow(M_ch0[i],2);
2662 }
2663
2664
2665 for(int i=0; i<6; ++i) {
2666 M_D_pow_2[i]=pow(M_D[i],2);
2667 }
2668
2669
2670
2671 for(int i=0; i<4; ++i) {
2672 for(int j=0; j<4; ++j) {
2673 Z_N[i][j] = conj(src.get_val(ParameterType::BSM, "NMIX", LhaID(i+1, j+1))); //TODO : i,j or j,i like the others ?
2674 }
2675 }
2676
2677
2678 for(int i=0; i<4; ++i){
2679 if(temp_ch0[i]<0.) {
2680 for(int j=0; j<4; ++j) {
2681 Z_N[i][j]*=I;
2682 }
2683 }
2684 } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
2685
2686 scalar_t C5_neutralino=0.;
2687
2688 double D0ne,D2ne;
2689
2690 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie], Z_D[5][ie] -> Z_D[0+3][ie] and Yd[2] -> Yd[0] */
2691
2692 for(int i=0; i<6; ++i) {
2693 for(int j=0; j<6; ++j) {
2694 for(int a=0; a<4; ++a) {
2695 for (int b=0; b<4; ++b) {
2696 D0ne = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
2697 D2ne = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
2698
2699 C5_neutralino += -D0ne*M_ch0[a]*M_ch0[b]*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[0+3][i])/(3.0*cw) +
2700 Z_N[2][b]*conj(Yd[0])*conj(Z_D[0][i]))*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][b]*sw/3.0 - Z_N[1][b]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][j]*Z_N[2][b])*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
2701 conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a]))/(16.0*pow(PI, 2)) - D2ne*(-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][a])/(3.0*cw) +
2702 Yd[2]*Z_D[2][j]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[0+3][j])/(3.0*cw) + Z_N[2][b]*conj(Yd[0])*conj(Z_D[0][j]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0- Z_N[1][a]*cw)/(2.0*cw*sw) +
2703 Yd[2]*Z_D[5][i]*Z_N[2][a])*(-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 - conj(Z_N[1][b])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][b]))/(8.0*pow(PI, 2));
2704
2705 }
2706 }
2707 }
2708 }
2709
2710
2711
2712 //mixed ->
2713
2714
2715 scalar_t C5_mixed=0.;
2716
2717
2718
2719 double M_g=src.get_val(ParameterType::BSM, "MASS", 1000021);
2720 double M_g_pow_2 = pow(M_g,2.);
2721
2722 // } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
2723
2724 double D0mix,D2mix;
2725
2726 /* NM: added 0eration dependence, Z_D[2][ie] -> Z_D[0][ie], Z_D[5][ie] -> Z_D[0+3][ie] and Yd[2] -> Yd[0] */
2727
2728 for(int i=0; i<6; ++i) {
2729 for(int j=0; j<6; ++j) {
2730 for(int a=0; a<4; ++a) {
2731 D0mix = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
2732 D2mix = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
2733
2734 C5_mixed += -D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(Z_D[2][j]*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
2735 conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a]))*conj(Z_D[0+3][i]) + Z_D[5][j]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][j])/(3.0*cw) +
2736 Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][j]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*conj(Z_D[0][i]))/(48.0*pow(PI, 2)) +
2737 D2mix*pow(g_3, 2)*(-Z_D[2][j]*Z_D[5][i]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][i])/(3.0*cw) + Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][i]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
2738 conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a])) - (-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[5][i])/(3*cw) +
2739 Z_N[2][a]*conj(Yd[2])*conj(Z_D[2][i]))*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][j]*Z_N[2][a])*conj(Z_D[0][j])*conj(Z_D[0+3][i]))/(24.0*pow(PI, 2)) +
2740 D2mix*pow(g_3, 2)*(-Z_D[2][j]*Z_D[5][i]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][j])/(3.0*cw) + Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][j]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
2741 conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a])) - (-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][a])/(3.0*cw) +
2742 Yd[2]*Z_D[2][j]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*conj(Z_D[0][j])*conj(Z_D[0+3][i]))/(8.0*pow(PI, 2)) +
2743 D2mix*pow(g_3, 2)*(Z_D[2][j]*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[0+3][j])/(3.0*cw) +
2744 Z_N[2][a]*conj(Yd[0])*conj(Z_D[0][j]))*conj(Z_D[0][i]) + Z_D[5][j]*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
2745 conj(Z_N[1][a])*cw)*conj(Z_D[0][i])/(2.0*cw*sw) + conj(Yd[0])*conj(Z_D[0+3][i])*conj(Z_N[2][a]))*conj(Z_D[0+3][i]))/(8.0*pow(PI, 2));
2746
2747 }
2748 }
2749 }
2750
2751 //higgs PInguin ->
2752
2753}
2754
2755//BS
2756
2757
2760 {
2761 {ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, //mass_c_muW_mcrun
2762 {ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, //mass_b_muW_mbrun
2763 {ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, //mass_t_muW_mbrun
2764 {ParameterType::SM, "MASS", 24},
2765 {ParameterType::BSM, "MASS", 37}, // M_H
2766 {ParameterType::SM, "MASS", 3}, //m_s
2767 {ParameterType::SM, "MASS", 2}, //m_u
2768 {ParameterType::BSM, "MASS", 1000001},
2769 {ParameterType::BSM, "MASS", 1000002},
2770 {ParameterType::BSM, "MASS", 1000003},
2771 {ParameterType::BSM, "MASS", 1000004},
2772 {ParameterType::BSM, "MASS", 1000005},
2773 {ParameterType::BSM, "MASS", 1000006},
2774 {ParameterType::BSM, "MASS", 2000001},
2775 {ParameterType::BSM, "MASS", 2000002},
2776 {ParameterType::BSM, "MASS", 2000003},
2777 {ParameterType::BSM, "MASS", 2000004},
2778 {ParameterType::BSM, "MASS", 2000005},
2779 {ParameterType::BSM, "MASS", 2000006},
2780 {ParameterType::BSM, "MASS", 1000024},
2781 {ParameterType::BSM, "MASS", 1000037},
2782 {ParameterType::BSM, "MASS", 1000022},
2783 {ParameterType::BSM, "MASS", 1000023},
2784 {ParameterType::BSM, "MASS", 1000025},
2785 {ParameterType::BSM, "MASS", 1000035},
2786 {ParameterType::BSM, "MASS", 36},
2787 {ParameterType::BSM, "MSOFT", 2},
2788 {ParameterType::BSM, "HMIX", 1},
2789 {ParameterType::BSM, "AU", LhaID(3,3)},
2790 {ParameterType::SM, "GAUGE", 1}, //gp
2791 {ParameterType::SM, "GAUGE", 2}, //g_2
2792 {ParameterType::SM, "VCKM", LhaID(0, 0)}, // V_ud
2793 {ParameterType::SM, "VCKM", LhaID(0, 1)}, // V_us
2794 {ParameterType::SM, "VCKM", LhaID(0, 2)}, // V_ub
2795 {ParameterType::SM, "VCKM", LhaID(1, 0)}, // V_cd
2796 {ParameterType::SM, "VCKM", LhaID(1, 1)}, // V_cs
2797 {ParameterType::SM, "VCKM", LhaID(1, 2)}, // V_cb
2798 {ParameterType::SM, "VCKM", LhaID(2, 0)}, // V_td
2799 {ParameterType::SM, "VCKM", LhaID(2, 1)}, // V_ts
2800 {ParameterType::SM, "VCKM", LhaID(2, 2)}, // V_tb
2801 {ParameterType::SM, "EW_SCALE", 1}
2802 },
2803 compute_LO,
2805 };
2806}
2807
2809
2810 double mu_W = src.get_val(ParameterType::WILSON, "EW_SCALE", 1);
2811 double M_H=src.get_val(ParameterType::BSM, "MASS", 37);
2812 double M_W=src.get_val(ParameterType::SM, "MASS", 24);
2813 double M_H_pow_2 = pow(M_H,2.);
2814 double M_W_pow_2 = pow(M_W,2.);
2815 std::array<std::array<scalar_t, 3>, 3> V_CKM {};
2816 double m_q = src.get_val(ParameterType::SM, "MASS", 3);
2817
2818 double m_b= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
2819 double g_2=src.get_val(ParameterType::SM, "GAUGE", 2);
2820 double tbeta = src.get_val(ParameterType::BSM, "HMIX", 2);
2821 double m_u[4],m_u_pow_2[4];
2822
2823 for (int i = 0; i<3; ++i) {
2824 for (int j = 0; j<3; j++) {
2825 V_CKM[i][j] = src.get_val(ParameterType::SM, "VCKM", LhaID(i, j));
2826 }
2827 }
2828 m_u[1]= src.get_val(ParameterType::SM, "MASS", 2);
2829 m_u[2]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 4);
2830 m_u[3]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 6);
2831
2832
2833 for(int i =0;i<3;++i) {
2834 m_u_pow_2[i]=pow(m_u[i],2.);
2835 }
2836
2837 scalar_t C1_chargedhiggs=0.;
2838
2839 double D0h,D0h_c,D2h,D2h_c;
2840 scalar_t CKM_product;
2841
2842
2843 for(int i = 0; i<3; i++) for(int j=1; j<3; j++) {
2844 D0h = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
2845 D0h_c = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
2846 D2h = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
2847 D2h_c = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
2848
2849 CKM_product = V_CKM[i][3]*V_CKM[j][3]*conj(V_CKM[i][1])*conj(V_CKM[j][1]); /* NM: added 1eration dependence, V_CKM[ie][2] -> V_CKM[ie][1] */
2850
2851 C1_chargedhiggs += pow(g_2,4.)*CKM_product*m_u_pow_2[i]*m_u_pow_2[j]*(2.*pow(M_W,2.)*D0h*pow(tbeta,-2.) - D2h_c*pow(tbeta,-4.) - 2*D2h*pow(tbeta,-2.))/(128.*pow(PI,2.)*pow(M_W,4.));
2852 }
2853
2854 //gluino ->
2855
2856
2857 double M_D[6],M_D_pow_2[6],dm[6];
2858 scalar_t Z_D[6][6];
2859 double Mg=src.get_val(ParameterType::BSM, "MASS", 1000021);
2860 double Mg_pow_2 = pow(Mg,2);
2861 // double g_3=sqrt(4.*PI*alphas_running(mu_t,param->mass_top_pole,param->mass_b,param)); /* NM: compute from alphas instead of using g3 from SLHA file */
2862 double g_3= sqrt(4.*PI*QCDHelper::alpha_s(mu_W)); //TODO : check pole or running
2863 M_D[0]=src.get_val(ParameterType::BSM, "MASS", 1000001);
2864 M_D[1]=src.get_val(ParameterType::BSM, "MASS", 1000003);
2865 M_D[2]=src.get_val(ParameterType::BSM, "MASS", 1000005);
2866 M_D[3]=src.get_val(ParameterType::BSM, "MASS", 2000001);
2867 M_D[4]=src.get_val(ParameterType::BSM, "MASS", 2000003);
2868 M_D[5]=src.get_val(ParameterType::BSM, "MASS", 2000005);
2869
2870 for(int i = 0; i<6; ++i) {
2871 for(int j = 0; j<6; ++j) {
2872 Z_D[i][j]= src.get_val(ParameterType::BSM, "DSQMIX", LhaID(j+1, i+1)); //TODO: deal with this group
2873 }
2874 } // inverse matrix, because in SLHA2 the second index denotes quark flavour (dl,sl,bl,dr,sr,br)
2875 for(int i = 0; i<6; ++i) {
2876 M_D_pow_2[i]=pow(M_D[i],2);
2877 }
2878
2879 scalar_t C1_gluino=0.;
2880
2881 double D2g,D0g;
2882
2883 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie] and Z_D[5][ie] -> Z_D[1+3][ie] */
2884
2885 for(int i =0; i<6; ++i) {
2886 for(int j = 0; j<6; ++j) {
2887 D2g = D2p(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
2888 D0g = D0(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
2889 C1_gluino += -Z_D[2][i]*Z_D[2][j]*pow(g_3,4.)*(D0g*pow(Mg, 2) + 11.*D2g)*conj(Z_D[1][i])*conj(Z_D[1][j])/(144.*pow(PI, 2));
2890
2891 }
2892 }
2893
2894
2895 //chargino ->
2896
2897
2898 double M_ch[2],M_ch_pow_2[2],M_U[6],M_U_pow_2[6];
2899 scalar_t Z_p[2][2],Z_m[2][2],Z_U[6][6];
2900 scalar_t Yd[3],Yu[3];
2901 double sw=sin(atan(src.get_val(ParameterType::SM, "GAUGE", 2)/src.get_val(ParameterType::SM, "GAUGE", 2)));
2902 double Q_e = (src.get_val(ParameterType::SM, "GAUGE", 2))*sw;
2903 double swi=1./sw;
2904
2905 M_ch[0]=src.get_val(ParameterType::BSM, "MASS", 1000024);
2906 M_ch[1]=src.get_val(ParameterType::BSM, "MASS", 1000037);
2907
2908 M_U[0]=src.get_val(ParameterType::BSM, "MASS", 1000002);
2909 M_U[1]=src.get_val(ParameterType::BSM, "MASS", 1000004);
2910 M_U[2]=src.get_val(ParameterType::BSM, "MASS", 1000006);
2911 M_U[3]=src.get_val(ParameterType::BSM, "MASS", 2000002);
2912 M_U[4]=src.get_val(ParameterType::BSM, "MASS", 2000004);
2913 M_U[5]=src.get_val(ParameterType::BSM, "MASS", 2000006);
2914
2915 for(int i=0; i<2; ++i){
2916 M_ch_pow_2[i]=pow(M_ch[i],2);
2917 }
2918 for(int i=0; i<6; ++i){
2919 M_U_pow_2[i]=pow(M_U[i],2);
2920 }
2921 for(int i=0; i <2; ++i) {
2922 for(int j=0; j<2; ++j) {
2923 Z_p[i][j]=conj(src.get_val(ParameterType::BSM, "VMIX", LhaID(j+1, i+1)));
2924 }
2925 } /* NM: conversion from SLHA2 convention */
2926 for(int i=2; i<2; ++i) {
2927 for(int j=0; j<2; ++j) {
2928 Z_m[i][j]=conj(src.get_val(ParameterType::BSM, "UMIX", LhaID(j+1, i+1)));
2929 }
2930 } /* NM: conversion from SLHA2 convention */
2931 for(int i=0; i<6; ++i) {
2932 for(int j=0; j<6; ++j) {
2933 Z_U[i][j]=conj(src.get_val(ParameterType::BSM, "USQMIX", LhaID(j+1, i+1))); //TODO: deal with this group
2934 }
2935 } /* NM: conversion from SLHA2 convention */
2936
2937 double v1,v2,beta;
2938 beta = atan(src.get_val(ParameterType::BSM, "EXTPAR", 25));
2939 v1 = 2.*(src.get_val(ParameterType::SM, "MASS", 24))*cos(beta)/src.get_val(ParameterType::SM, "GAUGE", 2);
2940 v2 = v1*tan(beta);
2941
2942 double mc = src.get_val(ParameterType::SM, "MASS", 4);
2943
2944 double m_b=QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR); /* NM: running mass */
2945 double m_t=QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR); /* NM: running mass */
2946
2947 double common = sqrt(2.)/v2;
2948 Yu[0] = common*src.get_val(ParameterType::SM, "MASS", 2);
2949 Yu[1] = common*QCDHelper::msbar_mass(4, mu_W, MassType::POLE); //TODO : check this to be sure
2950
2951 Yu[2] = common*m_t; /* NM: running mass */
2952 double otherc = sqrt(2.)/v1;
2953 Yd[0] = otherc*src.get_val(ParameterType::SM, "MASS", 1);
2954 Yd[1] = otherc*src.get_val(ParameterType::SM, "MASS", 3);
2955 Yd[2] = otherc*m_b; /* NM: running mass */
2956
2957
2958
2959 scalar_t C1_chargino=0.;
2960
2961
2962 double D0ch,D2ch;
2963
2964 /* NM: added 1eration dependence, Yd[2] -> Yd[1] and V_CKM[Ke][2] -> V_CKM[Ke][1] */
2965
2966 for(int i = 0; i<6; ++i) {
2967 for(int j=0; j<6; ++j) {
2968 for(int a =0; a<2; ++a) {
2969 for (int b=0; b<2; ++b) {
2970 D0ch = D0(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
2971 D2ch = D2p(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
2972 for(int k=0; k<3; ++k) {
2973
2974
2975 C1_chargino += -D2ch*pow(V_CKM[k][2], 2)*(-Q_e*Z_p[0][a]*conj(Z_U[k][i])*swi + Yu[k]*Z_p[1][a]*conj(Z_U[k+3][i]))*(-Q_e*Z_p[0][b]*conj(Z_U[k][j])*swi + Yu[k]*Z_p[1][b]*conj(Z_U[k+3][j]))*(-Q_e*Z_U[k][i]*conj(Z_p[0][b])*swi + Z_U[k+3][i]*conj(Yu[k])*conj(Z_p[1][b]))*(-Q_e*Z_U[k][j]*conj(Z_p[0][a])*swi + Z_U[k+3][j]*conj(Yu[k])*conj(Z_p[1][a]))*pow(conj(V_CKM[k][1]), 2)/(32.0*pow(PI, 2));
2976
2977 }
2978 }
2979 }
2980 }
2981 }
2982
2983
2984
2985 //neutralino ->
2986
2987
2988 double M_ch0[4],M_ch0_pow_2[4],M_D[6],M_D_pow_2[6];
2989 scalar_t Z_N[4][4];
2990
2991 double cw=cos(atan(src.get_val(ParameterType::SM, "GAUGE", 1)/src.get_val(ParameterType::SM, "GAUGE", 2)));
2992
2993 double otherc = sqrt(2.)/v1;
2994
2995 std::array<double,4> temp_ch0 = {src.get_val(ParameterType::BSM, "MASS", 1000022),
2996 src.get_val(ParameterType::BSM, "MASS", 1000023),
2997 src.get_val(ParameterType::BSM, "MASS", 1000025),
2998 src.get_val(ParameterType::BSM, "MASS", 1000035)};
2999
3000 M_ch0[0]=fabs(temp_ch0[0]);
3001 M_ch0[1]=fabs(temp_ch0[1]);
3002 M_ch0[2]=fabs(temp_ch0[2]);
3003 M_ch0[3]=fabs(temp_ch0[3]);
3004
3005 for(int i=0; i<4; ++i){
3006 M_ch0_pow_2[i]=pow(M_ch0[i],2);
3007 }
3008
3009
3010 for(int i=0; i<6; ++i) {
3011 M_D_pow_2[i]=pow(M_D[i],2);
3012 }
3013
3014
3015
3016 for(int i=0; i<4; ++i) {
3017 for(int j=0; j<4; ++j) {
3018 Z_N[i][j] = conj(src.get_val(ParameterType::BSM, "NMIX", LhaID(i+1, j+1))); //TODO : i,j or j,i like the others ?
3019 }
3020 }
3021
3022
3023 for(int i=0; i<4; ++i){
3024 if(temp_ch0[i]<0.) {
3025 for(int j=0; j<4; ++j) {
3026 Z_N[i][j]*=I;
3027 }
3028 }
3029 } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
3030
3031 scalar_t C1_neutralino=0.;
3032
3033 double D0ne,D2ne;
3034
3035 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie], Z_D[5][ie] -> Z_D[1+3][ie] and Yd[2] -> Yd[1] */
3036
3037 for(int i=0; i<6; ++i) {
3038 for(int j=0; j<6; ++j) {
3039 for(int a=0; a<4; ++a) {
3040 for (int b=0; b<4; ++b) {
3041 D0ne = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
3042 D2ne = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
3043 C1_neutralino += -D0ne*M_ch0[a]*M_ch0[b]*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*
3044 (-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][b]*sw/3.0 - Z_N[1][b]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][j]*Z_N[2][b])*
3045 (-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a]))*
3046 (-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 - conj(Z_N[1][b])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][b]))/(64.0*pow(PI, 2)) -
3047 D2ne*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*
3048 (-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][b]*sw/3.0 - Z_N[1][b]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][j]*Z_N[2][b])*
3049 (-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a]))*
3050 (-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 - conj(Z_N[1][b])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][b]))/(32.0*pow(PI, 2));
3051
3052 }
3053 }
3054 }
3055 }
3056
3057
3058
3059 //mixed ->
3060
3061
3062 scalar_t C1_mixed=0.;
3063
3064
3065
3066 double M_g=src.get_val(ParameterType::BSM, "MASS", 1000021);
3067 double M_g_pow_2 = pow(M_g,2.);
3068
3069 // } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
3070
3071 double D0mix,D2mix;
3072
3073 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie], Z_D[5][ie] -> Z_D[1+3][ie] and Yd[2] -> Yd[1] */
3074
3075 for(int i=0; i<6; ++i) {
3076 for(int j=0; j<6; ++j) {
3077 for(int a=0; a<4; ++a) {
3078 D0mix = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
3079 D2mix = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
3080
3081 C1_mixed += -D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(Z_D[1][i]*Z_D[1][j]*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[2][i])/(2.0*cw*sw) +
3082 conj(Yd[2])*conj(Z_D[5][i])*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[2][j])/(2.0*cw*sw) + conj(Yd[2])*conj(Z_D[5][j])*conj(Z_N[2][a])) +
3083 Z_D[2][i]*Z_D[2][j]*pow(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a]), 2))/(96.0*pow(PI, 2)) -
3084 D2mix*Z_D[2][j]*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) +
3085 conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a]))*conj(Z_D[1][i])/(8.0*pow(PI, 2));
3086
3087 }
3088 }
3089 }
3090
3091 //higgs PInguin ->
3092
3093}
3094
3095//BS_1_tilde
3096
3099 {
3100 {ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, //mass_c_muW_mcrun
3101 {ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, //mass_b_muW_mbrun
3102 {ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, //mass_t_muW_mbrun
3103 {ParameterType::SM, "MASS", 24},
3104 {ParameterType::BSM, "MASS", 37}, // M_H
3105 {ParameterType::SM, "MASS", 3}, //m_s
3106 {ParameterType::SM, "MASS", 2}, //m_u
3107 {ParameterType::BSM, "MASS", 1000001},
3108 {ParameterType::BSM, "MASS", 1000002},
3109 {ParameterType::BSM, "MASS", 1000003},
3110 {ParameterType::BSM, "MASS", 1000004},
3111 {ParameterType::BSM, "MASS", 1000005},
3112 {ParameterType::BSM, "MASS", 1000006},
3113 {ParameterType::BSM, "MASS", 2000001},
3114 {ParameterType::BSM, "MASS", 2000002},
3115 {ParameterType::BSM, "MASS", 2000003},
3116 {ParameterType::BSM, "MASS", 2000004},
3117 {ParameterType::BSM, "MASS", 2000005},
3118 {ParameterType::BSM, "MASS", 2000006},
3119 {ParameterType::BSM, "MASS", 1000024},
3120 {ParameterType::BSM, "MASS", 1000037},
3121 {ParameterType::BSM, "MASS", 1000022},
3122 {ParameterType::BSM, "MASS", 1000023},
3123 {ParameterType::BSM, "MASS", 1000025},
3124 {ParameterType::BSM, "MASS", 1000035},
3125 {ParameterType::BSM, "MASS", 36},
3126 {ParameterType::BSM, "MSOFT", 2},
3127 {ParameterType::BSM, "HMIX", 1},
3128 {ParameterType::BSM, "AU", LhaID(3,3)},
3129 {ParameterType::SM, "GAUGE", 1}, //gp
3130 {ParameterType::SM, "GAUGE", 2}, //g_2
3131 {ParameterType::SM, "VCKM", LhaID(0, 0)}, // V_ud
3132 {ParameterType::SM, "VCKM", LhaID(0, 1)}, // V_us
3133 {ParameterType::SM, "VCKM", LhaID(0, 2)}, // V_ub
3134 {ParameterType::SM, "VCKM", LhaID(1, 0)}, // V_cd
3135 {ParameterType::SM, "VCKM", LhaID(1, 1)}, // V_cs
3136 {ParameterType::SM, "VCKM", LhaID(1, 2)}, // V_cb
3137 {ParameterType::SM, "VCKM", LhaID(2, 0)}, // V_td
3138 {ParameterType::SM, "VCKM", LhaID(2, 1)}, // V_ts
3139 {ParameterType::SM, "VCKM", LhaID(2, 2)}, // V_tb
3140 {ParameterType::SM, "EW_SCALE", 1}
3141 },
3142 compute_LO,
3144 };
3145}
3146
3148
3149 double mu_W = src.get_val(ParameterType::WILSON, "EW_SCALE", 1);
3150 double M_H=src.get_val(ParameterType::BSM, "MASS", 37);
3151 double M_W=src.get_val(ParameterType::SM, "MASS", 24);
3152 double M_H_pow_2 = pow(M_H,2.);
3153 double M_W_pow_2 = pow(M_W,2.);
3154 std::array<std::array<scalar_t, 3>, 3> V_CKM {};
3155 double m_q = src.get_val(ParameterType::SM, "MASS", 3);
3156
3157 double m_b= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
3158 double g_2=src.get_val(ParameterType::SM, "GAUGE", 2);
3159 double tbeta = src.get_val(ParameterType::BSM, "HMIX", 2);
3160 double m_u[4],m_u_pow_2[4];
3161
3162 for (int i = 0; i<3; ++i) {
3163 for (int j = 0; j<3; j++) {
3164 V_CKM[i][j] = src.get_val(ParameterType::SM, "VCKM", LhaID(i, j));
3165 }
3166 }
3167 m_u[1]= src.get_val(ParameterType::SM, "MASS", 2);
3168 m_u[2]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 4);
3169 m_u[3]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 6);
3170
3171
3172 for(int i =0;i<3;++i) {
3173 m_u_pow_2[i]=pow(m_u[i],2.);
3174 }
3175
3176
3177 scalar_t Cp1_chargedhiggs=0.;
3178
3179
3180 double D0h,D0h_c,D2h,D2h_c;
3181 scalar_t CKM_product;
3182
3183
3184 for(int i = 0; i<3; i++) for(int j=1; j<3; j++) {
3185 D0h = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
3186 D0h_c = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
3187 D2h = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
3188 D2h_c = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
3189
3190 CKM_product = V_CKM[i][3]*V_CKM[j][3]*conj(V_CKM[i][1])*conj(V_CKM[j][1]); /* NM: added 1eration dependence, V_CKM[ie][2] -> V_CKM[ie][1] */
3191
3192 Cp1_chargedhiggs += -pow(g_2,4.)*pow(m_b,2.)*pow(m_q,2.)*CKM_product*(D2h_c*pow(tbeta,4.)+2.*D2h*pow(tbeta,2.))/(128.*pow(PI,2.)*pow(M_W,4.));
3193
3194 }
3195
3196 //gluino ->
3197
3198
3199 double M_D[6],M_D_pow_2[6],dm[6];
3200 scalar_t Z_D[6][6];
3201 double Mg=src.get_val(ParameterType::BSM, "MASS", 1000021);
3202 double Mg_pow_2 = pow(Mg,2);
3203 // double g_3=sqrt(4.*PI*alphas_running(mu_t,param->mass_top_pole,param->mass_b,param)); /* NM: compute from alphas instead of using g3 from SLHA file */
3204 double g_3= sqrt(4.*PI*QCDHelper::alpha_s(mu_W)); //TODO : check pole or running
3205 M_D[0]=src.get_val(ParameterType::BSM, "MASS", 1000001);
3206 M_D[1]=src.get_val(ParameterType::BSM, "MASS", 1000003);
3207 M_D[2]=src.get_val(ParameterType::BSM, "MASS", 1000005);
3208 M_D[3]=src.get_val(ParameterType::BSM, "MASS", 2000001);
3209 M_D[4]=src.get_val(ParameterType::BSM, "MASS", 2000003);
3210 M_D[5]=src.get_val(ParameterType::BSM, "MASS", 2000005);
3211
3212 for(int i = 0; i<6; ++i) {
3213 for(int j = 0; j<6; ++j) {
3214 Z_D[i][j]= src.get_val(ParameterType::BSM, "DSQMIX", LhaID(j+1, i+1)); //TODO: deal with this group
3215 }
3216 } // inverse matrix, because in SLHA2 the second index denotes quark flavour (dl,sl,bl,dr,sr,br)
3217 for(int i = 0; i<6; ++i) {
3218 M_D_pow_2[i]=pow(M_D[i],2);
3219 }
3220
3221 scalar_t Cp1_gluino=0.;
3222
3223 double D2g,D0g;
3224
3225 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie] and Z_D[5][ie] -> Z_D[1+3][ie] */
3226
3227 for(int i =0; i<6; ++i) {
3228 for(int j = 0; j<6; ++j) {
3229 D2g = D2p(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
3230 D0g = D0(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
3231 Cp1_gluino += -Z_D[5][i]*Z_D[5][j]*pow(g_3,4.)*(D0g*pow(Mg, 2.) + 11.*D2g)*conj(Z_D[1+3][i])*conj(Z_D[1+3][j])/(144.*pow(PI, 2.));
3232 }
3233 }
3234
3235
3236 //chargino ->
3237
3238
3239 double M_ch[2],M_ch_pow_2[2],M_U[6],M_U_pow_2[6];
3240 scalar_t Z_p[2][2],Z_m[2][2],Z_U[6][6];
3241 scalar_t Yd[3],Yu[3];
3242 double sw=sin(atan(src.get_val(ParameterType::SM, "GAUGE", 2)/src.get_val(ParameterType::SM, "GAUGE", 2)));
3243 double Q_e = (src.get_val(ParameterType::SM, "GAUGE", 2))*sw;
3244 double swi=1./sw;
3245
3246 M_ch[0]=src.get_val(ParameterType::BSM, "MASS", 1000024);
3247 M_ch[1]=src.get_val(ParameterType::BSM, "MASS", 1000037);
3248
3249 M_U[0]=src.get_val(ParameterType::BSM, "MASS", 1000002);
3250 M_U[1]=src.get_val(ParameterType::BSM, "MASS", 1000004);
3251 M_U[2]=src.get_val(ParameterType::BSM, "MASS", 1000006);
3252 M_U[3]=src.get_val(ParameterType::BSM, "MASS", 2000002);
3253 M_U[4]=src.get_val(ParameterType::BSM, "MASS", 2000004);
3254 M_U[5]=src.get_val(ParameterType::BSM, "MASS", 2000006);
3255
3256 for(int i=0; i<2; ++i){
3257 M_ch_pow_2[i]=pow(M_ch[i],2);
3258 }
3259 for(int i=0; i<6; ++i){
3260 M_U_pow_2[i]=pow(M_U[i],2);
3261 }
3262 for(int i=0; i <2; ++i) {
3263 for(int j=0; j<2; ++j) {
3264 Z_p[i][j]=conj(src.get_val(ParameterType::BSM, "VMIX", LhaID(j+1, i+1)));
3265 }
3266 } /* NM: conversion from SLHA2 convention */
3267 for(int i=2; i<2; ++i) {
3268 for(int j=0; j<2; ++j) {
3269 Z_m[i][j]=conj(src.get_val(ParameterType::BSM, "UMIX", LhaID(j+1, i+1)));
3270 }
3271 } /* NM: conversion from SLHA2 convention */
3272 for(int i=0; i<6; ++i) {
3273 for(int j=0; j<6; ++j) {
3274 Z_U[i][j]=conj(src.get_val(ParameterType::BSM, "USQMIX", LhaID(j+1, i+1))); //TODO: deal with this group
3275 }
3276 } /* NM: conversion from SLHA2 convention */
3277
3278 double v1,v2,beta;
3279 beta = atan(src.get_val(ParameterType::BSM, "EXTPAR", 25));
3280 v1 = 2.*(src.get_val(ParameterType::SM, "MASS", 24))*cos(beta)/src.get_val(ParameterType::SM, "GAUGE", 2);
3281 v2 = v1*tan(beta);
3282
3283 double mc = src.get_val(ParameterType::SM, "MASS", 4);
3284
3285 double m_b=QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR); /* NM: running mass */
3286 double m_t=QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR); /* NM: running mass */
3287
3288 double common = sqrt(2.)/v2;
3289 Yu[0] = common*src.get_val(ParameterType::SM, "MASS", 2);
3290 Yu[1] = common*QCDHelper::msbar_mass(4, mu_W, MassType::POLE); //TODO : check this to be sure
3291
3292 Yu[2] = common*m_t; /* NM: running mass */
3293 double otherc = sqrt(2.)/v1;
3294 Yd[0] = otherc*src.get_val(ParameterType::SM, "MASS", 1);
3295 Yd[1] = otherc*src.get_val(ParameterType::SM, "MASS", 3);
3296 Yd[2] = otherc*m_b; /* NM: running mass */
3297
3298
3299
3300 scalar_t Cp1_chargino=0.;
3301
3302
3303 double D0ch,D2ch;
3304
3305 /* NM: added 1eration dependence, Yd[2] -> Yd[1] and V_CKM[Ke][2] -> V_CKM[Ke][1] */
3306
3307 for(int i = 0; i<6; ++i) {
3308 for(int j=0; j<6; ++j) {
3309 for(int a =0; a<2; ++a) {
3310 for (int b=0; b<2; ++b) {
3311 D0ch = D0(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
3312 D2ch = D2p(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
3313 for(int k=0; k<3; ++k) {
3314
3315 Cp1_chargino += -D2ch*pow(V_CKM[k][2], 2)*pow(Yd[2], 2)*Z_m[1][a]*Z_m[1][b]*Z_U[k][i]*Z_U[k][j]*pow(conj(V_CKM[k][1]), 2)*pow(conj(Yd[1]), 2)*conj(Z_m[1][a])*conj(Z_m[1][b])*conj(Z_U[k][i])*conj(Z_U[k][j])/(32.0*pow(PI, 2));
3316
3317
3318
3319 }
3320 }
3321 }
3322 }
3323 }
3324
3325
3326
3327 //neutralino ->
3328
3329
3330 double M_ch0[4],M_ch0_pow_2[4],M_D[6],M_D_pow_2[6];
3331 scalar_t Z_N[4][4];
3332
3333 double cw=cos(atan(src.get_val(ParameterType::SM, "GAUGE", 1)/src.get_val(ParameterType::SM, "GAUGE", 2)));
3334
3335 double otherc = sqrt(2.)/v1;
3336
3337 std::array<double,4> temp_ch0 = {src.get_val(ParameterType::BSM, "MASS", 1000022),
3338 src.get_val(ParameterType::BSM, "MASS", 1000023),
3339 src.get_val(ParameterType::BSM, "MASS", 1000025),
3340 src.get_val(ParameterType::BSM, "MASS", 1000035)};
3341
3342 M_ch0[0]=fabs(temp_ch0[0]);
3343 M_ch0[1]=fabs(temp_ch0[1]);
3344 M_ch0[2]=fabs(temp_ch0[2]);
3345 M_ch0[3]=fabs(temp_ch0[3]);
3346
3347 for(int i=0; i<4; ++i){
3348 M_ch0_pow_2[i]=pow(M_ch0[i],2);
3349 }
3350
3351
3352 for(int i=0; i<6; ++i) {
3353 M_D_pow_2[i]=pow(M_D[i],2);
3354 }
3355
3356
3357
3358 for(int i=0; i<4; ++i) {
3359 for(int j=0; j<4; ++j) {
3360 Z_N[i][j] = conj(src.get_val(ParameterType::BSM, "NMIX", LhaID(i+1, j+1))); //TODO : i,j or j,i like the others ?
3361 }
3362 }
3363
3364
3365 for(int i=0; i<4; ++i){
3366 if(temp_ch0[i]<0.) {
3367 for(int j=0; j<4; ++j) {
3368 Z_N[i][j]*=I;
3369 }
3370 }
3371 } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
3372
3373 scalar_t Cp1_neutralino=0.;
3374
3375 double D0ne,D2ne;
3376
3377 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie], Z_D[5][ie] -> Z_D[1+3][ie] and Yd[2] -> Yd[1] */
3378
3379 for(int i=0; i<6; ++i) {
3380 for(int j=0; j<6; ++j) {
3381 for(int a=0; a<4; ++a) {
3382 for (int b=0; b<4; ++b) {
3383 D0ne = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
3384 D2ne = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
3385
3386 Cp1_neutralino += -D0ne*M_ch0[a]*M_ch0[b]*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][b])/(3.0*cw) +
3387 Yd[2]*Z_D[2][j]*conj(Z_N[2][b]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][j])/(3.0*cw) + Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][j]))*(-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[1+3][i])/(3.0*cw) +
3388 Z_N[2][b]*conj(Yd[1])*conj(Z_D[1][i]))/(64.0*pow(PI, 2)) - D2ne*(-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][b])/(3.0*cw) + Yd[2]*Z_D[2][j]*conj(Z_N[2][b]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][j])/(3.0*cw) +
3389 Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][j]))*(-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[1+3][i])/(3.0*cw) + Z_N[2][b]*conj(Yd[1])*conj(Z_D[1][i]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) +
3390 Yd[2]*Z_D[5][i]*Z_N[2][a])/(32.0*pow(PI, 2));
3391
3392 }
3393 }
3394 }
3395 }
3396
3397
3398
3399 //mixed ->
3400
3401
3402 scalar_t Cp1_mixed=0.;
3403
3404
3405
3406 double M_g=src.get_val(ParameterType::BSM, "MASS", 1000021);
3407 double M_g_pow_2 = pow(M_g,2.);
3408
3409 // } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
3410
3411 double D0mix,D2mix;
3412
3413 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie], Z_D[5][ie] -> Z_D[1+3][ie] and Yd[2] -> Yd[1] */
3414
3415 for(int i=0; i<6; ++i) {
3416 for(int j=0; j<6; ++j) {
3417 for(int a=0; a<4; ++a) {
3418 D0mix = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
3419 D2mix = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
3420
3421 Cp1_mixed += -D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(Z_D[1+3][i]*Z_D[1+3][j]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[5][i])/(3.0*cw) + Z_N[2][a]*conj(Yd[2])*conj(Z_D[2][i]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[5][j])/(3.0*cw) +
3422 Z_N[2][a]*conj(Yd[2])*conj(Z_D[2][j])) + Z_D[5][i]*Z_D[5][j]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][i])/(3.0*cw) + Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][i]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][j])/(3.0*cw) +
3423 Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][j])))/(96.0*pow(PI, 2)) - D2mix*Z_D[5][j]*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) +
3424 Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][j])/(3.0*cw) + Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][j]))*conj(Z_D[1+3][i])/(8.0*pow(PI, 2));
3425
3426 }
3427 }
3428 }
3429
3430 //higgs PInguin ->
3431
3432
3433}
3434
3435//BS_2
3436
3439 {
3440 {ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, //mass_c_muW_mcrun
3441 {ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, //mass_b_muW_mbrun
3442 {ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, //mass_t_muW_mbrun
3443 {ParameterType::SM, "MASS", 24},
3444 {ParameterType::BSM, "MASS", 37}, // M_H
3445 {ParameterType::SM, "MASS", 3}, //m_s
3446 {ParameterType::SM, "MASS", 2}, //m_u
3447 {ParameterType::BSM, "MASS", 1000001},
3448 {ParameterType::BSM, "MASS", 1000002},
3449 {ParameterType::BSM, "MASS", 1000003},
3450 {ParameterType::BSM, "MASS", 1000004},
3451 {ParameterType::BSM, "MASS", 1000005},
3452 {ParameterType::BSM, "MASS", 1000006},
3453 {ParameterType::BSM, "MASS", 2000001},
3454 {ParameterType::BSM, "MASS", 2000002},
3455 {ParameterType::BSM, "MASS", 2000003},
3456 {ParameterType::BSM, "MASS", 2000004},
3457 {ParameterType::BSM, "MASS", 2000005},
3458 {ParameterType::BSM, "MASS", 2000006},
3459 {ParameterType::BSM, "MASS", 1000024},
3460 {ParameterType::BSM, "MASS", 1000037},
3461 {ParameterType::BSM, "MASS", 1000022},
3462 {ParameterType::BSM, "MASS", 1000023},
3463 {ParameterType::BSM, "MASS", 1000025},
3464 {ParameterType::BSM, "MASS", 1000035},
3465 {ParameterType::BSM, "MASS", 36},
3466 {ParameterType::BSM, "MSOFT", 2},
3467 {ParameterType::BSM, "HMIX", 1},
3468 {ParameterType::BSM, "AU", LhaID(3,3)},
3469 {ParameterType::SM, "GAUGE", 1}, //gp
3470 {ParameterType::SM, "GAUGE", 2}, //g_2
3471 {ParameterType::SM, "VCKM", LhaID(0, 0)}, // V_ud
3472 {ParameterType::SM, "VCKM", LhaID(0, 1)}, // V_us
3473 {ParameterType::SM, "VCKM", LhaID(0, 2)}, // V_ub
3474 {ParameterType::SM, "VCKM", LhaID(1, 0)}, // V_cd
3475 {ParameterType::SM, "VCKM", LhaID(1, 1)}, // V_cs
3476 {ParameterType::SM, "VCKM", LhaID(1, 2)}, // V_cb
3477 {ParameterType::SM, "VCKM", LhaID(2, 0)}, // V_td
3478 {ParameterType::SM, "VCKM", LhaID(2, 1)}, // V_ts
3479 {ParameterType::SM, "VCKM", LhaID(2, 2)}, // V_tb
3480 {ParameterType::SM, "EW_SCALE", 1}
3481 },
3482 compute_LO,
3484 };
3485}
3486
3488
3489 double mu_W = src.get_val(ParameterType::WILSON, "EW_SCALE", 1);
3490 double M_H=src.get_val(ParameterType::BSM, "MASS", 37);
3491 double M_W=src.get_val(ParameterType::SM, "MASS", 24);
3492 double M_H_pow_2 = pow(M_H,2.);
3493 double M_W_pow_2 = pow(M_W,2.);
3494 std::array<std::array<scalar_t, 3>, 3> V_CKM {};
3495 double m_q = src.get_val(ParameterType::SM, "MASS", 3);
3496
3497 double m_b= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
3498 double g_2=src.get_val(ParameterType::SM, "GAUGE", 2);
3499 double tbeta = src.get_val(ParameterType::BSM, "HMIX", 2);
3500 double m_u[4],m_u_pow_2[4];
3501
3502 for (int i = 0; i<3; ++i) {
3503 for (int j = 0; j<3; j++) {
3504 V_CKM[i][j] = src.get_val(ParameterType::SM, "VCKM", LhaID(i, j));
3505 }
3506 }
3507 m_u[1]= src.get_val(ParameterType::SM, "MASS", 2);
3508 m_u[2]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 4);
3509 m_u[3]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 6);
3510
3511
3512 for(int i =0;i<3;++i) {
3513 m_u_pow_2[i]=pow(m_u[i],2.);
3514 }
3515
3516 scalar_t C2_chargedhiggs=0.;
3517
3518
3519 double D0h,D0h_c,D2h,D2h_c;
3520 scalar_t CKM_product;
3521
3522
3523 for(int i = 0; i<3; i++) for(int j=1; j<3; j++) {
3524 D0h = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
3525 D0h_c = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
3526 D2h = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
3527 D2h_c = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
3528
3529 CKM_product = V_CKM[i][3]*V_CKM[j][3]*conj(V_CKM[i][1])*conj(V_CKM[j][1]); /* NM: added 1eration dependence, V_CKM[ie][2] -> V_CKM[ie][1] */
3530
3531 C2_chargedhiggs += -pow(g_2,4.)*pow(m_q,2.)*CKM_product*pow(m_u[i],2)*pow(m_u[j],2)*(D0h_c - 2*D0h)/(128.*pow(PI,2.)*pow(M_W,4.));
3532
3533 }
3534
3535 //gluino ->
3536
3537
3538 double M_D[6],M_D_pow_2[6],dm[6];
3539 scalar_t Z_D[6][6];
3540 double Mg=src.get_val(ParameterType::BSM, "MASS", 1000021);
3541 double Mg_pow_2 = pow(Mg,2);
3542 // double g_3=sqrt(4.*PI*alphas_running(mu_t,param->mass_top_pole,param->mass_b,param)); /* NM: compute from alphas instead of using g3 from SLHA file */
3543 double g_3= sqrt(4.*PI*QCDHelper::alpha_s(mu_W)); //TODO : check pole or running
3544 M_D[0]=src.get_val(ParameterType::BSM, "MASS", 1000001);
3545 M_D[1]=src.get_val(ParameterType::BSM, "MASS", 1000003);
3546 M_D[2]=src.get_val(ParameterType::BSM, "MASS", 1000005);
3547 M_D[3]=src.get_val(ParameterType::BSM, "MASS", 2000001);
3548 M_D[4]=src.get_val(ParameterType::BSM, "MASS", 2000003);
3549 M_D[5]=src.get_val(ParameterType::BSM, "MASS", 2000005);
3550
3551 for(int i = 0; i<6; ++i) {
3552 for(int j = 0; j<6; ++j) {
3553 Z_D[i][j]= src.get_val(ParameterType::BSM, "DSQMIX", LhaID(j+1, i+1)); //TODO: deal with this group
3554 }
3555 } // inverse matrix, because in SLHA2 the second index denotes quark flavour (dl,sl,bl,dr,sr,br)
3556 for(int i = 0; i<6; ++i) {
3557 M_D_pow_2[i]=pow(M_D[i],2);
3558 }
3559
3560 scalar_t C2_gluino=0.;
3561
3562 double D2g,D0g;
3563
3564 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie] and Z_D[5][ie] -> Z_D[1+3][ie] */
3565
3566 for(int i =0; i<6; ++i) {
3567 for(int j = 0; j<6; ++j) {
3568 D2g = D2p(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
3569 D0g = D0(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
3570 C2_gluino += -17.*D0g*pow(Mg, 2)*Z_D[2][i]*Z_D[2][j]*pow(g_3, 4.)*conj(Z_D[1+3][i])*conj(Z_D[1+3][j])/(288.*pow(PI, 2));
3571
3572 }
3573 }
3574
3575
3576 //chargino ->
3577
3578
3579 double M_ch[2],M_ch_pow_2[2],M_U[6],M_U_pow_2[6];
3580 scalar_t Z_p[2][2],Z_m[2][2],Z_U[6][6];
3581 scalar_t Yd[3],Yu[3];
3582 double sw=sin(atan(src.get_val(ParameterType::SM, "GAUGE", 2)/src.get_val(ParameterType::SM, "GAUGE", 2)));
3583 double Q_e = (src.get_val(ParameterType::SM, "GAUGE", 2))*sw;
3584 double swi=1./sw;
3585
3586 M_ch[0]=src.get_val(ParameterType::BSM, "MASS", 1000024);
3587 M_ch[1]=src.get_val(ParameterType::BSM, "MASS", 1000037);
3588
3589 M_U[0]=src.get_val(ParameterType::BSM, "MASS", 1000002);
3590 M_U[1]=src.get_val(ParameterType::BSM, "MASS", 1000004);
3591 M_U[2]=src.get_val(ParameterType::BSM, "MASS", 1000006);
3592 M_U[3]=src.get_val(ParameterType::BSM, "MASS", 2000002);
3593 M_U[4]=src.get_val(ParameterType::BSM, "MASS", 2000004);
3594 M_U[5]=src.get_val(ParameterType::BSM, "MASS", 2000006);
3595
3596 for(int i=0; i<2; ++i){
3597 M_ch_pow_2[i]=pow(M_ch[i],2);
3598 }
3599 for(int i=0; i<6; ++i){
3600 M_U_pow_2[i]=pow(M_U[i],2);
3601 }
3602 for(int i=0; i <2; ++i) {
3603 for(int j=0; j<2; ++j) {
3604 Z_p[i][j]=conj(src.get_val(ParameterType::BSM, "VMIX", LhaID(j+1, i+1)));
3605 }
3606 } /* NM: conversion from SLHA2 convention */
3607 for(int i=2; i<2; ++i) {
3608 for(int j=0; j<2; ++j) {
3609 Z_m[i][j]=conj(src.get_val(ParameterType::BSM, "UMIX", LhaID(j+1, i+1)));
3610 }
3611 } /* NM: conversion from SLHA2 convention */
3612 for(int i=0; i<6; ++i) {
3613 for(int j=0; j<6; ++j) {
3614 Z_U[i][j]=conj(src.get_val(ParameterType::BSM, "USQMIX", LhaID(j+1, i+1))); //TODO: deal with this group
3615 }
3616 } /* NM: conversion from SLHA2 convention */
3617
3618 double v1,v2,beta;
3619 beta = atan(src.get_val(ParameterType::BSM, "EXTPAR", 25));
3620 v1 = 2.*(src.get_val(ParameterType::SM, "MASS", 24))*cos(beta)/src.get_val(ParameterType::SM, "GAUGE", 2);
3621 v2 = v1*tan(beta);
3622
3623 double mc = src.get_val(ParameterType::SM, "MASS", 4);
3624
3625 double m_b=QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR); /* NM: running mass */
3626 double m_t=QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR); /* NM: running mass */
3627
3628 double common = sqrt(2.)/v2;
3629 Yu[0] = common*src.get_val(ParameterType::SM, "MASS", 2);
3630 Yu[1] = common*QCDHelper::msbar_mass(4, mu_W, MassType::POLE); //TODO : check this to be sure
3631
3632 Yu[2] = common*m_t; /* NM: running mass */
3633 double otherc = sqrt(2.)/v1;
3634 Yd[0] = otherc*src.get_val(ParameterType::SM, "MASS", 1);
3635 Yd[1] = otherc*src.get_val(ParameterType::SM, "MASS", 3);
3636 Yd[2] = otherc*m_b; /* NM: running mass */
3637
3638
3639 scalar_t C2_chargino=0.;
3640
3641
3642 double D0ch,D2ch;
3643
3644 /* NM: added 1eration dependence, Yd[2] -> Yd[1] and V_CKM[Ke][2] -> V_CKM[Ke][1] */
3645
3646 for(int i = 0; i<6; ++i) {
3647 for(int j=0; j<6; ++j) {
3648 for(int a =0; a<2; ++a) {
3649 for (int b=0; b<2; ++b) {
3650 D0ch = D0(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
3651 D2ch = D2p(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
3652 for(int k=0; k<3; ++k) {
3653
3654 C2_chargino += 0.;
3655
3656 }
3657 }
3658 }
3659 }
3660 }
3661
3662
3663
3664 //neutralino ->
3665
3666
3667 double M_ch0[4],M_ch0_pow_2[4],M_D[6],M_D_pow_2[6];
3668 scalar_t Z_N[4][4];
3669
3670 double cw=cos(atan(src.get_val(ParameterType::SM, "GAUGE", 1)/src.get_val(ParameterType::SM, "GAUGE", 2)));
3671
3672 double otherc = sqrt(2.)/v1;
3673
3674 std::array<double,4> temp_ch0 = {src.get_val(ParameterType::BSM, "MASS", 1000022),
3675 src.get_val(ParameterType::BSM, "MASS", 1000023),
3676 src.get_val(ParameterType::BSM, "MASS", 1000025),
3677 src.get_val(ParameterType::BSM, "MASS", 1000035)};
3678
3679 M_ch0[0]=fabs(temp_ch0[0]);
3680 M_ch0[1]=fabs(temp_ch0[1]);
3681 M_ch0[2]=fabs(temp_ch0[2]);
3682 M_ch0[3]=fabs(temp_ch0[3]);
3683
3684 for(int i=0; i<4; ++i){
3685 M_ch0_pow_2[i]=pow(M_ch0[i],2);
3686 }
3687
3688
3689 for(int i=0; i<6; ++i) {
3690 M_D_pow_2[i]=pow(M_D[i],2);
3691 }
3692
3693
3694
3695 for(int i=0; i<4; ++i) {
3696 for(int j=0; j<4; ++j) {
3697 Z_N[i][j] = conj(src.get_val(ParameterType::BSM, "NMIX", LhaID(i+1, j+1))); //TODO : i,j or j,i like the others ?
3698 }
3699 }
3700
3701
3702 for(int i=0; i<4; ++i){
3703 if(temp_ch0[i]<0.) {
3704 for(int j=0; j<4; ++j) {
3705 Z_N[i][j]*=I;
3706 }
3707 }
3708 } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
3709
3710 scalar_t C2_neutralino=0.;
3711
3712 double D0ne,D2ne;
3713
3714 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie], Z_D[5][ie] -> Z_D[1+3][ie] and Yd[2] -> Yd[1] */
3715
3716 for(int i=0; i<6; ++i) {
3717 for(int j=0; j<6; ++j) {
3718 for(int a=0; a<4; ++a) {
3719 for (int b=0; b<4; ++b) {
3720 D0ne = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
3721 D2ne = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
3722
3723 C2_neutralino += D0ne*M_ch0[a]*M_ch0[b]*(-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[1+3][i])/(3.0*cw) + Z_N[2][b]*conj(Yd[1])*conj(Z_D[1][i]))*(-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[1+3][j])/(3.0*cw) +
3724 Z_N[2][b]*conj(Yd[1])*conj(Z_D[1][j]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/
3725 (2.0*cw*sw) + Yd[2]*Z_D[5][j]*Z_N[2][a])/(32.0*pow(PI, 2));
3726
3727
3728 }
3729 }
3730 }
3731 }
3732
3733
3734
3735 //mixed ->
3736
3737
3738 scalar_t C2_mixed=0.;
3739
3740
3741
3742 double M_g=src.get_val(ParameterType::BSM, "MASS", 1000021);
3743 double M_g_pow_2 = pow(M_g,2.);
3744
3745 // } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
3746
3747 double D0mix,D2mix;
3748
3749 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie], Z_D[5][ie] -> Z_D[1+3][ie] and Yd[2] -> Yd[1] */
3750
3751 for(int i=0; i<6; ++i) {
3752 for(int j=0; j<6; ++j) {
3753 for(int a=0; a<4; ++a) {
3754 D0mix = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
3755 D2mix = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
3756
3757 C2_mixed += D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(Z_D[2][i]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][i])/(3.0*cw) + Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][i]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][j])/(3.0*cw) +
3758 Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][j]))*conj(Z_D[2][j]) + 3.0*Z_D[2][j]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][j])/(3.0*cw) + Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][j]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 -
3759 Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*conj(Z_D[1+3][i]))/(48.0*pow(PI, 2)) + D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) +
3760 Yd[2]*Z_D[5][i]*Z_N[2][a])*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][j]*Z_N[2][a])*conj(Z_D[1+3][i])*conj(Z_D[1+3][j])/(48.0*pow(PI, 2));
3761
3762
3763 }
3764 }
3765 }
3766
3767 //higgs PInguin ->
3768
3769
3770}
3771
3772//BS_2_tilde
3773
3776 {
3777 {ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, //mass_c_muW_mcrun
3778 {ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, //mass_b_muW_mbrun
3779 {ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, //mass_t_muW_mbrun
3780 {ParameterType::SM, "MASS", 24},
3781 {ParameterType::BSM, "MASS", 37}, // M_H
3782 {ParameterType::SM, "MASS", 3}, //m_s
3783 {ParameterType::SM, "MASS", 2}, //m_u
3784 {ParameterType::BSM, "MASS", 1000001},
3785 {ParameterType::BSM, "MASS", 1000002},
3786 {ParameterType::BSM, "MASS", 1000003},
3787 {ParameterType::BSM, "MASS", 1000004},
3788 {ParameterType::BSM, "MASS", 1000005},
3789 {ParameterType::BSM, "MASS", 1000006},
3790 {ParameterType::BSM, "MASS", 2000001},
3791 {ParameterType::BSM, "MASS", 2000002},
3792 {ParameterType::BSM, "MASS", 2000003},
3793 {ParameterType::BSM, "MASS", 2000004},
3794 {ParameterType::BSM, "MASS", 2000005},
3795 {ParameterType::BSM, "MASS", 2000006},
3796 {ParameterType::BSM, "MASS", 1000024},
3797 {ParameterType::BSM, "MASS", 1000037},
3798 {ParameterType::BSM, "MASS", 1000022},
3799 {ParameterType::BSM, "MASS", 1000023},
3800 {ParameterType::BSM, "MASS", 1000025},
3801 {ParameterType::BSM, "MASS", 1000035},
3802 {ParameterType::BSM, "MASS", 36},
3803 {ParameterType::BSM, "MSOFT", 2},
3804 {ParameterType::BSM, "HMIX", 1},
3805 {ParameterType::BSM, "AU", LhaID(3,3)},
3806 {ParameterType::SM, "GAUGE", 1}, //gp
3807 {ParameterType::SM, "GAUGE", 2}, //g_2
3808 {ParameterType::SM, "VCKM", LhaID(0, 0)}, // V_ud
3809 {ParameterType::SM, "VCKM", LhaID(0, 1)}, // V_us
3810 {ParameterType::SM, "VCKM", LhaID(0, 2)}, // V_ub
3811 {ParameterType::SM, "VCKM", LhaID(1, 0)}, // V_cd
3812 {ParameterType::SM, "VCKM", LhaID(1, 1)}, // V_cs
3813 {ParameterType::SM, "VCKM", LhaID(1, 2)}, // V_cb
3814 {ParameterType::SM, "VCKM", LhaID(2, 0)}, // V_td
3815 {ParameterType::SM, "VCKM", LhaID(2, 1)}, // V_ts
3816 {ParameterType::SM, "VCKM", LhaID(2, 2)}, // V_tb
3817 {ParameterType::SM, "EW_SCALE", 1}
3818 },
3819 compute_LO,
3821 };
3822}
3823
3825
3826 double mu_W = src.get_val(ParameterType::WILSON, "EW_SCALE", 1);
3827 double M_H=src.get_val(ParameterType::BSM, "MASS", 37);
3828 double M_W=src.get_val(ParameterType::SM, "MASS", 24);
3829 double M_H_pow_2 = pow(M_H,2.);
3830 double M_W_pow_2 = pow(M_W,2.);
3831 std::array<std::array<scalar_t, 3>, 3> V_CKM {};
3832 double m_q = src.get_val(ParameterType::SM, "MASS", 3);
3833
3834 double m_b= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
3835 double g_2=src.get_val(ParameterType::SM, "GAUGE", 2);
3836 double tbeta = src.get_val(ParameterType::BSM, "HMIX", 2);
3837 double m_u[4],m_u_pow_2[4];
3838
3839 for (int i = 0; i<3; ++i) {
3840 for (int j = 0; j<3; j++) {
3841 V_CKM[i][j] = src.get_val(ParameterType::SM, "VCKM", LhaID(i, j));
3842 }
3843 }
3844 m_u[1]= src.get_val(ParameterType::SM, "MASS", 2);
3845 m_u[2]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 4);
3846 m_u[3]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 6);
3847
3848
3849 for(int i =0;i<3;++i) {
3850 m_u_pow_2[i]=pow(m_u[i],2.);
3851 }
3852
3853
3854 scalar_t Cp2_chargedhiggs=0.;
3855
3856 double D0h,D0h_c,D2h,D2h_c;
3857 scalar_t CKM_product;
3858
3859
3860 for(int i = 0; i<3; i++) for(int j=1; j<3; j++) {
3861 D0h = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
3862 D0h_c = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
3863 D2h = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
3864 D2h_c = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
3865
3866 CKM_product = V_CKM[i][3]*V_CKM[j][3]*conj(V_CKM[i][1])*conj(V_CKM[j][1]); /* NM: added 1eration dependence, V_CKM[ie][2] -> V_CKM[ie][1] */
3867
3868 Cp2_chargedhiggs += -pow(g_2,4.)*pow(m_b,2.)*CKM_product*pow(m_u[i],2)*pow(m_u[j],2)*(D0h_c-2.*D0h)/(128.*pow(PI,2.)*pow(M_W,4.));
3869
3870 }
3871
3872 //gluino ->
3873
3874
3875 double M_D[6],M_D_pow_2[6],dm[6];
3876 scalar_t Z_D[6][6];
3877 double Mg=src.get_val(ParameterType::BSM, "MASS", 1000021);
3878 double Mg_pow_2 = pow(Mg,2);
3879 // double g_3=sqrt(4.*PI*alphas_running(mu_t,param->mass_top_pole,param->mass_b,param)); /* NM: compute from alphas instead of using g3 from SLHA file */
3880 double g_3= sqrt(4.*PI*QCDHelper::alpha_s(mu_W)); //TODO : check pole or running
3881 M_D[0]=src.get_val(ParameterType::BSM, "MASS", 1000001);
3882 M_D[1]=src.get_val(ParameterType::BSM, "MASS", 1000003);
3883 M_D[2]=src.get_val(ParameterType::BSM, "MASS", 1000005);
3884 M_D[3]=src.get_val(ParameterType::BSM, "MASS", 2000001);
3885 M_D[4]=src.get_val(ParameterType::BSM, "MASS", 2000003);
3886 M_D[5]=src.get_val(ParameterType::BSM, "MASS", 2000005);
3887
3888 for(int i = 0; i<6; ++i) {
3889 for(int j = 0; j<6; ++j) {
3890 Z_D[i][j]= src.get_val(ParameterType::BSM, "DSQMIX", LhaID(j+1, i+1)); //TODO: deal with this group
3891 }
3892 } // inverse matrix, because in SLHA2 the second index denotes quark flavour (dl,sl,bl,dr,sr,br)
3893 for(int i = 0; i<6; ++i) {
3894 M_D_pow_2[i]=pow(M_D[i],2);
3895 }
3896
3897 scalar_t Cp2_gluino=0.;
3898
3899 double D2g,D0g;
3900
3901 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie] and Z_D[5][ie] -> Z_D[1+3][ie] */
3902
3903 for(int i =0; i<6; ++i) {
3904 for(int j = 0; j<6; ++j) {
3905 D2g = D2p(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
3906 D0g = D0(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
3907
3908 Cp2_gluino += -17.*D0g*pow(Mg, 2.)*Z_D[5][i]*Z_D[5][j]*pow(g_3,4.)*conj(Z_D[1][i])*conj(Z_D[1][j])/(288.*pow(PI, 2.));
3909
3910 }
3911 }
3912
3913
3914 //chargino ->
3915
3916
3917 double M_ch[2],M_ch_pow_2[2],M_U[6],M_U_pow_2[6];
3918 scalar_t Z_p[2][2],Z_m[2][2],Z_U[6][6];
3919 scalar_t Yd[3],Yu[3];
3920 double sw=sin(atan(src.get_val(ParameterType::SM, "GAUGE", 2)/src.get_val(ParameterType::SM, "GAUGE", 2)));
3921 double Q_e = (src.get_val(ParameterType::SM, "GAUGE", 2))*sw;
3922 double swi=1./sw;
3923
3924 M_ch[0]=src.get_val(ParameterType::BSM, "MASS", 1000024);
3925 M_ch[1]=src.get_val(ParameterType::BSM, "MASS", 1000037);
3926
3927 M_U[0]=src.get_val(ParameterType::BSM, "MASS", 1000002);
3928 M_U[1]=src.get_val(ParameterType::BSM, "MASS", 1000004);
3929 M_U[2]=src.get_val(ParameterType::BSM, "MASS", 1000006);
3930 M_U[3]=src.get_val(ParameterType::BSM, "MASS", 2000002);
3931 M_U[4]=src.get_val(ParameterType::BSM, "MASS", 2000004);
3932 M_U[5]=src.get_val(ParameterType::BSM, "MASS", 2000006);
3933
3934 for(int i=0; i<2; ++i){
3935 M_ch_pow_2[i]=pow(M_ch[i],2);
3936 }
3937 for(int i=0; i<6; ++i){
3938 M_U_pow_2[i]=pow(M_U[i],2);
3939 }
3940 for(int i=0; i <2; ++i) {
3941 for(int j=0; j<2; ++j) {
3942 Z_p[i][j]=conj(src.get_val(ParameterType::BSM, "VMIX", LhaID(j+1, i+1)));
3943 }
3944 } /* NM: conversion from SLHA2 convention */
3945 for(int i=2; i<2; ++i) {
3946 for(int j=0; j<2; ++j) {
3947 Z_m[i][j]=conj(src.get_val(ParameterType::BSM, "UMIX", LhaID(j+1, i+1)));
3948 }
3949 } /* NM: conversion from SLHA2 convention */
3950 for(int i=0; i<6; ++i) {
3951 for(int j=0; j<6; ++j) {
3952 Z_U[i][j]=conj(src.get_val(ParameterType::BSM, "USQMIX", LhaID(j+1, i+1))); //TODO: deal with this group
3953 }
3954 } /* NM: conversion from SLHA2 convention */
3955
3956 double v1,v2,beta;
3957 beta = atan(src.get_val(ParameterType::BSM, "EXTPAR", 25));
3958 v1 = 2.*(src.get_val(ParameterType::SM, "MASS", 24))*cos(beta)/src.get_val(ParameterType::SM, "GAUGE", 2);
3959 v2 = v1*tan(beta);
3960
3961 double mc = src.get_val(ParameterType::SM, "MASS", 4);
3962
3963 double m_b=QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR); /* NM: running mass */
3964 double m_t=QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR); /* NM: running mass */
3965
3966 double common = sqrt(2.)/v2;
3967 Yu[0] = common*src.get_val(ParameterType::SM, "MASS", 2);
3968 Yu[1] = common*QCDHelper::msbar_mass(4, mu_W, MassType::POLE); //TODO : check this to be sure
3969
3970 Yu[2] = common*m_t; /* NM: running mass */
3971 double otherc = sqrt(2.)/v1;
3972 Yd[0] = otherc*src.get_val(ParameterType::SM, "MASS", 1);
3973 Yd[1] = otherc*src.get_val(ParameterType::SM, "MASS", 3);
3974 Yd[2] = otherc*m_b; /* NM: running mass */
3975
3976 scalar_t Cp2_chargino=0.;
3977
3978
3979 double D0ch,D2ch;
3980
3981 /* NM: added 1eration dependence, Yd[2] -> Yd[1] and V_CKM[Ke][2] -> V_CKM[Ke][1] */
3982
3983 for(int i = 0; i<6; ++i) {
3984 for(int j=0; j<6; ++j) {
3985 for(int a =0; a<2; ++a) {
3986 for (int b=0; b<2; ++b) {
3987 D0ch = D0(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
3988 D2ch = D2p(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
3989 for(int k=0; k<3; ++k) {
3990
3991 Cp2_chargino += 0.;
3992
3993 }
3994 }
3995 }
3996 }
3997 }
3998
3999
4000
4001 //neutralino ->
4002
4003
4004 double M_ch0[4],M_ch0_pow_2[4],M_D[6],M_D_pow_2[6];
4005 scalar_t Z_N[4][4];
4006
4007 double cw=cos(atan(src.get_val(ParameterType::SM, "GAUGE", 1)/src.get_val(ParameterType::SM, "GAUGE", 2)));
4008
4009 double otherc = sqrt(2.)/v1;
4010
4011 std::array<double,4> temp_ch0 = {src.get_val(ParameterType::BSM, "MASS", 1000022),
4012 src.get_val(ParameterType::BSM, "MASS", 1000023),
4013 src.get_val(ParameterType::BSM, "MASS", 1000025),
4014 src.get_val(ParameterType::BSM, "MASS", 1000035)};
4015
4016 M_ch0[0]=fabs(temp_ch0[0]);
4017 M_ch0[1]=fabs(temp_ch0[1]);
4018 M_ch0[2]=fabs(temp_ch0[2]);
4019 M_ch0[3]=fabs(temp_ch0[3]);
4020
4021 for(int i=0; i<4; ++i){
4022 M_ch0_pow_2[i]=pow(M_ch0[i],2);
4023 }
4024
4025
4026 for(int i=0; i<6; ++i) {
4027 M_D_pow_2[i]=pow(M_D[i],2);
4028 }
4029
4030
4031
4032 for(int i=0; i<4; ++i) {
4033 for(int j=0; j<4; ++j) {
4034 Z_N[i][j] = conj(src.get_val(ParameterType::BSM, "NMIX", LhaID(i+1, j+1))); //TODO : i,j or j,i like the others ?
4035 }
4036 }
4037
4038
4039 for(int i=0; i<4; ++i){
4040 if(temp_ch0[i]<0.) {
4041 for(int j=0; j<4; ++j) {
4042 Z_N[i][j]*=I;
4043 }
4044 }
4045 } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
4046
4047 scalar_t Cp2_neutralino=0.;
4048
4049 double D0ne,D2ne;
4050
4051 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie], Z_D[5][ie] -> Z_D[1+3][ie] and Yd[2] -> Yd[1] */
4052
4053 for(int i=0; i<6; ++i) {
4054 for(int j=0; j<6; ++j) {
4055 for(int a=0; a<4; ++a) {
4056 for (int b=0; b<4; ++b) {
4057 D0ne = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
4058 D2ne = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
4059
4060 Cp2_neutralino += D0ne*M_ch0[a]*M_ch0[b]*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][a])/(3.0*cw) +
4061 Yd[2]*Z_D[2][j]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 - conj(Z_N[1][b])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][b]))*(-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 -
4062 conj(Z_N[1][b])*cw)*conj(Z_D[1][j])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][j])*conj(Z_N[2][b]))/(32.0*pow(PI, 2));
4063
4064
4065 }
4066 }
4067 }
4068 }
4069
4070
4071
4072 //mixed ->
4073
4074
4075 scalar_t Cp2_mixed=0.;
4076
4077
4078
4079 double M_g=src.get_val(ParameterType::BSM, "MASS", 1000021);
4080 double M_g_pow_2 = pow(M_g,2.);
4081
4082 // } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
4083
4084 double D0mix,D2mix;
4085
4086 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie], Z_D[5][ie] -> Z_D[1+3][ie] and Yd[2] -> Yd[1] */
4087
4088 for(int i=0; i<6; ++i) {
4089 for(int j=0; j<6; ++j) {
4090 for(int a=0; a<4; ++a) {
4091 D0mix = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
4092 D2mix = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
4093
4094 Cp2_mixed += D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(Z_D[5][i]*pow(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) +
4095 conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a]), 2)*conj(Z_D[5][j]) + 3.0*Z_D[5][j]*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
4096 conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a]))*conj(Z_D[1][i]))/(48.0*pow(PI, 2)) +
4097 D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][a])/(3.0*cw) +
4098 Yd[2]*Z_D[2][j]*conj(Z_N[2][a]))*conj(Z_D[1][i])*conj(Z_D[1][j])/(48.0*pow(PI, 2));
4099
4100
4101 }
4102 }
4103 }
4104
4105 //higgs PInguin ->
4106
4107
4108
4109}
4110
4111//B3
4112
4115 {
4116 {ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, //mass_c_muW_mcrun
4117 {ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, //mass_b_muW_mbrun
4118 {ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, //mass_t_muW_mbrun
4119 {ParameterType::SM, "MASS", 24},
4120 {ParameterType::BSM, "MASS", 37}, // M_H
4121 {ParameterType::SM, "MASS", 3}, //m_s
4122 {ParameterType::SM, "MASS", 2}, //m_u
4123 {ParameterType::BSM, "MASS", 1000001},
4124 {ParameterType::BSM, "MASS", 1000002},
4125 {ParameterType::BSM, "MASS", 1000003},
4126 {ParameterType::BSM, "MASS", 1000004},
4127 {ParameterType::BSM, "MASS", 1000005},
4128 {ParameterType::BSM, "MASS", 1000006},
4129 {ParameterType::BSM, "MASS", 2000001},
4130 {ParameterType::BSM, "MASS", 2000002},
4131 {ParameterType::BSM, "MASS", 2000003},
4132 {ParameterType::BSM, "MASS", 2000004},
4133 {ParameterType::BSM, "MASS", 2000005},
4134 {ParameterType::BSM, "MASS", 2000006},
4135 {ParameterType::BSM, "MASS", 1000024},
4136 {ParameterType::BSM, "MASS", 1000037},
4137 {ParameterType::BSM, "MASS", 1000022},
4138 {ParameterType::BSM, "MASS", 1000023},
4139 {ParameterType::BSM, "MASS", 1000025},
4140 {ParameterType::BSM, "MASS", 1000035},
4141 {ParameterType::BSM, "MASS", 36},
4142 {ParameterType::BSM, "MSOFT", 2},
4143 {ParameterType::BSM, "HMIX", 1},
4144 {ParameterType::BSM, "AU", LhaID(3,3)},
4145 {ParameterType::SM, "GAUGE", 1}, //gp
4146 {ParameterType::SM, "GAUGE", 2}, //g_2
4147 {ParameterType::SM, "VCKM", LhaID(0, 0)}, // V_ud
4148 {ParameterType::SM, "VCKM", LhaID(0, 1)}, // V_us
4149 {ParameterType::SM, "VCKM", LhaID(0, 2)}, // V_ub
4150 {ParameterType::SM, "VCKM", LhaID(1, 0)}, // V_cd
4151 {ParameterType::SM, "VCKM", LhaID(1, 1)}, // V_cs
4152 {ParameterType::SM, "VCKM", LhaID(1, 2)}, // V_cb
4153 {ParameterType::SM, "VCKM", LhaID(2, 0)}, // V_td
4154 {ParameterType::SM, "VCKM", LhaID(2, 1)}, // V_ts
4155 {ParameterType::SM, "VCKM", LhaID(2, 2)}, // V_tb
4156 {ParameterType::SM, "EW_SCALE", 1}
4157 },
4158 compute_LO,
4160 };
4161}
4162
4164
4165 double mu_W = src.get_val(ParameterType::WILSON, "EW_SCALE", 1);
4166 double M_H=src.get_val(ParameterType::BSM, "MASS", 37);
4167 double M_W=src.get_val(ParameterType::SM, "MASS", 24);
4168 double M_H_pow_2 = pow(M_H,2.);
4169 double M_W_pow_2 = pow(M_W,2.);
4170 std::array<std::array<scalar_t, 3>, 3> V_CKM {};
4171 double m_q = src.get_val(ParameterType::SM, "MASS", 3);
4172
4173 double m_b= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
4174 double g_2=src.get_val(ParameterType::SM, "GAUGE", 2);
4175 double tbeta = src.get_val(ParameterType::BSM, "HMIX", 2);
4176 double m_u[4],m_u_pow_2[4];
4177
4178 for (int i = 0; i<3; ++i) {
4179 for (int j = 0; j<3; j++) {
4180 V_CKM[i][j] = src.get_val(ParameterType::SM, "VCKM", LhaID(i, j));
4181 }
4182 }
4183 m_u[1]= src.get_val(ParameterType::SM, "MASS", 2);
4184 m_u[2]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 4);
4185 m_u[3]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 6);
4186
4187
4188 for(int i =0;i<3;++i) {
4189 m_u_pow_2[i]=pow(m_u[i],2.);
4190 }
4191
4192
4193 scalar_t C3_chargedhiggs=0.;
4194
4195
4196 double D0h,D0h_c,D2h,D2h_c;
4197 scalar_t CKM_product;
4198
4199
4200 for(int i = 0; i<3; i++) for(int j=1; j<3; j++) {
4201 D0h = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
4202 D0h_c = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
4203 D2h = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
4204 D2h_c = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
4205
4206 CKM_product = V_CKM[i][3]*V_CKM[j][3]*conj(V_CKM[i][1])*conj(V_CKM[j][1]); /* NM: added 1eration dependence, V_CKM[ie][2] -> V_CKM[ie][1] */
4207
4208 C3_chargedhiggs += 0.;
4209
4210 }
4211
4212 //gluino ->
4213
4214
4215 double M_D[6],M_D_pow_2[6],dm[6];
4216 scalar_t Z_D[6][6];
4217 double Mg=src.get_val(ParameterType::BSM, "MASS", 1000021);
4218 double Mg_pow_2 = pow(Mg,2);
4219 // double g_3=sqrt(4.*PI*alphas_running(mu_t,param->mass_top_pole,param->mass_b,param)); /* NM: compute from alphas instead of using g3 from SLHA file */
4220 double g_3= sqrt(4.*PI*QCDHelper::alpha_s(mu_W)); //TODO : check pole or running
4221 M_D[0]=src.get_val(ParameterType::BSM, "MASS", 1000001);
4222 M_D[1]=src.get_val(ParameterType::BSM, "MASS", 1000003);
4223 M_D[2]=src.get_val(ParameterType::BSM, "MASS", 1000005);
4224 M_D[3]=src.get_val(ParameterType::BSM, "MASS", 2000001);
4225 M_D[4]=src.get_val(ParameterType::BSM, "MASS", 2000003);
4226 M_D[5]=src.get_val(ParameterType::BSM, "MASS", 2000005);
4227
4228 for(int i = 0; i<6; ++i) {
4229 for(int j = 0; j<6; ++j) {
4230 Z_D[i][j]= src.get_val(ParameterType::BSM, "DSQMIX", LhaID(j+1, i+1)); //TODO: deal with this group
4231 }
4232 } // inverse matrix, because in SLHA2 the second index denotes quark flavour (dl,sl,bl,dr,sr,br)
4233 for(int i = 0; i<6; ++i) {
4234 M_D_pow_2[i]=pow(M_D[i],2);
4235 }
4236
4237 scalar_t C3_gluino=0.;
4238
4239 double D2g,D0g;
4240
4241 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie] and Z_D[5][ie] -> Z_D[1+3][ie] */
4242
4243 for(int i =0; i<6; ++i) {
4244 for(int j = 0; j<6; ++j) {
4245 D2g = D2p(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
4246 D0g = D0(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
4247
4248 C3_gluino += -D0g*pow(Mg, 2)*Z_D[2][i]*Z_D[2][j]*pow(g_3,4.)*conj(Z_D[1+3][i])*conj(Z_D[1+3][j])/(96.*pow(PI, 2));
4249
4250 }
4251 }
4252
4253
4254 //chargino ->
4255
4256
4257 double M_ch[2],M_ch_pow_2[2],M_U[6],M_U_pow_2[6];
4258 scalar_t Z_p[2][2],Z_m[2][2],Z_U[6][6];
4259 scalar_t Yd[3],Yu[3];
4260 double sw=sin(atan(src.get_val(ParameterType::SM, "GAUGE", 2)/src.get_val(ParameterType::SM, "GAUGE", 2)));
4261 double Q_e = (src.get_val(ParameterType::SM, "GAUGE", 2))*sw;
4262 double swi=1./sw;
4263
4264 M_ch[0]=src.get_val(ParameterType::BSM, "MASS", 1000024);
4265 M_ch[1]=src.get_val(ParameterType::BSM, "MASS", 1000037);
4266
4267 M_U[0]=src.get_val(ParameterType::BSM, "MASS", 1000002);
4268 M_U[1]=src.get_val(ParameterType::BSM, "MASS", 1000004);
4269 M_U[2]=src.get_val(ParameterType::BSM, "MASS", 1000006);
4270 M_U[3]=src.get_val(ParameterType::BSM, "MASS", 2000002);
4271 M_U[4]=src.get_val(ParameterType::BSM, "MASS", 2000004);
4272 M_U[5]=src.get_val(ParameterType::BSM, "MASS", 2000006);
4273
4274 for(int i=0; i<2; ++i){
4275 M_ch_pow_2[i]=pow(M_ch[i],2);
4276 }
4277 for(int i=0; i<6; ++i){
4278 M_U_pow_2[i]=pow(M_U[i],2);
4279 }
4280 for(int i=0; i <2; ++i) {
4281 for(int j=0; j<2; ++j) {
4282 Z_p[i][j]=conj(src.get_val(ParameterType::BSM, "VMIX", LhaID(j+1, i+1)));
4283 }
4284 } /* NM: conversion from SLHA2 convention */
4285 for(int i=2; i<2; ++i) {
4286 for(int j=0; j<2; ++j) {
4287 Z_m[i][j]=conj(src.get_val(ParameterType::BSM, "UMIX", LhaID(j+1, i+1)));
4288 }
4289 } /* NM: conversion from SLHA2 convention */
4290 for(int i=0; i<6; ++i) {
4291 for(int j=0; j<6; ++j) {
4292 Z_U[i][j]=conj(src.get_val(ParameterType::BSM, "USQMIX", LhaID(j+1, i+1))); //TODO: deal with this group
4293 }
4294 } /* NM: conversion from SLHA2 convention */
4295
4296 double v1,v2,beta;
4297 beta = atan(src.get_val(ParameterType::BSM, "EXTPAR", 25));
4298 v1 = 2.*(src.get_val(ParameterType::SM, "MASS", 24))*cos(beta)/src.get_val(ParameterType::SM, "GAUGE", 2);
4299 v2 = v1*tan(beta);
4300
4301 double mc = src.get_val(ParameterType::SM, "MASS", 4);
4302
4303 double m_b=QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR); /* NM: running mass */
4304 double m_t=QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR); /* NM: running mass */
4305
4306 double common = sqrt(2.)/v2;
4307 Yu[0] = common*src.get_val(ParameterType::SM, "MASS", 2);
4308 Yu[1] = common*QCDHelper::msbar_mass(4, mu_W, MassType::POLE); //TODO : check this to be sure
4309
4310 Yu[2] = common*m_t; /* NM: running mass */
4311 double otherc = sqrt(2.)/v1;
4312 Yd[0] = otherc*src.get_val(ParameterType::SM, "MASS", 1);
4313 Yd[1] = otherc*src.get_val(ParameterType::SM, "MASS", 3);
4314 Yd[2] = otherc*m_b; /* NM: running mass */
4315
4316 scalar_t C3_chargino=0.;
4317
4318
4319 double D0ch,D2ch;
4320
4321 /* NM: added 1eration dependence, Yd[2] -> Yd[1] and V_CKM[Ke][2] -> V_CKM[Ke][1] */
4322
4323 for(int i = 0; i<6; ++i) {
4324 for(int j=0; j<6; ++j) {
4325 for(int a =0; a<2; ++a) {
4326 for (int b=0; b<2; ++b) {
4327 D0ch = D0(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
4328 D2ch = D2p(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
4329 for(int k=0; k<3; ++k) {
4330
4331
4332 C3_chargino += -D0ch*M_ch[a]*M_ch[b]*pow(V_CKM[k][2], 2)*Z_m[1][a]*Z_m[1][b]*Z_U[k][i]*Z_U[k][j]*(-Q_e*Z_p[0][a]*conj(Z_U[k][i])*swi + Yu[k]*Z_p[1][a]*conj(Z_U[k+3][i]))*(-Q_e*Z_p[0][b]*conj(Z_U[k][j])*swi + Yu[k]*Z_p[1][b]*conj(Z_U[k+3][j]))*pow(conj(V_CKM[k][1]), 2)*pow(conj(Yd[1]), 2)/(32.0*pow(PI, 2));
4333
4334
4335 }
4336 }
4337 }
4338 }
4339 }
4340
4341
4342
4343 //neutralino ->
4344
4345
4346 double M_ch0[4],M_ch0_pow_2[4],M_D[6],M_D_pow_2[6];
4347 scalar_t Z_N[4][4];
4348
4349 double cw=cos(atan(src.get_val(ParameterType::SM, "GAUGE", 1)/src.get_val(ParameterType::SM, "GAUGE", 2)));
4350
4351 double otherc = sqrt(2.)/v1;
4352
4353 std::array<double,4> temp_ch0 = {src.get_val(ParameterType::BSM, "MASS", 1000022),
4354 src.get_val(ParameterType::BSM, "MASS", 1000023),
4355 src.get_val(ParameterType::BSM, "MASS", 1000025),
4356 src.get_val(ParameterType::BSM, "MASS", 1000035)};
4357
4358 M_ch0[0]=fabs(temp_ch0[0]);
4359 M_ch0[1]=fabs(temp_ch0[1]);
4360 M_ch0[2]=fabs(temp_ch0[2]);
4361 M_ch0[3]=fabs(temp_ch0[3]);
4362
4363 for(int i=0; i<4; ++i){
4364 M_ch0_pow_2[i]=pow(M_ch0[i],2);
4365 }
4366
4367
4368 for(int i=0; i<6; ++i) {
4369 M_D_pow_2[i]=pow(M_D[i],2);
4370 }
4371
4372
4373
4374 for(int i=0; i<4; ++i) {
4375 for(int j=0; j<4; ++j) {
4376 Z_N[i][j] = conj(src.get_val(ParameterType::BSM, "NMIX", LhaID(i+1, j+1))); //TODO : i,j or j,i like the others ?
4377 }
4378 }
4379
4380
4381 for(int i=0; i<4; ++i){
4382 if(temp_ch0[i]<0.) {
4383 for(int j=0; j<4; ++j) {
4384 Z_N[i][j]*=I;
4385 }
4386 }
4387 } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
4388
4389 scalar_t C3_neutralino=0.;
4390
4391 double D0ne,D2ne;
4392
4393 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie], Z_D[5][ie] -> Z_D[1+3][ie] and Yd[2] -> Yd[1] */
4394
4395 for(int i=0; i<6; ++i) {
4396 for(int j=0; j<6; ++j) {
4397 for(int a=0; a<4; ++a) {
4398 for (int b=0; b<4; ++b) {
4399 D0ne = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
4400 D2ne = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
4401
4402 C3_neutralino += -D0ne*M_ch0[a]*M_ch0[b]*((-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][j])/(3.0*cw) + Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][j]))*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][b]*sw/3.0 - Z_N[1][b]*cw)/(2.0*cw*sw) +
4403 Yd[2]*Z_D[5][j]*Z_N[2][b]) - (-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[1+3][j])/(3.0*cw) + Z_N[2][b]*conj(Yd[1])*conj(Z_D[1][j]))*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) +
4404 Yd[2]*Z_D[5][j]*Z_N[2][a]))*(-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[1+3][i])/(3.0*cw) + Z_N[2][b]*conj(Yd[1])*conj(Z_D[1][i]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) +
4405 Yd[2]*Z_D[5][i]*Z_N[2][a])/(32.0*pow(PI, 2));
4406
4407
4408 }
4409 }
4410 }
4411 }
4412
4413
4414
4415 //mixed ->
4416
4417
4418 scalar_t C3_mixed=0.;
4419
4420
4421
4422 double M_g=src.get_val(ParameterType::BSM, "MASS", 1000021);
4423 double M_g_pow_2 = pow(M_g,2.);
4424
4425 // } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
4426
4427 double D0mix,D2mix;
4428
4429 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie], Z_D[5][ie] -> Z_D[1+3][ie] and Yd[2] -> Yd[1] */
4430
4431 for(int i=0; i<6; ++i) {
4432 for(int j=0; j<6; ++j) {
4433 for(int a=0; a<4; ++a) {
4434 D0mix = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
4435 D2mix = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
4436
4437 C3_mixed += D0mix*M_ch0[a]*M_g*Z_D[2][i]*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][i])/(3.0*cw) + Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][i]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][j])/(3.0*cw) +
4438 Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][j]))*conj(Z_D[2][j])/(48.0*pow(PI, 2)) - D0mix*M_ch0[a]*M_g*Z_D[2][j]*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][j])/(3.0*cw) +
4439 Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][j]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*conj(Z_D[1+3][i])/(48.0*pow(PI, 2)) +
4440 D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) +
4441 Yd[2]*Z_D[5][j]*Z_N[2][a])*conj(Z_D[1+3][i])*conj(Z_D[1+3][j])/(48.0*pow(PI, 2));
4442
4443 }
4444 }
4445 }
4446
4447 //higgs PInguin ->
4448
4449}
4450
4451//BS3_tilde
4452
4455 {
4456 {ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, //mass_c_muW_mcrun
4457 {ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, //mass_b_muW_mbrun
4458 {ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, //mass_t_muW_mbrun
4459 {ParameterType::SM, "MASS", 24},
4460 {ParameterType::BSM, "MASS", 37}, // M_H
4461 {ParameterType::SM, "MASS", 3}, //m_s
4462 {ParameterType::SM, "MASS", 2}, //m_u
4463 {ParameterType::BSM, "MASS", 1000001},
4464 {ParameterType::BSM, "MASS", 1000002},
4465 {ParameterType::BSM, "MASS", 1000003},
4466 {ParameterType::BSM, "MASS", 1000004},
4467 {ParameterType::BSM, "MASS", 1000005},
4468 {ParameterType::BSM, "MASS", 1000006},
4469 {ParameterType::BSM, "MASS", 2000001},
4470 {ParameterType::BSM, "MASS", 2000002},
4471 {ParameterType::BSM, "MASS", 2000003},
4472 {ParameterType::BSM, "MASS", 2000004},
4473 {ParameterType::BSM, "MASS", 2000005},
4474 {ParameterType::BSM, "MASS", 2000006},
4475 {ParameterType::BSM, "MASS", 1000024},
4476 {ParameterType::BSM, "MASS", 1000037},
4477 {ParameterType::BSM, "MASS", 1000022},
4478 {ParameterType::BSM, "MASS", 1000023},
4479 {ParameterType::BSM, "MASS", 1000025},
4480 {ParameterType::BSM, "MASS", 1000035},
4481 {ParameterType::BSM, "MASS", 36},
4482 {ParameterType::BSM, "MSOFT", 2},
4483 {ParameterType::BSM, "HMIX", 1},
4484 {ParameterType::BSM, "AU", LhaID(3,3)},
4485 {ParameterType::SM, "GAUGE", 1}, //gp
4486 {ParameterType::SM, "GAUGE", 2}, //g_2
4487 {ParameterType::SM, "VCKM", LhaID(0, 0)}, // V_ud
4488 {ParameterType::SM, "VCKM", LhaID(0, 1)}, // V_us
4489 {ParameterType::SM, "VCKM", LhaID(0, 2)}, // V_ub
4490 {ParameterType::SM, "VCKM", LhaID(1, 0)}, // V_cd
4491 {ParameterType::SM, "VCKM", LhaID(1, 1)}, // V_cs
4492 {ParameterType::SM, "VCKM", LhaID(1, 2)}, // V_cb
4493 {ParameterType::SM, "VCKM", LhaID(2, 0)}, // V_td
4494 {ParameterType::SM, "VCKM", LhaID(2, 1)}, // V_ts
4495 {ParameterType::SM, "VCKM", LhaID(2, 2)}, // V_tb
4496 {ParameterType::SM, "EW_SCALE", 1}
4497 },
4498 compute_LO,
4500 };
4501}
4502
4504
4505 double mu_W = src.get_val(ParameterType::WILSON, "EW_SCALE", 1);
4506 double M_H=src.get_val(ParameterType::BSM, "MASS", 37);
4507 double M_W=src.get_val(ParameterType::SM, "MASS", 24);
4508 double M_H_pow_2 = pow(M_H,2.);
4509 double M_W_pow_2 = pow(M_W,2.);
4510 std::array<std::array<scalar_t, 3>, 3> V_CKM {};
4511 double m_q = src.get_val(ParameterType::SM, "MASS", 3);
4512
4513 double m_b= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
4514 double g_2=src.get_val(ParameterType::SM, "GAUGE", 2);
4515 double tbeta = src.get_val(ParameterType::BSM, "HMIX", 2);
4516 double m_u[4],m_u_pow_2[4];
4517
4518 for (int i = 0; i<3; ++i) {
4519 for (int j = 0; j<3; j++) {
4520 V_CKM[i][j] = src.get_val(ParameterType::SM, "VCKM", LhaID(i, j));
4521 }
4522 }
4523 m_u[1]= src.get_val(ParameterType::SM, "MASS", 2);
4524 m_u[2]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 4);
4525 m_u[3]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 6);
4526
4527
4528 for(int i =0;i<3;++i) {
4529 m_u_pow_2[i]=pow(m_u[i],2.);
4530 }
4531
4532
4533 scalar_t Cp3_chargedhiggs=0.;
4534
4535 double D0h,D0h_c,D2h,D2h_c;
4536 scalar_t CKM_product;
4537
4538
4539 for(int i = 0; i<3; i++) for(int j=1; j<3; j++) {
4540 D0h = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
4541 D0h_c = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
4542 D2h = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
4543 D2h_c = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
4544
4545 CKM_product = V_CKM[i][3]*V_CKM[j][3]*conj(V_CKM[i][1])*conj(V_CKM[j][1]); /* NM: added 1eration dependence, V_CKM[ie][2] -> V_CKM[ie][1] */
4546
4547 Cp3_chargedhiggs += 0.;
4548 }
4549
4550 //gluino ->
4551
4552
4553 double M_D[6],M_D_pow_2[6],dm[6];
4554 scalar_t Z_D[6][6];
4555 double Mg=src.get_val(ParameterType::BSM, "MASS", 1000021);
4556 double Mg_pow_2 = pow(Mg,2);
4557 // double g_3=sqrt(4.*PI*alphas_running(mu_t,param->mass_top_pole,param->mass_b,param)); /* NM: compute from alphas instead of using g3 from SLHA file */
4558 double g_3= sqrt(4.*PI*QCDHelper::alpha_s(mu_W)); //TODO : check pole or running
4559 M_D[0]=src.get_val(ParameterType::BSM, "MASS", 1000001);
4560 M_D[1]=src.get_val(ParameterType::BSM, "MASS", 1000003);
4561 M_D[2]=src.get_val(ParameterType::BSM, "MASS", 1000005);
4562 M_D[3]=src.get_val(ParameterType::BSM, "MASS", 2000001);
4563 M_D[4]=src.get_val(ParameterType::BSM, "MASS", 2000003);
4564 M_D[5]=src.get_val(ParameterType::BSM, "MASS", 2000005);
4565
4566 for(int i = 0; i<6; ++i) {
4567 for(int j = 0; j<6; ++j) {
4568 Z_D[i][j]= src.get_val(ParameterType::BSM, "DSQMIX", LhaID(j+1, i+1)); //TODO: deal with this group
4569 }
4570 } // inverse matrix, because in SLHA2 the second index denotes quark flavour (dl,sl,bl,dr,sr,br)
4571 for(int i = 0; i<6; ++i) {
4572 M_D_pow_2[i]=pow(M_D[i],2);
4573 }
4574
4575 scalar_t Cp3_gluino=0.;
4576 double D2g,D0g;
4577
4578 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie] and Z_D[5][ie] -> Z_D[1+3][ie] */
4579
4580 for(int i =0; i<6; ++i) {
4581 for(int j = 0; j<6; ++j) {
4582 D2g = D2p(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
4583 D0g = D0(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
4584
4585 Cp3_gluino += -D0g*pow(Mg, 2)*Z_D[5][i]*Z_D[5][j]*pow(g_3,4.)*conj(Z_D[1][i])*conj(Z_D[1][j])/(96.*pow(PI, 2));
4586 }
4587 }
4588
4589
4590 //chargino ->
4591
4592
4593 double M_ch[2],M_ch_pow_2[2],M_U[6],M_U_pow_2[6];
4594 scalar_t Z_p[2][2],Z_m[2][2],Z_U[6][6];
4595 scalar_t Yd[3],Yu[3];
4596 double sw=sin(atan(src.get_val(ParameterType::SM, "GAUGE", 2)/src.get_val(ParameterType::SM, "GAUGE", 2)));
4597 double Q_e = (src.get_val(ParameterType::SM, "GAUGE", 2))*sw;
4598 double swi=1./sw;
4599
4600 M_ch[0]=src.get_val(ParameterType::BSM, "MASS", 1000024);
4601 M_ch[1]=src.get_val(ParameterType::BSM, "MASS", 1000037);
4602
4603 M_U[0]=src.get_val(ParameterType::BSM, "MASS", 1000002);
4604 M_U[1]=src.get_val(ParameterType::BSM, "MASS", 1000004);
4605 M_U[2]=src.get_val(ParameterType::BSM, "MASS", 1000006);
4606 M_U[3]=src.get_val(ParameterType::BSM, "MASS", 2000002);
4607 M_U[4]=src.get_val(ParameterType::BSM, "MASS", 2000004);
4608 M_U[5]=src.get_val(ParameterType::BSM, "MASS", 2000006);
4609
4610 for(int i=0; i<2; ++i){
4611 M_ch_pow_2[i]=pow(M_ch[i],2);
4612 }
4613 for(int i=0; i<6; ++i){
4614 M_U_pow_2[i]=pow(M_U[i],2);
4615 }
4616 for(int i=0; i <2; ++i) {
4617 for(int j=0; j<2; ++j) {
4618 Z_p[i][j]=conj(src.get_val(ParameterType::BSM, "VMIX", LhaID(j+1, i+1)));
4619 }
4620 } /* NM: conversion from SLHA2 convention */
4621 for(int i=2; i<2; ++i) {
4622 for(int j=0; j<2; ++j) {
4623 Z_m[i][j]=conj(src.get_val(ParameterType::BSM, "UMIX", LhaID(j+1, i+1)));
4624 }
4625 } /* NM: conversion from SLHA2 convention */
4626 for(int i=0; i<6; ++i) {
4627 for(int j=0; j<6; ++j) {
4628 Z_U[i][j]=conj(src.get_val(ParameterType::BSM, "USQMIX", LhaID(j+1, i+1))); //TODO: deal with this group
4629 }
4630 } /* NM: conversion from SLHA2 convention */
4631
4632 double v1,v2,beta;
4633 beta = atan(src.get_val(ParameterType::BSM, "EXTPAR", 25));
4634 v1 = 2.*(src.get_val(ParameterType::SM, "MASS", 24))*cos(beta)/src.get_val(ParameterType::SM, "GAUGE", 2);
4635 v2 = v1*tan(beta);
4636
4637 double mc = src.get_val(ParameterType::SM, "MASS", 4);
4638
4639 double m_b=QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR); /* NM: running mass */
4640 double m_t=QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR); /* NM: running mass */
4641
4642 double common = sqrt(2.)/v2;
4643 Yu[0] = common*src.get_val(ParameterType::SM, "MASS", 2);
4644 Yu[1] = common*QCDHelper::msbar_mass(4, mu_W, MassType::POLE); //TODO : check this to be sure
4645
4646 Yu[2] = common*m_t; /* NM: running mass */
4647 double otherc = sqrt(2.)/v1;
4648 Yd[0] = otherc*src.get_val(ParameterType::SM, "MASS", 1);
4649 Yd[1] = otherc*src.get_val(ParameterType::SM, "MASS", 3);
4650 Yd[2] = otherc*m_b; /* NM: running mass */
4651
4652
4653 scalar_t Cp3_chargino=0.;
4654
4655 double D0ch,D2ch;
4656
4657 /* NM: added 1eration dependence, Yd[2] -> Yd[1] and V_CKM[Ke][2] -> V_CKM[Ke][1] */
4658
4659 for(int i = 0; i<6; ++i) {
4660 for(int j=0; j<6; ++j) {
4661 for(int a =0; a<2; ++a) {
4662 for (int b=0; b<2; ++b) {
4663 D0ch = D0(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
4664 D2ch = D2p(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
4665 for(int k=0; k<3; ++k) {
4666
4667 Cp3_chargino += -D0ch*M_ch[a]*M_ch[b]*pow(V_CKM[k][2], 2)*pow(Yd[2], 2)*(-Q_e*Z_U[k][i]*conj(Z_p[0][b])*swi + Z_U[k+3][i]*conj(Yu[k])*conj(Z_p[1][b]))*(-Q_e*Z_U[k][j]*conj(Z_p[0][a])*swi + Z_U[k+3][j]*conj(Yu[k])*conj(Z_p[1][a]))*pow(conj(V_CKM[k][1]), 2)*conj(Z_m[1][a])*conj(Z_m[1][b])*conj(Z_U[k][i])*conj(Z_U[k][j])/(32.0*pow(PI, 2));
4668 }
4669 }
4670 }
4671 }
4672 }
4673
4674
4675
4676 //neutralino ->
4677
4678
4679 double M_ch0[4],M_ch0_pow_2[4],M_D[6],M_D_pow_2[6];
4680 scalar_t Z_N[4][4];
4681
4682 double cw=cos(atan(src.get_val(ParameterType::SM, "GAUGE", 1)/src.get_val(ParameterType::SM, "GAUGE", 2)));
4683
4684 double otherc = sqrt(2.)/v1;
4685
4686 std::array<double,4> temp_ch0 = {src.get_val(ParameterType::BSM, "MASS", 1000022),
4687 src.get_val(ParameterType::BSM, "MASS", 1000023),
4688 src.get_val(ParameterType::BSM, "MASS", 1000025),
4689 src.get_val(ParameterType::BSM, "MASS", 1000035)};
4690
4691 M_ch0[0]=fabs(temp_ch0[0]);
4692 M_ch0[1]=fabs(temp_ch0[1]);
4693 M_ch0[2]=fabs(temp_ch0[2]);
4694 M_ch0[3]=fabs(temp_ch0[3]);
4695
4696 for(int i=0; i<4; ++i){
4697 M_ch0_pow_2[i]=pow(M_ch0[i],2);
4698 }
4699
4700
4701 for(int i=0; i<6; ++i) {
4702 M_D_pow_2[i]=pow(M_D[i],2);
4703 }
4704
4705
4706
4707 for(int i=0; i<4; ++i) {
4708 for(int j=0; j<4; ++j) {
4709 Z_N[i][j] = conj(src.get_val(ParameterType::BSM, "NMIX", LhaID(i+1, j+1))); //TODO : i,j or j,i like the others ?
4710 }
4711 }
4712
4713
4714 for(int i=0; i<4; ++i){
4715 if(temp_ch0[i]<0.) {
4716 for(int j=0; j<4; ++j) {
4717 Z_N[i][j]*=I;
4718 }
4719 }
4720 } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
4721
4722 scalar_t Cp3_neutralino=0.;
4723 double D0ne,D2ne;
4724
4725 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie], Z_D[5][ie] -> Z_D[1+3][ie] and Yd[2] -> Yd[1] */
4726
4727 for(int i=0; i<6; ++i) {
4728 for(int j=0; j<6; ++j) {
4729 for(int a=0; a<4; ++a) {
4730 for (int b=0; b<4; ++b) {
4731 D0ne = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
4732 D2ne = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
4733
4734 Cp3_neutralino += -D0ne*M_ch0[a]*M_ch0[b]*(-(-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][j]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 - conj(Z_N[1][b])*cw)*conj(Z_D[1][j])/(2.0*cw*sw) +
4735 conj(Yd[1])*conj(Z_D[1+3][j])*conj(Z_N[2][b])) + (-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][b])/(3.0*cw) + Yd[2]*Z_D[2][j]*conj(Z_N[2][b]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
4736 conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a])))*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) +
4737 Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 - conj(Z_N[1][b])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][b]))/(32.0*pow(PI, 2));
4738
4739 }
4740 }
4741 }
4742 }
4743
4744
4745
4746 //mixed ->
4747
4748
4749 scalar_t Cp3_mixed=0.;
4750
4751
4752 double M_g=src.get_val(ParameterType::BSM, "MASS", 1000021);
4753 double M_g_pow_2 = pow(M_g,2.);
4754
4755 // } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
4756
4757 double D0mix,D2mix;
4758
4759 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie], Z_D[5][ie] -> Z_D[1+3][ie] and Yd[2] -> Yd[1] */
4760
4761 for(int i=0; i<6; ++i) {
4762 for(int j=0; j<6; ++j) {
4763 for(int a=0; a<4; ++a) {
4764 D0mix = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
4765 D2mix = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
4766
4767 Cp3_mixed += D0mix*M_ch0[a]*M_g*Z_D[5][i]*pow(g_3, 2)*pow(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) +
4768 conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a]), 2)*conj(Z_D[5][j])/(48.0*pow(PI, 2)) - D0mix*M_ch0[a]*M_g*Z_D[5][j]*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) +
4769 Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) +
4770 conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a]))*conj(Z_D[1][i])/(48.0*pow(PI, 2)) + D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) +
4771 Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][j]*conj(Z_N[2][a]))*conj(Z_D[1][i])*conj(Z_D[1][j])/(48.0*pow(PI, 2));
4772 }
4773 }
4774 }
4775
4776 //higgs PInguin ->
4777
4778
4779}
4780
4781//B4
4782
4785 {
4786 {ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, //mass_c_muW_mcrun
4787 {ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, //mass_b_muW_mbrun
4788 {ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, //mass_t_muW_mbrun
4789 {ParameterType::SM, "MASS", 24},
4790 {ParameterType::BSM, "MASS", 37}, // M_H
4791 {ParameterType::SM, "MASS", 3}, //m_s
4792 {ParameterType::SM, "MASS", 2}, //m_u
4793 {ParameterType::BSM, "MASS", 1000001},
4794 {ParameterType::BSM, "MASS", 1000002},
4795 {ParameterType::BSM, "MASS", 1000003},
4796 {ParameterType::BSM, "MASS", 1000004},
4797 {ParameterType::BSM, "MASS", 1000005},
4798 {ParameterType::BSM, "MASS", 1000006},
4799 {ParameterType::BSM, "MASS", 2000001},
4800 {ParameterType::BSM, "MASS", 2000002},
4801 {ParameterType::BSM, "MASS", 2000003},
4802 {ParameterType::BSM, "MASS", 2000004},
4803 {ParameterType::BSM, "MASS", 2000005},
4804 {ParameterType::BSM, "MASS", 2000006},
4805 {ParameterType::BSM, "MASS", 1000024},
4806 {ParameterType::BSM, "MASS", 1000037},
4807 {ParameterType::BSM, "MASS", 1000022},
4808 {ParameterType::BSM, "MASS", 1000023},
4809 {ParameterType::BSM, "MASS", 1000025},
4810 {ParameterType::BSM, "MASS", 1000035},
4811 {ParameterType::BSM, "MASS", 36},
4812 {ParameterType::BSM, "MSOFT", 2},
4813 {ParameterType::BSM, "HMIX", 1},
4814 {ParameterType::BSM, "AU", LhaID(3,3)},
4815 {ParameterType::SM, "GAUGE", 1}, //gp
4816 {ParameterType::SM, "GAUGE", 2}, //g_2
4817 {ParameterType::SM, "VCKM", LhaID(0, 0)}, // V_ud
4818 {ParameterType::SM, "VCKM", LhaID(0, 1)}, // V_us
4819 {ParameterType::SM, "VCKM", LhaID(0, 2)}, // V_ub
4820 {ParameterType::SM, "VCKM", LhaID(1, 0)}, // V_cd
4821 {ParameterType::SM, "VCKM", LhaID(1, 1)}, // V_cs
4822 {ParameterType::SM, "VCKM", LhaID(1, 2)}, // V_cb
4823 {ParameterType::SM, "VCKM", LhaID(2, 0)}, // V_td
4824 {ParameterType::SM, "VCKM", LhaID(2, 1)}, // V_ts
4825 {ParameterType::SM, "VCKM", LhaID(2, 2)}, // V_tb
4826 {ParameterType::SM, "EW_SCALE", 1}
4827 },
4828 compute_LO,
4830 };
4831}
4832
4834
4835 double mu_W = src.get_val(ParameterType::WILSON, "EW_SCALE", 1);
4836 double M_H=src.get_val(ParameterType::BSM, "MASS", 37);
4837 double M_W=src.get_val(ParameterType::SM, "MASS", 24);
4838 double M_H_pow_2 = pow(M_H,2.);
4839 double M_W_pow_2 = pow(M_W,2.);
4840 std::array<std::array<scalar_t, 3>, 3> V_CKM {};
4841 double m_q = src.get_val(ParameterType::SM, "MASS", 3);
4842
4843 double m_b= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
4844 double g_2=src.get_val(ParameterType::SM, "GAUGE", 2);
4845 double tbeta = src.get_val(ParameterType::BSM, "HMIX", 2);
4846 double m_u[4],m_u_pow_2[4];
4847
4848 for (int i = 0; i<3; ++i) {
4849 for (int j = 0; j<3; j++) {
4850 V_CKM[i][j] = src.get_val(ParameterType::SM, "VCKM", LhaID(i, j));
4851 }
4852 }
4853 m_u[1]= src.get_val(ParameterType::SM, "MASS", 2);
4854 m_u[2]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 4);
4855 m_u[3]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 6);
4856
4857
4858 for(int i =0;i<3;++i) {
4859 m_u_pow_2[i]=pow(m_u[i],2.);
4860 }
4861
4862 scalar_t C4_chargedhiggs=0.;
4863
4864
4865 double D0h,D0h_c,D2h,D2h_c;
4866 scalar_t CKM_product;
4867
4868
4869 for(int i = 0; i<3; i++) for(int j=1; j<3; j++) {
4870 D0h = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
4871 D0h_c = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
4872 D2h = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
4873 D2h_c = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
4874
4875 CKM_product = V_CKM[i][3]*V_CKM[j][3]*conj(V_CKM[i][1])*conj(V_CKM[j][1]); /* NM: added 1eration dependence, V_CKM[ie][2] -> V_CKM[ie][1] */
4876
4877 C4_chargedhiggs += pow(g_2,4.)*CKM_product*(m_b*m_q*D2h*pow(tbeta,2.)/pow(M_W,2.) - m_b*m_q*pow(m_u[i],2)*pow(m_u[j],2)*(D0h_c + D0h*(pow(tbeta,2.) + pow(tbeta,-2.)))/(4*pow(M_W,4.)))/(16.*pow(PI,2.));
4878
4879 }
4880
4881 //gluino ->
4882
4883
4884 double M_D[6],M_D_pow_2[6],dm[6];
4885 scalar_t Z_D[6][6];
4886 double Mg=src.get_val(ParameterType::BSM, "MASS", 1000021);
4887 double Mg_pow_2 = pow(Mg,2);
4888 // double g_3=sqrt(4.*PI*alphas_running(mu_t,param->mass_top_pole,param->mass_b,param)); /* NM: compute from alphas instead of using g3 from SLHA file */
4889 double g_3= sqrt(4.*PI*QCDHelper::alpha_s(mu_W)); //TODO : check pole or running
4890 M_D[0]=src.get_val(ParameterType::BSM, "MASS", 1000001);
4891 M_D[1]=src.get_val(ParameterType::BSM, "MASS", 1000003);
4892 M_D[2]=src.get_val(ParameterType::BSM, "MASS", 1000005);
4893 M_D[3]=src.get_val(ParameterType::BSM, "MASS", 2000001);
4894 M_D[4]=src.get_val(ParameterType::BSM, "MASS", 2000003);
4895 M_D[5]=src.get_val(ParameterType::BSM, "MASS", 2000005);
4896
4897 for(int i = 0; i<6; ++i) {
4898 for(int j = 0; j<6; ++j) {
4899 Z_D[i][j]= src.get_val(ParameterType::BSM, "DSQMIX", LhaID(j+1, i+1)); //TODO: deal with this group
4900 }
4901 } // inverse matrix, because in SLHA2 the second index denotes quark flavour (dl,sl,bl,dr,sr,br)
4902 for(int i = 0; i<6; ++i) {
4903 M_D_pow_2[i]=pow(M_D[i],2);
4904 }
4905
4906 scalar_t C4_gluino=0.;
4907
4908 double D2g,D0g;
4909
4910 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie] and Z_D[5][ie] -> Z_D[1+3][ie] */
4911
4912 for(int i =0; i<6; ++i) {
4913 for(int j = 0; j<6; ++j) {
4914 D2g = D2p(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
4915 D0g = D0(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
4916
4917 C4_gluino += -7.*D0g*pow(Mg, 2)*Z_D[2][i]*Z_D[5][j]*pow(g_3,4.)*conj(Z_D[1][i])*conj(Z_D[1+3][j])/(48.*pow(PI, 2)) + D2g*pow(g_3,4.)*(6.*Z_D[2][i]*Z_D[5][j]*conj(Z_D[1][i])*conj(Z_D[1+3][j]) + 11.*Z_D[2][i]*Z_D[5][j]*conj(Z_D[1][j])*conj(Z_D[1+3][i]))/(72.*pow(PI, 2));
4918
4919 }
4920 }
4921
4922
4923 //chargino ->
4924
4925
4926 double M_ch[2],M_ch_pow_2[2],M_U[6],M_U_pow_2[6];
4927 scalar_t Z_p[2][2],Z_m[2][2],Z_U[6][6];
4928 scalar_t Yd[3],Yu[3];
4929 double sw=sin(atan(src.get_val(ParameterType::SM, "GAUGE", 2)/src.get_val(ParameterType::SM, "GAUGE", 2)));
4930 double Q_e = (src.get_val(ParameterType::SM, "GAUGE", 2))*sw;
4931 double swi=1./sw;
4932
4933 M_ch[0]=src.get_val(ParameterType::BSM, "MASS", 1000024);
4934 M_ch[1]=src.get_val(ParameterType::BSM, "MASS", 1000037);
4935
4936 M_U[0]=src.get_val(ParameterType::BSM, "MASS", 1000002);
4937 M_U[1]=src.get_val(ParameterType::BSM, "MASS", 1000004);
4938 M_U[2]=src.get_val(ParameterType::BSM, "MASS", 1000006);
4939 M_U[3]=src.get_val(ParameterType::BSM, "MASS", 2000002);
4940 M_U[4]=src.get_val(ParameterType::BSM, "MASS", 2000004);
4941 M_U[5]=src.get_val(ParameterType::BSM, "MASS", 2000006);
4942
4943 for(int i=0; i<2; ++i){
4944 M_ch_pow_2[i]=pow(M_ch[i],2);
4945 }
4946 for(int i=0; i<6; ++i){
4947 M_U_pow_2[i]=pow(M_U[i],2);
4948 }
4949 for(int i=0; i <2; ++i) {
4950 for(int j=0; j<2; ++j) {
4951 Z_p[i][j]=conj(src.get_val(ParameterType::BSM, "VMIX", LhaID(j+1, i+1)));
4952 }
4953 } /* NM: conversion from SLHA2 convention */
4954 for(int i=2; i<2; ++i) {
4955 for(int j=0; j<2; ++j) {
4956 Z_m[i][j]=conj(src.get_val(ParameterType::BSM, "UMIX", LhaID(j+1, i+1)));
4957 }
4958 } /* NM: conversion from SLHA2 convention */
4959 for(int i=0; i<6; ++i) {
4960 for(int j=0; j<6; ++j) {
4961 Z_U[i][j]=conj(src.get_val(ParameterType::BSM, "USQMIX", LhaID(j+1, i+1))); //TODO: deal with this group
4962 }
4963 } /* NM: conversion from SLHA2 convention */
4964
4965 double v1,v2,beta;
4966 beta = atan(src.get_val(ParameterType::BSM, "EXTPAR", 25));
4967 v1 = 2.*(src.get_val(ParameterType::SM, "MASS", 24))*cos(beta)/src.get_val(ParameterType::SM, "GAUGE", 2);
4968 v2 = v1*tan(beta);
4969
4970 double mc = src.get_val(ParameterType::SM, "MASS", 4);
4971
4972 double m_b=QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR); /* NM: running mass */
4973 double m_t=QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR); /* NM: running mass */
4974
4975 double common = sqrt(2.)/v2;
4976 Yu[0] = common*src.get_val(ParameterType::SM, "MASS", 2);
4977 Yu[1] = common*QCDHelper::msbar_mass(4, mu_W, MassType::POLE); //TODO : check this to be sure
4978
4979 Yu[2] = common*m_t; /* NM: running mass */
4980 double otherc = sqrt(2.)/v1;
4981 Yd[0] = otherc*src.get_val(ParameterType::SM, "MASS", 1);
4982 Yd[1] = otherc*src.get_val(ParameterType::SM, "MASS", 3);
4983 Yd[2] = otherc*m_b; /* NM: running mass */
4984
4985 scalar_t C4_chargino=0.;
4986
4987
4988 double D0ch,D2ch;
4989
4990 /* NM: added 1eration dependence, Yd[2] -> Yd[1] and V_CKM[Ke][2] -> V_CKM[Ke][1] */
4991
4992 for(int i = 0; i<6; ++i) {
4993 for(int j=0; j<6; ++j) {
4994 for(int a =0; a<2; ++a) {
4995 for (int b=0; b<2; ++b) {
4996 D0ch = D0(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
4997 D2ch = D2p(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
4998 for(int k=0; k<3; ++k) {
4999
5000 C4_chargino += D2ch*pow(V_CKM[k][2], 2)*Yd[2]*Z_m[1][a]*Z_U[k][j]*(-Q_e*Z_p[0][b]*conj(Z_U[k][j])*swi + Yu[k]*Z_p[1][b]*conj(Z_U[k+3][j]))*(-Q_e*Z_U[k][i]*conj(Z_p[0][b])*swi + Z_U[k+3][i]*conj(Yu[k])*conj(Z_p[1][b]))*pow(conj(V_CKM[k][1]), 2)*conj(Yd[1])*conj(Z_m[1][a])*conj(Z_U[k][i])/(8.0*pow(PI, 2));
5001
5002 }
5003 }
5004 }
5005 }
5006 }
5007
5008
5009
5010 //neutralino ->
5011
5012
5013 double M_ch0[4],M_ch0_pow_2[4],M_D[6],M_D_pow_2[6];
5014 scalar_t Z_N[4][4];
5015
5016 double cw=cos(atan(src.get_val(ParameterType::SM, "GAUGE", 1)/src.get_val(ParameterType::SM, "GAUGE", 2)));
5017
5018 double otherc = sqrt(2.)/v1;
5019
5020 std::array<double,4> temp_ch0 = {src.get_val(ParameterType::BSM, "MASS", 1000022),
5021 src.get_val(ParameterType::BSM, "MASS", 1000023),
5022 src.get_val(ParameterType::BSM, "MASS", 1000025),
5023 src.get_val(ParameterType::BSM, "MASS", 1000035)};
5024
5025 M_ch0[0]=fabs(temp_ch0[0]);
5026 M_ch0[1]=fabs(temp_ch0[1]);
5027 M_ch0[2]=fabs(temp_ch0[2]);
5028 M_ch0[3]=fabs(temp_ch0[3]);
5029
5030 for(int i=0; i<4; ++i){
5031 M_ch0_pow_2[i]=pow(M_ch0[i],2);
5032 }
5033
5034
5035 for(int i=0; i<6; ++i) {
5036 M_D_pow_2[i]=pow(M_D[i],2);
5037 }
5038
5039
5040
5041 for(int i=0; i<4; ++i) {
5042 for(int j=0; j<4; ++j) {
5043 Z_N[i][j] = conj(src.get_val(ParameterType::BSM, "NMIX", LhaID(i+1, j+1))); //TODO : i,j or j,i like the others ?
5044 }
5045 }
5046
5047
5048 for(int i=0; i<4; ++i){
5049 if(temp_ch0[i]<0.) {
5050 for(int j=0; j<4; ++j) {
5051 Z_N[i][j]*=I;
5052 }
5053 }
5054 } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
5055
5056 scalar_t C4_neutralino=0.;
5057
5058 double D0ne,D2ne;
5059
5060 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie], Z_D[5][ie] -> Z_D[1+3][ie] and Yd[2] -> Yd[1] */
5061
5062 for(int i=0; i<6; ++i) {
5063 for(int j=0; j<6; ++j) {
5064 for(int a=0; a<4; ++a) {
5065 for (int b=0; b<4; ++b) {
5066 D0ne = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
5067 D2ne = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
5068
5069 C4_neutralino += D2ne*((-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][j])/(3.0*cw) + Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][j]))*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][b]*sw/3.0 - Z_N[1][b]*cw)/(2.0*cw*sw) +
5070 Yd[2]*Z_D[5][j]*Z_N[2][b]) + (-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[1+3][j])/(3.0*cw) + Z_N[2][b]*conj(Yd[1])*conj(Z_D[1][j]))*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) +
5071 Yd[2]*Z_D[5][j]*Z_N[2][a]))*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 - conj(Z_N[1][b])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) +
5072 conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][b]))/(8.0*pow(PI, 2));
5073
5074
5075 }
5076 }
5077 }
5078 }
5079
5080
5081
5082 //mixed ->
5083
5084
5085 scalar_t C4_mixed=0.;
5086
5087
5088
5089 double M_g=src.get_val(ParameterType::BSM, "MASS", 1000021);
5090 double M_g_pow_2 = pow(M_g,2.);
5091
5092 // } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
5093
5094 double D0mix,D2mix;
5095
5096 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie], Z_D[5][ie] -> Z_D[1+3][ie] and Yd[2] -> Yd[1] */
5097
5098 for(int i=0; i<6; ++i) {
5099 for(int j=0; j<6; ++j) {
5100 for(int a=0; a<4; ++a) {
5101 D0mix = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
5102 D2mix = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
5103
5104 C4_mixed += D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(Z_D[2][j]*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
5105 conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a]))*conj(Z_D[1+3][i]) + Z_D[5][j]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][j])/(3.0*cw) +
5106 Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][j]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*conj(Z_D[1][i]))/(16.0*pow(PI, 2)) -
5107 D2mix*pow(g_3, 2)*(-3.0*Z_D[2][j]*Z_D[5][i]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][i])/(3.0*cw) + Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][i]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
5108 conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a])) - 3.0*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[5][i])/(3.0*cw) +
5109 Z_N[2][a]*conj(Yd[2])*conj(Z_D[2][i]))*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][j]*Z_N[2][a])*conj(Z_D[1][j])*conj(Z_D[1+3][i]))/(24.0*pow(PI, 2)) -
5110 D2mix*pow(g_3, 2)*(-Z_D[2][j]*Z_D[5][i]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][j])/(3.0*cw) + Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][j]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
5111 conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a])) - (-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][a])/(3.0*cw) +
5112 Yd[2]*Z_D[2][j]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*conj(Z_D[1][j])*conj(Z_D[1+3][i]))/(24.0*pow(PI, 2)) -
5113 D2mix*pow(g_3, 2)*(Z_D[2][j]*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][j])/(3.0*cw) +
5114 Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][j]))*conj(Z_D[1][i]) + Z_D[5][j]*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) +
5115 Yd[2]*Z_D[5][i]*Z_N[2][a])*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 - conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a]))*conj(Z_D[1+3][i]))/(24.0*pow(PI, 2));
5116
5117 }
5118 }
5119 }
5120
5121 //higgs PInguin ->
5122
5123
5124
5125
5126 scalar_t delta_d[6][6],delta_d_LL[3][3],delta_d_LR[3][3],delta_d_RL[3][3],delta_d_RR[3][3];
5127 scalar_t delta_u[6][6],delta_u_LL[3][3],delta_u_LR[3][3],delta_u_RL[3][3],delta_u_RR[3][3];
5128
5129 double m_av = (M_U[0]+M_U[1]+M_U[2]+M_U[3]+M_U[4]+M_U[5]+M_D[0]+M_D[1]+M_D[2]+M_D[3]+M_D[4]+M_D[5])/12.;
5130
5131 getDelta(delta_d,Z_D,M_D,m_av,delta_d_LL,delta_d_LR,delta_d_RL,delta_d_RR);
5132 getDelta(delta_u,Z_U,M_U,m_av,delta_u_LL,delta_u_LR,delta_u_RL,delta_u_RR);
5133
5134 double M_A=src.get_val(ParameterType::BSM, "MASS", 36);
5135 double A_t=src.get_val(ParameterType::BSM, "AU", LhaID(3,3)); //A_t
5136 double mu = src.get_val(ParameterType::BSM, "HMIX", 1);
5137 scalar_t M_2 = src.get_val(ParameterType::BSM, "MSOFT", 2);
5138 double x_mu = pow(abs(mu),2)/pow(m_av,2);
5139 scalar_t x_2 = pow(abs(M_2),2)/pow(m_av,2);
5140 double x_g = pow(M_g,2)/pow(m_av,2);
5141 double alpha_s = pow(g_3,2.)/(4.*PI) ;
5142 double alpha_2 = pow(g_2,2.)/(4.*PI);
5143 double eps=2*alpha_s*mu*M_g*f(x_g)/(3.*PI*pow(m_av,2));
5144
5145
5146 scalar_t V_tb = V_CKM[2][2];
5147 scalar_t V_tq = V_CKM[2][1];
5148 scalar_t a1 = alpha_s*alpha_2*pow(m_b,2)*pow(tbeta,4)*pow(abs(mu),2)/(8*PI*pow(M_W,2)*pow(M_A,2)*pow(m_av,4)*pow((1+eps*tbeta),4));
5149 scalar_t a2 = -alpha_s*pow(M_g,2)*delta_d_LL[2][1]*delta_d_RR[2][1]*pow(h1(x_g),2);
5150 scalar_t a3 = alpha_2*pow(m_t,2)*A_t*M_g*h1(x_g)*h3(x_mu)*delta_d_RR[2][1]*V_tb*conj(V_tq)/(pow(M_W,2));
5151 scalar_t a4 = alpha_2*M_2*M_g*delta_u_LL[2][1]*delta_d_RR[2][1]*h1(x_g)*h4(x_2,x_g);
5152
5153 scalar_t C4_higgspenguin = a1*(a2+a3+a4);
5154
5155}
5156
5157//BS_5
5158
5161 {
5162 {ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, //mass_c_muW_mcrun
5163 {ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, //mass_b_muW_mbrun
5164 {ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, //mass_t_muW_mbrun
5165 {ParameterType::SM, "MASS", 24},
5166 {ParameterType::BSM, "MASS", 37}, // M_H
5167 {ParameterType::SM, "MASS", 3}, //m_s
5168 {ParameterType::SM, "MASS", 2}, //m_u
5169 {ParameterType::BSM, "MASS", 1000001},
5170 {ParameterType::BSM, "MASS", 1000002},
5171 {ParameterType::BSM, "MASS", 1000003},
5172 {ParameterType::BSM, "MASS", 1000004},
5173 {ParameterType::BSM, "MASS", 1000005},
5174 {ParameterType::BSM, "MASS", 1000006},
5175 {ParameterType::BSM, "MASS", 2000001},
5176 {ParameterType::BSM, "MASS", 2000002},
5177 {ParameterType::BSM, "MASS", 2000003},
5178 {ParameterType::BSM, "MASS", 2000004},
5179 {ParameterType::BSM, "MASS", 2000005},
5180 {ParameterType::BSM, "MASS", 2000006},
5181 {ParameterType::BSM, "MASS", 1000024},
5182 {ParameterType::BSM, "MASS", 1000037},
5183 {ParameterType::BSM, "MASS", 1000022},
5184 {ParameterType::BSM, "MASS", 1000023},
5185 {ParameterType::BSM, "MASS", 1000025},
5186 {ParameterType::BSM, "MASS", 1000035},
5187 {ParameterType::BSM, "MASS", 36},
5188 {ParameterType::BSM, "MSOFT", 2},
5189 {ParameterType::BSM, "HMIX", 1},
5190 {ParameterType::BSM, "AU", LhaID(3,3)},
5191 {ParameterType::SM, "GAUGE", 1}, //gp
5192 {ParameterType::SM, "GAUGE", 2}, //g_2
5193 {ParameterType::SM, "VCKM", LhaID(0, 0)}, // V_ud
5194 {ParameterType::SM, "VCKM", LhaID(0, 1)}, // V_us
5195 {ParameterType::SM, "VCKM", LhaID(0, 2)}, // V_ub
5196 {ParameterType::SM, "VCKM", LhaID(1, 0)}, // V_cd
5197 {ParameterType::SM, "VCKM", LhaID(1, 1)}, // V_cs
5198 {ParameterType::SM, "VCKM", LhaID(1, 2)}, // V_cb
5199 {ParameterType::SM, "VCKM", LhaID(2, 0)}, // V_td
5200 {ParameterType::SM, "VCKM", LhaID(2, 1)}, // V_ts
5201 {ParameterType::SM, "VCKM", LhaID(2, 2)}, // V_tb
5202 {ParameterType::SM, "EW_SCALE", 1}
5203 },
5204 compute_LO,
5206 };
5207}
5208
5210
5211 double mu_W = src.get_val(ParameterType::WILSON, "EW_SCALE", 1);
5212 double M_H=src.get_val(ParameterType::BSM, "MASS", 37);
5213 double M_W=src.get_val(ParameterType::SM, "MASS", 24);
5214 double M_H_pow_2 = pow(M_H,2.);
5215 double M_W_pow_2 = pow(M_W,2.);
5216 std::array<std::array<scalar_t, 3>, 3> V_CKM {};
5217 double m_q = src.get_val(ParameterType::SM, "MASS", 3);
5218
5219 double m_b= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
5220 double g_2=src.get_val(ParameterType::SM, "GAUGE", 2);
5221 double tbeta = src.get_val(ParameterType::BSM, "HMIX", 2);
5222 double m_u[4],m_u_pow_2[4];
5223
5224 for (int i = 0; i<3; ++i) {
5225 for (int j = 0; j<3; j++) {
5226 V_CKM[i][j] = src.get_val(ParameterType::SM, "VCKM", LhaID(i, j));
5227 }
5228 }
5229 m_u[1]= src.get_val(ParameterType::SM, "MASS", 2);
5230 m_u[2]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 4);
5231 m_u[3]= src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", 6);
5232
5233
5234 for(int i =0;i<3;++i) {
5235 m_u_pow_2[i]=pow(m_u[i],2.);
5236 }
5237
5238
5239 scalar_t C5_chargedhiggs=0.;
5240
5241
5242 double D0h,D0h_c,D2h,D2h_c;
5243 scalar_t CKM_product;
5244
5245
5246 for(int i = 0; i<3; i++) for(int j=1; j<3; j++) {
5247 D0h = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
5248 D0h_c = D0(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
5249 D2h = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_W_pow_2);
5250 D2h_c = D2p(m_u_pow_2[i],m_u_pow_2[j],M_H_pow_2,M_H_pow_2);
5251
5252 CKM_product = V_CKM[i][3]*V_CKM[j][3]*conj(V_CKM[i][1])*conj(V_CKM[j][1]); /* NM: added 1eration dependence, V_CKM[ie][2] -> V_CKM[ie][1] */
5253
5254 C5_chargedhiggs += pow(g_2,4.)*m_b*m_q*CKM_product*pow(m_u[i],2.)*(D2h_c-2.*D2h)/(32.*pow(PI,2.)*pow(M_W,4.));
5255
5256 }
5257
5258 //gluino ->
5259
5260
5261 double M_D[6],M_D_pow_2[6],dm[6];
5262 scalar_t Z_D[6][6];
5263 double Mg=src.get_val(ParameterType::BSM, "MASS", 1000021);
5264 double Mg_pow_2 = pow(Mg,2);
5265 // double g_3=sqrt(4.*PI*alphas_running(mu_t,param->mass_top_pole,param->mass_b,param)); /* NM: compute from alphas instead of using g3 from SLHA file */
5266 double g_3= sqrt(4.*PI*QCDHelper::alpha_s(mu_W)); //TODO : check pole or running
5267 M_D[0]=src.get_val(ParameterType::BSM, "MASS", 1000001);
5268 M_D[1]=src.get_val(ParameterType::BSM, "MASS", 1000003);
5269 M_D[2]=src.get_val(ParameterType::BSM, "MASS", 1000005);
5270 M_D[3]=src.get_val(ParameterType::BSM, "MASS", 2000001);
5271 M_D[4]=src.get_val(ParameterType::BSM, "MASS", 2000003);
5272 M_D[5]=src.get_val(ParameterType::BSM, "MASS", 2000005);
5273
5274 for(int i = 0; i<6; ++i) {
5275 for(int j = 0; j<6; ++j) {
5276 Z_D[i][j]= src.get_val(ParameterType::BSM, "DSQMIX", LhaID(j+1, i+1)); //TODO: deal with this group
5277 }
5278 } // inverse matrix, because in SLHA2 the second index denotes quark flavour (dl,sl,bl,dr,sr,br)
5279 for(int i = 0; i<6; ++i) {
5280 M_D_pow_2[i]=pow(M_D[i],2);
5281 }
5282
5283
5284 scalar_t C5_gluino=0.;
5285
5286 double D2g,D0g;
5287
5288 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie] and Z_D[5][ie] -> Z_D[1+3][ie] */
5289
5290 for(int i =0; i<6; ++i) {
5291 for(int j = 0; j<6; ++j) {
5292 D2g = D2p(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
5293 D0g = D0(M_D_pow_2[i],M_D_pow_2[j],Mg_pow_2,Mg_pow_2);
5294
5295 C5_gluino += -D0g*pow(Mg, 2)*Z_D[2][i]*Z_D[5][j]*pow(g_3,4.)*conj(Z_D[1][i])*conj(Z_D[1+3][j])/(144.*pow(PI, 2)) + 5.*D2g*pow(g_3,4.)*(-2.*Z_D[2][i]*Z_D[5][j]*conj(Z_D[1][i])*conj(Z_D[1+3][j]) + 3.*Z_D[2][i]*Z_D[5][j]*conj(Z_D[1][j])*conj(Z_D[1+3][i]))/(72.*pow(PI, 2));
5296
5297 }
5298 }
5299
5300
5301 //chargino ->
5302
5303
5304 double M_ch[2],M_ch_pow_2[2],M_U[6],M_U_pow_2[6];
5305 scalar_t Z_p[2][2],Z_m[2][2],Z_U[6][6];
5306 scalar_t Yd[3],Yu[3];
5307 double sw=sin(atan(src.get_val(ParameterType::SM, "GAUGE", 2)/src.get_val(ParameterType::SM, "GAUGE", 2)));
5308 double Q_e = (src.get_val(ParameterType::SM, "GAUGE", 2))*sw;
5309 double swi=1./sw;
5310
5311 M_ch[0]=src.get_val(ParameterType::BSM, "MASS", 1000024);
5312 M_ch[1]=src.get_val(ParameterType::BSM, "MASS", 1000037);
5313
5314 M_U[0]=src.get_val(ParameterType::BSM, "MASS", 1000002);
5315 M_U[1]=src.get_val(ParameterType::BSM, "MASS", 1000004);
5316 M_U[2]=src.get_val(ParameterType::BSM, "MASS", 1000006);
5317 M_U[3]=src.get_val(ParameterType::BSM, "MASS", 2000002);
5318 M_U[4]=src.get_val(ParameterType::BSM, "MASS", 2000004);
5319 M_U[5]=src.get_val(ParameterType::BSM, "MASS", 2000006);
5320
5321 for(int i=0; i<2; ++i){
5322 M_ch_pow_2[i]=pow(M_ch[i],2);
5323 }
5324 for(int i=0; i<6; ++i){
5325 M_U_pow_2[i]=pow(M_U[i],2);
5326 }
5327 for(int i=0; i <2; ++i) {
5328 for(int j=0; j<2; ++j) {
5329 Z_p[i][j]=conj(src.get_val(ParameterType::BSM, "VMIX", LhaID(j+1, i+1)));
5330 }
5331 } /* NM: conversion from SLHA2 convention */
5332 for(int i=2; i<2; ++i) {
5333 for(int j=0; j<2; ++j) {
5334 Z_m[i][j]=conj(src.get_val(ParameterType::BSM, "UMIX", LhaID(j+1, i+1)));
5335 }
5336 } /* NM: conversion from SLHA2 convention */
5337 for(int i=0; i<6; ++i) {
5338 for(int j=0; j<6; ++j) {
5339 Z_U[i][j]=conj(src.get_val(ParameterType::BSM, "USQMIX", LhaID(j+1, i+1))); //TODO: deal with this group
5340 }
5341 } /* NM: conversion from SLHA2 convention */
5342
5343 double v1,v2,beta;
5344 beta = atan(src.get_val(ParameterType::BSM, "EXTPAR", 25));
5345 v1 = 2.*(src.get_val(ParameterType::SM, "MASS", 24))*cos(beta)/src.get_val(ParameterType::SM, "GAUGE", 2);
5346 v2 = v1*tan(beta);
5347
5348 double mc = src.get_val(ParameterType::SM, "MASS", 4);
5349
5350 double m_b=QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR); /* NM: running mass */
5351 double m_t=QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR); /* NM: running mass */
5352
5353 double common = sqrt(2.)/v2;
5354 Yu[0] = common*src.get_val(ParameterType::SM, "MASS", 2);
5355 Yu[1] = common*QCDHelper::msbar_mass(4, mu_W, MassType::POLE); //TODO : check this to be sure
5356
5357 Yu[2] = common*m_t; /* NM: running mass */
5358 double otherc = sqrt(2.)/v1;
5359 Yd[0] = otherc*src.get_val(ParameterType::SM, "MASS", 1);
5360 Yd[1] = otherc*src.get_val(ParameterType::SM, "MASS", 3);
5361 Yd[2] = otherc*m_b; /* NM: running mass */
5362
5363
5364 scalar_t C5_chargino=0.;
5365
5366
5367 double D0ch,D2ch;
5368
5369 /* NM: added 1eration dependence, Yd[2] -> Yd[1] and V_CKM[Ke][2] -> V_CKM[Ke][1] */
5370
5371 for(int i = 0; i<6; ++i) {
5372 for(int j=0; j<6; ++j) {
5373 for(int a =0; a<2; ++a) {
5374 for (int b=0; b<2; ++b) {
5375 D0ch = D0(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
5376 D2ch = D2p(M_U_pow_2[i],M_U_pow_2[j],M_ch_pow_2[a],M_ch_pow_2[b]);
5377 for(int k=0; k<3; ++k) {
5378
5379 C5_chargino += -D0ch*M_ch[a]*M_ch[b]*pow(V_CKM[k][2], 2)*Yd[2]*Z_m[1][b]*Z_U[k][i]*(-Q_e*Z_p[0][b]*conj(Z_U[k][j])*swi + Yu[k]*Z_p[1][b]*conj(Z_U[k+3][j]))*(-Q_e*Z_U[k][j]*conj(Z_p[0][a])*swi + Z_U[k+3][j]*conj(Yu[k])*conj(Z_p[1][a]))*pow(conj(V_CKM[k][1]), 2)*conj(Yd[1])*conj(Z_m[1][a])*conj(Z_U[k][i])/(16.0*pow(PI, 2));
5380
5381 }
5382 }
5383 }
5384 }
5385 }
5386
5387
5388
5389 //neutralino ->
5390
5391
5392 double M_ch0[4],M_ch0_pow_2[4],M_D[6],M_D_pow_2[6];
5393 scalar_t Z_N[4][4];
5394
5395 double cw=cos(atan(src.get_val(ParameterType::SM, "GAUGE", 1)/src.get_val(ParameterType::SM, "GAUGE", 2)));
5396
5397 double otherc = sqrt(2.)/v1;
5398
5399 std::array<double,4> temp_ch0 = {src.get_val(ParameterType::BSM, "MASS", 1000022),
5400 src.get_val(ParameterType::BSM, "MASS", 1000023),
5401 src.get_val(ParameterType::BSM, "MASS", 1000025),
5402 src.get_val(ParameterType::BSM, "MASS", 1000035)};
5403
5404 M_ch0[0]=fabs(temp_ch0[0]);
5405 M_ch0[1]=fabs(temp_ch0[1]);
5406 M_ch0[2]=fabs(temp_ch0[2]);
5407 M_ch0[3]=fabs(temp_ch0[3]);
5408
5409 for(int i=0; i<4; ++i){
5410 M_ch0_pow_2[i]=pow(M_ch0[i],2);
5411 }
5412
5413
5414 for(int i=0; i<6; ++i) {
5415 M_D_pow_2[i]=pow(M_D[i],2);
5416 }
5417
5418
5419
5420 for(int i=0; i<4; ++i) {
5421 for(int j=0; j<4; ++j) {
5422 Z_N[i][j] = conj(src.get_val(ParameterType::BSM, "NMIX", LhaID(i+1, j+1))); //TODO : i,j or j,i like the others ?
5423 }
5424 }
5425
5426
5427 for(int i=0; i<4; ++i){
5428 if(temp_ch0[i]<0.) {
5429 for(int j=0; j<4; ++j) {
5430 Z_N[i][j]*=I;
5431 }
5432 }
5433 } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
5434
5435 scalar_t C5_neutralino=0.;
5436
5437 double D0ne,D2ne;
5438
5439 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie], Z_D[5][ie] -> Z_D[1+3][ie] and Yd[2] -> Yd[1] */
5440
5441 for(int i=0; i<6; ++i) {
5442 for(int j=0; j<6; ++j) {
5443 for(int a=0; a<4; ++a) {
5444 for (int b=0; b<4; ++b) {
5445 D0ne = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
5446 D2ne = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_ch0_pow_2[b]);
5447
5448 C5_neutralino += -D0ne*M_ch0[a]*M_ch0[b]*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[1+3][i])/(3.0*cw) +
5449 Z_N[2][b]*conj(Yd[1])*conj(Z_D[1][i]))*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][b]*sw/3.0 - Z_N[1][b]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][j]*Z_N[2][b])*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
5450 conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a]))/(16.0*pow(PI, 2)) - D2ne*(-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][a])/(3.0*cw) +
5451 Yd[2]*Z_D[2][j]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_N[0][b]*conj(Z_D[1+3][j])/(3.0*cw) + Z_N[2][b]*conj(Yd[1])*conj(Z_D[1][j]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0- Z_N[1][a]*cw)/(2.0*cw*sw) +
5452 Yd[2]*Z_D[5][i]*Z_N[2][a])*(-sqrt(2)*Q_e*(conj(Z_N[0][b])*sw/3.0 - conj(Z_N[1][b])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][b]))/(8.0*pow(PI, 2));
5453
5454 }
5455 }
5456 }
5457 }
5458
5459
5460
5461 //mixed ->
5462
5463 scalar_t C5_mixed=0.;
5464
5465
5466
5467 double M_g=src.get_val(ParameterType::BSM, "MASS", 1000021);
5468 double M_g_pow_2 = pow(M_g,2.);
5469
5470 // } /* NM: in Buras, neutralino masses defined positive, so changed the SLHA2 neutralino mixing matrix when negative neutralino mass */
5471
5472 double D0mix,D2mix;
5473
5474 /* NM: added 1eration dependence, Z_D[2][ie] -> Z_D[1][ie], Z_D[5][ie] -> Z_D[1+3][ie] and Yd[2] -> Yd[1] */
5475
5476 for(int i=0; i<6; ++i) {
5477 for(int j=0; j<6; ++j) {
5478 for(int a=0; a<4; ++a) {
5479 D0mix = D0(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
5480 D2mix = D2p(M_D_pow_2[i],M_D_pow_2[j],M_ch0_pow_2[a],M_g_pow_2);
5481
5482 C5_mixed += -D0mix*M_ch0[a]*M_g*pow(g_3, 2)*(Z_D[2][j]*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
5483 conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a]))*conj(Z_D[1+3][i]) + Z_D[5][j]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][j])/(3.0*cw) +
5484 Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][j]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*conj(Z_D[1][i]))/(48.0*pow(PI, 2)) +
5485 D2mix*pow(g_3, 2)*(-Z_D[2][j]*Z_D[5][i]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][i])/(3.0*cw) + Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][i]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
5486 conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a])) - (-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[5][i])/(3*cw) +
5487 Z_N[2][a]*conj(Yd[2])*conj(Z_D[2][i]))*(-sqrt(2)*Q_e*Z_D[2][j]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][j]*Z_N[2][a])*conj(Z_D[1][j])*conj(Z_D[1+3][i]))/(24.0*pow(PI, 2)) +
5488 D2mix*pow(g_3, 2)*(-Z_D[2][j]*Z_D[5][i]*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][j])/(3.0*cw) + Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][j]))*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
5489 conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a])) - (-sqrt(2)*Q_e*Z_D[5][j]*conj(Z_N[0][a])/(3.0*cw) +
5490 Yd[2]*Z_D[2][j]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*conj(Z_D[1][j])*conj(Z_D[1+3][i]))/(8.0*pow(PI, 2)) +
5491 D2mix*pow(g_3, 2)*(Z_D[2][j]*(-sqrt(2)*Q_e*Z_D[5][i]*conj(Z_N[0][a])/(3.0*cw) + Yd[2]*Z_D[2][i]*conj(Z_N[2][a]))*(-sqrt(2)*Q_e*Z_N[0][a]*conj(Z_D[1+3][j])/(3.0*cw) +
5492 Z_N[2][a]*conj(Yd[1])*conj(Z_D[1][j]))*conj(Z_D[1][i]) + Z_D[5][j]*(-sqrt(2)*Q_e*Z_D[2][i]*(Z_N[0][a]*sw/3.0 - Z_N[1][a]*cw)/(2.0*cw*sw) + Yd[2]*Z_D[5][i]*Z_N[2][a])*(-sqrt(2)*Q_e*(conj(Z_N[0][a])*sw/3.0 -
5493 conj(Z_N[1][a])*cw)*conj(Z_D[1][i])/(2.0*cw*sw) + conj(Yd[1])*conj(Z_D[1+3][i])*conj(Z_N[2][a]))*conj(Z_D[1+3][i]))/(8.0*pow(PI, 2));
5494
5495 }
5496 }
5497 }
5498
5499 //higgs PInguin ->
5500
5501
5502}
ScaleType
WGroup
@ MESON_MIXING
static double compute_LO(const ParamSrc &src)
static double compute_LO(const ParamSrc &src)
static double compute_LO(const ParamSrc &src)
static double compute_LO(const ParamSrc &src)
static double compute_LO(const ParamSrc &src)
static double compute_LO(const ParamSrc &src)
static double compute_LO(const ParamSrc &src)
static double compute_LO(const ParamSrc &src)
static double compute_LO(const ParamSrc &src)
static double compute_LO(const ParamSrc &src)
static double compute_LO(const ParamSrc &src)
static double compute_LO(const ParamSrc &src)
static double compute_LO(const ParamSrc &src)
static double compute_LO(const ParamSrc &src)
static double compute_LO(const ParamSrc &src)
static double compute_LO(const ParamSrc &src)
Mapper for WGroup <-> WGroupId <-> optional external string.
Lightweight view over a set of source parameters keyed by ParamId.
scalar_t get_val(const ParamId &id) const
Retrieves the current value of a parameter.
static double alpha_s(double mu, MassType mass_b_type=MassType::POLE, MassType mass_t_type=MassType::POLE)
Computes the strong coupling constant α_s at scale μ.
Definition QCDHelper.cpp:52
static double msbar_mass(int pdg_code, double mu, MassType mass_b_type=MassType::POLE, MassType mass_t_type=MassType::POLE)
Computes the MS-bar running mass of a quark at scale μ.
Definition QCDHelper.cpp:64
Abstract base class representing a Wilson coefficient and its matching information.
Definition Wilson.h:153
LhaID get_lhaid_from_name(QCDOrder order)
Computes the LhaID directly from the coefficient base name and mapping conventions.
Definition Wilson.cpp:61
std::map< QCDOrder, MatchingInfo > matching_info
Matching metadata indexed by QCD order.
Definition Wilson.h:330
constexpr double PI
Definition constants.h:7
constexpr std::complex< double > I
Definition constants.h:20
scalar_t pow(const scalar_t &base, const scalar_t &exp)
Definition scalar.cpp:75
double f(double x)
Wilson special function f depending on x.
void getDelta(scalar_t delta[6][6], scalar_t Z[6][6], double M[6], double m_av, scalar_t delta_LL[3][3], scalar_t delta_LR[3][3], scalar_t delta_RL[3][3], scalar_t delta_RR[3][3])
Wilson special function getDelta.
double D2p(double w, double x, double y, double z)
Wilson special function D2p depending on 4 parameters.
double h4(double x, double y)
Wilson special function h4 depending on x and y.
double h1(double x)
Wilson special function h1 depending on x.
double h3(double x)
Wilson special function h3 depending on x.
double D0(double w, double x, double y, double z)
Wilson special function D0 depending on 4 parameters.
Represents an identifier of a LHA element, possibly containing several sub-ids.
Definition LhaID.h:56