a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
THDMWcache.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2017 HEPfit Collaboration
3 * All rights reserved.
4 *
5 * For the licensing terms see doc/COPYING.
6 */
7
8#include "THDMWcache.h"
9#include <fstream>
10#include "gslpp.h"
11#include <sstream>
12#include <string>
13
15 :unitarityeigenvalues(11, 0.),
16 NLOunitarityeigenvalues(11, 0.),
17 myTHDMW(static_cast<const THDMW*> (&SM_i)),
18 PV(false),
19 ATLAS8_gg_phi_tt(53, 2, 0.),
20 ATLAS8_gg_phi_tt_e(53, 2, 0.),
21 CMS8_pp_H_hh_bbbb(167, 2, 0.),
22 CMS8_bb_phi_bb(81, 2, 0.),
23 CMS8_bb_phi_bb_e(81, 2, 0.),
24 CMS8_pp_H_hh_bbbb_e(167, 2, 0.),
25 Dummy(167, 2, 0.),
26 ATLAS13_bb_phi_tt(61,2,0.),
27 ATLAS13_tt_phi_tt(61,2,0.),
28 ATLAS13_pp_H_hh_bbbb(271,2,0.),
29 ATLAS13_bb_phi_tt_e(61,2,0.),
30 ATLAS13_tt_phi_tt_e(61,2,0.),
31 ATLAS13_pp_H_hh_bbbb_e(271,2,0.),
32 CMS13_pp_phi_bb(66,2,0.),
33 CMS8_pp_phi_bb(88,2,0.),
34 CMS13_pp_H_hh_bbbb(95,2,0.),
35 CMS13_ggF_H_hh_bbbb(226,2,0.),
36 CMS13_pp_phi_bb_e(66,2,0.),
37 CMS13_pp_H_hh_bbbb_e(95,2,0.),
38 CMS13_ggF_H_hh_bbbb_e(226,2,0.),
39 CMS13_pp_R_gg(241,2,0.),
40
41 ATLAS8_pp_Hpm_tb(41,2,0.),
42 ATLAS8_pp_Hpm_tb_e(41,2,0.),
43 CMS8_pp_Hp_tb(43,2,0.),
44 CMS8_pp_Hp_tb_e(43,2,0.),
45 CMS13_bb_H_bb(101,2,0.),
46 ATLAS13_pp_Hp_tb(181,2,0.),
47// ATLAS13_pp_Hp_tb1(71,2,0.),
48// ATLAS13_pp_Hp_tb2(181,2,0.),
49// ATLAS13_pp_Hp_tb1_e(71,2,0.),
50// ATLAS13_pp_Hp_tb2_e(181,2,0.),
51 ATLAS13_pp_Gkk_tt(131,2,0.),
52 ATLAS13_pp_SS_jjjj(126,2,0.),
53 MadGraph_pp_Sr_tt(22800,5,0.),
54 MadGraph_pp_Srtt_tttt(22800,5,0.),
55 MadGraph_pp_Sr_jj(2940,5,0.),
56 MadGraph_pp_SrSr_jjjj(4200,5,0.),
57 MadGraph_pp_Stb_tbtb(4332,4,0.),
58 MadGraph_pp_Sitt_tttt(9360,4,0.),
59 MadGraph_pp_Srbb_bbbb(15960,5,0.),
60 MadGraph_pp_Srbb_bbbb_8TeV(15960,5,0.),
61 MadGraph_pp_Sibb_bbbb(8892,4,0.),
62 MadGraph_pp_Sibb_bbbb_8TeV(8892,4,0.),
63 MadGraph_pp_Sr_bb(15960,5,0.),
64 MadGraph_pp_Sr_bb_8TeV(15960,5,0.),
65 MadGraph_pp_Si_bb(8892,4,0.),
66 MadGraph_pp_Si_bb_8TeV(8892,4,0.),
67 arraybsgamma(1111, 3, 0.),
68 betaeigenvalues(11, 0.)
69 //myTHDMW(static_cast<const THDMW*> (&SM_i))
70
71
72
73{
74 myRunnerTHDMW=new RunnerTHDMW(SM_i);
75 read();
76}
77
79{
80 delete myRunnerTHDMW;
81}
82//
84//
85int THDMWcache::CacheCheck(const gslpp::complex cache[][CacheSize],
86 const int NumPar, const double params[]) const {
87 bool bCache;
88 for(int i=0; i<CacheSize; i++) {
89 bCache = true;
90 for(int j=0; j<NumPar; j++)
91 bCache &= (params[j] == cache[j][i].real());
92 if (bCache) return i;
93 }
94 return -1;
95}
96
97int THDMWcache::CacheCheckReal(const double cache[][CacheSize],
98 const int NumPar, const double params[]) const {
99 bool bCache;
100 for(int i=0; i<CacheSize; i++) {
101 bCache = true;
102 for(int j=0; j<NumPar; j++)
103 bCache &= (params[j] == cache[j][i]);
104 if (bCache) return i;
105 }
106 return -1;
107}
108
109void THDMWcache::CacheShift(gslpp::complex cache[][CacheSize], const int NumPar,
110 const double params[], const gslpp::complex newResult) const {
111 // shift old parameters and result
112 for(int i=CacheSize-1; i>0; i--)
113 for(int j=0; j<NumPar+1; j++)
114 cache[j][i] = cache[j][i-1];
115
116 // store new parameters and result
117 for(int j=0; j<NumPar; j++) {
118 cache[j][0] = gslpp::complex(params[j], 0.0, false);
119 cache[NumPar][0] = newResult;
120 }
121}
122
123void THDMWcache::CacheShiftReal(double cache[][CacheSize], const int NumPar,
124 const double params[], const double newResult) const {
125 // shift old parameters and result
126 for(int i=CacheSize-1; i>0; i--)
127 for(int j=0; j<NumPar+1; j++)
128 cache[j][i] = cache[j][i-1];
129
130 // store new parameters and result
131 for(int j=0; j<NumPar; j++) {
132 cache[j][0] = params[j];
133 cache[NumPar][0] = newResult;
134 }
135}
136
138//--------- Passarino Veltman Functions for THDMW ---------//
140
141gslpp::complex THDMWcache::A0_MZ2_mSp2(const double MZ2, const double mSp2) const {
142 int NumPar = 2;
143 double params[] = {MZ2, mSp2};
144
145 int i = CacheCheck(A0_MZ2_mSp2_cache, NumPar, params);
146 if (i>=0) {
147 return ( A0_MZ2_mSp2_cache[NumPar][i] );
148 } else {
149 gslpp::complex newResult = PV.A0(MZ2, mSp2);
150 CacheShift(A0_MZ2_mSp2_cache, NumPar, params, newResult);
151 return newResult;
152 }
153}
154
155gslpp::complex THDMWcache::A0_MZ2_mSr2(const double MZ2, const double mSr2) const {
156 int NumPar = 2;
157 double params[] = {MZ2, mSr2};
158
159 int i = CacheCheck(A0_MZ2_mSr2_cache, NumPar, params);
160 if (i>=0) {
161 return ( A0_MZ2_mSr2_cache[NumPar][i] );
162 } else {
163 gslpp::complex newResult = PV.A0(MZ2, mSr2);
164 CacheShift(A0_MZ2_mSr2_cache, NumPar, params, newResult);
165 return newResult;
166 }
167}
168
169gslpp::complex THDMWcache::A0_MZ2_mSi2(const double MZ2, const double mSi2) const {
170 int NumPar = 2;
171 double params[] = {MZ2, mSi2};
172
173 int i = CacheCheck(A0_MZ2_mSi2_cache, NumPar, params);
174 if (i>=0) {
175 return ( A0_MZ2_mSi2_cache[NumPar][i] );
176 } else {
177 gslpp::complex newResult = PV.A0(MZ2, mSi2);
178 CacheShift(A0_MZ2_mSi2_cache, NumPar, params, newResult);
179 return newResult;
180 }
181}
182
183gslpp::complex THDMWcache::B0_MZ2_0_mSp2_mSp2(const double MZ2, const double mSp2) const {
184 int NumPar = 2;
185 double params[] = {MZ2, mSp2};
186
187 int i = CacheCheck(B0_MZ2_0_mSp2_mSp2_cache, NumPar, params);
188 if (i>=0) {
189 return ( B0_MZ2_0_mSp2_mSp2_cache[NumPar][i] );
190 } else {
191 gslpp::complex newResult = PV.B0(MZ2,0. ,mSp2 , mSp2);
192 CacheShift(B0_MZ2_0_mSp2_mSp2_cache, NumPar, params, newResult);
193 return newResult;
194 }
195}
196 /*gslpp::complex THDMWcache::B00_MZ2_0_mSr2_mSp2(const double MZ2, const double mSr2, const double mSp2) const {
197 int NumPar = 3;
198 double params[] = {MZ2, mSr2, mSp2};
199
200 int i = CacheCheck(B00_MZ2_0_mSr2_mSp2_cache, NumPar, params);
201 if (i>=0) {
202 return ( B00_MZ2_0_mSr2_mSp2_cache[NumPar][i] );
203 } else {
204 gslpp::complex newResult = PV.B00(MZ2, 0. , mSr2, mSp2);
205 CacheShift(B00_MZ2_0_mSr2_mSp2_cache, NumPar, params, newResult);
206 return newResult;
207 }
208}
209
210gslpp::complex THDMWcache::B00_MZ2_0_mSi2_mSp2(const double MZ2, const double mSi2, const double mSp2) const {
211 int NumPar = 3;
212 double params[] = {MZ2, mSi2, mSp2};
213
214 int i = CacheCheck(B00_MZ2_0_mSi2_mSp2_cache, NumPar, params);
215 if (i>=0) {
216 return ( B00_MZ2_0_mSi2_mSp2_cache[NumPar][i] );
217 } else {
218 gslpp::complex newResult = PV.B00(MZ2, 0. , mSi2, mSp2);
219 CacheShift(B00_MZ2_0_mSi2_mSp2_cache, NumPar, params, newResult);
220 return newResult;
221 }
222}
223
224gslpp::complex THDMWcache::B00_MZ2_0_mSp2_mSp2(const double MZ2, const double mSp2) const {
225 int NumPar = 2;
226 double params[] = {MZ2, mSp2};
227
228 int i = CacheCheck(B00_MZ2_0_mSp2_mSp2_cache, NumPar, params);
229 if (i>=0) {
230 return ( B00_MZ2_0_mSp2_mSp2_cache[NumPar][i] );
231 } else {
232 gslpp::complex newResult = PV.B00(MZ2, 0. , mSp2, mSp2);
233 CacheShift(B00_MZ2_0_mSp2_mSp2_cache, NumPar, params, newResult);
234 return newResult;
235 }
236}*/
237
238gslpp::complex THDMWcache::B00_MZ2_MZ2_mSr2_mSp2(const double MZ2, const double mSr2, const double mSp2) const {
239 int NumPar = 3;
240 double params[] = {MZ2, mSr2, mSp2};
241
242 int i = CacheCheck(B00_MZ2_MZ2_mSr2_mSp2_cache, NumPar, params);
243 if (i>=0) {
244 return ( B00_MZ2_MZ2_mSr2_mSp2_cache[NumPar][i] );
245 } else {
246 gslpp::complex newResult = PV.B00(MZ2, MZ2 , mSr2, mSp2);
247 CacheShift(B00_MZ2_MZ2_mSr2_mSp2_cache, NumPar, params, newResult);
248 return newResult;
249 }
250}
251
252gslpp::complex THDMWcache::B00_MZ2_MZ2_mSi2_mSp2(const double MZ2, const double mSi2, const double mSp2) const {
253 int NumPar = 3;
254 double params[] = {MZ2, mSi2, mSp2};
255
256 int i = CacheCheck(B00_MZ2_MZ2_mSi2_mSp2_cache, NumPar, params);
257 if (i>=0) {
258 return ( B00_MZ2_MZ2_mSi2_mSp2_cache[NumPar][i] );
259 } else {
260 gslpp::complex newResult = PV.B00(MZ2, MZ2 , mSi2, mSp2);
261 CacheShift(B00_MZ2_MZ2_mSi2_mSp2_cache, NumPar, params, newResult);
262 return newResult;
263 }
264}
265
266gslpp::complex THDMWcache::B00_MZ2_MZ2_mSr2_mSi2(const double MZ2, const double mSr2, const double mSi2) const {
267 int NumPar = 3;
268 double params[] = {MZ2, mSr2, mSi2};
269
270 int i = CacheCheck(B00_MZ2_MZ2_mSr2_mSi2_cache, NumPar, params);
271 if (i>=0) {
272 return ( B00_MZ2_MZ2_mSr2_mSi2_cache[NumPar][i] );
273 } else {
274 gslpp::complex newResult = PV.B00(MZ2, MZ2 , mSr2, mSi2);
275 CacheShift(B00_MZ2_MZ2_mSr2_mSi2_cache, NumPar, params, newResult);
276 return newResult;
277 }
278}
279
280
281
282gslpp::complex THDMWcache::B00_MZ2_MZ2_mSp2_mSp2(const double MZ2, const double mSp2) const {
283 int NumPar = 2;
284 double params[] = {MZ2, mSp2};
285
286 int i = CacheCheck(B00_MZ2_MZ2_mSp2_mSp2_cache, NumPar, params);
287 if (i>=0) {
288 return ( B00_MZ2_MZ2_mSp2_mSp2_cache[NumPar][i] );
289 } else {
290 gslpp::complex newResult = PV.B00(MZ2, MZ2 , mSp2, mSp2);
291 CacheShift(B00_MZ2_MZ2_mSp2_mSp2_cache, NumPar, params, newResult);
292 return newResult;
293 }
294}
295
296
297
298
299
300
301
302
303
304
305
307//--------- End Passarino Veltman Functions for THDMW ---------//
309
310
311
312
313//double THDMWcache::ghHpHm(const double mHp2, const double tanb, const double m12_2, const double bma, const double mHl2, const double vev) const {
314// int NumPar = 6;
315// double params[] = {mHp2, tanb, m12_2, bma, mHl2, vev};
316//
317// int i = CacheCheckReal(ghHpHm_cache, NumPar, params);
318// if (i>=0) {
319// return ( ghHpHm_cache[NumPar][i] );
320// } else {
321// double newResult = ((cos(bma)*mHl2*(tanb*tanb-1.0))/tanb
322// -(mHl2+2.0*mHp2)*sin(bma)
323// +(m12_2*(cos(bma)*(1.0-tanb*tanb)+2.0*sin(bma)*tanb)*(1.0+tanb*tanb))/(tanb*tanb))/vev;
324// CacheShiftReal(ghHpHm_cache, NumPar, params, newResult);
325// return newResult;
326// }
327//}
328//
329//double THDMWcache::g_HH_HpHm(const double mHp2, const double mHh2, const double tanb, const double m12_2, const double bma, const double vev) const {
330// int NumPar = 6;
331// double params[] = {mHp2, mHh2, tanb, m12_2, bma, vev};
332//
333// int i = CacheCheckReal(g_HH_HpHm_cache, NumPar, params);
334// if (i>=0) {
335// return ( g_HH_HpHm_cache[NumPar][i] );
336// } else {
337// double newResult = (cos(bma)*(mHh2-2.0*mHp2)
338// +((m12_2-mHh2*tanb+m12_2*tanb*tanb)
339// *(2.0*cos(bma)*tanb+sin(bma)*(tanb*tanb-1.0)))/(tanb*tanb))/vev;
340// CacheShiftReal(g_HH_HpHm_cache, NumPar, params, newResult);
341// return newResult;
342// }
343//}
344
345gslpp::complex THDMWcache::I_h_U(const double mHl2, const double Mu, const double Mc, const double Mt) const {
346 int NumPar = 4;
347 double params[] = {mHl2, Mu, Mc, Mt};
348
349 int i = CacheCheck(I_h_U_cache, NumPar, params);
350 if (i>=0) {
351 return ( I_h_U_cache[NumPar][i] );
352 } else {
353 double TAUu=4.0*Mu*Mu/mHl2;
354 double TAUc=4.0*Mc*Mc/mHl2;
355 double TAUt=4.0*Mt*Mt/mHl2;
356 gslpp::complex newResult = -(8./3.)*(TAUu*(1.0+(1.0-TAUu)*f_func(TAUu))
357 +TAUc*(1.0+(1.0-TAUc)*f_func(TAUc))+TAUt*(1.0+(1.0-TAUt)*f_func(TAUt)));
358 CacheShift(I_h_U_cache, NumPar, params, newResult);
359 return newResult;
360 }
361}
362
363gslpp::complex THDMWcache::I_HH_U(const double mHh2, const double Mc, const double Mt) const {
364 int NumPar = 3;
365 double params[] = {mHh2, Mc, Mt};
366
367 int i = CacheCheck(I_HH_U_cache, NumPar, params);
368 if (i>=0) {
369 return ( I_HH_U_cache[NumPar][i] );
370 } else {
371 double TAUc=4.0*Mc*Mc/mHh2;
372 double TAUt=4.0*Mt*Mt/mHh2;
373 gslpp::complex newResult = -(8./3.)*(TAUc*(1.0+(1.0-TAUc)*f_func(TAUc))
374 +TAUt*(1.0+(1.0-TAUt)*f_func(TAUt)));
375 CacheShift(I_HH_U_cache, NumPar, params, newResult);
376 return newResult;
377 }
378}
379
380gslpp::complex THDMWcache::I_A_U(const double mA2, const double Mc, const double Mt) const {
381 int NumPar = 3;
382 double params[] = {mA2, Mc, Mt};
383
384 int i = CacheCheck(I_A_U_cache, NumPar, params);
385 if (i>=0) {
386 return ( I_A_U_cache[NumPar][i] );
387 } else {
388 double TAUc=4.0*Mc*Mc/mA2;
389 double TAUt=4.0*Mt*Mt/mA2;
390 gslpp::complex newResult = -(8./3.)*(TAUc*f_func(TAUc)+TAUt*f_func(TAUt));
391 CacheShift(I_A_U_cache, NumPar, params, newResult);
392 return newResult;
393 }
394}
395
396gslpp::complex THDMWcache::I_h_D(const double mHl2, const double Md, const double Ms, const double Mb) const {
397 int NumPar = 4;
398 double params[] = {mHl2, Md, Ms, Mb};
399
400 int i = CacheCheck(I_h_D_cache, NumPar, params);
401 if (i>=0) {
402 return ( I_h_D_cache[NumPar][i] );
403 } else {
404 double TAUd=4.0*Md*Md/mHl2;
405 double TAUs=4.0*Ms*Ms/mHl2;
406 double TAUb=4.0*Mb*Mb/mHl2;
407 gslpp::complex newResult = -(2./3.)*(TAUd*(1.0+(1.0-TAUd)*f_func(TAUd))
408 +TAUs*(1.0+(1.0-TAUs)*f_func(TAUs))+TAUb*(1.0+(1.0-TAUb)*f_func(TAUb)));
409 CacheShift(I_h_D_cache, NumPar, params, newResult);
410 return newResult;
411 }
412}
413
414gslpp::complex THDMWcache::I_HH_D(const double mHh2, const double Ms, const double Mb) const {
415 int NumPar = 3;
416 double params[] = {mHh2, Ms, Mb};
417
418 int i = CacheCheck(I_HH_D_cache, NumPar, params);
419 if (i>=0) {
420 return ( I_HH_D_cache[NumPar][i] );
421 } else {
422 double TAUs=4.0*Ms*Ms/mHh2;
423 double TAUb=4.0*Mb*Mb/mHh2;
424 gslpp::complex newResult = -(2./3.)*(TAUs*(1.0+(1.0-TAUs)*f_func(TAUs))
425 +TAUb*(1.0+(1.0-TAUb)*f_func(TAUb)));
426 CacheShift(I_HH_D_cache, NumPar, params, newResult);
427 return newResult;
428 }
429}
430
431gslpp::complex THDMWcache::I_A_D(const double mA2, const double Ms, const double Mb) const {
432 int NumPar = 3;
433 double params[] = {mA2, Ms, Mb};
434
435 int i = CacheCheck(I_A_D_cache, NumPar, params);
436 if (i>=0) {
437 return ( I_A_D_cache[NumPar][i] );
438 } else {
439 double TAUs=4.0*Ms*Ms/mA2;
440 double TAUb=4.0*Mb*Mb/mA2;
441 gslpp::complex newResult = -(2./3.)*(TAUs*f_func(TAUs)+TAUb*f_func(TAUb));
442 CacheShift(I_A_D_cache, NumPar, params, newResult);
443 return newResult;
444 }
445}
446
447gslpp::complex THDMWcache::I_h_L(const double mHl2, const double Me, const double Mmu, const double Mtau) const {
448 int NumPar = 4;
449 double params[] = {mHl2, Me, Mmu, Mtau};
450
451 int i = CacheCheck(I_h_L_cache, NumPar, params);
452 if (i>=0) {
453 return ( I_h_L_cache[NumPar][i] );
454 } else {
455 double TAUe=4.0*Me*Me/mHl2;
456 double TAUmu=4.0*Mmu*Mmu/mHl2;
457 double TAUtau=4.0*Mtau*Mtau/mHl2;
458 gslpp::complex newResult = -2.0*(TAUe*(1.0+(1.0-TAUe)*f_func(TAUe))
459 +TAUmu*(1.0+(1.0-TAUmu)*f_func(TAUmu))
460 +TAUtau*(1.0+(1.0-TAUtau)*f_func(TAUtau)));
461 CacheShift(I_h_L_cache, NumPar, params, newResult);
462 return newResult;
463 }
464}
465
466gslpp::complex THDMWcache::I_HH_L(const double mHh2, const double Mmu, const double Mtau) const {
467 int NumPar = 3;
468 double params[] = {mHh2, Mmu, Mtau};
469
470 int i = CacheCheck(I_HH_L_cache, NumPar, params);
471 if (i>=0) {
472 return ( I_HH_L_cache[NumPar][i] );
473 } else {
474 double TAUmu=4.0*Mmu*Mmu/mHh2;
475 double TAUtau=4.0*Mtau*Mtau/mHh2;
476 gslpp::complex newResult = -2.0*(TAUmu*(1.0+(1.0-TAUmu)*f_func(TAUmu))+
477 TAUtau*(1.0+(1.0-TAUtau)*f_func(TAUtau)));
478 CacheShift(I_HH_L_cache, NumPar, params, newResult);
479 return newResult;
480 }
481}
482
483gslpp::complex THDMWcache::I_A_L(const double mA2, const double Mmu, const double Mtau) const {
484 int NumPar = 3;
485 double params[] = {mA2, Mmu, Mtau};
486
487 int i = CacheCheck(I_A_L_cache, NumPar, params);
488 if (i>=0) {
489 return ( I_A_L_cache[NumPar][i] );
490 } else {
491 double TAUmu=4.0*Mmu*Mmu/mA2;
492 double TAUtau=4.0*Mtau*Mtau/mA2;
493 gslpp::complex newResult = -2.0*(TAUmu*f_func(TAUmu)+TAUtau*f_func(TAUtau));
494 CacheShift(I_A_L_cache, NumPar, params, newResult);
495 return newResult;
496 }
497}
498
499gslpp::complex THDMWcache::I_H_W(const double mH, const double MW) const {
500 int NumPar = 2;
501 double params[] = {mH, MW};
502
503 int i = CacheCheck(I_H_W_cache, NumPar, params);
504 if (i>=0) {
505 return ( I_H_W_cache[NumPar][i] );
506 } else {
507 double TAUw=4.0*MW*MW/(mH*mH);
508 gslpp::complex newResult = 2.0 + 3.0*TAUw + 3.0*TAUw*(2.0-TAUw)*f_func(TAUw);
509 CacheShift(I_H_W_cache, NumPar, params, newResult);
510 return newResult;
511 }
512}
513
514gslpp::complex THDMWcache::I_H_Hp(const double mHp2, const double mH) const {
515 int NumPar = 2;
516 double params[] = {mHp2, mH};
517
518 int i = CacheCheck(I_H_Hp_cache, NumPar, params);
519 if (i>=0) {
520 return ( I_H_Hp_cache[NumPar][i] );
521 } else {
522 double TAUhp=4.0*mHp2/(mH*mH);
523 gslpp::complex newResult = -TAUhp*(1.0-TAUhp*f_func(TAUhp));
524 CacheShift(I_H_Hp_cache, NumPar, params, newResult);
525 return newResult;
526 }
527}
528
529gslpp::complex THDMWcache::A_h_U(const double mHl2, const double cW2, const double Mu, const double Mc, const double Mt, const double MZ) const {
530 int NumPar = 6;
531 double params[] = {mHl2, cW2, Mu, Mc, Mt, MZ};
532
533 int i = CacheCheck(A_h_U_cache, NumPar, params);
534 if (i>=0) {
535 return ( A_h_U_cache[NumPar][i] );
536 } else {
537 double TAUu=4.0*Mu*Mu/mHl2;
538 double TAUc=4.0*Mc*Mc/mHl2;
539 double TAUt=4.0*Mt*Mt/mHl2;
540 double LAMu=4.0*Mu*Mu/(MZ*MZ);
541 double LAMc=4.0*Mc*Mc/(MZ*MZ);
542 double LAMt=4.0*Mt*Mt/(MZ*MZ);
543 double sW2=1.0-cW2;
544 gslpp::complex newResult = -4.0*(1.0/2.0-4.0/3.0*sW2)*(Int1(TAUu,LAMu)+Int1(TAUc,LAMc)
545 +Int1(TAUt,LAMt)-Int2(TAUu,LAMu)-Int2(TAUc,LAMc)-Int2(TAUt,LAMt));
546 CacheShift(A_h_U_cache, NumPar, params, newResult);
547 return newResult;
548 }
549}
550
551gslpp::complex THDMWcache::A_HH_U(const double mHh2, const double cW2, const double Mc, const double Mt, const double MZ) const {
552 int NumPar = 5;
553 double params[] = {mHh2, cW2, Mc, Mt, MZ};
554
555 int i = CacheCheck(A_HH_U_cache, NumPar, params);
556 if (i>=0) {
557 return ( A_HH_U_cache[NumPar][i] );
558 } else {
559 double TAUc=4.0*Mc*Mc/mHh2;
560 double TAUt=4.0*Mt*Mt/mHh2;
561 double LAMc=4.0*Mc*Mc/(MZ*MZ);
562 double LAMt=4.0*Mt*Mt/(MZ*MZ);
563 double sW2=1.0-cW2;
564 gslpp::complex newResult = -4.0*(1.0/2.0-4.0/3.0*sW2)*(Int1(TAUc,LAMc)-Int2(TAUc,LAMc)
565 +Int1(TAUt,LAMt)-Int2(TAUt,LAMt));
566 CacheShift(A_HH_U_cache, NumPar, params, newResult);
567 return newResult;
568 }
569}
570
571gslpp::complex THDMWcache::A_A_U(const double mA2, const double cW2, const double Mc, const double Mt, const double MZ) const {
572 int NumPar = 5;
573 double params[] = {mA2, cW2, Mc, Mt, MZ};
574
575 int i = CacheCheck(A_A_U_cache, NumPar, params);
576 if (i>=0) {
577 return ( A_A_U_cache[NumPar][i] );
578 } else {
579 double TAUc=4.0*Mc*Mc/mA2;
580 double TAUt=4.0*Mt*Mt/mA2;
581 double LAMc=4.0*Mc*Mc/(MZ*MZ);
582 double LAMt=4.0*Mt*Mt/(MZ*MZ);
583 double sW2=1.0-cW2;
584 gslpp::complex newResult = -4.0*(1.0/2.0-4.0/3.0*sW2)*(-Int2(TAUc,LAMc)-Int2(TAUt,LAMt))/sqrt(sW2*cW2);
585 CacheShift(A_A_U_cache, NumPar, params, newResult);
586 return newResult;
587 }
588}
589
590gslpp::complex THDMWcache::A_h_D(const double mHl2, const double cW2, const double Md, const double Ms, const double Mb, const double MZ) const {
591 int NumPar = 6;
592 double params[] = {mHl2, cW2, Md, Ms, Mb, MZ};
593
594 int i = CacheCheck(A_h_D_cache, NumPar, params);
595 if (i>=0) {
596 return ( A_h_D_cache[NumPar][i] );
597 } else {
598 double TAUd=4.0*Md*Md/mHl2;
599 double TAUs=4.0*Ms*Ms/mHl2;
600 double TAUb=4.0*Mb*Mb/mHl2;
601 double LAMd=4.0*Md*Md/(MZ*MZ);
602 double LAMs=4.0*Ms*Ms/(MZ*MZ);
603 double LAMb=4.0*Mb*Mb/(MZ*MZ);
604 double sW2=1.0-cW2;
605 gslpp::complex newResult = 2.0*(-1.0/2.0+2.0/3.0*sW2)*(Int1(TAUd,LAMd)+Int1(TAUs,LAMs)
606 +Int1(TAUb,LAMb)-Int2(TAUd,LAMd)-Int2(TAUs,LAMs)-Int2(TAUb,LAMb));
607 CacheShift(A_h_D_cache, NumPar, params, newResult);
608 return newResult;
609 }
610}
611
612gslpp::complex THDMWcache::A_HH_D(const double mHh2, const double cW2, const double Ms, const double Mb, const double MZ) const {
613 int NumPar = 5;
614 double params[] = {mHh2, cW2, Ms, Mb, MZ};
615
616 int i = CacheCheck(A_HH_D_cache, NumPar, params);
617 if (i>=0) {
618 return ( A_HH_D_cache[NumPar][i] );
619 } else {
620 double TAUs=4.0*Ms*Ms/mHh2;
621 double TAUb=4.0*Mb*Mb/mHh2;
622 double LAMs=4.0*Ms*Ms/(MZ*MZ);
623 double LAMb=4.0*Mb*Mb/(MZ*MZ);
624 double sW2=1.0-cW2;
625 gslpp::complex newResult = 2.0*(-1.0/2.0+2.0/3.0*sW2)*(Int1(TAUs,LAMs)-Int2(TAUs,LAMs)
626 +Int1(TAUb,LAMb)-Int2(TAUb,LAMb));
627 CacheShift(A_HH_D_cache, NumPar, params, newResult);
628 return newResult;
629 }
630}
631
632gslpp::complex THDMWcache::A_A_D(const double mA2, const double cW2, const double Ms, const double Mb, const double MZ) const {
633 int NumPar = 5;
634 double params[] = {mA2, cW2, Ms, Mb, MZ};
635
636 int i = CacheCheck(A_A_D_cache, NumPar, params);
637 if (i>=0) {
638 return ( A_A_D_cache[NumPar][i] );
639 } else {
640 double TAUs=4.0*Ms*Ms/mA2;
641 double TAUb=4.0*Mb*Mb/mA2;
642 double LAMs=4.0*Ms*Ms/(MZ*MZ);
643 double LAMb=4.0*Mb*Mb/(MZ*MZ);
644 double sW2=1.0-cW2;
645 gslpp::complex newResult = 2.0*(-1.0/2.0+2.0/3.0*sW2)*(-Int2(TAUs,LAMs)-Int2(TAUb,LAMb))/sqrt(sW2*cW2);
646 CacheShift(A_A_D_cache, NumPar, params, newResult);
647 return newResult;
648 }
649}
650
651gslpp::complex THDMWcache::A_h_L(const double mHl2, const double cW2, const double Me, const double Mmu, const double Mtau, const double MZ) const {
652 int NumPar = 6;
653 double params[] = {mHl2, cW2, Me, Mmu, Mtau, MZ};
654
655 int i = CacheCheck(A_h_L_cache, NumPar, params);
656 if (i>=0) {
657 return ( A_h_L_cache[NumPar][i] );
658 } else {
659 double TAUe=4.0*Me*Me/mHl2;
660 double TAUmu=4.0*Mmu*Mmu/mHl2;
661 double TAUtau=4.0*Mtau*Mtau/mHl2;
662 double LAMe=4.0*Me*Me/(MZ*MZ);
663 double LAMmu=4.0*Mmu*Mmu/(MZ*MZ);
664 double LAMtau=4.0*Mtau*Mtau/(MZ*MZ);
665 double sW2=1.0-cW2;
666 gslpp::complex newResult = 2.0*(-1.0/2.0+2.0*sW2)*(Int1(TAUe,LAMe)+Int1(TAUmu,LAMmu)
667 +Int1(TAUtau,LAMtau)-Int2(TAUe,LAMe)-Int2(TAUmu,LAMmu)
668 -Int2(TAUtau,LAMtau));
669 CacheShift(A_h_L_cache, NumPar, params, newResult);
670 return newResult;
671 }
672}
673
674gslpp::complex THDMWcache::A_HH_L(const double mHh2, const double cW2, const double Mmu, const double Mtau, const double MZ) const {
675 int NumPar = 5;
676 double params[] = {mHh2, cW2, Mmu, Mtau, MZ};
677
678 int i = CacheCheck(A_HH_L_cache, NumPar, params);
679 if (i>=0) {
680 return ( A_HH_L_cache[NumPar][i] );
681 } else {
682 double TAUmu=4.0*Mmu*Mmu/mHh2;
683 double TAUtau=4.0*Mtau*Mtau/mHh2;
684 double LAMmu=4.0*Mmu*Mmu/(MZ*MZ);
685 double LAMtau=4.0*Mtau*Mtau/(MZ*MZ);
686 double sW2=1.0-cW2;
687 gslpp::complex newResult = 2.0*(-1.0/2.0+2.0*sW2)*(Int1(TAUmu,LAMmu)-Int2(TAUmu,LAMmu)
688 +Int1(TAUtau,LAMtau)-Int2(TAUtau,LAMtau));
689 CacheShift(A_HH_L_cache, NumPar, params, newResult);
690 return newResult;
691 }
692}
693
694gslpp::complex THDMWcache::A_A_L(const double mA2, const double cW2, const double Mmu, const double Mtau, const double MZ) const {
695 int NumPar = 5;
696 double params[] = {mA2, cW2, Mmu, Mtau, MZ};
697
698 int i = CacheCheck(A_A_L_cache, NumPar, params);
699 if (i>=0) {
700 return ( A_A_L_cache[NumPar][i] );
701 } else {
702 double TAUmu=4.0*Mmu*Mmu/mA2;
703 double TAUtau=4.0*Mtau*Mtau/mA2;
704 double LAMmu=4.0*Mmu*Mmu/(MZ*MZ);
705 double LAMtau=4.0*Mtau*Mtau/(MZ*MZ);
706 double sW2=1.0-cW2;
707 gslpp::complex newResult = 2.0*(-1.0/2.0+2.0*sW2)*(-Int2(TAUmu,LAMmu)-Int2(TAUtau,LAMtau))/sqrt(sW2*cW2);
708 CacheShift(A_A_L_cache, NumPar, params, newResult);
709 return newResult;
710 }
711}
712
713gslpp::complex THDMWcache::A_H_W(const double mH, const double cW2, const double MW, const double MZ) const {
714 int NumPar = 4;
715 double params[] = {mH, cW2, MW, MZ};
716
717 int i = CacheCheck(A_H_W_cache, NumPar, params);
718 if (i>=0) {
719 return ( A_H_W_cache[NumPar][i] );
720 } else {
721 double TAUw=4.0*MW*MW/(mH*mH);
722 double LAMw=4.0*MW*MW/(MZ*MZ);
723 double sW2=1.0-cW2;
724 gslpp::complex newResult = -sqrt(cW2/sW2)*(4.0*(3.0-sW2/cW2)*Int2(TAUw,LAMw)
725 +((1.0+2.0/TAUw)*sW2/cW2-(5.0+2.0/TAUw))*Int1(TAUw,LAMw));
726 CacheShift(A_H_W_cache, NumPar, params, newResult);
727 return newResult;
728 }
729}
730
731gslpp::complex THDMWcache::A_H_Hp(const double mHp2, const double mH, const double cW2, const double MZ) const {
732 int NumPar = 4;
733 double params[] = {mHp2, mH, cW2, MZ};
734
735 int i = CacheCheck(A_H_Hp_cache, NumPar, params);
736 if (i>=0) {
737 return ( A_H_Hp_cache[NumPar][i] );
738 } else {
739 double TAUhp=4.0*mHp2/(mH*mH);
740 double LAMhp=4.0*mHp2/(MZ*MZ);
741 double sW2=1.0-cW2;
742 gslpp::complex newResult = (1.0-2.0*sW2)/sqrt(cW2*sW2)*Int1(TAUhp,LAMhp);
743 CacheShift(A_H_Hp_cache, NumPar, params, newResult);
744 return newResult;
745 }
746}
747
748gslpp::complex THDMWcache::f_func(const double x) const{
749 if(x<1) {
750 gslpp::complex z = -gslpp::complex::i()*M_PI;
751 return -pow(log((1.0+sqrt(1.0-x))/(1.0-sqrt(1.0-x)))+z,2)/4.0;
752 }
753 else {
754 return pow(asin(sqrt(1.0/x)),2);
755 }
756}
757
758gslpp::complex THDMWcache::g_func(const double x) const{
759 if(x<1) {
760 gslpp::complex z = -gslpp::complex::i()*M_PI;
761 gslpp::complex gs1 = sqrt(1.0-x)*(log((1.0+sqrt(1.0-x))/(1.0-sqrt(1.0-x)))+z)/2.0;
762 return gs1;
763 }
764 else {
765 gslpp::complex gg1 = sqrt(x-1.0)*asin(sqrt(1.0/x));
766 return gg1;
767 }
768}
769
770gslpp::complex THDMWcache::Int1(const double tau, const double lambda) const{
771 return tau*lambda/(tau-lambda)/2.0+tau*tau*lambda*lambda/((tau-lambda)
772 *(tau-lambda))/2.0*(f_func(tau)-f_func(lambda))+tau*tau*lambda/((tau-lambda)
773 *(tau-lambda))*(g_func(tau)-g_func(lambda));
774}
775
776gslpp::complex THDMWcache::Int2(const double tau, const double lambda) const{
777 return -tau*lambda/(tau-lambda)/2.0*(f_func(tau)-f_func(lambda));
778}
779
781{
782 double Mt = myTHDMW->getQuarks(QCD::TOP).getMass();
783 double Mb = myTHDMW->getQuarks(QCD::BOTTOM).getMass();
784 double Mc = myTHDMW->getQuarks(QCD::CHARM).getMass();
785 double Ms = myTHDMW->getQuarks(QCD::STRANGE).getMass();
786 double Mu = myTHDMW->getQuarks(QCD::UP).getMass();
787 double Md = myTHDMW->getQuarks(QCD::DOWN).getMass();
791 double MW = myTHDMW->Mw();
792 double cW2 = myTHDMW->c02();
793 double sW2=1.0-cW2;
794
795 double BrSM_htobb = 5.77e-1;
796 double BrSM_htotautau = 6.32e-2;
797 double BrSM_htogaga = 2.28e-3;
798 double BrSM_htoWW = 2.15e-1;
799 double BrSM_htoZZ = 2.64e-2;
800 double BrSM_htogg = 8.57e-2;
801 double BrSM_htoZga = 1.54e-3;
802 double BrSM_htocc = 2.91e-2;
803
804 if( THDMWmodel == "ManoharWise" || THDMWmodel == "custodialMW" ) {
805 rh_QuQu = 1.0;
806 rh_VV = 1.0;
807 rh_QdQd = 1.0;
808 rh_ll = 1.0;
809
810 //gluon coupling
811 gslpp::complex fermU = I_h_U(mhsq,Mu,Mc,Mt);
812 gslpp::complex fermD = I_h_D(mhsq,Md,Ms,Mb);
813 double ch_p=-nu1*vev*vev/(4.0*mSpsq);//Victor Miralles, non-custodial
814 double ch_r=-(nu1+nu2+2.0*nu3)*vev*vev/(4.0*mSRsq);//Victor Miralles, non-custodial
815 double ch_i=-(nu1+nu2-2.0*nu3)*vev*vev/(4.0*mSIsq);//Victor Miralles, non-custodial
816 gslpp::complex I_h_Sp = 4.5*ch_p*I_H_Hp(mSpsq,sqrt(mhsq)); //Factor 3 to normalize Higgs Hunters Guide to 1606.01298
817 gslpp::complex I_h_SR = 2.25*ch_r*I_H_Hp(mSRsq,sqrt(mhsq)); //Factor 3 to normalize Higgs Hunters Guide to 1606.01298
818 gslpp::complex I_h_SI = 2.25*ch_i*I_H_Hp(mSIsq,sqrt(mhsq)); //Factor 3 to normalize Higgs Hunters Guide to 1606.01298
819 double ABSggMW=(-9.0/16.0*(fermU+4.0*fermD)+I_h_Sp+I_h_SR+I_h_SI).abs2(); //Factor 9/16 and 4 to normalize Higgs Hunters Guide to 1606.01298
820 double ABSggSM=(-9.0/16.0*(fermU+4.0*fermD)).abs2(); //Factor 9/16 and 4 to normalize Higgs Hunters Guide to 1606.01298
821 rh_gg=ABSggMW/ABSggSM;
822 //std::cout<<"I_h_Sp*2.0 = "<<I_h_Sp*2.0<<std::endl;
823 //std::cout<<"-9.0/16.0*fermU = "<<-9.0/16.0*fermU<<std::endl;
824 //photon coupling
825 gslpp::complex fermL = I_h_L(mhsq,Me,Mmu,Mtau);
826 gslpp::complex I_hSM_W = I_H_W(sqrt(mhsq),MW);
827 gslpp::complex I_h_S = -8.0*ch_p*I_H_Hp(mSpsq,sqrt(mhsq));//Factor of 1/3 cancels with the normalization factor 3 between Higgs Hunters Guide and 1606.01298
828 double ABSgagaMW=(fermU+fermD+fermL+I_hSM_W+I_h_S).abs2();//-8 times (31) in 1606.01298
829 double ABSgagaSM=(fermU+fermD+fermL+I_hSM_W).abs2();//-8 times (31) in 1606.01298
830 rh_gaga=ABSgagaMW/ABSgagaSM;
831
832 //Z photon coupling
833 gslpp::complex A_h_Ux = A_h_U(mhsq,cW2,Mu,Mc,Mt,MZ);
834 gslpp::complex A_h_Dx = A_h_D(mhsq,cW2,Md,Ms,Mb,MZ);
835 gslpp::complex A_h_Lx = A_h_L(mhsq,cW2,Me,Mmu,Mtau,MZ);
836 gslpp::complex A_h_F = (A_h_Ux+A_h_Dx+A_h_Lx)/sqrt(sW2*cW2);
837 gslpp::complex A_hSM_W = A_H_W(sqrt(mhsq),cW2,MW,MZ);
838 gslpp::complex A_h_S = -8.0*ch_p*A_H_Hp(mSpsq,sqrt(mhsq),cW2,MZ);//Just analagous to the diphoton loop
839 double ABSZgaMW=(A_h_F+A_hSM_W+A_h_S).abs2();
840 double ABSZgaSM=(A_h_F+A_hSM_W).abs2();
841 rh_Zga=ABSZgaMW/ABSZgaSM;
842
843 }
844 else if( THDMWmodel == "custodial1" ) {
846 rh_VV = sin(bma)*sin(bma);
848 rh_ll = rh_QuQu;
849
850 //gluon coupling
851 gslpp::complex fermU = I_h_U(mhsq,Mu,Mc,Mt);
852 gslpp::complex fermD = I_h_D(mhsq,Md,Ms,Mb);
853 double ch_p=(-nu1*sina*cosb+omega1*cosa*sinb+kappa1*(cosa*cosb-sina*sinb))*vev*vev/(4.0*mSpsq);
854 double ch_r=(-(nu1+2.0*nu2)*sina*cosb+(omega1+2.0*omega2)*cosa*sinb+(kappa1+2.0*kappa2)*(cosa*cosb-sina*sinb))*vev*vev/(4.0*mSRsq);
855 double ch_i=ch_p;
856 gslpp::complex I_h_Sp = 4.5*ch_p*I_H_Hp(mSpsq,sqrt(mhsq)); //Factor 3 to normalize Higgs Hunters Guide to 1606.01298
857 gslpp::complex I_h_SR = 2.25*ch_r*I_H_Hp(mSRsq,sqrt(mhsq)); //Factor 3 to normalize Higgs Hunters Guide to 1606.01298
858 gslpp::complex I_h_SI = 2.25*ch_i*I_H_Hp(mSIsq,sqrt(mhsq)); //Factor 3 to normalize Higgs Hunters Guide to 1606.01298
859 double ABSggTHDMW=(-9.0/16.0*(cosa/sinb)*(fermU+4.0*fermD)+I_h_Sp+I_h_SR+I_h_SI).abs2(); //Factor 9/16 to normalize Higgs Hunters Guide to 1606.01298
860 double ABSggSM=(-9.0/16.0*(fermU+4.0*fermD)).abs2(); //Factor 9/16 to normalize Higgs Hunters Guide to 1606.01298
861 rh_gg=ABSggTHDMW/ABSggSM;
862
863 //photon coupling
867 gslpp::complex fermL = I_h_L(mhsq,Me,Mmu,Mtau);
868 gslpp::complex I_hSM_W = I_H_W(sqrt(mhsq),MW);
869 gslpp::complex I_h_Hp = -0.5*ghHpHm*I_H_Hp(mSpsq,sqrt(mhsq));
870 gslpp::complex I_h_S = -8.0*ch_p*I_H_Hp(mSpsq,sqrt(mhsq));//Factor of 1/3 cancels with the normalization factor 3 between Higgs Hunters Guide and 1606.01298
871 double ABSgagaTHDMW=((cosa/sinb)*(fermU+fermD+fermL)+sin(bma)*I_hSM_W+I_h_Hp+I_h_S).abs2();//-8 times (31) in 1606.01298
872 double ABSgagaSM=(fermU+fermD+fermL+I_hSM_W).abs2();//-8 times (31) in 1606.01298
873 rh_gaga=ABSgagaTHDMW/ABSgagaSM;
874
875 //Z photon coupling
876 gslpp::complex A_h_Ux = A_h_U(mhsq,cW2,Mu,Mc,Mt,MZ);
877 gslpp::complex A_h_Dx = A_h_D(mhsq,cW2,Md,Ms,Mb,MZ);
878 gslpp::complex A_h_Lx = A_h_L(mhsq,cW2,Me,Mmu,Mtau,MZ);
879 gslpp::complex A_h_F = cosa/sinb*(A_h_Ux+A_h_Dx+A_h_Lx)/sqrt(sW2*cW2);
880 gslpp::complex A_hSM_W = A_H_W(sqrt(mhsq),cW2,MW,MZ);
881 gslpp::complex A_h_Hp = -0.5*ghHpHm*A_H_Hp(mSpsq,sqrt(mhsq),cW2,MZ);
882 gslpp::complex A_h_S = -8.0*ch_p*A_H_Hp(mSpsq,sqrt(mhsq),cW2,MZ);//Just analagous to the diphoton loop
883 double ABSZgaTHDMW=(A_h_F+sin(bma)*A_hSM_W+A_h_Hp+A_h_S).abs2();
884 double ABSZgaSM=(A_h_F+A_hSM_W).abs2();
885 rh_Zga=ABSZgaTHDMW/ABSZgaSM;
886
887 }
888 else {
889 throw std::runtime_error("THDMWmodel can only be \"ManoharWise\", \"custodialMW\" or \"custodial1\".");
890 }
891
892 sumModBRs = rh_QdQd*BrSM_htobb + rh_VV*(BrSM_htoWW+BrSM_htoZZ) + rh_ll*BrSM_htotautau +
893 rh_gaga*BrSM_htogaga + rh_gg*BrSM_htogg + rh_Zga*BrSM_htoZga + rh_QuQu*BrSM_htocc;
894
896
897 THDM_BR_h_bb = rh_QdQd*BrSM_htobb/sumModBRs;
898 THDM_BR_h_gaga = rh_gaga*BrSM_htogaga/sumModBRs;
899 THDM_BR_h_tautau = rh_ll*BrSM_htotautau/sumModBRs;
900 THDM_BR_h_WW = rh_VV*BrSM_htoWW/sumModBRs;
901 THDM_BR_h_ZZ = rh_VV*BrSM_htoZZ/sumModBRs;
902}
903
905{
906
907 std::string RGEorder=myTHDMW->getRGEorderflag();
908 //flag will be used to transport information about model and RGEorder to the Runner:
909 //flag=0 for LO, 1 for approxNLO (and 2 for NLO - not implemented yet)
910 int flag;
911 if( RGEorder == "LO" ) flag=0;
912 else if( RGEorder == "approxNLO" ) flag=1;
913// else if( RGEorder == "NLO" ) flag=2;
914 else {
915 throw std::runtime_error("RGEorder can be only any of \"LO\", \"approxNLO\" or \"NLO\"");
916 }
917
918 if( THDMWmodel == "custodial1")
919 {
920 double lambda1_at_MZ=lambda1;
921 double lambda2_at_MZ=lambda2;
922 double lambda3_at_MZ=lambda3;
923 double lambda4_at_MZ=lambda4;
924 double mu1_at_MZ=mu1;
925 double mu3_at_MZ=mu3;
926 double mu4_at_MZ=mu4;
927 double nu1_at_MZ=nu1;
928 double omega1_at_MZ=omega1;
929 double kappa1_at_MZ=kappa1;
930 double nu2_at_MZ=nu2;
931 double omega2_at_MZ=omega2;
932 double kappa2_at_MZ=kappa2;
933 double nu4_at_MZ=nu4;
934 double omega4_at_MZ=omega4;
935 double NLOuniscale=myTHDMW->getNLOuniscaleTHDMW();
936
937 if(fabs(Q_THDMW-log10(MZ))<0.005) //at MZ scale
938 {
939 Q_cutoff=log10(MZ);
940
941 lambda1_at_Q = lambda1_at_MZ;
942 lambda2_at_Q = lambda2_at_MZ;
943 lambda3_at_Q = lambda3_at_MZ;
944 lambda4_at_Q = lambda4_at_MZ;
945 mu1_at_Q = mu1_at_MZ;
946 mu3_at_Q = mu3_at_MZ;
947 mu4_at_Q = mu4_at_MZ;
948 nu1_at_Q = nu1_at_MZ;
949 omega1_at_Q = omega1_at_MZ;
950 kappa1_at_Q = kappa1_at_MZ;
951 nu2_at_Q = nu2_at_MZ;
952 omega2_at_Q = omega2_at_MZ;
953 kappa2_at_Q = kappa2_at_MZ;
954 nu4_at_Q = nu4_at_MZ;
955 omega4_at_Q = omega4_at_MZ;
956 }
957 else //at some other scale
958 {
959 double InitVals[15];
960 InitVals[0]=lambda1_at_MZ;
961 InitVals[1]=lambda2_at_MZ;
962 InitVals[2]=lambda3_at_MZ;
963 InitVals[3]=lambda4_at_MZ;
964 InitVals[4]=mu1_at_MZ;
965 InitVals[5]=mu3_at_MZ;
966 InitVals[6]=mu4_at_MZ;
967 InitVals[7]=nu1_at_MZ;
968 InitVals[8]=omega1_at_MZ;
969 InitVals[9]=kappa1_at_MZ;
970 InitVals[10]=nu2_at_MZ;
971 InitVals[11]=omega2_at_MZ;
972 InitVals[12]=kappa2_at_MZ;
973 InitVals[13]=nu4_at_MZ;
974 InitVals[14]=omega4_at_MZ;
975
976 Q_cutoff=myRunnerTHDMW->RGERunnerTHDMW(InitVals, 15, log10(MZ), Q_THDMW, flag, RpepsTHDMW, NLOuniscale); //Running up to Q_cutoff<=Q_THDM
977
978 lambda1_at_Q = InitVals[0];
979 lambda2_at_Q = InitVals[1];
980 lambda3_at_Q = InitVals[2];
981 lambda4_at_Q = InitVals[3];
982 mu1_at_Q=InitVals[4];
983 mu3_at_Q=InitVals[5];
984 mu4_at_Q = InitVals[6];
985 nu1_at_Q = InitVals[7];
986 omega1_at_Q = InitVals[8];
987 kappa1_at_Q = InitVals[9];
988 nu2_at_Q = InitVals[10];
989 omega2_at_Q = InitVals[11];
990 kappa2_at_Q = InitVals[12];
991 nu4_at_Q = InitVals[13];
992 omega4_at_Q = InitVals[14];
993 }
994 }//End custodial1 case
995 else if( THDMWmodel == "ManoharWise")
996 {
997 double lambda1_at_MZ=lambda1;
998 double nu1_at_MZ=nu1;
999 double nu2_at_MZ=nu2;
1000 double nu3_at_MZ=nu3;
1001 double nu4_at_MZ=nu4;
1002 double nu5_at_MZ=nu5;
1003 double mu1_at_MZ=mu1;
1004 double mu2_at_MZ=mu2;
1005 double mu3_at_MZ=mu3;
1006 double mu4_at_MZ=mu4;
1007 double mu5_at_MZ=mu5;
1008 double mu6_at_MZ=mu6;
1009 double NLOuniscale=myTHDMW->getNLOuniscaleTHDMW();
1010
1011 if(fabs(Q_THDMW-log10(MZ))<0.005) //at MZ scale
1012 {
1013 Q_cutoff=log10(MZ);
1014
1015 lambda1_at_Q = lambda1_at_MZ;
1016 nu1_at_Q = nu1_at_MZ;
1017 nu2_at_Q = nu2_at_MZ;
1018 nu3_at_Q = nu3_at_MZ;
1019 nu4_at_Q = nu4_at_MZ;
1020 nu5_at_Q = nu5_at_MZ;
1021 mu1_at_Q = mu1_at_MZ;
1022 mu2_at_Q = mu2_at_MZ;
1023 mu3_at_Q = mu3_at_MZ;
1024 mu4_at_Q = mu4_at_MZ;
1025 mu5_at_Q = mu5_at_MZ;
1026 mu6_at_Q = mu6_at_MZ;
1027 }
1028 else //at some other scale
1029 {
1030 double InitVals[12];
1031 InitVals[0]=lambda1_at_MZ;
1032 InitVals[1]=nu1_at_MZ;
1033 InitVals[2]=nu2_at_MZ;
1034 InitVals[3]=nu3_at_MZ;
1035 InitVals[4]=nu4_at_MZ;
1036 InitVals[5]=nu5_at_MZ;
1037 InitVals[6]=mu1_at_MZ;
1038 InitVals[7]=mu2_at_MZ;
1039 InitVals[8]=mu3_at_MZ;
1040 InitVals[9]=mu4_at_MZ;
1041 InitVals[10]=mu5_at_MZ;
1042 InitVals[11]=mu6_at_MZ;
1043
1044 Q_cutoff=myRunnerTHDMW->RGERunnerMW(InitVals, 12, log10(MZ), Q_THDMW, flag, RpepsTHDMW, NLOuniscale); //Running up to Q_cutoff<=Q_THDM
1045
1046 lambda1_at_Q = InitVals[0];
1047 nu1_at_Q = InitVals[1];
1048 nu2_at_Q = InitVals[2];
1049 nu3_at_Q = InitVals[3];
1050 nu4_at_Q = InitVals[4];
1051 nu5_at_Q = InitVals[5];
1052 mu1_at_Q=InitVals[6];
1053 mu2_at_Q=InitVals[7];
1054 mu3_at_Q=InitVals[8];
1055 mu4_at_Q = InitVals[9];
1056 mu5_at_Q=InitVals[10];
1057 mu6_at_Q=InitVals[11];
1058 }
1059 }//End ManoharWise case
1060 else if( THDMWmodel == "custodialMW")
1061 {
1062 double lambda1_at_MZ=lambda1;
1063 double nu1_at_MZ=nu1;
1064 double nu2_at_MZ=nu2;
1065 double nu4_at_MZ=nu4;
1066 double mu1_at_MZ=mu1;
1067 double mu3_at_MZ=mu3;
1068 double mu4_at_MZ=mu4;
1069 double NLOuniscale=myTHDMW->getNLOuniscaleTHDMW();
1070
1071 if(fabs(Q_THDMW-log10(MZ))<0.005) //at MZ scale
1072 {
1073 Q_cutoff=log10(MZ);
1074
1075 lambda1_at_Q = lambda1_at_MZ;
1076 nu1_at_Q = nu1_at_MZ;
1077 nu2_at_Q = nu2_at_MZ;
1078 nu4_at_Q = nu4_at_MZ;
1079 mu1_at_Q = mu1_at_MZ;
1080 mu3_at_Q = mu3_at_MZ;
1081 mu4_at_Q = mu4_at_MZ;
1082 }
1083 else //at some other scale
1084 {
1085 double InitVals[12];
1086 InitVals[0]=lambda1_at_MZ;
1087 InitVals[1]=nu1_at_MZ;
1088 InitVals[2]=nu2_at_MZ;
1089 InitVals[3]=nu4_at_MZ;
1090 InitVals[4]=mu1_at_MZ;
1091 InitVals[5]=mu3_at_MZ;
1092 InitVals[6]=mu4_at_MZ;
1093
1094 Q_cutoff=myRunnerTHDMW->RGERunnercustodialMW(InitVals, 7, log10(MZ), Q_THDMW, flag, RpepsTHDMW, NLOuniscale); //Running up to Q_cutoff<=Q_THDM
1095
1096 lambda1_at_Q = InitVals[0];
1097 nu1_at_Q = InitVals[1];
1098 nu2_at_Q = InitVals[2];
1099 nu4_at_Q = InitVals[3];
1100 mu1_at_Q=InitVals[4];
1101 mu3_at_Q=InitVals[5];
1102 mu4_at_Q = InitVals[6];
1103 }
1104 }//End custodialMW case
1105}
1106
1108{
1109 if( THDMWmodel != "custodial1" && THDMWmodel != "ManoharWise" && THDMWmodel != "custodialMW")
1110 {
1111 throw std::runtime_error("THDMW unitarity constraints are only implemented for the \"custodial1\", the \"ManoharWise\" and the \"custodialMW\" model.");
1112 }
1113
1114 if( THDMWmodel == "custodial1")
1115 {
1116 double pi=M_PI;
1117 gslpp::matrix<gslpp::complex> Smatrix1(4,4,0.), Smatrix2(4,4,0.);
1118 gslpp::matrix<gslpp::complex> Sbmatrix1(4,4,0.), Sbmatrix2(4,4,0.);
1119 gslpp::matrix<gslpp::complex> Seigenvectors1(4,4,0.), Seigenvectors2(4,4,0.);
1120 gslpp::matrix<gslpp::complex> Seigenvectors1T(4,4,0.), Seigenvectors2T(4,4,0.);
1121 gslpp::vector<double> Seigenvalues1(4,0.), Seigenvalues2(4,0.);
1122 gslpp::vector<gslpp::complex> Sbeigenvalues1(4,0.), Sbeigenvalues2(4,0.);
1123
1124 /*
1125 ******* LO part *************
1126 */
1127
1128 // Definition of the blocks of the S-matrix
1129 Smatrix1.assign(0,0, 3.0*lambda1/(16.0*pi));
1130 Smatrix1.assign(0,1, (2.0*lambda3+lambda4)/(16.0*pi));
1131 Smatrix1.assign(1,0, Smatrix1(0,1));
1132 Smatrix1.assign(0,3, (2.0*nu1+nu2)/(8.0*sqrt(2.0)*pi));
1133 Smatrix1.assign(3,0, Smatrix1(0,3));
1134 Smatrix1.assign(1,1, 3.0*lambda2/(16.0*pi));
1135 Smatrix1.assign(1,3, (2.0*omega1+omega2)/(8.0*sqrt(2.0)*pi));
1136 Smatrix1.assign(3,1, Smatrix1(1,3));
1137 Smatrix1.assign(2,2, (lambda3+5.0*lambda4)/(16.0*pi));
1138 Smatrix1.assign(2,3, (4.0*kappa1+2.0*kappa2)/(16.0*pi));
1139 Smatrix1.assign(3,2, Smatrix1(2,3));
1140 Smatrix1.assign(3,3, (26.0*mu1+17.0*mu3+13.0*mu4)/(32.0*pi));
1141
1142 Smatrix2.assign(0,0, lambda1/(16.0*pi));
1143 Smatrix2.assign(0,1, lambda4/(16.0*pi));
1144 Smatrix2.assign(1,0, Smatrix2(0,1));
1145 Smatrix2.assign(0,3, nu2/(8.0*sqrt(2.0)*pi));
1146 Smatrix2.assign(3,0, Smatrix2(0,3));
1147 Smatrix2.assign(1,1, lambda2/(16.0*pi));
1148 Smatrix2.assign(1,3, omega2/(8.0*sqrt(2.0)*pi));
1149 Smatrix2.assign(3,1, Smatrix2(1,3));
1150 Smatrix2.assign(2,2, (lambda3+lambda4)/(16.0*pi));
1151 Smatrix2.assign(2,3, kappa2/(8.0*pi));
1152 Smatrix2.assign(3,2, Smatrix2(2,3));
1153 Smatrix2.assign(3,3, (14.0*mu1+3.0*mu3+27.0*mu4)/(96.0*pi));
1154
1155 Smatrix1.eigensystem(Seigenvectors1, Seigenvalues1);
1156 Smatrix2.eigensystem(Seigenvectors2, Seigenvalues2);
1157
1158 for (int i=0; i < 4; i++) {
1159 unitarityeigenvalues.assign(i, Seigenvalues1(i));
1160 unitarityeigenvalues.assign(4+i, Seigenvalues2(i));
1161 }
1162 unitarityeigenvalues.assign(8, (lambda3-lambda4)/(16.0*pi));
1163 unitarityeigenvalues.assign(9, sqrt(15.0)*nu4/(16.0*pi));
1164 unitarityeigenvalues.assign(10, sqrt(15.0)*omega4/(16.0*pi));
1165
1166 /*
1167 ******* NLO part *************
1168 */
1169
1170 double blambda1=(12.0*lambda1*lambda1 + 4.0*lambda3*lambda3 + 4.0*lambda3*lambda4 + 4.0*lambda4*lambda4
1171 + 8.0*nu1*nu1 + 8.0*nu1*nu2 + 8.0*nu2*nu2)/(16.0*pi*pi);
1172 double blambda2=(12.0*lambda2*lambda2 + 4.0*lambda3*lambda3 + 4.0*lambda3*lambda4 + 4.0*lambda4*lambda4
1173 + 8.0*omega1*omega1 + 8.0*omega1*omega2 + 8.0*omega2*omega2)/(16.0*pi*pi);
1174 double blambda3=(4.0*lambda3*lambda3 + 4.0*lambda4*lambda4 + (lambda1+lambda2)*(6.0*lambda3+2.0*lambda4)
1175 + 8.0*kappa2*kappa2 + 8.0*nu1*omega1 + 4.0*nu2*omega1 + 4.0*nu1*omega2)/(16.0*pi*pi);
1176 double blambda4=(lambda1*lambda4 + lambda2*lambda4 + 4.0*lambda3*lambda4 + 6.0*lambda4*lambda4
1177 + 4.0*kappa1*kappa1 + 4.0*kappa1*kappa2 + 2.0*kappa2*kappa2 + 2.0*nu2*omega2)/(8.0*pi*pi);
1178 double bmu1=(11.0*mu1*mu1 + 3.0*mu1*mu4 + mu1*(2.0*mu1+6.0*mu3+3.0*mu4)
1179 + 3.0*nu4*nu4 + 3.0*omega4*omega4)/(16.0*pi*pi);
1180 double bmu3=(18.0*kappa1*kappa1 + 18.0*kappa1*kappa2 + 134.0*mu1*mu1 + 6.0*mu1*(39.0*mu3 + 22.0*mu4)
1181 + 3.0*(30.0*mu3*mu3 + 39.0*mu3*mu4 + 9.0*mu4*mu4
1182 + 3.0*nu1*nu1 + 3.0*nu1*nu2 - 5.0*nu4*nu4
1183 + 3.0*omega1*omega1 + 3.0*omega1*omega2 - 5.0*omega4*omega4))/(72.0*pi*pi);
1184 double bmu4=(18.0*kappa2*kappa2 + 4.0*mu1*mu1 + 156.0*mu1*mu4 + 54.0*mu3*mu4 + 144.0*mu4*mu4
1185 + 9.0*nu2*nu2 + 6.0*nu4*nu4 + 9.0*omega2*omega2 + 6.0*omega4*omega4)/(144.0*pi*pi);
1186 double bnu1=(6.0*kappa1*kappa1 + 6.0*kappa2*kappa2 + 18.0*lambda1*nu1
1187 + 78.0*mu1*nu1 + 51.0*mu3*nu1 + 39.0*mu4*nu1 + 6.0*nu1*nu1
1188 + 6.0*lambda1*nu2 + 32.0*mu1*nu2 + 24.0*mu3*nu2 + 6.0*mu4*nu2
1189 + 6.0*nu2*nu2 + 10.0*nu4*nu4
1190 + 12.0*lambda3*omega1 + 6.0*lambda4*omega1 + 6.0*lambda3*omega2)/(48.0*pi*pi);
1191 double bomega1=(6.0*kappa1*kappa1 + 6.0*kappa2*kappa2
1192 + 12.0*lambda3*nu1 + 6.0*lambda4*nu1 + 6.0*lambda3*nu2
1193 + 18.0*lambda2*omega1 + 78.0*mu1*omega1 + 51.0*mu3*omega1 + 39.0*mu4*omega1 + 6.0*omega1*omega1
1194 + 6.0*lambda2*omega2 + 32.0*mu1*omega2 + 24.0*mu3*omega2 + 6.0*mu4*omega2 + 6.0*omega2*omega2
1195 + 10.0*omega4*omega4)/(48.0*pi*pi);
1196 double bkappa1=(6.0*kappa1*(2.0*lambda3 + 10.0*lambda4 + 18.0*mu1 + 17.0*mu3 + 13.0*mu4 + 2.0*nu1 + 2.0*omega1)
1197 + kappa2*(24.0*lambda4 + 64.0*mu1 + 48.0*mu3 + 24.0*mu4 + 9.0*nu2 + 9.0*omega2)
1198 + 20.0*nu4*omega4)/(96.0*pi*pi);
1199 double bnu2=(4.0*kappa1*kappa2 + 6.0*kappa2*kappa2 + 2.0*lambda1*nu2 + ((14.0*mu1)/3.0 + mu3 + 9.0*mu4)*nu2
1200 + 4.0*nu1*nu2 + 6.0*nu2*nu2 + (25.0*nu4*nu4)/3.0 + 2.0*lambda4*omega2)/(16.0*pi*pi);
1201 double bomega2=(4.0*kappa1*kappa2 + 6.0*kappa2*kappa2 + 2.0*lambda4*nu2 + 2.0*lambda2*omega2
1202 + ((14.0*mu1)/3.0 + mu3 + 9.0*mu4)*omega2 + 4.0*omega1*omega2 + 6.0*omega2*omega2
1203 + (25.0*omega4*omega4)/3.0)/(16.0*pi*pi);
1204 double bkappa2=(kappa2*(6.0*lambda3 + 6.0*lambda4 + 14.0*mu1 + 3.0*mu3 + 27.0*mu4
1205 + 6.0*nu1 + 12.0*nu2 + 6.0*omega1 + 12.0*omega2)
1206 + 6.0*kappa1*(nu2 + omega2) + 42.0*nu4*omega4)/(48.0*pi*pi);
1207 double bnu4=(11.0*mu1*nu4 + 3.0*mu3*nu4 + 9.0*mu4*nu4 + 3.0*nu1*nu4 + 9.0*nu2*nu4
1208 + 3.0*kappa1*omega4 + 9.0*kappa2*omega4)/(16.0*pi*pi);
1209 double bomega4=(3.0*kappa1*nu4 + 9.0*kappa2*nu4
1210 + (11.0*mu1 + 3.0*(mu3 + 3.0*mu4 + omega1 + 3.0*omega2))*omega4)/(16.0*pi*pi);
1211
1212 Sbmatrix1.assign(0,0, 3.0*blambda1/(16.0*pi));
1213 Sbmatrix1.assign(0,1, (2.0*blambda3+blambda4)/(16.0*pi));
1214 Sbmatrix1.assign(1,0, Sbmatrix1(0,1));
1215 Sbmatrix1.assign(0,3, (2.0*bnu1+bnu2)/(8.0*sqrt(2.0)*pi));
1216 Sbmatrix1.assign(3,0, Sbmatrix1(0,3));
1217 Sbmatrix1.assign(1,1, 3.0*blambda2/(16.0*pi));
1218 Sbmatrix1.assign(1,3, (2.0*bomega1+bomega2)/(8.0*sqrt(2.0)*pi));
1219 Sbmatrix1.assign(3,1, Sbmatrix1(1,3));
1220 Sbmatrix1.assign(2,2, (blambda3+5.0*blambda4)/(16.0*pi));
1221 Sbmatrix1.assign(2,3, (4.0*bkappa1+2.0*bkappa2)/(16.0*pi));
1222 Sbmatrix1.assign(3,2, Sbmatrix1(2,3));
1223 Sbmatrix1.assign(3,3, (26.0*bmu1+17.0*bmu3+13.0*bmu4)/(32.0*pi));
1224
1225 Sbmatrix2.assign(0,0, blambda1/(16.0*pi));
1226 Sbmatrix2.assign(0,1, blambda4/(16.0*pi));
1227 Sbmatrix2.assign(1,0, Sbmatrix2(0,1));
1228 Sbmatrix2.assign(0,3, bnu2/(8.0*sqrt(2.0)*pi));
1229 Sbmatrix2.assign(3,0, Sbmatrix2(0,3));
1230 Sbmatrix2.assign(1,1, blambda2/(16.0*pi));
1231 Sbmatrix2.assign(1,3, bomega2/(8.0*sqrt(2.0)*pi));
1232 Sbmatrix2.assign(3,1, Sbmatrix2(1,3));
1233 Sbmatrix2.assign(2,2, (blambda3+blambda4)/(16.0*pi));
1234 Sbmatrix2.assign(2,3, bkappa2/(8.0*pi));
1235 Sbmatrix2.assign(3,2, Sbmatrix2(2,3));
1236 Sbmatrix2.assign(3,3, (14.0*bmu1+3.0*bmu3+27.0*bmu4)/(96.0*pi));
1237
1238 Seigenvectors1T=Seigenvectors1.hconjugate();
1239 Seigenvectors2T=Seigenvectors2.hconjugate();
1240
1241 for (int i=0; i < 4; i++) {
1242 for (int k=0; k < 4; k++) {
1243 for (int l=0; l < 4; l++) {
1244 Sbeigenvalues1.assign(i, Sbeigenvalues1(i) + Seigenvectors1T(i,k) * Sbmatrix1(k,l) * Seigenvectors1(l,i) );
1245 Sbeigenvalues2.assign(i, Sbeigenvalues2(i) + Seigenvectors2T(i,k) * Sbmatrix2(k,l) * Seigenvectors2(l,i) );
1246 }
1247 }
1248 betaeigenvalues.assign(i, -1.5 * Sbeigenvalues1(i));
1249 betaeigenvalues.assign(i+4, -1.5 * Sbeigenvalues2(i));
1250 }
1251
1252 betaeigenvalues.assign(8, -1.5 * (blambda3-blambda4)/(16.0*pi));
1253 betaeigenvalues.assign(9, -1.5 * sqrt(15.0)*bnu4/(16.0*pi));
1254 betaeigenvalues.assign(10, -1.5 * sqrt(15.0)*bomega4/(16.0*pi));
1255
1256 for (int i=0; i < 11; i++) {
1257 NLOunitarityeigenvalues.assign(i, -(gslpp::complex::i()-1.0/pi)*unitarityeigenvalues(i)*unitarityeigenvalues(i) + betaeigenvalues(i) );
1258 }
1259 }//End of the custodial1 case
1260
1261 if( THDMWmodel == "ManoharWise")
1262 {
1263 double pi=M_PI;
1264
1265 /*
1266 ******* LO part *************
1267 */
1268
1269 // Eigenvalues of the S-matrix, calculated by Li Cheng and Victor Miralles
1270 double muA = 4.0*mu1+4.0*mu2+8.5*mu3+5.0*mu4+1.5*mu5+2.5*mu6;
1271 double muB = (4.0*mu1+4.0*mu2+1.5*mu3+12.0*mu4+1.5*mu5-0.5*mu6)/3.0;
1272 double muC = (-0.5*mu1-0.5*mu2+1.5*mu3+1.5*mu4+12.0*mu5+4.0*mu6)/3.0;
1273 double MA1 = 3.0*lambda1 + muA - sqrt(9.0*lambda1*lambda1-6.0*lambda1*muA+muA*muA+32.0*nu1*nu1+32.0*nu1*nu2+8.0*nu2*nu2);
1274 double MA2 = 3.0*lambda1 + muA + sqrt(9.0*lambda1*lambda1-6.0*lambda1*muA+muA*muA+32.0*nu1*nu1+32.0*nu1*nu2+8.0*nu2*nu2);
1275 double MB1 = lambda1 + muB - sqrt(lambda1*lambda1-2.0*lambda1*muB+muB*muB+8.0*nu2*nu2);
1276 double MB2 = lambda1 + muB + sqrt(lambda1*lambda1-2.0*lambda1*muB+muB*muB+8.0*nu2*nu2);
1277 double MC1 = lambda1 + muC - sqrt(lambda1*lambda1-2.0*lambda1*muC+muC*muC+32.0*nu3*nu3);
1278 double MC2 = lambda1 + muC + sqrt(lambda1*lambda1-2.0*lambda1*muC+muC*muC+32.0*nu3*nu3);
1279 unitarityeigenvalues.assign(0, MA1/(32.0*pi));
1280 unitarityeigenvalues.assign(1, MA2/(32.0*pi));
1281 unitarityeigenvalues.assign(2, MB1/(32.0*pi));
1282 unitarityeigenvalues.assign(3, MB2/(32.0*pi));
1283 unitarityeigenvalues.assign(4, MC1/(32.0*pi));
1284 unitarityeigenvalues.assign(5, MC2/(32.0*pi));
1285 unitarityeigenvalues.assign(6, lambda1/(16.0*pi));
1286 unitarityeigenvalues.assign(7, sqrt(15.0)*(nu4+nu5)/(64.0*pi));
1287
1288 /*
1289 ******* NLO part *************
1290 */
1291
1292 //beta_lambda1
1293 double betalambda1 = (12.0*lambda1*lambda1 + 8.0*nu1*nu1 + 8.0*nu1*nu2 + 4.0*nu2*nu2 + 16.0*nu3*nu3)/(16.0*pi*pi);
1294 //beta_nu1
1295 double betanu1 = (2.0*nu1*nu1 + nu2*nu2 + 4.0*nu3*nu3 + 2.0*lambda1*(3.0*nu1+nu2)
1296 + (7.0*nu4*nu4 - 4.0*nu4*nu5 + 7.0*nu5*nu5)/3.0
1297 + nu1*(8.0*mu1 + 8.0*mu2 + 17.0*mu3 + 10.0*mu4 + 3.0*mu5 + 5.0*mu6)
1298 + nu2*(8.0*mu1 + 8.0*mu2 + 24.0*mu3 + 3.0*mu4
1299 + 3.0*mu5 + 8.0*mu6)/3.0)/(16.0*pi*pi);
1300 //beta_nu2
1301 double betanu2 = (2.0*nu2*nu2 + 4.0*nu1*nu2 + 16.0*nu3*nu3 + 2.0*lambda1*nu2
1302 + (4.0*nu4*nu4 + 17.0*nu4*nu5 + 4.0*nu5*nu5)/3.0
1303 + nu2*(8.0*mu1 + 8.0*mu2 + 3.0*mu3 + 24.0*mu4
1304 + 3.0*mu5 - mu6)/3.0)/(16.0*pi*pi);
1305 //beta_nu3
1306 double betanu3 = (2.0*nu3*(lambda1 + 2.0*nu1 + 3.0*nu2)
1307 + (17.0*nu4*nu4 + 16.0*nu4*nu5 + 17.0*nu5*nu5)/12.0
1308 + nu3*(-mu1 - mu2 + 3.0*mu3 + 3.0*mu4
1309 + 24.0*mu5 + 8.0*mu6)/3.0)/(16.0*pi*pi);
1310 //beta_nu4
1311 double betanu4 = (8.0*nu3*nu4 + 2.0*nu3*nu5
1312 + nu5*(2.0*nu2 - mu2 + 2.0*mu4 + 4.0*mu5 + mu6)
1313 + nu4*(3.0*nu1 + 2.0*nu2 + 6.0*mu1 + 2.0*mu2 + 3.0*mu3
1314 + 2.0*mu4 + mu5 + mu6))/(16.0*pi*pi);
1315 //beta_nu5
1316 double betanu5 = (2.0*nu3*nu4 + 8.0*nu3*nu5
1317 + nu4*(2.0*nu2 - mu1 + 2.0*mu4 + 4.0*mu5 + mu6)
1318 + nu5*(3.0*nu1 + 2.0*nu2 + 6.0*mu1 + 2.0*mu2 + 3.0*mu3
1319 + 2.0*mu4 + mu5 + mu6))/(16.0*pi*pi);
1320 //beta_mu1
1321 double betamu1 = (3.0*nu4*nu4 + 7.0*mu1*mu1
1322 + mu1*(6.0*mu2 + 6.0*mu3 + 4.0*mu4 - mu5 - 2.0*mu6)
1323 + mu2*(4.0*mu4 - mu5)
1324 - 2.0*mu4*mu6 + 2.0*mu5*mu6 + mu6*mu6)/(16.0*pi*pi);
1325 //beta_mu2
1326 double betamu2 = (3.0*nu5*nu5 + 7.0*mu2*mu2
1327 + mu2*(6.0*mu1 + 6.0*mu3 + 4.0*mu4 - mu5 - 2.0*mu6)
1328 + mu1*(4.0*mu4 - mu5)
1329 - 2.0*mu4*mu6 + 2.0*mu5*mu6 + mu6*mu6)/(16.0*pi*pi);
1330 //beta_mu3
1331 double betamu3 = (20.0*mu3*mu3
1332 + mu3*(288.0*mu1 + 288.0*mu2 + 360.0*mu4 + 108.0*mu5 + 180.0*mu6)/18.0
1333 + (36.0*nu1*nu1 + 36.0*nu1*nu2 - 24.0*nu4*nu4 - 12.0*nu4*nu5
1334 - 24.0*nu5*nu5 + 62.0*mu1*mu1 + 64.0*mu1*mu2 + 62.0*mu2*mu2
1335 + (96.0*mu4 + 18.0*mu5 + 58.0*mu6)*(mu1 + mu2)
1336 + 54.0*mu4*mu4 + 36.0*mu4*mu5 + 132.0*mu4*mu6 + 18.0*mu5*mu5
1337 + 18.0*mu5*mu6 + 29.0*mu6*mu6)/18.0)/(16.0*pi*pi);
1338 //beta_mu4
1339 double betamu4 = (nu2*nu2 - (nu4*nu4 - 4.0*nu4*nu5 + nu5*nu5)/3.0 + 10.0*mu4*mu4 /*mu4??*/
1340 + mu5*(mu1 + mu2 + mu6)
1341 + mu4*(4.0*(4.0*mu1 + 4.0*mu2 + mu6)/3.0 + 2.0*mu5 + 6.0*mu4)
1342 + 4.0*mu5*mu5
1343 + (mu1*mu1 + mu2*mu2 - 4.0*mu6*(mu1+mu2) - 2.0*mu6*mu6)/9.0
1344 + 26.0/9.0*mu1*mu2)/(16.0*pi*pi);
1345 //beta_mu5
1346 double betamu5 = (4.0*nu3*nu3 - (nu4*nu4 - 4.0*nu4*nu5 + nu5*nu5)/3.0
1347 + mu5*((mu1 + mu2 + 19.0*mu6)/3.0 + 8.0*mu4 + 6.0*mu3)
1348 + 2.0*mu4*mu6 + 8.0*mu5*mu5
1349 + (mu1*mu1 + mu2*mu2 - 4.0*mu6*(mu1+mu2) + 7.0*mu6*mu6)/9.0
1350 - 10.0/9.0*mu1*mu2)/(16.0*pi*pi);
1351 //beta_mu6
1352 double betamu6 = (0.5*mu6*mu6 + 3.0*nu4*nu4 + 3.0*nu5*nu5
1353 - 2.0*(mu1*mu1 + mu2*mu2) + 6.0*mu5*(mu1 + mu2)
1354 + 7.0*mu6*(mu1 + mu2 + mu3))/(16.0*pi*pi);
1355
1356
1357 double betamuA = 4.0*betamu1+4.0*betamu2+8.5*betamu3+5.0*betamu4+1.5*betamu5+2.5*betamu6;
1358 double betamuB = (4.0*betamu1+4.0*betamu2+1.5*betamu3+12.0*betamu4+1.5*betamu5-0.5*betamu6)/3.0;
1359 double betamuC = (-0.5*betamu1-0.5*betamu2+1.5*betamu3+1.5*betamu4+12.0*betamu5+4.0*betamu6)/3.0;
1360 double betaMA1 = 3.0*betalambda1 + betamuA
1361 - sqrt(9.0*betalambda1*betalambda1-6.0*betalambda1*betamuA+betamuA*betamuA
1362 +32.0*betanu1*betanu1+32.0*betanu1*betanu2+8.0*betanu2*betanu2);
1363 double betaMA2 = 3.0*betalambda1 + betamuA
1364 + sqrt(9.0*betalambda1*betalambda1-6.0*betalambda1*betamuA+betamuA*betamuA
1365 +32.0*betanu1*betanu1+32.0*betanu1*betanu2+8.0*betanu2*betanu2);
1366 double betaMB1 = betalambda1 + betamuB - sqrt(betalambda1*betalambda1-2.0*betalambda1*betamuB+betamuB*betamuB+8.0*betanu2*betanu2);
1367 double betaMB2 = betalambda1 + betamuB + sqrt(betalambda1*betalambda1-2.0*betalambda1*betamuB+betamuB*betamuB+8.0*betanu2*betanu2);
1368 double betaMC1 = betalambda1 + betamuC - sqrt(betalambda1*betalambda1-2.0*betalambda1*betamuC+betamuC*betamuC+32.0*betanu3*betanu3);
1369 double betaMC2 = betalambda1 + betamuC + sqrt(betalambda1*betalambda1-2.0*betalambda1*betamuC+betamuC*betamuC+32.0*betanu3*betanu3);
1370
1371 betaeigenvalues.assign(0, -1.5 * betaMA1/(32.0*pi));
1372 betaeigenvalues.assign(1, -1.5 * betaMA2/(32.0*pi));
1373 betaeigenvalues.assign(2, -1.5 * betaMB1/(32.0*pi));
1374 betaeigenvalues.assign(3, -1.5 * betaMB2/(32.0*pi));
1375 betaeigenvalues.assign(4, -1.5 * betaMC1/(32.0*pi));
1376 betaeigenvalues.assign(5, -1.5 * betaMC2/(32.0*pi));
1377 betaeigenvalues.assign(6, -1.5 * betalambda1/(16.0*pi));
1378 betaeigenvalues.assign(7, -1.5 * sqrt(15.0)*(betanu4+betanu5)/(64.0*pi));
1379
1380
1381 for (int i=0; i < 8; i++) {
1382 NLOunitarityeigenvalues.assign(i, -(gslpp::complex::i()-1.0/pi)*unitarityeigenvalues(i)*unitarityeigenvalues(i) + betaeigenvalues(i) );
1383 }
1384
1385 }//End of the ManoharWise case
1386 if( THDMWmodel == "custodialMW")
1387 {
1388 double pi=M_PI;
1389 gslpp::matrix<gslpp::complex> Smatrix1(2,2,0.), Smatrix2(2,2,0.);
1390 gslpp::matrix<gslpp::complex> Seigenvectors1(2,2,0.), Seigenvectors2(2,2,0.);
1391 gslpp::vector<double> Seigenvalues1(2,0.), Seigenvalues2(2,0.);
1392
1393 /*
1394 ******* LO part *************
1395 */
1396
1397 // Definition of the blocks of the S-matrix, taken from 1303.4848
1398 Smatrix1.assign(0,0, 3.0*lambda1/(16.0*pi));
1399 Smatrix1.assign(0,1, (2.0*nu1+nu2)/(8.0*sqrt(2.0)*pi));
1400 Smatrix1.assign(1,0, Smatrix1(0,1));
1401 Smatrix1.assign(1,1, (26.0*mu1+17.0*mu3+13.0*mu4)/(32.0*pi));
1402
1403 Smatrix2.assign(0,0, lambda1/(16.0*pi));
1404 Smatrix2.assign(0,1, nu2/(8.0*sqrt(2.0)*pi));
1405 Smatrix2.assign(1,0, Smatrix2(0,1));
1406 Smatrix2.assign(1,1, (14.0*mu1+3.0*mu3+27.0*mu4)/(96.0*pi));
1407
1408 Smatrix1.eigensystem(Seigenvectors1, Seigenvalues1);
1409 Smatrix2.eigensystem(Seigenvectors2, Seigenvalues2);
1410
1411 for (int i=0; i < 2; i++) {
1412 unitarityeigenvalues.assign(i, Seigenvalues1(i));
1413 unitarityeigenvalues.assign(2+i, Seigenvalues2(i));
1414 }
1415 unitarityeigenvalues.assign(4, sqrt(15.0)*nu4/(16.0*pi)); //non-custodial limit from 1606.01298
1416 }//End of the custodialMW case
1417}
1418
1419// Direct Searches
1420
1421
1422
1423gslpp::matrix<double> THDMWcache::readTable(std::string filename, int rowN, int colN){
1424
1425 std::ifstream INfile;
1426 std::string lineTab;
1427 INfile.open( filename.c_str() );
1428 if(INfile.fail()){
1429 std::cout<<"error: in THDMWcache, table doesn't exist!"<< filename <<std::endl;
1430 }
1431
1432 gslpp::matrix<double> arrayTab(rowN, colN, 0.);
1433 int a =0;
1434 int b=0;
1435 double v;
1436
1437 while(INfile.good()){
1438 while(getline(INfile, lineTab)){
1439 if( lineTab[0]=='#' )continue;
1440 else{
1441 std::istringstream streamTab(lineTab);
1442 b=0;
1443 while(streamTab >>v){
1444 arrayTab.assign(a,b,v);
1445 b++;
1446 }
1447 a++;
1448 }
1449 }
1450 }
1451
1452 INfile.close();
1453
1454 return arrayTab;
1455}
1456
1457//1D interpolation
1458
1459double THDMWcache::interpolate(gslpp::matrix<double> arrayTab, double x){
1460
1461 int rowN=arrayTab.size_i();
1462
1463 double xmin = arrayTab(0,0);
1464 double xmax = arrayTab(rowN-1,0);
1465 double interval = arrayTab(1,0)-arrayTab(0,0);
1466 int Nintervals = (x-xmin)/interval;
1467 double y = 0.0;
1468
1469 if(x<xmin){
1470// std::cout<<"warning: your table parameter value is smaller than the minimum allowed value"<<std::endl;
1471 return 0.;
1472 }
1473 else if(x>xmax){
1474// std::cout<<"warning: your table parameter value is greater than the maximum allowed value"<<std::endl;
1475 return 0.;
1476 }
1477 else{
1478 y =(arrayTab(Nintervals+1,1)-arrayTab(Nintervals,1))/(arrayTab(Nintervals+1,0)
1479 -arrayTab(Nintervals,0))*(x-arrayTab(Nintervals,0))+arrayTab(Nintervals,1);
1480 return y;
1481 }
1482}
1483
1484
1485//3D interpolation
1486
1487double THDMWcache::interpolate3D(gslpp::matrix<double> arrayTab, double x, double y, double z){
1488
1489 int rowN=arrayTab.size_i();
1490 double xmin = arrayTab(0,0);
1491 double xmax = arrayTab(rowN-1,0);
1492 double ymin = arrayTab(0,1);
1493 double ymax = arrayTab(rowN-1,1);
1494 double zmin = arrayTab(0,2);
1495 double zmax = arrayTab(rowN-1,2);
1496 double intervalx = arrayTab(1,0)-arrayTab(0,0);
1497 int iy=1;
1498 do iy++;
1499 while(arrayTab(iy,1)-arrayTab(iy-1,1)==0&&iy<6000000);
1500 double intervaly = arrayTab(iy,1)-arrayTab(iy-1,1);
1501 int iz=1;
1502 do iz++;
1503 while(arrayTab(iz,2)-arrayTab(iz-1,2)==0&&iz<6000000);
1504 double intervalz = arrayTab(iz,2)-arrayTab(iz-1,2);
1505 int Nintervalsx = (x-xmin)/intervalx;
1506 int Nintervalsy = (y-ymin)/intervaly;
1507 int Nintervalsz = (z-zmin)/intervalz;
1508 int MaxNintervalx = round((xmax-xmin)/intervalx);
1509 int MaxNintervaly = round((ymax-ymin)/intervaly);
1510 int MaxNintervalz = round((zmax-zmin)/intervalz);
1511 //std::cout<<"MaxNintervalx="<<MaxNintervalx<<std::endl;
1512 //std::cout<<"MaxNintervaly="<<MaxNintervaly<<std::endl;
1513 //std::cout<<"MaxNintervalz="<<MaxNintervalz<<std::endl;
1514 //std::cout<<"imax="<<iz*Nintervalsz+iy*Nintervalsy+Nintervalsx<<std::endl;
1515 //std::cout<<"imax+1="<<(iz)*(Nintervalsz+1)+(iy)*(Nintervalsy+1)+Nintervalsx+1<<std::endl;
1516 //std::cout<<"Nintervalx="<<Nintervalsx<<std::endl;
1517 //std::cout<<"Nintervaly="<<Nintervalsy<<std::endl;
1518 //std::cout<<"Nintervalz="<<Nintervalsz<<std::endl;
1519 if(x<xmin||Nintervalsx>MaxNintervalx||y<ymin||Nintervalsy>MaxNintervaly||z<zmin||Nintervalsz>MaxNintervalz){
1520 //std::cout<<"warning: the parameter point lies outside the table"<<std::endl;
1521 //std::cout<<"x="<<x<<std::endl;
1522 //std::cout<<"y="<<y<<std::endl;
1523 //std::cout<<"z="<<z<<std::endl;
1524 return 0.;
1525 }
1526 else{
1527
1528 double x1=arrayTab(iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,0);
1529 double x2=arrayTab(iz*(Nintervalsz)+iy*(Nintervalsy)+Nintervalsx+1,0);
1530 double y1=arrayTab(iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,1);
1531 double y2=arrayTab(iz*(Nintervalsz)+iy*(Nintervalsy+1)+Nintervalsx,1);
1532 double z1=arrayTab(iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,2);
1533 double z2=arrayTab(iz*(Nintervalsz+1)+iy*(Nintervalsy)+Nintervalsx,2);
1534
1535 return (arrayTab(iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,3) * (x2-x) * (y2-y) * (z2-z)
1536 +arrayTab(iz*Nintervalsz+iy*Nintervalsy+Nintervalsx+1,3) * (x-x1) * (y2-y) * (z2-z)
1537 +arrayTab(iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx,3) * (x2-x) * (y-y1) * (z2-z)
1538 +arrayTab(iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx,3) * (x2-x) * (y2-y) * (z-z1)
1539 +arrayTab(iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx+1,3) * (x-x1) * (y-y1) * (z2-z)
1540 +arrayTab(iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx+1,3) * (x-x1) * (y2-y) * (z-z1)
1541 +arrayTab(iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx,3) * (x2-x) * (y-y1) * (z-z1)
1542 +arrayTab(iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx+1,3) * (x-x1) * (y-y1) * (z-z1))/((x2-x1)*(y2-y1)*(z2-z1));
1543
1544 }
1545}
1546
1547
1548
1549//4D interpolation
1550
1551double THDMWcache::interpolate4D(gslpp::matrix<double> arrayTab, double x, double y, double z, double v){
1552
1553 int rowN=arrayTab.size_i();
1554
1555 double xmin = arrayTab(0,0);
1556 double xmax = arrayTab(rowN-1,0);
1557 double ymin = arrayTab(0,1);
1558 double ymax = arrayTab(rowN-1,1);
1559 double zmin = arrayTab(0,2);
1560 double zmax = arrayTab(rowN-1,2);
1561 double vmin = arrayTab(0,3);
1562 double vmax = arrayTab(rowN-1,3);
1563 double intervalx = arrayTab(1,0)-arrayTab(0,0);
1564 int iy=1;
1565 do iy++;
1566 while(arrayTab(iy,1)-arrayTab(iy-1,1)==0&&iy<6000000);
1567 double intervaly = arrayTab(iy,1)-arrayTab(iy-1,1);
1568 int iz=1;
1569 do iz++;
1570 while(arrayTab(iz,2)-arrayTab(iz-1,2)==0&&iz<6000000);
1571 double intervalz = arrayTab(iz,2)-arrayTab(iz-1,2);
1572 int iv=1;
1573 do iv++;
1574 while(arrayTab(iv,3)-arrayTab(iv-1,3)==0&&iv<6000000);
1575 double intervalv = arrayTab(iv,3)-arrayTab(iv-1,3);
1576 int Nintervalsx = (x-xmin)/intervalx;
1577 int Nintervalsy = (y-ymin)/intervaly;
1578 int Nintervalsz = (z-zmin)/intervalz;
1579 int Nintervalsv = (v-vmin)/intervalv;
1580 int MaxNintervalx = round((xmax-xmin)/intervalx);
1581 int MaxNintervaly = round((ymax-ymin)/intervaly);
1582 int MaxNintervalz = round((zmax-zmin)/intervalz);
1583 int MaxNintervalv = round((vmax-vmin)/intervalv);
1584 //std::cout<<"xmin="<<xmin<<std::endl;
1585 //std::cout<<"xmax="<<xmax<<std::endl;
1586 //std::cout<<"ymin="<<ymin<<std::endl;
1587 //std::cout<<"ymax="<<ymax<<std::endl;
1588 //std::cout<<"zmin="<<zmin<<std::endl;
1589 //std::cout<<"zmax="<<zmax<<std::endl;
1590 //std::cout<<"vmin="<<vmin<<std::endl;
1591 //std::cout<<"vmax="<<vmax<<std::endl;
1592 //std::cout<<"intervalx="<<intervalx<<std::endl;
1593 //std::cout<<"intervaly="<<intervaly<<std::endl;
1594 //std::cout<<"intervalz="<<intervalz<<std::endl;
1595 //std::cout<<"intervalv="<<intervalv<<std::endl;
1596 //std::cout<<"Nintervalsx="<<Nintervalsx<<std::endl;
1597 //std::cout<<"Nintervalsy="<<Nintervalsy<<std::endl;
1598 //std::cout<<"Nintervalsz="<<Nintervalsz<<std::endl;
1599 //std::cout<<"Nintervalsv="<<Nintervalsv<<std::endl;
1600
1601 if(x<xmin||Nintervalsx>MaxNintervalx||y<ymin||Nintervalsy>MaxNintervaly||z<zmin||Nintervalsz>MaxNintervalz||v<vmin||Nintervalsv>MaxNintervalv){
1602 //std::cout<<"warning: the parameter point lies outside the table"<<std::endl;
1603 //std::cout<<"x="<<x<<std::endl;
1604 //std::cout<<"y="<<y<<std::endl;
1605 //std::cout<<"z="<<z<<std::endl;
1606 //std::cout<<"v="<<v<<std::endl;
1607 return 0.;
1608 }
1609 else{
1610 double x1=arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,0);
1611 double x2=arrayTab(iv*(Nintervalsv)+iz*(Nintervalsz)+iy*(Nintervalsy)+Nintervalsx+1,0);
1612 double y1=arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,1);
1613 double y2=arrayTab(iv*(Nintervalsv)+iz*(Nintervalsz)+iy*(Nintervalsy+1)+Nintervalsx,1);
1614 double z1=arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,2);
1615 double z2=arrayTab(iv*(Nintervalsv)+iz*(Nintervalsz+1)+iy*(Nintervalsy)+Nintervalsx,2);
1616 double v1=arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,3);
1617 double v2=arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz)+iy*(Nintervalsy)+Nintervalsx,3);
1618 //std::cout<<"Nmax="<<iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx+1<<std::endl;
1619 //std::cout<<"x1="<<x1<<std::endl;
1620 //std::cout<<"x2="<<x2<<std::endl;
1621 //std::cout<<"y1="<<y1<<std::endl;
1622 //std::cout<<"y2="<<y2<<std::endl;
1623 //std::cout<<"z1="<<z1<<std::endl;
1624 //std::cout<<"z2="<<z2<<std::endl;
1625 //std::cout<<"v1="<<v1<<std::endl;
1626 //std::cout<<"v2="<<v2<<std::endl;
1627 /*std::cout<<"Interpolation= "<<(arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,4) * (x2-x) * (y2-y) * (z2-z) * (v2-v)
1628 +arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx+1,4) * (x-x1) * (y2-y) * (z2-z) * (v2-v)
1629 +arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx,4) * (x2-x) * (y-y1) * (z2-z) * (v2-v)
1630 +arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx,4) * (x2-x) * (y2-y) * (z-z1) * (v2-v)
1631 +arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,4) * (x2-x) * (y2-y) * (z2-z) * (v-v1)
1632 +arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx+1,4) * (x-x1) * (y-y1) * (z2-z) * (v2-v)
1633 +arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx+1,4) * (x-x1) * (y2-y) * (z-z1) * (v2-v)
1634 +arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx+1,4) * (x-x1) * (y2-y) * (z2-z) * (v-v1)
1635 +arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx,4) * (x2-x) * (y-y1) * (z-z1) * (v2-v)
1636 +arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx,4) * (x2-x) * (y-y1) * (z2-z) * (v-v1)
1637 +arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx,4) * (x2-x) * (y2-y) * (z-z1) * (v-v1)
1638 +arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx+1,4) * (x-x1) * (y-y1) * (z-z1) * (v2-v)
1639 +arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx+1,4) * (x-x1) * (y-y1) * (z2-z) * (v-v1)
1640 +arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx+1,4) * (x-x1) * (y2-y) * (z-z1) * (v-v1)
1641 +arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx,4) * (x2-x) * (y-y1) * (z-z1) * (v-v1)
1642 +arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx+1,4) * (x-x1) * (y-y1) * (z-z1) * (v-v1))/((x2-x1)*(y2-y1)*(z2-z1)*(v2-v1))<<std::endl;*/
1643 return (arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,4) * (x2-x) * (y2-y) * (z2-z) * (v2-v)
1644 +arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx+1,4) * (x-x1) * (y2-y) * (z2-z) * (v2-v)
1645 +arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx,4) * (x2-x) * (y-y1) * (z2-z) * (v2-v)
1646 +arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx,4) * (x2-x) * (y2-y) * (z-z1) * (v2-v)
1647 +arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,4) * (x2-x) * (y2-y) * (z2-z) * (v-v1)
1648 +arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx+1,4) * (x-x1) * (y-y1) * (z2-z) * (v2-v)
1649 +arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx+1,4) * (x-x1) * (y2-y) * (z-z1) * (v2-v)
1650 +arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx+1,4) * (x-x1) * (y2-y) * (z2-z) * (v-v1)
1651 +arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx,4) * (x2-x) * (y-y1) * (z-z1) * (v2-v)
1652 +arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx,4) * (x2-x) * (y-y1) * (z2-z) * (v-v1)
1653 +arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx,4) * (x2-x) * (y2-y) * (z-z1) * (v-v1)
1654 +arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx+1,4) * (x-x1) * (y-y1) * (z-z1) * (v2-v)
1655 +arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx+1,4) * (x-x1) * (y-y1) * (z2-z) * (v-v1)
1656 +arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx+1,4) * (x-x1) * (y2-y) * (z-z1) * (v-v1)
1657 +arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx,4) * (x2-x) * (y-y1) * (z-z1) * (v-v1)
1658 +arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx+1,4) * (x-x1) * (y-y1) * (z-z1) * (v-v1))/((x2-x1)*(y2-y1)*(z2-z1)*(v2-v1));
1659 }
1660}
1661
1662/*
1663//4D log interpolation
1664
1665double THDMWcache::loginterpolate4D(gslpp::matrix<double> arrayTab, double x, double y, double z, double v){
1666
1667 int rowN=arrayTab.size_i();
1668
1669 double xmin = arrayTab(0,0);
1670 double xmax = arrayTab(rowN-1,0);
1671 double ymin = arrayTab(0,1);
1672 double ymax = arrayTab(rowN-1,1);
1673 double zmin = arrayTab(0,2);
1674 double zmax = arrayTab(rowN-1,2);
1675 double vmin = arrayTab(0,3);
1676 double vmax = arrayTab(rowN-1,3);
1677 double intervalx = arrayTab(1,0)-arrayTab(0,0);
1678 int iy=1;
1679 do iy++;
1680 while(arrayTab(iy,1)-arrayTab(iy-1,1)==0&&iy<6000000);
1681 double intervaly = arrayTab(iy,1)-arrayTab(iy-1,1);
1682 int iz=1;
1683 do iz++;
1684 while(arrayTab(iz,2)-arrayTab(iz-1,2)==0&&iz<6000000);
1685 double intervalz = arrayTab(iz,2)-arrayTab(iz-1,2);
1686 int iv=1;
1687 do iv++;
1688 while(arrayTab(iv,3)-arrayTab(iv-1,3)==0&&iv<6000000);
1689 double intervalv = arrayTab(iv,3)-arrayTab(iv-1,3);
1690 int Nintervalsx = (x-xmin)/intervalx;
1691 int Nintervalsy = (y-ymin)/intervaly;
1692 int Nintervalsz = (z-zmin)/intervalz;
1693 int Nintervalsv = (v-vmin)/intervalv;
1694
1695 if(x<xmin||x>xmax||y<ymin||y>ymax||z<zmin||z>zmax||v<vmin||v>vmax){
1696 std::cout<<"warning: the parameter point lies outside the table"<<std::endl;
1697 return 0.;
1698 }
1699 else{
1700 double x1=arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,0);
1701 double x2=arrayTab(iv*(Nintervalsv)+iz*(Nintervalsz)+iy*(Nintervalsy)+Nintervalsx+1,0);
1702 double y1=arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,1);
1703 double y2=arrayTab(iv*(Nintervalsv)+iz*(Nintervalsz)+iy*(Nintervalsy+1)+Nintervalsx,1);
1704 double z1=arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,2);
1705 double z2=arrayTab(iv*(Nintervalsv)+iz*(Nintervalsz+1)+iy*(Nintervalsy)+Nintervalsx,2);
1706 double v1=arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,3);
1707 double v2=arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz)+iy*(Nintervalsy)+Nintervalsx,3);
1708 double N1=1e-15;
1709 double N2=1e-15;
1710 double N3=1e-15;
1711 double N4=1e-15;
1712 double N5=1e-15;
1713 double N6=1e-15;
1714 double N7=1e-15;
1715 double N8=1e-15;
1716 double N9=1e-15;
1717 double N10=1e-15;
1718 double N11=1e-15;
1719 double N12=1e-15;
1720 double N13=1e-15;
1721 double N14=1e-15;
1722 double N15=1e-15;
1723 double N16=1e-15;
1724
1725 if(sqrt(pow(arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,4),2))>1e-15) N1=arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,4);
1726 if(sqrt(pow(arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx+1,4),2)>1e-15) N2=arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx+1,4);
1727 if(sqrt(pow(arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx,4),2))>1e-15) N3=arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx,4);
1728 if(sqrt(pow(arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx,4),2))>1e-15) N4=arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx,4);
1729 if(sqrt(pow(arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,4),2))>1e-15) N5=arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,4);
1730 if(sqrt(pow(arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx+1,4),2))>1e-15) N6=arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx+1,4);
1731 if(sqrt(pow(arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx+1,4),2))>1e-15) N7=arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx+1,4);
1732 if(sqrt(pow(arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx+1,4),2))>1e-15) N8=arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx+1,4);
1733 if(sqrt(pow(arrayTab(iv*Nintervalsv+1+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx,4),2))>1e-15) N9=arrayTab(iv*Nintervalsv+1+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx,4);
1734 if(sqrt(pow(arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx,4),2))>1e-15) N10=arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx,4);
1735 if(sqrt(pow(arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx,4),2))>1e-15) N11=arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx,4);
1736 if(sqrt(pow(arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx+1,4),2))>1e-15) N12=arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx+1,4);
1737 if(sqrt(pow(arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx+1,4),2))>1e-15) N13=arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx+1,4);
1738 if(sqrt(pow(arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx+1,4),2))>1e-15) N14=arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx+1,4);
1739 if(sqrt(pow(arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx,4),2))>1e-15) N15=arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx,4);
1740 if(sqrt(pow(arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx+1,4),2))>1e-15) N16=arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx+1,4);
1741
1742
1743
1744
1745 return (log10(N1) * (x2-x) * (y2-y) * (z2-z) * (v2-v)
1746 +log10(N2) * (x-x1) * (y2-y) * (z2-z) * (v2-v)
1747 +log10(N3) * (x2-x) * (y-y1) * (z2-z) * (v2-v)
1748 +log10(N4) * (x2-x) * (y2-y) * (z-z1) * (v2-v)
1749 +log10(N5) * (x2-x) * (y2-y) * (z2-z) * (v-v1)
1750 +log10(N6) * (x-x1) * (y-y1) * (z2-z) * (v2-v)
1751 +log10(N7) * (x-x1) * (y2-y) * (z-z1) * (v2-v)
1752 +log10(N8) * (x-x1) * (y2-y) * (z2-z) * (v-v1)
1753 +log10(N9) * (x2-x) * (y-y1) * (z-z1) * (v2-v)
1754 +log10(N10) * (x2-x) * (y-y1) * (z2-z) * (v-v1)
1755 +log10(N11) * (x2-x) * (y2-y) * (z-z1) * (v-v1)
1756 +log10(N12) * (x-x1) * (y-y1) * (z-z1) * (v2-v)
1757 +log10(N13) * (x-x1) * (y-y1) * (z2-z) * (v-v1)
1758 +log10(N14) * (x-x1) * (y2-y) * (z-z1) * (v-v1)
1759 +log10(N15) * (x2-x) * (y-y1) * (z-z1) * (v-v1)
1760 +log10(N16) * (x-x1) * (y-y1) * (z-z1) * (v-v1))/((x2-x1)*(y2-y1)*(z2-z1)*(v2-v1));
1761 }
1762}
1763*/
1764
1765/*
1766double THDMWcache::ip_cs_ppto2Sto4t_13(double etaD, double etaU, double THDMW_nu4, double mSR){
1767 int NumPar = 4;
1768 double params[] = {etaD, etaU, THDMW_nu4, mSR};
1769
1770 int i = CacheCheck(ip_cs_ppto2Sto4t_13_cache, NumPar, params);
1771 if (i>=0) {
1772 return ( ip_cs_ppto2Sto4t_13_cache[NumPar][i] );
1773 } else {
1774 double newResult = 0.0;
1775 if (mSR>=500. && mSR <=1500.) {
1776 newResult = interpolate4D(log_cs_ggHp_8, etaD, etaU, THDMW_nu4, mSR);
1777 }
1778 CacheShift(ip_cs_ppto2Sto4t_13_cache, NumPar, params, newResult);
1779 return newResult;
1780 }
1781}*/
1782
1783
1784
1785//double THDMWcache::ip_cs_ppto2Sto4t_13(double THDMW_nu1, double THDMW_nu2, double THDMW_nu4, double THDMW_mS2){
1786// int NumPar = 4;
1787// double params[] = {THDMW_nu1, THDMW_nu2, THDMW_nu4, THDMW_mS2};
1788
1793// double newResult = 0.0;
1794// if (THDMW_mS2>=250000. && THDMW_mS2 <=1000000.) {
1795// newResult = interpolate4D(log_cs_ggH_13, THDMW_nu1, THDMW_nu2, THDMW_nu4, sqrt(THDMW_mS2));
1796// }
1798// return newResult;
1799// }
1800
1802
1803
1804
1805 std::stringstream ex0,ex1,ex2,ex3;
1806 std::stringstream ex1e,ex2e,ex3e;
1807// std::stringstream ex14ep2,ex14em2;
1808 std::stringstream ex4,ex5,ex6,ex7,ex8;
1809 std::stringstream ex4e,ex5e,ex6e,ex7e,ex8e;
1810 std::stringstream ex9,ex10,ex13;
1811 std::stringstream ex9e,ex10e,ex13e;
1812 std::stringstream ex14, ex15,ex16,ex17,ex18,ex19;
1813 std::stringstream th1,th2,th3,th4,th5,th6,th7,th8,th9,th10,th11,th12,th13,th14;
1814
1815 std::stringstream bsg1;
1816
1817 std::cout<<"reading tables"<<std::endl;
1818
1819// std::cout << "HEPFITTABS = " << getenv("HEPFITPATH") << std::endl;
1820 std::stringstream path;
1821 path << getenv("HEPFITTABS") << "/THDM/tabs/";
1822// path << "/Users/victormirallesaznar/tabs/";
1823// std::cout << path.str() << std::endl;
1824 std::string tablepath=path.str();
1825// std::cout << tablepath << std::endl;
1826
1827
1828
1830// std::cout<<"br_tt="<<br_tt<<std::endl;
1831// double brtt1[4][2];
1832// brtt1[0][1]=1;
1833// gslpp::matrix<double> brtt1(19861,2,0.);
1834// std::stringstream br1x;
1835// br1x << "log_cs_ggH_13.h";
1836// //brtt1(2)=(3.,4.);
1837// brtt1=readTable(br1x.str(),20,2);
1838// std::cout<<"brtt1="<<bla1<<std::endl;
1839
1840
1841
1842 ex0 << tablepath << "150304114.dat";//Dummy will be deleted by Scientific Linux
1843 Dummy = readTable(ex0.str(),167,2);
1844 ex1 << tablepath << "150304114.dat";
1845 CMS8_pp_H_hh_bbbb = readTable(ex1.str(),167,2);
1846 ex1e << tablepath << "150304114_e.dat";
1847 CMS8_pp_H_hh_bbbb_e = readTable(ex1e.str(),167,2);
1848 ex2 << tablepath << "150608329.dat";
1849 CMS8_bb_phi_bb = readTable(ex2.str(),81,2);
1850 ex2e << tablepath << "150608329_e.dat";
1851 CMS8_bb_phi_bb_e = readTable(ex2e.str(),81,2);
1852 ex3 << tablepath << "150507018.dat";
1853 ATLAS8_gg_phi_tt = readTable(ex3.str(),53,2);
1854 ex3e << tablepath << "150507018_e.dat";
1855 ATLAS8_gg_phi_tt_e = readTable(ex3e.str(),53,2);
1856
1857// ex14ep1 << tablepath << "150602301_ep1.dat";
1858// CMS_ggF_phi_gaga_ep1 = readTable(ex14ep1.str(),141,2);
1859 //CHANGE THIS DEFINITION!
1860// ex14ep2 << tablepath << "150602301_e.dat";
1861// CMS_ggF_phi_gaga_ep2 = readTable(ex14ep2.str(),141,2);
1862// ex14em1 << tablepath << "150602301_em1.dat";
1863// CMS_ggF_phi_gaga_em1 = readTable(ex14em1.str(),141,2);
1864 //CHANGE THIS DEFINITION!
1865// ex14em2 << tablepath << "150602301_e.dat";
1866// CMS_ggF_phi_gaga_em2 = readTable(ex14em2.str(),141,2);
1867
1868
1869
1870 ex4 << tablepath << "ATLAS-CONF-2016-104_b.dat";
1871 ATLAS13_bb_phi_tt = readTable(ex4.str(),61,2);
1872 ex4e << tablepath << "ATLAS-CONF-2016-104_b_e.dat";
1873 ATLAS13_bb_phi_tt_e = readTable(ex4e.str(),61,2);
1874 ex5 << tablepath << "180711883.dat";
1875 ATLAS13_tt_phi_tt = readTable(ex5.str(),61,2);
1876 ex5e << tablepath << "ATLAS-CONF-2016-104_a_e.dat";
1877 ATLAS13_tt_phi_tt_e = readTable(ex5e.str(),61,2);
1878 ex6 << tablepath << "ATLAS-CONF-2016-049.dat";
1879 ATLAS13_pp_H_hh_bbbb = readTable(ex6.str(),271,2);
1880 ex6e << tablepath << "ATLAS-CONF-2016-049_e.dat";
1881 ATLAS13_pp_H_hh_bbbb_e = readTable(ex6e.str(),271,2);
1882 ex7 << tablepath << "CMS-PAS-HIG-16-025.dat";
1883 CMS13_pp_phi_bb = readTable(ex7.str(),66,2);
1884 ex7e << tablepath << "CMS-PAS-HIG-16-025_e.dat";
1885 CMS13_pp_phi_bb_e = readTable(ex7e.str(),66,2);
1886 ex8 << tablepath << "180603548.dat";
1887 CMS13_pp_H_hh_bbbb = readTable(ex8.str(),95,2);
1888 ex8e << tablepath << "180603548_e.dat";
1889 CMS13_pp_H_hh_bbbb_e = readTable(ex8e.str(),95,2);
1890
1891
1892
1893 ex9 << tablepath << "151203704.dat";
1894 ATLAS8_pp_Hpm_tb = readTable(ex9.str(),41,2);
1895 ex9e << tablepath << "151203704_e.dat";
1896 ATLAS8_pp_Hpm_tb_e = readTable(ex9e.str(),41,2);
1897 ex10 << tablepath << "150807774_b.dat";
1898 CMS8_pp_Hp_tb = readTable(ex10.str(),43,2);
1899 ex10e << tablepath << "150807774_b_e.dat";
1900 CMS8_pp_Hp_tb_e = readTable(ex10e.str(),43,2);
1901 ex17 << tablepath << "210210076.dat";
1902 ATLAS13_pp_Hp_tb = readTable(ex17.str(),181,2);
1903 ex18 << tablepath << "180512191.dat";
1904 CMS13_bb_H_bb = readTable(ex18.str(),101,2);
1905// ex11 << tablepath << "ATLAS-CONF-2016-089.dat";
1906// ATLAS13_pp_Hp_tb1 = readTable(ex11.str(),71,2);
1907// ex11e << tablepath << "ATLAS-CONF-2016-089_e.dat";
1908// ATLAS13_pp_Hp_tb1_e = readTable(ex11e.str(),71,2);
1909// ex12 << tablepath << "ATLAS-CONF-2016-104_c.dat";
1910// ATLAS13_pp_Hp_tb2 = readTable(ex12.str(),181,2);
1911// ex12e << tablepath << "ATLAS-CONF-2016-104_c_e.dat";
1912// ATLAS13_pp_Hp_tb2_e = readTable(ex12e.str(),181,2);
1913 ex13 << tablepath << "171004960.dat";
1914 CMS13_ggF_H_hh_bbbb = readTable(ex13.str(),226,2);
1915 ex13e << tablepath << "171004960_e.dat";
1916 CMS13_ggF_H_hh_bbbb_e = readTable(ex13e.str(),226,2);
1917 ex14 << tablepath << "180410823_b.dat";
1918 ATLAS13_pp_Gkk_tt = readTable(ex14.str(),131,2);
1919 ex15 << tablepath << "CMS-CR-2018-204.dat";
1920 CMS13_pp_R_gg = readTable(ex15.str(),241,2);
1921 ex16 << tablepath << "171007171.dat";
1922 ATLAS13_pp_SS_jjjj = readTable(ex16.str(),126,2);
1923
1924 ex19 << tablepath << "180206149.dat";
1925 CMS8_pp_phi_bb = readTable(ex19.str(),88,2);
1926
1927 th1 << tablepath << "Generated_data_S2t_Fixed_Steps.dat";
1928 MadGraph_pp_Sr_tt = readTable(th1.str(),22800,5);
1929
1930 th2 << tablepath << "Generated_data_Stt_tttt_Fixed_Steps.dat";
1931 MadGraph_pp_Srtt_tttt = readTable(th2.str(),22800,5);
1932
1933 th3 << tablepath << "Generated_data_S_jj_Fixed_Steps.dat";
1934 MadGraph_pp_Sr_jj = readTable(th3.str(),2940,5);
1935
1936 th4 << tablepath << "Generated_data_SS_jjjj_Fixed_Steps.dat";
1937 MadGraph_pp_SrSr_jjjj = readTable(th4.str(),4200,5);
1938
1939 th5 << tablepath << "Generated_data_Stb_tbtb_Fixed_Steps.dat";
1940 MadGraph_pp_Stb_tbtb = readTable(th5.str(),4332,4);
1941
1942 th6 << tablepath << "Generated_data_Soddtt_tttt_Fixed_Steps.dat";
1943 MadGraph_pp_Sitt_tttt = readTable(th6.str(),9360,4);
1944
1945 th7 << tablepath << "Generated_data_Srbb_bbbb_Fixed_Steps.dat";
1946 MadGraph_pp_Srbb_bbbb = readTable(th7.str(),15960,5);
1947
1948 th8 << tablepath << "Generated_data_Sibb_bbbb_Fixed_Steps.dat";
1949 MadGraph_pp_Sibb_bbbb = readTable(th8.str(),8892,4);
1950
1951 th9 << tablepath << "Generated_data_Sr_bb_Fixed_Steps.dat";
1952 MadGraph_pp_Sr_bb = readTable(th9.str(),15960,5);
1953
1954 th10 << tablepath << "Generated_data_Sr_bb_8TeV_Fixed_Steps.dat";
1955 MadGraph_pp_Sr_bb_8TeV = readTable(th10.str(),15960,5);
1956
1957 th11 << tablepath << "Generated_data_Si_bb_Fixed_Steps.dat";
1958 MadGraph_pp_Si_bb = readTable(th11.str(),8892,4);
1959
1960 th12 << tablepath << "Generated_data_Si_bb_8TeV_Fixed_Steps.dat";
1961 MadGraph_pp_Si_bb_8TeV = readTable(th12.str(),8892,4);
1962
1963 th13 << tablepath << "Generated_data_Srbb_bbbb_8TeV_Fixed_Steps.dat";
1964 MadGraph_pp_Srbb_bbbb_8TeV = readTable(th13.str(),15960,5);
1965
1966 th14 << tablepath << "Generated_data_Sibb_bbbb_8TeV_Fixed_Steps.dat";
1967 MadGraph_pp_Sibb_bbbb_8TeV = readTable(th14.str(),8892,4);
1968
1969
1970 bsg1 << tablepath << "bsgammatable.dat";
1971 arraybsgamma = readTable(bsg1.str(),1111,3);
1972}
1973
1975 int NumPar = 1;
1976 double params[] = {mass};
1977
1978 int i = CacheCheckReal(ip_ex_pp_phi_hh_bbbb_CMS8_cache, NumPar, params);
1979 if (i>=0) {
1980 return ( ip_ex_pp_phi_hh_bbbb_CMS8_cache[NumPar][i] );
1981 } else {
1982 double newResult = interpolate(CMS8_pp_H_hh_bbbb,mass);
1983 CacheShiftReal(ip_ex_pp_phi_hh_bbbb_CMS8_cache, NumPar, params, newResult);
1984 return newResult;
1985 }
1986}
1987
1989 int NumPar = 1;
1990 double params[] = {mass};
1991
1992 int i = CacheCheckReal(ip_ex_pp_phi_hh_bbbb_CMS8_cache_e, NumPar, params);
1993 if (i>=0) {
1994 return ( ip_ex_pp_phi_hh_bbbb_CMS8_cache_e[NumPar][i] );
1995 } else {
1996 double newResult = interpolate(CMS8_pp_H_hh_bbbb_e,mass);
1997 CacheShiftReal(ip_ex_pp_phi_hh_bbbb_CMS8_cache_e, NumPar, params, newResult);
1998 return newResult;
1999 }
2000}
2001
2003 int NumPar = 1;
2004 double params[] = {mass};
2005
2006 int i = CacheCheckReal(ip_ex_bb_phi_bb_CMS8_cache, NumPar, params);
2007 if (i>=0) {
2008 return ( ip_ex_bb_phi_bb_CMS8_cache[NumPar][i] );
2009 } else {
2010 double newResult = interpolate (CMS8_bb_phi_bb,mass);
2011 CacheShiftReal(ip_ex_bb_phi_bb_CMS8_cache, NumPar, params, newResult);
2012 return newResult;
2013 }
2014}
2015
2016
2017
2019 int NumPar = 1;
2020 double params[] = {mass};
2021
2022 int i = CacheCheckReal(ip_ex_bb_phi_bb_CMS8_cache_e, NumPar, params);
2023 if (i>=0) {
2024 return ( ip_ex_bb_phi_bb_CMS8_cache_e[NumPar][i] );
2025 } else {
2026 double newResult = interpolate (CMS8_bb_phi_bb_e,mass);
2027 CacheShiftReal(ip_ex_bb_phi_bb_CMS8_cache_e, NumPar, params, newResult);
2028 return newResult;
2029 }
2030}
2031
2033 int NumPar = 1;
2034 double params[] = {mass};
2035
2036 int i = CacheCheckReal(ip_ex_gg_phi_tt_ATLAS8_cache, NumPar, params);
2037 if (i>=0) {
2038 return ( ip_ex_gg_phi_tt_ATLAS8_cache[NumPar][i] );
2039 } else {
2040 double newResult = interpolate (ATLAS8_gg_phi_tt,mass);
2041 CacheShiftReal(ip_ex_gg_phi_tt_ATLAS8_cache, NumPar, params, newResult);
2042 return newResult;
2043 }
2044}
2045
2046
2047
2049 int NumPar = 1;
2050 double params[] = {mass};
2051
2052 int i = CacheCheckReal(ip_ex_gg_phi_tt_ATLAS8_cache_e, NumPar, params);
2053 if (i>=0) {
2054 return ( ip_ex_gg_phi_tt_ATLAS8_cache_e[NumPar][i] );
2055 } else {
2056 double newResult = interpolate (ATLAS8_gg_phi_tt_e,mass);
2057 CacheShiftReal(ip_ex_gg_phi_tt_ATLAS8_cache_e, NumPar, params, newResult);
2058 return newResult;
2059 }
2060}
2061
2063 int NumPar = 1;
2064 double params[] = {mass};
2065
2066 int i = CacheCheckReal(ip_ex_bb_phi_tt_ATLAS13_cache, NumPar, params);
2067 if (i>=0) {
2068 return ( ip_ex_bb_phi_tt_ATLAS13_cache[NumPar][i] );
2069 } else {
2070 double newResult = interpolate (ATLAS13_bb_phi_tt,mass);
2071 CacheShiftReal(ip_ex_bb_phi_tt_ATLAS13_cache, NumPar, params, newResult);
2072 return newResult;
2073 }
2074}
2075
2076
2077
2079 int NumPar = 1;
2080 double params[] = {mass};
2081
2082 int i = CacheCheckReal(ip_ex_bb_phi_tt_ATLAS13_cache_e, NumPar, params);
2083 if (i>=0) {
2084 return ( ip_ex_bb_phi_tt_ATLAS13_cache_e[NumPar][i] );
2085 } else {
2086 double newResult = interpolate (ATLAS13_bb_phi_tt_e,mass);
2087 CacheShiftReal(ip_ex_bb_phi_tt_ATLAS13_cache_e, NumPar, params, newResult);
2088 return newResult;
2089 }
2090}
2091
2092
2093
2095 int NumPar = 1;
2096 double params[] = {mass};
2097
2098 int i = CacheCheckReal(ip_ex_tt_phi_tt_ATLAS13_cache, NumPar, params);
2099 if (i>=0) {
2100 return(ip_ex_tt_phi_tt_ATLAS13_cache[NumPar][i] );
2101 } else {
2102 double newResult = interpolate (ATLAS13_tt_phi_tt,mass);
2103 CacheShiftReal(ip_ex_tt_phi_tt_ATLAS13_cache, NumPar, params, newResult);
2104 return newResult;
2105 }
2106}
2107
2108
2109
2111 int NumPar = 1;
2112 double params[] = {mass};
2113
2114 int i = CacheCheckReal(ip_ex_tt_phi_tt_ATLAS13_cache_e, NumPar, params);
2115 if (i>=0) {
2116 return(ip_ex_tt_phi_tt_ATLAS13_cache_e[NumPar][i] );
2117 } else {
2118 double newResult = interpolate (ATLAS13_tt_phi_tt_e,mass);
2119 CacheShiftReal(ip_ex_tt_phi_tt_ATLAS13_cache_e, NumPar, params, newResult);
2120 return newResult;
2121 }
2122}
2123
2125 int NumPar = 1;
2126 double params[] = {mass};
2127
2128 int i = CacheCheckReal(ip_ex_pp_H_hh_bbbb_ATLAS13_cache, NumPar, params);
2129 if (i>=0) {
2130 return(ip_ex_pp_H_hh_bbbb_ATLAS13_cache[NumPar][i] );
2131 } else {
2132 double newResult = interpolate (ATLAS13_pp_H_hh_bbbb,mass);
2133 CacheShiftReal(ip_ex_pp_H_hh_bbbb_ATLAS13_cache, NumPar, params, newResult);
2134 return newResult;
2135 }
2136}
2137
2138
2139
2141 int NumPar = 1;
2142 double params[] = {mass};
2143
2144 int i = CacheCheckReal(ip_ex_pp_H_hh_bbbb_ATLAS13_cache_e, NumPar, params);
2145 if (i>=0) {
2146 return(ip_ex_pp_H_hh_bbbb_ATLAS13_cache_e[NumPar][i] );
2147 } else {
2148 double newResult = interpolate (ATLAS13_pp_H_hh_bbbb_e,mass);
2149 CacheShiftReal(ip_ex_pp_H_hh_bbbb_ATLAS13_cache_e, NumPar, params, newResult);
2150 return newResult;
2151 }
2152}
2153
2154
2156 int NumPar = 1;
2157 double params[] = {mass};
2158
2159 int i = CacheCheckReal(ip_ex_pp_phi_bb_CMS13_cache, NumPar, params);
2160 if (i>=0) {
2161 return(ip_ex_pp_phi_bb_CMS13_cache[NumPar][i] );
2162 } else {
2163 double newResult = interpolate (CMS13_pp_phi_bb,mass);
2164 CacheShiftReal(ip_ex_pp_phi_bb_CMS13_cache, NumPar, params, newResult);
2165 return newResult;
2166 }
2167}
2168
2170 int NumPar = 1;
2171 double params[] = {mass};
2172
2173 int i = CacheCheckReal(ip_ex_pp_phi_bb_CMS8_cache, NumPar, params);
2174 if (i>=0) {
2175 return(ip_ex_pp_phi_bb_CMS8_cache[NumPar][i] );
2176 } else {
2177 double newResult = interpolate (CMS8_pp_phi_bb,mass);
2178 CacheShiftReal(ip_ex_pp_phi_bb_CMS8_cache, NumPar, params, newResult);
2179 return newResult;
2180 }
2181}
2182
2183
2184
2185
2186
2188 int NumPar = 1;
2189 double params[] = {mass};
2190
2191 int i = CacheCheckReal(ip_ex_pp_phi_bb_CMS13_cache_e, NumPar, params);
2192 if (i>=0) {
2193 return(ip_ex_pp_phi_bb_CMS13_cache_e[NumPar][i] );
2194 } else {
2195 double newResult = interpolate (CMS13_pp_phi_bb_e,mass);
2196 CacheShiftReal(ip_ex_pp_phi_bb_CMS13_cache_e, NumPar, params, newResult);
2197 return newResult;
2198 }
2199}
2200
2202 int NumPar = 1;
2203 double params[] = {mass};
2204
2205 int i = CacheCheckReal(ip_ex_pp_H_hh_bbbb_CMS13_cache, NumPar, params);
2206 if (i>=0) {
2207 return(ip_ex_pp_H_hh_bbbb_CMS13_cache[NumPar][i] );
2208 } else {
2209 double newResult = interpolate (CMS13_pp_H_hh_bbbb,mass);
2210 CacheShiftReal(ip_ex_pp_H_hh_bbbb_CMS13_cache, NumPar, params, newResult);
2211 return newResult;
2212 }
2213}
2214
2215
2216
2218 int NumPar = 1;
2219 double params[] = {mass};
2220
2221 int i = CacheCheckReal(ip_ex_pp_H_hh_bbbb_CMS13_cache_e, NumPar, params);
2222 if (i>=0) {
2223 return(ip_ex_pp_H_hh_bbbb_CMS13_cache_e[NumPar][i] );
2224 } else {
2225 double newResult = interpolate (CMS13_pp_H_hh_bbbb_e,mass);
2226 CacheShiftReal(ip_ex_pp_H_hh_bbbb_CMS13_cache_e, NumPar, params, newResult);
2227 return newResult;
2228 }
2229}
2230
2231
2233 int NumPar = 1;
2234 double params[] = {mass};
2235
2236 int i = CacheCheckReal(ip_ex_pp_Hpm_tb_ATLAS8_cache, NumPar, params);
2237 if (i>=0) {
2238 return(ip_ex_pp_Hpm_tb_ATLAS8_cache[NumPar][i] );
2239 } else {
2240 double newResult = interpolate (ATLAS8_pp_Hpm_tb,mass);
2241 CacheShiftReal(ip_ex_pp_Hpm_tb_ATLAS8_cache, NumPar, params, newResult);
2242 return newResult;
2243 }
2244}
2245
2246
2247
2249 int NumPar = 1;
2250 double params[] = {mass};
2251
2252 int i = CacheCheckReal(ip_ex_pp_Hpm_tb_ATLAS8_cache_e, NumPar, params);
2253 if (i>=0) {
2254 return(ip_ex_pp_Hpm_tb_ATLAS8_cache_e[NumPar][i] );
2255 } else {
2256 double newResult = interpolate (ATLAS8_pp_Hpm_tb_e,mass);
2257 CacheShiftReal(ip_ex_pp_Hpm_tb_ATLAS8_cache_e, NumPar, params, newResult);
2258 return newResult;
2259 }
2260}
2261
2262
2263
2265 int NumPar = 1;
2266 double params[] = {mass};
2267
2268 int i = CacheCheckReal(ip_ex_pp_Hp_tb_CMS8_cache, NumPar, params);
2269 if (i>=0) {
2270 return(ip_ex_pp_Hp_tb_CMS8_cache[NumPar][i] );
2271 } else {
2272 double newResult = interpolate (CMS8_pp_Hp_tb,mass);
2273 CacheShiftReal(ip_ex_pp_Hp_tb_CMS8_cache, NumPar, params, newResult);
2274 return newResult;
2275 }
2276}
2277
2278
2279
2281 int NumPar = 1;
2282 double params[] = {mass};
2283
2284 int i = CacheCheckReal(ip_ex_pp_Hp_tb_CMS8_cache_e, NumPar, params);
2285 if (i>=0) {
2286 return(ip_ex_pp_Hp_tb_CMS8_cache_e[NumPar][i] );
2287 } else {
2288 double newResult = interpolate (CMS8_pp_Hp_tb_e,mass);
2289 CacheShiftReal(ip_ex_pp_Hp_tb_CMS8_cache_e, NumPar, params, newResult);
2290 return newResult;
2291 }
2292}
2293
2295 int NumPar = 1;
2296 double params[] = {mass};
2297
2298 int i = CacheCheckReal(ip_ex_pp_Hp_tb_ATLAS13_cache, NumPar, params);
2299 if (i>=0) {
2300 return(ip_ex_pp_Hp_tb_ATLAS13_cache[NumPar][i] );
2301 } else {
2302 double newResult = interpolate (ATLAS13_pp_Hp_tb,mass);
2303 CacheShiftReal(ip_ex_pp_Hp_tb_ATLAS13_cache, NumPar, params, newResult);
2304 return newResult;
2305 }
2306}
2307
2308
2309
2310
2312 int NumPar = 1;
2313 double params[] = {mass};
2314
2315 int i = CacheCheckReal(ip_ex_ggF_H_hh_bbbb_CMS13_cache, NumPar, params);
2316 if (i>=0) {
2317 return(ip_ex_ggF_H_hh_bbbb_CMS13_cache[NumPar][i] );
2318 } else {
2319 double newResult = interpolate (CMS13_ggF_H_hh_bbbb,mass);
2320 CacheShiftReal(ip_ex_ggF_H_hh_bbbb_CMS13_cache, NumPar, params, newResult);
2321 return newResult;
2322 }
2323}
2324
2325
2326
2328 int NumPar = 1;
2329 double params[] = {mass};
2330
2331 int i = CacheCheckReal(ip_ex_ggF_H_hh_bbbb_CMS13_cache_e, NumPar, params);
2332 if (i>=0) {
2333 return(ip_ex_ggF_H_hh_bbbb_CMS13_cache_e[NumPar][i] );
2334 } else {
2335 double newResult = interpolate (CMS13_ggF_H_hh_bbbb_e,mass);
2336 CacheShiftReal(ip_ex_ggF_H_hh_bbbb_CMS13_cache_e, NumPar, params, newResult);
2337 return newResult;
2338 }
2339}
2340
2342 int NumPar = 1;
2343 double params[] = {mass};
2344
2345 int i = CacheCheckReal(ip_ex_pp_Gkk_tt_ATLAS13_cache, NumPar, params);
2346 if (i>=0) {
2347 return(ip_ex_pp_Gkk_tt_ATLAS13_cache[NumPar][i] );
2348 } else {
2349 double newResult = interpolate(ATLAS13_pp_Gkk_tt,mass);
2350 CacheShiftReal(ip_ex_pp_Gkk_tt_ATLAS13_cache, NumPar, params, newResult);
2351 return newResult;
2352 }
2353}
2354
2356 int NumPar = 1;
2357 double params[] = {mass};
2358
2359 int i = CacheCheckReal(ip_ex_pp_R_gg_CMS13_cache, NumPar, params);
2360 if (i>=0) {
2361 return(ip_ex_pp_R_gg_CMS13_cache[NumPar][i] );
2362 } else {
2363 double newResult = interpolate(CMS13_pp_R_gg,mass);
2364 CacheShiftReal(ip_ex_pp_R_gg_CMS13_cache, NumPar, params, newResult);
2365 return newResult;
2366 }
2367}
2368
2370 int NumPar = 1;
2371 double params[] = {mass};
2372
2373 int i = CacheCheckReal(ip_ex_pp_SS_jjjj_ATLAS13_cache, NumPar, params);
2374 if (i>=0) {
2375 return(ip_ex_pp_SS_jjjj_ATLAS13_cache[NumPar][i] );
2376 } else {
2377 double newResult = interpolate(ATLAS13_pp_SS_jjjj,mass);
2378 CacheShiftReal(ip_ex_pp_SS_jjjj_ATLAS13_cache, NumPar, params, newResult);
2379 return newResult;
2380 }
2381}
2382
2384 int NumPar = 1;
2385 double params[] = {mass};
2386
2387 int i = CacheCheckReal(ip_ex_bb_H_bb_CMS13_cache, NumPar, params);
2388 if (i>=0) {
2389 return ( ip_ex_bb_H_bb_CMS13_cache[NumPar][i] );
2390 } else {
2391 double newResult = interpolate(CMS13_bb_H_bb,mass);
2392 CacheShiftReal(ip_ex_bb_H_bb_CMS13_cache, NumPar, params, newResult);
2393 return newResult;
2394 }
2395}
2396
2397
2398
2399
2400
2401double THDMWcache::ip_th_pp_Sr_tt(double etaD, double etaU, double Lambda4, double mSr){
2402 int NumPar = 4;
2403 double params[] = {etaD, etaU, Lambda4, mSr};
2404
2405 int i = CacheCheckReal(ip_th_pp_Sr_tt_cache, NumPar, params);
2406 if (i>=0) {
2407 return(ip_th_pp_Sr_tt_cache[NumPar][i] );
2408 } else {
2409 double newResult = interpolate4D (MadGraph_pp_Sr_tt,etaD,etaU,Lambda4,mSr);
2410 CacheShiftReal(ip_th_pp_Sr_tt_cache, NumPar, params, newResult);
2411 return newResult;
2412 }
2413}
2414
2415double THDMWcache::ip_th_pp_Srtt_tttt(double etaD, double etaU, double Lambda4, double mSr){
2416 int NumPar = 4;
2417 double params[] = {etaD, etaU, Lambda4, mSr};
2418
2419 int i = CacheCheckReal(ip_th_pp_Srtt_tttt_cache, NumPar, params);
2420 if (i>=0) {
2421 return(ip_th_pp_Srtt_tttt_cache[NumPar][i] );
2422 } else {
2423 double newResult = interpolate4D (MadGraph_pp_Srtt_tttt,etaD,etaU,Lambda4,mSr);
2424 CacheShiftReal(ip_th_pp_Srtt_tttt_cache, NumPar, params, newResult);
2425 return newResult;
2426 }
2427}
2428
2429double THDMWcache::ip_th_pp_Sr_jj(double etaD, double etaU, double Lambda4, double mSr){
2430 int NumPar = 4;
2431 double params[] = {etaD, etaU, Lambda4, mSr};
2432
2433 int i = CacheCheckReal(ip_th_pp_Sr_jj_cache, NumPar, params);
2434 if (i>=0) {
2435 return(ip_th_pp_Sr_jj_cache[NumPar][i] );
2436 } else {
2437 double newResult = interpolate4D (MadGraph_pp_Sr_jj,etaD,etaU,Lambda4,mSr);
2438 CacheShiftReal(ip_th_pp_Sr_jj_cache, NumPar, params, newResult);
2439 return newResult;
2440 }
2441}
2442
2443double THDMWcache::ip_th_pp_SrSr_jjjj(double etaD, double etaU, double Lambda4, double mSr){
2444 int NumPar = 4;
2445 double params[] = {etaD, etaU, Lambda4, mSr};
2446
2447 int i = CacheCheckReal(ip_th_pp_SrSr_jjjj_cache, NumPar, params);
2448 if (i>=0) {
2449 return(ip_th_pp_SrSr_jjjj_cache[NumPar][i] );
2450 } else {
2451 double newResult = interpolate4D (MadGraph_pp_SrSr_jjjj,etaD,etaU,Lambda4,mSr);
2452 CacheShiftReal(ip_th_pp_SrSr_jjjj_cache, NumPar, params, newResult);
2453 return newResult;
2454 }
2455}
2456
2457
2458double THDMWcache::ip_th_pp_Stb_tbtb(double etaD, double etaU, double mS){
2459 int NumPar = 3;
2460 double params[] = {etaD, etaU, mS};
2461
2462 int i = CacheCheckReal(ip_th_pp_Stb_tbtb_cache, NumPar, params);
2463 if (i>=0) {
2464 return(ip_th_pp_Stb_tbtb_cache[NumPar][i] );
2465 } else {
2466 double newResult = interpolate3D (MadGraph_pp_Stb_tbtb,etaD,etaU,mS);
2467 CacheShiftReal(ip_th_pp_Stb_tbtb_cache, NumPar, params, newResult);
2468 return newResult;
2469 }
2470}
2471
2472
2473double THDMWcache::ip_th_pp_Sitt_tttt(double etaD, double etaU, double mS){
2474 int NumPar = 3;
2475 double params[] = {etaD, etaU, mS};
2476
2477 int i = CacheCheckReal(ip_th_pp_Sitt_tttt_cache, NumPar, params);
2478 if (i>=0) {
2479 return(ip_th_pp_Sitt_tttt_cache[NumPar][i] );
2480 } else {
2481 double newResult = interpolate3D (MadGraph_pp_Sitt_tttt,etaD,etaU,mS);
2482 CacheShiftReal(ip_th_pp_Sitt_tttt_cache, NumPar, params, newResult);
2483 return newResult;
2484 }
2485}
2486
2487
2488double THDMWcache::ip_th_pp_Srbb_bbbb(double etaD, double etaU, double Lambda4, double mSr){
2489 int NumPar = 4;
2490 double params[] = {etaD, etaU, Lambda4, mSr};
2491
2492 int i = CacheCheckReal(ip_th_pp_Srbb_bbbb_cache, NumPar, params);
2493 if (i>=0) {
2494 return(ip_th_pp_Srbb_bbbb_cache[NumPar][i] );
2495 } else {
2496 double newResult = interpolate4D (MadGraph_pp_Srbb_bbbb,etaD,etaU,Lambda4,mSr);
2497 CacheShiftReal(ip_th_pp_Srbb_bbbb_cache, NumPar, params, newResult);
2498 return newResult;
2499 }
2500}
2501
2502
2503double THDMWcache::ip_th_pp_Srbb_bbbb_8TeV(double etaD, double etaU, double Lambda4, double mSr){
2504 int NumPar = 4;
2505 double params[] = {etaD, etaU, Lambda4, mSr};
2506
2507 int i = CacheCheckReal(ip_th_pp_Srbb_bbbb_8TeV_cache, NumPar, params);
2508 if (i>=0) {
2509 return(ip_th_pp_Srbb_bbbb_8TeV_cache[NumPar][i] );
2510 } else {
2511 double newResult = interpolate4D (MadGraph_pp_Srbb_bbbb_8TeV,etaD,etaU,Lambda4,mSr);
2512 CacheShiftReal(ip_th_pp_Srbb_bbbb_8TeV_cache, NumPar, params, newResult);
2513 return newResult;
2514 }
2515}
2516
2517
2518double THDMWcache::ip_th_pp_Sibb_bbbb(double etaD, double etaU, double mS){
2519 int NumPar = 3;
2520 double params[] = {etaD, etaU, mS};
2521
2522 int i = CacheCheckReal(ip_th_pp_Sibb_bbbb_cache, NumPar, params);
2523 if (i>=0) {
2524 return(ip_th_pp_Sibb_bbbb_cache[NumPar][i] );
2525 } else {
2526 double newResult = interpolate3D (MadGraph_pp_Sibb_bbbb,etaD,etaU,mS);
2527 //std::cout<<"check"<<std::endl;
2528 CacheShiftReal(ip_th_pp_Sibb_bbbb_cache, NumPar, params, newResult);
2529 return newResult;
2530 }
2531}
2532
2533
2534
2535double THDMWcache::ip_th_pp_Sibb_bbbb_8TeV(double etaD, double etaU, double mS){
2536 int NumPar = 3;
2537 double params[] = {etaD, etaU, mS};
2538
2539 int i = CacheCheckReal(ip_th_pp_Sibb_bbbb_8TeV_cache, NumPar, params);
2540 if (i>=0) {
2541 return(ip_th_pp_Sibb_bbbb_8TeV_cache[NumPar][i] );
2542 } else {
2543 double newResult = interpolate3D (MadGraph_pp_Sibb_bbbb_8TeV,etaD,etaU,mS);
2544 //std::cout<<"check"<<std::endl;
2545 CacheShiftReal(ip_th_pp_Sibb_bbbb_8TeV_cache, NumPar, params, newResult);
2546 return newResult;
2547 }
2548}
2549
2550
2551
2552
2553
2554double THDMWcache::ip_th_pp_Sr_bb(double etaD, double etaU, double Lambda4, double mSr){
2555 int NumPar = 4;
2556 double params[] = {etaD, etaU, Lambda4, mSr};
2557
2558 int i = CacheCheckReal(ip_th_pp_Sr_bb_cache, NumPar, params);
2559 if (i>=0) {
2560 return(ip_th_pp_Sr_bb_cache[NumPar][i] );
2561 } else {
2562 double newResult = interpolate4D (MadGraph_pp_Sr_bb,etaD,etaU,Lambda4,mSr);
2563 CacheShiftReal(ip_th_pp_Sr_bb_cache, NumPar, params, newResult);
2564 return newResult;
2565 }
2566}
2567
2568
2569
2570double THDMWcache::ip_th_pp_Sr_bb_8TeV(double etaD, double etaU, double Lambda4, double mSr){
2571 int NumPar = 4;
2572 double params[] = {etaD, etaU, Lambda4, mSr};
2573
2574 int i = CacheCheckReal(ip_th_pp_Sr_bb_8TeV_cache, NumPar, params);
2575 if (i>=0) {
2576 return(ip_th_pp_Sr_bb_8TeV_cache[NumPar][i] );
2577 } else {
2578 double newResult = interpolate4D (MadGraph_pp_Sr_bb_8TeV,etaD,etaU,Lambda4,mSr);
2579 CacheShiftReal(ip_th_pp_Sr_bb_8TeV_cache, NumPar, params, newResult);
2580 return newResult;
2581 }
2582}
2583
2584
2585double THDMWcache::ip_th_pp_Si_bb(double etaD, double etaU, double mS){
2586 int NumPar = 3;
2587 double params[] = {etaD, etaU, mS};
2588
2589 int i = CacheCheckReal(ip_th_pp_Si_bb_cache, NumPar, params);
2590 if (i>=0) {
2591 return(ip_th_pp_Si_bb_cache[NumPar][i] );
2592 } else {
2593 double newResult = interpolate3D (MadGraph_pp_Si_bb,etaD,etaU,mS);
2594 //std::cout<<"check"<<std::endl;
2595 CacheShiftReal(ip_th_pp_Si_bb_cache, NumPar, params, newResult);
2596 return newResult;
2597 }
2598}
2599
2600
2601
2602
2603double THDMWcache::ip_th_pp_Si_bb_8TeV(double etaD, double etaU, double mS){
2604 int NumPar = 3;
2605 double params[] = {etaD, etaU, mS};
2606
2607 int i = CacheCheckReal(ip_th_pp_Si_bb_8TeV_cache, NumPar, params);
2608 if (i>=0) {
2609 return(ip_th_pp_Si_bb_8TeV_cache[NumPar][i] );
2610 } else {
2611 double newResult = interpolate3D (MadGraph_pp_Si_bb_8TeV,etaD,etaU,mS);
2612 //std::cout<<"check"<<std::endl;
2613 CacheShiftReal(ip_th_pp_Si_bb_8TeV_cache, NumPar, params, newResult);
2614 return newResult;
2615 }
2616}
2617
2618
2619
2620
2621/*
2622double THDMWcache::logip_th_pp_SrSr_jjjj(double etaD, double etaU, double Lambda4, double mSr){
2623 int NumPar = 4;
2624 double params[] = {etaD, etaU, Lambda4, mSr};
2625
2626 int i = CacheCheckReal(logip_th_pp_SrSr_jjjj_cache, NumPar, params);
2627 if (i>=0) {
2628 return(logip_th_pp_SrSr_jjjj_cache[NumPar][i] );
2629 } else {
2630 double newResult = loginterpolate4D (MadGraph_pp_SrSr_jjjj,etaD,etaU,Lambda4,mSr);
2631 CacheShiftReal(logip_th_pp_SrSr_jjjj_cache, NumPar, params, newResult);
2632 return newResult;
2633 }
2634}
2635*/
2636
2637
2638
2640{
2641 double mSr=sqrt(mSRsq);
2642 double mSp=sqrt(mSpsq);
2643 double mSi=sqrt(mSIsq);
2644 double MW=myTHDMW->Mw();
2645 //double mW2=myTHDMW->Mw();
2646 double SqrtEtaU=copysign(sqrt(sqrt(pow(etaU,2))),etaU);
2647 double SqrtEtaD=copysign(sqrt(sqrt(pow(etaD,2))),etaD);
2648 double nu45=(nu4+nu5)/2;
2649 //EtaU and EtaD in Sqrt Units!!!
2650 THoEX_pp_Sr_tt=0.;
2652 THoEX_pp_Sr_jj=0.;
2660 THoEX_pp_Sr_bb=0.;
2662 THoEX_pp_Si_bb=0.;
2664
2665 pp_Sr_tt_TH13 = 1.0e-15;
2666 pp_Srtt_tttt_TH13 = 1.0e-15;
2667 pp_Sr_jj_TH13=1.0e-15;
2668 pp_SrSr_jjjj_TH13=1.0e-15;
2669 pp_Stb_tbtb_TH13=1.0e-15;
2670 pp_Srtt_tttt_TH13 = 1.0e-15;
2671 pp_Sitt_tttt_TH13 = 1.0e-15;
2672 pp_Srbb_bbbb_TH13= 1.0e-15;
2673 pp_Srbb_bbbb_TH8= 1.0e-15;
2674 pp_Sibb_bbbb_TH13= 1.0e-15;
2675 pp_Sibb_bbbb_TH8= 1.0e-15;
2676 pp_Sr_bb_TH13= 1.0e-15;
2677 pp_Sr_bb_TH8= 1.0e-15;
2678 pp_Si_bb_TH13= 1.0e-15;
2679 pp_Si_bb_TH8= 1.0e-15;
2680 //logpp_SrSr_jjjj_TH13=-15;
2681
2682
2683
2684 //std::cout<<"mSr="<<mSr<<std::endl;
2685 //std::cout<<"nu45="<<nu45<<std::endl;
2686 //std::cout<<"etaU="<<etaU<<std::endl;
2687 //std::cout<<"etaD="<<etaD<<std::endl;
2688 //std::cout<<"MW="<<MW<<std::endl;
2689 //std::cout<<"MZ="<<MZ<<std::endl;
2690
2691 if(mSRsq > 1.6001e5 && mSRsq<2.2499e6 && etaD*etaD<399.99 && etaU*etaU<56.2499 && nu45*nu45<168.999 && mSRsq<(mSpsq+MW*MW) && mSRsq<=(mSIsq+MZ*MZ)) pp_Sr_tt_TH13=ip_th_pp_Sr_tt(SqrtEtaD,SqrtEtaU,nu45,mSr);
2692 if(mSRsq > 1.6001e5 && mSRsq<2.2499e6 && etaD*etaD<399.99 && etaU*etaU<56.2499 && nu45*nu45<168.999 && mSRsq<(mSpsq+MW*MW) && mSRsq<=(mSIsq+MZ*MZ)) pp_Srtt_tttt_TH13=ip_th_pp_Srtt_tttt(SqrtEtaD,SqrtEtaU,nu45,mSr);
2693 if(mSRsq > 1.6001e5 && mSRsq<2.2499e6 && etaD*etaD<399.99 && etaU*etaU<3.9999 && nu45*nu45<168.999 && mSRsq<(mSpsq+MW*MW) && mSRsq<=(mSIsq+MZ*MZ)) pp_Sr_jj_TH13=ip_th_pp_Sr_jj(SqrtEtaD,SqrtEtaU,nu45,mSr);
2694 if(mSRsq > 1.6001e5 && mSRsq<2.2499e6 && etaD*etaD<399.99 && etaU*etaU<3.9999 && nu45*nu45<168.999 && mSRsq<(mSpsq+MW*MW) && mSRsq<=(mSIsq+MZ*MZ)) pp_SrSr_jjjj_TH13=ip_th_pp_SrSr_jjjj(SqrtEtaD,SqrtEtaU,nu45,mSr);
2695 if(mSpsq > 1.6001e5 && mSpsq<2.2499e6 && etaD*etaD<399.99 && etaU*etaU<56.2499 && mSpsq<(mSRsq+MW*MW) && mSp<=(mSIsq+MW*MW)) pp_Stb_tbtb_TH13=ip_th_pp_Stb_tbtb(SqrtEtaD,SqrtEtaU,mSp);
2696 if(mSIsq > 1.6001e5 && mSIsq<2.2499e6 && etaD*etaD<399.99 && etaU*etaU<56.2499 && mSIsq<(mSpsq+MW*MW) && mSIsq<=(mSRsq+MZ*MZ)) pp_Sitt_tttt_TH13=ip_th_pp_Sitt_tttt(SqrtEtaD,SqrtEtaU,mSi);
2697 if(mSRsq > 1.6001e5 && mSRsq<2.2499e6 && etaD*etaD<399.99 && etaU*etaU<3.9999 && nu45*nu45<168.999 && mSRsq<(mSpsq+MW*MW) && mSRsq<=(mSIsq+MZ*MZ)) pp_Srbb_bbbb_TH13=ip_th_pp_Srbb_bbbb(SqrtEtaD,SqrtEtaU,nu45,mSr);
2698 if(mSRsq > 1.6001e5 && mSRsq<2.2499e6 && etaD*etaD<399.99 && etaU*etaU<3.9999 && nu45*nu45<168.999 && mSRsq<(mSpsq+MW*MW) && mSRsq<=(mSIsq+MZ*MZ)) pp_Srbb_bbbb_TH8=ip_th_pp_Srbb_bbbb_8TeV(SqrtEtaD,SqrtEtaU,nu45,mSr);
2699 if(mSIsq > 1.6001e5 && mSIsq<2.2499e6 && etaD*etaD<399.99 && etaU*etaU<3.999 && mSIsq<(mSpsq+MW*MW) && mSIsq<=(mSRsq+MZ*MZ)) pp_Sibb_bbbb_TH13=ip_th_pp_Sibb_bbbb(SqrtEtaD,SqrtEtaU,mSi);
2700 if(mSIsq > 1.6001e5 && mSIsq<2.2499e6 && etaD*etaD<399.99 && etaU*etaU<3.999 && mSIsq<(mSpsq+MW*MW) && mSIsq<=(mSRsq+MZ*MZ)) pp_Sibb_bbbb_TH8=ip_th_pp_Sibb_bbbb_8TeV(SqrtEtaD,SqrtEtaU,mSi);
2701 if(mSRsq > 1.6001e5 && mSRsq<2.2499e6 && etaD*etaD<399.99 && etaU*etaU<3.9999 && nu45*nu45<168.999 && mSRsq<(mSpsq+MW*MW) && mSRsq<=(mSIsq+MZ*MZ)) pp_Sr_bb_TH13=ip_th_pp_Sr_bb(SqrtEtaD,SqrtEtaU,nu45,mSr);
2702 if(mSRsq > 1.6001e5 && mSRsq<2.2499e6 && etaD*etaD<399.99 && etaU*etaU<3.9999 && nu45*nu45<168.999 && mSRsq<(mSpsq+MW*MW) && mSRsq<=(mSIsq+MZ*MZ)) pp_Sr_bb_TH8 =ip_th_pp_Sr_bb_8TeV(SqrtEtaD,SqrtEtaU,nu45,mSr);
2703 if(mSIsq > 1.6001e5 && mSIsq<2.2499e6 && etaD*etaD<399.99 && etaU*etaU<3.999 && mSIsq<(mSpsq+MW*MW) && mSIsq<=(mSRsq+MZ*MZ)) pp_Si_bb_TH13=ip_th_pp_Si_bb(SqrtEtaD,SqrtEtaU,mSi);
2704 if(mSIsq > 1.6001e5 && mSIsq<2.2499e6 && etaD*etaD<399.99 && etaU*etaU<3.999 && mSIsq<(mSpsq+MW*MW) && mSIsq<=(mSRsq+MZ*MZ)) pp_Si_bb_TH8=ip_th_pp_Si_bb_8TeV(SqrtEtaD,SqrtEtaU,mSi);
2705
2706
2707
2708 //std::cout<<"Sibb2="<< interpolate3D(MadGraph_pp_Sibb_bbbb,4.47213,1.4141,1450)<<std::endl;
2709 //std::cout<<"Sibb="<< interpolate3D(MadGraph_pp_Sibb_bbbb,-4.47214,-1.4142,350)<<std::endl;
2710 //std::cout<<"Sitt="<< interpolate3D(MadGraph_pp_Sitt_tttt,SqrtEtaD,SqrtEtaU,mSi)<<std::endl;
2711 //std::cout<<"Sitt="<<ip_th_pp_Sitt_tttt(SqrtEtaD,0,mSi)<<std::endl;
2712 //if(mSr>= 400 && mSr<=1500) logpp_SrSr_jjjj_TH13=logip_th_pp_SrSr_jjjj(SqrtEtaD,SqrtEtaU,nu45,mSr);
2713
2714 //std::cout<<"pp_Stb_tbtb_TH13 first="<<ip_th_pp_Stb_tbtb(SqrtEtaD,SqrtEtaU,mSp)<<std::endl;
2715 //std::cout<<"pp_Stb_tbtb_TH13 second="<<interpolate3D(MadGraph_pp_Stb_tbtb,SqrtEtaD,SqrtEtaU,mSp)<<std::endl;
2716 if(mSr>= 400 && mSr<=1500) THoEX_pp_Sr_tt=pp_Sr_tt_TH13/ip_ex_pp_Gkk_tt_ATLAS13(mSr);
2717 if(mSr>= 400 && mSr<=1000) THoEX_pp_Srtt_tttt=pp_Srtt_tttt_TH13/ip_ex_tt_phi_tt_ATLAS13(mSr);
2718 if(mSr>= 600 && mSr<=1500) THoEX_pp_Sr_jj=pp_Sr_jj_TH13/ip_ex_pp_R_gg_CMS13(mSr);
2719 if(mSr>= 500 && mSr<=1500) THoEX_pp_SrSr_jjjj=pp_SrSr_jjjj_TH13/ip_ex_pp_SS_jjjj_ATLAS13(mSr);
2720 if(mSp>= 400 && mSp<=1500) THoEX_pp_Stb_tbtb=pp_Stb_tbtb_TH13/ip_ex_pp_Hp_tb_ATLAS13(mSp);
2721 if(mSi>= 400 && mSi<=1000) THoEX_pp_Sitt_tttt=pp_Sitt_tttt_TH13/ip_ex_tt_phi_tt_ATLAS13(mSi);
2722 if(mSr>= 400 && mSr<=1300) THoEX_pp_Srbb_bbbb=pp_Srbb_bbbb_TH13/ip_ex_bb_H_bb_CMS13(mSr);
2723 if(mSr>= 400 && mSr<=900) THoEX_pp_Srbb_bbbb_8TeV=pp_Srbb_bbbb_TH8/ip_ex_bb_phi_bb_CMS8(mSr);
2724 if(mSi>= 400 && mSi<=1300) THoEX_pp_Sibb_bbbb=pp_Sibb_bbbb_TH13/ip_ex_bb_H_bb_CMS13(mSi);
2725 if(mSi>= 400 && mSi<=900) THoEX_pp_Sibb_bbbb_8TeV=pp_Sibb_bbbb_TH8/ip_ex_bb_phi_bb_CMS8(mSi);
2726 if(mSr>= 550 && mSr<=1200) THoEX_pp_Sr_bb=pp_Sr_bb_TH13/ip_ex_pp_phi_bb_CMS13(mSr);
2727 if(mSr>= 400 && mSr<=1200) THoEX_pp_Sr_bb_8TeV=pp_Sr_bb_TH8/ip_ex_pp_phi_bb_CMS8(mSr);
2728 if(mSi>= 550 && mSi<=1200) THoEX_pp_Si_bb=pp_Si_bb_TH13/ip_ex_pp_phi_bb_CMS13(mSi);
2729 if(mSr>= 400 && mSr<=1200) THoEX_pp_Si_bb_8TeV=pp_Si_bb_TH8/ip_ex_pp_phi_bb_CMS8(mSr);
2730 //std::cout<<"ip_ex_pp_phi_bb_CMS13(mSi)="<< ip_ex_pp_phi_bb_CMS13(550) <<std::endl;
2731 //std::cout<<"pp_Si_bb_TH13="<< ip_th_pp_Si_bb(4.469,0,550) <<std::endl;
2732 //std::cout<<"pp_Si_bb_TH13="<< ip_th_pp_Si_bb(4.469,1.41,550) <<std::endl;
2733}
2734
2735
2736
2738{
2739 double sin2b=2.0*sinb*cosb;
2740 double cos2b=cosb*cosb-sinb*sinb;
2741 double tan2b=sin2b/cos2b;
2742 double cot2b=1.0/tan2b;
2743 double sin2a=2.0*sina*cosa;
2744 double cos2a=cosa*cosa-sina*sina;
2745 double tan2a=sin2a/cos2a;
2746 double cot2a=1.0/tan2a;
2748
2749 m11sq = vev*vev*(lambda2*sinb*sinb*tanb/(cot2a-2.0*cot2b)
2750 +(lambda1*(cosb*cosb - (4.0*cosb*cosb-3.0)*cosb*tan2a/sinb)
2751 -lambda345*(sinb*sinb + cos2b*tan2a*tanb))/(4.0*cot2b*tan2a-2.0));
2752
2753 m22sq = vev*vev*(-lambda1*cosb*cosb*cosb/sinb/(cot2a-2.0*cot2b)
2754 +(lambda2*(sinb*sinb + (4.0*sinb*sinb-3.0)*tanb*tan2a)
2755 -lambda345*(cosb*cosb + cos2b*tan2a*cosb/sinb))/(4.0*cot2b*tan2a-2.0));
2756
2757 m12sq = vev*vev*(-lambda345*sin2b
2758 +2.0*(lambda1*cosb*cosb - lambda2*sinb*sinb)*tan2a/(4.0*tan2a/tan2b-2.0));
2759
2761 +lambda345*sin2a*cosb*sinb
2762 +sin(bma)*sin(bma)*(lambda345 + (lambda2 - lambda1/(tanb*tanb))*tan2a*tanb)/(1.0 - 2.0*cot2b*tan2a));
2763
2764 mAsq = vev*vev*(lambda3+lambda4 + tan2a*(-lambda1*cosb/sinb + lambda2*tanb + 2.0*lambda5*cot2b))/(1.0 - 2.0*cot2b*tan2a);
2765
2767 -lambda345*sin2a*cosb*sinb
2768 +cos(bma)*cos(bma)*(lambda345 + (lambda2 - lambda1/(tanb*tanb))*tan2a*tanb)/(1.0 - 2.0*cot2b*tan2a));
2769
2771 +(kappa1+kappa2+kappa3)*sin2b)/4.0;
2772
2774 +(kappa1+kappa2-kappa3)*sin2b)/4.0;
2775
2776 if( THDMWmodel == "custodial1" ) {
2777 mHpsq = mAsq;
2778 mSpsq = mSIsq;
2779 }
2780 else if( THDMWmodel == "ManoharWise" ) {
2781 mhsq = vev*vev*lambda1;
2782 mSRsq = mSsq + vev*vev*(nu1+nu2+2.0*nu3)/4.0;
2783 mSIsq = mSsq + vev*vev*(nu1+nu2-2.0*nu3)/4.0;
2784 mSpsq = mSsq + vev*vev*nu1/4.0;
2785 }
2786 else if( THDMWmodel == "custodialMW" ) {
2787 mhsq = vev*vev*lambda1;
2788 mSRsq = mSsq + vev*vev*(nu1+2.0*nu2)/4.0;
2789 mSIsq = mSsq + vev*vev*nu1/4.0;
2790 mSpsq = mSIsq;
2791 }
2792 else {
2793 mHpsq = vev*vev*(lambda345 + tan2a*(-lambda1*cosb/sinb + lambda2*tanb + (lambda4+lambda5)*cot2b))/(1.0 - 2.0*cot2b*tan2a);
2794 mSpsq = mSsq + vev*vev*(nu1*cosb*cosb + omega1*sinb*sinb + kappa1*sin2b)/4.0;
2795 }
2796
2797 if(mhsq < 0 || mHsq < 0 || mAsq < 0 || mSRsq < 0 || mSIsq < 0 || mHpsq < 0 || mSpsq < 0)
2798 {
2799 return std::numeric_limits<double>::quiet_NaN();
2800 }
2801 else
2802 {
2803 return 1.;
2804 }
2805}
2806
2808{
2811 MZ=myTHDMW->getMz();
2812 vev=myTHDMW->v();
2848
2849
2855}
gslpp::complex B00(const double mu2, const double p2, const double m02, const double m12) const
.
gslpp::complex B0(const double mu2, const double p2, const double m02, const double m12) const
.
Definition: PVfunctions.cpp:41
double A0(const double mu2, const double m2) const
.
Definition: PVfunctions.cpp:23
const double & getMass() const
A get method to access the particle mass.
Definition: Particle.h:61
@ UP
Definition: QCD.h:324
@ BOTTOM
Definition: QCD.h:329
@ TOP
Definition: QCD.h:328
@ DOWN
Definition: QCD.h:325
@ STRANGE
Definition: QCD.h:327
@ CHARM
Definition: QCD.h:326
@ MU
Definition: QCD.h:314
@ ELECTRON
Definition: QCD.h:312
@ TAU
Definition: QCD.h:316
const Particle & getQuarks(const QCD::quark q) const
A get method to access a quark as an object of the type Particle.
Definition: QCD.h:536
An RGE running algorithm for the THDMW parameters.
Definition: RunnerTHDMW.h:33
virtual double RGERunnercustodialMW(double InitialValues[], unsigned long int NumberOfRGEs, double Q1, double Q2, int order, double Rpeps, double tNLOuni)
virtual double RGERunnerTHDMW(double InitialValues[], unsigned long int NumberOfRGEs, double Q1, double Q2, int order, double Rpeps, double tNLOuni)
virtual double RGERunnerMW(double InitialValues[], unsigned long int NumberOfRGEs, double Q1, double Q2, int order, double Rpeps, double tNLOuni)
A model class for the Standard Model.
const double computeGammaHTotal() const
The Higgs total width in the Standard Model.
const Particle & getLeptons(const QCD::lepton p) const
A get method to retrieve the member object of a lepton.
const double getMz() const
A get method to access the mass of the boson .
const double c02() const
The square of the cosine of the weak mixing angle defined without weak radiative corrections.
const double v() const
The Higgs vacuum expectation value.
THDM branching ratio of .
Definition: lightHiggs.h:21
THDM branching ratio of .
Definition: lightHiggs.h:42
THDM branching ratio of .
Definition: lightHiggs.h:63
A base class for symmetric Two-Higgs-Doublet-Manohar-Wise models.
Definition: THDMW.h:233
const double getTHDMW_kappa1() const
A getter for .
Definition: THDMW.h:662
const double getTHDMW_nu3() const
A getter for .
Definition: THDMW.h:558
const double getTHDMW_kappa2() const
A getter for .
Definition: THDMW.h:675
const double getTHDMW_S_b() const
A getter for .
Definition: THDMW.h:729
const double getTHDMW_mS2() const
A getter for .
Definition: THDMW.h:472
const double getTHDMW_lambda2() const
A getter for .
Definition: THDMW.h:417
const double getNLOuniscaleTHDMW() const
A getter for the minimal NLO unitarity check scale.
Definition: THDMW.h:755
const double getTHDMW_kappa3() const
A getter for .
Definition: THDMW.h:688
std::string getRGEorderflag() const
A getter for the switch for NLO RGE and approximate NLO RGE.
Definition: THDMW.h:337
const double getTHDMW_nu4() const
A getter for .
Definition: THDMW.h:570
const double getTHDMW_nu2() const
A getter for .
Definition: THDMW.h:550
const double getQ_THDMW() const
A getter for the THDMW scale.
Definition: THDMW.h:739
std::string getModelTypeTHDMWflag() const
A getter for the THDMW model type.
Definition: THDMW.h:329
const double getTHDMW_mu2() const
A getter for .
Definition: THDMW.h:488
const double getTHDMW_mu3() const
A getter for .
Definition: THDMW.h:501
const double getTHDMW_sinb() const
A getter for .
Definition: THDMW.h:361
const double getTHDMW_lambda1() const
A getter for .
Definition: THDMW.h:409
const double getTHDMW_mu5() const
A getter for .
Definition: THDMW.h:516
const double getTHDMW_mu1() const
A getter for .
Definition: THDMW.h:480
const double getTHDMW_rho_b() const
A getter for .
Definition: THDMW.h:721
const double getTHDMW_omega4() const
A getter for .
Definition: THDMW.h:633
const double getTHDMW_etaU() const
A getter for .
Definition: THDMW.h:704
const double getTHDMW_mu4() const
A getter for .
Definition: THDMW.h:508
const double getTHDMW_nu5() const
A getter for .
Definition: THDMW.h:578
virtual const double Mw() const
Definition: THDMW.cpp:493
const double getTHDMW_omega3() const
A getter for .
Definition: THDMW.h:617
const double getTHDMW_lambda3() const
A getter for .
Definition: THDMW.h:430
const double getTHDMW_omega1() const
A getter for .
Definition: THDMW.h:591
const double getTHDMW_bma() const
A getter for .
Definition: THDMW.h:377
const double getTHDMW_sina() const
A getter for .
Definition: THDMW.h:401
const double getTHDMW_omega2() const
A getter for .
Definition: THDMW.h:604
const double getTHDMW_etaD() const
A getter for .
Definition: THDMW.h:712
const double getTHDMW_mu6() const
A getter for .
Definition: THDMW.h:529
const double getTHDMW_nu1() const
A getter for .
Definition: THDMW.h:542
const double getRpepsTHDMW() const
A getter for the minimal R' value.
Definition: THDMW.h:747
const double getTHDMW_lambda5() const
A getter for .
Definition: THDMW.h:456
const double getTHDMW_lambda4() const
A getter for .
Definition: THDMW.h:443
const double getTHDMW_cosa() const
A getter for .
Definition: THDMW.h:393
const double getTHDMW_cosb() const
A getter for .
Definition: THDMW.h:369
const double getTHDMW_tanb() const
A getter for .
Definition: THDMW.h:353
gslpp::matrix< double > CMS8_pp_phi_bb
Definition: THDMWcache.h:536
gslpp::matrix< double > CMS8_bb_phi_bb
Definition: THDMWcache.h:529
double ip_ex_pp_H_hh_bbbb_ATLAS13_cache[2][CacheSize]
Definition: THDMWcache.h:486
double pp_Srbb_bbbb_TH13
Definition: THDMWcache.h:94
double ip_ex_pp_Hpm_tb_ATLAS8_e(double mass)
Interpolating function for the expected ATLAS upper limit on a singly charged scalar resonance decayi...
gslpp::matrix< double > CMS8_pp_Hp_tb_e
Definition: THDMWcache.h:542
double lambda2
Definition: THDMWcache.h:922
double omega4_at_Q
Definition: THDMWcache.h:68
void CacheShiftReal(double cache[][CacheSize], const int NumPar, const double params[], const double newResult) const
Adds a new result and its parameters into the cache.
Definition: THDMWcache.cpp:123
gslpp::matrix< double > CMS13_ggF_H_hh_bbbb_e
Definition: THDMWcache.h:537
gslpp::matrix< double > CMS13_pp_phi_bb_e
Definition: THDMWcache.h:537
double ip_ex_pp_SS_jjjj_ATLAS13(double mass)
Interpolating function for the expected ATLAS upper limit on pp -> coloron coloron -> j j j j.
double ip_ex_pp_phi_bb_CMS8_cache[2][CacheSize]
Definition: THDMWcache.h:489
double ip_th_pp_SrSr_jjjj(double etaD, double etaU, double Lambda4, double mSr)
Interpolating function for the theoretical value of p p -> Sr Sr ->j j j j.
double setOtherParameters()
gslpp::complex g_func(const double x) const
Definition: THDMWcache.cpp:758
double mSsq
Definition: THDMWcache.h:926
gslpp::matrix< double > ATLAS8_gg_phi_tt
Definition: THDMWcache.h:527
gslpp::matrix< double > ATLAS13_pp_Gkk_tt
Definition: THDMWcache.h:547
double Gamma_h
Definition: THDMWcache.h:234
gslpp::complex B00_MZ2_MZ2_mSr2_mSp2(const double MZ2, const double mSr2, const double mSp2) const
.
Definition: THDMWcache.cpp:238
double etaD
Definition: THDMWcache.h:946
double mu2_at_Q
Definition: THDMWcache.h:71
double ip_th_pp_Sr_bb_8TeV_cache[5][CacheSize]
Definition: THDMWcache.h:464
double ip_th_pp_Si_bb(double etaD, double etaU, double mS)
Interpolating function for the theoretical value of p p -> Si -> b bbar.
double m12sq
Definition: THDMWcache.h:74
double pp_Sr_jj_TH13
Definition: THDMWcache.h:90
gslpp::matrix< double > ATLAS8_pp_Hpm_tb
Definition: THDMWcache.h:539
gslpp::complex I_HH_U_cache[4][CacheSize]
Definition: THDMWcache.h:421
gslpp::complex B00_MZ2_MZ2_mSr2_mSi2(const double MZ2, const double mSr2, const double mSi2) const
.
Definition: THDMWcache.cpp:266
double ip_th_pp_Srtt_tttt_cache[5][CacheSize]
Definition: THDMWcache.h:474
gslpp::complex A_HH_L(const double mHh2, const double cW2, const double Mmu, const double Mtau, const double MZ) const
Amplitude for a heavy CP-even Higgs boson decay to a photon and a Z boson including muons and taus in...
Definition: THDMWcache.cpp:674
gslpp::matrix< double > ATLAS8_gg_phi_tt_e
Definition: THDMWcache.h:528
double THoEX_pp_Sibb_bbbb_8TeV
Definition: THDMWcache.h:112
gslpp::complex A_H_W_cache[5][CacheSize]
Definition: THDMWcache.h:441
gslpp::vector< gslpp::complex > betaeigenvalues
Definition: THDMWcache.h:907
double cosb
Definition: THDMWcache.h:917
gslpp::complex A_HH_L_cache[6][CacheSize]
Definition: THDMWcache.h:439
gslpp::complex I_A_L_cache[4][CacheSize]
Definition: THDMWcache.h:428
double ip_ex_ggF_H_hh_bbbb_CMS13_e(double mass)
Interpolating function for the expected CMS upper limit on a scalar resonance decaying to two bosons...
double omega2
Definition: THDMWcache.h:939
double ip_ex_ggF_H_hh_bbbb_CMS13_cache[2][CacheSize]
Definition: THDMWcache.h:501
gslpp::matrix< double > ATLAS13_pp_H_hh_bbbb_e
Definition: THDMWcache.h:534
double omega3
Definition: THDMWcache.h:940
double ip_ex_ggF_H_hh_bbbb_CMS13(double mass)
Interpolating function for the expected ATLAS upper limit on a singly charged scalar resonance decayi...
double kappa1_at_Q
Definition: THDMWcache.h:63
double ip_ex_pp_Hp_tb_CMS8_cache_e[2][CacheSize]
Definition: THDMWcache.h:496
gslpp::complex I_A_U(const double mA2, const double Mc, const double Mt) const
Amplitude for a CP-odd Higgs boson decay to diphotons including the charm and top quarks in the loop.
Definition: THDMWcache.cpp:380
double ip_ex_pp_Hpm_tb_ATLAS8_cache[2][CacheSize]
Definition: THDMWcache.h:493
gslpp::matrix< double > MadGraph_pp_Sibb_bbbb_8TeV
Definition: THDMWcache.h:558
double ip_th_pp_SrSr_jjjj_cache[5][CacheSize]
Definition: THDMWcache.h:472
double lambda2_at_Q
Definition: THDMWcache.h:55
gslpp::complex B0_MZ2_0_mSp2_mSp2_cache[3][CacheSize]
Definition: THDMWcache.h:450
gslpp::matrix< double > ATLAS13_pp_SS_jjjj
Definition: THDMWcache.h:548
gslpp::complex B0_MZ2_0_mSp2_mSp2(const double MZ2, const double mSp2) const
.
Definition: THDMWcache.cpp:183
double ip_th_pp_Srbb_bbbb_8TeV(double etaD, double etaU, double Lambda4, double mSr)
Interpolating function for the theoretical value of p p -> Sr b bbar -> b bbar b bbar.
int CacheCheck(const gslpp::complex cache[][CacheSize], const int NumPar, const double params[]) const
Check whether for the latest set of parameters a value is in the cache.
Definition: THDMWcache.cpp:85
double mhsq
Definition: THDMWcache.h:77
void runTHDMWparameters()
Definition: THDMWcache.cpp:904
gslpp::complex A_A_L_cache[6][CacheSize]
Definition: THDMWcache.h:440
gslpp::complex A_h_L(const double mHl2, const double cW2, const double Me, const double Mmu, const double Mtau, const double MZ) const
Amplitude for the SM Higgs boson decay to a photon and a Z boson including the leptons in the loop.
Definition: THDMWcache.cpp:651
double nu5_at_Q
Definition: THDMWcache.h:70
double nu5
Definition: THDMWcache.h:937
gslpp::complex A_H_W(const double mH, const double cW2, const double MW, const double MZ) const
Amplitude for a CP-even Higgs boson decay to a photon and a Z boson including the W boson in the loop...
Definition: THDMWcache.cpp:713
double interpolate3D(gslpp::matrix< double > arrayTab, double x, double y, double z)
Linearly interpolates a table with three parameter dimensions.
gslpp::matrix< double > ATLAS13_tt_phi_tt_e
Definition: THDMWcache.h:534
double ip_ex_bb_phi_tt_ATLAS13(double mass)
Interpolating function for the observed ATLAS upper limit on a bb associated scalar resonance decayin...
double THoEX_pp_Sr_bb_8TeV
Definition: THDMWcache.h:114
gslpp::complex I_h_D(const double mHl2, const double Md, const double Ms, const double Mb) const
Amplitude for the SM Higgs boson decay to diphotons including the down-type quarks in the loop.
Definition: THDMWcache.cpp:396
double ip_ex_pp_Hp_tb_CMS8_e(double mass)
Interpolating function for the expected CMS upper limit on a singly charged scalar resonance decaying...
double THoEX_pp_Si_bb_8TeV
Definition: THDMWcache.h:116
double ip_ex_pp_phi_bb_CMS13_cache[2][CacheSize]
Definition: THDMWcache.h:488
double THoEX_pp_Srtt_tttt
Definition: THDMWcache.h:104
double pp_Srtt_tttt_TH13
Definition: THDMWcache.h:89
void computeHHlimits()
double lambda5
Definition: THDMWcache.h:925
gslpp::complex A0_MZ2_mSp2(const double MZ2, const double mSp2) const
.
Definition: THDMWcache.cpp:141
double MZ
Definition: THDMWcache.h:913
gslpp::complex B00_MZ2_MZ2_mSr2_mSp2_cache[4][CacheSize]
Definition: THDMWcache.h:454
double ip_th_pp_Srbb_bbbb_cache[5][CacheSize]
Definition: THDMWcache.h:468
double rh_gaga
Definition: THDMWcache.h:230
gslpp::complex I_HH_D(const double mHh2, const double Ms, const double Mb) const
Amplitude for a heavy CP-even Higgs boson decay to diphotons including the strange and bottom quarks ...
Definition: THDMWcache.cpp:414
double THoEX_pp_Srbb_bbbb_8TeV
Definition: THDMWcache.h:110
double kappa2_at_Q
Definition: THDMWcache.h:66
gslpp::matrix< double > ATLAS13_pp_Hp_tb
Definition: THDMWcache.h:544
gslpp::vector< gslpp::complex > NLOunitarityeigenvalues
Definition: THDMWcache.h:223
double pp_Srbb_bbbb_TH8
Definition: THDMWcache.h:95
double THoEX_pp_Sr_jj
Definition: THDMWcache.h:105
THDMWcache(const StandardModel &SM_i)
THDMWcache constructor.
Definition: THDMWcache.cpp:14
gslpp::complex A_A_L(const double mA2, const double cW2, const double Mmu, const double Mtau, const double MZ) const
Amplitude for a CP-odd Higgs boson decay to a photon and a Z boson including muons and taus in the lo...
Definition: THDMWcache.cpp:694
gslpp::complex I_h_U_cache[5][CacheSize]
Definition: THDMWcache.h:420
double sina
Definition: THDMWcache.h:919
static const int CacheSize
Cache size.
Definition: THDMWcache.h:253
double kappa3
Definition: THDMWcache.h:944
double ip_th_pp_Stb_tbtb(double etaD, double etaU, double mS)
Interpolating function for the theoretical value of p p -> S+ tbar b -> t bbar tbar b.
double rh_QuQu
Definition: THDMWcache.h:225
double pp_Stb_tbtb_TH13
Definition: THDMWcache.h:92
double rh_gg
Definition: THDMWcache.h:227
double ip_ex_pp_phi_bb_CMS13_cache_e[2][CacheSize]
Definition: THDMWcache.h:490
gslpp::matrix< double > CMS13_pp_phi_bb
Definition: THDMWcache.h:535
double S_b
Definition: THDMWcache.h:948
gslpp::matrix< double > MadGraph_pp_Stb_tbtb
Definition: THDMWcache.h:553
gslpp::complex A_HH_D(const double mHh2, const double cW2, const double Ms, const double Mb, const double MZ) const
Amplitude for a heavy CP-even Higgs boson decay to a photon and a Z boson including the strange and b...
Definition: THDMWcache.cpp:612
double pp_SrSr_jjjj_TH13
Definition: THDMWcache.h:91
double rh_ll
Definition: THDMWcache.h:229
gslpp::complex I_A_D(const double mA2, const double Ms, const double Mb) const
Amplitude for a CP-odd Higgs boson decay to diphotons including the strange and bottom quarks in the ...
Definition: THDMWcache.cpp:431
gslpp::complex I_h_U(const double mHl2, const double Mu, const double Mc, const double Mt) const
Amplitude for the SM Higgs boson decay to diphotons including the up-type quarks in the loop.
Definition: THDMWcache.cpp:345
gslpp::complex A_HH_D_cache[6][CacheSize]
Definition: THDMWcache.h:436
gslpp::matrix< double > CMS13_pp_H_hh_bbbb_e
Definition: THDMWcache.h:537
double ip_th_pp_Sitt_tttt_cache[4][CacheSize]
Definition: THDMWcache.h:470
gslpp::complex I_H_Hp_cache[3][CacheSize]
Definition: THDMWcache.h:430
std::string THDMWmodel
Definition: THDMWcache.h:911
double omega1
Definition: THDMWcache.h:938
double omega1_at_Q
Definition: THDMWcache.h:62
gslpp::complex A_A_D(const double mA2, const double cW2, const double Ms, const double Mb, const double MZ) const
Amplitude for a CP-odd Higgs boson decay to a photon and a Z boson including the strange and bottom q...
Definition: THDMWcache.cpp:632
double pp_Sitt_tttt_TH13
Definition: THDMWcache.h:93
double ip_ex_bb_phi_tt_ATLAS13_cache_e[2][CacheSize]
Definition: THDMWcache.h:483
double pp_Si_bb_TH13
Definition: THDMWcache.h:100
double ip_ex_pp_H_hh_bbbb_CMS13_cache_e[2][CacheSize]
Definition: THDMWcache.h:492
double ip_th_pp_Sr_jj(double etaD, double etaU, double Lambda4, double mSr)
Interpolating function for the theoretical value of p p -> Sr -> j j.
gslpp::complex A_H_Hp(const double mHp2, const double mH, const double cW2, const double MZ) const
Amplitude for a CP-even Higgs boson decay to a photon and a Z boson including the charged Higgs boson...
Definition: THDMWcache.cpp:731
gslpp::complex B00_MZ2_MZ2_mSi2_mSp2_cache[4][CacheSize]
Definition: THDMWcache.h:456
double mHsq
Definition: THDMWcache.h:78
gslpp::complex A0_MZ2_mSr2_cache[3][CacheSize]
Definition: THDMWcache.h:448
double ip_ex_pp_Hp_tb_CMS8_cache[2][CacheSize]
Definition: THDMWcache.h:495
double ip_ex_pp_Hp_tb_ATLAS13_cache[2][CacheSize]
Definition: THDMWcache.h:497
gslpp::matrix< double > CMS13_bb_H_bb
Definition: THDMWcache.h:543
double mu4
Definition: THDMWcache.h:930
gslpp::complex B00_MZ2_MZ2_mSr2_mSi2_cache[4][CacheSize]
Definition: THDMWcache.h:455
double ip_ex_bb_phi_bb_CMS8_e(double mass)
Interpolating function for the expected CMS upper limit on a bottom quark produced scalar resonance d...
double mu6_at_Q
Definition: THDMWcache.h:73
double vev
Definition: THDMWcache.h:914
gslpp::matrix< double > ATLAS13_tt_phi_tt
Definition: THDMWcache.h:533
double m11sq
Definition: THDMWcache.h:75
gslpp::matrix< double > MadGraph_pp_Sr_bb_8TeV
Definition: THDMWcache.h:562
gslpp::complex I_HH_L(const double mHh2, const double Mmu, const double Mtau) const
Amplitude for a heavy CP-even Higgs boson decay to diphotons including muons and taus in the loop.
Definition: THDMWcache.cpp:466
double ip_th_pp_Sibb_bbbb_8TeV_cache[4][CacheSize]
Definition: THDMWcache.h:467
~THDMWcache()
THDMWcache destructor.
Definition: THDMWcache.cpp:78
double THoEX_pp_Srbb_bbbb
Definition: THDMWcache.h:109
double mu4_at_Q
Definition: THDMWcache.h:60
double kappa1
Definition: THDMWcache.h:942
double ip_ex_pp_Hp_tb_ATLAS13(double mass)
Interpolating function for the observed ATLAS upper limit on a singly charged scalar resonance decayi...
double ip_ex_pp_H_hh_bbbb_ATLAS13_cache_e[2][CacheSize]
Definition: THDMWcache.h:487
gslpp::complex I_h_D_cache[5][CacheSize]
Definition: THDMWcache.h:423
double mSRsq
Definition: THDMWcache.h:80
double ip_ex_pp_Hp_tb_CMS8(double mass)
Interpolating function for the observed CMS upper limit on a singly charged scalar resonance decaying...
double ip_ex_pp_SS_jjjj_ATLAS13_cache[2][CacheSize]
Definition: THDMWcache.h:505
double mu1
Definition: THDMWcache.h:927
void CacheShift(gslpp::complex cache[][CacheSize], const int NumPar, const double params[], const gslpp::complex newResult) const
Adds a new result and its parameters into the cache.
Definition: THDMWcache.cpp:109
void read()
Fills all required arrays with the values read from the tables.
gslpp::complex I_HH_L_cache[4][CacheSize]
Definition: THDMWcache.h:427
double ip_th_pp_Sr_tt_cache[5][CacheSize]
Definition: THDMWcache.h:475
double mAsq
Definition: THDMWcache.h:79
gslpp::complex A_A_U_cache[6][CacheSize]
Definition: THDMWcache.h:434
double THoEX_pp_SrSr_jjjj
Definition: THDMWcache.h:106
gslpp::complex I_HH_D_cache[4][CacheSize]
Definition: THDMWcache.h:424
gslpp::matrix< double > MadGraph_pp_Si_bb
Definition: THDMWcache.h:559
gslpp::matrix< double > Dummy
Definition: THDMWcache.h:530
gslpp::matrix< double > MadGraph_pp_Sibb_bbbb
Definition: THDMWcache.h:557
double lambda1
Definition: THDMWcache.h:921
gslpp::complex A_h_U_cache[7][CacheSize]
Definition: THDMWcache.h:432
double lambda4_at_Q
Definition: THDMWcache.h:57
double Q_THDMW
Definition: THDMWcache.h:912
double ip_th_pp_Sr_tt(double etaD, double etaU, double Lambda4, double mSr)
Interpolating function for the theoretical value of p p -> Sr -> t tbar.
double nu4
Definition: THDMWcache.h:936
double lambda3
Definition: THDMWcache.h:923
double cosa
Definition: THDMWcache.h:920
double ip_th_pp_Sitt_tttt(double etaD, double etaU, double mS)
Interpolating function for the theoretical value of p p -> Si tbar t -> t tbar tbar t.
double ip_ex_bb_phi_tt_ATLAS13_e(double mass)
Interpolating function for the expected ATLAS upper limit on a bb associated scalar resonance decayin...
double ip_th_pp_Si_bb_8TeV(double etaD, double etaU, double mS)
Interpolating function for the theoretical value of p p -> Si -> b bbar.
double THoEX_pp_Stb_tbtb
Definition: THDMWcache.h:107
double interpolate(gslpp::matrix< double > arrayTab, double x)
Linearly interpolates a table with one parameter dimension.
double ip_ex_pp_H_hh_bbbb_CMS13_e(double mass)
Interpolating function for the expected CMS upper limit on a scalar resonance decaying to two bosons...
double omega2_at_Q
Definition: THDMWcache.h:65
gslpp::matrix< double > MadGraph_pp_Srtt_tttt
Definition: THDMWcache.h:550
double lambda3_at_Q
Definition: THDMWcache.h:56
gslpp::matrix< double > MadGraph_pp_Sr_tt
Definition: THDMWcache.h:549
gslpp::complex A_H_Hp_cache[5][CacheSize]
Definition: THDMWcache.h:442
double ip_ex_bb_phi_bb_CMS8(double mass)
Interpolating function for the observed CMS upper limit on a bottom quark produced scalar resonance d...
double m22sq
Definition: THDMWcache.h:76
double ip_ex_tt_phi_tt_ATLAS13_cache_e[2][CacheSize]
Definition: THDMWcache.h:485
gslpp::matrix< double > MadGraph_pp_Sitt_tttt
Definition: THDMWcache.h:554
double sumModBRs
Definition: THDMWcache.h:233
gslpp::matrix< double > CMS13_ggF_H_hh_bbbb
Definition: THDMWcache.h:535
double lambda4
Definition: THDMWcache.h:924
gslpp::matrix< double > MadGraph_pp_Srbb_bbbb
Definition: THDMWcache.h:555
gslpp::complex A_HH_U_cache[6][CacheSize]
Definition: THDMWcache.h:433
gslpp::complex A0_MZ2_mSr2(const double MZ2, const double mSr2) const
.
Definition: THDMWcache.cpp:155
double ip_th_pp_Sr_jj_cache[5][CacheSize]
Definition: THDMWcache.h:473
double THDM_BR_h_ZZ
Definition: THDMWcache.h:239
double ip_th_pp_Sibb_bbbb(double etaD, double etaU, double mS)
Interpolating function for the theoretical value of p p -> Si bbar b -> b bbar bbar b.
double interpolate4D(gslpp::matrix< double > arrayTab, double x, double y, double z, double v)
Linearly interpolates a table with four parameter dimensions.
gslpp::complex I_h_L_cache[5][CacheSize]
Definition: THDMWcache.h:426
double THoEX_pp_Sr_bb
Definition: THDMWcache.h:113
double ip_ex_pp_phi_hh_bbbb_CMS8_cache_e[2][CacheSize]
Definition: THDMWcache.h:477
double ip_ex_bb_H_bb_CMS13_cache[2][CacheSize]
Definition: THDMWcache.h:506
const THDMW * myTHDMW
Definition: THDMWcache.h:245
double ip_ex_gg_phi_tt_ATLAS8_cache[2][CacheSize]
Definition: THDMWcache.h:480
double ip_ex_tt_phi_tt_ATLAS13(double mass)
Interpolating function for the observed ATLAS upper limit on a tt associated scalar resonance decayin...
gslpp::complex A_h_D_cache[7][CacheSize]
Definition: THDMWcache.h:435
double ip_ex_tt_phi_tt_ATLAS13_cache[2][CacheSize]
Definition: THDMWcache.h:484
double ip_th_pp_Si_bb_8TeV_cache[4][CacheSize]
Definition: THDMWcache.h:462
double ip_ex_bb_H_bb_CMS13(double mass)
Interpolating function for the expected CMS upper limit on pp -> H b bbar -> b bbar b bbar.
double ip_ex_pp_H_hh_bbbb_ATLAS13_e(double mass)
Interpolating function for the expected ATLAS upper limit on a spin-2 resonance decaying to two boso...
double pp_Sibb_bbbb_TH8
Definition: THDMWcache.h:97
double ip_th_pp_Sr_bb(double etaD, double etaU, double Lambda4, double mSr)
Interpolating function for the theoretical value of p p -> Sr -> b bbar.
double ip_ex_tt_phi_tt_ATLAS13_e(double mass)
Interpolating function for the expected ATLAS upper limit on a tt associated scalar resonance decayin...
double nu3_at_Q
Definition: THDMWcache.h:69
double nu3
Definition: THDMWcache.h:935
gslpp::complex f_func(const double x) const
loginterpolating function for the theoretical value of p p -> Sr Sr ->j j j j
Definition: THDMWcache.cpp:748
gslpp::complex A0_MZ2_mSi2(const double MZ2, const double mSr2) const
.
Definition: THDMWcache.cpp:169
double ip_th_pp_Srtt_tttt(double etaD, double etaU, double Lambda4, double mSr)
Interpolating function for the theoretical value of p p -> Sr t tbar -> t tbar t tbar.
double ip_ex_pp_phi_bb_CMS13(double mass)
Interpolating function for the observed CMS upper limit on a scalar resonance decaying to a b quark p...
double pp_Sr_bb_TH13
Definition: THDMWcache.h:98
gslpp::complex I_h_L(const double mHl2, const double Me, const double Mmu, const double Mtau) const
Amplitude for the SM Higgs boson decay to diphotons including the leptons in the loop.
Definition: THDMWcache.cpp:447
gslpp::complex I_H_Hp(const double mHp2, const double mH) const
Amplitude for a CP-even Higgs boson decay to diphotons including the charged Higgs boson in the loop.
Definition: THDMWcache.cpp:514
double THoEX_pp_Sitt_tttt
Definition: THDMWcache.h:108
double ip_th_pp_Srbb_bbbb_8TeV_cache[5][CacheSize]
Definition: THDMWcache.h:469
gslpp::complex A_A_U(const double mA2, const double cW2, const double Mc, const double Mt, const double MZ) const
Amplitude for a CP-odd Higgs boson decay to a photon and a Z boson including the charm and top quarks...
Definition: THDMWcache.cpp:571
double pp_Sr_tt_TH13
Definition: THDMWcache.h:88
double mu6
Definition: THDMWcache.h:932
void computeSignalStrengthQuantities()
Definition: THDMWcache.cpp:780
double ip_ex_pp_R_gg_CMS13(double mass)
Interpolating function for the expected CMS upper limit for resonances decaying to gluons.
double Q_cutoff
Definition: THDMWcache.h:45
double mu2
Definition: THDMWcache.h:928
double pp_Si_bb_TH8
Definition: THDMWcache.h:101
double ip_ex_bb_phi_bb_CMS8_cache_e[2][CacheSize]
Definition: THDMWcache.h:479
gslpp::complex A_HH_U(const double mHh2, const double cW2, const double Mc, const double Mt, const double MZ) const
Amplitude for a heavy CP-even Higgs boson decay to a photon and a Z boson including the charm and top...
Definition: THDMWcache.cpp:551
gslpp::matrix< double > CMS8_pp_H_hh_bbbb
Definition: THDMWcache.h:529
double kappa2
Definition: THDMWcache.h:943
double etaU
Definition: THDMWcache.h:945
double mu3_at_Q
Definition: THDMWcache.h:59
gslpp::complex A0_MZ2_mSi2_cache[3][CacheSize]
Definition: THDMWcache.h:449
double ip_th_pp_Sr_bb_8TeV(double etaD, double etaU, double Lambda4, double mSr)
Interpolating function for the theoretical value of p p -> Sr -> b bbar at 8 TeV.
double rh_Zga
Definition: THDMWcache.h:231
double mHpsq
Definition: THDMWcache.h:82
const PVfunctions PV
Definition: THDMWcache.h:247
gslpp::complex Int1(const double tau, const double lambda) const
Definition: THDMWcache.cpp:770
gslpp::matrix< double > arraybsgamma
Definition: THDMWcache.h:563
double mu5_at_Q
Definition: THDMWcache.h:72
double ip_ex_pp_phi_hh_bbbb_CMS8_e(double mass)
Interpolating function for the expected CMS upper limit on a scalar resonance decaying to two bosons...
double ip_ex_pp_Hpm_tb_ATLAS8(double mass)
Interpolating function for the observed ATLAS upper limit on a singly charged scalar resonance decayi...
double nu2_at_Q
Definition: THDMWcache.h:64
double ip_ex_gg_phi_tt_ATLAS8_cache_e[2][CacheSize]
Definition: THDMWcache.h:481
double mSIsq
Definition: THDMWcache.h:81
gslpp::complex I_A_L(const double mA2, const double Mmu, const double Mtau) const
Amplitude for a CP-odd Higgs boson decay to diphotons including muons and taus in the loop.
Definition: THDMWcache.cpp:483
gslpp::complex I_HH_U(const double mHh2, const double Mc, const double Mt) const
Amplitude for a heavy CP-even Higgs boson decay to diphotons including the charm and top quarks in th...
Definition: THDMWcache.cpp:363
double ip_ex_pp_Gkk_tt_ATLAS13(double mass)
Interpolating function for the expected ATLAS upper limit on pp -> Gkk (Kaluza-Klein graviton) -> t t...
gslpp::matrix< double > ATLAS13_bb_phi_tt
Definition: THDMWcache.h:533
gslpp::matrix< double > MadGraph_pp_Sr_jj
Definition: THDMWcache.h:551
double ip_ex_gg_phi_tt_ATLAS8(double mass)
Interpolating function for the observed ATLAS upper limit on a gluon-gluon produced scalar resonance ...
double rh_VV
Definition: THDMWcache.h:226
double bma
Definition: THDMWcache.h:918
gslpp::matrix< double > CMS13_pp_H_hh_bbbb
Definition: THDMWcache.h:535
double nu1_at_Q
Definition: THDMWcache.h:61
gslpp::complex I_A_U_cache[4][CacheSize]
Definition: THDMWcache.h:422
gslpp::complex A0_MZ2_mSp2_cache[3][CacheSize]
Definition: THDMWcache.h:447
double ip_ex_ggF_H_hh_bbbb_CMS13_cache_e[2][CacheSize]
Definition: THDMWcache.h:502
gslpp::complex A_h_L_cache[7][CacheSize]
Definition: THDMWcache.h:438
void updateCache()
double ip_ex_pp_Hpm_tb_ATLAS8_cache_e[2][CacheSize]
Definition: THDMWcache.h:494
gslpp::matrix< double > CMS13_pp_R_gg
Definition: THDMWcache.h:538
gslpp::complex B00_MZ2_MZ2_mSp2_mSp2_cache[3][CacheSize]
Definition: THDMWcache.h:457
gslpp::matrix< double > ATLAS13_bb_phi_tt_e
Definition: THDMWcache.h:534
double ip_th_pp_Stb_tbtb_cache[4][CacheSize]
Definition: THDMWcache.h:471
double ip_ex_pp_Gkk_tt_ATLAS13_cache[2][CacheSize]
Definition: THDMWcache.h:503
double rh_QdQd
Definition: THDMWcache.h:228
double ip_ex_pp_H_hh_bbbb_ATLAS13(double mass)
Interpolating function for the observed ATLAS upper limit on a spin-2 resonance decaying to two boso...
gslpp::complex A_h_U(const double mHl2, const double cW2, const double Mu, const double Mc, const double Mt, const double MZ) const
Amplitude for the SM Higgs boson decay to a photon and a Z boson including the up-type quarks in the ...
Definition: THDMWcache.cpp:529
double rho_b
Definition: THDMWcache.h:947
double ip_th_pp_Srbb_bbbb(double etaD, double etaU, double Lambda4, double mSr)
Interpolating function for the theoretical value of p p -> Sr b bbar -> b bbar b bbar.
double ip_ex_pp_H_hh_bbbb_CMS13(double mass)
Interpolating function for the observed CMS upper limit on a scalar resonance decaying to two bosons...
double sinb
Definition: THDMWcache.h:916
double mu5
Definition: THDMWcache.h:931
double mu3
Definition: THDMWcache.h:929
double ip_th_pp_Si_bb_cache[4][CacheSize]
Definition: THDMWcache.h:463
gslpp::complex A_A_D_cache[6][CacheSize]
Definition: THDMWcache.h:437
gslpp::matrix< double > readTable(std::string filename, int rowN, int colN)
This function reads values from a table and returns them as an array.
double ip_ex_gg_phi_tt_ATLAS8_e(double mass)
Interpolating function for the expected ATLAS upper limit on a gluon-gluon produced scalar resonance ...
double RpepsTHDMW
Definition: THDMWcache.h:221
double ip_ex_bb_phi_bb_CMS8_cache[2][CacheSize]
Definition: THDMWcache.h:478
double ip_th_pp_Sibb_bbbb_8TeV(double etaD, double etaU, double mS)
Interpolating function for the theoretical value of p p -> Si bbar b -> b bbar bbar b.
gslpp::complex I_H_W_cache[3][CacheSize]
Definition: THDMWcache.h:429
double ip_ex_pp_R_gg_CMS13_cache[2][CacheSize]
Definition: THDMWcache.h:504
double nu4_at_Q
Definition: THDMWcache.h:67
double THoEX_pp_Sr_tt
Definition: THDMWcache.h:103
double ip_ex_pp_phi_hh_bbbb_CMS8_cache[2][CacheSize]
Definition: THDMWcache.h:476
double THoEX_pp_Si_bb
Definition: THDMWcache.h:115
gslpp::matrix< double > CMS8_bb_phi_bb_e
Definition: THDMWcache.h:531
gslpp::complex A_h_D(const double mHl2, const double cW2, const double Md, const double Ms, const double Mb, const double MZ) const
Amplitude for the SM Higgs boson decay to a photon and a Z boson including the down-type quarks in th...
Definition: THDMWcache.cpp:590
gslpp::matrix< double > CMS8_pp_H_hh_bbbb_e
Definition: THDMWcache.h:531
double THDM_BR_h_WW
Definition: THDMWcache.h:238
double ip_ex_bb_phi_tt_ATLAS13_cache[2][CacheSize]
Definition: THDMWcache.h:482
double omega4
Definition: THDMWcache.h:941
gslpp::complex I_H_W(const double mH, const double MW) const
Amplitude for a CP-even Higgs boson decay to diphotons including the W boson in the loop.
Definition: THDMWcache.cpp:499
gslpp::vector< gslpp::complex > unitarityeigenvalues
Definition: THDMWcache.h:222
void computeUnitarity()
double pp_Sr_bb_TH8
Definition: THDMWcache.h:99
double ip_ex_pp_phi_hh_bbbb_CMS8(double mass)
Interpolating function for the observed CMS upper limit on a scalar resonance decaying to two bosons...
gslpp::matrix< double > ATLAS13_pp_H_hh_bbbb
Definition: THDMWcache.h:533
double THoEX_pp_Sibb_bbbb
Definition: THDMWcache.h:111
gslpp::matrix< double > CMS8_pp_Hp_tb
Definition: THDMWcache.h:541
double ip_ex_pp_phi_bb_CMS13_e(double mass)
Interpolating function for the expected CMS upper limit on a scalar resonance decaying to a b quark p...
gslpp::matrix< double > ATLAS8_pp_Hpm_tb_e
Definition: THDMWcache.h:540
double lambda1_at_Q
Definition: THDMWcache.h:54
double nu2
Definition: THDMWcache.h:934
gslpp::complex Int2(const double tau, const double lambda) const
Definition: THDMWcache.cpp:776
double ip_ex_pp_H_hh_bbbb_CMS13_cache[2][CacheSize]
Definition: THDMWcache.h:491
double ip_th_pp_Sibb_bbbb_cache[4][CacheSize]
Definition: THDMWcache.h:466
gslpp::complex B00_MZ2_MZ2_mSi2_mSp2(const double MZ2, const double mSi2, const double mSp2) const
.
Definition: THDMWcache.cpp:252
gslpp::complex I_A_D_cache[4][CacheSize]
Definition: THDMWcache.h:425
gslpp::matrix< double > MadGraph_pp_Si_bb_8TeV
Definition: THDMWcache.h:560
RunnerTHDMW * myRunnerTHDMW
Definition: THDMWcache.h:246
double tanb
Definition: THDMWcache.h:915
double mSpsq
Definition: THDMWcache.h:83
double nu1
Definition: THDMWcache.h:933
gslpp::matrix< double > MadGraph_pp_SrSr_jjjj
Definition: THDMWcache.h:552
double ip_th_pp_Sr_bb_cache[5][CacheSize]
Definition: THDMWcache.h:465
int CacheCheckReal(const double cache[][CacheSize], const int NumPar, const double params[]) const
Check whether for the latest set of parameters a value is in the cache.
Definition: THDMWcache.cpp:97
gslpp::matrix< double > MadGraph_pp_Srbb_bbbb_8TeV
Definition: THDMWcache.h:556
double pp_Sibb_bbbb_TH13
Definition: THDMWcache.h:96
gslpp::complex B00_MZ2_MZ2_mSp2_mSp2(const double MZ2, const double mSp2) const
.
Definition: THDMWcache.cpp:282
double ip_ex_pp_phi_bb_CMS8(double mass)
Interpolating function for the observed CMS upper limit on a scalar resonance decaying to a b quark p...
double mu1_at_Q
Definition: THDMWcache.h:58
gslpp::matrix< double > MadGraph_pp_Sr_bb
Definition: THDMWcache.h:561
parameter of the Higgs potential
An observable class for the quartic Higgs potential coupling .
An observable class for the quartic Higgs potential coupling combination .
An observable class for the quartic Higgs potential coupling .
An observable class for the quartic Higgs potential coupling .
An observable class for the quartic Higgs potential coupling .