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,1> v_width2 = {{1.}};
170  std::array<double,1> v_width_kinetic = {{1.}};
172  std::array<double,1> width_ep = {{1.}};
174  std::array<double,3> cv = {{1.,1.,1.}};
176  std::array<double,2> cv_Higgs = {{1.,1.}};
178  std::array<double,1> Cv_QED = {{1.}};
180  std::array<double,1> Cv_WZ = {{1.}};
182  std::array<double,1> Ca_QED = {{1.}};
184  std::array<double,1> Ca_WZ = {{1.}};
186  std::array<double,2> dv = {{1.,1.}};
188  std::array<double,1> ca = {{1.}};
190  std::array<double, 2> nonresonant = {{1., 1.}};
191  };
192 
193  struct alpha_s_options{
194  double mu0;
195  double alpha_s;
196  };
197 
198  std::string to_string(alpha_s_options o);
199 
200  static_assert(
201  std::numeric_limits<double>::has_quiet_NaN,
202  "Quiet NaN not available"
203  );
204 
206 
210  struct options{
238  alpha_s_options alpha_s_mu0 = {
239  std::numeric_limits<double>::quiet_NaN(),
240  std::numeric_limits<double>::quiet_NaN()
241  };
255  double Yukawa_factor = 1;
268  double invariant_mass_cut = std::numeric_limits<double>::quiet_NaN();
278  double ml = 0;
291  double r4 = std::numeric_limits<double>::quiet_NaN();
297  double alpha;
303  double mu_alpha;
311  int resum_poles = 6;
351  bool expand_s;
362  bool double_light_insertion = false;
372  bool ISR_const = false;
373  };
374 
375  std::string to_string(options const & opt);
376 
377  struct scales{
378  double soft;
379  double weak;
380  };
381 
382  struct top_properties{
383  double m;
384  double width;
385  };
386 
388 
397  std::string bottom_internal_settings(
398  double mu, double m, order o, options opt
399  );
401 
411  std::string bottom_internal_settings(
412  double sqrt_s, double mu, double m, order o, options opt
413  );
415 
424  std::string top_internal_settings(
425  double mu, double m, order o, options opt
426  );
428 
438  std::string top_internal_settings(
439  double sqrt_s, scales mu, top_properties M, order o, options opt
440  );
441  std::string top_internal_settings(
442  double sqrt_s, double mu, top_properties M, order o, options opt
443  );
444 
445  std::ostream& operator<<(std::ostream& os, options const & obt);
446 
448 
469 
489 
493  struct parameters{
494  contribution_factors contributions;
495  complex E_shifted;
496  double s;
497  double m;
498  double width;
499  double mu;
500  double alpha_s;
501  double m_Higgs;
502  double Yukawa_t2;
503  double invariant_mass_cut;
504  double ml;
505  double e_q;
507  std::array<double, detail::last_coupling + 1> c_q;
508  double r4;
509  double mu_w;
510  double alpha;
511  double mu_alpha;
512  int order;
513  int nl;
514  int resum_poles;
515  SM beyond_QCD;
516  scheme mass_scheme;
517  production_channel production;
518  bool resonant_only;
519  bool expand_s;
520  bool double_light_insertion;
521  bool ISR_const;
522  };
523 
524  parameters gen_bottom_parameters(
525  double mu, double m, order o,
526  options opt
527  );
528  parameters gen_bottom_parameters(
529  double sqrt_s, double mu, double m, order o,
530  options opt
531  );
532  parameters gen_bottom_parameters(
533  double sqrt_s, scales mu, double m, order o,
534  options opt
535  );
536  parameters gen_top_parameters(
537  double mu, double m, order o,
538  options opt
539  );
540  parameters gen_top_parameters(
541  double mu, top_properties M, order o,
542  options opt
543  );
544  parameters gen_top_parameters(
545  double sqrt_s, double mu, top_properties M, order o,
546  options opt
547  );
548  parameters gen_top_parameters(
549  double sqrt_s, scales mu, top_properties M, order o,
550  options opt
551  );
552 
553  std::string to_string(parameters const & p);
554 
555 }
All Standard Model corrections.
No corrections beyond QCD.
Definition: alpha_s.hpp:37
SM beyond_QCD
Definition: parameters.hpp:318
bool resonant_only
Definition: parameters.hpp:338
double alpha
Definition: parameters.hpp:297
contribution_factors contributions
Definition: parameters.hpp:217
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:351
double mu_alpha
Definition: parameters.hpp:303
constexpr double m_Higgs
Default value for mass of the Higgs boson.
Definition: constants.hpp:60
production_channel
Production channels.
Definition: parameters.hpp:123
Options for functions.
Definition: parameters.hpp:210
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:325
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:73
Multiplicative coefficients for the potentials and current matching coefficients. ...
Definition: parameters.hpp:150