qqbarthreshold is hosted by Hepforge, IPPP Durham
QQbar_threshold
parameters.hpp
Go to the documentation of this file.
1 
29 #pragma once
30 #include <cassert>
31 #include <array>
32 #include <limits>
33 #include <complex>
34 #include <type_traits>
35 #include <ostream>
36 #include <string>
37 
38 #include "constants.hpp"
39 #include "mass_schemes.hpp"
40 #include "alpha_s.hpp"
41 
42 namespace QQbar_threshold{
43  typedef std::complex<double> complex;
44 
45  namespace pert_order{
46  enum order{
47  LO = 0,
48  NLO,
49  N2LO,
50  NNLO = N2LO,
51  N3LO,
52  NNNLO = N3LO
53  };
54 
55  inline
56  order operator++(order & o){
57  return o = static_cast<order>(o + 1);
58  }
59 
60  inline
61  order operator--(order & o){
62  return o = static_cast<order>(o - 1);
63  }
64 
65  std::string to_string(order o);
66 
67  std::ostream& operator<<(std::ostream& os, order o);
68 
69  }
70  using namespace pert_order;
71 
72  enum class SM;
73 
74  inline
75  constexpr SM operator|(SM a, SM b){
76  typedef std::underlying_type<SM>::type SM_type;
77  return static_cast<SM>(static_cast<SM_type>(a) | static_cast<SM_type>(b));
78  }
79 
80  inline
81  SM & operator|=(SM & a, SM b){
82  return a = a | b;
83  }
84 
85  inline
86  constexpr SM operator&(SM a, SM b){
87  typedef std::underlying_type<SM>::type SM_type;
88  return static_cast<SM>(static_cast<SM_type>(a) & static_cast<SM_type>(b));
89  }
90 
92 
100  enum class SM{
102  none = 0,
104  QED = 1 << 0,
106  Higgs = 1 << 1,
108  QEDHiggs = QED|Higgs,
110  all = (1 << 3) - 1
111  };
112 
113  inline
114  constexpr bool operator!(SM a){
115  return a == SM::none;
116  }
117 
118  std::string to_string(SM s);
119 
120  std::ostream& operator<<(std::ostream& os, SM s);
121 
123  enum class production_channel{
125  photon_only = 0,
127  S_wave_only,
129  all
130  };
131 
132  std::string to_string(production_channel p);
133 
134  std::ostream& operator<<(std::ostream& os, production_channel p);
135 
136 
138 
152  std::array<double,3> v_Coulomb = {{1.,1.,1.}};
154  std::array<double,2> v_delta = {{1.,1.}};
156  std::array<double,2> v_r2inv = {{1.,1.}};
158  std::array<double,2> v_p2 = {{1.,1.}};
160  std::array<double,1> v_kinetic = {{1.}};
162  std::array<double,1> ultrasoft = {{1.}};
164  std::array<double,1> v_Higgs = {{1.}};
166  std::array<double,1> v_QED_Coulomb = {{1.}};
168  std::array<double,3> cv = {{1.,1.,1.}};
170  std::array<double,2> cv_Higgs = {{1.,1.}};
172  std::array<double,1> Cv_QED = {{1.}};
174  std::array<double,1> Cv_WZ = {{1.}};
176  std::array<double,1> Ca_QED = {{1.}};
178  std::array<double,1> Ca_WZ = {{1.}};
180  std::array<double,2> dv = {{1.,1.}};
182  std::array<double,1> ca = {{1.}};
183  };
184 
185  struct alpha_s_options{
186  double mu0;
187  double alpha_s;
188  };
189 
190  std::string to_string(alpha_s_options o);
191 
192  static_assert(
193  std::numeric_limits<double>::has_quiet_NaN,
194  "Quiet NaN not available"
195  );
196 
198 
202  struct options{
230  alpha_s_options alpha_s_mu0 = {
231  std::numeric_limits<double>::quiet_NaN(),
232  std::numeric_limits<double>::quiet_NaN()
233  };
247  double Yukawa_factor = 1;
260  double invariant_mass_cut = std::numeric_limits<double>::quiet_NaN();
270  double ml = 0;
283  double r4 = std::numeric_limits<double>::quiet_NaN();
289  double alpha;
295  double mu_alpha;
303  int resum_poles = 6;
343  bool expand_s;
354  bool double_light_insertion = false;
355  };
356 
357  std::string to_string(options const & opt);
358 
359  struct scales{
360  double soft;
361  double weak;
362  };
363 
364  struct top_properties{
365  double m;
366  double width;
367  };
368 
370 
379  std::string bottom_internal_settings(
380  double mu, double m, order o, options opt
381  );
383 
393  std::string bottom_internal_settings(
394  double sqrt_s, double mu, double m, order o, options opt
395  );
397 
406  std::string top_internal_settings(
407  double mu, double m, order o, options opt
408  );
410 
420  std::string top_internal_settings(
421  double sqrt_s, scales mu, top_properties M, order o, options opt
422  );
423  std::string top_internal_settings(
424  double sqrt_s, double mu, top_properties M, order o, options opt
425  );
426 
427  std::ostream& operator<<(std::ostream& os, options const & obt);
428 
430 
451 
471 
475  struct parameters{
476  contribution_factors contributions;
477  complex E_shifted;
478  double s;
479  double m;
480  double width;
481  double mu;
482  double alpha_s;
483  double m_Higgs;
484  double Yukawa_t2;
485  double invariant_mass_cut;
486  double ml;
487  double e_q;
489  std::array<double, detail::last_coupling + 1> c_q;
490  double r4;
491  double mu_w;
492  double alpha;
493  double mu_alpha;
494  int order;
495  int nl;
496  int resum_poles;
497  SM beyond_QCD;
498  scheme mass_scheme;
499  production_channel production;
500  bool resonant_only;
501  bool expand_s;
502  bool double_light_insertion;
503  };
504 
505  parameters gen_bottom_parameters(
506  double mu, double m, order o,
507  options opt
508  );
509  parameters gen_bottom_parameters(
510  double sqrt_s, double mu, double m, order o,
511  options opt
512  );
513  parameters gen_bottom_parameters(
514  double sqrt_s, scales mu, double m, order o,
515  options opt
516  );
517  parameters gen_top_parameters(
518  double mu, double m, order o,
519  options opt
520  );
521  parameters gen_top_parameters(
522  double sqrt_s, double mu, top_properties M, order o,
523  options opt
524  );
525  parameters gen_top_parameters(
526  double sqrt_s, scales mu, top_properties M, order o,
527  options opt
528  );
529 
530  std::string to_string(parameters const & p);
531 
532 }
All Standard Model corrections.
No corrections beyond QCD.
Definition: alpha_s.hpp:37
SM beyond_QCD
Definition: parameters.hpp:310
bool resonant_only
Definition: parameters.hpp:330
double alpha
Definition: parameters.hpp:289
contribution_factors contributions
Definition: parameters.hpp:209
options top_options()
Default option settings for top-related functions.
SM
Standard Model effects beyond QCD.
Definition: parameters.hpp:100
Default strong coupling constants.
std::string top_internal_settings(double mu, double m, order o, options opt)
Describe internal settings for top-related functions.
Corrections due to photons.
bool expand_s
Definition: parameters.hpp:343
double mu_alpha
Definition: parameters.hpp:295
constexpr double m_Higgs
Default value for mass of the Higgs boson.
Definition: constants.hpp:58
production_channel
Production channels.
Definition: parameters.hpp:123
Options for functions.
Definition: parameters.hpp:202
constexpr double alpha_s_mZ
Default value for strong coupling at the scale mZ.
Definition: constants.hpp:42
std::string bottom_internal_settings(double mu, double m, order o, options opt)
Describe internal settings for bottom-related functions.
Production only via S-wave photon or Z.
Physical constants.
scheme mass_scheme
Definition: parameters.hpp:317
Corrections due to the physical Higgs boson.
options bottom_options()
Default option settings for bottom-related functions.
Production only via a virtual photon.
Definitions of mass schemes.
Mass scheme.
Definition: mass_schemes.hpp:72
Multiplicative coefficients for the potentials and current matching coefficients. ...
Definition: parameters.hpp:150