THDMcache.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 HEPfit Collaboration
3  * All rights reserved.
4  *
5  * For the licensing terms see doc/COPYING.
6  */
7 
8 #include "THDMcache.h"
9 #include <fstream>
10 #include "gslpp.h"
11 #include <sstream>
12 #include <string>
13 
15 
16 : br_tt(19861, 2, 0.),
17  br_bb(19861, 2, 0.),
18  br_tautau(19861, 2, 0.),
19  br_cc(19861, 2, 0.),
20  br_mumu(19861, 2, 0.),
21  br_ZZ(19861, 2, 0.),
22  br_WW(19861, 2, 0.),
23  pc_ggF(1971, 2, 0.),
24  pc_VBF(1971, 2, 0.),
25  pc_WH(1971, 2, 0.),
26  pc_ZH(1971, 2, 0.),
27  pc_ttH(1971, 2, 0.),
28  GammaHtotSM(19861, 2, 0.),
29  cs_ggH(186, 2, 0.),
30  cs_ggH_tt(186, 2, 0.),
31  cs_ggH_bb(186, 2, 0.),
32  cs_ggA(186, 2, 0.),
33  cs_ggA_tt(186, 2, 0.),
34  cs_ggA_bb(186, 2, 0.),
35  cs_bbFtoHP(185, 2, 0.),
36  ATLAS_ggF_phi_gaga(991, 2, 0.),
37  ATLAS_ggF_phi_tautau(496, 2, 0.),
38  ATLAS_bbF_phi_tautau(496, 2, 0.),
39  ATLAS_ggF_A_hZ_tautauZ(986, 2, 0.),
40  ATLAS_ggF_A_hZ_bbZ(986, 2, 0.),
41  ATLAS_pp_phi_tt(200, 2, 0.),
42  ATLAS_ggF_H_WW(100,2,0.),
43  ATLAS_VBF_H_WW(100,2,0.),
44  ATLAS_ggF_H_hh(1000,2,0.),
45  CMS_pp_H_ZZ(9851, 2, 0.),
46  CMS_ggF_A_hZ_bbll(986, 2, 0.),
47  CMS_pp_H_hh_gagabb(496, 2, 0.),
48  CMS_pp_H_hh_bbbb(496, 2, 0.),
49  CMS_bbF_phi_bb(1000, 2, 0.),
50  CMS_ggF_phi_tautau(1000,2,0.),
51  CMS_bbF_phi_tautau(1000,2,0.),
52  CMS_ggF_phi_gaga(2000,2,0.),
53  CMS_ggF_H_hh_bbtautau(1000,2,0.),
54  CMS_ggF_A_hZ_tautaull(1000,2,0.),
55  arraybsgamma(1111, 3, 0.),
56  PV(true)
57 {
58  read();
59 }
60 
61 
63 
64 int THDMcache::CacheCheck(const gslpp::complex cache[][CacheSize],
65  const int NumPar, const double params[]) const {
66  bool bCache;
67  for(int i=0; i<CacheSize; i++) {
68  bCache = true;
69  for(int j=0; j<NumPar; j++)
70  bCache &= (params[j] == cache[j][i].real());
71  if (bCache) return i;
72  }
73  return -1;
74 }
75 
76 void THDMcache::CacheShift(gslpp::complex cache[][CacheSize], const int NumPar,
77  const double params[], const gslpp::complex newResult) const {
78  // shift old parameters and result
79  for(int i=CacheSize-1; i>0; i--)
80  for(int j=0; j<NumPar+1; j++)
81  cache[j][i] = cache[j][i-1];
82 
83  // store new parameters and result
84  for(int j=0; j<NumPar; j++) {
85  cache[j][0] = gslpp::complex(params[j], 0.0, false);
86  cache[NumPar][0] = newResult;
87  }
88 }
89 
91 /*One-loop functions*/
93 
94 gslpp::complex THDMcache::B0_MZ2_0_MW2_mHh2(const double MZ2, const double MW2, const double mHh2) const {
95  int NumPar = 3;
96  double params[] = {MZ2, MW2, mHh2};
97 
98  int i = CacheCheck(B0_MZ2_0_MW2_mHh2_cache, NumPar, params);
99  if (i>=0) {
100  return ( B0_MZ2_0_MW2_mHh2_cache[NumPar][i] );
101  } else {
102  gslpp::complex newResult = PV.B0(MZ2, 0., MW2, mHh2);
103  CacheShift(B0_MZ2_0_MW2_mHh2_cache, NumPar, params, newResult);
104  return newResult;
105  }
106 }
107 
108 gslpp::complex THDMcache::B0_MZ2_0_MW2_mHl2(const double MZ2, const double MW2, const double mHl2) const {
109  int NumPar = 3;
110  double params[] = {MZ2, MW2, mHl2};
111 
112  int i = CacheCheck(B0_MZ2_0_MW2_mHl2_cache, NumPar, params);
113  if (i>=0) {
114  return ( B0_MZ2_0_MW2_mHl2_cache[NumPar][i] );
115  } else {
116  gslpp::complex newResult = PV.B0(MZ2, 0., MW2, mHl2);
117  CacheShift(B0_MZ2_0_MW2_mHl2_cache, NumPar, params, newResult);
118  return newResult;
119  }
120 }
121 
122 gslpp::complex THDMcache::B0_MZ2_0_MZ2_mHh2(const double MZ2, const double mHh2) const {
123  int NumPar = 2;
124  double params[] = {MZ2, mHh2};
125 
126  int i = CacheCheck(B0_MZ2_0_MZ2_mHh2_cache, NumPar, params);
127  if (i>=0) {
128  return ( B0_MZ2_0_MZ2_mHh2_cache[NumPar][i] );
129  } else {
130  gslpp::complex newResult = PV.B0(MZ2, 0., MZ2, mHh2);
131  CacheShift(B0_MZ2_0_MZ2_mHh2_cache, NumPar, params, newResult);
132  return newResult;
133  }
134 }
135 
136 gslpp::complex THDMcache::B0_MZ2_0_MZ2_mHl2(const double MZ2, const double mHl2) const {
137  int NumPar = 2;
138  double params[] = {MZ2, mHl2};
139 
140  int i = CacheCheck(B0_MZ2_0_MZ2_mHl2_cache, NumPar, params);
141  if (i>=0) {
142  return ( B0_MZ2_0_MZ2_mHl2_cache[NumPar][i] );
143  } else {
144  gslpp::complex newResult = PV.B0(MZ2, 0., MZ2, mHl2);
145  CacheShift(B0_MZ2_0_MZ2_mHl2_cache, NumPar, params, newResult);
146  return newResult;
147  }
148 }
149 
150 gslpp::complex THDMcache::B0_MZ2_MW2_MW2_mHh2(const double MZ2, const double MW2, const double mHh2) const {
151  int NumPar = 3;
152  double params[] = {MZ2, MW2, mHh2};
153 
154  int i = CacheCheck(B0_MZ2_MW2_MW2_mHh2_cache, NumPar, params);
155  if (i>=0) {
156  return ( B0_MZ2_MW2_MW2_mHh2_cache[NumPar][i] );
157  } else {
158  gslpp::complex newResult = PV.B0(MZ2, MW2, MW2, mHh2);
159  CacheShift(B0_MZ2_MW2_MW2_mHh2_cache, NumPar, params, newResult);
160  return newResult;
161  }
162 }
163 
164 gslpp::complex THDMcache::B0_MZ2_MW2_MW2_mHl2(const double MZ2, const double MW2, const double mHl2) const {
165  int NumPar = 3;
166  double params[] = {MZ2, MW2, mHl2};
167 
168  int i = CacheCheck(B0_MZ2_MW2_MW2_mHl2_cache, NumPar, params);
169  if (i>=0) {
170  return ( B0_MZ2_MW2_MW2_mHl2_cache[NumPar][i] );
171  } else {
172  gslpp::complex newResult = PV.B0(MZ2, MW2, MW2, mHl2);
173  CacheShift(B0_MZ2_MW2_MW2_mHl2_cache, NumPar, params, newResult);
174  return newResult;
175  }
176 }
177 
178 gslpp::complex THDMcache::B0_MZ2_MZ2_MZ2_mHh2(const double MZ2, const double mHh2) const {
179  int NumPar = 2;
180  double params[] = {MZ2, mHh2};
181 
182  int i = CacheCheck(B0_MZ2_MZ2_MZ2_mHh2_cache, NumPar, params);
183  if (i>=0) {
184  return ( B0_MZ2_MZ2_MZ2_mHh2_cache[NumPar][i] );
185  } else {
186  gslpp::complex newResult = PV.B0(MZ2, MZ2, MZ2, mHh2);
187  CacheShift(B0_MZ2_MZ2_MZ2_mHh2_cache, NumPar, params, newResult);
188  return newResult;
189  }
190 }
191 
192 gslpp::complex THDMcache::B0_MZ2_MZ2_MZ2_mHl2(const double MZ2, const double mHl2) const {
193  int NumPar = 2;
194  double params[] = {MZ2, mHl2};
195 
196  int i = CacheCheck(B0_MZ2_MZ2_MZ2_mHl2_cache, NumPar, params);
197  if (i>=0) {
198  return ( B0_MZ2_MZ2_MZ2_mHl2_cache[NumPar][i] );
199  } else {
200  gslpp::complex newResult = PV.B0(MZ2, MZ2, MZ2, mHl2);
201  CacheShift(B0_MZ2_MZ2_MZ2_mHl2_cache, NumPar, params, newResult);
202  return newResult;
203  }
204 }
205 
207 
208 gslpp::complex THDMcache::B00_MZ2_0_mA2_mHp2(const double MZ2, const double mA2, const double mHp2) const {
209  int NumPar = 3;
210  double params[] = {MZ2, mA2, mHp2};
211 
212  int i = CacheCheck(B00_MZ2_0_mA2_mHp2_cache, NumPar, params);
213  if (i>=0) {
214  return ( B00_MZ2_0_mA2_mHp2_cache[NumPar][i] );
215  } else {
216  gslpp::complex newResult = PV.B00(MZ2, 0., mA2, mHp2);
217  CacheShift(B00_MZ2_0_mA2_mHp2_cache, NumPar, params, newResult);
218  return newResult;
219  }
220 }
221 
222 gslpp::complex THDMcache::B00_MZ2_0_mHh2_mA2(const double MZ2, const double mHh2, const double mA2) const {
223  int NumPar = 3;
224  double params[] = {MZ2, mHh2, mA2};
225 
226  int i = CacheCheck(B00_MZ2_0_mHh2_mA2_cache, NumPar, params);
227  if (i>=0) {
228  return ( B00_MZ2_0_mHh2_mA2_cache[NumPar][i] );
229  } else {
230  gslpp::complex newResult = PV.B00(MZ2, 0., mHh2, mA2);
231  CacheShift(B00_MZ2_0_mHh2_mA2_cache, NumPar, params, newResult);
232  return newResult;
233  }
234 }
235 
236 gslpp::complex THDMcache::B00_MZ2_0_mHh2_mHp2(const double MZ2, const double mHh2, const double mHp2) const {
237  int NumPar = 3;
238  double params[] = {MZ2, mHh2, mHp2};
239 
240  int i = CacheCheck(B00_MZ2_0_mHh2_mHp2_cache, NumPar, params);
241  if (i>=0) {
242  return ( B00_MZ2_0_mHh2_mHp2_cache[NumPar][i] );
243  } else {
244  gslpp::complex newResult = PV.B00(MZ2, 0., mHh2, mHp2);
245  CacheShift(B00_MZ2_0_mHh2_mHp2_cache, NumPar, params, newResult);
246  return newResult;
247  }
248 }
249 
250 gslpp::complex THDMcache::B00_MZ2_0_mHl2_mA2(const double MZ2, const double mHl2, const double mA2) const {
251  int NumPar = 3;
252  double params[] = {MZ2, mHl2, mA2};
253 
254  int i = CacheCheck(B00_MZ2_0_mHl2_mA2_cache, NumPar, params);
255  if (i>=0) {
256  return ( B00_MZ2_0_mHl2_mA2_cache[NumPar][i] );
257  } else {
258  gslpp::complex newResult = PV.B00(MZ2, 0., mHl2, mA2);
259  CacheShift(B00_MZ2_0_mHl2_mA2_cache, NumPar, params, newResult);
260  return newResult;
261  }
262 }
263 
264 gslpp::complex THDMcache::B00_MZ2_0_mHl2_mHp2(const double MZ2, const double mHl2, const double mHp2) const {
265  int NumPar = 3;
266  double params[] = {MZ2, mHl2, mHp2};
267 
268  int i = CacheCheck(B00_MZ2_0_mHl2_mHp2_cache, NumPar, params);
269  if (i>=0) {
270  return ( B00_MZ2_0_mHl2_mHp2_cache[NumPar][i] );
271  } else {
272  gslpp::complex newResult = PV.B00(MZ2, 0., mHl2, mHp2);
273  CacheShift(B00_MZ2_0_mHl2_mHp2_cache, NumPar, params, newResult);
274  return newResult;
275  }
276 }
277 
278 gslpp::complex THDMcache::B00_MZ2_0_mHp2_mHp2(const double MZ2, const double mHp2) const {
279  int NumPar = 2;
280  double params[] = {MZ2, mHp2};
281 
282  int i = CacheCheck(B00_MZ2_0_mHp2_mHp2_cache, NumPar, params);
283  if (i>=0) {
284  return ( B00_MZ2_0_mHp2_mHp2_cache[NumPar][i] );
285  } else {
286  gslpp::complex newResult = PV.B00(MZ2, 0., mHp2, mHp2);
287  CacheShift(B00_MZ2_0_mHp2_mHp2_cache, NumPar, params, newResult);
288  return newResult;
289  }
290 }
291 
292 gslpp::complex THDMcache::B00_MZ2_0_MW2_mHh2(const double MZ2, const double MW2, const double mHh2) const {
293  int NumPar = 3;
294  double params[] = {MZ2, MW2, mHh2};
295 
296  int i = CacheCheck(B00_MZ2_0_MW2_mHh2_cache, NumPar, params);
297  if (i>=0) {
298  return ( B00_MZ2_0_MW2_mHh2_cache[NumPar][i] );
299  } else {
300  gslpp::complex newResult = PV.B00(MZ2, MW2, MW2, mHh2);
301  CacheShift(B00_MZ2_0_MW2_mHh2_cache, NumPar, params, newResult);
302  return newResult;
303  }
304 }
305 
306 gslpp::complex THDMcache::B00_MZ2_0_MW2_mHl2(const double MZ2, const double MW2, const double mHl2) const {
307  int NumPar = 3;
308  double params[] = {MZ2, MW2, mHl2};
309 
310  int i = CacheCheck(B00_MZ2_0_MW2_mHl2_cache, NumPar, params);
311  if (i>=0) {
312  return ( B00_MZ2_0_MW2_mHl2_cache[NumPar][i] );
313  } else {
314  gslpp::complex newResult = PV.B00(MZ2, 0., MW2, mHl2);
315  CacheShift(B00_MZ2_0_MW2_mHl2_cache, NumPar, params, newResult);
316  return newResult;
317  }
318 }
319 
320 gslpp::complex THDMcache::B00_MZ2_0_MZ2_mHh2(const double MZ2, const double mHh2) const {
321  int NumPar = 2;
322  double params[] = {MZ2, mHh2};
323 
324  int i = CacheCheck(B00_MZ2_0_MZ2_mHh2_cache, NumPar, params);
325  if (i>=0) {
326  return ( B00_MZ2_0_MZ2_mHh2_cache[NumPar][i] );
327  } else {
328  gslpp::complex newResult = PV.B00(MZ2, 0., MZ2, mHh2);
329  CacheShift(B00_MZ2_0_MZ2_mHh2_cache, NumPar, params, newResult);
330  return newResult;
331  }
332 }
333 
334 gslpp::complex THDMcache::B00_MZ2_0_MZ2_mHl2(const double MZ2, const double mHl2) const {
335  int NumPar = 2;
336  double params[] = {MZ2, mHl2};
337 
338  int i = CacheCheck(B00_MZ2_0_MZ2_mHl2_cache, NumPar, params);
339  if (i>=0) {
340  return ( B00_MZ2_0_MZ2_mHl2_cache[NumPar][i] );
341  } else {
342  gslpp::complex newResult = PV.B00(MZ2, 0., MZ2, mHl2);
343  CacheShift(B00_MZ2_0_MZ2_mHl2_cache, NumPar, params, newResult);
344  return newResult;
345  }
346 }
347 
348 gslpp::complex THDMcache::B00_MZ2_MW2_mA2_mHp2(const double MZ2, const double MW2, const double mA2, const double mHp2) const {
349  int NumPar = 4;
350  double params[] = {MZ2, MW2, mA2, mHp2};
351 
352  int i = CacheCheck(B00_MZ2_MW2_mA2_mHp2_cache, NumPar, params);
353  if (i>=0) {
354  return ( B00_MZ2_MW2_mA2_mHp2_cache[NumPar][i] );
355  } else {
356  gslpp::complex newResult = PV.B00(MZ2, MW2, mA2, mHp2);
357  CacheShift(B00_MZ2_MW2_mA2_mHp2_cache, NumPar, params, newResult);
358  return newResult;
359  }
360 }
361 
362 gslpp::complex THDMcache::B00_MZ2_MW2_mHh2_mHp2(const double MZ2, const double MW2, const double mHh2, const double mHp2) const {
363  int NumPar = 4;
364  double params[] = {MZ2, MW2, mHh2, mHp2};
365 
366  int i = CacheCheck(B00_MZ2_MW2_mHh2_mHp2_cache, NumPar, params);
367  if (i>=0) {
368  return ( B00_MZ2_MW2_mHh2_mHp2_cache[NumPar][i] );
369  } else {
370  gslpp::complex newResult = PV.B00(MZ2, MW2, mHh2, mHp2);
371  CacheShift(B00_MZ2_MW2_mHh2_mHp2_cache, NumPar, params, newResult);
372  return newResult;
373  }
374 }
375 
376 gslpp::complex THDMcache::B00_MZ2_MW2_mHl2_mHp2(const double MZ2, const double MW2, const double mHl2, const double mHp2) const {
377  int NumPar = 4;
378  double params[] = {MZ2, MW2, mHl2, mHp2};
379 
380  int i = CacheCheck(B00_MZ2_MW2_mHl2_mHp2_cache, NumPar, params);
381  if (i>=0) {
382  return ( B00_MZ2_MW2_mHl2_mHp2_cache[NumPar][i] );
383  } else {
384  gslpp::complex newResult = PV.B00(MZ2, MW2, mHl2, mHp2);
385  CacheShift(B00_MZ2_MW2_mHl2_mHp2_cache, NumPar, params, newResult);
386  return newResult;
387  }
388 }
389 
390 gslpp::complex THDMcache::B00_MZ2_MW2_mHp2_mHp2(const double MZ2, const double MW2, const double mHp2) const {
391  int NumPar = 3;
392  double params[] = {MZ2, MW2, mHp2};
393 
394  int i = CacheCheck(B00_MZ2_MW2_mHp2_mHp2_cache, NumPar, params);
395  if (i>=0) {
396  return ( B00_MZ2_MW2_mHp2_mHp2_cache[NumPar][i] );
397  } else {
398  gslpp::complex newResult = PV.B00(MZ2, MW2, mHp2, mHp2);
399  CacheShift(B00_MZ2_MW2_mHp2_mHp2_cache, NumPar, params, newResult);
400  return newResult;
401  }
402 }
403 
404 gslpp::complex THDMcache::B00_MZ2_MW2_MW2_mHh2(const double MZ2, const double MW2, const double mHh2) const {
405  int NumPar = 3;
406  double params[] = {MZ2, MW2, mHh2};
407 
408  int i = CacheCheck(B00_MZ2_MW2_MW2_mHh2_cache, NumPar, params);
409  if (i>=0) {
410  return ( B00_MZ2_MW2_MW2_mHh2_cache[NumPar][i] );
411  } else {
412  gslpp::complex newResult = PV.B00(MZ2, MW2, MW2, mHh2);
413  CacheShift(B00_MZ2_MW2_MW2_mHh2_cache, NumPar, params, newResult);
414  return newResult;
415  }
416 }
417 
418 gslpp::complex THDMcache::B00_MZ2_MW2_MW2_mHl2(const double MZ2, const double MW2, const double mHl2) const {
419  int NumPar = 3;
420  double params[] = {MZ2, MW2, mHl2};
421 
422  int i = CacheCheck(B00_MZ2_MW2_MW2_mHl2_cache, NumPar, params);
423  if (i>=0) {
424  return ( B00_MZ2_MW2_MW2_mHl2_cache[NumPar][i] );
425  } else {
426  gslpp::complex newResult = PV.B00(MZ2, MW2, MW2, mHl2);
427  CacheShift(B00_MZ2_MW2_MW2_mHl2_cache, NumPar, params, newResult);
428  return newResult;
429  }
430 }
431 
432 gslpp::complex THDMcache::B00_MZ2_MZ2_mHh2_mA2(const double MZ2, const double mHh2, const double mA2) const {
433  int NumPar = 3;
434  double params[] = {MZ2, mHh2, mA2};
435 
436  int i = CacheCheck(B00_MZ2_MZ2_mHh2_mA2_cache, NumPar, params);
437  if (i>=0) {
438  return ( B00_MZ2_MZ2_mHh2_mA2_cache[NumPar][i] );
439  } else {
440  gslpp::complex newResult = PV.B00(MZ2, MZ2, mHh2, mA2);
441  CacheShift(B00_MZ2_MZ2_mHh2_mA2_cache, NumPar, params, newResult);
442  return newResult;
443  }
444 }
445 
446 gslpp::complex THDMcache::B00_MZ2_MZ2_mHl2_mA2(const double MZ2, const double mHl2, const double mA2) const {
447  int NumPar = 3;
448  double params[] = {MZ2, mHl2, mA2};
449 
450  int i = CacheCheck(B00_MZ2_MZ2_mHl2_mA2_cache, NumPar, params);
451  if (i>=0) {
452  return ( B00_MZ2_MZ2_mHl2_mA2_cache[NumPar][i] );
453  } else {
454  gslpp::complex newResult = PV.B00(MZ2, MZ2, mHl2, mA2);
455  CacheShift(B00_MZ2_MZ2_mHl2_mA2_cache, NumPar, params, newResult);
456  return newResult;
457  }
458 }
459 
460 gslpp::complex THDMcache::B00_MZ2_MZ2_mHp2_mHp2(const double MZ2, const double mHp2) const {
461  int NumPar = 2;
462  double params[] = {MZ2, mHp2};
463 
464  int i = CacheCheck(B00_MZ2_MZ2_mHp2_mHp2_cache, NumPar, params);
465  if (i>=0) {
466  return ( B00_MZ2_MZ2_mHp2_mHp2_cache[NumPar][i] );
467  } else {
468  gslpp::complex newResult = PV.B00(MZ2, MZ2, mHp2, mHp2);
469  CacheShift(B00_MZ2_MZ2_mHp2_mHp2_cache, NumPar, params, newResult);
470  return newResult;
471  }
472 }
473 
474 gslpp::complex THDMcache::B00_MZ2_MZ2_MZ2_mHh2(const double MZ2, const double mHh2) const {
475  int NumPar = 2;
476  double params[] = {MZ2, mHh2};
477 
478  int i = CacheCheck(B00_MZ2_MZ2_MZ2_mHh2_cache, NumPar, params);
479  if (i>=0) {
480  return ( B00_MZ2_MZ2_MZ2_mHh2_cache[NumPar][i] );
481  } else {
482  gslpp::complex newResult = PV.B00(MZ2, MZ2, MZ2, mHh2);
483  CacheShift(B00_MZ2_MZ2_MZ2_mHh2_cache, NumPar, params, newResult);
484  return newResult;
485  }
486 }
487 
488 gslpp::complex THDMcache::B00_MZ2_MZ2_MZ2_mHl2(const double MZ2, const double mHl2) const {
489  int NumPar = 2;
490  double params[] = {MZ2, mHl2};
491 
492  int i = CacheCheck(B00_MZ2_MZ2_MZ2_mHl2_cache, NumPar, params);
493  if (i>=0) {
494  return ( B00_MZ2_MZ2_MZ2_mHl2_cache[NumPar][i] );
495  } else {
496  gslpp::complex newResult = PV.B00(MZ2, MZ2, MZ2, mHl2);
497  CacheShift(B00_MZ2_MZ2_MZ2_mHl2_cache, NumPar, params, newResult);
498  return newResult;
499  }
500 }
501 
503 
504  std::string tablepath="/Users/Roma1/Desktop/HEPfit/THDM/tabs/";
505  std::stringstream br1,br2,br3,br4,br5,br6,br7;
506  std::stringstream pc1,pc2,pc3,pc4,pc5;
507  std::stringstream dw1;
508  std::stringstream cs1,cs2,cs3,cs4,cs5,cs6,cs7;
509  std::stringstream ex1,ex2,ex3,ex4,ex5,ex6,ex7,ex8,ex9,ex10,ex11,ex12,ex13,ex14,ex15,ex16,ex17,ex18,ex19;
510  std::stringstream bsg1;
511 
512  std::cout<<"reading tables"<<std::endl;
513 
514  br1 << tablepath << "br1.dat";
515  br_tt = readTable(br1.str(),19861,2);
516  br2 << tablepath << "br2.dat";
517  br_bb = readTable(br2.str(),19861,2);
518  br3 << tablepath << "br3.dat";
519  br_tautau = readTable(br3.str(),19861,2);
520  br4 << tablepath << "br4.dat";
521  br_cc = readTable(br4.str(),19861,2);
522  br5 << tablepath << "br5.dat";
523  br_mumu = readTable(br5.str(),19861,2);
524  br6 << tablepath << "br6.dat";
525  br_ZZ = readTable(br6.str(),19861,2);
526  br7 << tablepath << "br7.dat";
527  br_WW = readTable(br7.str(),19861,2);
528  pc1 << tablepath << "pc1.dat";
529  pc_ggF = readTable(pc1.str(),1971,2);
530  pc2 << tablepath << "pc2.dat";
531  pc_VBF = readTable(pc2.str(),1971,2);
532  pc3 << tablepath << "pc3.dat";
533  pc_WH = readTable(pc3.str(),1971,2);
534  pc4 << tablepath << "pc4.dat";
535  pc_ZH = readTable(pc4.str(),1971,2);
536  pc5 << tablepath << "pc5.dat";
537  pc_ttH = readTable(pc5.str(),1971,2);
538  dw1 << tablepath << "dw1.dat";
539  GammaHtotSM = readTable(dw1.str(),19861,2);
540  cs1 << tablepath << "cs1.dat";
541  cs_ggH = readTable(cs1.str(),186,2);
542  cs2 << tablepath << "cs2.dat";
543  cs_ggH_tt = readTable(cs2.str(),186,2);
544  cs3 << tablepath << "cs3.dat";
545  cs_ggH_bb = readTable(cs3.str(),186,2);
546  cs4 << tablepath << "cs4.dat";
547  cs_ggA = readTable(cs4.str(),186,2);
548  cs5 << tablepath << "cs5.dat";
549  cs_ggA_tt = readTable(cs5.str(),186,2);
550  cs6 << tablepath << "cs6.dat";
551  cs_ggA_bb = readTable(cs6.str(),186,2);
552  cs7 << tablepath << "cs7.dat";
553  cs_bbFtoHP = readTable(cs7.str(),185,2);
554  ex5 << tablepath << "ATLAS_ggF_phi_gaga.dat";
555  ATLAS_ggF_phi_gaga = readTable(ex5.str(),991,2);
556  ex6 << tablepath << "ATLAS_ggF_phi_tautau.dat";
557  ATLAS_ggF_phi_tautau = readTable(ex6.str(),496,2);
558  ex7 << tablepath << "ATLAS_bbF_phi_tautau.dat";
559  ATLAS_bbF_phi_tautau = readTable(ex7.str(),496,2);
560  ex8 << tablepath << "ATLAS_ggF_A_hZ_tautauZ.dat";
561  ATLAS_ggF_A_hZ_tautauZ = readTable(ex8.str(),986,2);
562  ex9 << tablepath << "ATLAS_ggF_A_hZ_bbZ.dat";
563  ATLAS_ggF_A_hZ_bbZ = readTable(ex9.str(),986,2);
564  ex11 << tablepath << "ATLAS_pp_phi_tt.dat";
565  ATLAS_pp_phi_tt = readTable(ex11.str(),200,2);
566  ex15 << tablepath << "ATLAS_ggF_H_WW.dat";
567  ATLAS_ggF_H_WW = readTable(ex15.str(),100,2);
568  ex16 << tablepath << "ATLAS_VBF_H_WW.dat";
569  ATLAS_VBF_H_WW = readTable(ex16.str(),100,2);
570  ex17 << tablepath << "ATLAS_ggF_H_hh.dat";
571  ATLAS_ggF_H_hh = readTable(ex17.str(),1000,2);
572  ex1 << tablepath << "CMS_pp_H_ZZ.dat";
573  CMS_pp_H_ZZ = readTable(ex1.str(),9851,2);
574  ex2 << tablepath << "CMS_ggF_A_hZ_bbll.dat";
575  CMS_ggF_A_hZ_bbll = readTable(ex2.str(),986,2);
576  ex3 << tablepath << "CMS_pp_H_hh_gagabb.dat";
577  CMS_pp_H_hh_gagabb = readTable(ex3.str(),496,2);
578  ex4 << tablepath << "CMS_pp_H_hh_bbbb.dat";
579  CMS_pp_H_hh_bbbb = readTable(ex4.str(),496,2);
580  ex10 << tablepath << "CMS_bbF_phi_bb.dat";
581  CMS_bbF_phi_bb = readTable(ex10.str(),1000,2);
582  ex12 << tablepath << "CMS_ggF_phi_tautau.dat";
583  CMS_ggF_phi_tautau = readTable(ex12.str(),1000,2);
584  ex13 << tablepath << "CMS_bbF_phi_tautau.dat";
585  CMS_bbF_phi_tautau = readTable(ex13.str(),1000,2);
586  ex14 << tablepath << "CMS_ggF_phi_gaga.dat";
587  CMS_ggF_phi_gaga = readTable(ex14.str(),2000,2);
588  ex18 << tablepath << "CMS_ggF_H_hh_bbtautau.dat";
589  CMS_ggF_H_hh_bbtautau = readTable(ex18.str(),1000,2);
590  ex19 << tablepath << "CMS_ggF_A_hZ_tautaull.dat";
591  CMS_ggF_A_hZ_tautaull = readTable(ex19.str(),1000,2);
592  bsg1 << tablepath << "bsgammatable.dat";
593  arraybsgamma = readTable(bsg1.str(),1111,3);
594 }
595 
596 
597 
598 double THDMcache::ip_Br_HPtott(double mass){
599  return pow(10.0,interpolate(br_tt,mass));
600 }
601 
602 
603 
604 double THDMcache::ip_Br_HPtobb(double mass){
605  return pow(10.0,interpolate(br_bb,mass));
606 }
607 
608 
609 
610 double THDMcache::ip_Br_HPtotautau(double mass){
611  return pow(10.0,interpolate(br_tautau,mass));
612 }
613 
614 
615 
616 double THDMcache::ip_Br_HPtocc(double mass){
617  return pow(10.0,interpolate(br_cc,mass));
618 }
619 
620 
621 
622 double THDMcache::ip_Br_HPtomumu(double mass){
623  return pow(10.0,interpolate(br_mumu,mass));
624 }
625 
626 
627 
628 double THDMcache::ip_Br_HPtoZZ(double mass){
629  return pow(10.0,interpolate(br_ZZ,mass));
630 }
631 
632 
633 
634 double THDMcache::ip_Br_HPtoWW(double mass){
635  return pow(10.0,interpolate(br_WW,mass));
636 }
637 
638 
639 
640 double THDMcache::ip_pc_ggFtoHP(double mass){
641  return interpolate(pc_ggF,mass);
642 }
643 
644 
645 
646 double THDMcache::ip_pc_VBFtoHP(double mass){
647  return interpolate(pc_VBF,mass);
648 }
649 
650 
651 
652 double THDMcache::ip_pc_WHP_HP(double mass){
653  return interpolate(pc_WH,mass);
654 }
655 
656 
657 double THDMcache::ip_pc_ZHP_HP(double mass){
658  return interpolate(pc_ZH,mass);
659 }
660 
661 
662 
663 double THDMcache::ip_pc_ttFtoHP(double mass){
664  return interpolate(pc_ttH,mass);
665 }
666 
667 
668 
669 double THDMcache::ip_GammaHPtotSM(double mass){
670  return pow(10.0,interpolate(GammaHtotSM,mass));
671 }
672 
673 
674 
675 double THDMcache::ip_cs_ggFtoHP(double mass){
676  return pow(10.0,interpolate (cs_ggH,log10(mass)));
677 }
678 
679 
680 double THDMcache::ip_cs_ggHP_tt(double mass){
681  return pow(10.0,interpolate (cs_ggH_tt,log10(mass)));
682 }
683 
684 
685 
686 double THDMcache::ip_cs_ggHP_bb(double mass){
687  return pow(10.0,interpolate (cs_ggH_bb,log10(mass)));
688 }
689 
690 
691 
692 double THDMcache::ip_cs_ggA(double mass){
693  return pow(10.0,interpolate (cs_ggA,log10(mass)));
694 }
695 
696 
697 
698 double THDMcache::ip_cs_ggA_tt(double mass){
699  return pow(10.0,interpolate (cs_ggA_tt,log10(mass)));
700 }
701 
702 
703 
704 double THDMcache::ip_cs_ggA_bb(double mass){
705  return pow(10.0,interpolate (cs_ggA_bb,log10(mass)));
706 }
707 
708 
709 
710 double THDMcache::ip_cs_bbFtoHP(double mass){
711  return pow(10.0,interpolate (cs_bbFtoHP,log10(mass)));
712 }
713 
714 
715 
717  return interpolate(ATLAS_ggF_phi_gaga,mass);
718 }
719 
720 
721 
723  return interpolate(ATLAS_ggF_phi_tautau,mass);
724 }
725 
726 
727 
729  return interpolate(ATLAS_bbF_phi_tautau,mass);
730 }
731 
732 
733 
735  return interpolate(ATLAS_ggF_A_hZ_tautauZ,mass);
736 }
737 
738 
739 
741  return interpolate(ATLAS_ggF_A_hZ_bbZ,mass);
742 }
743 
744 
745 
747  return interpolate (ATLAS_pp_phi_tt,mass);
748 }
749 
750 
751 
753  return interpolate (ATLAS_ggF_H_WW,mass);
754 }
755 
756 
757 
759  return interpolate (ATLAS_VBF_H_WW,mass);
760 }
761 
762 
763 
765  return interpolate (ATLAS_ggF_H_hh,mass);
766 }
767 
768 
769 
770 double THDMcache::ip_ex_pp_H_ZZ_CMS(double mass){
771  return interpolate(CMS_pp_H_ZZ,mass);
772 }
773 
774 
775 
777  return interpolate(CMS_ggF_A_hZ_bbll,mass);
778 }
779 
780 
781 
783  return interpolate(CMS_pp_H_hh_gagabb,mass);
784 }
785 
786 
787 
789  return interpolate(CMS_pp_H_hh_bbbb,mass);
790 }
791 
792 
793 
795  return interpolate (CMS_bbF_phi_bb,mass);
796 }
797 
798 
799 
801  return interpolate (CMS_ggF_phi_tautau,mass);
802 }
803 
804 
805 
807  return interpolate (CMS_bbF_phi_tautau,mass);
808 }
809 
810 
811 
813  return interpolate (CMS_ggF_phi_gaga,mass);
814 }
815 
816 
817 
819  return interpolate (CMS_ggF_H_hh_bbtautau,mass);
820 }
821 
822 
823 
825  return interpolate (CMS_ggF_A_hZ_tautaull,mass);
826 }
827 
828 
829 
830 double THDMcache::ip_ex_bsgamma(double logtb, double logmHp){
831  return interpolate2D(arraybsgamma, logtb, logmHp);
832 }
833 
834 
835 
836 gslpp::matrix<double> THDMcache::readTable(std::string filename, int rowN, int colN){
837 
838  std::ifstream INfile;
839  std::string lineTab;
840  INfile.open( filename.c_str() );
841  if(INfile.fail()){
842  std::cout<<"error: in HEAVY"<<" doesn't exist!"<<std::endl;
843  }
844 
845  gslpp::matrix<double> arrayTab(rowN, colN, 0.);
846  int a =0;
847  int b=0;
848  double v;
849 
850  while(INfile.good()){
851  while(getline(INfile, lineTab)){
852  if( lineTab[0]=='#' )continue;
853  else{
854  std::istringstream streamTab(lineTab);
855  b=0;
856  while(streamTab >>v){
857  arrayTab.assign(a,b,v);
858  b++;
859  }
860  a++;
861  }
862  }
863  }
864 
865  INfile.close();
866 
867  return arrayTab;
868 }
869 
870 //1D interpolation
871 
873 
874  int rowN=arrayTab.size_i();
875 
876  double xmin = arrayTab(0,0);
877  double xmax = arrayTab(rowN-1,0);
878  double interval = arrayTab(1,0)-arrayTab(0,0);
879  int Nintervals = (x-xmin)/interval;
880  double y = 0.0;
881 
882  if(x<xmin){
883  std::cout<<"error: your table parameter value is smaller than the minimum allowed value"<<std::endl;
884  return 0.;
885  }
886  else if(x>xmax){
887  std::cout<<"error: your table parameter value is greater than the maximum allowed value"<<std::endl;
888  return 0.;
889  }
890  else{
891  y =(arrayTab(Nintervals+1,1)-arrayTab(Nintervals,1))/(arrayTab(Nintervals+1,0)
892  -arrayTab(Nintervals,0))*(x-arrayTab(Nintervals,0))+arrayTab(Nintervals,1);
893  return y;
894  }
895 }
896 
897 //2D interpolation
898 
899 double THDMcache::interpolate2D(gslpp::matrix<double> arrayTab, double x, double y){
900 
901  int rowN=arrayTab.size_i();
902 
903  double xmin = arrayTab(0,0);
904  double xmax = arrayTab(rowN-1,0);
905  double ymin = arrayTab(0,1);
906  double ymax = arrayTab(rowN-1,1);
907  double intervalx = arrayTab(1,0)-arrayTab(0,0);
908  int i=1;
909  do i++;
910  while(arrayTab(i,1)-arrayTab(i-1,1)==0&&i<10000);
911  double intervaly = arrayTab(i,1)-arrayTab(i-1,1);
912  int Nintervalsx = (x-xmin)/intervalx;
913  int Nintervalsy = (y-ymin)/intervaly;
914  if(x<xmin||x>xmax||y<ymin||y>ymax){
915  std::cout<<"error: the parameter point lies outside the table"<<std::endl;
916  return 0.;
917  }
918  else{
919  double x1=arrayTab(i*Nintervalsy+Nintervalsx,0);
920  double x2=arrayTab(i*Nintervalsy+Nintervalsx+1,0);
921  double y1=arrayTab(i*Nintervalsy+Nintervalsx,1);
922  double y2=arrayTab(i*(Nintervalsy+1)+Nintervalsx,1);
923  return (arrayTab(i*Nintervalsy+Nintervalsx,2) * (x2-x) * (y2-y)
924  +arrayTab(i*Nintervalsy+Nintervalsx+1,2) * (x-x1) * (y2-y)
925  +arrayTab(i*(Nintervalsy+1)+Nintervalsx,2) * (x2-x) * (y-y1)
926  +arrayTab(i*(Nintervalsy+1)+Nintervalsx+1,2) * (x-x1) * (y-y1))
927  /((x2-x1)*(y2-y1));
928  }
929 }
gslpp::matrix< double > pc_ZH
Definition: THDMcache.h:94
double ip_ex_ggF_A_hZ_bbZ_ATLAS(double mass)
Interpolating function for the ATLAS upper limit on a gluon-gluon produced pseudoscalar resonance dec...
Definition: THDMcache.cpp:740
static const int CacheSize
Cache size.
Definition: THDMcache.h:41
gslpp::matrix< double > CMS_ggF_H_hh_bbtautau
Definition: THDMcache.h:124
gslpp::complex B0_MZ2_MW2_MW2_mHh2(const double MZ2, const double MW2, const double mHh2) const
Definition: THDMcache.cpp:150
gslpp::matrix< double > cs_ggH_bb
Definition: THDMcache.h:104
gslpp::complex B0_MZ2_0_MW2_mHh2(const double MZ2, const double MW2, const double mHh2) const
Definition: THDMcache.cpp:94
gslpp::complex B00_MZ2_0_mHh2_mHp2(const double MZ2, const double mHh2, const double mHp2) const
Definition: THDMcache.cpp:236
gslpp::complex B00_MZ2_MZ2_mHp2_mHp2(const double MZ2, const double mHp2) const
Definition: THDMcache.cpp:460
gslpp::complex B00_MZ2_0_MW2_mHh2_cache[4][CacheSize]
Definition: THDMcache.h:451
gslpp::matrix< double > CMS_ggF_phi_gaga
Definition: THDMcache.h:124
gslpp::complex B00_MZ2_MZ2_mHh2_mA2(const double MZ2, const double mHh2, const double mA2) const
Definition: THDMcache.cpp:432
gslpp::complex B00_MZ2_0_MW2_mHl2_cache[4][CacheSize]
Definition: THDMcache.h:452
gslpp::complex B00_MZ2_0_mHl2_mA2_cache[4][CacheSize]
Definition: THDMcache.h:448
gslpp::complex B00_MZ2_0_MW2_mHl2(const double MZ2, const double MW2, const double mHl2) const
Definition: THDMcache.cpp:306
gslpp::matrix< double > pc_VBF
Definition: THDMcache.h:94
gslpp::complex B00_MZ2_MZ2_MZ2_mHh2_cache[3][CacheSize]
Definition: THDMcache.h:464
double ip_ex_ggF_phi_tautau_ATLAS(double mass)
Interpolating function for the ATLAS upper limit on a gluon-gluon produced scalar resonance decaying ...
Definition: THDMcache.cpp:722
gslpp::complex B0_MZ2_0_MZ2_mHl2(const double MZ2, const double mHl2) const
Definition: THDMcache.cpp:136
double ip_Br_HPtocc(double mass)
Interpolating function for the SM branching ratio to two charm quarks.
Definition: THDMcache.cpp:616
gslpp::complex B00_MZ2_MZ2_MZ2_mHl2(const double MZ2, const double mHl2) const
Definition: THDMcache.cpp:488
gslpp::matrix< double > arraybsgamma
table, depending on logtb and the logarithm of the charged Higgs mass.
Definition: THDMcache.h:129
gslpp::complex B00_MZ2_MW2_MW2_mHh2_cache[4][CacheSize]
Definition: THDMcache.h:459
gslpp::matrix< double > GammaHtotSM
Total SM decay width (obtained with HDECAY 6.10), depending on the Higgs mass.
Definition: THDMcache.h:99
gslpp::matrix< double > cs_ggH_tt
Definition: THDMcache.h:104
double ip_Br_HPtott(double mass)
Interpolating function for the SM branching ratio to two top quarks.
Definition: THDMcache.cpp:598
A class for constructing and defining operations on real matrices.
gslpp::matrix< double > CMS_ggF_A_hZ_bbll
CMS upper cross section limits, depending on the Higgs mass.
Definition: THDMcache.h:124
double ip_cs_bbFtoHP(double mass)
Interpolating function for the bottom quark associated production cross section of a Higgs...
Definition: THDMcache.cpp:710
gslpp::complex B00_MZ2_0_MZ2_mHh2(const double MZ2, const double mHh2) const
Definition: THDMcache.cpp:320
gslpp::complex B0_MZ2_0_MW2_mHl2(const double MZ2, const double MW2, const double mHl2) const
Definition: THDMcache.cpp:108
gslpp::complex B00_MZ2_0_mHl2_mHp2(const double MZ2, const double mHl2, const double mHp2) const
Definition: THDMcache.cpp:264
gslpp::matrix< double > CMS_bbF_phi_tautau
Definition: THDMcache.h:124
double ip_ex_VBF_H_WW_ATLAS(double mass)
Interpolating function for the ATLAS upper limit on a vector boson fusion produced scalar resonance d...
Definition: THDMcache.cpp:758
gslpp::complex B00_MZ2_0_mHh2_mA2(const double MZ2, const double mHh2, const double mA2) const
Definition: THDMcache.cpp:222
gslpp::matrix< double > ATLAS_ggF_phi_gaga
ATLAS upper cross section limits, depending on the Higgs mass.
Definition: THDMcache.h:114
double ip_cs_ggFtoHP(double mass)
Interpolating function for the SM Higgs production cross section via gluon-gluon fusion.
Definition: THDMcache.cpp:675
gslpp::matrix< double > ATLAS_pp_phi_tt
Definition: THDMcache.h:114
gslpp::matrix< double > pc_ggF
LHC production cross section percentage contributions (derived from the cross sections provided by th...
Definition: THDMcache.h:94
complex pow(const complex &z1, const complex &z2)
double ip_ex_pp_H_ZZ_CMS(double mass)
Interpolating function for the CMS upper limit on a scalar resonance decaying to two bosons...
Definition: THDMcache.cpp:770
gslpp::matrix< double > readTable(std::string filename, int rowN, int colN)
This function reads values from a table and returns them as an array.
Definition: THDMcache.cpp:836
double ip_GammaHPtotSM(double mass)
Interpolating function for the total SM Higgs decay width.
Definition: THDMcache.cpp:669
gslpp::complex B00_MZ2_0_mHl2_mA2(const double MZ2, const double mHl2, const double mA2) const
Definition: THDMcache.cpp:250
gslpp::matrix< double > ATLAS_ggF_phi_tautau
Definition: THDMcache.h:114
gslpp::complex B00_MZ2_MZ2_mHh2_mA2_cache[4][CacheSize]
Definition: THDMcache.h:461
double ip_ex_ggF_A_hZ_bbll_CMS(double mass)
Interpolating function for the CMS upper limit on a gluon-gluon produced pseudoscalar resonance decay...
Definition: THDMcache.cpp:776
double ip_ex_ggF_phi_gaga_CMS(double mass)
Interpolating function for the CMS upper limit on a gluon-gluon produced scalar resonance decaying to...
Definition: THDMcache.cpp:812
gslpp::matrix< double > cs_ggA_bb
Definition: THDMcache.h:104
double ip_pc_ttFtoHP(double mass)
Interpolating function for the SM percentage contribution of associated production to the total Higg...
Definition: THDMcache.cpp:663
gslpp::complex B00_MZ2_MW2_mA2_mHp2_cache[5][CacheSize]
Definition: THDMcache.h:455
double ip_pc_ZHP_HP(double mass)
Interpolating function for the SM percentage contribution of Higgsstrahlung to the total Higgs produ...
Definition: THDMcache.cpp:657
gslpp::matrix< double > pc_WH
Definition: THDMcache.h:94
gslpp::complex B00_MZ2_0_mA2_mHp2(const double MZ2, const double mA2, const double mHp2) const
Definition: THDMcache.cpp:208
gslpp::complex B00_MZ2_MZ2_mHl2_mA2_cache[4][CacheSize]
Definition: THDMcache.h:462
gslpp::matrix< double > pc_ttH
Definition: THDMcache.h:94
gslpp::complex B00_MZ2_MW2_mHp2_mHp2(const double MZ2, const double MW2, const double mHp2) const
Definition: THDMcache.cpp:390
double ip_ex_ggF_phi_tautau_CMS(double mass)
Interpolating function for the CMS upper limit on a gluon-gluon produced scalar resonance decaying to...
Definition: THDMcache.cpp:800
double ip_cs_ggA_tt(double mass)
Interpolating function for the production cross section of a pseudoscalar via gluon-gluon fusion (top...
Definition: THDMcache.cpp:698
gslpp::matrix< double > CMS_ggF_phi_tautau
Definition: THDMcache.h:124
void assign(const size_t &i, const size_t &j, const double &a)
double ip_ex_bbF_phi_bb_CMS(double mass)
Interpolating function for the CMS upper limit on a bottom quark produced scalar resonance decaying t...
Definition: THDMcache.cpp:794
gslpp::matrix< double > br_tautau
Definition: THDMcache.h:89
gslpp::matrix< double > br_ZZ
Definition: THDMcache.h:89
gslpp::complex B00_MZ2_0_mHp2_mHp2(const double MZ2, const double mHp2) const
Definition: THDMcache.cpp:278
gslpp::matrix< double > CMS_pp_H_hh_gagabb
Definition: THDMcache.h:124
gslpp::complex B0_MZ2_MZ2_MZ2_mHh2_cache[3][CacheSize]
Definition: THDMcache.h:442
gslpp::complex B00_MZ2_0_MZ2_mHl2(const double MZ2, const double mHl2) const
Definition: THDMcache.cpp:334
gslpp::complex B00_MZ2_MW2_mHp2_mHp2_cache[4][CacheSize]
Definition: THDMcache.h:458
double ip_Br_HPtotautau(double mass)
Interpolating function for the SM branching ratio to two tau leptons.
Definition: THDMcache.cpp:610
gslpp::matrix< double > br_tt
SM Higgs branching ratio tables (obtained with HDECAY 6.10), depending on the Higgs mass...
Definition: THDMcache.h:89
complex log10(const complex &z)
gslpp::matrix< double > br_WW
Definition: THDMcache.h:89
double ip_Br_HPtoWW(double mass)
Interpolating function for the SM branching ratio to two bosons.
Definition: THDMcache.cpp:634
gslpp::complex B0_MZ2_MW2_MW2_mHl2(const double MZ2, const double MW2, const double mHl2) const
Definition: THDMcache.cpp:164
double ip_ex_ggF_H_hh_ATLAS(double mass)
Interpolating function for the ATLAS upper limit on a gluon-gluon produced scalar resonance decaying ...
Definition: THDMcache.cpp:764
double ip_ex_ggF_A_hZ_tautauZ_ATLAS(double mass)
Interpolating function for the ATLAS upper limit on a gluon-gluon produced pseudoscalar resonance dec...
Definition: THDMcache.cpp:734
gslpp::matrix< double > ATLAS_ggF_A_hZ_tautauZ
Definition: THDMcache.h:114
double ip_ex_bsgamma(double logtb, double logmHp)
Interpolating function for the NNLO value for the branching ratio of decays in the THDM...
Definition: THDMcache.cpp:830
gslpp::complex B00_MZ2_MW2_MW2_mHh2(const double MZ2, const double MW2, const double mHh2) const
Definition: THDMcache.cpp:404
gslpp::complex B0_MZ2_0_MZ2_mHh2(const double MZ2, const double mHh2) const
Definition: THDMcache.cpp:122
gslpp::complex B0_MZ2_0_MW2_mHl2_cache[4][CacheSize]
Definition: THDMcache.h:437
double ip_ex_ggF_A_hZ_tautaull_CMS(double mass)
Interpolating function for the CMS upper limit on a gluon-gluon produced pseudoscalar resonance decay...
Definition: THDMcache.cpp:824
double ip_ex_ggF_H_WW_ATLAS(double mass)
Interpolating function for the ATLAS upper limit on a gluon-gluon produced scalar resonance decaying ...
Definition: THDMcache.cpp:752
gslpp::complex B0_MZ2_MZ2_MZ2_mHl2_cache[3][CacheSize]
Definition: THDMcache.h:443
gslpp::matrix< double > br_cc
Definition: THDMcache.h:89
double interpolate2D(gslpp::matrix< double > arrayTab, double x, double y)
Linearly interpolates a table with two parameter dimensions.
Definition: THDMcache.cpp:899
double ip_Br_HPtomumu(double mass)
Interpolating function for the SM branching ratio to two muons.
Definition: THDMcache.cpp:622
gslpp::matrix< double > ATLAS_bbF_phi_tautau
Definition: THDMcache.h:114
gslpp::matrix< double > cs_ggA_tt
Definition: THDMcache.h:104
gslpp::complex B00_MZ2_MZ2_MZ2_mHl2_cache[3][CacheSize]
Definition: THDMcache.h:465
double ip_Br_HPtobb(double mass)
Interpolating function for the SM branching ratio to two bottom quarks.
Definition: THDMcache.cpp:604
double ip_ex_ggF_H_hh_bbtautau_CMS(double mass)
Interpolating function for the CMS upper limit on a gluon-gluon produced scalar resonance decaying to...
Definition: THDMcache.cpp:818
gslpp::matrix< double > cs_ggA
Definition: THDMcache.h:104
gslpp::complex B00_MZ2_0_MZ2_mHl2_cache[3][CacheSize]
Definition: THDMcache.h:454
THDMcache()
THDMcache constructor.
Definition: THDMcache.cpp:14
gslpp::complex B00_MZ2_0_mHp2_mHp2_cache[3][CacheSize]
Definition: THDMcache.h:450
gslpp::complex B0(const double mu2, const double p2, const double m02, const double m12) const
.
Definition: PVfunctions.cpp:41
gslpp::complex B00_MZ2_0_MW2_mHh2(const double MZ2, const double MW2, const double mHh2) const
Definition: THDMcache.cpp:292
gslpp::matrix< double > ATLAS_ggF_H_hh
Definition: THDMcache.h:114
gslpp::complex B00_MZ2_0_mHh2_mA2_cache[4][CacheSize]
Definition: THDMcache.h:446
gslpp::matrix< double > br_bb
Definition: THDMcache.h:89
void read()
Fills all required arrays with the values read from the tables.
Definition: THDMcache.cpp:502
gslpp::complex B00_MZ2_MW2_MW2_mHl2(const double MZ2, const double MW2, const double mHl2) const
Definition: THDMcache.cpp:418
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: THDMcache.cpp:76
gslpp::complex B00_MZ2_0_mHl2_mHp2_cache[4][CacheSize]
Definition: THDMcache.h:449
gslpp::complex B00_MZ2_0_MZ2_mHh2_cache[3][CacheSize]
Definition: THDMcache.h:453
gslpp::matrix< double > cs_bbFtoHP
HiggsBounds 4.1.0 cross sections, depending on the Higgs mass.
Definition: THDMcache.h:109
gslpp::complex B0_MZ2_MW2_MW2_mHh2_cache[4][CacheSize]
Definition: THDMcache.h:440
double ip_ex_ggF_phi_gaga_ATLAS(double mass)
Interpolating function for the ATLAS upper limit on a gluon-gluon produced scalar resonance decaying ...
Definition: THDMcache.cpp:716
gslpp::complex B0_MZ2_0_MW2_mHh2_cache[4][CacheSize]
Definition: THDMcache.h:436
gslpp::complex B0_MZ2_0_MZ2_mHh2_cache[3][CacheSize]
Definition: THDMcache.h:438
gslpp::matrix< double > CMS_bbF_phi_bb
Definition: THDMcache.h:124
gslpp::matrix< double > br_mumu
Definition: THDMcache.h:89
double ip_cs_ggA(double mass)
Interpolating function for the production cross section of a pseudoscalar via gluon-gluon fusion...
Definition: THDMcache.cpp:692
gslpp::complex B00_MZ2_MW2_mHh2_mHp2_cache[5][CacheSize]
Definition: THDMcache.h:456
gslpp::matrix< double > cs_ggH
HIGLU v4.00 cross sections, depending on the Higgs mass.
Definition: THDMcache.h:104
double ip_cs_ggHP_tt(double mass)
Interpolating function for the SM Higgs production cross section via gluon-gluon fusion (top-loop onl...
Definition: THDMcache.cpp:680
gslpp::complex B00_MZ2_0_mA2_mHp2_cache[4][CacheSize]
Definition: THDMcache.h:445
gslpp::complex B00_MZ2_MZ2_MZ2_mHh2(const double MZ2, const double mHh2) const
Definition: THDMcache.cpp:474
double ip_pc_WHP_HP(double mass)
Interpolating function for the SM percentage contribution of Higgsstrahlung to the total Higgs produ...
Definition: THDMcache.cpp:652
gslpp::complex B0_MZ2_MW2_MW2_mHl2_cache[4][CacheSize]
Definition: THDMcache.h:441
gslpp::complex B00_MZ2_MW2_mHl2_mHp2_cache[5][CacheSize]
Definition: THDMcache.h:457
double ip_ex_bbF_phi_tautau_ATLAS(double mass)
Interpolating function for the ATLAS upper limit on a bottom quark produced scalar resonance decaying...
Definition: THDMcache.cpp:728
double ip_cs_ggHP_bb(double mass)
Interpolating function for the SM Higgs production cross section via gluon-gluon fusion (bottom-loop ...
Definition: THDMcache.cpp:686
gslpp::matrix< double > CMS_pp_H_hh_bbbb
Definition: THDMcache.h:124
double ip_cs_ggA_bb(double mass)
Interpolating function for the production cross section of a pseudoscalar via gluon-gluon fusion (bot...
Definition: THDMcache.cpp:704
const PVfunctions PV
Definition: THDMcache.h:428
gslpp::complex B00_MZ2_MW2_mHh2_mHp2(const double MZ2, const double MW2, const double mHh2, const double mHp2) const
Definition: THDMcache.cpp:362
double ip_ex_bbF_phi_tautau_CMS(double mass)
Interpolating function for the CMS upper limit on a bottom quark produced scalar resonance decaying t...
Definition: THDMcache.cpp:806
gslpp::complex B0_MZ2_MZ2_MZ2_mHl2(const double MZ2, const double mHl2) const
Definition: THDMcache.cpp:192
gslpp::matrix< double > ATLAS_VBF_H_WW
Definition: THDMcache.h:114
gslpp::complex B00_MZ2_0_mHh2_mHp2_cache[4][CacheSize]
Definition: THDMcache.h:447
double ip_Br_HPtoZZ(double mass)
Interpolating function for the SM branching ratio to two bosons.
Definition: THDMcache.cpp:628
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
double ip_pc_ggFtoHP(double mass)
Interpolating function for the SM percentage contribution of gluon-gluon fusion to the total Higgs pr...
Definition: THDMcache.cpp:640
gslpp::complex B00_MZ2_MZ2_mHp2_mHp2_cache[3][CacheSize]
Definition: THDMcache.h:463
gslpp::matrix< double > CMS_pp_H_ZZ
CMS upper signal strength limits, depending on the Higgs mass.
Definition: THDMcache.h:119
gslpp::complex B00_MZ2_MW2_MW2_mHl2_cache[4][CacheSize]
Definition: THDMcache.h:460
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: THDMcache.cpp:64
double ip_pc_VBFtoHP(double mass)
Interpolating function for the SM percentage contribution of vector boson fusion to the total Higgs p...
Definition: THDMcache.cpp:646
double ip_ex_pp_phi_hh_gagabb_CMS(double mass)
Interpolating function for the CMS upper limit on a scalar resonance decaying to two bosons which fu...
Definition: THDMcache.cpp:782
gslpp::complex B00_MZ2_MZ2_mHl2_mA2(const double MZ2, const double mHl2, const double mA2) const
Definition: THDMcache.cpp:446
gslpp::matrix< double > ATLAS_ggF_A_hZ_bbZ
Definition: THDMcache.h:114
gslpp::complex B00_MZ2_MW2_mHl2_mHp2(const double MZ2, const double MW2, const double mHl2, const double mHp2) const
Definition: THDMcache.cpp:376
gslpp::matrix< double > ATLAS_ggF_H_WW
Definition: THDMcache.h:114
gslpp::matrix< double > CMS_ggF_A_hZ_tautaull
Definition: THDMcache.h:124
gslpp::complex B0_MZ2_MZ2_MZ2_mHh2(const double MZ2, const double mHh2) const
Definition: THDMcache.cpp:178
gslpp::complex B0_MZ2_0_MZ2_mHl2_cache[3][CacheSize]
Definition: THDMcache.h:439
gslpp::complex B00_MZ2_MW2_mA2_mHp2(const double MZ2, const double MW2, const double mA2, const double mHp2) const
Definition: THDMcache.cpp:348
double interpolate(gslpp::matrix< double > arrayTab, double x)
Linearly interpolates a table with one parameter dimension.
Definition: THDMcache.cpp:872
gslpp::complex B00(const double mu2, const double p2, const double m02, const double m12) const
.
double ip_ex_pp_phi_tt_ATLAS(double mass)
Interpolating function for the ATLAS upper limit on scalar resonance decaying to a top quark pair...
Definition: THDMcache.cpp:746
double ip_ex_pp_phi_hh_bbbb_CMS(double mass)
Interpolating function for the CMS upper limit on a scalar resonance decaying to two bosons which fu...
Definition: THDMcache.cpp:788