6#include <unordered_set>
15double real_value(
const scalar_t& value) {
19void print_complex(
const std::string& label,
const scalar_t& value) {
20 const auto z =
static_cast<complex_t>(value);
21 std::cout << std::left << std::setw(28) << label << std::scientific
22 << std::setprecision(16) << z.real()
23 << (z.imag() >= 0.0 ?
" +" :
" ") << z.imag() <<
"i\n";
26double optional_value(
const ParameterProvider& p,
const std::string& block,
int id) {
32int main(
int argc,
char** argv) {
33 const std::string input = argc > 1 ? argv[1] :
"lha/nmssm_smoke.slha";
34 const double q_match = argc > 2 ? std::atof(argv[2]) : 81.0;
35 const double q_low = argc > 3 ? std::atof(argv[3]) : q_match;
42 hyp.init(input, config_hyp);
46 const auto nm = [&](
int run_id,
int ext_id) {
47 if (bsm.
exists(
"NMSSMRUN",
LhaID(run_id)))
return real_value(bsm(
"NMSSMRUN",
LhaID(run_id)));
48 if (pass.
exists(
"EXTPAR",
LhaID(ext_id)))
return real_value(pass(
"EXTPAR",
LhaID(ext_id)));
52 std::cout << std::scientific << std::setprecision(16)
53 <<
"HYPERISO_NMSSM_INPUT lambda=" << nm(1, 61)
54 <<
" kappa=" << nm(2, 62)
55 <<
" A_lambda=" << nm(3, 63)
56 <<
" mu_eff=" << nm(5, 65) <<
'\n'
57 <<
"HYPERISO_NMSSM_MASSES h3=" << optional_value(bsm,
"MASS", 45)
58 <<
" a1=" << optional_value(bsm,
"MASS", 36)
59 <<
" a2=" << optional_value(bsm,
"MASS", 46) <<
'\n'
60 <<
"HYPERISO_YUKAWA_BLOCKS YU33="
61 << (bsm.
exists(
"YU",
LhaID(3, 3)) ?
"present" :
"derived")
62 <<
" YD33=" << (bsm.
exists(
"YD",
LhaID(3, 3)) ?
"present" :
"derived") <<
'\n'
63 <<
"HYPERISO_NEUTRALINO5 mass=" << optional_value(bsm,
"MASS", 1000045)
64 <<
" matrix=" << (bsm.
exists(
"NMNMIX",
LhaID(1, 1)) ?
"NMNMIX" :
"NMIX")
68 ?
"complete" :
"incomplete") <<
'\n'
69 <<
"HYPERISO_SCALES q_match=" << q_match <<
" q_low=" << q_low <<
'\n';
77 std::cout <<
"HYPERISO_EPSILON_SUSY eps0="
78 << real_value(wilson(
"EPSILON_SUSY",
LhaID(0, 1)))
79 <<
" eps0p=" << real_value(wilson(
"EPSILON_SUSY",
LhaID(0, 2)))
80 <<
" eps1p=" << real_value(wilson(
"EPSILON_SUSY",
LhaID(1)))
81 <<
" eps2=" << real_value(wilson(
"EPSILON_SUSY",
LhaID(2)))
82 <<
" epsb=" << real_value(wilson(
"EPSILON_SUSY",
LhaID(3)))
83 <<
" epsbp=" << real_value(wilson(
"EPSILON_SUSY",
LhaID(4))) <<
'\n';
94 }
catch (
const std::exception& e) {
95 std::cerr <<
"HyperIso NMSSM test failed: " << e.what() <<
'\n';
@ IS_LHA_SPECTRUM
Input LHA file already contains a spectrum.
Manages memory caching, parameter blocks, and LHA reader instances.
High-level access to parameter values and uncertainties.
Model-dependent parameter repository and initialization strategies.
std::complex< double > complex_t
Convenience alias for std::complex<double>.
High-level interface to initialize and monitor the main framework configuration.
Provides access to parameter values, errors, and existence checks.
bool exists(const ParamId &pid) const
Checks if a parameter identified by ParamId exists.
User-facing API to build and query Wilson coefficients at matching and hadronic scales.
double real(const scalar_t &z)
Configuration object controlling model, input flags and optional MARTY resources.
std::map< ExternalFlag, bool > flags
External flags describing the nature of the inputs.
Model model
Current model.
Represents an identifier of a LHA element, possibly containing several sub-ids.
Configuration for building sets of Wilson coefficients.