From 04e319ac588ebfb71fabb5cf86cb1c58e89903cf Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Mon, 11 Jul 2016 12:05:19 +0200 Subject: [PATCH 01/64] use cout instead of printf in order to be able to redirect cout using rdbuf() --- src/minimizer.hpp | 2 +- src/root_finder.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/minimizer.hpp b/src/minimizer.hpp index 0719d6f22..512f2e320 100644 --- a/src/minimizer.hpp +++ b/src/minimizer.hpp @@ -210,7 +210,7 @@ int Minimizer::minimize(const double start[dimension]) } while (status == GSL_CONTINUE && iter < max_iterations); #ifdef ENABLE_VERBOSE - printf("\tMinimization status = %s\n", gsl_strerror(status)); + std::cout << "\tMinimization status = " << gsl_strerror(status) << '\n'; #endif // save minimum point and function value diff --git a/src/root_finder.hpp b/src/root_finder.hpp index 2fa08e2fa..a189e026d 100644 --- a/src/root_finder.hpp +++ b/src/root_finder.hpp @@ -209,7 +209,7 @@ int Root_finder::find_root(const double start[dimension]) } while (status == GSL_CONTINUE && iter < max_iterations); #ifdef ENABLE_VERBOSE - printf("\tRoot_finder status = %s\n", gsl_strerror(status)); + std::cout << "\tRoot_finder status = " << gsl_strerror(status) << '\n'; #endif gsl_vector_memcpy(root, solver->x); From fc6d5093b798385eaa47f693e604620ba510e340 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Tue, 12 Jul 2016 09:25:40 +0200 Subject: [PATCH 02/64] Bugfix: ship all lattice meta code files This prevents make to stop with the error make: *** No rule to make target 'meta/Format.m', needed by 'models/CMSSM/00_DELETE_ME_TO_RERUN_METACODE'. Stop. --- .gitattributes | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.gitattributes b/.gitattributes index 14154276e..aff1bb7b1 100644 --- a/.gitattributes +++ b/.gitattributes @@ -14,10 +14,6 @@ examples/lattice_numerical_fmssm.cpp export-ignore examples/lattice_numerical_fmssm_fmssmn.cpp export-ignore examples/switch_MSSM.cpp export-ignore -meta/Format.m export-ignore -meta/writeNRGE.m export-ignore -meta/writeRGE.m export-ignore - model_files/CMSSMFPIAbsolute export-ignore model_files/CMSSMFPIRelative export-ignore model_files/CMSSMFPITadpole export-ignore From f8431ac6f9e40e9da2e78158ea6056b28ef66958 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Tue, 12 Jul 2016 09:36:03 +0200 Subject: [PATCH 03/64] update ChangeLog --- ChangeLog | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 634616cfb..b037a5155 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,12 @@ -FlexibleSUSY-1.6.0 [not released yet] +Flexiblesusy-1.5.1 [not released yet] * Bugfix (commit 63f5361): Fix numerical instability of SOFTSUSY's B1 funcion in parameter regions with p << m1,m2 and m1 close to m2. + * Bugfix (commit fc6d509): Fix makefile bug in the tarball by + shipping all .m files that appear in the list of dependencies for + the generated C++ code. + FlexibleSUSY-1.5.0 [June, 29 2016] * Feature: Write phases to SLHA output if a SLHA output block is From e769a5f0ebb26bd4dca468f3585f50f4dd687b9a Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Tue, 12 Jul 2016 09:40:58 +0200 Subject: [PATCH 04/64] version 1.5.1 --- ChangeLog | 2 +- configure | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index b037a5155..0916af739 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -Flexiblesusy-1.5.1 [not released yet] +Flexiblesusy-1.5.1 [July, 12 2017] * Bugfix (commit 63f5361): Fix numerical instability of SOFTSUSY's B1 funcion in parameter regions with p << m1,m2 and m1 close to m2. diff --git a/configure b/configure index e317a531f..2b7c70bbf 100755 --- a/configure +++ b/configure @@ -6,7 +6,7 @@ PROGRAM_NAME=FlexibleSUSY FLEXIBLESUSY_MAJOR=1 FLEXIBLESUSY_MINOR=5 -FLEXIBLESUSY_PATCH=0 +FLEXIBLESUSY_PATCH=1 FLEXIBLESUSY_EXTRA="" FLEXIBLESUSY_VERSION="${FLEXIBLESUSY_MAJOR}.${FLEXIBLESUSY_MINOR}.${FLEXIBLESUSY_PATCH}${FLEXIBLESUSY_EXTRA}" GIT_COMMIT=$(git rev-parse HEAD 2> /dev/null || echo unknown) From 0d5d5545364a0df2653bb352df758af6715e3616 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Tue, 12 Jul 2016 11:39:46 +0200 Subject: [PATCH 05/64] rename clean targets in src as clean-src-* etc. --- src/module.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/module.mk b/src/module.mk index c7dfd69e9..8d2fded05 100644 --- a/src/module.mk +++ b/src/module.mk @@ -1,5 +1,5 @@ DIR := src -MODNAME := flexisusy +MODNAME := src LIBFLEXI_MK := \ $(DIR)/module.mk @@ -137,7 +137,7 @@ LIBFLEXI_OBJ := \ LIBFLEXI_DEP := \ $(LIBFLEXI_OBJ:.o=.d) -LIBFLEXI := $(DIR)/lib$(MODNAME)$(LIBEXT) +LIBFLEXI := $(DIR)/libflexisusy$(LIBEXT) LIBFLEXI_INSTALL_DIR := $(INSTALL_DIR)/$(DIR) From da7727aa7a565fac1431ccc59be96e0b7047651b Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Wed, 13 Jul 2016 17:11:21 +0200 Subject: [PATCH 06/64] let CreateLocalConstRefsForBetas filter only BETA[] symbols --- meta/Constraint.m | 8 +++++++- meta/Parameters.m | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/meta/Constraint.m b/meta/Constraint.m index c0423b692..875f4e598 100644 --- a/meta/Constraint.m +++ b/meta/Constraint.m @@ -375,10 +375,16 @@ Return[result]; ]; +CreateBetasForParsIn[expr_] := + Module[{pars}, + pars = Parameters`FSModelParameters /. Parameters`FindAllParametersClassified[expr]; + Global`BETA /@ pars + ]; + CalculateScale[expr_Equal, scaleName_String] := Module[{result}, result = Parameters`CreateLocalConstRefs[expr]; - result = result <> Parameters`CreateLocalConstRefsForBetas[expr]; + result = result <> Parameters`CreateLocalConstRefsForBetas[CreateBetasForParsIn[expr]]; result = result <> "\n"; result = result <> CalculateScaleFromExpr[expr, scaleName]; Return[result]; diff --git a/meta/Parameters.m b/meta/Parameters.m index 8711696da..a1286e774 100644 --- a/meta/Parameters.m +++ b/meta/Parameters.m @@ -1273,7 +1273,8 @@ CreateLocalConstRefsForBetas[expr_] := Module[{result = "", pars, modelPars}, - pars = FindAllParametersClassified[expr]; + pars = Cases[expr, Global`BETA[p_] | Global`BETA[p_][___] :> p, {0, Infinity}]; + pars = FindAllParametersClassified[pars]; modelPars = FSModelParameters /. pars; (result = result <> DefineLocalConstCopy[#, "BETAPARAMETER", "beta_"])& /@ modelPars; Return[result]; From a5342eb35c305edd3ba0c1c00326e4c90a5477aa Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Fri, 15 Jul 2016 11:35:05 +0200 Subject: [PATCH 07/64] Bugfix: avoid non-portable use of sed in createmodel --- createmodel | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/createmodel b/createmodel index f2dbcf0ba..bdeba9091 100755 --- a/createmodel +++ b/createmodel @@ -481,8 +481,9 @@ set -- $(find $model_file_dir -type f -iname LesHouches.in\* -not -iname \*~ -ex SLHA_input_files="$*" SLHA_input_files_in_mk=$(echo "$SLHA_input_files" | - sed -e 's/ / \\\\\\n/g;' \ - -e 's,\(^\|\\n\)\(.\),\1 $(DIR)/\2,g') + sed -e 's/ / \\\\\\n/g' \ + -e 's,^\(.\), $(DIR)/\1,' \ + -e 's,\\n\(.\),\\n $(DIR)/\1,g') message -n " Creating Makefile module $targetdir/module.mk ... " sed -e "s|@DIR@|$targetdir|g" \ From 06400360e0844d3edcad795db7155c0c0c01904c Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Fri, 15 Jul 2016 11:37:11 +0200 Subject: [PATCH 08/64] update ChangeLog --- ChangeLog | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0916af739..5e98934b7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,12 @@ +Flexiblesusy-1.5.2 [not released yet] + + * Bugfix (commit a5342eb): Avoid non-portable use of sed in + createmodel. This fixes `make install-src' on Mac. + Flexiblesusy-1.5.1 [July, 12 2017] * Bugfix (commit 63f5361): Fix numerical instability of SOFTSUSY's B1 - funcion in parameter regions with p << m1,m2 and m1 close to m2. + function in parameter regions with p << m1,m2 and m1 close to m2. * Bugfix (commit fc6d509): Fix makefile bug in the tarball by shipping all .m files that appear in the list of dependencies for From f5b4c38412a22d4d5367589252bb6690fcf2be58 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Mon, 18 Jul 2016 19:01:28 +0200 Subject: [PATCH 09/64] don't strip SARAH indices when converting expression to CForm string --- meta/CConversion.m | 3 --- 1 file changed, 3 deletions(-) diff --git a/meta/CConversion.m b/meta/CConversion.m index 9f79f9d2a..1f9eda8d8 100644 --- a/meta/CConversion.m +++ b/meta/CConversion.m @@ -812,9 +812,6 @@ FlexibleSUSY`M[a_] :> ToValidCSymbol[FlexibleSUSY`M[a]] /. Susyno`LieGroups`conj -> SARAH`Conj //. conjSimplification /. - (* TODO: remove the following 2 lines: *) - a_[Susyno`LieGroups`i1] :> a /. - a_[Susyno`LieGroups`i1, SARAH`i2] :> a /. SARAH`Delta[a_,a_] -> 1 /. Power[a_?NumericQ,n_?NumericQ] :> N[Power[a,n]] /. Sqrt[a_?NumericQ] :> N[Sqrt[a]] /. From 64afce54c1a691f2e75e9a9d1e90b6ad9122f027 Mon Sep 17 00:00:00 2001 From: Peter Athron Date: Wed, 20 Jul 2016 20:53:24 +1000 Subject: [PATCH 10/64] update rootMSSM and minMSSM to use sarah model MSSM by default. --- model_files/minMSSM/FlexibleSUSY.m.in | 2 ++ model_files/rootMSSM/FlexibleSUSY.m.in | 2 ++ 2 files changed, 4 insertions(+) diff --git a/model_files/minMSSM/FlexibleSUSY.m.in b/model_files/minMSSM/FlexibleSUSY.m.in index 55ee389b3..796a46418 100644 --- a/model_files/minMSSM/FlexibleSUSY.m.in +++ b/model_files/minMSSM/FlexibleSUSY.m.in @@ -1,5 +1,7 @@ FSModelName = "@CLASSNAME@"; +FSEigenstates = SARAH`EWSB; +FSDefaultSARAHModel = MSSM; (* CMSSM input parameters *) diff --git a/model_files/rootMSSM/FlexibleSUSY.m.in b/model_files/rootMSSM/FlexibleSUSY.m.in index 0f29d8aa0..ebf9d9fae 100644 --- a/model_files/rootMSSM/FlexibleSUSY.m.in +++ b/model_files/rootMSSM/FlexibleSUSY.m.in @@ -1,5 +1,7 @@ FSModelName = "@CLASSNAME@"; +FSEigenstates = SARAH`EWSB; +FSDefaultSARAHModel = MSSM; (* CMSSM input parameters *) From 2968fcaa137370b9e8394c32deca370e085da1ff Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Wed, 20 Jul 2016 19:51:21 +0200 Subject: [PATCH 11/64] pass loop and threshold order as unsigned int types --- templates/two_scale_susy_parameters.cpp.in | 2 +- templates/two_scale_susy_parameters.hpp.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/two_scale_susy_parameters.cpp.in b/templates/two_scale_susy_parameters.cpp.in index a603305ca..7040098d2 100644 --- a/templates/two_scale_susy_parameters.cpp.in +++ b/templates/two_scale_susy_parameters.cpp.in @@ -43,7 +43,7 @@ const int @ModelName@_susy_parameters::numberOfParameters; } @ModelName@_susy_parameters::@ModelName@_susy_parameters( - double scale_, double loops_, double thresholds_, + double scale_, unsigned loops_, unsigned thresholds_, const @ModelName@_input_parameters& input_ @cCtorParameterList@ ) diff --git a/templates/two_scale_susy_parameters.hpp.in b/templates/two_scale_susy_parameters.hpp.in index 88e280b2d..951350429 100644 --- a/templates/two_scale_susy_parameters.hpp.in +++ b/templates/two_scale_susy_parameters.hpp.in @@ -39,7 +39,7 @@ namespace flexiblesusy { class @ModelName@_susy_parameters : public Beta_function { public: explicit @ModelName@_susy_parameters(const @ModelName@_input_parameters& input_ = @ModelName@_input_parameters()); - @ModelName@_susy_parameters(double scale_, double loops_, double thresholds_, const @ModelName@_input_parameters& input_@cCtorParameterList@); + @ModelName@_susy_parameters(double scale_, unsigned loops_, unsigned thresholds_, const @ModelName@_input_parameters& input_@cCtorParameterList@); virtual ~@ModelName@_susy_parameters() {} virtual Eigen::ArrayXd beta() const; virtual Eigen::ArrayXd get() const; From 494b8a4d262291ce41eeacfa37de2af2b757a120 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Wed, 20 Jul 2016 19:51:59 +0200 Subject: [PATCH 12/64] adding helper functions to calculate beta functions at given loop order --- templates/two_scale_soft_parameters.cpp.in | 8 ++++++++ templates/two_scale_soft_parameters.hpp.in | 1 + templates/two_scale_susy_parameters.cpp.in | 8 ++++++++ templates/two_scale_susy_parameters.hpp.in | 1 + 4 files changed, 18 insertions(+) diff --git a/templates/two_scale_soft_parameters.cpp.in b/templates/two_scale_soft_parameters.cpp.in index 00716fcf4..034162d1a 100644 --- a/templates/two_scale_soft_parameters.cpp.in +++ b/templates/two_scale_soft_parameters.cpp.in @@ -64,6 +64,14 @@ Eigen::ArrayXd @ModelName@_soft_parameters::beta() const return @ModelName@_soft_parameters(susy_betas, @betaParameterList@); } +@ModelName@_soft_parameters @ModelName@_soft_parameters::calc_beta(unsigned loops) const +{ + @ModelName@_soft_parameters p(*this); + p.set_loops(loops); + + return p.calc_beta(); +} + void @ModelName@_soft_parameters::clear() { @ModelName@_susy_parameters::clear(); diff --git a/templates/two_scale_soft_parameters.hpp.in b/templates/two_scale_soft_parameters.hpp.in index 0d14b8b61..d8fcadc56 100644 --- a/templates/two_scale_soft_parameters.hpp.in +++ b/templates/two_scale_soft_parameters.hpp.in @@ -43,6 +43,7 @@ public: virtual void set(const Eigen::ArrayXd&); @ModelName@_soft_parameters calc_beta() const; + @ModelName@_soft_parameters calc_beta(unsigned) const; virtual void clear(); @setter@ diff --git a/templates/two_scale_susy_parameters.cpp.in b/templates/two_scale_susy_parameters.cpp.in index 7040098d2..64358519a 100644 --- a/templates/two_scale_susy_parameters.cpp.in +++ b/templates/two_scale_susy_parameters.cpp.in @@ -70,6 +70,14 @@ Eigen::ArrayXd @ModelName@_susy_parameters::beta() const @betaParameterList@); } +@ModelName@_susy_parameters @ModelName@_susy_parameters::calc_beta(unsigned loops) const +{ + @ModelName@_susy_parameters p(*this); + p.set_loops(loops); + + return p.calc_beta(); +} + void @ModelName@_susy_parameters::clear() { reset(); diff --git a/templates/two_scale_susy_parameters.hpp.in b/templates/two_scale_susy_parameters.hpp.in index 951350429..3b20bfc9e 100644 --- a/templates/two_scale_susy_parameters.hpp.in +++ b/templates/two_scale_susy_parameters.hpp.in @@ -50,6 +50,7 @@ public: void set_input_parameters(const @ModelName@_input_parameters&); @ModelName@_susy_parameters calc_beta() const; + @ModelName@_susy_parameters calc_beta(unsigned) const; virtual void clear(); @setter@ From c9f5ca7ccdf4135c44dde090edb71f54fa826939 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Wed, 20 Jul 2016 21:29:01 +0200 Subject: [PATCH 13/64] use MSSM by default for the YukawaCMSSM testing model --- model_files/YukawaCMSSM/FlexibleSUSY.m.in | 1 + 1 file changed, 1 insertion(+) diff --git a/model_files/YukawaCMSSM/FlexibleSUSY.m.in b/model_files/YukawaCMSSM/FlexibleSUSY.m.in index f10acb8dc..922475720 100644 --- a/model_files/YukawaCMSSM/FlexibleSUSY.m.in +++ b/model_files/YukawaCMSSM/FlexibleSUSY.m.in @@ -1,5 +1,6 @@ FSModelName = "@CLASSNAME@"; +FSDefaultSARAHModel = MSSM; (* CMSSM input parameters *) From 4e9ef56f1ea6df815a59bfaeb784d47a3a4b7371 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Wed, 20 Jul 2016 21:54:01 +0200 Subject: [PATCH 14/64] Feature: access beta-functions on the r.h.s. of a constaint --- .gitattributes | 1 + doc/model_file.dox | 14 ++++ meta/CConversion.m | 1 + meta/Constraint.m | 28 +++++++- meta/FlexibleSUSY.m | 1 + meta/Parameters.m | 24 +++++-- model_files/BetaSM/FlexibleSUSY.m.in | 68 +++++++++++++++++++ .../two_scale_high_scale_constraint.cpp.in | 2 + .../two_scale_low_scale_constraint.cpp.in | 2 + .../two_scale_susy_scale_constraint.cpp.in | 2 + 10 files changed, 134 insertions(+), 9 deletions(-) create mode 100644 model_files/BetaSM/FlexibleSUSY.m.in diff --git a/.gitattributes b/.gitattributes index aff1bb7b1..333fbcc1c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -14,6 +14,7 @@ examples/lattice_numerical_fmssm.cpp export-ignore examples/lattice_numerical_fmssm_fmssmn.cpp export-ignore examples/switch_MSSM.cpp export-ignore +model_files/BetaSM export-ignore model_files/CMSSMFPIAbsolute export-ignore model_files/CMSSMFPIRelative export-ignore model_files/CMSSMFPITadpole export-ignore diff --git a/doc/model_file.dox b/doc/model_file.dox index 59517cc8e..e3c994035 100644 --- a/doc/model_file.dox +++ b/doc/model_file.dox @@ -657,6 +657,20 @@ SUSYScaleInput = { }; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +It is also possible to access the \f$\beta\f$ functions on the +r.h.s. of an assignment using the `BETA` head: `BETA[p]` represents +the \f$\beta\f$ function of the parameter `p` using the loop level +given in the SLHA input. `BETA[l,p]` represents the `l`-loop +\f$\beta\f$ function of the parameter `p`. + +Example: + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.m} +HighScaleInput = { + {\[Lambda], BETA[g1] + BETA[g2] + BETA[1,Yu][3,3]} +}; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ### Temporary parameter re-definitions ### Since FlexibleSUSY 1.4.0, the user can perform a temporary parameter diff --git a/meta/CConversion.m b/meta/CConversion.m index 1f9eda8d8..4e8473fd1 100644 --- a/meta/CConversion.m +++ b/meta/CConversion.m @@ -810,6 +810,7 @@ FlexibleSUSY`M[bar[a_]] :> FlexibleSUSY`M[a] /. FlexibleSUSY`M[a_[idx_]] :> ToValidCSymbol[FlexibleSUSY`M[a]][idx] /. FlexibleSUSY`M[a_] :> ToValidCSymbol[FlexibleSUSY`M[a]] /. + FlexibleSUSY`BETA[l_,p_] :> FlexibleSUSY`BETA1[l,p] /. Susyno`LieGroups`conj -> SARAH`Conj //. conjSimplification /. SARAH`Delta[a_,a_] -> 1 /. diff --git a/meta/Constraint.m b/meta/Constraint.m index 875f4e598..1270f44e3 100644 --- a/meta/Constraint.m +++ b/meta/Constraint.m @@ -194,11 +194,35 @@ {FlexibleSUSY`Temporary[_], _} ]; result = Parameters`CreateLocalConstRefs[(#[[2]])& /@ noMacros]; + result = result <> AddBetas[noMacros]; result = result <> "\n"; (result = result <> ApplyConstraint[#, "MODEL"])& /@ noTemp; Return[result]; ]; +ContainsBetas[expr_] := !FreeQ[expr, FlexibleSUSY`BETA]; + +(* -1 = current beta-function loop order *) +MaxBetaLoopOrder[expr_] := + Sort @ Cases[expr /. FlexibleSUSY`BETA[p_] :> FlexibleSUSY`BETA[-1,p], + FlexibleSUSY`BETA[l_, _] | FlexibleSUSY`BETA[l_, _][___] :> l, {0, Infinity}]; + +CallCalcBeta[-1] := + "const " <> FlexibleSUSY`FSModelName <> "_soft_parameters beta_functions(MODEL->calc_beta());\n"; + +CallCalcBeta[l_?IntegerQ] := + Module[{lstr = ToString[l]}, + "const " <> FlexibleSUSY`FSModelName <> + "_soft_parameters beta_functions_" <> lstr <> + "L(MODEL->calc_beta(" <> lstr <> "));\n" + ]; + +AddBetas[expr_?ContainsBetas] := + StringJoin[CallCalcBeta /@ MaxBetaLoopOrder[expr]] <> + Parameters`CreateLocalConstRefsForBetas[expr]; + +AddBetas[_] := ""; + FindFixedParametersFromSetting[{parameter_, value_}] := Parameters`StripIndices[parameter]; FindFixedParametersFromSetting[FlexibleSUSY`FSMinimize[parameters_List, value_]] := parameters; FindFixedParametersFromSetting[FlexibleSUSY`FSFindRoot[parameters_List, value_]] := parameters; @@ -378,7 +402,7 @@ CreateBetasForParsIn[expr_] := Module[{pars}, pars = Parameters`FSModelParameters /. Parameters`FindAllParametersClassified[expr]; - Global`BETA /@ pars + FlexibleSUSY`BETA /@ pars ]; CalculateScale[expr_Equal, scaleName_String] := @@ -415,7 +439,7 @@ parSeq = Sequence @@ parameters; F1[parSeq] := expr1; F2[parSeq] := expr2; - betaFunctions = Global`BETA /@ parameters; + betaFunctions = FlexibleSUSY`BETA /@ parameters; solution = Solve[Log[scale/Global`currentScale] * (betaFunctions . D[F1[parSeq] - F2[parSeq], {parameters}]) diff --git a/meta/FlexibleSUSY.m b/meta/FlexibleSUSY.m index b7ed4dd1e..041f59b01 100644 --- a/meta/FlexibleSUSY.m +++ b/meta/FlexibleSUSY.m @@ -52,6 +52,7 @@ FlexibleSUSY model file (FlexibleSUSY.m). HighPrecision::usage=""; GUTNormalization::usage="Returns GUT normalization of a given coupling"; +BETA::usage = "Head for beta functions" FSModelName; FSOutputDir = ""; (* directory for generated code *) FSLesHouchesList; diff --git a/meta/Parameters.m b/meta/Parameters.m index a1286e774..bfe456202 100644 --- a/meta/Parameters.m +++ b/meta/Parameters.m @@ -1203,7 +1203,8 @@ RemoveProtectedHeads[expr_] := expr /. { FlexibleSUSY`LowEnergyConstant[__] -> FlexibleSUSY`LowEnergyConstant[], - FlexibleSUSY`Pole[__] -> FlexibleSUSY`Pole[] }; + FlexibleSUSY`Pole[__] -> FlexibleSUSY`Pole[], + FlexibleSUSY`BETA[__] -> FlexibleSUSY`BETA[]}; DefineLocalConstCopy[parameter_, macro_String, prefix_String:""] := "const auto " <> prefix <> ToValidCSymbolString[parameter] <> " = " <> @@ -1271,13 +1272,22 @@ Return[result]; ]; +DefineLocalConstCopyForBeta[{par_, -1}] := + DefineLocalConstCopy[par, "BETAPARAMETER", "beta_"]; + +DefineLocalConstCopyForBeta[{par_, loops_}] := + Module[{lstr = ToString[loops], parStr = ToValidCSymbolString[par]}, + "const auto BETA1(" <> lstr <> "," <> parStr <> + ") = BETAPARAMETER1(" <> lstr <> "," <> parStr <> ");\n" + ]; + CreateLocalConstRefsForBetas[expr_] := - Module[{result = "", pars, modelPars}, - pars = Cases[expr, Global`BETA[p_] | Global`BETA[p_][___] :> p, {0, Infinity}]; - pars = FindAllParametersClassified[pars]; - modelPars = FSModelParameters /. pars; - (result = result <> DefineLocalConstCopy[#, "BETAPARAMETER", "beta_"])& /@ modelPars; - Return[result]; + Module[{result = "", exprFull, pars}, + (* add index to beta function for current loop level *) + exprFull = expr /. FlexibleSUSY`BETA[p_] :> FlexibleSUSY`BETA[-1,p]; + pars = DeleteDuplicates @ \ + Cases[exprFull, FlexibleSUSY`BETA[l_,p_] | FlexibleSUSY`BETA[l_,p_][___] :> {p,l}, {0, Infinity}]; + StringJoin[DefineLocalConstCopyForBeta /@ pars] ]; CreateLocalConstRefsForInputParameters[expr_, head_String:"INPUT"] := diff --git a/model_files/BetaSM/FlexibleSUSY.m.in b/model_files/BetaSM/FlexibleSUSY.m.in new file mode 100644 index 000000000..b6ce3a120 --- /dev/null +++ b/model_files/BetaSM/FlexibleSUSY.m.in @@ -0,0 +1,68 @@ + +FSModelName = "@CLASSNAME@"; +FSEigenstates = SARAH`EWSB; +FSDefaultSARAHModel = SM; + +(* SM input parameters *) + +MINPAR = { {1, LambdaIN} }; + +EXTPAR = { + {0, Qin}, + {1, QEWSB} +}; + +EWSBOutputParameters = { mu2 }; + +HighScale = Qin; + +HighScaleFirstGuess = Qin; + +HighScaleInput = { + {\[Lambda], BETA[2,\[Lambda]] + BETA[1,Yu][3,3] + BETA[g1]} +}; + +SUSYScale = QEWSB; + +SUSYScaleFirstGuess = QEWSB; + +SUSYScaleInput = { + {Yd, BETA[1,Yd]} +}; + +LowScale = LowEnergyConstant[MZ]; + +LowScaleFirstGuess = LowEnergyConstant[MZ]; + +LowScaleInput = { + {v, 2 MZDRbar / Sqrt[GUTNormalization[g1]^2 g1^2 + g2^2]}, + {Yu, Automatic}, + {Ye, Automatic} +}; + +InitialGuessAtLowScale = { + {v, LowEnergyConstant[vev]}, + {Yu, Automatic}, + {Yd, Automatic}, + {Ye, Automatic} +}; + +SMParticles = { + Electron, TopQuark, BottomQuark, + VectorP, VectorZ, VectorG, VectorW, Neutrino, + Hp, Ah, (* goldstones *) + hh (* Higgs *) +}; + +UseSM3LoopRGEs = True; +UseHiggs2LoopSM = True; + +DefaultPoleMassPrecision = MediumPrecision; +HighPoleMassPrecision = {hh}; +MediumPoleMassPrecision = {}; +LowPoleMassPrecision = {}; + +SARAH`ParameterDefinitions = Append[ + Cases[SARAH`ParameterDefinitions, {p_ /; p =!= SARAH`\[Lambda], ___}], + {SARAH`\[Lambda], { Description -> "SM Higgs Selfcouplings" } } +]; diff --git a/templates/two_scale_high_scale_constraint.cpp.in b/templates/two_scale_high_scale_constraint.cpp.in index 815adc313..0fc4167a9 100644 --- a/templates/two_scale_high_scale_constraint.cpp.in +++ b/templates/two_scale_high_scale_constraint.cpp.in @@ -41,7 +41,9 @@ namespace flexiblesusy { #define MODELPARAMETER(p) model->get_##p() #define PHASE(p) model->get_##p() #define BETAPARAMETER(p) beta_functions.get_##p() +#define BETAPARAMETER1(l,p) beta_functions_##l##L.get_##p() #define BETA(p) beta_##p +#define BETA1(l,p) beta_##l##L_##p #define LowEnergyConstant(p) Electroweak_constants::p #define MZPole Electroweak_constants::MZ #define STANDARDDEVIATION(p) Electroweak_constants::Error_##p diff --git a/templates/two_scale_low_scale_constraint.cpp.in b/templates/two_scale_low_scale_constraint.cpp.in index a3a9cbcef..8650a3d37 100644 --- a/templates/two_scale_low_scale_constraint.cpp.in +++ b/templates/two_scale_low_scale_constraint.cpp.in @@ -40,7 +40,9 @@ namespace flexiblesusy { #define MODELPARAMETER(p) model->get_##p() #define PHASE(p) model->get_##p() #define BETAPARAMETER(p) beta_functions.get_##p() +#define BETAPARAMETER1(l,p) beta_functions_##l##L.get_##p() #define BETA(p) beta_##p +#define BETA1(l,p) beta_##l##L_##p #define LowEnergyGaugeCoupling(i) new_g##i #define LowEnergyConstant(p) Electroweak_constants::p #define MZPole qedqcd.displayPoleMZ() diff --git a/templates/two_scale_susy_scale_constraint.cpp.in b/templates/two_scale_susy_scale_constraint.cpp.in index d1f305292..3bff7c48f 100644 --- a/templates/two_scale_susy_scale_constraint.cpp.in +++ b/templates/two_scale_susy_scale_constraint.cpp.in @@ -38,7 +38,9 @@ namespace flexiblesusy { #define MODELPARAMETER(p) model->get_##p() #define PHASE(p) model->get_##p() #define BETAPARAMETER(p) beta_functions.get_##p() +#define BETAPARAMETER1(l,p) beta_functions_##l##L.get_##p() #define BETA(p) beta_##p +#define BETA1(l,p) beta_##l##L_##p #define LowEnergyConstant(p) Electroweak_constants::p #define MZPole qedqcd.displayPoleMZ() #define STANDARDDEVIATION(p) Electroweak_constants::Error_##p From 512f88daa11ad3ba18e13023d45d9ae62ca845a4 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Wed, 20 Jul 2016 21:57:12 +0200 Subject: [PATCH 15/64] update ChangeLog --- ChangeLog | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ChangeLog b/ChangeLog index 5e98934b7..d5f76d8af 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,17 @@ Flexiblesusy-1.5.2 [not released yet] + * Feature (commit 4e9ef56): Allow user to access the beta-functions + of the model parameters on the r.h.s. of the constraints. BETA[p] + represents the beta function of the parameter p using the loop + level given in the SLHA input. BETA[l,p] represents the l-loop + beta function of the parameter p. + + Example in the SM: + + HighScaleInput = { + {\[Lambda], BETA[g1] + BETA[g2] + BETA[1,Yu][3,3]} + }; + * Bugfix (commit a5342eb): Avoid non-portable use of sed in createmodel. This fixes `make install-src' on Mac. From 046f68fd57313c326b5cc8e4486bf61376337946 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 21 Jul 2016 15:53:44 +0200 Subject: [PATCH 16/64] simplify release instruction --- doc/release | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/release b/doc/release index edd5a4332..c5309a356 100644 --- a/doc/release +++ b/doc/release @@ -23,8 +23,7 @@ When releasing FlexibleSUSY, please follow these steps: 3. Run configure with all features disabled to create the Makefile - ./configure --disable-meta --disable-compile \ - --with-models= --with-algorithms= + ./configure --disable-meta --disable-compile 4. Create a non-annotated tag via From ce3aa994fec772b6dec60872de9337ee465b022d Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Tue, 26 Jul 2016 18:04:44 +0200 Subject: [PATCH 17/64] adapting Constraint module test to recent changes --- test/test_Constraint.m | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/test/test_Constraint.m b/test/test_Constraint.m index ff79971a7..19d9b2000 100644 --- a/test/test_Constraint.m +++ b/test/test_Constraint.m @@ -1,9 +1,13 @@ Needs["TestSuite`", "TestSuite.m"]; Needs["Constraint`", "Constraint.m"]; -Constraint`SetInputParameters[{g0, m0}]; -Constraint`SetModelParameters[{g1, g2, Yu, Yd}]; -Constraint`SetOutputParameters[{VZ, Se}]; +BeginPackage["FlexibleSUSY`"]; +BETA; +EndPackage[]; + +Parameters`SetInputParameters[{g0, m0}]; +Parameters`SetModelParameters[{g1, g2, Yu, Yd}]; +Parameters`SetOutputParameters[{VZ, Se}]; Constraint`SetBetaFunctions[ { BetaFunction`BetaFunction[g1, CConversion`ScalarType["double"], 2 g1], BetaFunction`BetaFunction[g2, CConversion`ScalarType["double"], 3 g2], From d0ba7e9232eb3c01d590b82268849ea8fefb1bc1 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Tue, 26 Jul 2016 18:06:43 +0200 Subject: [PATCH 18/64] do not strip i1 and i2 from symbols --- meta/CConversion.m | 4 ---- test/test_CConversion.m | 20 -------------------- 2 files changed, 24 deletions(-) diff --git a/meta/CConversion.m b/meta/CConversion.m index 4e8473fd1..b00f28c1e 100644 --- a/meta/CConversion.m +++ b/meta/CConversion.m @@ -615,10 +615,6 @@ ToValidCSymbol[symbol_Real] := symbol; -ToValidCSymbol[symbol_[Susyno`LieGroups`i1]] := ToValidCSymbol[symbol]; - -ToValidCSymbol[symbol_[Susyno`LieGroups`i1,SARAH`i2]] := ToValidCSymbol[symbol]; - ToValidCSymbol[symbol_ /; Length[symbol] > 0] := Module[{result = "", i}, For[i = 0, i <= Length[symbol], i++, diff --git a/test/test_CConversion.m b/test/test_CConversion.m index 88302ac4e..304d1501a 100644 --- a/test/test_CConversion.m +++ b/test/test_CConversion.m @@ -20,12 +20,6 @@ TestEquality[ToValidCSymbol[a[b,c]], abc]; TestEquality[ToValidCSymbol[a[b,c][d]], abcd]; -(* SARAH sometimes appends indices [i1,i2] to express that a symbol is - of type matrix. These indices should be stripped before - conversion. *) -TestEquality[ToValidCSymbol[a[Susyno`LieGroups`i1,SARAH`i2]], a]; -TestEquality[ToValidCSymbol[a[b,c][Susyno`LieGroups`i1,SARAH`i2]], abc]; - (* Test that symbols, which consist of greek letters are correctly converted. *) TestEquality[ToValidCSymbol[\[Lambda]3], Lambda3]; @@ -43,13 +37,6 @@ TestEquality[ToValidCSymbolString[a[b,c]], "abc"]; TestEquality[ToValidCSymbolString[a[b,c][d]], "abcd"]; -(* SARAH sometimes appends indices [i1,i2] to express that a type is - of type matrix. These indices should be stripped before - conversion. *) -TestEquality[ToValidCSymbolString[a[Susyno`LieGroups`i1,SARAH`i2]], "a"]; -TestEquality[ToValidCSymbolString[a[b][Susyno`LieGroups`i1,SARAH`i2]], "ab"]; -TestEquality[ToValidCSymbolString[a[b,c][Susyno`LieGroups`i1,SARAH`i2]], "abc"]; - Print["testing RValueToCFormString[] ..."]; TestEquality[RValueToCFormString[1], "1"]; @@ -70,13 +57,6 @@ TestEquality[RValueToCFormString[trace[Adj[A]]], "(A.adjoint()).trace()"]; TestEquality[RValueToCFormString[trace[A Adj[A]]], "(A*A.adjoint()).trace()"]; -(* SARAH sometimes appends indices [i1,i2] to express that a type is - of type matrix. These indices should be stripped before - conversion. *) -TestEquality[RValueToCFormString[a[Susyno`LieGroups`i1,SARAH`i2]], "a"]; -TestEquality[RValueToCFormString[a[b][Susyno`LieGroups`i1,SARAH`i2]], "a(b)"]; -TestEquality[RValueToCFormString[a[b,c][Susyno`LieGroups`i1,SARAH`i2]], "a(b,c)"]; - (* test greek symbol conversion *) TestEquality[RValueToCFormString[\[Mu]], "Mu"]; TestEquality[RValueToCFormString[SARAH`B[\[Mu]]], "BMu"]; From 6496f7aea3fb82e9256d157d8aa90d0436a1caf1 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Wed, 27 Jul 2016 11:17:13 +0200 Subject: [PATCH 19/64] fix Transpose warning --- meta/WriteOut.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/meta/WriteOut.m b/meta/WriteOut.m index 24c4b1967..4913c9c64 100644 --- a/meta/WriteOut.m +++ b/meta/WriteOut.m @@ -343,6 +343,8 @@ {{block, {Re[parameter]}}, {CreateImaginaryPartBlockName[block], {Im[parameter]}}} ]; +SortBlocks[{}] := {}; + SortBlocks[modelParameters_List] := Module[{reformed, allBlocks, collected}, reformed = LesHouchesNameToFront /@ modelParameters; From 46395938abe8b24eea14119421b50f8a51b35d89 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Wed, 27 Jul 2016 11:21:51 +0200 Subject: [PATCH 20/64] simplify functions --- meta/WriteOut.m | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/meta/WriteOut.m b/meta/WriteOut.m index 4913c9c64..1ceffe4b9 100644 --- a/meta/WriteOut.m +++ b/meta/WriteOut.m @@ -564,19 +564,17 @@ WriteSLHABlock[{blockName, parameter}, scale]; WriteSLHAModelParametersBlocks[] := - Module[{result = "", modelParameters, blocks}, + Module[{modelParameters, blocks}, modelParameters = GetSLHAModelParameters[]; blocks = SortBlocks[modelParameters]; - (result = result <> WriteSLHABlock[#])& /@ blocks; - Return[result]; + StringJoin[WriteSLHABlock /@ blocks] ]; WriteSLHAPhasesBlocks[] := - Module[{result = "", phases, blocks}, + Module[{phases, blocks}, phases = GetSLHAPhases[]; blocks = SortBlocks[phases]; - (result = result <> WriteSLHABlock[#])& /@ blocks; - Return[result] + StringJoin[WriteSLHABlock /@ blocks] ]; GetExtraSLHAOutputBlockScale[scale_ /; scale === FlexibleSUSY`NoScale] := ""; From 241209c28e8b9fee561036f5bea0b44dc303f7d0 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Wed, 27 Jul 2016 12:32:17 +0200 Subject: [PATCH 21/64] use cout as default for print() function --- src/standard_model.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/standard_model.hpp b/src/standard_model.hpp index 84b59bfbf..7da0dce87 100644 --- a/src/standard_model.hpp +++ b/src/standard_model.hpp @@ -113,7 +113,7 @@ class Standard_model : public Beta_function { virtual Eigen::ArrayXd beta() const; virtual Eigen::ArrayXd get() const; - void print(std::ostream&) const; + void print(std::ostream& out = std::cout) const; virtual void set(const Eigen::ArrayXd&); Standard_model calc_beta() const; From 588ea6f6bb6623ea791d422fd9ceea6fc058dd3b Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Wed, 27 Jul 2016 19:03:37 +0200 Subject: [PATCH 22/64] correcting doxygen comments --- templates/slha_io.cpp.in | 10 +++++++--- templates/slha_io.hpp.in | 2 ++ templates/spectrum_generator_interface.hpp.in | 2 +- templates/utilities.cpp.in | 1 + 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/templates/slha_io.cpp.in b/templates/slha_io.cpp.in index 087734f35..9b4fc9b89 100644 --- a/templates/slha_io.cpp.in +++ b/templates/slha_io.cpp.in @@ -240,6 +240,8 @@ void @ModelName@_slha_io::fill(@ModelName@_input_parameters& input) const /** * Reads DR-bar parameters from a SLHA output file. + * + * @param model model class to be filled */ void @ModelName@_slha_io::fill_drbar_parameters(@ModelName@_mass_eigenstates& model) const { @@ -251,6 +253,8 @@ void @ModelName@_slha_io::fill_drbar_parameters(@ModelName@_mass_eigenstates& mo /** * Reads DR-bar parameters, pole masses and mixing matrices (in * Haber-Kane convention) from a SLHA output file. + * + * @param model model class to be filled */ void @ModelName@_slha_io::fill(@ModelName@_mass_eigenstates& model) const { @@ -266,7 +270,7 @@ void @ModelName@_slha_io::fill(@ModelName@_mass_eigenstates& model) const * Fill struct of extra physical input parameters from SLHA object * (FlexibleSUSYInput block) * - * @param settings struct of physical input parameters + * @param input struct of physical non-SLHA input parameters */ void @ModelName@_slha_io::fill(Physical_input& input) const { @@ -277,7 +281,7 @@ void @ModelName@_slha_io::fill(Physical_input& input) const * Fill struct of spectrum generator settings from SLHA object * (FlexibleSUSY block) * - * @param settings struct of spectrum generator settings + * @param settings struct of spectrum generator settings to be filled */ void @ModelName@_slha_io::fill(Spectrum_generator_settings& settings) const { @@ -297,7 +301,7 @@ void @ModelName@_slha_io::fill_extpar_tuple(@ModelName@_input_parameters& input, } /** - * Reads pole masses and mixing matrices from a SLHA output file. + * Reads pole masses and mixing matrices from a SLHA output file to be filled. */ void @ModelName@_slha_io::fill_physical(@ModelName@_physical& physical) const { diff --git a/templates/slha_io.hpp.in b/templates/slha_io.hpp.in index 09d1be6ae..0a3738e20 100644 --- a/templates/slha_io.hpp.in +++ b/templates/slha_io.hpp.in @@ -172,6 +172,8 @@ void @ModelName@_slha_io::set_model_parameters(const @ModelName@_slha& model) * Writes extra SLHA blocks * * @param model model class + * @param scales struct of boundary condition scales + * @param observables struct of observables */ template void @ModelName@_slha_io::set_extra( diff --git a/templates/spectrum_generator_interface.hpp.in b/templates/spectrum_generator_interface.hpp.in index f89b6c7d3..cfe2634c6 100644 --- a/templates/spectrum_generator_interface.hpp.in +++ b/templates/spectrum_generator_interface.hpp.in @@ -110,7 +110,7 @@ protected: /** * Setup spectrum generator from a Spectrum_generator_settings object. * - * @param settings spectrum generator settings + * @param settings_ spectrum generator settings */ template void @ModelName@_spectrum_generator_interface::set_settings( diff --git a/templates/utilities.cpp.in b/templates/utilities.cpp.in index a80d4dfe9..34dd8b67f 100644 --- a/templates/utilities.cpp.in +++ b/templates/utilities.cpp.in @@ -143,6 +143,7 @@ namespace @ModelName@_database { * @param model mass eigenstates * @param qedqcd pointer to low-enregy data. If zero, the low-enregy * data will not be written. + * @param physical_input pointer to physical non-SLHA input parameters * @param observables pointer to observables struct. If zero, the * observables will not be written. */ From 7994baeb232dd8117cb362e9fd5f2a3419287932 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Wed, 3 Aug 2016 22:19:02 +0200 Subject: [PATCH 23/64] use lock_guard instead of manually unlock the mutex which is safer for example if an exception is thrown --- meta/SelfEnergies.m | 48 +++++++++++++++---------------- templates/mass_eigenstates.cpp.in | 4 +-- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/meta/SelfEnergies.m b/meta/SelfEnergies.m index b189186a7..00226a703 100644 --- a/meta/SelfEnergies.m +++ b/meta/SelfEnergies.m @@ -589,34 +589,34 @@ double s1s = 0., s2s = 0., s1t = 0., s2t = 0.; double s1b = 0., s2b = 0., s1tau = 0., s2tau = 0.; -LOCK_MUTEX(); - if (HIGGS_2LOOP_CORRECTION_AT_AS) { + LOCK_MUTEX(); tadpole_higgs_2loop_at_as_mssm( &rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, &amu, &tanb, &vev2, &gs, &s1s, &s2s); } if (HIGGS_2LOOP_CORRECTION_AT_AT) { + LOCK_MUTEX(); tadpole_higgs_2loop_at_at_mssm( &rmtsq, &rmbsq, &mAsq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, &s1t, &s2t); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { + LOCK_MUTEX(); tadpole_higgs_2loop_ab_as_mssm( &rmbsq, &mg, &msb1sq, &msb2sq, &sxb, &cxb, &scalesq, &amu, &cotbeta, &vev2, &gs, &s2b, &s1b); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { + LOCK_MUTEX(); tadpole_higgs_2loop_atau_atau_mssm( &rmtausq, &mAsq, &msnusq, &mstau1sq, &mstau2sq, &sintau, &costau, &scalesq, &amu, &tanb, &vev2, &s1tau, &s2tau); } -UNLOCK_MUTEX(); - if (!std::isnan(s1s * s1t * s1b * s1tau * s2s * s2t * s2b * s2tau)) { result[0] = (- s1s - s1t - s1b - s1tau) * " <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; result[1] = (- s2s - s2t - s2b - s2tau) * " <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; @@ -690,34 +690,34 @@ double s1s = 0., s2s = 0., s1t = 0., s2t = 0.; double s1b = 0., s2b = 0., s1tau = 0., s2tau = 0.; -LOCK_MUTEX(); - if (HIGGS_2LOOP_CORRECTION_AT_AS) { + LOCK_MUTEX(); tadpole_higgs_2loop_at_as_mssm( &rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, &amu, &tanb, &vev2, &gs, &s1s, &s2s); } if (HIGGS_2LOOP_CORRECTION_AT_AT) { + LOCK_MUTEX(); tadpole_higgs_2loop_at_at_mssm( &rmtsq, &rmbsq, &mAsq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, &s1t, &s2t); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { + LOCK_MUTEX(); tadpole_higgs_2loop_ab_as_mssm( &rmbsq, &mg, &msb1sq, &msb2sq, &sxb, &cxb, &scalesq, &amu, &cotbeta, &vev2, &gs, &s2b, &s1b); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { + LOCK_MUTEX(); tadpole_higgs_2loop_atau_atau_mssm( &rmtausq, &mAsq, &msnusq, &mstau1sq, &mstau2sq, &sintau, &costau, &scalesq, &amu, &tanb, &vev2, &s1tau, &s2tau); } -UNLOCK_MUTEX(); - // rescale T1 to get TS const double sss = s1s * vev * cosb / " <> svevStr <> "; const double ssb = s1b * vev * sinb / " <> svevStr <> "; @@ -887,9 +887,8 @@ double p2s = 0., p2w = 0., p2b = 0., p2tau = 0.; int scheme = 0; // chooses DR-bar scheme from slavich et al -LOCK_MUTEX(); - if (HIGGS_2LOOP_CORRECTION_AT_AS) { + LOCK_MUTEX(); self_energy_higgs_2loop_at_as_mssm( &rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, &amu, &tanb, &vev2, &gs, &scheme, &s11s, &s22s, &s12s); @@ -899,6 +898,7 @@ } if (HIGGS_2LOOP_CORRECTION_AB_AS) { + LOCK_MUTEX(); self_energy_higgs_2loop_ab_as_mssm( &rmbsq, &mg, &msb1sq, &msb2sq, &sxb, &cxb, &scalesq, &amu, &cotbeta, &vev2, &gs, &scheme, &s22b, &s11b, &s12b); @@ -908,6 +908,7 @@ } if (HIGGS_2LOOP_CORRECTION_AT_AT) { + LOCK_MUTEX(); self_energy_higgs_2loop_at_at_mssm( &rmtsq, &rmbsq, &fmasq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, &s11w, @@ -918,6 +919,7 @@ } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { + LOCK_MUTEX(); self_energy_higgs_2loop_atau_atau_mssm( &rmtausq, &fmasq, &msnusq, &mstau1sq, &mstau2sq, &sintau, &costau, &scalesq, &amu, &tanb, &vev2, &scheme, &s11tau, @@ -927,8 +929,6 @@ &costau, &scalesq, &amu, &tanb, &vev2, &p2tau); } -UNLOCK_MUTEX(); - // calculate dMA, which is the two loop correction to take the DRbar // psuedoscalar mass ( = -2m3sq/sin(2beta)) to the pole mass (as in // Eq. (8) of hep-ph/0305127) @@ -1014,34 +1014,34 @@ double p2s = 0., p2w = 0., p2b = 0., p2tau = 0.; -LOCK_MUTEX(); - if (HIGGS_2LOOP_CORRECTION_AT_AS) { + LOCK_MUTEX(); self_energy_pseudoscalar_2loop_at_as_mssm( &rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, &amu, &tanb, &vev2, &gs, &p2s); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { + LOCK_MUTEX(); self_energy_pseudoscalar_2loop_ab_as_mssm( &rmbsq, &mg, &msb1sq, &msb2sq, &sxb, &cxb, &scalesq, &amu, &cotbeta, &vev2, &gs, &p2b); } if (HIGGS_2LOOP_CORRECTION_AT_AT) { + LOCK_MUTEX(); self_energy_pseudoscalar_2loop_at_at_mssm( &rmtsq, &rmbsq, &fmasq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, &p2w); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { + LOCK_MUTEX(); self_energy_pseudoscalar_2loop_atau_atau_mssm( &rmtausq, &fmasq, &msnusq, &mstau1sq, &mstau2sq, &sintau, &costau, &scalesq, &amu, &tanb, &vev2, &p2tau); } -UNLOCK_MUTEX(); - const double dMA = p2s + p2w + p2b + p2tau; // see hep-ph/0105096 Eq. (9) @@ -1140,15 +1140,15 @@ double DMS[3][3] = {{ 0. }}, DMP[3][3] = {{ 0. }}; double DMSB[3][3] = {{ 0. }}, DMPB[3][3] = {{ 0. }}; -LOCK_MUTEX(); - if (HIGGS_2LOOP_CORRECTION_AT_AS) { + LOCK_MUTEX(); self_energy_higgs_2loop_at_as_nmssm( &loop, &rmt, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, &tanb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { + LOCK_MUTEX(); self_energy_higgs_2loop_ab_as_nmssm( &loop, &rmb, &mg, &msb1sq, &msb2sq, &sxb, &cxb, &scalesq, &cotb, &vevS, &lamS, &svevS, &as, &DMSB, &DMPB); @@ -1158,6 +1158,7 @@ // should be OK for MSSM states when S state is close to decoupled if (HIGGS_2LOOP_CORRECTION_AT_AT) { + LOCK_MUTEX(); self_energy_higgs_2loop_at_at_mssm( &rmtsq, &rmbsq, &fmasq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, @@ -1168,6 +1169,7 @@ } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { + LOCK_MUTEX(); self_energy_higgs_2loop_atau_atau_mssm( &rmtausq, &fmasq, &msnusq, &mstau1sq, &mstau2sq, &sintau, &costau, &scalesq, &amu, &tanb, &vev2, &scheme, &s11tau, @@ -1177,8 +1179,6 @@ &costau, &scalesq, &amu, &tanb, &vev2, &p2tau); } -UNLOCK_MUTEX(); - // Make appropriate substitutions for elements following 0907.4682 // bottom of page 9 std::swap(DMSB[0][0], DMSB[1][1]); @@ -1291,15 +1291,15 @@ double DMS[3][3] = {{ 0. }}, DMP[3][3] = {{ 0. }}; double DMSB[3][3] = {{ 0. }}, DMPB[3][3] = {{ 0. }}; -LOCK_MUTEX(); - if (HIGGS_2LOOP_CORRECTION_AT_AS) { + LOCK_MUTEX(); self_energy_higgs_2loop_at_as_nmssm( &loop, &rmt, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, &tanb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { + LOCK_MUTEX(); self_energy_higgs_2loop_ab_as_nmssm( &loop, &rmb, &mg, &msb1sq, &msb2sq, &sxb, &cxb, &scalesq, &cotb, &vevS, &lamS, &svevS, &as, &DMSB, &DMPB); @@ -1309,19 +1309,19 @@ // should be OK for MSSM states when S state is close to decoupled if (HIGGS_2LOOP_CORRECTION_AT_AT) { + LOCK_MUTEX(); self_energy_pseudoscalar_2loop_at_at_mssm( &rmtsq, &rmbsq, &fmasq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, &p2w); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { + LOCK_MUTEX(); self_energy_pseudoscalar_2loop_atau_atau_mssm( &rmtausq, &fmasq, &msnusq, &mstau1sq, &mstau2sq, &sintau, &costau, &scalesq, &amu, &tanb, &vev2, &p2tau); } -UNLOCK_MUTEX(); - // Make appropriate substitutions for elements following 0907.4682 // bottom of page 9 std::swap(DMPB[0][0], DMPB[1][1]); diff --git a/templates/mass_eigenstates.cpp.in b/templates/mass_eigenstates.cpp.in index d4201a28e..ac04eab34 100644 --- a/templates/mass_eigenstates.cpp.in +++ b/templates/mass_eigenstates.cpp.in @@ -77,11 +77,9 @@ using namespace @ModelName@_info; #ifdef ENABLE_THREADS std::mutex CLASSNAME::mtx_fortran; - #define LOCK_MUTEX() mtx_fortran.lock() - #define UNLOCK_MUTEX() mtx_fortran.unlock() + #define LOCK_MUTEX() std::lock_guard _lock_guard(mtx_fortran) #else #define LOCK_MUTEX() - #define UNLOCK_MUTEX() #endif CLASSNAME::@ModelName@_mass_eigenstates(const @ModelName@_input_parameters& input_) From 337a71f3ed2d732adaff6298cee7016c1366a8d1 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 4 Aug 2016 16:38:45 +0200 Subject: [PATCH 24/64] put translation of exceptions -> problems into a function which avoids code duplication --- .../high_scale_spectrum_generator.hpp.in | 22 +---------- templates/low_scale_spectrum_generator.hpp.in | 22 +---------- templates/spectrum_generator_interface.hpp.in | 38 +++++++++++++++++++ 3 files changed, 42 insertions(+), 40 deletions(-) diff --git a/templates/high_scale_spectrum_generator.hpp.in b/templates/high_scale_spectrum_generator.hpp.in index edc3e63c1..ea08d9469 100644 --- a/templates/high_scale_spectrum_generator.hpp.in +++ b/templates/high_scale_spectrum_generator.hpp.in @@ -164,26 +164,8 @@ void @ModelName@_spectrum_generator::run(const softsusy::QedQcd& qedqcd, if (!is_zero(this->parameter_output_scale)) { model.run_to(this->parameter_output_scale); } - } catch (const NoConvergenceError&) { - model.get_problems().flag_no_convergence(); - } catch (const NonPerturbativeRunningError& error) { - model.get_problems().flag_no_perturbative(); - const int parameter_index = error.get_parameter_index(); - const std::string parameter_name = - parameter_index < 0 ? "Q" : @ModelName@_info::parameter_names[parameter_index]; - const double parameter_value = error.get_parameter_value(); - const double scale = error.get_scale(); - model.get_problems().flag_non_perturbative_parameter(parameter_name, parameter_value, scale, -1); - } catch (const NoRhoConvergenceError&) { - model.get_problems().flag_no_rho_convergence(); - } catch (const Error& error) { - model.get_problems().flag_thrown(error.what()); - } catch (const std::string& str) { - model.get_problems().flag_thrown(str); - } catch (const char* str) { - model.get_problems().flag_thrown(str); - } catch (const std::exception& error) { - model.get_problems().flag_thrown(error.what()); + } catch (...) { + this->translate_exception_to_problem(model); } } diff --git a/templates/low_scale_spectrum_generator.hpp.in b/templates/low_scale_spectrum_generator.hpp.in index 56bb172fa..4d2a0ddf2 100644 --- a/templates/low_scale_spectrum_generator.hpp.in +++ b/templates/low_scale_spectrum_generator.hpp.in @@ -154,26 +154,8 @@ void @ModelName@_spectrum_generator::run(const softsusy::QedQcd& qedqcd, if (!is_zero(this->parameter_output_scale)) { model.run_to(this->parameter_output_scale); } - } catch (const NoConvergenceError&) { - model.get_problems().flag_no_convergence(); - } catch (const NonPerturbativeRunningError& error) { - model.get_problems().flag_no_perturbative(); - const int parameter_index = error.get_parameter_index(); - const std::string parameter_name = - parameter_index < 0 ? "Q" : @ModelName@_info::parameter_names[parameter_index]; - const double parameter_value = error.get_parameter_value(); - const double scale = error.get_scale(); - model.get_problems().flag_non_perturbative_parameter(parameter_name, parameter_value, scale, -1); - } catch (const NoRhoConvergenceError&) { - model.get_problems().flag_no_rho_convergence(); - } catch (const Error& error) { - model.get_problems().flag_thrown(error.what()); - } catch (const std::string& str) { - model.get_problems().flag_thrown(str); - } catch (const char* str) { - model.get_problems().flag_thrown(str); - } catch (const std::exception& error) { - model.get_problems().flag_thrown(error.what()); + } catch (...) { + this->translate_exception_to_problem(model); } } diff --git a/templates/spectrum_generator_interface.hpp.in b/templates/spectrum_generator_interface.hpp.in index cfe2634c6..ad42d43a1 100644 --- a/templates/spectrum_generator_interface.hpp.in +++ b/templates/spectrum_generator_interface.hpp.in @@ -105,6 +105,8 @@ protected: Spectrum_generator_settings settings; double parameter_output_scale; ///< output scale for running parameters double reached_precision; ///< the precision that was reached + + void translate_exception_to_problem(@ModelName@& model); }; /** @@ -165,6 +167,42 @@ void @ModelName@_spectrum_generator_interface::write_spectrum(const std::stri plotter.write_to_file(filename); } +/** + * Flags problems in the given model class from the current pending + * exception. + * + * This function assumes that there is an active exception. + * + * @param model model class + */ +template +void @ModelName@_spectrum_generator_interface::translate_exception_to_problem(@ModelName@& model) +{ + try { + throw; + } catch (const NoConvergenceError&) { + model.get_problems().flag_no_convergence(); + } catch (const NonPerturbativeRunningError& error) { + model.get_problems().flag_no_perturbative(); + const int parameter_index = error.get_parameter_index(); + const std::string parameter_name = + parameter_index < 0 ? "Q" : @ModelName@_info::parameter_names[parameter_index]; + const double parameter_value = error.get_parameter_value(); + const double scale = error.get_scale(); + model.get_problems().flag_non_perturbative_parameter(parameter_name, parameter_value, scale, -1); + } catch (const NoRhoConvergenceError&) { + model.get_problems().flag_no_rho_convergence(); + } catch (const Error& error) { + model.get_problems().flag_thrown(error.what()); + } catch (const std::string& str) { + model.get_problems().flag_thrown(str); + } catch (const char* str) { + model.get_problems().flag_thrown(str); + } catch (const std::exception& error) { + model.get_problems().flag_thrown(error.what()); + } +} + } // namespace flexiblesusy #endif From fd185d355fede01abed85ef50a194ce3698b91d0 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 4 Aug 2016 19:35:04 +0200 Subject: [PATCH 25/64] adding C++-11 function returning tadpole equations --- templates/mass_eigenstates.cpp.in | 19 +++++++++++++++++-- templates/mass_eigenstates.hpp.in | 3 +++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/templates/mass_eigenstates.cpp.in b/templates/mass_eigenstates.cpp.in index ac04eab34..282cc8aa3 100644 --- a/templates/mass_eigenstates.cpp.in +++ b/templates/mass_eigenstates.cpp.in @@ -227,10 +227,12 @@ Problems<@ModelName@_info::NUMBER_OF_PARTICLES>& CLASSNAME::get_problems() /** * Method which calculates the tadpoles at the current loop order. * - * @param tadpole array of tadpole + * @return array of tadpoles */ -void CLASSNAME::tadpole_equations(double tadpole[number_of_ewsb_equations]) const +std::array CLASSNAME::tadpole_equations() const { + std::array tadpole{}; + @calculateTreeLevelTadpoles@ if (ewsb_loop_order > 0) { @calculateOneLoopTadpoles@ @@ -238,6 +240,19 @@ void CLASSNAME::tadpole_equations(double tadpole[number_of_ewsb_equations]) cons @calculateTwoLoopTadpoles@ } } + + return tadpole; +} + +/** + * Method which calculates the tadpoles at the current loop order. + * + * @param tadpole array of tadpole + */ +void CLASSNAME::tadpole_equations(double tadpole[number_of_ewsb_equations]) const +{ + const auto tadpole_(tadpole_equations()); + std::copy(tadpole_.begin(), tadpole_.end(), tadpole); } /** diff --git a/templates/mass_eigenstates.hpp.in b/templates/mass_eigenstates.hpp.in index 72765460f..4a7d9c352 100644 --- a/templates/mass_eigenstates.hpp.in +++ b/templates/mass_eigenstates.hpp.in @@ -39,6 +39,7 @@ #include "problems.hpp" #include "config.h" +#include #include #include @@ -118,6 +119,8 @@ public: /// calculates the tadpoles at current loop order void tadpole_equations(double[number_of_ewsb_equations]) const; + /// calculates the tadpoles at current loop order + std::array tadpole_equations() const; @thirdGenerationHelperPrototypes@ @twoLoopSelfEnergyPrototypes@ From 69a38f75e9920bc4b4130ff2703eef3194d1bca4 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 4 Aug 2016 20:05:39 +0200 Subject: [PATCH 26/64] modernise EWSB initial guess to return a C++ std::array --- templates/mass_eigenstates.cpp.in | 13 ++++++++----- templates/mass_eigenstates.hpp.in | 4 ++-- test/test_CMSSM_model.cpp | 3 +-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/templates/mass_eigenstates.cpp.in b/templates/mass_eigenstates.cpp.in index 282cc8aa3..0260e30c0 100644 --- a/templates/mass_eigenstates.cpp.in +++ b/templates/mass_eigenstates.cpp.in @@ -305,8 +305,7 @@ int CLASSNAME::solve_ewsb_iteratively() }; const std::size_t number_of_solvers = sizeof(solvers)/sizeof(*solvers); - double x_init[number_of_ewsb_equations] = { 0. }; - ewsb_initial_guess(x_init); + const auto x_init(ewsb_initial_guess()); #ifdef ENABLE_VERBOSE std::cout << "Solving EWSB equations ...\n" @@ -357,10 +356,10 @@ int CLASSNAME::solve_ewsb_iteratively() */ int CLASSNAME::solve_ewsb_iteratively_with( EWSB_solver* solver, - const double x_init[number_of_ewsb_equations] + const std::array& x_init ) { - const int status = solver->solve(x_init); + const int status = solver->solve(&x_init[0]); @setEWSBSolution@ @@ -412,9 +411,13 @@ int CLASSNAME::solve_ewsb() return solve_ewsb_iteratively(ewsb_loop_order); } -void CLASSNAME::ewsb_initial_guess(double x_init[number_of_ewsb_equations]) +std::array CLASSNAME::ewsb_initial_guess() { + std::array x_init{}; + @ewsbInitialGuess@ + + return x_init; } /** diff --git a/templates/mass_eigenstates.hpp.in b/templates/mass_eigenstates.hpp.in index 4a7d9c352..427160728 100644 --- a/templates/mass_eigenstates.hpp.in +++ b/templates/mass_eigenstates.hpp.in @@ -172,9 +172,9 @@ private: int solve_ewsb_iteratively(); int solve_ewsb_iteratively(unsigned); - int solve_ewsb_iteratively_with(EWSB_solver*, const double[number_of_ewsb_equations]); + int solve_ewsb_iteratively_with(EWSB_solver*, const std::array&); int solve_ewsb_tree_level_custom(); - void ewsb_initial_guess(double[number_of_ewsb_equations]); + std::array ewsb_initial_guess(); int ewsb_step(double[number_of_ewsb_equations]) const; static int ewsb_step(const gsl_vector*, void*, gsl_vector*); static int tadpole_equations(const gsl_vector*, void*, gsl_vector*); diff --git a/test/test_CMSSM_model.cpp b/test/test_CMSSM_model.cpp index 3bf3f992a..f66415111 100644 --- a/test/test_CMSSM_model.cpp +++ b/test/test_CMSSM_model.cpp @@ -1352,8 +1352,7 @@ void test_ewsb_solvers(CMSSM model, MssmSoftsusy softSusy) ewsb_iteration_precision) }; - double x_init[2]; - model.ewsb_initial_guess(x_init); + const auto x_init(model.ewsb_initial_guess()); // starting values for Mu, BMu const double Mu_0 = model.get_Mu(); From a58e267908127a1ed21b76c636bbbff31d82cdc1 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 4 Aug 2016 20:19:12 +0200 Subject: [PATCH 27/64] adding is_finite helper function for std::array --- src/numerics2.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/numerics2.hpp b/src/numerics2.hpp index ed8db7e0e..07d611091 100644 --- a/src/numerics2.hpp +++ b/src/numerics2.hpp @@ -19,6 +19,7 @@ #ifndef NUMERICS_HPP #define NUMERICS_HPP +#include #include #include #include @@ -64,6 +65,12 @@ bool is_finite(const double v[N]) return is_finite; } +template +bool is_finite(const std::array& v) +{ + return is_finite(&v[0]); +} + } // namespace flexiblesusy #endif From 6b2bcc24d4b89925543694f6d6cfb7fb17eb05f0 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 4 Aug 2016 20:19:49 +0200 Subject: [PATCH 28/64] using more efficient version of tadpole_equations() --- templates/mass_eigenstates.cpp.in | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/templates/mass_eigenstates.cpp.in b/templates/mass_eigenstates.cpp.in index 0260e30c0..1a4ca678f 100644 --- a/templates/mass_eigenstates.cpp.in +++ b/templates/mass_eigenstates.cpp.in @@ -282,14 +282,12 @@ int CLASSNAME::tadpole_equations(const gsl_vector* x, void* params, gsl_vector* if (ewsb_loop_order > 0) model->calculate_DRbar_masses(); - double tadpole[number_of_ewsb_equations] = { 0. }; - - model->tadpole_equations(tadpole); + const auto tadpole(model->tadpole_equations()); for (std::size_t i = 0; i < number_of_ewsb_equations; ++i) gsl_vector_set(f, i, tadpole[i]); - return is_finite(tadpole) ? GSL_SUCCESS : GSL_EDOM; + return is_finite(tadpole) ? GSL_SUCCESS : GSL_EDOM; } /** From 705fc2e1a0629b67367a46d7afe8953d8bbfe2f0 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 4 Aug 2016 21:00:56 +0200 Subject: [PATCH 29/64] modernise ewsb_step() function --- meta/FlexibleSUSY.m | 2 +- templates/mass_eigenstates.cpp.in | 25 +++++++++++++++---------- templates/mass_eigenstates.hpp.in | 9 ++++++++- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/meta/FlexibleSUSY.m b/meta/FlexibleSUSY.m index 041f59b01..26079f86b 100644 --- a/meta/FlexibleSUSY.m +++ b/meta/FlexibleSUSY.m @@ -1131,7 +1131,7 @@ corresponding tadpole is real or imaginary (only in models with CP "@solveTreeLevelEWSBviaSoftHiggsMasses@" -> IndentText[WrapLines[solveTreeLevelEWSBviaSoftHiggsMasses]], "@solveEWSBTemporarily@" -> IndentText[solveEWSBTemporarily], "@EWSBSolvers@" -> IndentText[IndentText[EWSBSolvers]], - "@fillArrayWithEWSBParameters@" -> IndentText[IndentText[fillArrayWithEWSBParameters]], + "@fillArrayWithEWSBParameters@" -> IndentText[fillArrayWithEWSBParameters], "@solveEwsbWithTadpoles@" -> IndentText[WrapLines[solveEwsbWithTadpoles]], "@getEWSBParametersFromGSLVector@" -> IndentText[getEWSBParametersFromGSLVector], "@setEWSBParametersFromLocalCopies@" -> IndentText[setEWSBParametersFromLocalCopies], diff --git a/templates/mass_eigenstates.cpp.in b/templates/mass_eigenstates.cpp.in index 1a4ca678f..ba167f96d 100644 --- a/templates/mass_eigenstates.cpp.in +++ b/templates/mass_eigenstates.cpp.in @@ -427,10 +427,10 @@ std::array CLASSNAME::ewsb_initial_ * @return GSL_SUCCESS if new EWSB output parameters are finite, * GSL_EDOM otherwise. */ -int CLASSNAME::ewsb_step(double ewsb_parameters[number_of_ewsb_equations]) const +std::array CLASSNAME::ewsb_step() const { - int error; double tadpole[number_of_ewsb_equations] = { 0. }; + std::array ewsb_parameters{}; if (ewsb_loop_order > 0) { @calculateOneLoopTadpolesNoStruct@ @@ -441,14 +441,12 @@ int CLASSNAME::ewsb_step(double ewsb_parameters[number_of_ewsb_equations]) const @solveEwsbWithTadpoles@ - if (is_finite) { - error = GSL_SUCCESS; + if (!is_finite) + throw EEWSBStepFailed(); + @fillArrayWithEWSBParameters@ - } else { - error = GSL_EDOM; - } - return error; + return ewsb_parameters; } /** @@ -478,10 +476,17 @@ int CLASSNAME::ewsb_step(const gsl_vector* x, void* params, gsl_vector* f) if (ewsb_loop_order > 0) model->calculate_DRbar_masses(); - double ewsb_parameters[number_of_ewsb_equations] = + std::array ewsb_parameters = @ewsbParametersInitializationList@; - const int status = model->ewsb_step(ewsb_parameters); + int status = GSL_SUCCESS; + + try { + ewsb_parameters = model->ewsb_step(); + status = GSL_SUCCESS; + } catch (...) { + status = GSL_EDOM; + } for (std::size_t i = 0; i < number_of_ewsb_equations; ++i) gsl_vector_set(f, i, ewsb_parameters[i]); diff --git a/templates/mass_eigenstates.hpp.in b/templates/mass_eigenstates.hpp.in index 427160728..1e384e33e 100644 --- a/templates/mass_eigenstates.hpp.in +++ b/templates/mass_eigenstates.hpp.in @@ -36,6 +36,7 @@ #include "@ModelName@_physical.hpp" #include "@ModelName@_info.hpp" #include "two_loop_corrections.hpp" +#include "error.hpp" #include "problems.hpp" #include "config.h" @@ -136,6 +137,12 @@ private: unsigned ewsb_loop_order; }; + class EEWSBStepFailed : public Error { + public: + virtual ~EEWSBStepFailed() {} + virtual std::string what() const { return "Could not perform EWSB step."; } + }; + #ifdef ENABLE_THREADS struct Thread { typedef void(@ModelName@_mass_eigenstates::*Memfun_t)(); @@ -175,7 +182,7 @@ private: int solve_ewsb_iteratively_with(EWSB_solver*, const std::array&); int solve_ewsb_tree_level_custom(); std::array ewsb_initial_guess(); - int ewsb_step(double[number_of_ewsb_equations]) const; + std::array ewsb_step() const; static int ewsb_step(const gsl_vector*, void*, gsl_vector*); static int tadpole_equations(const gsl_vector*, void*, gsl_vector*); void copy_DRbar_masses_to_pole_masses(); From b24c1c97a80664eae67b2032101b694115dec4bf Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 4 Aug 2016 22:48:17 +0200 Subject: [PATCH 30/64] adding helper function returning comma separated list of EWSB pars --- meta/EWSB.m | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/meta/EWSB.m b/meta/EWSB.m index c74377545..a4ee18178 100644 --- a/meta/EWSB.m +++ b/meta/EWSB.m @@ -45,6 +45,9 @@ CreateEWSBParametersInitializationList::usage="Creates initialization list with EWSB output parameters"; +CreateEWSBParametersInitializationComma::usage="Creates initialization +list with EWSB output parameters"; + Begin["`Private`"]; DebugPrint[msg___] := @@ -785,17 +788,13 @@ Return[result]; ]; +CreateEWSBParametersInitializationComma[{}] := ""; + +CreateEWSBParametersInitializationComma[parameters_List] := + Utils`StringJoinWithSeparator[ConvertToReal /@ parameters, ", "]; + CreateEWSBParametersInitializationList[parameters_List] := - Module[{result = "{}"}, - If[Length[parameters] > 0, - result = Utils`StringJoinWithSeparator[ - ConvertToReal /@ parameters, - ", " - ]; - result = "{ " <> result <> " }"; - ]; - result - ]; + "{" <> CreateEWSBParametersInitializationComma[parameters] <> "}"; End[]; From 2b3348465181a0485f96b095851579019745776c Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 4 Aug 2016 22:48:40 +0200 Subject: [PATCH 31/64] adding token for list of comma separated EWSB parameters --- meta/FlexibleSUSY.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/meta/FlexibleSUSY.m b/meta/FlexibleSUSY.m index 26079f86b..475f5cb9f 100644 --- a/meta/FlexibleSUSY.m +++ b/meta/FlexibleSUSY.m @@ -921,6 +921,7 @@ corresponding tadpole is real or imaginary (only in models with CP getEWSBParametersFromGSLVector = "", setEWSBParametersFromLocalCopies = "", ewsbParametersInitializationList = "", + ewsbParametersInitializationComma = "", setEWSBParametersFromGSLVector = "", convertMixingsToSLHAConvention = "", convertMixingsToHKConvention = "", @@ -1059,6 +1060,7 @@ corresponding tadpole is real or imaginary (only in models with CP getEWSBParametersFromGSLVector = EWSB`GetEWSBParametersFromGSLVector[parametersFixedByEWSB, freePhases, "x"]; setEWSBParametersFromLocalCopies = EWSB`SetEWSBParametersFromLocalCopies[parametersFixedByEWSB, "model"]; ewsbParametersInitializationList = EWSB`CreateEWSBParametersInitializationList[parametersFixedByEWSB]; + ewsbParametersInitializationComma = EWSB`CreateEWSBParametersInitializationComma[parametersFixedByEWSB]; reorderDRbarMasses = TreeMasses`ReorderGoldstoneBosons[""]; reorderPoleMasses = TreeMasses`ReorderGoldstoneBosons["PHYSICAL"]; checkPoleMassesForTachyons = TreeMasses`CheckPoleMassesForTachyons["PHYSICAL"]; @@ -1137,6 +1139,7 @@ corresponding tadpole is real or imaginary (only in models with CP "@setEWSBParametersFromLocalCopies@" -> IndentText[setEWSBParametersFromLocalCopies], "@setEWSBParametersFromGSLVector@" -> IndentText[setEWSBParametersFromGSLVector], "@ewsbParametersInitializationList@" -> ewsbParametersInitializationList, + "@ewsbParametersInitializationComma@" -> ewsbParametersInitializationComma, "@setEWSBSolution@" -> IndentText[setEWSBSolution], "@convertMixingsToSLHAConvention@" -> IndentText[convertMixingsToSLHAConvention], "@convertMixingsToHKConvention@" -> IndentText[convertMixingsToHKConvention], From d228b53be31edaa7f6faf8cb85940540f8ecad45 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 4 Aug 2016 23:03:33 +0200 Subject: [PATCH 32/64] use Eigen::Matrix instead of C++ array --- templates/mass_eigenstates.cpp.in | 22 +++++++++++----------- templates/mass_eigenstates.hpp.in | 9 ++++----- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/templates/mass_eigenstates.cpp.in b/templates/mass_eigenstates.cpp.in index ba167f96d..de63c1a78 100644 --- a/templates/mass_eigenstates.cpp.in +++ b/templates/mass_eigenstates.cpp.in @@ -229,9 +229,9 @@ Problems<@ModelName@_info::NUMBER_OF_PARTICLES>& CLASSNAME::get_problems() * * @return array of tadpoles */ -std::array CLASSNAME::tadpole_equations() const +Eigen::Matrix CLASSNAME::tadpole_equations() const { - std::array tadpole{}; + Eigen::Matrix tadpole(Eigen::Matrix::Zero()); @calculateTreeLevelTadpoles@ if (ewsb_loop_order > 0) { @@ -252,7 +252,7 @@ std::array CLASSNAME::tadpole_equat void CLASSNAME::tadpole_equations(double tadpole[number_of_ewsb_equations]) const { const auto tadpole_(tadpole_equations()); - std::copy(tadpole_.begin(), tadpole_.end(), tadpole); + std::copy(tadpole_.data(), tadpole_.data() + number_of_ewsb_equations, tadpole); } /** @@ -287,7 +287,7 @@ int CLASSNAME::tadpole_equations(const gsl_vector* x, void* params, gsl_vector* for (std::size_t i = 0; i < number_of_ewsb_equations; ++i) gsl_vector_set(f, i, tadpole[i]); - return is_finite(tadpole) ? GSL_SUCCESS : GSL_EDOM; + return IsFinite(tadpole) ? GSL_SUCCESS : GSL_EDOM; } /** @@ -354,7 +354,7 @@ int CLASSNAME::solve_ewsb_iteratively() */ int CLASSNAME::solve_ewsb_iteratively_with( EWSB_solver* solver, - const std::array& x_init + const Eigen::Matrix& x_init ) { const int status = solver->solve(&x_init[0]); @@ -409,9 +409,9 @@ int CLASSNAME::solve_ewsb() return solve_ewsb_iteratively(ewsb_loop_order); } -std::array CLASSNAME::ewsb_initial_guess() +Eigen::Matrix CLASSNAME::ewsb_initial_guess() { - std::array x_init{}; + Eigen::Matrix x_init(Eigen::Matrix::Zero()); @ewsbInitialGuess@ @@ -427,10 +427,10 @@ std::array CLASSNAME::ewsb_initial_ * @return GSL_SUCCESS if new EWSB output parameters are finite, * GSL_EDOM otherwise. */ -std::array CLASSNAME::ewsb_step() const +Eigen::Matrix CLASSNAME::ewsb_step() const { double tadpole[number_of_ewsb_equations] = { 0. }; - std::array ewsb_parameters{}; + Eigen::Matrix ewsb_parameters(Eigen::Matrix::Zero()); if (ewsb_loop_order > 0) { @calculateOneLoopTadpolesNoStruct@ @@ -476,8 +476,8 @@ int CLASSNAME::ewsb_step(const gsl_vector* x, void* params, gsl_vector* f) if (ewsb_loop_order > 0) model->calculate_DRbar_masses(); - std::array ewsb_parameters = - @ewsbParametersInitializationList@; + Eigen::Matrix ewsb_parameters; + ewsb_parameters << @ewsbParametersInitializationComma@; int status = GSL_SUCCESS; diff --git a/templates/mass_eigenstates.hpp.in b/templates/mass_eigenstates.hpp.in index 1e384e33e..db4d3cad5 100644 --- a/templates/mass_eigenstates.hpp.in +++ b/templates/mass_eigenstates.hpp.in @@ -40,7 +40,6 @@ #include "problems.hpp" #include "config.h" -#include #include #include @@ -121,7 +120,7 @@ public: /// calculates the tadpoles at current loop order void tadpole_equations(double[number_of_ewsb_equations]) const; /// calculates the tadpoles at current loop order - std::array tadpole_equations() const; + Eigen::Matrix tadpole_equations() const; @thirdGenerationHelperPrototypes@ @twoLoopSelfEnergyPrototypes@ @@ -179,10 +178,10 @@ private: int solve_ewsb_iteratively(); int solve_ewsb_iteratively(unsigned); - int solve_ewsb_iteratively_with(EWSB_solver*, const std::array&); + int solve_ewsb_iteratively_with(EWSB_solver*, const Eigen::Matrix&); int solve_ewsb_tree_level_custom(); - std::array ewsb_initial_guess(); - std::array ewsb_step() const; + Eigen::Matrix ewsb_initial_guess(); + Eigen::Matrix ewsb_step() const; static int ewsb_step(const gsl_vector*, void*, gsl_vector*); static int tadpole_equations(const gsl_vector*, void*, gsl_vector*); void copy_DRbar_masses_to_pole_masses(); From 1495d674bf54b885d152dddf020e4532b45930be Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Fri, 5 Aug 2016 09:12:41 +0200 Subject: [PATCH 33/64] updating documentation of ewsb_step() function --- templates/mass_eigenstates.cpp.in | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/templates/mass_eigenstates.cpp.in b/templates/mass_eigenstates.cpp.in index de63c1a78..bd904dd05 100644 --- a/templates/mass_eigenstates.cpp.in +++ b/templates/mass_eigenstates.cpp.in @@ -421,11 +421,10 @@ Eigen::Matrix CLASSNAME::ewsb_in /** * Calculates EWSB output parameters including loop-corrections. * - * @param ewsb_parameters new EWSB output parameters. \a - * ewsb_parameters is only modified if all new parameters are finite. + * Throws exception of type EEWSBStepFailed if new EWSB parameters are + * inf or nan. * - * @return GSL_SUCCESS if new EWSB output parameters are finite, - * GSL_EDOM otherwise. + * @return new set of EWSB output parameters */ Eigen::Matrix CLASSNAME::ewsb_step() const { From 23ad8d30a130a7eb6d6b6e142a14d3981ad66ac8 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Fri, 5 Aug 2016 19:26:55 +0200 Subject: [PATCH 34/64] generate EWSB parameter setting to handle case when there are no VEVs --- meta/FlexibleSUSY.m | 6 ++++++ templates/mass_eigenstates.cpp.in | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/meta/FlexibleSUSY.m b/meta/FlexibleSUSY.m index 475f5cb9f..90039ac35 100644 --- a/meta/FlexibleSUSY.m +++ b/meta/FlexibleSUSY.m @@ -922,6 +922,7 @@ corresponding tadpole is real or imaginary (only in models with CP setEWSBParametersFromLocalCopies = "", ewsbParametersInitializationList = "", ewsbParametersInitializationComma = "", + ewsbParametersInitialization = "", setEWSBParametersFromGSLVector = "", convertMixingsToSLHAConvention = "", convertMixingsToHKConvention = "", @@ -1061,6 +1062,10 @@ corresponding tadpole is real or imaginary (only in models with CP setEWSBParametersFromLocalCopies = EWSB`SetEWSBParametersFromLocalCopies[parametersFixedByEWSB, "model"]; ewsbParametersInitializationList = EWSB`CreateEWSBParametersInitializationList[parametersFixedByEWSB]; ewsbParametersInitializationComma = EWSB`CreateEWSBParametersInitializationComma[parametersFixedByEWSB]; + If[Length[parametersFixedByEWSB] > 0, + ewsbParametersInitialization = IndentText["ewsb_parameters << " <> + EWSB`CreateEWSBParametersInitializationComma[parametersFixedByEWSB] <> ";"]; + ]; reorderDRbarMasses = TreeMasses`ReorderGoldstoneBosons[""]; reorderPoleMasses = TreeMasses`ReorderGoldstoneBosons["PHYSICAL"]; checkPoleMassesForTachyons = TreeMasses`CheckPoleMassesForTachyons["PHYSICAL"]; @@ -1140,6 +1145,7 @@ corresponding tadpole is real or imaginary (only in models with CP "@setEWSBParametersFromGSLVector@" -> IndentText[setEWSBParametersFromGSLVector], "@ewsbParametersInitializationList@" -> ewsbParametersInitializationList, "@ewsbParametersInitializationComma@" -> ewsbParametersInitializationComma, + "@ewsbParametersInitialization@" -> ewsbParametersInitialization, "@setEWSBSolution@" -> IndentText[setEWSBSolution], "@convertMixingsToSLHAConvention@" -> IndentText[convertMixingsToSLHAConvention], "@convertMixingsToHKConvention@" -> IndentText[convertMixingsToHKConvention], diff --git a/templates/mass_eigenstates.cpp.in b/templates/mass_eigenstates.cpp.in index bd904dd05..f09409084 100644 --- a/templates/mass_eigenstates.cpp.in +++ b/templates/mass_eigenstates.cpp.in @@ -476,7 +476,7 @@ int CLASSNAME::ewsb_step(const gsl_vector* x, void* params, gsl_vector* f) model->calculate_DRbar_masses(); Eigen::Matrix ewsb_parameters; - ewsb_parameters << @ewsbParametersInitializationComma@; +@ewsbParametersInitialization@ int status = GSL_SUCCESS; From aa72c315712327c574401c654fc9b4091a0672c6 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Sat, 6 Aug 2016 11:49:51 +0200 Subject: [PATCH 35/64] modernise 2- and 3-loop self-energy and tadpole interface --- meta/LoopMasses.m | 46 ++--- meta/SelfEnergies.m | 215 +++++++++++----------- test/test_CMSSM_model.cpp | 6 +- test/test_CMSSM_susy_scale_constraint.cpp | 3 +- test/test_NMSSM.hpp | 3 +- test/test_NMSSM_ewsb.cpp | 6 +- test/test_NMSSM_susy_scale_constraint.cpp | 3 +- test/test_NUTNMSSM_spectrum.cpp | 3 +- 8 files changed, 124 insertions(+), 161 deletions(-) diff --git a/meta/LoopMasses.m b/meta/LoopMasses.m index 09153b780..a845841bf 100644 --- a/meta/LoopMasses.m +++ b/meta/LoopMasses.m @@ -59,25 +59,11 @@ "const double p = " <> momentum <> ";\n" <> "double self_energy = Re(" <> selfEnergyFunction <> "(p));\n" <> If[FlexibleSUSY`UseHiggs2LoopSM === True && particle === SARAH`HiggsBoson, - "\ -if (pole_mass_loop_order > 1) { -" <> IndentText["\ -double two_loop[1] = { 0. }; -self_energy_" <> particleName <> "_2loop(two_loop); -self_energy += two_loop[0]; -"] <> "} -" - , ""] <> + "if (pole_mass_loop_order > 1)\n" <> + IndentText["self_energy += self_energy_" <> particleName <> "_2loop();\n"], ""] <> If[FlexibleSUSY`UseHiggs3LoopSplit === True && particle === SARAH`HiggsBoson, - "\ -if (pole_mass_loop_order > 2) { -" <> IndentText["\ -double three_loop[1] = { 0. }; -self_energy_" <> particleName <> "_3loop(three_loop); -self_energy += three_loop[0]; -"] <> "} -" - , ""] <> + "if (pole_mass_loop_order > 2)\n" <> + IndentText["self_energy += self_energy_" <> particleName <> "_3loop();\n"], ""] <> "const double mass_sqr = " <> massMatrixName <> " - self_energy" <> If[tadpole == "", "", " + " <> tadpole] <> ";\n\n" <> "PHYSICAL(" <> massName <> ") = SignedAbsSqrt(mass_sqr);\n"; @@ -390,25 +376,19 @@ be set to the (positive) tree-level mass. M_tree If[MemberQ[{SARAH`HiggsBoson, SARAH`PseudoScalar}, particle], numberOfIndependentMatrixEntries = Parameters`NumberOfIndependentEntriesOfSymmetricMatrix[dim]; numberOfIndependentMatrixEntriesStr = ToString[numberOfIndependentMatrixEntries]; - addTwoLoopHiggsContributions = ""; - For[k = 0; n = 0, k < dim, k++, - For[l = k, l < dim, l++; n++, - addTwoLoopHiggsContributions = addTwoLoopHiggsContributions <> - "self_energy(" <> ToString[k] <> ", " <> - ToString[l] <> ") += two_loop[" <> ToString[n] <> "];\n"; - ]; - ]; - addTwoLoopHiggsContributions = "\n" <> addTwoLoopHiggsContributions; + addTwoLoopHiggsContributions = "\nself_energy += self_energy_2l;\n"; calcTwoLoopHiggsContributions = " // two-loop Higgs self-energy contributions -double two_loop[" <> numberOfIndependentMatrixEntriesStr <> "] = { 0. }; +" <> selfEnergyMatrixCType <> " self_energy_2l(" <> selfEnergyMatrixCType <> "::Zero()); if (pole_mass_loop_order > 1) { " <> IndentText["\ -self_energy_" <> CConversion`ToValidCSymbolString[particle] <> "_2loop(two_loop); -for (unsigned i = 0; i < " <> numberOfIndependentMatrixEntriesStr <> "; i++) { - if (!std::isfinite(two_loop[i])) { - two_loop[i] = 0.; - problems.flag_bad_mass(" <> FlexibleSUSY`FSModelName <> "_info::" <> CConversion`ToValidCSymbolString[particle] <> "); +self_energy_2l = self_energy_" <> CConversion`ToValidCSymbolString[particle] <> "_2loop(); +for (unsigned i = 0; i < " <> dimStr <> "; i++) { + for (unsigned k = 0; k < " <> dimStr <> "; k++) { + if (!std::isfinite(self_energy_2l(i,k))) { + self_energy_2l(i,k) = 0.; + problems.flag_bad_mass(" <> FlexibleSUSY`FSModelName <> "_info::" <> CConversion`ToValidCSymbolString[particle] <> "); + } } } "] <> "} diff --git a/meta/SelfEnergies.m b/meta/SelfEnergies.m index 00226a703..a9f04eaef 100644 --- a/meta/SelfEnergies.m +++ b/meta/SelfEnergies.m @@ -511,12 +511,10 @@ functionName = CreateNLoopTadpoleFunctionName[higgsBoson,2]; dim = GetDimension[higgsBoson]; dimStr = ToString[dim]; - body = "double two_loop_tadpole[" <> dimStr <> "];\n" <> - struct <> functionName <> - "(two_loop_tadpole);\n"; + body = "const auto tadpole_2l(" <> struct <> functionName <> "());\n"; For[v = 1, v <= dim, v++, body = body <> arrayName <> "[" <> ToString[v-1] <> "] " <> sign <> "= " <> - "two_loop_tadpole[" <> ToString[v-1] <> "];\n"; + "tadpole_2l(" <> ToString[v-1] <> ");\n"; ]; Return[IndentText[IndentText[body]]]; ]; @@ -533,8 +531,7 @@ ]; GetTwoLoopTadpoleCorrections[model_String /; model === "MSSM"] := - Module[{body, - g3Str, mtStr, mbStr, mtauStr, + Module[{g3Str, mtStr, mbStr, mtauStr, mTop, mBot, mTau, vev2Str, tanbStr, muStr, m3Str, mA0Str}, AssertFieldDimension[SARAH`HiggsBoson, 2, model]; @@ -550,7 +547,7 @@ muStr = CConversion`RValueToCFormString[-Parameters`GetEffectiveMu[]]; m3Str = CConversion`RValueToCFormString[FlexibleSUSY`M[SARAH`Gluino]]; mA0Str = TreeMasses`CallPseudoscalarHiggsMassGetterFunction[] <> "(0)"; - body = "\ +"\ // calculate 3rd generation sfermion masses and mixing angles double mst_1, mst_2, theta_t; double msb_1, msb_2, theta_b; @@ -617,20 +614,18 @@ &costau, &scalesq, &amu, &tanb, &vev2, &s1tau, &s2tau); } +" <> GetTadpoleVectorCType[2] <> " tadpole_2l(" <> GetTadpoleVectorCType[2] <> "::Zero()); + if (!std::isnan(s1s * s1t * s1b * s1tau * s2s * s2t * s2b * s2tau)) { - result[0] = (- s1s - s1t - s1b - s1tau) * " <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; - result[1] = (- s2s - s2t - s2b - s2tau) * " <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; -} else { - result[0] = 0.; - result[1] = 0.; + tadpole_2l(0) = (- s1s - s1t - s1b - s1tau) * " <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; + tadpole_2l(1) = (- s2s - s2t - s2b - s2tau) * " <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; } -"; - Return[body]; + +return tadpole_2l;" ]; GetTwoLoopTadpoleCorrections[model_String /; model === "NMSSM"] := - Module[{body, - mTop, mBot, mTau, + Module[{mTop, mBot, mTau, g3Str, mtStr, mbStr, mtauStr, vev2Str, svevStr, tanbStr, muStr, m3Str, mA0Str}, AssertFieldDimension[SARAH`HiggsBoson, 3, model]; @@ -647,7 +642,7 @@ m3Str = CConversion`RValueToCFormString[FlexibleSUSY`M[SARAH`Gluino]]; mA0Str = CConversion`RValueToCFormString[Parameters`GetEffectiveMASqr[]]; svevStr = CConversion`RValueToCFormString[Parameters`GetParameterFromDescription["Singlet-VEV"]]; - body = "\ +"\ // calculate 3rd generation sfermion masses and mixing angles double mst_1, mst_2, theta_t; double msb_1, msb_2, theta_b; @@ -722,18 +717,16 @@ const double sss = s1s * vev * cosb / " <> svevStr <> "; const double ssb = s1b * vev * sinb / " <> svevStr <> "; +" <> GetTadpoleVectorCType[3] <> " tadpole_2l(" <> GetTadpoleVectorCType[3] <> "::Zero()); + if (!std::isnan(s1s * s1t * s1b * s1tau * s2s * s2t * s2b * s2tau * sss * ssb)) { - result[0] = (- s1s - s1t - s1b - s1tau) * " <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; - result[1] = (- s2s - s2t - s2b - s2tau) * " <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; - result[2] = (- sss - ssb) * " <> svevStr <> "; -} else { - result[0] = 0.; - result[1] = 0.; - result[2] = 0.; + tadpole_2l(0) = (- s1s - s1t - s1b - s1tau) * " <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; + tadpole_2l(1) = (- s2s - s2t - s2b - s2tau) * " <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; + tadpole_2l(2) = (- sss - ssb) * " <> svevStr <> "; } -"; - Return[body]; + +return tadpole_2l;" ]; GetTwoLoopTadpoleCorrections[model_] := @@ -742,16 +735,21 @@ "" ]; +GetTadpoleVectorType[dim_] := + CConversion`VectorType[CConversion`realScalarCType, dim]; + +GetTadpoleVectorCType[dim_] := + CConversion`CreateCType[GetTadpoleVectorType[dim]]; + CreateTwoLoopTadpoles[higgsBoson_, model_String] := - Module[{prototype, function, functionName, dim, dimStr}, + Module[{prototype, function, functionName, dim, dimStr, cType}, dim = GetDimension[higgsBoson]; dimStr = ToString[dim]; functionName = CreateNLoopTadpoleFunctionName[higgsBoson,2]; - prototype = "void " <> functionName <> "(double result[" <> - dimStr <> "]) const;\n"; + cType = GetTadpoleVectorCType[2]; + prototype = cType <> " " <> functionName <> "() const;\n"; body = GetTwoLoopTadpoleCorrections[model]; - function = "void CLASSNAME::" <> functionName <> - "(double result[" <> dimStr <> "]) const\n{\n" <> + function = cType <> " CLASSNAME::" <> functionName <> "() const\n{\n" <> IndentText[body] <> "\n}\n"; Return[{prototype, function}]; ]; @@ -764,14 +762,14 @@ GetNLoopSelfEnergyCorrections[particle_ /; particle === SARAH`HiggsBoson, model_String /; model === "SM", 2] := - Module[{body, mTop, mtStr, yt, ytStr, g3Str}, + Module[{mTop, mtStr, yt, ytStr, g3Str}, AssertFieldDimension[particle, 1, model]; mTop = TreeMasses`GetMass[TreeMasses`GetUpQuark[3,True]]; mtStr = CConversion`RValueToCFormString[mTop]; yt = Parameters`GetThirdGeneration[SARAH`UpYukawa]; ytStr = CConversion`RValueToCFormString[yt]; g3Str = CConversion`RValueToCFormString[SARAH`strongCoupling]; - body = "\ +"\ const double mt = " <> mtStr <> "; const double yt = " <> ytStr <> "; const double gs = " <> g3Str <> "; @@ -786,14 +784,12 @@ self_energy += self_energy_higgs_2loop_at_as_sm(scale, mt, yt, gs); } -result[0] = self_energy; -"; - Return[body]; +return self_energy;" ]; GetNLoopSelfEnergyCorrections[particle_ /; particle === SARAH`HiggsBoson, model_String /; model === "Split", 3] := - Module[{body, mTop, mGluino, mtStr, mgStr, yt, ytStr, g3Str}, + Module[{mTop, mGluino, mtStr, mgStr, yt, ytStr, g3Str}, AssertFieldDimension[particle, 1, model]; mTop = TreeMasses`GetMass[TreeMasses`GetUpQuark[3,True]]; mtStr = CConversion`RValueToCFormString[mTop]; @@ -802,7 +798,7 @@ yt = Parameters`GetThirdGeneration[SARAH`UpYukawa]; ytStr = CConversion`RValueToCFormString[yt]; g3Str = CConversion`RValueToCFormString[SARAH`strongCoupling]; - body = "\ +"\ const double mt = " <> mtStr <> "; const double mg = " <> mgStr <> "; const double yt = " <> ytStr <> "; @@ -814,15 +810,12 @@ self_energy += self_energy_higgs_3loop_gluino_split(scale, mt, yt, gs, mg); } -result[0] = self_energy; -"; - Return[body]; +return self_energy;" ]; GetNLoopSelfEnergyCorrections[particle_ /; particle === SARAH`HiggsBoson, model_String /; model === "MSSM", 2] := - Module[{body, - g3Str, mtStr, mbStr, mtauStr, + Module[{g3Str, mtStr, mbStr, mtauStr, mTop, mBot, mTau, vev2Str, vuStr, vdStr, tanbStr, muStr, m3Str, mA0Str}, AssertFieldDimension[particle, 2, model]; @@ -840,7 +833,7 @@ muStr = CConversion`RValueToCFormString[-Parameters`GetEffectiveMu[]]; m3Str = CConversion`RValueToCFormString[FlexibleSUSY`M[SARAH`Gluino]]; mA0Str = TreeMasses`CallPseudoscalarHiggsMassGetterFunction[] <> "(0)"; - body = "\ +"\ // calculate 3rd generation sfermion masses and mixing angles double mst_1, mst_2, theta_t; double msb_1, msb_2, theta_b; @@ -935,24 +928,21 @@ const double dMA = p2s + p2w + p2b + p2tau; // dMA contains two loop tadpoles, which we'll subtract -double tadpole[2]; -" <> CreateNLoopTadpoleFunctionName[SARAH`HiggsBoson,2] <> "(tadpole); +const auto tadpole(" <> CreateNLoopTadpoleFunctionName[SARAH`HiggsBoson,2] <> "()); -result[0] = - s11s - s11w - s11b - s11tau; // 1,1 element -result[1] = - s12s - s12w - s12b - s12tau; // 1,2 element -result[2] = - s22s - s22w - s22b - s22tau; // 2,2 element +" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> " self_energy_2l; -result[0] += - dMA * Sqr(sinb) + tadpole[0] / " <> vdStr <> "; -result[1] += + dMA * sinb * cosb; -result[2] += - dMA * Sqr(cosb) + tadpole[1] / " <> vuStr <> "; -"; - Return[body]; +self_energy_2l(0,0) = - s11s - s11w - s11b - s11tau - dMA * Sqr(sinb) + tadpole(0) / " <> vdStr <> "; +self_energy_2l(0,1) = - s12s - s12w - s12b - s12tau + dMA * sinb * cosb; +self_energy_2l(1,0) = self_energy_2l(0,1); +self_energy_2l(1,1) = - s22s - s22w - s22b - s22tau - dMA * Sqr(cosb) + tadpole(1) / " <> vuStr <> "; + +return self_energy_2l;" ]; GetNLoopSelfEnergyCorrections[particle_ /; particle === SARAH`PseudoScalar, model_String /; model === "MSSM", 2] := - Module[{body, - g3Str, mtStr, mbStr, mtauStr, + Module[{g3Str, mtStr, mbStr, mtauStr, mTop, mBot, mTau, vev2Str, vuStr, vdStr, tanbStr, muStr, m3Str, mA0Str}, AssertFieldDimension[particle, 2, model]; @@ -970,7 +960,7 @@ muStr = CConversion`RValueToCFormString[-Parameters`GetEffectiveMu[]]; m3Str = CConversion`RValueToCFormString[FlexibleSUSY`M[SARAH`Gluino]]; mA0Str = TreeMasses`CallPseudoscalarHiggsMassGetterFunction[] <> "(0)"; - body = "\ +"\ // calculate 3rd generation sfermion masses and mixing angles double mst_1, mst_2, theta_t; double msb_1, msb_2, theta_b; @@ -1044,25 +1034,23 @@ const double dMA = p2s + p2w + p2b + p2tau; -// see hep-ph/0105096 Eq. (9) -result[0] = - dMA * sinb2; -result[1] = - dMA * sinb * cosb; -result[2] = - dMA * cosb2; +// dMA contains two loop tadpoles, which we'll subtract +const auto tadpole(" <> CreateNLoopTadpoleFunctionName[SARAH`HiggsBoson,2] <> "()); -// dMA contains two loop tadpoles, which we'll now subtract -double tadpole[2]; -" <> CreateNLoopTadpoleFunctionName[SARAH`HiggsBoson,2] <> "(tadpole); +" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`PseudoScalar]] <> " self_energy_2l; -result[0] += tadpole[0] / " <> vdStr <> "; -result[2] += tadpole[1] / " <> vuStr <> "; -"; - Return[body]; +// see hep-ph/0105096 Eq. (9) +self_energy_2l(0,0) = - dMA * sinb2 + tadpole(0) / " <> vdStr <> "; +self_energy_2l(0,1) = - dMA * sinb * cosb; +self_energy_2l(1,0) = self_energy_2l(0,1); +self_energy_2l(1,1) = - dMA * cosb2 + tadpole(1) / " <> vuStr <> "; + +return self_energy_2l;" ]; GetNLoopSelfEnergyCorrections[particle_ /; particle === SARAH`HiggsBoson, model_String /; model === "NMSSM", 2] := - Module[{body, - g3Str, mtStr, mbStr, mtauStr, + Module[{g3Str, mtStr, mbStr, mtauStr, mTop, mBot, mTau, vev2Str, vuStr, vdStr, vsStr, tanbStr, muStr, m3Str, mA0Str, lambdaStr}, @@ -1083,7 +1071,7 @@ mA0Str = CConversion`RValueToCFormString[Parameters`GetEffectiveMASqr[]]; vsStr = CConversion`RValueToCFormString[Parameters`GetParameterFromDescription["Singlet-VEV"]]; lambdaStr = CConversion`RValueToCFormString[Parameters`GetParameterFromDescription["Singlet-Higgs-Interaction"]]; - body = "\ +"\ // calculate 3rd generation sfermion masses and mixing angles double mst_1, mst_2, theta_t; double msb_1, msb_2, theta_b; @@ -1193,28 +1181,31 @@ const double dMA = p2w + p2tau; // subtract two-loop tadpoles -double tadpole[3]; -" <> CreateNLoopTadpoleFunctionName[SARAH`HiggsBoson,2] <> "(tadpole); +const auto tadpole(" <> CreateNLoopTadpoleFunctionName[SARAH`HiggsBoson,2] <> "()); -DMS[0][0] += s11w + s11tau + dMA * Sqr(sinb) - tadpole[0] / " <> vdStr <> "; +DMS[0][0] += s11w + s11tau + dMA * Sqr(sinb) - tadpole(0) / " <> vdStr <> "; DMS[0][1] += s12w + s12tau - dMA * sinb * cosb; -DMS[1][1] += s22w + s22tau + dMA * Sqr(cosb) - tadpole[1] / " <> vuStr <> "; -DMS[2][2] += - tadpole[2] / " <> vsStr <> "; - -result[0] = - DMS[0][0]; // 1,1 element -result[1] = - DMS[0][1]; // 1,2 element -result[2] = - DMS[0][2]; // 1,3 element -result[3] = - DMS[1][1]; // 2,2 element -result[4] = - DMS[1][2]; // 2,3 element -result[5] = - DMS[2][2]; // 3,3 element -"; - Return[body]; +DMS[1][1] += s22w + s22tau + dMA * Sqr(cosb) - tadpole(1) / " <> vuStr <> "; +DMS[2][2] += - tadpole(2) / " <> vsStr <> "; + +" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> " self_energy_2l; + +self_energy_2l(0,0) = - DMS[0][0]; +self_energy_2l(0,1) = - DMS[0][1]; +self_energy_2l(0,2) = - DMS[0][2]; +self_energy_2l(1,0) = self_energy_2l(0,1); +self_energy_2l(1,1) = - DMS[1][1]; +self_energy_2l(1,2) = - DMS[1][2]; +self_energy_2l(2,0) = self_energy_2l(0,2); +self_energy_2l(2,1) = self_energy_2l(1,2); +self_energy_2l(2,2) = - DMS[2][2]; + +return self_energy_2l;" ]; GetNLoopSelfEnergyCorrections[particle_ /; particle === SARAH`PseudoScalar, model_String /; model === "NMSSM", 2] := - Module[{body, - g3Str, mtStr, mbStr, mtauStr, + Module[{g3Str, mtStr, mbStr, mtauStr, mTop, mBot, mTau, vev2Str, vuStr, vdStr, vsStr, tanbStr, muStr, m3Str, mA0Str, lambdaStr}, @@ -1235,7 +1226,7 @@ mA0Str = CConversion`RValueToCFormString[Parameters`GetEffectiveMASqr[]]; vsStr = CConversion`RValueToCFormString[Parameters`GetParameterFromDescription["Singlet-VEV"]]; lambdaStr = CConversion`RValueToCFormString[Parameters`GetParameterFromDescription["Singlet-Higgs-Interaction"]]; - body = "\ +"\ // calculate 3rd generation sfermion masses and mixing angles double mst_1, mst_2, theta_t; double msb_1, msb_2, theta_b; @@ -1335,26 +1326,27 @@ const double dMA = p2w + p2tau; -DMP[0][0] += dMA * sinb2; -DMP[0][1] += dMA * sinb * cosb; -DMP[1][1] += dMA * cosb2; - // subtract two-loop tadpoles -double tadpole[3]; -" <> CreateNLoopTadpoleFunctionName[SARAH`HiggsBoson,2] <> "(tadpole); - -DMP[0][0] += - tadpole[0] / " <> vdStr <> "; -DMP[1][1] += - tadpole[1] / " <> vuStr <> "; -DMP[2][2] += - tadpole[2] / " <> vsStr <> "; - -result[0] = - DMP[0][0]; // 1,1 element -result[1] = - DMP[0][1]; // 1,2 element -result[2] = - DMP[0][2]; // 1,3 element -result[3] = - DMP[1][1]; // 2,2 element -result[4] = - DMP[1][2]; // 2,3 element -result[5] = - DMP[2][2]; // 3,3 element -"; - Return[body]; +const auto tadpole(" <> CreateNLoopTadpoleFunctionName[SARAH`HiggsBoson,2] <> "()); + +DMP[0][0] += dMA * sinb2 - tadpole(0) / " <> vdStr <> "; +DMP[0][1] += dMA * sinb * cosb; +DMP[1][1] += dMA * cosb2 - tadpole(1) / " <> vuStr <> "; +DMP[2][2] += - tadpole(2) / " <> vsStr <> "; + +" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`PseudoScalar]] <> " self_energy_2l; + +self_energy_2l(0,0) = - DMP[0][0]; +self_energy_2l(0,1) = - DMP[0][1]; +self_energy_2l(0,2) = - DMP[0][2]; +self_energy_2l(1,0) = self_energy_2l(0,1); +self_energy_2l(1,1) = - DMP[1][1]; +self_energy_2l(1,2) = - DMP[1][2]; +self_energy_2l(2,0) = self_energy_2l(0,2); +self_energy_2l(2,1) = self_energy_2l(1,2); +self_energy_2l(2,2) = - DMP[2][2]; + +return self_energy_2l;" ]; GetNLoopSelfEnergyCorrections[particle_, model_, loop_] := @@ -1365,15 +1357,14 @@ ]; CreateNLoopSelfEnergy[particle_, model_String, loop_] := - Module[{prototype, function, functionName, dim, dimStr}, + Module[{prototype, function, functionName, dim, dimStr, cType}, dim = Parameters`NumberOfIndependentEntriesOfSymmetricMatrix[GetDimension[particle]]; dimStr = ToString[dim]; functionName = CreateNLoopSelfEnergyFunctionName[particle,loop]; - prototype = "void " <> functionName <> "(double result[" <> - dimStr <> "]) const;\n"; + cType = CConversion`CreateCType[TreeMasses`GetMassMatrixType[particle]]; + prototype = cType <> " " <> functionName <> "() const;\n"; body = GetNLoopSelfEnergyCorrections[particle, model, loop]; - function = "void CLASSNAME::" <> functionName <> - "(double result[" <> dimStr <> "]) const\n{\n" <> + function = cType <> " CLASSNAME::" <> functionName <> "() const\n{\n" <> IndentText[body] <> "\n}\n"; Return[{prototype, function}]; ]; diff --git a/test/test_CMSSM_model.cpp b/test/test_CMSSM_model.cpp index f66415111..c9ae2cb64 100644 --- a/test/test_CMSSM_model.cpp +++ b/test/test_CMSSM_model.cpp @@ -1036,8 +1036,7 @@ void compare_tadpoles_2loop(MssmSoftsusy s, CMSSM m) const double td_1_and_2loop_ss = s.displayTadpole1Ms(); const double tu_1_and_2loop_ss = s.displayTadpole2Ms(); - double two_loop_tadpole[2]; - m.tadpole_hh_2loop(two_loop_tadpole); + const auto two_loop_tadpole(m.tadpole_hh_2loop()); // check equality of 1-loop tadpoles again TEST_CLOSE(two_loop_tadpole[0] / vd, td_1_and_2loop_ss - td_ss, 1.0e-10); @@ -1277,8 +1276,7 @@ void test_ewsb_2loop(CMSSM model, MssmSoftsusy softSusy) model.set_ewsb_loop_order(2); model.solve_ewsb(); - double two_loop_tadpole[2]; - model.tadpole_hh_2loop(two_loop_tadpole); + const auto two_loop_tadpole(model.tadpole_hh_2loop()); TEST_CLOSE(model.get_ewsb_eq_hh_1() - model.tadpole_hh(0).real() - two_loop_tadpole[0], 0.0, 0.007); diff --git a/test/test_CMSSM_susy_scale_constraint.cpp b/test/test_CMSSM_susy_scale_constraint.cpp index 15dd1f0fc..5dc89ce65 100644 --- a/test/test_CMSSM_susy_scale_constraint.cpp +++ b/test/test_CMSSM_susy_scale_constraint.cpp @@ -30,8 +30,7 @@ BOOST_AUTO_TEST_CASE( test_susy_scale_constraint ) tadpole[1] = m.get_ewsb_eq_hh_2() - Re(m.tadpole_hh(1)); if (m.get_ewsb_loop_order() > 1) { - double two_loop_tadpole[2]; - m.tadpole_hh_2loop(two_loop_tadpole); + const auto two_loop_tadpole(m.tadpole_hh_2loop()); tadpole[0] -= two_loop_tadpole[0]; tadpole[1] -= two_loop_tadpole[1]; } diff --git a/test/test_NMSSM.hpp b/test/test_NMSSM.hpp index 20a270cc0..7f220a0aa 100644 --- a/test/test_NMSSM.hpp +++ b/test/test_NMSSM.hpp @@ -143,8 +143,7 @@ void ensure_n_loop_ewsb(NMSSM& m, int loop_level) BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_2() - m.tadpole_hh(1).real(), precision); BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_3() - m.tadpole_hh(2).real(), precision); } else if (loop_level == 2) { - double two_loop_tadpole[3]; - m.tadpole_hh_2loop(two_loop_tadpole); + const auto two_loop_tadpole(m.tadpole_hh_2loop()); BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_1() - Re(m.tadpole_hh(0)) - two_loop_tadpole[0], 1.5); BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_2() - Re(m.tadpole_hh(1)) - two_loop_tadpole[1], 0.06); BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_3() - Re(m.tadpole_hh(2)) - two_loop_tadpole[2], 18.0); diff --git a/test/test_NMSSM_ewsb.cpp b/test/test_NMSSM_ewsb.cpp index 92f0c430c..192f9dc36 100644 --- a/test/test_NMSSM_ewsb.cpp +++ b/test/test_NMSSM_ewsb.cpp @@ -206,8 +206,7 @@ BOOST_AUTO_TEST_CASE( test_NMSSM_two_loop_tadpoles ) BOOST_CHECK_CLOSE(tadpole_hh_3 / vS, tadpole_ss_3, 1.0e-11); // compare two-loop tadpoles - double two_loop_tadpole[3]; - m.tadpole_hh_2loop(two_loop_tadpole); + const auto two_loop_tadpole(m.tadpole_hh_2loop()); softsusy::numRewsbLoops = 2; s.doTadpoles(mt, sinthDRbar); @@ -262,8 +261,7 @@ BOOST_AUTO_TEST_CASE( test_NMSSM_two_loop_ewsb ) const Complex tadpole_hh_2(m.tadpole_hh(1)); const Complex tadpole_hh_3(m.tadpole_hh(2)); - double two_loop_tadpole[3]; - m.tadpole_hh_2loop(two_loop_tadpole); + const auto two_loop_tadpole(m.tadpole_hh_2loop()); BOOST_CHECK_SMALL(Im(tadpole_hh_1), 1.0e-12); BOOST_CHECK_SMALL(Im(tadpole_hh_2), 1.0e-12); diff --git a/test/test_NMSSM_susy_scale_constraint.cpp b/test/test_NMSSM_susy_scale_constraint.cpp index 48c6e75b6..38886f761 100644 --- a/test/test_NMSSM_susy_scale_constraint.cpp +++ b/test/test_NMSSM_susy_scale_constraint.cpp @@ -53,8 +53,7 @@ BOOST_AUTO_TEST_CASE( test_susy_scale_constraint ) tadpole[2] = m.get_ewsb_eq_hh_3() - Re(m.tadpole_hh(2)); if (m.get_ewsb_loop_order() > 1) { - double two_loop_tadpole[3]; - m.tadpole_hh_2loop(two_loop_tadpole); + const auto two_loop_tadpole(m.tadpole_hh_2loop()); tadpole[0] -= two_loop_tadpole[0]; tadpole[1] -= two_loop_tadpole[1]; tadpole[2] -= two_loop_tadpole[2]; diff --git a/test/test_NUTNMSSM_spectrum.cpp b/test/test_NUTNMSSM_spectrum.cpp index 3933275e6..92c012b25 100644 --- a/test/test_NUTNMSSM_spectrum.cpp +++ b/test/test_NUTNMSSM_spectrum.cpp @@ -443,8 +443,7 @@ void compare_tadpoles_2loop(NUTNMSSM fs, NmssmSoftsusy ss) const double tu_1_and_2loop_ss = ss.displayTadpole2Ms(); const double ts_1_and_2loop_ss = ss.displayTadpoleSMs(); - double two_loop_tadpole[3]; - fs.tadpole_hh_2loop(two_loop_tadpole); + const auto two_loop_tadpole(fs.tadpole_hh_2loop()); // check equality of 1-loop tadpoles again // works only if amu = the lightest CP-even Higgs, From c2e1950fb137cc615331f38af5be4952bf7748ba Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Sat, 6 Aug 2016 14:16:49 +0200 Subject: [PATCH 36/64] fixing tadpole dimension --- meta/SelfEnergies.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta/SelfEnergies.m b/meta/SelfEnergies.m index a9f04eaef..8629a7364 100644 --- a/meta/SelfEnergies.m +++ b/meta/SelfEnergies.m @@ -746,7 +746,7 @@ dim = GetDimension[higgsBoson]; dimStr = ToString[dim]; functionName = CreateNLoopTadpoleFunctionName[higgsBoson,2]; - cType = GetTadpoleVectorCType[2]; + cType = GetTadpoleVectorCType[dim]; prototype = cType <> " " <> functionName <> "() const;\n"; body = GetTwoLoopTadpoleCorrections[model]; function = cType <> " CLASSNAME::" <> functionName <> "() const\n{\n" <> From dd7c75216e4340ec38df82e65732e799a87b7864 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Sat, 6 Aug 2016 15:40:27 +0200 Subject: [PATCH 37/64] explicitly initialize every element of the EWSB parameter vector in order to be able to omit some vector elements, as needed in the CMSSMCPV for example. --- meta/EWSB.m | 9 +++++++++ meta/FlexibleSUSY.m | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/meta/EWSB.m b/meta/EWSB.m index a4ee18178..f9ab52602 100644 --- a/meta/EWSB.m +++ b/meta/EWSB.m @@ -48,6 +48,9 @@ CreateEWSBParametersInitializationComma::usage="Creates initialization list with EWSB output parameters"; +CreateEWSBParametersInitialization::usage="Creates initialization +of EWSB output parameters"; + Begin["`Private`"]; DebugPrint[msg___] := @@ -796,6 +799,12 @@ CreateEWSBParametersInitializationList[parameters_List] := "{" <> CreateEWSBParametersInitializationComma[parameters] <> "}"; +SetEWSBParameter[par_, idx_, array_String] := + array <> "[" <> ToString[idx] <> "] = " <> ConvertToReal[par] <> ";\n"; + +CreateEWSBParametersInitialization[parameters_List, array_String] := + StringJoin[MapIndexed[SetEWSBParameter[#1,First[#2],array]&, parameters]]; + End[]; EndPackage[]; diff --git a/meta/FlexibleSUSY.m b/meta/FlexibleSUSY.m index 90039ac35..a2fe2538f 100644 --- a/meta/FlexibleSUSY.m +++ b/meta/FlexibleSUSY.m @@ -1063,8 +1063,8 @@ corresponding tadpole is real or imaginary (only in models with CP ewsbParametersInitializationList = EWSB`CreateEWSBParametersInitializationList[parametersFixedByEWSB]; ewsbParametersInitializationComma = EWSB`CreateEWSBParametersInitializationComma[parametersFixedByEWSB]; If[Length[parametersFixedByEWSB] > 0, - ewsbParametersInitialization = IndentText["ewsb_parameters << " <> - EWSB`CreateEWSBParametersInitializationComma[parametersFixedByEWSB] <> ";"]; + ewsbParametersInitialization = IndentText[ + EWSB`CreateEWSBParametersInitialization[parametersFixedByEWSB, "ewsb_parameters"]]; ]; reorderDRbarMasses = TreeMasses`ReorderGoldstoneBosons[""]; reorderPoleMasses = TreeMasses`ReorderGoldstoneBosons["PHYSICAL"]; From 4e324e35cfabd0b8cc8c3179a20d2e66b6ebf4ea Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Sat, 6 Aug 2016 17:50:50 +0200 Subject: [PATCH 38/64] use C index convention --- meta/EWSB.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta/EWSB.m b/meta/EWSB.m index f9ab52602..2718f445e 100644 --- a/meta/EWSB.m +++ b/meta/EWSB.m @@ -803,7 +803,7 @@ array <> "[" <> ToString[idx] <> "] = " <> ConvertToReal[par] <> ";\n"; CreateEWSBParametersInitialization[parameters_List, array_String] := - StringJoin[MapIndexed[SetEWSBParameter[#1,First[#2],array]&, parameters]]; + StringJoin[MapIndexed[SetEWSBParameter[#1,First[#2 - 1],array]&, parameters]]; End[]; From 92ef454e553c44bf1187fe5131b1af3f234ed94a Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Sat, 6 Aug 2016 18:25:02 +0200 Subject: [PATCH 39/64] use unique_ptr for EWSB solvers in order to not leak ressource if an exception is thrown between creation and deletion of the solvers. --- meta/EWSB.m | 5 ++++- templates/mass_eigenstates.cpp.in | 7 +++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/meta/EWSB.m b/meta/EWSB.m index 2718f445e..a2ac7c363 100644 --- a/meta/EWSB.m +++ b/meta/EWSB.m @@ -663,8 +663,11 @@ Quit[1]; ]; +MakeUniquePtr[str_String, obj_String] := + "std::unique_ptr<" <> obj <> ">(" <> str <> ")"; + CreateEWSBRootFinders[rootFinders_List] := - Utils`StringJoinWithSeparator[CreateEWSBRootFinder /@ rootFinders, ",\n"]; + Utils`StringJoinWithSeparator[MakeUniquePtr[#,"EWSB_solver"]& /@ (CreateEWSBRootFinder /@ rootFinders), ",\n"]; WrapPhase[phase_ /; phase === Null, str_String] := str; diff --git a/templates/mass_eigenstates.cpp.in b/templates/mass_eigenstates.cpp.in index f09409084..066e2c9d3 100644 --- a/templates/mass_eigenstates.cpp.in +++ b/templates/mass_eigenstates.cpp.in @@ -49,6 +49,7 @@ #include #include +#include #include #ifdef ENABLE_THREADS @@ -298,7 +299,7 @@ int CLASSNAME::solve_ewsb_iteratively() { EWSB_args params = {this, ewsb_loop_order}; - EWSB_solver* solvers[] = { + std::unique_ptr solvers[] = { @EWSBSolvers@ }; @@ -316,7 +317,7 @@ int CLASSNAME::solve_ewsb_iteratively() int status; for (std::size_t i = 0; i < number_of_solvers; ++i) { VERBOSE_MSG("\tStarting EWSB iteration using solver " << i); - status = solve_ewsb_iteratively_with(solvers[i], x_init); + status = solve_ewsb_iteratively_with(solvers[i].get(), x_init); if (status == EWSB_solver::SUCCESS) { VERBOSE_MSG("\tSolver " << i << " finished successfully!"); break; @@ -339,8 +340,6 @@ int CLASSNAME::solve_ewsb_iteratively() #endif } - std::for_each(solvers, solvers + number_of_solvers, Delete_object()); - return status; } From 65f7af941926f727ea7a1cc0a8313c59b341ba01 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Mon, 8 Aug 2016 20:28:26 +0200 Subject: [PATCH 40/64] transfer modernisation to Standard_model class --- src/standard_model.cpp | 101 +++++++++++++++++++---------------------- src/standard_model.hpp | 24 ++++++---- 2 files changed, 60 insertions(+), 65 deletions(-) diff --git a/src/standard_model.cpp b/src/standard_model.cpp index a9c068d3e..57839efdf 100644 --- a/src/standard_model.cpp +++ b/src/standard_model.cpp @@ -42,6 +42,7 @@ #include #include +#include #include #ifdef ENABLE_THREADS @@ -82,15 +83,6 @@ const int Standard_model::numberOfParameters; #define TOP_2LOOP_CORRECTION_QCD two_loop_corrections.top_qcd #define HIGGS_3LOOP_CORRECTION_AT_AS_AS 1 -#ifdef ENABLE_THREADS - std::mutex Standard_model::mtx_fortran; - #define LOCK_MUTEX() mtx_fortran.lock() - #define UNLOCK_MUTEX() mtx_fortran.unlock() -#else - #define LOCK_MUTEX() - #define UNLOCK_MUTEX() -#endif - Standard_model::Standard_model() : Beta_function() , number_of_ewsb_iterations(100) @@ -279,18 +271,17 @@ Problems& Standard_model::get_problems /** * Method which calculates the tadpoles at the current loop order. * - * @param tadpole array of tadpole + * @return array of tadpoles */ -void Standard_model::tadpole_equations(double tadpole[number_of_ewsb_equations]) const +Eigen::Matrix Standard_model::tadpole_equations() const { + Eigen::Matrix tadpole( + Eigen::Matrix::Zero()); + tadpole[0] = get_ewsb_eq_hh_1(); if (ewsb_loop_order > 0) { tadpole[0] -= Re(tadpole_hh()); - - if (ewsb_loop_order > 1) { - - } } } @@ -322,14 +313,12 @@ int Standard_model::tadpole_equations(const gsl_vector* x, void* params, gsl_vec if (ewsb_loop_order > 0) model->calculate_DRbar_masses(); - double tadpole[number_of_ewsb_equations] = { 0. }; - - model->tadpole_equations(tadpole); + const auto tadpole(model->tadpole_equations()); for (std::size_t i = 0; i < number_of_ewsb_equations; ++i) gsl_vector_set(f, i, tadpole[i]); - return is_finite(tadpole) ? GSL_SUCCESS : GSL_EDOM; + return IsFinite(tadpole) ? GSL_SUCCESS : GSL_EDOM; } /** @@ -340,15 +329,14 @@ int Standard_model::solve_ewsb_iteratively() { EWSB_args params = {this, ewsb_loop_order}; - EWSB_solver* solvers[] = { - new Fixed_point_iterator(Standard_model::ewsb_step, ¶ms, number_of_ewsb_iterations, ewsb_iteration_precision), - new Root_finder(Standard_model::tadpole_equations, ¶ms, number_of_ewsb_iterations, ewsb_iteration_precision, gsl_multiroot_fsolver_hybrids), - new Root_finder(Standard_model::tadpole_equations, ¶ms, number_of_ewsb_iterations, ewsb_iteration_precision, gsl_multiroot_fsolver_broyden) + std::unique_ptr solvers[] = { + std::unique_ptr(new Fixed_point_iterator(Standard_model::ewsb_step, ¶ms, number_of_ewsb_iterations, ewsb_iteration_precision)), + std::unique_ptr(new Root_finder(Standard_model::tadpole_equations, ¶ms, number_of_ewsb_iterations, ewsb_iteration_precision, gsl_multiroot_fsolver_hybrids)), + std::unique_ptr(new Root_finder(Standard_model::tadpole_equations, ¶ms, number_of_ewsb_iterations, ewsb_iteration_precision, gsl_multiroot_fsolver_broyden)) }; const std::size_t number_of_solvers = sizeof(solvers)/sizeof(*solvers); - double x_init[number_of_ewsb_equations] = { 0. }; - ewsb_initial_guess(x_init); + const auto x_init(ewsb_initial_guess()); #ifdef ENABLE_VERBOSE std::cout << "Solving EWSB equations ...\n" @@ -361,7 +349,7 @@ int Standard_model::solve_ewsb_iteratively() int status; for (std::size_t i = 0; i < number_of_solvers; ++i) { VERBOSE_MSG("\tStarting EWSB iteration using solver " << i); - status = solve_ewsb_iteratively_with(solvers[i], x_init); + status = solve_ewsb_iteratively_with(solvers[i].get(), x_init); if (status == EWSB_solver::SUCCESS) { VERBOSE_MSG("\tSolver " << i << " finished successfully!"); break; @@ -384,8 +372,6 @@ int Standard_model::solve_ewsb_iteratively() #endif } - std::for_each(solvers, solvers + number_of_solvers, Delete_object()); - return status; } @@ -399,10 +385,10 @@ int Standard_model::solve_ewsb_iteratively() */ int Standard_model::solve_ewsb_iteratively_with( EWSB_solver* solver, - const double x_init[number_of_ewsb_equations] + const Eigen::Matrix& x_init ) { - const int status = solver->solve(x_init); + const int status = solver->solve(&x_init[0]); mu2 = solver->get_solution(0); @@ -456,25 +442,28 @@ int Standard_model::solve_ewsb() return solve_ewsb_iteratively(ewsb_loop_order); } -void Standard_model::ewsb_initial_guess(double x_init[number_of_ewsb_equations]) +Eigen::Matrix Standard_model::ewsb_initial_guess() { + Eigen::Matrix x_init; + x_init[0] = mu2; + + return x_init; } /** * Calculates EWSB output parameters including loop-corrections. * - * @param ewsb_parameters new EWSB output parameters. \a - * ewsb_parameters is only modified if all new parameters are finite. + * Throws exception of type EEWSBStepFailed if new EWSB parameters are + * inf or nan. * - * @return GSL_SUCCESS if new EWSB output parameters are finite, - * GSL_EDOM otherwise. + * @return new set of EWSB output parameters */ -int Standard_model::ewsb_step(double ewsb_parameters[number_of_ewsb_equations]) const +Eigen::Matrix Standard_model::ewsb_step() const { - int error; double tadpole[number_of_ewsb_equations] = { 0. }; + Eigen::Matrix ewsb_parameters(Eigen::Matrix::Zero()); if (ewsb_loop_order > 0) { tadpole[0] += Re(tadpole_hh()); @@ -491,15 +480,13 @@ int Standard_model::ewsb_step(double ewsb_parameters[number_of_ewsb_equations]) const bool is_finite = IsFinite(mu2); - if (is_finite) { - error = GSL_SUCCESS; - ewsb_parameters[0] = mu2; + if (!is_finite) + throw EEWSBStepFailed(); - } else { - error = GSL_EDOM; - } + ewsb_parameters[0] = mu2; - return error; + + return ewsb_parameters; } /** @@ -531,10 +518,18 @@ int Standard_model::ewsb_step(const gsl_vector* x, void* params, gsl_vector* f) if (ewsb_loop_order > 0) model->calculate_DRbar_masses(); - double ewsb_parameters[number_of_ewsb_equations] = - { mu2 }; + Eigen::Matrix ewsb_parameters; + ewsb_parameters[0] = mu2; - const int status = model->ewsb_step(ewsb_parameters); + + int status = GSL_SUCCESS; + + try { + ewsb_parameters = model->ewsb_step(); + status = GSL_SUCCESS; + } catch (...) { + status = GSL_EDOM; + } for (std::size_t i = 0; i < number_of_ewsb_equations; ++i) gsl_vector_set(f, i, ewsb_parameters[i]); @@ -5929,7 +5924,7 @@ std::complex Standard_model::tadpole_hh() const -void Standard_model::self_energy_hh_2loop(double result[1]) const +double Standard_model::self_energy_hh_2loop() const { const double mt = MFu(2); const double yt = Yu(2,2); @@ -5945,8 +5940,7 @@ void Standard_model::self_energy_hh_2loop(double result[1]) const self_energy += self_energy_higgs_2loop_at_as_sm(scale, mt, yt, gs); } - result[0] = self_energy; - + return self_energy; } @@ -5981,11 +5975,8 @@ void Standard_model::calculate_Mhh_pole() const double M_tree(get_mass_matrix_hh()); const double p = old_Mhh; double self_energy = Re(self_energy_hh(p)); - if (pole_mass_loop_order > 1) { - double two_loop[1] = { 0. }; - self_energy_hh_2loop(two_loop); - self_energy += two_loop[0]; - } + if (pole_mass_loop_order > 1) + self_energy += self_energy_hh_2loop(); const double mass_sqr = M_tree - self_energy; PHYSICAL(Mhh) = SignedAbsSqrt(mass_sqr); diff --git a/src/standard_model.hpp b/src/standard_model.hpp index 7da0dce87..4831a859e 100644 --- a/src/standard_model.hpp +++ b/src/standard_model.hpp @@ -29,6 +29,7 @@ #include "betafunction.hpp" #include "standard_model_physical.hpp" #include "two_loop_corrections.hpp" +#include "error.hpp" #include "problems.hpp" #include "config.h" #include "lowe.h" @@ -37,10 +38,6 @@ #include #include -#ifdef ENABLE_THREADS -#include -#endif - #include #include @@ -431,9 +428,10 @@ class Standard_model : public Beta_function { std::complex tadpole_hh() const; /// calculates the tadpoles at current loop order - void tadpole_equations(double[number_of_ewsb_equations]) const; + Eigen::Matrix tadpole_equations() const; - void self_energy_hh_2loop(double result[1]) const; + /// calculates Higgs 2-loop self-energy + double self_energy_hh_2loop() const; void calculate_MVG_pole(); void calculate_MFv_pole(); @@ -512,6 +510,12 @@ class Standard_model : public Beta_function { unsigned ewsb_loop_order; }; + class EEWSBStepFailed : public Error { + public: + virtual ~EEWSBStepFailed() {} + virtual std::string what() const { return "Could not perform EWSB step."; } + }; + #ifdef ENABLE_THREADS struct Thread { typedef void(Standard_model::*Memfun_t)(); @@ -544,14 +548,14 @@ class Standard_model : public Beta_function { Physical_input input; #ifdef ENABLE_THREADS std::exception_ptr thread_exception; - static std::mutex mtx_fortran; /// locks fortran functions #endif int solve_ewsb_iteratively(); int solve_ewsb_iteratively(unsigned); - int solve_ewsb_iteratively_with(EWSB_solver*, const double[number_of_ewsb_equations]); - void ewsb_initial_guess(double[number_of_ewsb_equations]); - int ewsb_step(double[number_of_ewsb_equations]) const; + int solve_ewsb_iteratively_with(EWSB_solver*, const Eigen::Matrix&); + int solve_ewsb_tree_level_custom(); + Eigen::Matrix ewsb_initial_guess(); + Eigen::Matrix ewsb_step() const; static int ewsb_step(const gsl_vector*, void*, gsl_vector*); static int tadpole_equations(const gsl_vector*, void*, gsl_vector*); void copy_DRbar_masses_to_pole_masses(); From 3584c649a1cea7f17cf96aafa04fbefc6f18aa80 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Mon, 8 Aug 2016 20:30:02 +0200 Subject: [PATCH 41/64] remove empty if statement --- src/standard_model.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/standard_model.cpp b/src/standard_model.cpp index 57839efdf..2f95f9aa1 100644 --- a/src/standard_model.cpp +++ b/src/standard_model.cpp @@ -467,10 +467,6 @@ Eigen::Matrix Standard_mode if (ewsb_loop_order > 0) { tadpole[0] += Re(tadpole_hh()); - - if (ewsb_loop_order > 1) { - - } } double mu2; From 44b31fa92615a149aaa7e68ea65452fb52249298 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Wed, 10 Aug 2016 14:59:56 +0200 Subject: [PATCH 42/64] Bugfix: Fix potential race condition when multiple (N)MSSM classes are run in parallel --- meta/FlexibleSUSY.m | 4 +- meta/SelfEnergies.m | 631 ++++++++---------- src/module.mk | 7 +- src/mssm_twoloophiggs.cpp | 221 ++++++ src/mssm_twoloophiggs.h | 19 +- src/mssm_twoloophiggs.hpp | 93 +++ ...woloophiggs.f => mssm_twoloophiggs_impl.f} | 0 src/nmssm2loop.h | 3 - src/nmssm_twoloophiggs.cpp | 129 ++++ src/nmssm_twoloophiggs.h | 25 - src/nmssm_twoloophiggs.hpp | 48 ++ templates/mass_eigenstates.cpp.in | 7 - templates/mass_eigenstates.hpp.in | 5 - 13 files changed, 782 insertions(+), 410 deletions(-) create mode 100644 src/mssm_twoloophiggs.cpp create mode 100644 src/mssm_twoloophiggs.hpp rename src/{mssm_twoloophiggs.f => mssm_twoloophiggs_impl.f} (100%) create mode 100644 src/nmssm_twoloophiggs.cpp delete mode 100644 src/nmssm_twoloophiggs.h create mode 100644 src/nmssm_twoloophiggs.hpp diff --git a/meta/FlexibleSUSY.m b/meta/FlexibleSUSY.m index a2fe2538f..4002feca5 100644 --- a/meta/FlexibleSUSY.m +++ b/meta/FlexibleSUSY.m @@ -985,12 +985,12 @@ corresponding tadpole is real or imaginary (only in models with CP If[SARAH`UseHiggs2LoopMSSM === True, {twoLoopTadpolePrototypes, twoLoopTadpoleFunctions} = SelfEnergies`CreateTwoLoopTadpolesMSSM[SARAH`HiggsBoson]; {twoLoopSelfEnergyPrototypes, twoLoopSelfEnergyFunctions} = SelfEnergies`CreateTwoLoopSelfEnergiesMSSM[{SARAH`HiggsBoson, SARAH`PseudoScalar}]; - twoLoopHiggsHeaders = "#include \"sfermions.hpp\"\n#include \"mssm_twoloophiggs.h\"\n"; + twoLoopHiggsHeaders = "#include \"sfermions.hpp\"\n#include \"mssm_twoloophiggs.hpp\"\n"; ]; If[FlexibleSUSY`UseHiggs2LoopNMSSM === True, {twoLoopTadpolePrototypes, twoLoopTadpoleFunctions} = SelfEnergies`CreateTwoLoopTadpolesNMSSM[SARAH`HiggsBoson]; {twoLoopSelfEnergyPrototypes, twoLoopSelfEnergyFunctions} = SelfEnergies`CreateTwoLoopSelfEnergiesNMSSM[{SARAH`HiggsBoson, SARAH`PseudoScalar}]; - twoLoopHiggsHeaders = "#include \"sfermions.hpp\"\n#include \"nmssm_twoloophiggs.h\"\n"; + twoLoopHiggsHeaders = "#include \"sfermions.hpp\"\n#include \"mssm_twoloophiggs.hpp\"\n#include \"nmssm_twoloophiggs.hpp\"\n"; ]; setEWSBParametersFromGSLVector = EWSB`SetEWSBParametersFromGSLVector[parametersFixedByEWSB, freePhases, "x"]; calculateTreeLevelTadpoles = EWSB`FillArrayWithEWSBEqs[SARAH`HiggsBoson, "tadpole"]; diff --git a/meta/SelfEnergies.m b/meta/SelfEnergies.m index 8629a7364..54bc892c7 100644 --- a/meta/SelfEnergies.m +++ b/meta/SelfEnergies.m @@ -563,63 +563,61 @@ " <> TreeMasses`CallThirdGenerationHelperFunctionName[SARAH`Sneutrino, "msnu_1", "msnu_2", "theta_nu"] <> "; -double mst1sq = Sqr(mst_1), mst2sq = Sqr(mst_2); -double msb1sq = Sqr(msb_1), msb2sq = Sqr(msb_2); -double mstau1sq = Sqr(mstau_1), mstau2sq = Sqr(mstau_2); -double msnusq = Sqr(msnu_2); -double sxt = Sin(theta_t), cxt = Cos(theta_t); -double sxb = Sin(theta_b), cxb = Cos(theta_b); -double sintau = Sin(theta_tau), costau = Cos(theta_tau); - -double gs = " <> g3Str <> "; -double rmtsq = Sqr(" <> mtStr <> "); -double scalesq = Sqr(get_scale()); -double vev2 = " <> vev2Str <> "; -double tanb = " <> tanbStr <> "; -double amu = Re(" <> muStr <> "); -double mg = " <> m3Str <> "; -double mAsq = Sqr(" <> mA0Str <> "); -double cotbeta = 1.0 / tanb; -double rmbsq = Sqr(" <> mbStr <> "); -double rmtausq = Sqr(" <> mtauStr <> "); - -double s1s = 0., s2s = 0., s1t = 0., s2t = 0.; -double s1b = 0., s2b = 0., s1tau = 0., s2tau = 0.; +const double mst1sq = Sqr(mst_1), mst2sq = Sqr(mst_2); +const double msb1sq = Sqr(msb_1), msb2sq = Sqr(msb_2); +const double mstau1sq = Sqr(mstau_1), mstau2sq = Sqr(mstau_2); +const double msnusq = Sqr(msnu_2); +const double sxt = Sin(theta_t), cxt = Cos(theta_t); +const double sxb = Sin(theta_b), cxb = Cos(theta_b); +const double sintau = Sin(theta_tau), costau = Cos(theta_tau); +const double gs = " <> g3Str <> "; +const double rmtsq = Sqr(" <> mtStr <> "); +const double scalesq = Sqr(get_scale()); +const double vev2 = " <> vev2Str <> "; +const double tanb = " <> tanbStr <> "; +const double amu = Re(" <> muStr <> "); +const double mg = " <> m3Str <> "; +const double mAsq = Sqr(" <> mA0Str <> "); +const double cotbeta = 1.0 / tanb; +const double rmbsq = Sqr(" <> mbStr <> "); +const double rmtausq = Sqr(" <> mtauStr <> "); + +Eigen::Matrix ts(" <> GetTadpoleVectorCType[2] <> "::Zero()); +Eigen::Matrix tt(" <> GetTadpoleVectorCType[2] <> "::Zero()); +Eigen::Matrix tb(" <> GetTadpoleVectorCType[2] <> "::Zero()); +Eigen::Matrix tl(" <> GetTadpoleVectorCType[2] <> "::Zero()); if (HIGGS_2LOOP_CORRECTION_AT_AS) { - LOCK_MUTEX(); - tadpole_higgs_2loop_at_as_mssm( - &rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, - &amu, &tanb, &vev2, &gs, &s1s, &s2s); + ts = tadpole_higgs_2loop_at_as_mssm( + rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, + amu, tanb, vev2, gs); } if (HIGGS_2LOOP_CORRECTION_AT_AT) { - LOCK_MUTEX(); - tadpole_higgs_2loop_at_at_mssm( - &rmtsq, &rmbsq, &mAsq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, - &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, &s1t, &s2t); + tt = tadpole_higgs_2loop_at_at_mssm( + rmtsq, rmbsq, mAsq, mst1sq, mst2sq, msb1sq, msb2sq, + sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { - LOCK_MUTEX(); - tadpole_higgs_2loop_ab_as_mssm( - &rmbsq, &mg, &msb1sq, &msb2sq, &sxb, &cxb, &scalesq, - &amu, &cotbeta, &vev2, &gs, &s2b, &s1b); + tb = tadpole_higgs_2loop_ab_as_mssm( + rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, + amu, cotbeta, vev2, gs); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { - LOCK_MUTEX(); - tadpole_higgs_2loop_atau_atau_mssm( - &rmtausq, &mAsq, &msnusq, &mstau1sq, &mstau2sq, &sintau, - &costau, &scalesq, &amu, &tanb, &vev2, &s1tau, &s2tau); + tl = tadpole_higgs_2loop_atau_atau_mssm( + rmtausq, mAsq, msnusq, mstau1sq, mstau2sq, sintau, + costau, scalesq, amu, tanb, vev2); } " <> GetTadpoleVectorCType[2] <> " tadpole_2l(" <> GetTadpoleVectorCType[2] <> "::Zero()); -if (!std::isnan(s1s * s1t * s1b * s1tau * s2s * s2t * s2b * s2tau)) { - tadpole_2l(0) = (- s1s - s1t - s1b - s1tau) * " <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; - tadpole_2l(1) = (- s2s - s2t - s2b - s2tau) * " <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; -} +if (IsFinite(ts) && IsFinite(tt) && IsFinite(tb) && IsFinite(tl)) + tadpole_2l = - ts - tt - tb - tl; + +tadpole_2l(0) *= " <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; +tadpole_2l(1) *= " <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; return tadpole_2l;" ]; @@ -658,74 +656,74 @@ " <> TreeMasses`CallThirdGenerationHelperFunctionName[SARAH`Sneutrino, "msnu_1", "msnu_2", "theta_nu"] <> "; -double mst1sq = Sqr(mst_1), mst2sq = Sqr(mst_2); -double msb1sq = Sqr(msb_1), msb2sq = Sqr(msb_2); -double mstau1sq = Sqr(mstau_1), mstau2sq = Sqr(mstau_2); -double msnusq = Sqr(msnu_2); -double sxt = Sin(theta_t), cxt = Cos(theta_t); -double sxb = Sin(theta_b), cxb = Cos(theta_b); -double sintau = Sin(theta_tau), costau = Cos(theta_tau); - -double gs = " <> g3Str <> "; -double rmtsq = Sqr(" <> mtStr <> "); -double scalesq = Sqr(get_scale()); -double vev2 = " <> vev2Str <> "; +const double mst1sq = Sqr(mst_1), mst2sq = Sqr(mst_2); +const double msb1sq = Sqr(msb_1), msb2sq = Sqr(msb_2); +const double mstau1sq = Sqr(mstau_1), mstau2sq = Sqr(mstau_2); +const double msnusq = Sqr(msnu_2); +const double sxt = Sin(theta_t), cxt = Cos(theta_t); +const double sxb = Sin(theta_b), cxb = Cos(theta_b); +const double sintau = Sin(theta_tau), costau = Cos(theta_tau); +const double gs = " <> g3Str <> "; +const double rmtsq = Sqr(" <> mtStr <> "); +const double scalesq = Sqr(get_scale()); +const double vev2 = " <> vev2Str <> "; const double vev = Sqrt(vev2); -double tanb = " <> tanbStr <> "; +const double tanb = " <> tanbStr <> "; const double tanb2 = Sqr(tanb); const double sinb = tanb / Sqrt(1. + tanb2); const double cosb = 1. / Sqrt(1. + tanb2); -double amu = Re(" <> muStr <> "); -double mg = " <> m3Str <> "; -double mAsq = " <> mA0Str <> "; -double cotbeta = 1.0 / tanb; -double rmbsq = Sqr(" <> mbStr <> "); -double rmtausq = Sqr(" <> mtauStr <> "); - -double s1s = 0., s2s = 0., s1t = 0., s2t = 0.; -double s1b = 0., s2b = 0., s1tau = 0., s2tau = 0.; +const double amu = Re(" <> muStr <> "); +const double mg = " <> m3Str <> "; +const double mAsq = " <> mA0Str <> "; +const double cotbeta = 1.0 / tanb; +const double rmbsq = Sqr(" <> mbStr <> "); +const double rmtausq = Sqr(" <> mtauStr <> "); + +Eigen::Matrix ts(" <> GetTadpoleVectorCType[2] <> "::Zero()); +Eigen::Matrix tt(" <> GetTadpoleVectorCType[2] <> "::Zero()); +Eigen::Matrix tb(" <> GetTadpoleVectorCType[2] <> "::Zero()); +Eigen::Matrix tl(" <> GetTadpoleVectorCType[2] <> "::Zero()); if (HIGGS_2LOOP_CORRECTION_AT_AS) { - LOCK_MUTEX(); - tadpole_higgs_2loop_at_as_mssm( - &rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, - &amu, &tanb, &vev2, &gs, &s1s, &s2s); + ts = tadpole_higgs_2loop_at_as_mssm( + rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, + amu, tanb, vev2, gs); } if (HIGGS_2LOOP_CORRECTION_AT_AT) { - LOCK_MUTEX(); - tadpole_higgs_2loop_at_at_mssm( - &rmtsq, &rmbsq, &mAsq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, - &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, &s1t, &s2t); + tt = tadpole_higgs_2loop_at_at_mssm( + rmtsq, rmbsq, mAsq, mst1sq, mst2sq, msb1sq, msb2sq, + sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { - LOCK_MUTEX(); - tadpole_higgs_2loop_ab_as_mssm( - &rmbsq, &mg, &msb1sq, &msb2sq, &sxb, &cxb, &scalesq, - &amu, &cotbeta, &vev2, &gs, &s2b, &s1b); + tb = tadpole_higgs_2loop_ab_as_mssm( + rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, + amu, cotbeta, vev2, gs); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { - LOCK_MUTEX(); - tadpole_higgs_2loop_atau_atau_mssm( - &rmtausq, &mAsq, &msnusq, &mstau1sq, &mstau2sq, &sintau, - &costau, &scalesq, &amu, &tanb, &vev2, &s1tau, &s2tau); + tl = tadpole_higgs_2loop_atau_atau_mssm( + rmtausq, mAsq, msnusq, mstau1sq, mstau2sq, sintau, + costau, scalesq, amu, tanb, vev2); } // rescale T1 to get TS -const double sss = s1s * vev * cosb / " <> svevStr <> "; -const double ssb = s1b * vev * sinb / " <> svevStr <> "; +const double sss = ts(0) * vev * cosb / " <> svevStr <> "; +const double ssb = tb(0) * vev * sinb / " <> svevStr <> "; " <> GetTadpoleVectorCType[3] <> " tadpole_2l(" <> GetTadpoleVectorCType[3] <> "::Zero()); -if (!std::isnan(s1s * s1t * s1b * s1tau * s2s * s2t * s2b * s2tau - * sss * ssb)) { - tadpole_2l(0) = (- s1s - s1t - s1b - s1tau) * " <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; - tadpole_2l(1) = (- s2s - s2t - s2b - s2tau) * " <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; - tadpole_2l(2) = (- sss - ssb) * " <> svevStr <> "; +if (IsFinite(ts) && IsFinite(tt) && IsFinite(tb) && IsFinite(tl) && + std::isfinite(sss) && std::isfinite(ssb)) { + tadpole_2l.head<2>() = - ts - tt - tb - tl; + tadpole_2l(2) = - sss - ssb; } +tadpole_2l(0) *= " <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; +tadpole_2l(1) *= " <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; +tadpole_2l(2) *= " <> svevStr <> "; + return tadpole_2l;" ]; @@ -849,93 +847,85 @@ " <> TreeMasses`CallThirdGenerationHelperFunctionName[SARAH`Sneutrino, "msnu_1", "msnu_2", "theta_nu"] <> "; -double mst1sq = Sqr(mst_1), mst2sq = Sqr(mst_2); -double msb1sq = Sqr(msb_1), msb2sq = Sqr(msb_2); -double mstau1sq = Sqr(mstau_1), mstau2sq = Sqr(mstau_2); -double msnusq = Sqr(msnu_2); -double sxt = Sin(theta_t), cxt = Cos(theta_t); -double sxb = Sin(theta_b), cxb = Cos(theta_b); -double sintau = Sin(theta_tau), costau = Cos(theta_tau); - -double gs = " <> g3Str <> "; -double rmtsq = Sqr(" <> mtStr <> "); -double scalesq = Sqr(get_scale()); -double vev2 = " <> vev2Str <> "; -double tanb = " <> tanbStr <> "; +const double mst1sq = Sqr(mst_1), mst2sq = Sqr(mst_2); +const double msb1sq = Sqr(msb_1), msb2sq = Sqr(msb_2); +const double mstau1sq = Sqr(mstau_1), mstau2sq = Sqr(mstau_2); +const double msnusq = Sqr(msnu_2); +const double sxt = Sin(theta_t), cxt = Cos(theta_t); +const double sxb = Sin(theta_b), cxb = Cos(theta_b); +const double sintau = Sin(theta_tau), costau = Cos(theta_tau); +const double gs = " <> g3Str <> "; +const double rmtsq = Sqr(" <> mtStr <> "); +const double scalesq = Sqr(get_scale()); +const double vev2 = " <> vev2Str <> "; +const double tanb = " <> tanbStr <> "; const double tanb2 = Sqr(tanb); const double sinb = tanb / Sqrt(1. + tanb2); const double cosb = 1. / Sqrt(1. + tanb2); -double amu = Re(" <> muStr <> "); -double mg = " <> m3Str <> "; -double mAsq = Sqr(" <> mA0Str <> "); -double cotbeta = 1.0 / tanb; -double rmbsq = Sqr(" <> mbStr <> "); -double rmtausq = Sqr(" <> mtauStr <> "); -double fmasq = Abs(mAsq); - -double s11s = 0., s22s = 0., s12s = 0.; -double s11b = 0., s12b = 0., s22b = 0.; -double s11tau = 0., s12tau = 0., s22tau = 0.; -double s11w = 0., s22w = 0., s12w = 0.; -double p2s = 0., p2w = 0., p2b = 0., p2tau = 0.; -int scheme = 0; // chooses DR-bar scheme from slavich et al +const double amu = Re(" <> muStr <> "); +const double mg = " <> m3Str <> "; +const double mAsq = Sqr(" <> mA0Str <> "); +const double cotbeta = 1.0 / tanb; +const double rmbsq = Sqr(" <> mbStr <> "); +const double rmtausq = Sqr(" <> mtauStr <> "); +const double fmasq = Abs(mAsq); + +Eigen::Matrix ss(Eigen::Matrix::Zero()); +Eigen::Matrix sb(Eigen::Matrix::Zero()); +Eigen::Matrix sl(Eigen::Matrix::Zero()); +Eigen::Matrix st(Eigen::Matrix::Zero()); +double p2s = 0., p2t = 0., p2b = 0., p2tau = 0.; if (HIGGS_2LOOP_CORRECTION_AT_AS) { - LOCK_MUTEX(); - self_energy_higgs_2loop_at_as_mssm( - &rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, &amu, - &tanb, &vev2, &gs, &scheme, &s11s, &s22s, &s12s); - self_energy_pseudoscalar_2loop_at_as_mssm( - &rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, &amu, - &tanb, &vev2, &gs, &p2s); + ss = self_energy_higgs_2loop_at_as_mssm( + rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, + tanb, vev2, gs); + p2s = self_energy_pseudoscalar_2loop_at_as_mssm( + rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, + tanb, vev2, gs); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { - LOCK_MUTEX(); - self_energy_higgs_2loop_ab_as_mssm( - &rmbsq, &mg, &msb1sq, &msb2sq, &sxb, &cxb, &scalesq, &amu, - &cotbeta, &vev2, &gs, &scheme, &s22b, &s11b, &s12b); - self_energy_pseudoscalar_2loop_ab_as_mssm( - &rmbsq, &mg, &msb1sq, &msb2sq, &sxb, &cxb, &scalesq, &amu, - &cotbeta, &vev2, &gs, &p2b); + sb = self_energy_higgs_2loop_ab_as_mssm( + rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, + cotbeta, vev2, gs); + p2b = self_energy_pseudoscalar_2loop_ab_as_mssm( + rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, + cotbeta, vev2, gs); } if (HIGGS_2LOOP_CORRECTION_AT_AT) { - LOCK_MUTEX(); - self_energy_higgs_2loop_at_at_mssm( - &rmtsq, &rmbsq, &fmasq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, - &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, &s11w, - &s12w, &s22w); - self_energy_pseudoscalar_2loop_at_at_mssm( - &rmtsq, &rmbsq, &fmasq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, - &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, &p2w); + st = self_energy_higgs_2loop_at_at_mssm( + rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, + sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); + p2t = self_energy_pseudoscalar_2loop_at_at_mssm( + rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, + sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { - LOCK_MUTEX(); - self_energy_higgs_2loop_atau_atau_mssm( - &rmtausq, &fmasq, &msnusq, &mstau1sq, &mstau2sq, &sintau, - &costau, &scalesq, &amu, &tanb, &vev2, &scheme, &s11tau, - &s22tau, &s12tau); - self_energy_pseudoscalar_2loop_atau_atau_mssm( - &rmtausq, &fmasq, &msnusq, &mstau1sq, &mstau2sq, &sintau, - &costau, &scalesq, &amu, &tanb, &vev2, &p2tau); + sl = self_energy_higgs_2loop_atau_atau_mssm( + rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, + costau, scalesq, amu, tanb, vev2); + p2tau = self_energy_pseudoscalar_2loop_atau_atau_mssm( + rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, + costau, scalesq, amu, tanb, vev2); } // calculate dMA, which is the two loop correction to take the DRbar // psuedoscalar mass ( = -2m3sq/sin(2beta)) to the pole mass (as in // Eq. (8) of hep-ph/0305127) -const double dMA = p2s + p2w + p2b + p2tau; +const double dMA = p2s + p2t + p2b + p2tau; // dMA contains two loop tadpoles, which we'll subtract const auto tadpole(" <> CreateNLoopTadpoleFunctionName[SARAH`HiggsBoson,2] <> "()); -" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> " self_energy_2l; +" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> " self_energy_2l(-ss - st - sb - sl); -self_energy_2l(0,0) = - s11s - s11w - s11b - s11tau - dMA * Sqr(sinb) + tadpole(0) / " <> vdStr <> "; -self_energy_2l(0,1) = - s12s - s12w - s12b - s12tau + dMA * sinb * cosb; -self_energy_2l(1,0) = self_energy_2l(0,1); -self_energy_2l(1,1) = - s22s - s22w - s22b - s22tau - dMA * Sqr(cosb) + tadpole(1) / " <> vuStr <> "; +self_energy_2l(0,0) += - dMA * Sqr(sinb) + tadpole(0) / " <> vdStr <> "; +self_energy_2l(0,1) += + dMA * sinb * cosb; +self_energy_2l(1,0) = self_energy_2l(0,1); +self_energy_2l(1,1) += - dMA * Sqr(cosb) + tadpole(1) / " <> vuStr <> "; return self_energy_2l;" ]; @@ -976,63 +966,58 @@ " <> TreeMasses`CallThirdGenerationHelperFunctionName[SARAH`Sneutrino, "msnu_1", "msnu_2", "theta_nu"] <> "; -double mst1sq = Sqr(mst_1), mst2sq = Sqr(mst_2); -double msb1sq = Sqr(msb_1), msb2sq = Sqr(msb_2); -double mstau1sq = Sqr(mstau_1), mstau2sq = Sqr(mstau_2); -double msnusq = Sqr(msnu_2); -double sxt = Sin(theta_t), cxt = Cos(theta_t); -double sxb = Sin(theta_b), cxb = Cos(theta_b); -double sintau = Sin(theta_tau), costau = Cos(theta_tau); - -double gs = " <> g3Str <> "; -double rmtsq = Sqr(" <> mtStr <> "); -double scalesq = Sqr(get_scale()); -double vev2 = " <> vev2Str <> "; -double tanb = " <> tanbStr <> "; +const double mst1sq = Sqr(mst_1), mst2sq = Sqr(mst_2); +const double msb1sq = Sqr(msb_1), msb2sq = Sqr(msb_2); +const double mstau1sq = Sqr(mstau_1), mstau2sq = Sqr(mstau_2); +const double msnusq = Sqr(msnu_2); +const double sxt = Sin(theta_t), cxt = Cos(theta_t); +const double sxb = Sin(theta_b), cxb = Cos(theta_b); +const double sintau = Sin(theta_tau), costau = Cos(theta_tau); +const double gs = " <> g3Str <> "; +const double rmtsq = Sqr(" <> mtStr <> "); +const double scalesq = Sqr(get_scale()); +const double vev2 = " <> vev2Str <> "; +const double tanb = " <> tanbStr <> "; const double tanb2 = Sqr(tanb); const double sinb = tanb / Sqrt(1. + tanb2); const double cosb = 1. / Sqrt(1. + tanb2); const double sinb2 = Sqr(sinb); const double cosb2 = Sqr(cosb); -double amu = Re(" <> muStr <> "); -double mg = " <> m3Str <> "; -double mAsq = Sqr(" <> mA0Str <> "); -double cotbeta = 1.0 / tanb; -double rmbsq = Sqr(" <> mbStr <> "); -double rmtausq = Sqr(" <> mtauStr <> "); -double fmasq = Abs(mAsq); +const double amu = Re(" <> muStr <> "); +const double mg = " <> m3Str <> "; +const double mAsq = Sqr(" <> mA0Str <> "); +const double cotbeta = 1.0 / tanb; +const double rmbsq = Sqr(" <> mbStr <> "); +const double rmtausq = Sqr(" <> mtauStr <> "); +const double fmasq = Abs(mAsq); -double p2s = 0., p2w = 0., p2b = 0., p2tau = 0.; +double p2s = 0., p2t = 0., p2b = 0., p2tau = 0.; if (HIGGS_2LOOP_CORRECTION_AT_AS) { - LOCK_MUTEX(); - self_energy_pseudoscalar_2loop_at_as_mssm( - &rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, &amu, - &tanb, &vev2, &gs, &p2s); + p2s = self_energy_pseudoscalar_2loop_at_as_mssm( + rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, + tanb, vev2, gs); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { - LOCK_MUTEX(); - self_energy_pseudoscalar_2loop_ab_as_mssm( - &rmbsq, &mg, &msb1sq, &msb2sq, &sxb, &cxb, &scalesq, &amu, - &cotbeta, &vev2, &gs, &p2b); + p2b = self_energy_pseudoscalar_2loop_ab_as_mssm( + rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, + cotbeta, vev2, gs); } if (HIGGS_2LOOP_CORRECTION_AT_AT) { - LOCK_MUTEX(); - self_energy_pseudoscalar_2loop_at_at_mssm( - &rmtsq, &rmbsq, &fmasq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, - &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, &p2w); + p2t = self_energy_pseudoscalar_2loop_at_at_mssm( + rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, + sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { - LOCK_MUTEX(); - self_energy_pseudoscalar_2loop_atau_atau_mssm( - &rmtausq, &fmasq, &msnusq, &mstau1sq, &mstau2sq, &sintau, - &costau, &scalesq, &amu, &tanb, &vev2, &p2tau); + p2tau = self_energy_pseudoscalar_2loop_atau_atau_mssm( + rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, + costau, scalesq, amu, tanb, vev2); } -const double dMA = p2s + p2w + p2b + p2tau; +const double dMA = p2s + p2t + p2b + p2tau; // dMA contains two loop tadpoles, which we'll subtract const auto tadpole(" <> CreateNLoopTadpoleFunctionName[SARAH`HiggsBoson,2] <> "()); @@ -1087,118 +1072,92 @@ " <> TreeMasses`CallThirdGenerationHelperFunctionName[SARAH`Sneutrino, "msnu_1", "msnu_2", "theta_nu"] <> "; -double mst1sq = Sqr(mst_1), mst2sq = Sqr(mst_2); -double msb1sq = Sqr(msb_1), msb2sq = Sqr(msb_2); -double mstau1sq = Sqr(mstau_1), mstau2sq = Sqr(mstau_2); -double msnusq = Sqr(msnu_2); -double sxt = Sin(theta_t), cxt = Cos(theta_t); -double sxb = Sin(theta_b), cxb = Cos(theta_b); -double sintau = Sin(theta_tau), costau = Cos(theta_tau); - -double gs = " <> g3Str <> "; -double as = Sqr(gs) / (4.0 * Pi); -double rmt = " <> mtStr <> "; -double rmtsq = Sqr(rmt); -double scalesq = Sqr(get_scale()); -double vev2 = " <> vev2Str <> "; -double vev = Sqrt(" <> vev2Str <> "); -double tanb = " <> tanbStr <> "; +const double mst1sq = Sqr(mst_1), mst2sq = Sqr(mst_2); +const double msb1sq = Sqr(msb_1), msb2sq = Sqr(msb_2); +const double mstau1sq = Sqr(mstau_1), mstau2sq = Sqr(mstau_2); +const double msnusq = Sqr(msnu_2); +const double sxt = Sin(theta_t), cxt = Cos(theta_t); +const double sxb = Sin(theta_b), cxb = Cos(theta_b); +const double sintau = Sin(theta_tau), costau = Cos(theta_tau); +const double gs = " <> g3Str <> "; +const double as = Sqr(gs) / (4.0 * Pi); +const double rmt = " <> mtStr <> "; +const double rmtsq = Sqr(rmt); +const double scalesq = Sqr(get_scale()); +const double vev2 = " <> vev2Str <> "; +const double vev = Sqrt(" <> vev2Str <> "); +const double tanb = " <> tanbStr <> "; const double tanb2 = Sqr(tanb); const double sinb = tanb / Sqrt(1. + tanb2); const double cosb = 1. / Sqrt(1. + tanb2); -double amu = Re(" <> muStr <> "); -double mg = " <> m3Str <> "; -double mAsq = " <> mA0Str <> "; -double cotb = 1.0 / tanb; -double rmb = " <> mbStr <> "; -double rmbsq = Sqr(rmb); -double rmtausq = Sqr(" <> mtauStr <> "); -double fmasq = Abs(mAsq); -double lamS = Re(" <> lambdaStr <> "); +const double amu = Re(" <> muStr <> "); +const double mg = " <> m3Str <> "; +const double mAsq = " <> mA0Str <> "; +const double cotb = 1.0 / tanb; +const double rmb = " <> mbStr <> "; +const double rmbsq = Sqr(rmb); +const double rmtausq = Sqr(" <> mtauStr <> "); +const double fmasq = Abs(mAsq); +const double lamS = Re(" <> lambdaStr <> "); static const double root2 = Sqrt(2.0); -double vevS = vev / root2; -double svevS = " <> vsStr <> " / root2; -int loop = 2; -int scheme = 0; // selects DR-bar scheme - -double s11w = 0., s12w = 0., s22w = 0.; -double s11tau = 0., s12tau = 0., s22tau = 0.; -double p2w = 0., p2tau = 0.; +const double vevS = vev / root2; +const double svevS = " <> vsStr <> " / root2; -double DMS[3][3] = {{ 0. }}, DMP[3][3] = {{ 0. }}; -double DMSB[3][3] = {{ 0. }}, DMPB[3][3] = {{ 0. }}; +Eigen::Matrix ss(Eigen::Matrix::Zero()); +Eigen::Matrix sb(Eigen::Matrix::Zero()); +Eigen::Matrix sl(Eigen::Matrix::Zero()); +Eigen::Matrix st(Eigen::Matrix::Zero()); +double p2t = 0., p2tau = 0.; if (HIGGS_2LOOP_CORRECTION_AT_AS) { - LOCK_MUTEX(); - self_energy_higgs_2loop_at_as_nmssm( - &loop, &rmt, &mg, &mst1sq, &mst2sq, &sxt, &cxt, - &scalesq, &tanb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); + ss = self_energy_higgs_2loop_at_as_nmssm( + rmt, mg, mst1sq, mst2sq, sxt, cxt, + scalesq, tanb, vevS, lamS, svevS, as); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { - LOCK_MUTEX(); - self_energy_higgs_2loop_ab_as_nmssm( - &loop, &rmb, &mg, &msb1sq, &msb2sq, &sxb, &cxb, - &scalesq, &cotb, &vevS, &lamS, &svevS, &as, &DMSB, &DMPB); + sb = self_energy_higgs_2loop_ab_as_nmssm( + rmb, mg, msb1sq, msb2sq, sxb, cxb, + scalesq, cotb, vevS, lamS, svevS, as); } // Corrections as in MSSM, not corrected for NMSSM, // should be OK for MSSM states when S state is close to decoupled if (HIGGS_2LOOP_CORRECTION_AT_AT) { - LOCK_MUTEX(); - self_energy_higgs_2loop_at_at_mssm( - &rmtsq, &rmbsq, &fmasq, &mst1sq, &mst2sq, &msb1sq, - &msb2sq, &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, - &vev2, &s11w, &s12w, &s22w); - self_energy_pseudoscalar_2loop_at_at_mssm( - &rmtsq, &rmbsq, &fmasq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, - &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, &p2w); + st = self_energy_higgs_2loop_at_at_mssm( + rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, + msb2sq, sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); + p2t = self_energy_pseudoscalar_2loop_at_at_mssm( + rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, + sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { - LOCK_MUTEX(); - self_energy_higgs_2loop_atau_atau_mssm( - &rmtausq, &fmasq, &msnusq, &mstau1sq, &mstau2sq, &sintau, - &costau, &scalesq, &amu, &tanb, &vev2, &scheme, &s11tau, - &s22tau, &s12tau); - self_energy_pseudoscalar_2loop_atau_atau_mssm( - &rmtausq, &fmasq, &msnusq, &mstau1sq, &mstau2sq, &sintau, - &costau, &scalesq, &amu, &tanb, &vev2, &p2tau); -} - -// Make appropriate substitutions for elements following 0907.4682 -// bottom of page 9 -std::swap(DMSB[0][0], DMSB[1][1]); -std::swap(DMSB[0][2], DMSB[1][2]); - -for (int i = 0; i < 3; i++) { - for (int j = 0; j < 3; j++) { - DMS[i][j] += DMSB[i][j]; - } + sl = self_energy_higgs_2loop_atau_atau_mssm( + rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, + costau, scalesq, amu, tanb, vev2); + p2tau = self_energy_pseudoscalar_2loop_atau_atau_mssm( + rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, + costau, scalesq, amu, tanb, vev2); } -const double dMA = p2w + p2tau; +const double dMA = p2t + p2tau; -// subtract two-loop tadpoles const auto tadpole(" <> CreateNLoopTadpoleFunctionName[SARAH`HiggsBoson,2] <> "()); -DMS[0][0] += s11w + s11tau + dMA * Sqr(sinb) - tadpole(0) / " <> vdStr <> "; -DMS[0][1] += s12w + s12tau - dMA * sinb * cosb; -DMS[1][1] += s22w + s22tau + dMA * Sqr(cosb) - tadpole(1) / " <> vuStr <> "; -DMS[2][2] += - tadpole(2) / " <> vsStr <> "; +" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> " self_energy_2l(-ss - sb); -" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> " self_energy_2l; +// adding MSSM corrections to top-left corner of self-energy matrix +self_energy_2l.topLeftCorner<2,2>() += -st - sl; -self_energy_2l(0,0) = - DMS[0][0]; -self_energy_2l(0,1) = - DMS[0][1]; -self_energy_2l(0,2) = - DMS[0][2]; -self_energy_2l(1,0) = self_energy_2l(0,1); -self_energy_2l(1,1) = - DMS[1][1]; -self_energy_2l(1,2) = - DMS[1][2]; -self_energy_2l(2,0) = self_energy_2l(0,2); -self_energy_2l(2,1) = self_energy_2l(1,2); -self_energy_2l(2,2) = - DMS[2][2]; +// subtract two-loop tadpoles +self_energy_2l(0,0) -= + dMA * Sqr(sinb) - tadpole(0) / " <> vdStr <> "; +self_energy_2l(0,1) -= - dMA * sinb * cosb; +self_energy_2l(1,1) -= + dMA * Sqr(cosb) - tadpole(1) / " <> vuStr <> "; +self_energy_2l(2,2) -= - tadpole(2) / " <> vsStr <> "; + +Symmetrize(self_energy_2l); return self_energy_2l;" ]; @@ -1242,109 +1201,83 @@ " <> TreeMasses`CallThirdGenerationHelperFunctionName[SARAH`Sneutrino, "msnu_1", "msnu_2", "theta_nu"] <> "; -double mst1sq = Sqr(mst_1), mst2sq = Sqr(mst_2); -double msb1sq = Sqr(msb_1), msb2sq = Sqr(msb_2); -double mstau1sq = Sqr(mstau_1), mstau2sq = Sqr(mstau_2); -double msnusq = Sqr(msnu_2); -double sxt = Sin(theta_t), cxt = Cos(theta_t); -double sxb = Sin(theta_b), cxb = Cos(theta_b); -double sintau = Sin(theta_tau), costau = Cos(theta_tau); - -double gs = " <> g3Str <> "; -double as = Sqr(gs) / (4.0 * Pi); -double rmt = " <> mtStr <> "; -double rmtsq = Sqr(rmt); -double scalesq = Sqr(get_scale()); -double vev2 = " <> vev2Str <> "; -double vev = Sqrt(" <> vev2Str <> "); -double tanb = " <> tanbStr <> "; +const double mst1sq = Sqr(mst_1), mst2sq = Sqr(mst_2); +const double msb1sq = Sqr(msb_1), msb2sq = Sqr(msb_2); +const double mstau1sq = Sqr(mstau_1), mstau2sq = Sqr(mstau_2); +const double msnusq = Sqr(msnu_2); +const double sxt = Sin(theta_t), cxt = Cos(theta_t); +const double sxb = Sin(theta_b), cxb = Cos(theta_b); +const double sintau = Sin(theta_tau), costau = Cos(theta_tau); +const double gs = " <> g3Str <> "; +const double as = Sqr(gs) / (4.0 * Pi); +const double rmt = " <> mtStr <> "; +const double rmtsq = Sqr(rmt); +const double scalesq = Sqr(get_scale()); +const double vev2 = " <> vev2Str <> "; +const double vev = Sqrt(" <> vev2Str <> "); +const double tanb = " <> tanbStr <> "; const double tanb2 = Sqr(tanb); const double sinb = tanb / Sqrt(1. + tanb2); const double cosb = 1. / Sqrt(1. + tanb2); const double sinb2 = Sqr(sinb); const double cosb2 = Sqr(cosb); -double amu = Re(" <> muStr <> "); -double mg = " <> m3Str <> "; -double mAsq = " <> mA0Str <> "; -double cotb = 1.0 / tanb; -double rmb = " <> mbStr <> "; -double rmbsq = Sqr(rmb); -double rmtausq = Sqr(" <> mtauStr <> "); -double fmasq = Abs(mAsq); -double lamS = Re(" <> lambdaStr <> "); +const double amu = Re(" <> muStr <> "); +const double mg = " <> m3Str <> "; +const double mAsq = " <> mA0Str <> "; +const double cotb = 1.0 / tanb; +const double rmb = " <> mbStr <> "; +const double rmbsq = Sqr(rmb); +const double rmtausq = Sqr(" <> mtauStr <> "); +const double fmasq = Abs(mAsq); +const double lamS = Re(" <> lambdaStr <> "); static const double root2 = Sqrt(2.0); -double vevS = vev / root2; -double svevS = " <> vsStr <> " / root2; -int loop = 2; - -double p2w = 0., p2tau = 0.; +const double vevS = vev / root2; +const double svevS = " <> vsStr <> " / root2; -double DMS[3][3] = {{ 0. }}, DMP[3][3] = {{ 0. }}; -double DMSB[3][3] = {{ 0. }}, DMPB[3][3] = {{ 0. }}; +Eigen::Matrix ps(Eigen::Matrix::Zero()); +Eigen::Matrix pb(Eigen::Matrix::Zero()); +double p2t = 0., p2tau = 0.; if (HIGGS_2LOOP_CORRECTION_AT_AS) { - LOCK_MUTEX(); - self_energy_higgs_2loop_at_as_nmssm( - &loop, &rmt, &mg, &mst1sq, &mst2sq, &sxt, &cxt, - &scalesq, &tanb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); + ps = self_energy_pseudoscalar_2loop_at_as_nmssm( + rmt, mg, mst1sq, mst2sq, sxt, cxt, + scalesq, tanb, vevS, lamS, svevS, as); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { - LOCK_MUTEX(); - self_energy_higgs_2loop_ab_as_nmssm( - &loop, &rmb, &mg, &msb1sq, &msb2sq, &sxb, &cxb, - &scalesq, &cotb, &vevS, &lamS, &svevS, &as, &DMSB, &DMPB); + pb = self_energy_pseudoscalar_2loop_ab_as_nmssm( + rmb, mg, msb1sq, msb2sq, sxb, cxb, + scalesq, cotb, vevS, lamS, svevS, as); } // Corrections as in MSSM, not corrected for NMSSM, // should be OK for MSSM states when S state is close to decoupled if (HIGGS_2LOOP_CORRECTION_AT_AT) { - LOCK_MUTEX(); - self_energy_pseudoscalar_2loop_at_at_mssm( - &rmtsq, &rmbsq, &fmasq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, - &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, &p2w); + p2t = self_energy_pseudoscalar_2loop_at_at_mssm( + rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, + sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { - LOCK_MUTEX(); - self_energy_pseudoscalar_2loop_atau_atau_mssm( - &rmtausq, &fmasq, &msnusq, &mstau1sq, &mstau2sq, &sintau, - &costau, &scalesq, &amu, &tanb, &vev2, &p2tau); + p2tau = self_energy_pseudoscalar_2loop_atau_atau_mssm( + rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, + costau, scalesq, amu, tanb, vev2); } -// Make appropriate substitutions for elements following 0907.4682 -// bottom of page 9 -std::swap(DMPB[0][0], DMPB[1][1]); -std::swap(DMPB[0][2], DMPB[1][2]); +const double dMA = p2t + p2tau; -for (int i = 0; i < 3; i++) { - for (int j = 0; j < 3; j++) { - DMP[i][j] += DMPB[i][j]; - } -} - -const double dMA = p2w + p2tau; - -// subtract two-loop tadpoles const auto tadpole(" <> CreateNLoopTadpoleFunctionName[SARAH`HiggsBoson,2] <> "()); -DMP[0][0] += dMA * sinb2 - tadpole(0) / " <> vdStr <> "; -DMP[0][1] += dMA * sinb * cosb; -DMP[1][1] += dMA * cosb2 - tadpole(1) / " <> vuStr <> "; -DMP[2][2] += - tadpole(2) / " <> vsStr <> "; +" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`PseudoScalar]] <> " self_energy_2l(-ps - pb); -" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`PseudoScalar]] <> " self_energy_2l; +// subtract two-loop tadpoles +self_energy_2l(0,0) -= dMA * sinb2 - tadpole(0) / " <> vdStr <> "; +self_energy_2l(0,1) -= dMA * sinb * cosb; +self_energy_2l(1,1) -= dMA * cosb2 - tadpole(1) / " <> vuStr <> "; +self_energy_2l(2,2) -= - tadpole(2) / " <> vsStr <> "; -self_energy_2l(0,0) = - DMP[0][0]; -self_energy_2l(0,1) = - DMP[0][1]; -self_energy_2l(0,2) = - DMP[0][2]; -self_energy_2l(1,0) = self_energy_2l(0,1); -self_energy_2l(1,1) = - DMP[1][1]; -self_energy_2l(1,2) = - DMP[1][2]; -self_energy_2l(2,0) = self_energy_2l(0,2); -self_energy_2l(2,1) = self_energy_2l(1,2); -self_energy_2l(2,2) = - DMP[2][2]; +Symmetrize(self_energy_2l); return self_energy_2l;" ]; diff --git a/src/module.mk b/src/module.mk index 8d2fded05..4123eede4 100644 --- a/src/module.mk +++ b/src/module.mk @@ -20,7 +20,9 @@ LIBFLEXI_SRC := \ $(DIR)/linalg.cpp \ $(DIR)/lowe.cpp \ $(DIR)/sfermions.cpp \ - $(DIR)/mssm_twoloophiggs.f \ + $(DIR)/mssm_twoloophiggs.cpp \ + $(DIR)/mssm_twoloophiggs_impl.f \ + $(DIR)/nmssm_twoloophiggs.cpp \ $(DIR)/nmssm2loop.f \ $(DIR)/numerics.cpp \ $(DIR)/numerics2.cpp \ @@ -79,9 +81,10 @@ LIBFLEXI_HDR := \ $(DIR)/matching.hpp \ $(DIR)/minimizer.hpp \ $(DIR)/mssm_twoloophiggs.h \ + $(DIR)/mssm_twoloophiggs.hpp \ $(DIR)/mycomplex.h \ + $(DIR)/nmssm_twoloophiggs.hpp \ $(DIR)/nmssm2loop.h \ - $(DIR)/nmssm_twoloophiggs.h \ $(DIR)/numerics.h \ $(DIR)/numerics2.hpp \ $(DIR)/pmns.hpp \ diff --git a/src/mssm_twoloophiggs.cpp b/src/mssm_twoloophiggs.cpp new file mode 100644 index 000000000..8a0b97440 --- /dev/null +++ b/src/mssm_twoloophiggs.cpp @@ -0,0 +1,221 @@ +// ==================================================================== +// This file is part of FlexibleSUSY. +// +// FlexibleSUSY is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published +// by the Free Software Foundation, either version 3 of the License, +// or (at your option) any later version. +// +// FlexibleSUSY is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with FlexibleSUSY. If not, see +// . +// ==================================================================== + +#include "mssm_twoloophiggs.hpp" +#include "mssm_twoloophiggs.h" +#include "config.h" +#include + +#ifdef ENABLE_THREADS + #include + #define LOCK_MUTEX() std::lock_guard lg(mtx_mssm) +#else + #define LOCK_MUTEX() +#endif + +namespace flexiblesusy { + +static std::mutex mtx_mssm; /// locks MSSM fortran functions + +Eigen::Matrix tadpole_higgs_2loop_at_as_mssm( + double rmtsq, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, + double amu, double tanb, double vev2, double gs) +{ + Eigen::Matrix result; + + LOCK_MUTEX(); + + ewsb2loop_(&rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, + &amu, &tanb, &vev2, &gs, &result(0), &result(1)); + + return result; +} + +Eigen::Matrix tadpole_higgs_2loop_at_at_mssm( + double rmtsq, double rmbsq, double mAsq, double mst1sq, + double mst2sq, double msb1sq, double msb2sq, + double sxt, double cxt, double sxb, double cxb, + double scalesq, double amu, double tanb, double vev2) +{ + Eigen::Matrix result; + + LOCK_MUTEX(); + + ddstad_(&rmtsq, &rmbsq, &mAsq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, + &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, + &result(0), &result(1)); + + return result; +} + +Eigen::Matrix tadpole_higgs_2loop_ab_as_mssm( + double rmbsq, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, + double amu, double cotbeta, double vev2, double gs) +{ + Eigen::Matrix result(tadpole_higgs_2loop_at_as_mssm( + rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, + amu, cotbeta, vev2, gs)); + + std::swap(result(0), result(1)); + + return result; +} + +Eigen::Matrix tadpole_higgs_2loop_atau_atau_mssm( + double rmtausq, double mAsq, double msnusq, double mstau1sq, + double mstau2sq, double sintau, double costau, double scalesq, + double amu, double tanb, double vev2) +{ + Eigen::Matrix result; + + LOCK_MUTEX(); + + tausqtad_(&rmtausq, &mAsq, &msnusq, &mstau1sq, &mstau2sq, &sintau, + &costau, &scalesq, &amu, &tanb, &vev2, &result(0), &result(1)); + + return result; +} + +Eigen::Matrix self_energy_higgs_2loop_at_as_mssm( + double rmtsq, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, double amu, + double tanb, double vev2, double gs, int scheme) +{ + Eigen::Matrix result; + + LOCK_MUTEX(); + + dszhiggs_(&rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, &amu, + &tanb, &vev2, &gs, &scheme, + &result(0,0), &result(1,1), &result(0,1)); + + result(1,0) = result(0,1); + + return result; +} + +Eigen::Matrix self_energy_higgs_2loop_at_at_mssm( + double rmtsq, double rmbsq, double fmasq, double mst1sq, + double mst2sq, double msb1sq, double msb2sq, + double sxt, double cxt, double sxb, double cxb, + double scalesq, double amu, double tanb, double vev2) +{ + Eigen::Matrix result; + + LOCK_MUTEX(); + + ddshiggs_(&rmtsq, &rmbsq, &fmasq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, + &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, + &result(0,0), &result(0,1), &result(1,1)); + + result(1,0) = result(0,1); + + return result; +} + +Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm( + double rmbsq, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, double amu, + double cotbeta, double vev2, double gs, int scheme) +{ + Eigen::Matrix result(self_energy_higgs_2loop_at_as_mssm( + rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, + cotbeta, vev2, gs, scheme)); + + std::swap(result(0,0), result(1,1)); + + return result; +} + +Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm( + double rmtausq, double fmasq, double msnusq, double mstau1sq, + double mstau2sq, double sintau, double costau, double scalesq, + double amu, double tanb, double vev2, int scheme) +{ + Eigen::Matrix result; + + LOCK_MUTEX(); + + tausqhiggs_(&rmtausq, &fmasq, &msnusq, &mstau1sq, &mstau2sq, &sintau, + &costau, &scalesq, &amu, &tanb, &vev2, &scheme, + &result(0,0), &result(1,1), &result(0,1)); + + result(1,0) = result(0,1); + + return result; +} + +double self_energy_pseudoscalar_2loop_at_as_mssm( + double rmtsq, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, double amu, + double tanb, double vev2, double gs) +{ + double result; + + LOCK_MUTEX(); + + dszodd_(&rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, &amu, + &tanb, &vev2, &gs, &result); + + return result; +} + +double self_energy_pseudoscalar_2loop_at_at_mssm( + double rmtsq, double rmbsq, double fmasq, double mst1sq, + double mst2sq, double msb1sq, double msb2sq, + double sxt, double cxt, double sxb, double cxb, + double scalesq, double amu, double tanb, double vev2) +{ + double result; + + LOCK_MUTEX(); + + ddsodd_(&rmtsq, &rmbsq, &fmasq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, + &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, &result); + + return result; +} + +double self_energy_pseudoscalar_2loop_ab_as_mssm( + double rmbsq, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, double amu, + double cotbeta, double vev2, double gs) +{ + return self_energy_pseudoscalar_2loop_at_as_mssm( + rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, + cotbeta, vev2, gs); +} + +double self_energy_pseudoscalar_2loop_atau_atau_mssm( + double rmtausq, double fmasq, double msnusq, double mstau1sq, + double mstau2sq, double sintau, double costau, double scalesq, + double amu, double tanb, double vev2) +{ + double result; + + LOCK_MUTEX(); + + tausqodd_(&rmtausq, &fmasq, &msnusq, &mstau1sq, &mstau2sq, &sintau, + &costau, &scalesq, &amu, &tanb, &vev2, &result); + + return result; +} + +} // namespace flexiblesusy diff --git a/src/mssm_twoloophiggs.h b/src/mssm_twoloophiggs.h index ed0a1b4a6..2a2db465c 100644 --- a/src/mssm_twoloophiggs.h +++ b/src/mssm_twoloophiggs.h @@ -1,6 +1,6 @@ -#ifndef MSSM_TWOLOOPHIGGS_H -#define MSSM_TWOLOOPHIGGS_H +#ifndef _MSSM_TWOLOOPHIGGS_H_ +#define _MSSM_TWOLOOPHIGGS_H_ #ifdef __cplusplus extern "C" { @@ -215,21 +215,6 @@ int tausqtad_(double * t, double * A0, double * BL, double * T1, double * mu, double * tanb, double * vv, double * s1, double * s2); -#define tadpole_higgs_2loop_at_as_mssm ewsb2loop_ -#define tadpole_higgs_2loop_ab_as_mssm ewsb2loop_ -#define tadpole_higgs_2loop_at_at_mssm ddstad_ -#define tadpole_higgs_2loop_atau_atau_mssm tausqtad_ - -#define self_energy_higgs_2loop_at_as_mssm dszhiggs_ -#define self_energy_higgs_2loop_ab_as_mssm dszhiggs_ -#define self_energy_higgs_2loop_at_at_mssm ddshiggs_ -#define self_energy_higgs_2loop_atau_atau_mssm tausqhiggs_ - -#define self_energy_pseudoscalar_2loop_at_as_mssm dszodd_ -#define self_energy_pseudoscalar_2loop_ab_as_mssm dszodd_ -#define self_energy_pseudoscalar_2loop_at_at_mssm ddsodd_ -#define self_energy_pseudoscalar_2loop_atau_atau_mssm tausqodd_ - #ifdef __cplusplus } #endif diff --git a/src/mssm_twoloophiggs.hpp b/src/mssm_twoloophiggs.hpp new file mode 100644 index 000000000..a8f965b27 --- /dev/null +++ b/src/mssm_twoloophiggs.hpp @@ -0,0 +1,93 @@ +// ==================================================================== +// This file is part of FlexibleSUSY. +// +// FlexibleSUSY is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published +// by the Free Software Foundation, either version 3 of the License, +// or (at your option) any later version. +// +// FlexibleSUSY is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with FlexibleSUSY. If not, see +// . +// ==================================================================== + +#ifndef MSSM_TWOLOOPHIGGS_H +#define MSSM_TWOLOOPHIGGS_H + +#include + +namespace flexiblesusy { + +Eigen::Matrix tadpole_higgs_2loop_at_as_mssm( + double rmtsq, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, + double amu, double tanb, double vev2, double gs); + +Eigen::Matrix tadpole_higgs_2loop_at_at_mssm( + double rmtsq, double rmbsq, double mAsq, double mst1sq, + double mst2sq, double msb1sq, double msb2sq, + double sxt, double cxt, double sxb, double cxb, + double scalesq, double amu, double tanb, double vev2); + +Eigen::Matrix tadpole_higgs_2loop_ab_as_mssm( + double rmbsq, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, + double amu, double cotbeta, double vev2, double gs); + +Eigen::Matrix tadpole_higgs_2loop_atau_atau_mssm( + double rmtausq, double mAsq, double msnusq, double mstau1sq, + double mstau2sq, double sintau, double costau, double scalesq, + double amu, double tanb, double vev2); + + +Eigen::Matrix self_energy_higgs_2loop_at_as_mssm( + double rmtsq, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, double amu, + double tanb, double vev2, double gs, int scheme = 0); + +Eigen::Matrix self_energy_higgs_2loop_at_at_mssm( + double rmtsq, double rmbsq, double fmasq, double mst1sq, + double mst2sq, double msb1sq, double msb2sq, + double sxt, double cxt, double sxb, double cxb, + double scalesq, double amu, double tanb, double vev2); + +Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm( + double rmbsq, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, double amu, + double cotbeta, double vev2, double gs, int scheme = 0); + +Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm( + double rmtausq, double fmasq, double msnusq, double mstau1sq, + double mstau2sq, double sintau, double costau, double scalesq, + double amu, double tanb, double vev2, int scheme = 0); + + +double self_energy_pseudoscalar_2loop_at_as_mssm( + double rmtsq, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, double amu, + double tanb, double vev2, double gs); + +double self_energy_pseudoscalar_2loop_at_at_mssm( + double rmtsq, double rmbsq, double fmasq, double mst1sq, + double mst2sq, double msb1sq, double msb2sq, + double sxt, double cxt, double sxb, double cxb, + double scalesq, double amu, double tanb, double vev2); + +double self_energy_pseudoscalar_2loop_ab_as_mssm( + double rmbsq, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, double amu, + double cotbeta, double vev2, double gs); + +double self_energy_pseudoscalar_2loop_atau_atau_mssm( + double rmtausq, double fmasq, double msnusq, double mstau1sq, + double mstau2sq, double sintau, double costau, double scalesq, + double amu, double tanb, double vev2); + +} // namespace flexiblesusy + +#endif diff --git a/src/mssm_twoloophiggs.f b/src/mssm_twoloophiggs_impl.f similarity index 100% rename from src/mssm_twoloophiggs.f rename to src/mssm_twoloophiggs_impl.f diff --git a/src/nmssm2loop.h b/src/nmssm2loop.h index 1a065e9f3..c5f0f3991 100644 --- a/src/nmssm2loop.h +++ b/src/nmssm2loop.h @@ -4,7 +4,4 @@ extern "C" int effpot_(int *lp,double *mt,double *mg,double *T1,double *T2,double *st,double *ct,double *q2,double *tanb,double *vv,double *l,double *xx,double *as, double DMS[][3][3], double DMP[][3][3]); -#define self_energy_higgs_2loop_at_as_nmssm effpot_ -#define self_energy_higgs_2loop_ab_as_nmssm effpot_ - #endif diff --git a/src/nmssm_twoloophiggs.cpp b/src/nmssm_twoloophiggs.cpp new file mode 100644 index 000000000..0241a97f4 --- /dev/null +++ b/src/nmssm_twoloophiggs.cpp @@ -0,0 +1,129 @@ +// ==================================================================== +// This file is part of FlexibleSUSY. +// +// FlexibleSUSY is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published +// by the Free Software Foundation, either version 3 of the License, +// or (at your option) any later version. +// +// FlexibleSUSY is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with FlexibleSUSY. If not, see +// . +// ==================================================================== + +#include "nmssm_twoloophiggs.hpp" +#include "nmssm2loop.h" +#include "config.h" +#include + +#ifdef ENABLE_THREADS + #include + #define LOCK_MUTEX() std::lock_guard lg(mtx_nmssm) +#else + #define LOCK_MUTEX() +#endif + +namespace flexiblesusy { + +static std::mutex mtx_nmssm; /// locks MSSM fortran functions + +Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm( + double rmt, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, double tanb, double vevS, + double lamS, double svevS, double as) +{ + int loop = 2; + double DMS[3][3] = {{ 0. }}, DMP[3][3] = {{ 0. }}; + + LOCK_MUTEX(); + + effpot_(&loop, &rmt, &mg, &mst1sq, &mst2sq, &sxt, &cxt, + &scalesq, &tanb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); + + Eigen::Matrix result; + result << DMS[0][0], DMS[0][1], DMS[0][2], + DMS[1][0], DMS[1][1], DMS[1][2], + DMS[2][0], DMS[2][1], DMS[2][2]; + + return result; +} + +Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( + double rmb, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, double cotb, double vevS, + double lamS, double svevS, double as) +{ + int loop = 2; + double DMS[3][3] = {{ 0. }}, DMP[3][3] = {{ 0. }}; + + LOCK_MUTEX(); + + effpot_(&loop, &rmb, &mg, &msb1sq, &msb2sq, &sxb, &cxb, + &scalesq, &cotb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); + + // Make appropriate substitutions for elements following 0907.4682 + // bottom of page 9 + std::swap(DMS[0][0], DMS[1][1]); + std::swap(DMS[0][2], DMS[1][2]); + + Eigen::Matrix result; + result << DMS[0][0], DMS[0][1], DMS[0][2], + DMS[1][0], DMS[1][1], DMS[1][2], + DMS[2][0], DMS[2][1], DMS[2][2]; + + return result; +} + +Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( + double rmt, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, double tanb, double vevS, + double lamS, double svevS, double as) +{ + int loop = 2; + double DMS[3][3] = {{ 0. }}, DMP[3][3] = {{ 0. }}; + + LOCK_MUTEX(); + + effpot_(&loop, &rmt, &mg, &mst1sq, &mst2sq, &sxt, &cxt, + &scalesq, &tanb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); + + Eigen::Matrix result; + result << DMP[0][0], DMP[0][1], DMP[0][2], + DMP[1][0], DMP[1][1], DMP[1][2], + DMP[2][0], DMP[2][1], DMP[2][2]; + + return result; +} + +Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( + double rmb, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, double cotb, double vevS, + double lamS, double svevS, double as) +{ + int loop = 2; + double DMS[3][3] = {{ 0. }}, DMP[3][3] = {{ 0. }}; + + LOCK_MUTEX(); + + effpot_(&loop, &rmb, &mg, &msb1sq, &msb2sq, &sxb, &cxb, + &scalesq, &cotb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); + + // Make appropriate substitutions for elements following 0907.4682 + // bottom of page 9 + std::swap(DMP[0][0], DMP[1][1]); + std::swap(DMP[0][2], DMP[1][2]); + + Eigen::Matrix result; + result << DMP[0][0], DMP[0][1], DMP[0][2], + DMP[1][0], DMP[1][1], DMP[1][2], + DMP[2][0], DMP[2][1], DMP[2][2]; + + return result; +} + +} // namespace flexiblesusy diff --git a/src/nmssm_twoloophiggs.h b/src/nmssm_twoloophiggs.h deleted file mode 100644 index bafdcc6f1..000000000 --- a/src/nmssm_twoloophiggs.h +++ /dev/null @@ -1,25 +0,0 @@ -// ==================================================================== -// This file is part of FlexibleSUSY. -// -// FlexibleSUSY is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published -// by the Free Software Foundation, either version 3 of the License, -// or (at your option) any later version. -// -// FlexibleSUSY is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with FlexibleSUSY. If not, see -// . -// ==================================================================== - -#ifndef NMSSM_TWOLOOPHIGGS_H -#define NMSSM_TWOLOOPHIGGS_H - -#include "mssm_twoloophiggs.h" -#include "nmssm2loop.h" - -#endif diff --git a/src/nmssm_twoloophiggs.hpp b/src/nmssm_twoloophiggs.hpp new file mode 100644 index 000000000..d1870569e --- /dev/null +++ b/src/nmssm_twoloophiggs.hpp @@ -0,0 +1,48 @@ +// ==================================================================== +// This file is part of FlexibleSUSY. +// +// FlexibleSUSY is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published +// by the Free Software Foundation, either version 3 of the License, +// or (at your option) any later version. +// +// FlexibleSUSY is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with FlexibleSUSY. If not, see +// . +// ==================================================================== + +#ifndef NMSSM_TWOLOOPHIGGS_H +#define NMSSM_TWOLOOPHIGGS_H + +#include + +namespace flexiblesusy { + +Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm( + double rmt, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, double tanb, double vevS, + double lamS, double svevS, double as); + +Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( + double rmb, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, double cotb, double vevS, + double lamS, double svevS, double as); + +Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( + double rmt, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, double tanb, double vevS, + double lamS, double svevS, double as); + +Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( + double rmb, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, double cotb, double vevS, + double lamS, double svevS, double as); + +} + +#endif diff --git a/templates/mass_eigenstates.cpp.in b/templates/mass_eigenstates.cpp.in index 066e2c9d3..22de39d0e 100644 --- a/templates/mass_eigenstates.cpp.in +++ b/templates/mass_eigenstates.cpp.in @@ -76,13 +76,6 @@ using namespace @ModelName@_info; #define TOP_2LOOP_CORRECTION_QCD two_loop_corrections.top_qcd #define HIGGS_3LOOP_CORRECTION_AT_AS_AS 1 -#ifdef ENABLE_THREADS - std::mutex CLASSNAME::mtx_fortran; - #define LOCK_MUTEX() std::lock_guard _lock_guard(mtx_fortran) -#else - #define LOCK_MUTEX() -#endif - CLASSNAME::@ModelName@_mass_eigenstates(const @ModelName@_input_parameters& input_) : @ModelName@_soft_parameters(input_) , number_of_ewsb_iterations(100) diff --git a/templates/mass_eigenstates.hpp.in b/templates/mass_eigenstates.hpp.in index db4d3cad5..f68ed8c63 100644 --- a/templates/mass_eigenstates.hpp.in +++ b/templates/mass_eigenstates.hpp.in @@ -43,10 +43,6 @@ #include #include -#ifdef ENABLE_THREADS -#include -#endif - #include #include @@ -173,7 +169,6 @@ private: Two_loop_corrections two_loop_corrections; ///< used 2-loop corrections #ifdef ENABLE_THREADS std::exception_ptr thread_exception; - static std::mutex mtx_fortran; /// locks fortran functions #endif int solve_ewsb_iteratively(); From 1f58f1ff14eea2434355dd637e425f10c5029e8a Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Wed, 10 Aug 2016 22:52:25 +0200 Subject: [PATCH 43/64] adding helper functions for 2L (N)MSSM self-energies w/o tadpoles --- meta/SelfEnergies.m | 235 ++++++++--------------------------- src/mssm_twoloophiggs.cpp | 245 +++++++++++++++++++++++++++++++++++-- src/mssm_twoloophiggs.hpp | 56 ++++++++- src/nmssm_twoloophiggs.cpp | 126 ++++++++++++++++++- src/nmssm_twoloophiggs.hpp | 36 +++++- 5 files changed, 497 insertions(+), 201 deletions(-) diff --git a/meta/SelfEnergies.m b/meta/SelfEnergies.m index 54bc892c7..47acc03af 100644 --- a/meta/SelfEnergies.m +++ b/meta/SelfEnergies.m @@ -582,42 +582,37 @@ const double rmbsq = Sqr(" <> mbStr <> "); const double rmtausq = Sqr(" <> mtauStr <> "); -Eigen::Matrix ts(" <> GetTadpoleVectorCType[2] <> "::Zero()); -Eigen::Matrix tt(" <> GetTadpoleVectorCType[2] <> "::Zero()); -Eigen::Matrix tb(" <> GetTadpoleVectorCType[2] <> "::Zero()); -Eigen::Matrix tl(" <> GetTadpoleVectorCType[2] <> "::Zero()); +" <> GetTadpoleVectorCType[2] <> " tadpole_2l(" <> GetTadpoleVectorCType[2] <> "::Zero()); if (HIGGS_2LOOP_CORRECTION_AT_AS) { - ts = tadpole_higgs_2loop_at_as_mssm( + tadpole_2l += tadpole_higgs_2loop_at_as_mssm( rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs); } if (HIGGS_2LOOP_CORRECTION_AT_AT) { - tt = tadpole_higgs_2loop_at_at_mssm( + tadpole_2l += tadpole_higgs_2loop_at_at_mssm( rmtsq, rmbsq, mAsq, mst1sq, mst2sq, msb1sq, msb2sq, sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { - tb = tadpole_higgs_2loop_ab_as_mssm( + tadpole_2l += tadpole_higgs_2loop_ab_as_mssm( rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotbeta, vev2, gs); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { - tl = tadpole_higgs_2loop_atau_atau_mssm( + tadpole_2l += tadpole_higgs_2loop_atau_atau_mssm( rmtausq, mAsq, msnusq, mstau1sq, mstau2sq, sintau, costau, scalesq, amu, tanb, vev2); } -" <> GetTadpoleVectorCType[2] <> " tadpole_2l(" <> GetTadpoleVectorCType[2] <> "::Zero()); - -if (IsFinite(ts) && IsFinite(tt) && IsFinite(tb) && IsFinite(tl)) - tadpole_2l = - ts - tt - tb - tl; +tadpole_2l(0) *= -" <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; +tadpole_2l(1) *= -" <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; -tadpole_2l(0) *= " <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; -tadpole_2l(1) *= " <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; +if (!IsFinite(tadpole_2l)) + tadpole_2l.setZero(); return tadpole_2l;" ]; @@ -667,62 +662,47 @@ const double rmtsq = Sqr(" <> mtStr <> "); const double scalesq = Sqr(get_scale()); const double vev2 = " <> vev2Str <> "; -const double vev = Sqrt(vev2); const double tanb = " <> tanbStr <> "; -const double tanb2 = Sqr(tanb); -const double sinb = tanb / Sqrt(1. + tanb2); -const double cosb = 1. / Sqrt(1. + tanb2); const double amu = Re(" <> muStr <> "); const double mg = " <> m3Str <> "; const double mAsq = " <> mA0Str <> "; const double cotbeta = 1.0 / tanb; const double rmbsq = Sqr(" <> mbStr <> "); const double rmtausq = Sqr(" <> mtauStr <> "); +const double svevS = " <> svevStr <> " / Sqrt(2.0); -Eigen::Matrix ts(" <> GetTadpoleVectorCType[2] <> "::Zero()); -Eigen::Matrix tt(" <> GetTadpoleVectorCType[2] <> "::Zero()); -Eigen::Matrix tb(" <> GetTadpoleVectorCType[2] <> "::Zero()); -Eigen::Matrix tl(" <> GetTadpoleVectorCType[2] <> "::Zero()); +" <> GetTadpoleVectorCType[3] <> " tadpole_2l(" <> GetTadpoleVectorCType[3] <> "::Zero()); if (HIGGS_2LOOP_CORRECTION_AT_AS) { - ts = tadpole_higgs_2loop_at_as_mssm( + tadpole_2l += tadpole_higgs_2loop_at_as_nmssm( rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, - amu, tanb, vev2, gs); + amu, tanb, vev2, gs, svevS); } if (HIGGS_2LOOP_CORRECTION_AT_AT) { - tt = tadpole_higgs_2loop_at_at_mssm( + tadpole_2l.head<2>() += tadpole_higgs_2loop_at_at_mssm( rmtsq, rmbsq, mAsq, mst1sq, mst2sq, msb1sq, msb2sq, sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { - tb = tadpole_higgs_2loop_ab_as_mssm( + tadpole_2l += tadpole_higgs_2loop_ab_as_nmssm( rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, - amu, cotbeta, vev2, gs); + amu, cotbeta, vev2, gs, svevS); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { - tl = tadpole_higgs_2loop_atau_atau_mssm( + tadpole_2l.head<2>() += tadpole_higgs_2loop_atau_atau_mssm( rmtausq, mAsq, msnusq, mstau1sq, mstau2sq, sintau, costau, scalesq, amu, tanb, vev2); } -// rescale T1 to get TS -const double sss = ts(0) * vev * cosb / " <> svevStr <> "; -const double ssb = tb(0) * vev * sinb / " <> svevStr <> "; +tadpole_2l(0) *= -" <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; +tadpole_2l(1) *= -" <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; +tadpole_2l(2) *= -" <> svevStr <> "; -" <> GetTadpoleVectorCType[3] <> " tadpole_2l(" <> GetTadpoleVectorCType[3] <> "::Zero()); - -if (IsFinite(ts) && IsFinite(tt) && IsFinite(tb) && IsFinite(tl) && - std::isfinite(sss) && std::isfinite(ssb)) { - tadpole_2l.head<2>() = - ts - tt - tb - tl; - tadpole_2l(2) = - sss - ssb; -} - -tadpole_2l(0) *= " <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; -tadpole_2l(1) *= " <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; -tadpole_2l(2) *= " <> svevStr <> "; +if (!IsFinite(tadpole_2l)) + tadpole_2l.setZero(); return tadpole_2l;" ]; @@ -859,74 +839,39 @@ const double scalesq = Sqr(get_scale()); const double vev2 = " <> vev2Str <> "; const double tanb = " <> tanbStr <> "; -const double tanb2 = Sqr(tanb); -const double sinb = tanb / Sqrt(1. + tanb2); -const double cosb = 1. / Sqrt(1. + tanb2); const double amu = Re(" <> muStr <> "); const double mg = " <> m3Str <> "; const double mAsq = Sqr(" <> mA0Str <> "); const double cotbeta = 1.0 / tanb; const double rmbsq = Sqr(" <> mbStr <> "); const double rmtausq = Sqr(" <> mtauStr <> "); -const double fmasq = Abs(mAsq); -Eigen::Matrix ss(Eigen::Matrix::Zero()); -Eigen::Matrix sb(Eigen::Matrix::Zero()); -Eigen::Matrix sl(Eigen::Matrix::Zero()); -Eigen::Matrix st(Eigen::Matrix::Zero()); -double p2s = 0., p2t = 0., p2b = 0., p2tau = 0.; +" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> " self_energy_2l(" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> "::Zero()); if (HIGGS_2LOOP_CORRECTION_AT_AS) { - ss = self_energy_higgs_2loop_at_as_mssm( - rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, - tanb, vev2, gs); - p2s = self_energy_pseudoscalar_2loop_at_as_mssm( + self_energy_2l += self_energy_higgs_2loop_at_as_mssm( rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { - sb = self_energy_higgs_2loop_ab_as_mssm( - rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, - cotbeta, vev2, gs); - p2b = self_energy_pseudoscalar_2loop_ab_as_mssm( + self_energy_2l += self_energy_higgs_2loop_ab_as_mssm( rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotbeta, vev2, gs); } if (HIGGS_2LOOP_CORRECTION_AT_AT) { - st = self_energy_higgs_2loop_at_at_mssm( - rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, - sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); - p2t = self_energy_pseudoscalar_2loop_at_at_mssm( - rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, + self_energy_2l += self_energy_higgs_2loop_at_at_mssm( + rmtsq, rmbsq, mAsq, mst1sq, mst2sq, msb1sq, msb2sq, sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { - sl = self_energy_higgs_2loop_atau_atau_mssm( - rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, - costau, scalesq, amu, tanb, vev2); - p2tau = self_energy_pseudoscalar_2loop_atau_atau_mssm( - rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, + self_energy_2l += self_energy_higgs_2loop_atau_atau_mssm( + rmtausq, mAsq, msnusq, mstau1sq, mstau2sq, sintau, costau, scalesq, amu, tanb, vev2); } -// calculate dMA, which is the two loop correction to take the DRbar -// psuedoscalar mass ( = -2m3sq/sin(2beta)) to the pole mass (as in -// Eq. (8) of hep-ph/0305127) -const double dMA = p2s + p2t + p2b + p2tau; - -// dMA contains two loop tadpoles, which we'll subtract -const auto tadpole(" <> CreateNLoopTadpoleFunctionName[SARAH`HiggsBoson,2] <> "()); - -" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> " self_energy_2l(-ss - st - sb - sl); - -self_energy_2l(0,0) += - dMA * Sqr(sinb) + tadpole(0) / " <> vdStr <> "; -self_energy_2l(0,1) += + dMA * sinb * cosb; -self_energy_2l(1,0) = self_energy_2l(0,1); -self_energy_2l(1,1) += - dMA * Sqr(cosb) + tadpole(1) / " <> vuStr <> "; - return self_energy_2l;" ]; @@ -978,58 +923,39 @@ const double scalesq = Sqr(get_scale()); const double vev2 = " <> vev2Str <> "; const double tanb = " <> tanbStr <> "; -const double tanb2 = Sqr(tanb); -const double sinb = tanb / Sqrt(1. + tanb2); -const double cosb = 1. / Sqrt(1. + tanb2); -const double sinb2 = Sqr(sinb); -const double cosb2 = Sqr(cosb); const double amu = Re(" <> muStr <> "); const double mg = " <> m3Str <> "; const double mAsq = Sqr(" <> mA0Str <> "); const double cotbeta = 1.0 / tanb; const double rmbsq = Sqr(" <> mbStr <> "); const double rmtausq = Sqr(" <> mtauStr <> "); -const double fmasq = Abs(mAsq); -double p2s = 0., p2t = 0., p2b = 0., p2tau = 0.; +" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`PseudoScalar]] <> " self_energy_2l(" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`PseudoScalar]] <> "::Zero()); if (HIGGS_2LOOP_CORRECTION_AT_AS) { - p2s = self_energy_pseudoscalar_2loop_at_as_mssm( + self_energy_2l += self_energy_pseudoscalar_2loop_at_as_mssm( rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { - p2b = self_energy_pseudoscalar_2loop_ab_as_mssm( + self_energy_2l += self_energy_pseudoscalar_2loop_ab_as_mssm( rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotbeta, vev2, gs); } if (HIGGS_2LOOP_CORRECTION_AT_AT) { - p2t = self_energy_pseudoscalar_2loop_at_at_mssm( - rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, + self_energy_2l += self_energy_pseudoscalar_2loop_at_at_mssm( + rmtsq, rmbsq, mAsq, mst1sq, mst2sq, msb1sq, msb2sq, sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { - p2tau = self_energy_pseudoscalar_2loop_atau_atau_mssm( - rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, + self_energy_2l += self_energy_pseudoscalar_2loop_atau_atau_mssm( + rmtausq, mAsq, msnusq, mstau1sq, mstau2sq, sintau, costau, scalesq, amu, tanb, vev2); } -const double dMA = p2s + p2t + p2b + p2tau; - -// dMA contains two loop tadpoles, which we'll subtract -const auto tadpole(" <> CreateNLoopTadpoleFunctionName[SARAH`HiggsBoson,2] <> "()); - -" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`PseudoScalar]] <> " self_energy_2l; - -// see hep-ph/0105096 Eq. (9) -self_energy_2l(0,0) = - dMA * sinb2 + tadpole(0) / " <> vdStr <> "; -self_energy_2l(0,1) = - dMA * sinb * cosb; -self_energy_2l(1,0) = self_energy_2l(0,1); -self_energy_2l(1,1) = - dMA * cosb2 + tadpole(1) / " <> vuStr <> "; - return self_energy_2l;" ]; @@ -1087,9 +1013,6 @@ const double vev2 = " <> vev2Str <> "; const double vev = Sqrt(" <> vev2Str <> "); const double tanb = " <> tanbStr <> "; -const double tanb2 = Sqr(tanb); -const double sinb = tanb / Sqrt(1. + tanb2); -const double cosb = 1. / Sqrt(1. + tanb2); const double amu = Re(" <> muStr <> "); const double mg = " <> m3Str <> "; const double mAsq = " <> mA0Str <> "; @@ -1097,68 +1020,40 @@ const double rmb = " <> mbStr <> "; const double rmbsq = Sqr(rmb); const double rmtausq = Sqr(" <> mtauStr <> "); -const double fmasq = Abs(mAsq); const double lamS = Re(" <> lambdaStr <> "); static const double root2 = Sqrt(2.0); const double vevS = vev / root2; const double svevS = " <> vsStr <> " / root2; -Eigen::Matrix ss(Eigen::Matrix::Zero()); -Eigen::Matrix sb(Eigen::Matrix::Zero()); -Eigen::Matrix sl(Eigen::Matrix::Zero()); -Eigen::Matrix st(Eigen::Matrix::Zero()); -double p2t = 0., p2tau = 0.; +" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> " self_energy_2l(" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> "::Zero()); if (HIGGS_2LOOP_CORRECTION_AT_AS) { - ss = self_energy_higgs_2loop_at_as_nmssm( + self_energy_2l += self_energy_higgs_2loop_at_as_nmssm( rmt, mg, mst1sq, mst2sq, sxt, cxt, - scalesq, tanb, vevS, lamS, svevS, as); + scalesq, tanb, vevS, lamS, svevS, as, amu); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { - sb = self_energy_higgs_2loop_ab_as_nmssm( + self_energy_2l += self_energy_higgs_2loop_ab_as_nmssm( rmb, mg, msb1sq, msb2sq, sxb, cxb, - scalesq, cotb, vevS, lamS, svevS, as); + scalesq, cotb, vevS, lamS, svevS, as, amu); } // Corrections as in MSSM, not corrected for NMSSM, // should be OK for MSSM states when S state is close to decoupled if (HIGGS_2LOOP_CORRECTION_AT_AT) { - st = self_energy_higgs_2loop_at_at_mssm( - rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, + self_energy_2l.topLeftCorner<2,2>() += self_energy_higgs_2loop_at_at_mssm( + rmtsq, rmbsq, mAsq, mst1sq, mst2sq, msb1sq, msb2sq, sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); - p2t = self_energy_pseudoscalar_2loop_at_at_mssm( - rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, - sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { - sl = self_energy_higgs_2loop_atau_atau_mssm( - rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, - costau, scalesq, amu, tanb, vev2); - p2tau = self_energy_pseudoscalar_2loop_atau_atau_mssm( - rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, + self_energy_2l.topLeftCorner<2,2>() += self_energy_higgs_2loop_atau_atau_mssm( + rmtausq, mAsq, msnusq, mstau1sq, mstau2sq, sintau, costau, scalesq, amu, tanb, vev2); } -const double dMA = p2t + p2tau; - -const auto tadpole(" <> CreateNLoopTadpoleFunctionName[SARAH`HiggsBoson,2] <> "()); - -" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> " self_energy_2l(-ss - sb); - -// adding MSSM corrections to top-left corner of self-energy matrix -self_energy_2l.topLeftCorner<2,2>() += -st - sl; - -// subtract two-loop tadpoles -self_energy_2l(0,0) -= + dMA * Sqr(sinb) - tadpole(0) / " <> vdStr <> "; -self_energy_2l(0,1) -= - dMA * sinb * cosb; -self_energy_2l(1,1) -= + dMA * Sqr(cosb) - tadpole(1) / " <> vuStr <> "; -self_energy_2l(2,2) -= - tadpole(2) / " <> vsStr <> "; - -Symmetrize(self_energy_2l); - return self_energy_2l;" ]; @@ -1216,11 +1111,6 @@ const double vev2 = " <> vev2Str <> "; const double vev = Sqrt(" <> vev2Str <> "); const double tanb = " <> tanbStr <> "; -const double tanb2 = Sqr(tanb); -const double sinb = tanb / Sqrt(1. + tanb2); -const double cosb = 1. / Sqrt(1. + tanb2); -const double sinb2 = Sqr(sinb); -const double cosb2 = Sqr(cosb); const double amu = Re(" <> muStr <> "); const double mg = " <> m3Str <> "; const double mAsq = " <> mA0Str <> "; @@ -1228,57 +1118,40 @@ const double rmb = " <> mbStr <> "; const double rmbsq = Sqr(rmb); const double rmtausq = Sqr(" <> mtauStr <> "); -const double fmasq = Abs(mAsq); const double lamS = Re(" <> lambdaStr <> "); static const double root2 = Sqrt(2.0); const double vevS = vev / root2; const double svevS = " <> vsStr <> " / root2; -Eigen::Matrix ps(Eigen::Matrix::Zero()); -Eigen::Matrix pb(Eigen::Matrix::Zero()); -double p2t = 0., p2tau = 0.; +" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`PseudoScalar]] <> " self_energy_2l(" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`PseudoScalar]] <> "::Zero()); if (HIGGS_2LOOP_CORRECTION_AT_AS) { - ps = self_energy_pseudoscalar_2loop_at_as_nmssm( + self_energy_2l += self_energy_pseudoscalar_2loop_at_as_nmssm( rmt, mg, mst1sq, mst2sq, sxt, cxt, - scalesq, tanb, vevS, lamS, svevS, as); + scalesq, tanb, vevS, lamS, svevS, as, amu); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { - pb = self_energy_pseudoscalar_2loop_ab_as_nmssm( + self_energy_2l += self_energy_pseudoscalar_2loop_ab_as_nmssm( rmb, mg, msb1sq, msb2sq, sxb, cxb, - scalesq, cotb, vevS, lamS, svevS, as); + scalesq, cotb, vevS, lamS, svevS, as, amu); } // Corrections as in MSSM, not corrected for NMSSM, // should be OK for MSSM states when S state is close to decoupled if (HIGGS_2LOOP_CORRECTION_AT_AT) { - p2t = self_energy_pseudoscalar_2loop_at_at_mssm( - rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, + self_energy_2l.topLeftCorner<2,2>() += self_energy_pseudoscalar_2loop_at_at_mssm( + rmtsq, rmbsq, mAsq, mst1sq, mst2sq, msb1sq, msb2sq, sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { - p2tau = self_energy_pseudoscalar_2loop_atau_atau_mssm( - rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, + self_energy_2l.topLeftCorner<2,2>() += self_energy_pseudoscalar_2loop_atau_atau_mssm( + rmtausq, mAsq, msnusq, mstau1sq, mstau2sq, sintau, costau, scalesq, amu, tanb, vev2); } -const double dMA = p2t + p2tau; - -const auto tadpole(" <> CreateNLoopTadpoleFunctionName[SARAH`HiggsBoson,2] <> "()); - -" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`PseudoScalar]] <> " self_energy_2l(-ps - pb); - -// subtract two-loop tadpoles -self_energy_2l(0,0) -= dMA * sinb2 - tadpole(0) / " <> vdStr <> "; -self_energy_2l(0,1) -= dMA * sinb * cosb; -self_energy_2l(1,1) -= dMA * cosb2 - tadpole(1) / " <> vuStr <> "; -self_energy_2l(2,2) -= - tadpole(2) / " <> vsStr <> "; - -Symmetrize(self_energy_2l); - return self_energy_2l;" ]; diff --git a/src/mssm_twoloophiggs.cpp b/src/mssm_twoloophiggs.cpp index 8a0b97440..7c79b6117 100644 --- a/src/mssm_twoloophiggs.cpp +++ b/src/mssm_twoloophiggs.cpp @@ -19,6 +19,7 @@ #include "mssm_twoloophiggs.hpp" #include "mssm_twoloophiggs.h" #include "config.h" +#include #include #ifdef ENABLE_THREADS @@ -93,7 +94,7 @@ Eigen::Matrix tadpole_higgs_2loop_atau_atau_mssm( return result; } -Eigen::Matrix self_energy_higgs_2loop_at_as_mssm( +Eigen::Matrix self_energy_higgs_2loop_at_as_mssm_with_tadpoles( double rmtsq, double mg, double mst1sq, double mst2sq, double sxt, double cxt, double scalesq, double amu, double tanb, double vev2, double gs, int scheme) @@ -111,7 +112,7 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_mssm( return result; } -Eigen::Matrix self_energy_higgs_2loop_at_at_mssm( +Eigen::Matrix self_energy_higgs_2loop_at_at_mssm_with_tadpoles( double rmtsq, double rmbsq, double fmasq, double mst1sq, double mst2sq, double msb1sq, double msb2sq, double sxt, double cxt, double sxb, double cxb, @@ -130,12 +131,12 @@ Eigen::Matrix self_energy_higgs_2loop_at_at_mssm( return result; } -Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm( +Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm_with_tadpoles( double rmbsq, double mg, double msb1sq, double msb2sq, double sxb, double cxb, double scalesq, double amu, double cotbeta, double vev2, double gs, int scheme) { - Eigen::Matrix result(self_energy_higgs_2loop_at_as_mssm( + Eigen::Matrix result(self_energy_higgs_2loop_at_as_mssm_with_tadpoles( rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotbeta, vev2, gs, scheme)); @@ -144,7 +145,7 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm( return result; } -Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm( +Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm_with_tadpoles( double rmtausq, double fmasq, double msnusq, double mstau1sq, double mstau2sq, double sintau, double costau, double scalesq, double amu, double tanb, double vev2, int scheme) @@ -162,7 +163,7 @@ Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm( return result; } -double self_energy_pseudoscalar_2loop_at_as_mssm( +double self_energy_pseudoscalar_2loop_at_as_mssm_with_tadpoles( double rmtsq, double mg, double mst1sq, double mst2sq, double sxt, double cxt, double scalesq, double amu, double tanb, double vev2, double gs) @@ -177,7 +178,7 @@ double self_energy_pseudoscalar_2loop_at_as_mssm( return result; } -double self_energy_pseudoscalar_2loop_at_at_mssm( +double self_energy_pseudoscalar_2loop_at_at_mssm_with_tadpoles( double rmtsq, double rmbsq, double fmasq, double mst1sq, double mst2sq, double msb1sq, double msb2sq, double sxt, double cxt, double sxb, double cxb, @@ -193,17 +194,17 @@ double self_energy_pseudoscalar_2loop_at_at_mssm( return result; } -double self_energy_pseudoscalar_2loop_ab_as_mssm( +double self_energy_pseudoscalar_2loop_ab_as_mssm_with_tadpoles( double rmbsq, double mg, double msb1sq, double msb2sq, double sxb, double cxb, double scalesq, double amu, double cotbeta, double vev2, double gs) { - return self_energy_pseudoscalar_2loop_at_as_mssm( + return self_energy_pseudoscalar_2loop_at_as_mssm_with_tadpoles( rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotbeta, vev2, gs); } -double self_energy_pseudoscalar_2loop_atau_atau_mssm( +double self_energy_pseudoscalar_2loop_atau_atau_mssm_with_tadpoles( double rmtausq, double fmasq, double msnusq, double mstau1sq, double mstau2sq, double sintau, double costau, double scalesq, double amu, double tanb, double vev2) @@ -218,4 +219,228 @@ double self_energy_pseudoscalar_2loop_atau_atau_mssm( return result; } +// self-energies without tadpoles + +namespace { +template T sqr(T a) { return a * a; } +} + +Eigen::Matrix rotate_scalar( + double self_energy, double tanb) +{ + const double tanb2 = sqr(tanb); + const double sinb = tanb / std::sqrt(1. + tanb2); + const double cosb = 1. / std::sqrt(1. + tanb2); + + Eigen::Matrix result; + + result(0,0) = - self_energy * sqr(sinb); + result(0,1) = + self_energy * sinb * cosb; + result(1,0) = result(0,1); + result(1,1) = - self_energy * sqr(cosb); + + return result; +} + +Eigen::Matrix subtract_mssm_tadpoles_scalar( + double dMA, const Eigen::Matrix& tadpoles, + double tanb) +{ + return rotate_scalar(dMA, tanb) - Eigen::Matrix(tadpoles.asDiagonal()); +} + +Eigen::Matrix self_energy_higgs_2loop_at_as_mssm( + double rmtsq, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, double amu, + double tanb, double vev2, double gs, int scheme) +{ + const Eigen::Matrix result = + self_energy_higgs_2loop_at_as_mssm_with_tadpoles( + rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, + tanb, vev2, gs, scheme); + + const double dMA = self_energy_pseudoscalar_2loop_at_as_mssm_with_tadpoles( + rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, + tanb, vev2, gs); + + const Eigen::Matrix tadpoles = + tadpole_higgs_2loop_at_as_mssm( + rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs); + + const Eigen::Matrix tM = + subtract_mssm_tadpoles_scalar(dMA, tadpoles, tanb); + + return -result + tM; +} + +Eigen::Matrix self_energy_higgs_2loop_at_at_mssm( + double rmtsq, double rmbsq, double fmasq, double mst1sq, + double mst2sq, double msb1sq, double msb2sq, + double sxt, double cxt, double sxb, double cxb, + double scalesq, double amu, double tanb, double vev2) +{ + const Eigen::Matrix result = + self_energy_higgs_2loop_at_at_mssm_with_tadpoles( + rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, + sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); + + const double dMA = self_energy_pseudoscalar_2loop_at_at_mssm_with_tadpoles( + rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, + sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); + + const Eigen::Matrix tadpoles = + tadpole_higgs_2loop_at_at_mssm( + rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, + sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); + + const Eigen::Matrix tM = + subtract_mssm_tadpoles_scalar(dMA, tadpoles, tanb); + + return -result + tM; +} + +Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm( + double rmbsq, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, double amu, + double cotbeta, double vev2, double gs, int scheme) +{ + const Eigen::Matrix result = + self_energy_higgs_2loop_ab_as_mssm_with_tadpoles( + rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, + cotbeta, vev2, gs, scheme); + + const double dMA = self_energy_pseudoscalar_2loop_ab_as_mssm_with_tadpoles( + rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotbeta, vev2, gs); + + const Eigen::Matrix tadpoles = + tadpole_higgs_2loop_ab_as_mssm( + rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotbeta, vev2, gs); + + const Eigen::Matrix tM = + subtract_mssm_tadpoles_scalar(dMA, tadpoles, 1./cotbeta); + + return -result + tM; +} + +Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm( + double rmtausq, double fmasq, double msnusq, double mstau1sq, + double mstau2sq, double sintau, double costau, double scalesq, + double amu, double tanb, double vev2, int scheme) +{ + const Eigen::Matrix result = + self_energy_higgs_2loop_atau_atau_mssm_with_tadpoles( + rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, costau, scalesq, + amu, tanb, vev2, scheme); + + const double dMA = self_energy_pseudoscalar_2loop_atau_atau_mssm_with_tadpoles( + rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, costau, scalesq, + amu, tanb, vev2); + + const Eigen::Matrix tadpoles = + tadpole_higgs_2loop_atau_atau_mssm( + rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, costau, scalesq, + amu, tanb, vev2); + + const Eigen::Matrix tM = + subtract_mssm_tadpoles_scalar(dMA, tadpoles, tanb); + + return -result + tM; +} + +Eigen::Matrix rotate_pseudoscalar( + double self_energy, double tanb) +{ + const double tanb2 = sqr(tanb); + const double sinb = tanb / std::sqrt(1. + tanb2); + const double cosb = 1. / std::sqrt(1. + tanb2); + + Eigen::Matrix result; + + // see hep-ph/0105096 Eq. (9) + result(0,0) = - self_energy * sqr(sinb); + result(0,1) = - self_energy * sinb * cosb; + result(1,0) = result(0,1); + result(1,1) = - self_energy * sqr(cosb); + + return result; +} + +Eigen::Matrix subtract_mssm_tadpoles_pseudoscalar( + double self_energy, const Eigen::Matrix& tadpoles, + double tanb) +{ + Eigen::Matrix result = + rotate_pseudoscalar(self_energy, tanb); + + result(0,0) -= tadpoles(0); + result(1,1) -= tadpoles(1); + + return result; +} + +Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_mssm( + double rmtsq, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, double amu, + double tanb, double vev2, double gs) +{ + const double se = self_energy_pseudoscalar_2loop_at_as_mssm_with_tadpoles( + rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs); + + const Eigen::Matrix tadpoles = + tadpole_higgs_2loop_at_as_mssm( + rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs); + + return subtract_mssm_tadpoles_pseudoscalar(se, tadpoles, tanb); +} + +Eigen::Matrix self_energy_pseudoscalar_2loop_at_at_mssm( + double rmtsq, double rmbsq, double fmasq, double mst1sq, + double mst2sq, double msb1sq, double msb2sq, + double sxt, double cxt, double sxb, double cxb, + double scalesq, double amu, double tanb, double vev2) +{ + const double se = self_energy_pseudoscalar_2loop_at_at_mssm_with_tadpoles( + rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, + sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); + + const Eigen::Matrix tadpoles = + tadpole_higgs_2loop_at_at_mssm( + rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, + sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); + + return subtract_mssm_tadpoles_pseudoscalar(se, tadpoles, tanb); +} + +Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_mssm( + double rmbsq, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, double amu, + double cotbeta, double vev2, double gs) +{ + const double se = self_energy_pseudoscalar_2loop_ab_as_mssm_with_tadpoles( + rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotbeta, vev2, gs); + + const Eigen::Matrix tadpoles = + tadpole_higgs_2loop_ab_as_mssm( + rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotbeta, vev2, gs); + + return subtract_mssm_tadpoles_pseudoscalar(se, tadpoles, 1./cotbeta); +} + +Eigen::Matrix self_energy_pseudoscalar_2loop_atau_atau_mssm( + double rmtausq, double fmasq, double msnusq, double mstau1sq, + double mstau2sq, double sintau, double costau, double scalesq, + double amu, double tanb, double vev2) +{ + const double se = self_energy_pseudoscalar_2loop_atau_atau_mssm_with_tadpoles( + rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, costau, scalesq, + amu, tanb, vev2); + + const Eigen::Matrix tadpoles = + tadpole_higgs_2loop_atau_atau_mssm( + rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, costau, scalesq, + amu, tanb, vev2); + + return subtract_mssm_tadpoles_pseudoscalar(se, tadpoles, tanb); +} + } // namespace flexiblesusy diff --git a/src/mssm_twoloophiggs.hpp b/src/mssm_twoloophiggs.hpp index a8f965b27..7bfaacce4 100644 --- a/src/mssm_twoloophiggs.hpp +++ b/src/mssm_twoloophiggs.hpp @@ -23,6 +23,8 @@ namespace flexiblesusy { +// tadpoles + Eigen::Matrix tadpole_higgs_2loop_at_as_mssm( double rmtsq, double mg, double mst1sq, double mst2sq, double sxt, double cxt, double scalesq, @@ -44,6 +46,7 @@ Eigen::Matrix tadpole_higgs_2loop_atau_atau_mssm( double mstau2sq, double sintau, double costau, double scalesq, double amu, double tanb, double vev2); +// self-energies Eigen::Matrix self_energy_higgs_2loop_at_as_mssm( double rmtsq, double mg, double mst1sq, double mst2sq, @@ -67,23 +70,68 @@ Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm( double amu, double tanb, double vev2, int scheme = 0); -double self_energy_pseudoscalar_2loop_at_as_mssm( +Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_mssm( + double rmtsq, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, double amu, + double tanb, double vev2, double gs); + +Eigen::Matrix self_energy_pseudoscalar_2loop_at_at_mssm( + double rmtsq, double rmbsq, double fmasq, double mst1sq, + double mst2sq, double msb1sq, double msb2sq, + double sxt, double cxt, double sxb, double cxb, + double scalesq, double amu, double tanb, double vev2); + +Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_mssm( + double rmbsq, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, double amu, + double cotbeta, double vev2, double gs); + +Eigen::Matrix self_energy_pseudoscalar_2loop_atau_atau_mssm( + double rmtausq, double fmasq, double msnusq, double mstau1sq, + double mstau2sq, double sintau, double costau, double scalesq, + double amu, double tanb, double vev2); + +// self-energies with tadpoles added + +Eigen::Matrix self_energy_higgs_2loop_at_as_mssm_with_tadpoles( + double rmtsq, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, double amu, + double tanb, double vev2, double gs, int scheme = 0); + +Eigen::Matrix self_energy_higgs_2loop_at_at_mssm_with_tadpoles( + double rmtsq, double rmbsq, double fmasq, double mst1sq, + double mst2sq, double msb1sq, double msb2sq, + double sxt, double cxt, double sxb, double cxb, + double scalesq, double amu, double tanb, double vev2); + +Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm_with_tadpoles( + double rmbsq, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, double amu, + double cotbeta, double vev2, double gs, int scheme = 0); + +Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm_with_tadpoles( + double rmtausq, double fmasq, double msnusq, double mstau1sq, + double mstau2sq, double sintau, double costau, double scalesq, + double amu, double tanb, double vev2, int scheme = 0); + + +double self_energy_pseudoscalar_2loop_at_as_mssm_with_tadpoles( double rmtsq, double mg, double mst1sq, double mst2sq, double sxt, double cxt, double scalesq, double amu, double tanb, double vev2, double gs); -double self_energy_pseudoscalar_2loop_at_at_mssm( +double self_energy_pseudoscalar_2loop_at_at_mssm_with_tadpoles( double rmtsq, double rmbsq, double fmasq, double mst1sq, double mst2sq, double msb1sq, double msb2sq, double sxt, double cxt, double sxb, double cxb, double scalesq, double amu, double tanb, double vev2); -double self_energy_pseudoscalar_2loop_ab_as_mssm( +double self_energy_pseudoscalar_2loop_ab_as_mssm_with_tadpoles( double rmbsq, double mg, double msb1sq, double msb2sq, double sxb, double cxb, double scalesq, double amu, double cotbeta, double vev2, double gs); -double self_energy_pseudoscalar_2loop_atau_atau_mssm( +double self_energy_pseudoscalar_2loop_atau_atau_mssm_with_tadpoles( double rmtausq, double fmasq, double msnusq, double mstau1sq, double mstau2sq, double sintau, double costau, double scalesq, double amu, double tanb, double vev2); diff --git a/src/nmssm_twoloophiggs.cpp b/src/nmssm_twoloophiggs.cpp index 0241a97f4..fe3fe5ae1 100644 --- a/src/nmssm_twoloophiggs.cpp +++ b/src/nmssm_twoloophiggs.cpp @@ -17,6 +17,7 @@ // ==================================================================== #include "nmssm_twoloophiggs.hpp" +#include "mssm_twoloophiggs.hpp" #include "nmssm2loop.h" #include "config.h" #include @@ -32,7 +33,126 @@ namespace flexiblesusy { static std::mutex mtx_nmssm; /// locks MSSM fortran functions +namespace { +template T sqr(T a) { return a * a; } +} + +Eigen::Matrix tadpole_higgs_2loop_at_as_nmssm( + double rmtsq, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, + double amu, double tanb, double vev2, double gs, double svevS) +{ + const double cosb = 1. / std::sqrt(1. + sqr(tanb)); + + const Eigen::Matrix t_mssm = tadpole_higgs_2loop_at_as_mssm( + rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs); + + Eigen::Matrix result; + result.head<2>() = t_mssm; + // rescale T1 to get TS + result(2) = t_mssm(0) * std::sqrt(vev2) * cosb / (svevS * std::sqrt(2.)); + + return result; +} + +Eigen::Matrix tadpole_higgs_2loop_ab_as_nmssm( + double rmbsq, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, + double amu, double cotbeta, double vev2, double gs, double svevS) +{ + const double tanb = 1./cotbeta; + const double sinb = tanb / std::sqrt(1. + sqr(tanb)); + + const Eigen::Matrix t_mssm = tadpole_higgs_2loop_ab_as_mssm( + rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotbeta, vev2, gs); + + Eigen::Matrix result; + result.head<2>() = t_mssm; + // rescale T1 to get TS + result(2) = t_mssm(0) * std::sqrt(vev2) * sinb / (svevS * std::sqrt(2.)); + + return result; +} + Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm( + double rmt, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, double tanb, double vevS, + double lamS, double svevS, double as, double amu) +{ + const double vev2 = sqr(vevS * std::sqrt(2.)); + const double gs = std::sqrt(as * 4. * M_PI); + + const Eigen::Matrix se = + self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( + rmt, mg, mst1sq, mst2sq, sxt, cxt, scalesq, tanb, vevS, lamS, svevS, as); + + const Eigen::Matrix tadpoles = + tadpole_higgs_2loop_at_as_nmssm( + sqr(rmt), mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs, svevS).asDiagonal(); + + return -se - tadpoles; +} + +Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( + double rmb, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, double cotb, double vevS, + double lamS, double svevS, double as, double amu) +{ + const double vev2 = sqr(vevS * std::sqrt(2.)); + const double gs = std::sqrt(as * 4. * M_PI); + + const Eigen::Matrix se = + self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( + rmb, mg, msb1sq, msb2sq, sxb, cxb, scalesq, cotb, vevS, lamS, svevS, as); + + const Eigen::Matrix tadpoles = + tadpole_higgs_2loop_ab_as_nmssm( + sqr(rmb), mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotb, vev2, gs, svevS).asDiagonal(); + + return -se - tadpoles; +} + +Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( + double rmt, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, double tanb, double vevS, + double lamS, double svevS, double as, double amu) +{ + const double vev2 = sqr(vevS * std::sqrt(2.)); + const double gs = std::sqrt(as * 4. * M_PI); + + const Eigen::Matrix se = + self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( + rmt, mg, mst1sq, mst2sq, sxt, cxt, scalesq, tanb, vevS, + lamS, svevS, as); + + const Eigen::Matrix tadpoles = + tadpole_higgs_2loop_at_as_nmssm( + sqr(rmt), mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs, svevS).asDiagonal(); + + return -se - tadpoles; +} + +Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( + double rmb, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, double cotb, double vevS, + double lamS, double svevS, double as, double amu) +{ + const double vev2 = sqr(vevS * std::sqrt(2.)); + const double gs = std::sqrt(as * 4. * M_PI); + + const Eigen::Matrix se = + self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( + rmb, mg, msb1sq, msb2sq, sxb, cxb, scalesq, cotb, vevS, + lamS, svevS, as); + + const Eigen::Matrix tadpoles = + tadpole_higgs_2loop_ab_as_nmssm( + sqr(rmb), mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotb, vev2, gs, svevS).asDiagonal(); + + return -se - tadpoles; +} + +Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( double rmt, double mg, double mst1sq, double mst2sq, double sxt, double cxt, double scalesq, double tanb, double vevS, double lamS, double svevS, double as) @@ -53,7 +173,7 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm( return result; } -Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( +Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( double rmb, double mg, double msb1sq, double msb2sq, double sxb, double cxb, double scalesq, double cotb, double vevS, double lamS, double svevS, double as) @@ -79,7 +199,7 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( return result; } -Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( +Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( double rmt, double mg, double mst1sq, double mst2sq, double sxt, double cxt, double scalesq, double tanb, double vevS, double lamS, double svevS, double as) @@ -100,7 +220,7 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( return result; } -Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( +Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadpoles( double rmb, double mg, double msb1sq, double msb2sq, double sxb, double cxb, double scalesq, double cotb, double vevS, double lamS, double svevS, double as) diff --git a/src/nmssm_twoloophiggs.hpp b/src/nmssm_twoloophiggs.hpp index d1870569e..b28afa003 100644 --- a/src/nmssm_twoloophiggs.hpp +++ b/src/nmssm_twoloophiggs.hpp @@ -23,22 +23,52 @@ namespace flexiblesusy { +Eigen::Matrix tadpole_higgs_2loop_at_as_nmssm( + double rmtsq, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, + double amu, double tanb, double vev2, double gs, double svevS); + +Eigen::Matrix tadpole_higgs_2loop_ab_as_nmssm( + double rmbsq, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, + double amu, double cotbeta, double vev2, double gs, double svevS); + Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm( double rmt, double mg, double mst1sq, double mst2sq, double sxt, double cxt, double scalesq, double tanb, double vevS, - double lamS, double svevS, double as); + double lamS, double svevS, double as, double amu); Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( double rmb, double mg, double msb1sq, double msb2sq, double sxb, double cxb, double scalesq, double cotb, double vevS, - double lamS, double svevS, double as); + double lamS, double svevS, double as, double amu); Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( double rmt, double mg, double mst1sq, double mst2sq, double sxt, double cxt, double scalesq, double tanb, double vevS, - double lamS, double svevS, double as); + double lamS, double svevS, double as, double amu); Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( + double rmb, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, double cotb, double vevS, + double lamS, double svevS, double as, double amu); + +Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( + double rmt, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, double tanb, double vevS, + double lamS, double svevS, double as); + +Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( + double rmb, double mg, double msb1sq, double msb2sq, + double sxb, double cxb, double scalesq, double cotb, double vevS, + double lamS, double svevS, double as); + +Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( + double rmt, double mg, double mst1sq, double mst2sq, + double sxt, double cxt, double scalesq, double tanb, double vevS, + double lamS, double svevS, double as); + +Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadpoles( double rmb, double mg, double msb1sq, double msb2sq, double sxb, double cxb, double scalesq, double cotb, double vevS, double lamS, double svevS, double as); From 2200ec7727b90eead8e5e7fb8db077b823c5578d Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Wed, 10 Aug 2016 23:48:46 +0200 Subject: [PATCH 44/64] make all functions return same sign convention --- src/mssm_twoloophiggs.cpp | 32 ++++++++++++++++---------------- src/nmssm_twoloophiggs.cpp | 16 ++++++++-------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/mssm_twoloophiggs.cpp b/src/mssm_twoloophiggs.cpp index 7c79b6117..b1e02c509 100644 --- a/src/mssm_twoloophiggs.cpp +++ b/src/mssm_twoloophiggs.cpp @@ -109,7 +109,7 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_mssm_with_tadpoles( result(1,0) = result(0,1); - return result; + return -result; } Eigen::Matrix self_energy_higgs_2loop_at_at_mssm_with_tadpoles( @@ -128,7 +128,7 @@ Eigen::Matrix self_energy_higgs_2loop_at_at_mssm_with_tadpoles( result(1,0) = result(0,1); - return result; + return -result; } Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm_with_tadpoles( @@ -160,7 +160,7 @@ Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm_with_tadpoles result(1,0) = result(0,1); - return result; + return -result; } double self_energy_pseudoscalar_2loop_at_as_mssm_with_tadpoles( @@ -175,7 +175,7 @@ double self_energy_pseudoscalar_2loop_at_as_mssm_with_tadpoles( dszodd_(&rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, &amu, &tanb, &vev2, &gs, &result); - return result; + return -result; } double self_energy_pseudoscalar_2loop_at_at_mssm_with_tadpoles( @@ -191,7 +191,7 @@ double self_energy_pseudoscalar_2loop_at_at_mssm_with_tadpoles( ddsodd_(&rmtsq, &rmbsq, &fmasq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, &result); - return result; + return -result; } double self_energy_pseudoscalar_2loop_ab_as_mssm_with_tadpoles( @@ -216,7 +216,7 @@ double self_energy_pseudoscalar_2loop_atau_atau_mssm_with_tadpoles( tausqodd_(&rmtausq, &fmasq, &msnusq, &mstau1sq, &mstau2sq, &sintau, &costau, &scalesq, &amu, &tanb, &vev2, &result); - return result; + return -result; } // self-energies without tadpoles @@ -234,10 +234,10 @@ Eigen::Matrix rotate_scalar( Eigen::Matrix result; - result(0,0) = - self_energy * sqr(sinb); - result(0,1) = + self_energy * sinb * cosb; + result(0,0) = self_energy * sqr(sinb); + result(0,1) = - self_energy * sinb * cosb; result(1,0) = result(0,1); - result(1,1) = - self_energy * sqr(cosb); + result(1,1) = self_energy * sqr(cosb); return result; } @@ -270,7 +270,7 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_mssm( const Eigen::Matrix tM = subtract_mssm_tadpoles_scalar(dMA, tadpoles, tanb); - return -result + tM; + return result + tM; } Eigen::Matrix self_energy_higgs_2loop_at_at_mssm( @@ -296,7 +296,7 @@ Eigen::Matrix self_energy_higgs_2loop_at_at_mssm( const Eigen::Matrix tM = subtract_mssm_tadpoles_scalar(dMA, tadpoles, tanb); - return -result + tM; + return result + tM; } Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm( @@ -319,7 +319,7 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm( const Eigen::Matrix tM = subtract_mssm_tadpoles_scalar(dMA, tadpoles, 1./cotbeta); - return -result + tM; + return result + tM; } Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm( @@ -344,7 +344,7 @@ Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm( const Eigen::Matrix tM = subtract_mssm_tadpoles_scalar(dMA, tadpoles, tanb); - return -result + tM; + return result + tM; } Eigen::Matrix rotate_pseudoscalar( @@ -357,10 +357,10 @@ Eigen::Matrix rotate_pseudoscalar( Eigen::Matrix result; // see hep-ph/0105096 Eq. (9) - result(0,0) = - self_energy * sqr(sinb); - result(0,1) = - self_energy * sinb * cosb; + result(0,0) = self_energy * sqr(sinb); + result(0,1) = self_energy * sinb * cosb; result(1,0) = result(0,1); - result(1,1) = - self_energy * sqr(cosb); + result(1,1) = self_energy * sqr(cosb); return result; } diff --git a/src/nmssm_twoloophiggs.cpp b/src/nmssm_twoloophiggs.cpp index fe3fe5ae1..3011ac391 100644 --- a/src/nmssm_twoloophiggs.cpp +++ b/src/nmssm_twoloophiggs.cpp @@ -90,7 +90,7 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm( tadpole_higgs_2loop_at_as_nmssm( sqr(rmt), mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs, svevS).asDiagonal(); - return -se - tadpoles; + return se - tadpoles; } Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( @@ -109,7 +109,7 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( tadpole_higgs_2loop_ab_as_nmssm( sqr(rmb), mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotb, vev2, gs, svevS).asDiagonal(); - return -se - tadpoles; + return se - tadpoles; } Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( @@ -129,7 +129,7 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( tadpole_higgs_2loop_at_as_nmssm( sqr(rmt), mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs, svevS).asDiagonal(); - return -se - tadpoles; + return se - tadpoles; } Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( @@ -149,7 +149,7 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( tadpole_higgs_2loop_ab_as_nmssm( sqr(rmb), mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotb, vev2, gs, svevS).asDiagonal(); - return -se - tadpoles; + return se - tadpoles; } Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( @@ -170,7 +170,7 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( DMS[1][0], DMS[1][1], DMS[1][2], DMS[2][0], DMS[2][1], DMS[2][2]; - return result; + return -result; } Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( @@ -196,7 +196,7 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( DMS[1][0], DMS[1][1], DMS[1][2], DMS[2][0], DMS[2][1], DMS[2][2]; - return result; + return -result; } Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( @@ -217,7 +217,7 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadp DMP[1][0], DMP[1][1], DMP[1][2], DMP[2][0], DMP[2][1], DMP[2][2]; - return result; + return -result; } Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadpoles( @@ -243,7 +243,7 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadp DMP[1][0], DMP[1][1], DMP[1][2], DMP[2][0], DMP[2][1], DMP[2][2]; - return result; + return -result; } } // namespace flexiblesusy From 37873a727a3d12eaf3c62236d7cf2ef2d3e15723 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 11 Aug 2016 00:29:20 +0200 Subject: [PATCH 45/64] easier sign convention for tadpoles --- meta/SelfEnergies.m | 10 +++++----- src/mssm_twoloophiggs.cpp | 18 ++++++------------ src/nmssm_twoloophiggs.cpp | 8 ++++---- 3 files changed, 15 insertions(+), 21 deletions(-) diff --git a/meta/SelfEnergies.m b/meta/SelfEnergies.m index 47acc03af..eaf9b7c94 100644 --- a/meta/SelfEnergies.m +++ b/meta/SelfEnergies.m @@ -608,8 +608,8 @@ costau, scalesq, amu, tanb, vev2); } -tadpole_2l(0) *= -" <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; -tadpole_2l(1) *= -" <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; +tadpole_2l(0) *= " <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; +tadpole_2l(1) *= " <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; if (!IsFinite(tadpole_2l)) tadpole_2l.setZero(); @@ -697,9 +697,9 @@ costau, scalesq, amu, tanb, vev2); } -tadpole_2l(0) *= -" <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; -tadpole_2l(1) *= -" <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; -tadpole_2l(2) *= -" <> svevStr <> "; +tadpole_2l(0) *= " <> CConversion`ToValidCSymbolString[SARAH`VEVSM1] <> "; +tadpole_2l(1) *= " <> CConversion`ToValidCSymbolString[SARAH`VEVSM2] <> "; +tadpole_2l(2) *= " <> svevStr <> "; if (!IsFinite(tadpole_2l)) tadpole_2l.setZero(); diff --git a/src/mssm_twoloophiggs.cpp b/src/mssm_twoloophiggs.cpp index b1e02c509..e92aad120 100644 --- a/src/mssm_twoloophiggs.cpp +++ b/src/mssm_twoloophiggs.cpp @@ -45,7 +45,7 @@ Eigen::Matrix tadpole_higgs_2loop_at_as_mssm( ewsb2loop_(&rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, &amu, &tanb, &vev2, &gs, &result(0), &result(1)); - return result; + return -result; } Eigen::Matrix tadpole_higgs_2loop_at_at_mssm( @@ -62,7 +62,7 @@ Eigen::Matrix tadpole_higgs_2loop_at_at_mssm( &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, &result(0), &result(1)); - return result; + return -result; } Eigen::Matrix tadpole_higgs_2loop_ab_as_mssm( @@ -91,7 +91,7 @@ Eigen::Matrix tadpole_higgs_2loop_atau_atau_mssm( tausqtad_(&rmtausq, &mAsq, &msnusq, &mstau1sq, &mstau2sq, &sintau, &costau, &scalesq, &amu, &tanb, &vev2, &result(0), &result(1)); - return result; + return -result; } Eigen::Matrix self_energy_higgs_2loop_at_as_mssm_with_tadpoles( @@ -243,10 +243,10 @@ Eigen::Matrix rotate_scalar( } Eigen::Matrix subtract_mssm_tadpoles_scalar( - double dMA, const Eigen::Matrix& tadpoles, + double self_energy, const Eigen::Matrix& tadpoles, double tanb) { - return rotate_scalar(dMA, tanb) - Eigen::Matrix(tadpoles.asDiagonal()); + return rotate_scalar(self_energy, tanb) + Eigen::Matrix(tadpoles.asDiagonal()); } Eigen::Matrix self_energy_higgs_2loop_at_as_mssm( @@ -369,13 +369,7 @@ Eigen::Matrix subtract_mssm_tadpoles_pseudoscalar( double self_energy, const Eigen::Matrix& tadpoles, double tanb) { - Eigen::Matrix result = - rotate_pseudoscalar(self_energy, tanb); - - result(0,0) -= tadpoles(0); - result(1,1) -= tadpoles(1); - - return result; + return rotate_pseudoscalar(self_energy, tanb) + Eigen::Matrix(tadpoles.asDiagonal()); } Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_mssm( diff --git a/src/nmssm_twoloophiggs.cpp b/src/nmssm_twoloophiggs.cpp index 3011ac391..5f4cfd73c 100644 --- a/src/nmssm_twoloophiggs.cpp +++ b/src/nmssm_twoloophiggs.cpp @@ -90,7 +90,7 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm( tadpole_higgs_2loop_at_as_nmssm( sqr(rmt), mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs, svevS).asDiagonal(); - return se - tadpoles; + return se + tadpoles; } Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( @@ -109,7 +109,7 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( tadpole_higgs_2loop_ab_as_nmssm( sqr(rmb), mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotb, vev2, gs, svevS).asDiagonal(); - return se - tadpoles; + return se + tadpoles; } Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( @@ -129,7 +129,7 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( tadpole_higgs_2loop_at_as_nmssm( sqr(rmt), mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs, svevS).asDiagonal(); - return se - tadpoles; + return se + tadpoles; } Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( @@ -149,7 +149,7 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( tadpole_higgs_2loop_ab_as_nmssm( sqr(rmb), mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotb, vev2, gs, svevS).asDiagonal(); - return se - tadpoles; + return se + tadpoles; } Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( From 53c868ec75fd44732084644a885b92ace1a4a8f8 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 11 Aug 2016 10:42:49 +0200 Subject: [PATCH 46/64] put (N)MSSM 2-loop functions into a separate namespace --- meta/SelfEnergies.m | 15 +++++++++++++++ src/mssm_twoloophiggs.cpp | 2 ++ src/mssm_twoloophiggs.hpp | 2 ++ src/nmssm_twoloophiggs.cpp | 4 ++++ src/nmssm_twoloophiggs.hpp | 4 +++- 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/meta/SelfEnergies.m b/meta/SelfEnergies.m index eaf9b7c94..8ec803ad6 100644 --- a/meta/SelfEnergies.m +++ b/meta/SelfEnergies.m @@ -548,6 +548,8 @@ m3Str = CConversion`RValueToCFormString[FlexibleSUSY`M[SARAH`Gluino]]; mA0Str = TreeMasses`CallPseudoscalarHiggsMassGetterFunction[] <> "(0)"; "\ +using namespace flexiblesusy::mssm_twoloophiggs; + // calculate 3rd generation sfermion masses and mixing angles double mst_1, mst_2, theta_t; double msb_1, msb_2, theta_b; @@ -636,6 +638,9 @@ mA0Str = CConversion`RValueToCFormString[Parameters`GetEffectiveMASqr[]]; svevStr = CConversion`RValueToCFormString[Parameters`GetParameterFromDescription["Singlet-VEV"]]; "\ +using namespace flexiblesusy::mssm_twoloophiggs; +using namespace flexiblesusy::nmssm_twoloophiggs; + // calculate 3rd generation sfermion masses and mixing angles double mst_1, mst_2, theta_t; double msb_1, msb_2, theta_b; @@ -812,6 +817,8 @@ m3Str = CConversion`RValueToCFormString[FlexibleSUSY`M[SARAH`Gluino]]; mA0Str = TreeMasses`CallPseudoscalarHiggsMassGetterFunction[] <> "(0)"; "\ +using namespace flexiblesusy::mssm_twoloophiggs; + // calculate 3rd generation sfermion masses and mixing angles double mst_1, mst_2, theta_t; double msb_1, msb_2, theta_b; @@ -896,6 +903,8 @@ m3Str = CConversion`RValueToCFormString[FlexibleSUSY`M[SARAH`Gluino]]; mA0Str = TreeMasses`CallPseudoscalarHiggsMassGetterFunction[] <> "(0)"; "\ +using namespace flexiblesusy::mssm_twoloophiggs; + // calculate 3rd generation sfermion masses and mixing angles double mst_1, mst_2, theta_t; double msb_1, msb_2, theta_b; @@ -983,6 +992,9 @@ vsStr = CConversion`RValueToCFormString[Parameters`GetParameterFromDescription["Singlet-VEV"]]; lambdaStr = CConversion`RValueToCFormString[Parameters`GetParameterFromDescription["Singlet-Higgs-Interaction"]]; "\ +using namespace flexiblesusy::mssm_twoloophiggs; +using namespace flexiblesusy::nmssm_twoloophiggs; + // calculate 3rd generation sfermion masses and mixing angles double mst_1, mst_2, theta_t; double msb_1, msb_2, theta_b; @@ -1081,6 +1093,9 @@ vsStr = CConversion`RValueToCFormString[Parameters`GetParameterFromDescription["Singlet-VEV"]]; lambdaStr = CConversion`RValueToCFormString[Parameters`GetParameterFromDescription["Singlet-Higgs-Interaction"]]; "\ +using namespace flexiblesusy::mssm_twoloophiggs; +using namespace flexiblesusy::nmssm_twoloophiggs; + // calculate 3rd generation sfermion masses and mixing angles double mst_1, mst_2, theta_t; double msb_1, msb_2, theta_b; diff --git a/src/mssm_twoloophiggs.cpp b/src/mssm_twoloophiggs.cpp index e92aad120..78c5b88f9 100644 --- a/src/mssm_twoloophiggs.cpp +++ b/src/mssm_twoloophiggs.cpp @@ -30,6 +30,7 @@ #endif namespace flexiblesusy { +namespace mssm_twoloophiggs { static std::mutex mtx_mssm; /// locks MSSM fortran functions @@ -437,4 +438,5 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_atau_atau_mssm( return subtract_mssm_tadpoles_pseudoscalar(se, tadpoles, tanb); } +} // namespace mssm_twoloophiggs } // namespace flexiblesusy diff --git a/src/mssm_twoloophiggs.hpp b/src/mssm_twoloophiggs.hpp index 7bfaacce4..64d0691fc 100644 --- a/src/mssm_twoloophiggs.hpp +++ b/src/mssm_twoloophiggs.hpp @@ -22,6 +22,7 @@ #include namespace flexiblesusy { +namespace mssm_twoloophiggs { // tadpoles @@ -136,6 +137,7 @@ double self_energy_pseudoscalar_2loop_atau_atau_mssm_with_tadpoles( double mstau2sq, double sintau, double costau, double scalesq, double amu, double tanb, double vev2); +} // namespace mssm_twoloophiggs } // namespace flexiblesusy #endif diff --git a/src/nmssm_twoloophiggs.cpp b/src/nmssm_twoloophiggs.cpp index 5f4cfd73c..701283f1e 100644 --- a/src/nmssm_twoloophiggs.cpp +++ b/src/nmssm_twoloophiggs.cpp @@ -29,7 +29,10 @@ #define LOCK_MUTEX() #endif +using namespace flexiblesusy::mssm_twoloophiggs; + namespace flexiblesusy { +namespace nmssm_twoloophiggs { static std::mutex mtx_nmssm; /// locks MSSM fortran functions @@ -246,4 +249,5 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadp return -result; } +} // namespace nmssm_twoloophiggs } // namespace flexiblesusy diff --git a/src/nmssm_twoloophiggs.hpp b/src/nmssm_twoloophiggs.hpp index b28afa003..4e90fc7f4 100644 --- a/src/nmssm_twoloophiggs.hpp +++ b/src/nmssm_twoloophiggs.hpp @@ -22,6 +22,7 @@ #include namespace flexiblesusy { +namespace nmssm_twoloophiggs { Eigen::Matrix tadpole_higgs_2loop_at_as_nmssm( double rmtsq, double mg, double mst1sq, double mst2sq, @@ -73,6 +74,7 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadp double sxb, double cxb, double scalesq, double cotb, double vevS, double lamS, double svevS, double as); -} +} // namespace nmssm_twoloophiggs +} // namespace flexiblesusy #endif From 7cd159665967a546c71d6f6423c29210075ed276 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 11 Aug 2016 15:51:43 +0200 Subject: [PATCH 47/64] correcting function call to calculate pseudoscalar self-energy --- src/nmssm_twoloophiggs.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/nmssm_twoloophiggs.cpp b/src/nmssm_twoloophiggs.cpp index 701283f1e..8a2586d2d 100644 --- a/src/nmssm_twoloophiggs.cpp +++ b/src/nmssm_twoloophiggs.cpp @@ -124,7 +124,7 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( const double gs = std::sqrt(as * 4. * M_PI); const Eigen::Matrix se = - self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( + self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( rmt, mg, mst1sq, mst2sq, sxt, cxt, scalesq, tanb, vevS, lamS, svevS, as); @@ -144,7 +144,7 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( const double gs = std::sqrt(as * 4. * M_PI); const Eigen::Matrix se = - self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( + self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadpoles( rmb, mg, msb1sq, msb2sq, sxb, cxb, scalesq, cotb, vevS, lamS, svevS, as); From 5c121cc5ba29d917c315fbbe82391ea89670585d Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 11 Aug 2016 15:58:40 +0200 Subject: [PATCH 48/64] reduce code duplication --- src/nmssm_twoloophiggs.cpp | 44 ++++++++++++-------------------------- 1 file changed, 14 insertions(+), 30 deletions(-) diff --git a/src/nmssm_twoloophiggs.cpp b/src/nmssm_twoloophiggs.cpp index 8a2586d2d..2d3c9ca19 100644 --- a/src/nmssm_twoloophiggs.cpp +++ b/src/nmssm_twoloophiggs.cpp @@ -181,25 +181,17 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( double sxb, double cxb, double scalesq, double cotb, double vevS, double lamS, double svevS, double as) { - int loop = 2; - double DMS[3][3] = {{ 0. }}, DMP[3][3] = {{ 0. }}; - - LOCK_MUTEX(); - - effpot_(&loop, &rmb, &mg, &msb1sq, &msb2sq, &sxb, &cxb, - &scalesq, &cotb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); + Eigen::Matrix result = + self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( + rmb, mg, msb1sq, msb2sq, sxb, cxb, scalesq, cotb, vevS, + lamS, svevS, as); // Make appropriate substitutions for elements following 0907.4682 // bottom of page 9 - std::swap(DMS[0][0], DMS[1][1]); - std::swap(DMS[0][2], DMS[1][2]); + std::swap(result(0,0), result(1,1)); + std::swap(result(0,2), result(1,2)); - Eigen::Matrix result; - result << DMS[0][0], DMS[0][1], DMS[0][2], - DMS[1][0], DMS[1][1], DMS[1][2], - DMS[2][0], DMS[2][1], DMS[2][2]; - - return -result; + return result; } Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( @@ -228,25 +220,17 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadp double sxb, double cxb, double scalesq, double cotb, double vevS, double lamS, double svevS, double as) { - int loop = 2; - double DMS[3][3] = {{ 0. }}, DMP[3][3] = {{ 0. }}; - - LOCK_MUTEX(); - - effpot_(&loop, &rmb, &mg, &msb1sq, &msb2sq, &sxb, &cxb, - &scalesq, &cotb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); + Eigen::Matrix result = + self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( + rmb, mg, msb1sq, msb2sq, sxb, cxb, scalesq, cotb, vevS, + lamS, svevS, as); // Make appropriate substitutions for elements following 0907.4682 // bottom of page 9 - std::swap(DMP[0][0], DMP[1][1]); - std::swap(DMP[0][2], DMP[1][2]); + std::swap(result(0,0), result(1,1)); + std::swap(result(0,2), result(1,2)); - Eigen::Matrix result; - result << DMP[0][0], DMP[0][1], DMP[0][2], - DMP[1][0], DMP[1][1], DMP[1][2], - DMP[2][0], DMP[2][1], DMP[2][2]; - - return -result; + return result; } } // namespace nmssm_twoloophiggs From 2c524c34ad657c55de6c5eed22bbb9ed2c8093cd Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 11 Aug 2016 16:00:34 +0200 Subject: [PATCH 49/64] reduce scope for locking mutex --- src/nmssm_twoloophiggs.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/nmssm_twoloophiggs.cpp b/src/nmssm_twoloophiggs.cpp index 2d3c9ca19..ff5035afa 100644 --- a/src/nmssm_twoloophiggs.cpp +++ b/src/nmssm_twoloophiggs.cpp @@ -163,10 +163,12 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( int loop = 2; double DMS[3][3] = {{ 0. }}, DMP[3][3] = {{ 0. }}; - LOCK_MUTEX(); + { + LOCK_MUTEX(); - effpot_(&loop, &rmt, &mg, &mst1sq, &mst2sq, &sxt, &cxt, - &scalesq, &tanb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); + effpot_(&loop, &rmt, &mg, &mst1sq, &mst2sq, &sxt, &cxt, + &scalesq, &tanb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); + } Eigen::Matrix result; result << DMS[0][0], DMS[0][1], DMS[0][2], @@ -202,10 +204,12 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadp int loop = 2; double DMS[3][3] = {{ 0. }}, DMP[3][3] = {{ 0. }}; - LOCK_MUTEX(); + { + LOCK_MUTEX(); - effpot_(&loop, &rmt, &mg, &mst1sq, &mst2sq, &sxt, &cxt, - &scalesq, &tanb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); + effpot_(&loop, &rmt, &mg, &mst1sq, &mst2sq, &sxt, &cxt, + &scalesq, &tanb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); + } Eigen::Matrix result; result << DMP[0][0], DMP[0][1], DMP[0][2], From f7f12a6c9c63a6a99d038ae03cae08a1523c56be Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 11 Aug 2016 16:34:47 +0200 Subject: [PATCH 50/64] rename parameters for readability --- src/mssm_twoloophiggs.cpp | 222 ++++++++++++++++++------------------- src/mssm_twoloophiggs.hpp | 147 ++++++++++++++---------- src/nmssm_twoloophiggs.cpp | 86 +++++++------- src/nmssm_twoloophiggs.hpp | 89 ++++++++++----- 4 files changed, 308 insertions(+), 236 deletions(-) diff --git a/src/mssm_twoloophiggs.cpp b/src/mssm_twoloophiggs.cpp index 78c5b88f9..91615d986 100644 --- a/src/mssm_twoloophiggs.cpp +++ b/src/mssm_twoloophiggs.cpp @@ -35,45 +35,45 @@ namespace mssm_twoloophiggs { static std::mutex mtx_mssm; /// locks MSSM fortran functions Eigen::Matrix tadpole_higgs_2loop_at_as_mssm( - double rmtsq, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, - double amu, double tanb, double vev2, double gs) + double mt2, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, + double mu, double tanb, double vev2, double gs) { Eigen::Matrix result; LOCK_MUTEX(); - ewsb2loop_(&rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, - &amu, &tanb, &vev2, &gs, &result(0), &result(1)); + ewsb2loop_(&mt2, &mg, &mst12, &mst22, &sxt, &cxt, &scale2, + &mu, &tanb, &vev2, &gs, &result(0), &result(1)); return -result; } Eigen::Matrix tadpole_higgs_2loop_at_at_mssm( - double rmtsq, double rmbsq, double mAsq, double mst1sq, - double mst2sq, double msb1sq, double msb2sq, + double mt2, double rmbsq, double mA2, double mst12, + double mst22, double msb12, double msb22, double sxt, double cxt, double sxb, double cxb, - double scalesq, double amu, double tanb, double vev2) + double scale2, double mu, double tanb, double vev2) { Eigen::Matrix result; LOCK_MUTEX(); - ddstad_(&rmtsq, &rmbsq, &mAsq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, - &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, + ddstad_(&mt2, &rmbsq, &mA2, &mst12, &mst22, &msb12, &msb22, + &sxt, &cxt, &sxb, &cxb, &scale2, &mu, &tanb, &vev2, &result(0), &result(1)); return -result; } Eigen::Matrix tadpole_higgs_2loop_ab_as_mssm( - double rmbsq, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, - double amu, double cotbeta, double vev2, double gs) + double rmbsq, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, + double mu, double cotb, double vev2, double gs) { Eigen::Matrix result(tadpole_higgs_2loop_at_as_mssm( - rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, - amu, cotbeta, vev2, gs)); + rmbsq, mg, msb12, msb22, sxb, cxb, scale2, + mu, cotb, vev2, gs)); std::swap(result(0), result(1)); @@ -81,30 +81,30 @@ Eigen::Matrix tadpole_higgs_2loop_ab_as_mssm( } Eigen::Matrix tadpole_higgs_2loop_atau_atau_mssm( - double rmtausq, double mAsq, double msnusq, double mstau1sq, - double mstau2sq, double sintau, double costau, double scalesq, - double amu, double tanb, double vev2) + double mtau2, double mA2, double msnusq, double mstau12, + double mstau22, double sintau, double costau, double scale2, + double mu, double tanb, double vev2) { Eigen::Matrix result; LOCK_MUTEX(); - tausqtad_(&rmtausq, &mAsq, &msnusq, &mstau1sq, &mstau2sq, &sintau, - &costau, &scalesq, &amu, &tanb, &vev2, &result(0), &result(1)); + tausqtad_(&mtau2, &mA2, &msnusq, &mstau12, &mstau22, &sintau, + &costau, &scale2, &mu, &tanb, &vev2, &result(0), &result(1)); return -result; } Eigen::Matrix self_energy_higgs_2loop_at_as_mssm_with_tadpoles( - double rmtsq, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, double amu, + double mt2, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, double mu, double tanb, double vev2, double gs, int scheme) { Eigen::Matrix result; LOCK_MUTEX(); - dszhiggs_(&rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, &amu, + dszhiggs_(&mt2, &mg, &mst12, &mst22, &sxt, &cxt, &scale2, &mu, &tanb, &vev2, &gs, &scheme, &result(0,0), &result(1,1), &result(0,1)); @@ -114,17 +114,17 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_mssm_with_tadpoles( } Eigen::Matrix self_energy_higgs_2loop_at_at_mssm_with_tadpoles( - double rmtsq, double rmbsq, double fmasq, double mst1sq, - double mst2sq, double msb1sq, double msb2sq, + double mt2, double rmbsq, double mA2, double mst12, + double mst22, double msb12, double msb22, double sxt, double cxt, double sxb, double cxb, - double scalesq, double amu, double tanb, double vev2) + double scale2, double mu, double tanb, double vev2) { Eigen::Matrix result; LOCK_MUTEX(); - ddshiggs_(&rmtsq, &rmbsq, &fmasq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, - &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, + ddshiggs_(&mt2, &rmbsq, &mA2, &mst12, &mst22, &msb12, &msb22, + &sxt, &cxt, &sxb, &cxb, &scale2, &mu, &tanb, &vev2, &result(0,0), &result(0,1), &result(1,1)); result(1,0) = result(0,1); @@ -133,13 +133,13 @@ Eigen::Matrix self_energy_higgs_2loop_at_at_mssm_with_tadpoles( } Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm_with_tadpoles( - double rmbsq, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, double amu, - double cotbeta, double vev2, double gs, int scheme) + double rmbsq, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, double mu, + double cotb, double vev2, double gs, int scheme) { Eigen::Matrix result(self_energy_higgs_2loop_at_as_mssm_with_tadpoles( - rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, - cotbeta, vev2, gs, scheme)); + rmbsq, mg, msb12, msb22, sxb, cxb, scale2, mu, + cotb, vev2, gs, scheme)); std::swap(result(0,0), result(1,1)); @@ -147,16 +147,16 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm_with_tadpoles( } Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm_with_tadpoles( - double rmtausq, double fmasq, double msnusq, double mstau1sq, - double mstau2sq, double sintau, double costau, double scalesq, - double amu, double tanb, double vev2, int scheme) + double mtau2, double mA2, double msnusq, double mstau12, + double mstau22, double sintau, double costau, double scale2, + double mu, double tanb, double vev2, int scheme) { Eigen::Matrix result; LOCK_MUTEX(); - tausqhiggs_(&rmtausq, &fmasq, &msnusq, &mstau1sq, &mstau2sq, &sintau, - &costau, &scalesq, &amu, &tanb, &vev2, &scheme, + tausqhiggs_(&mtau2, &mA2, &msnusq, &mstau12, &mstau22, &sintau, + &costau, &scale2, &mu, &tanb, &vev2, &scheme, &result(0,0), &result(1,1), &result(0,1)); result(1,0) = result(0,1); @@ -165,57 +165,57 @@ Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm_with_tadpoles } double self_energy_pseudoscalar_2loop_at_as_mssm_with_tadpoles( - double rmtsq, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, double amu, + double mt2, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, double mu, double tanb, double vev2, double gs) { double result; LOCK_MUTEX(); - dszodd_(&rmtsq, &mg, &mst1sq, &mst2sq, &sxt, &cxt, &scalesq, &amu, + dszodd_(&mt2, &mg, &mst12, &mst22, &sxt, &cxt, &scale2, &mu, &tanb, &vev2, &gs, &result); return -result; } double self_energy_pseudoscalar_2loop_at_at_mssm_with_tadpoles( - double rmtsq, double rmbsq, double fmasq, double mst1sq, - double mst2sq, double msb1sq, double msb2sq, + double mt2, double rmbsq, double mA2, double mst12, + double mst22, double msb12, double msb22, double sxt, double cxt, double sxb, double cxb, - double scalesq, double amu, double tanb, double vev2) + double scale2, double mu, double tanb, double vev2) { double result; LOCK_MUTEX(); - ddsodd_(&rmtsq, &rmbsq, &fmasq, &mst1sq, &mst2sq, &msb1sq, &msb2sq, - &sxt, &cxt, &sxb, &cxb, &scalesq, &amu, &tanb, &vev2, &result); + ddsodd_(&mt2, &rmbsq, &mA2, &mst12, &mst22, &msb12, &msb22, + &sxt, &cxt, &sxb, &cxb, &scale2, &mu, &tanb, &vev2, &result); return -result; } double self_energy_pseudoscalar_2loop_ab_as_mssm_with_tadpoles( - double rmbsq, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, double amu, - double cotbeta, double vev2, double gs) + double rmbsq, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, double mu, + double cotb, double vev2, double gs) { return self_energy_pseudoscalar_2loop_at_as_mssm_with_tadpoles( - rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, - cotbeta, vev2, gs); + rmbsq, mg, msb12, msb22, sxb, cxb, scale2, mu, + cotb, vev2, gs); } double self_energy_pseudoscalar_2loop_atau_atau_mssm_with_tadpoles( - double rmtausq, double fmasq, double msnusq, double mstau1sq, - double mstau2sq, double sintau, double costau, double scalesq, - double amu, double tanb, double vev2) + double mtau2, double mA2, double msnusq, double mstau12, + double mstau22, double sintau, double costau, double scale2, + double mu, double tanb, double vev2) { double result; LOCK_MUTEX(); - tausqodd_(&rmtausq, &fmasq, &msnusq, &mstau1sq, &mstau2sq, &sintau, - &costau, &scalesq, &amu, &tanb, &vev2, &result); + tausqodd_(&mtau2, &mA2, &msnusq, &mstau12, &mstau22, &sintau, + &costau, &scale2, &mu, &tanb, &vev2, &result); return -result; } @@ -251,22 +251,22 @@ Eigen::Matrix subtract_mssm_tadpoles_scalar( } Eigen::Matrix self_energy_higgs_2loop_at_as_mssm( - double rmtsq, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, double amu, + double mt2, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, double mu, double tanb, double vev2, double gs, int scheme) { const Eigen::Matrix result = self_energy_higgs_2loop_at_as_mssm_with_tadpoles( - rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, + mt2, mg, mst12, mst22, sxt, cxt, scale2, mu, tanb, vev2, gs, scheme); const double dMA = self_energy_pseudoscalar_2loop_at_as_mssm_with_tadpoles( - rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, + mt2, mg, mst12, mst22, sxt, cxt, scale2, mu, tanb, vev2, gs); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_at_as_mssm( - rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs); + mt2, mg, mst12, mst22, sxt, cxt, scale2, mu, tanb, vev2, gs); const Eigen::Matrix tM = subtract_mssm_tadpoles_scalar(dMA, tadpoles, tanb); @@ -275,24 +275,24 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_mssm( } Eigen::Matrix self_energy_higgs_2loop_at_at_mssm( - double rmtsq, double rmbsq, double fmasq, double mst1sq, - double mst2sq, double msb1sq, double msb2sq, + double mt2, double rmbsq, double mA2, double mst12, + double mst22, double msb12, double msb22, double sxt, double cxt, double sxb, double cxb, - double scalesq, double amu, double tanb, double vev2) + double scale2, double mu, double tanb, double vev2) { const Eigen::Matrix result = self_energy_higgs_2loop_at_at_mssm_with_tadpoles( - rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, - sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); + mt2, rmbsq, mA2, mst12, mst22, msb12, msb22, + sxt, cxt, sxb, cxb, scale2, mu, tanb, vev2); const double dMA = self_energy_pseudoscalar_2loop_at_at_mssm_with_tadpoles( - rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, - sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); + mt2, rmbsq, mA2, mst12, mst22, msb12, msb22, + sxt, cxt, sxb, cxb, scale2, mu, tanb, vev2); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_at_at_mssm( - rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, - sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); + mt2, rmbsq, mA2, mst12, mst22, msb12, msb22, + sxt, cxt, sxb, cxb, scale2, mu, tanb, vev2); const Eigen::Matrix tM = subtract_mssm_tadpoles_scalar(dMA, tadpoles, tanb); @@ -301,46 +301,46 @@ Eigen::Matrix self_energy_higgs_2loop_at_at_mssm( } Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm( - double rmbsq, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, double amu, - double cotbeta, double vev2, double gs, int scheme) + double rmbsq, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, double mu, + double cotb, double vev2, double gs, int scheme) { const Eigen::Matrix result = self_energy_higgs_2loop_ab_as_mssm_with_tadpoles( - rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, - cotbeta, vev2, gs, scheme); + rmbsq, mg, msb12, msb22, sxb, cxb, scale2, mu, + cotb, vev2, gs, scheme); const double dMA = self_energy_pseudoscalar_2loop_ab_as_mssm_with_tadpoles( - rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotbeta, vev2, gs); + rmbsq, mg, msb12, msb22, sxb, cxb, scale2, mu, cotb, vev2, gs); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_ab_as_mssm( - rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotbeta, vev2, gs); + rmbsq, mg, msb12, msb22, sxb, cxb, scale2, mu, cotb, vev2, gs); const Eigen::Matrix tM = - subtract_mssm_tadpoles_scalar(dMA, tadpoles, 1./cotbeta); + subtract_mssm_tadpoles_scalar(dMA, tadpoles, 1./cotb); return result + tM; } Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm( - double rmtausq, double fmasq, double msnusq, double mstau1sq, - double mstau2sq, double sintau, double costau, double scalesq, - double amu, double tanb, double vev2, int scheme) + double mtau2, double mA2, double msnusq, double mstau12, + double mstau22, double sintau, double costau, double scale2, + double mu, double tanb, double vev2, int scheme) { const Eigen::Matrix result = self_energy_higgs_2loop_atau_atau_mssm_with_tadpoles( - rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, costau, scalesq, - amu, tanb, vev2, scheme); + mtau2, mA2, msnusq, mstau12, mstau22, sintau, costau, scale2, + mu, tanb, vev2, scheme); const double dMA = self_energy_pseudoscalar_2loop_atau_atau_mssm_with_tadpoles( - rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, costau, scalesq, - amu, tanb, vev2); + mtau2, mA2, msnusq, mstau12, mstau22, sintau, costau, scale2, + mu, tanb, vev2); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_atau_atau_mssm( - rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, costau, scalesq, - amu, tanb, vev2); + mtau2, mA2, msnusq, mstau12, mstau22, sintau, costau, scale2, + mu, tanb, vev2); const Eigen::Matrix tM = subtract_mssm_tadpoles_scalar(dMA, tadpoles, tanb); @@ -374,66 +374,66 @@ Eigen::Matrix subtract_mssm_tadpoles_pseudoscalar( } Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_mssm( - double rmtsq, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, double amu, + double mt2, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, double mu, double tanb, double vev2, double gs) { const double se = self_energy_pseudoscalar_2loop_at_as_mssm_with_tadpoles( - rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs); + mt2, mg, mst12, mst22, sxt, cxt, scale2, mu, tanb, vev2, gs); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_at_as_mssm( - rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs); + mt2, mg, mst12, mst22, sxt, cxt, scale2, mu, tanb, vev2, gs); return subtract_mssm_tadpoles_pseudoscalar(se, tadpoles, tanb); } Eigen::Matrix self_energy_pseudoscalar_2loop_at_at_mssm( - double rmtsq, double rmbsq, double fmasq, double mst1sq, - double mst2sq, double msb1sq, double msb2sq, + double mt2, double rmbsq, double mA2, double mst12, + double mst22, double msb12, double msb22, double sxt, double cxt, double sxb, double cxb, - double scalesq, double amu, double tanb, double vev2) + double scale2, double mu, double tanb, double vev2) { const double se = self_energy_pseudoscalar_2loop_at_at_mssm_with_tadpoles( - rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, - sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); + mt2, rmbsq, mA2, mst12, mst22, msb12, msb22, + sxt, cxt, sxb, cxb, scale2, mu, tanb, vev2); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_at_at_mssm( - rmtsq, rmbsq, fmasq, mst1sq, mst2sq, msb1sq, msb2sq, - sxt, cxt, sxb, cxb, scalesq, amu, tanb, vev2); + mt2, rmbsq, mA2, mst12, mst22, msb12, msb22, + sxt, cxt, sxb, cxb, scale2, mu, tanb, vev2); return subtract_mssm_tadpoles_pseudoscalar(se, tadpoles, tanb); } Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_mssm( - double rmbsq, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, double amu, - double cotbeta, double vev2, double gs) + double rmbsq, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, double mu, + double cotb, double vev2, double gs) { const double se = self_energy_pseudoscalar_2loop_ab_as_mssm_with_tadpoles( - rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotbeta, vev2, gs); + rmbsq, mg, msb12, msb22, sxb, cxb, scale2, mu, cotb, vev2, gs); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_ab_as_mssm( - rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotbeta, vev2, gs); + rmbsq, mg, msb12, msb22, sxb, cxb, scale2, mu, cotb, vev2, gs); - return subtract_mssm_tadpoles_pseudoscalar(se, tadpoles, 1./cotbeta); + return subtract_mssm_tadpoles_pseudoscalar(se, tadpoles, 1./cotb); } Eigen::Matrix self_energy_pseudoscalar_2loop_atau_atau_mssm( - double rmtausq, double fmasq, double msnusq, double mstau1sq, - double mstau2sq, double sintau, double costau, double scalesq, - double amu, double tanb, double vev2) + double mtau2, double mA2, double msnusq, double mstau12, + double mstau22, double sintau, double costau, double scale2, + double mu, double tanb, double vev2) { const double se = self_energy_pseudoscalar_2loop_atau_atau_mssm_with_tadpoles( - rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, costau, scalesq, - amu, tanb, vev2); + mtau2, mA2, msnusq, mstau12, mstau22, sintau, costau, scale2, + mu, tanb, vev2); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_atau_atau_mssm( - rmtausq, fmasq, msnusq, mstau1sq, mstau2sq, sintau, costau, scalesq, - amu, tanb, vev2); + mtau2, mA2, msnusq, mstau12, mstau22, sintau, costau, scale2, + mu, tanb, vev2); return subtract_mssm_tadpoles_pseudoscalar(se, tadpoles, tanb); } diff --git a/src/mssm_twoloophiggs.hpp b/src/mssm_twoloophiggs.hpp index 64d0691fc..383178f00 100644 --- a/src/mssm_twoloophiggs.hpp +++ b/src/mssm_twoloophiggs.hpp @@ -21,121 +21,156 @@ #include +/** + * @file mssm_twoloophiggs.hpp + * @brief function declarations for 2-loop MSSM Higgs self-energies + * and tadpoles + * + * Notation: + * + * mt2 : squared DR-bar top mass in the MSSM + * mb2 : squared DR-bar bottom mass in the MSSM + * mtau2 : squared DR-bar tau mass in the MSSM + * mg : DR-bar gluino mass in the MSSM + * mA2 : squared DR-bar CP-odd Higgs mass in the MSSM + * mst12 : squared DR-bar lightest stop mass + * mst22 : squared DR-bar heaviest stop mass + * msb12 : squared DR-bar lightest sbottom mass + * msb22 : squared DR-bar heaviest sbottom mass + * mstau12: squared DR-bar lightest stau mass + * mstau22: squared DR-bar heaviest stau mass + * + * sxt : sine of DR-bar stop mixing angle in the MSSM + * cxt : cosine of DR-bar stop mixing angle in the MSSM + * sxb : sine of DR-bar sbottom mixing angle in the MSSM + * cxb : cosine of DR-bar sbottom mixing angle in the MSSM + * sintau : sine of DR-bar stau mixing angle in the MSSM + * costau : cosine of DR-bar stau mixing angle in the MSSM + * + * gs : DR-bar strong gauge coupling g3 in the MSSM + * mu : DR-bar mu-parameter in the MSSM (arXiv:0907.4682) + * tanb : DR-bar tan(beta) = vu/vd in the MSSM + * cotb : DR-bar 1/tan(beta) in the MSSM + * vev2 : squared DR-bar vev^2 = (vu^2 + vd^2) in the MSSM + * + * scheme : DR-bar scheme (0) or on-shell scheme (1) + */ + namespace flexiblesusy { namespace mssm_twoloophiggs { // tadpoles Eigen::Matrix tadpole_higgs_2loop_at_as_mssm( - double rmtsq, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, - double amu, double tanb, double vev2, double gs); + double mt2, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, + double mu, double tanb, double vev2, double gs); Eigen::Matrix tadpole_higgs_2loop_at_at_mssm( - double rmtsq, double rmbsq, double mAsq, double mst1sq, - double mst2sq, double msb1sq, double msb2sq, + double mt2, double mb2, double mA2, double mst12, + double mst22, double msb12, double msb22, double sxt, double cxt, double sxb, double cxb, - double scalesq, double amu, double tanb, double vev2); + double scale2, double mu, double tanb, double vev2); Eigen::Matrix tadpole_higgs_2loop_ab_as_mssm( - double rmbsq, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, - double amu, double cotbeta, double vev2, double gs); + double mb2, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, + double mu, double cotb, double vev2, double gs); Eigen::Matrix tadpole_higgs_2loop_atau_atau_mssm( - double rmtausq, double mAsq, double msnusq, double mstau1sq, - double mstau2sq, double sintau, double costau, double scalesq, - double amu, double tanb, double vev2); + double mtau2, double mA2, double msnusq, double mstau12, + double mstau22, double sintau, double costau, double scale2, + double mu, double tanb, double vev2); // self-energies Eigen::Matrix self_energy_higgs_2loop_at_as_mssm( - double rmtsq, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, double amu, + double mt2, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, double mu, double tanb, double vev2, double gs, int scheme = 0); Eigen::Matrix self_energy_higgs_2loop_at_at_mssm( - double rmtsq, double rmbsq, double fmasq, double mst1sq, - double mst2sq, double msb1sq, double msb2sq, + double mt2, double mb2, double mA2, double mst12, + double mst22, double msb12, double msb22, double sxt, double cxt, double sxb, double cxb, - double scalesq, double amu, double tanb, double vev2); + double scale2, double mu, double tanb, double vev2); Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm( - double rmbsq, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, double amu, - double cotbeta, double vev2, double gs, int scheme = 0); + double mb2, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, double mu, + double cotb, double vev2, double gs, int scheme = 0); Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm( - double rmtausq, double fmasq, double msnusq, double mstau1sq, - double mstau2sq, double sintau, double costau, double scalesq, - double amu, double tanb, double vev2, int scheme = 0); + double mtau2, double mA2, double msnusq, double mstau12, + double mstau22, double sintau, double costau, double scale2, + double mu, double tanb, double vev2, int scheme = 0); Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_mssm( - double rmtsq, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, double amu, + double mt2, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, double mu, double tanb, double vev2, double gs); Eigen::Matrix self_energy_pseudoscalar_2loop_at_at_mssm( - double rmtsq, double rmbsq, double fmasq, double mst1sq, - double mst2sq, double msb1sq, double msb2sq, + double mt2, double mb2, double mA2, double mst12, + double mst22, double msb12, double msb22, double sxt, double cxt, double sxb, double cxb, - double scalesq, double amu, double tanb, double vev2); + double scale2, double mu, double tanb, double vev2); Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_mssm( - double rmbsq, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, double amu, - double cotbeta, double vev2, double gs); + double mb2, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, double mu, + double cotb, double vev2, double gs); Eigen::Matrix self_energy_pseudoscalar_2loop_atau_atau_mssm( - double rmtausq, double fmasq, double msnusq, double mstau1sq, - double mstau2sq, double sintau, double costau, double scalesq, - double amu, double tanb, double vev2); + double mtau2, double mA2, double msnusq, double mstau12, + double mstau22, double sintau, double costau, double scale2, + double mu, double tanb, double vev2); // self-energies with tadpoles added Eigen::Matrix self_energy_higgs_2loop_at_as_mssm_with_tadpoles( - double rmtsq, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, double amu, + double mt2, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, double mu, double tanb, double vev2, double gs, int scheme = 0); Eigen::Matrix self_energy_higgs_2loop_at_at_mssm_with_tadpoles( - double rmtsq, double rmbsq, double fmasq, double mst1sq, - double mst2sq, double msb1sq, double msb2sq, + double mt2, double mb2, double mA2, double mst12, + double mst22, double msb12, double msb22, double sxt, double cxt, double sxb, double cxb, - double scalesq, double amu, double tanb, double vev2); + double scale2, double mu, double tanb, double vev2); Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm_with_tadpoles( - double rmbsq, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, double amu, - double cotbeta, double vev2, double gs, int scheme = 0); + double mb2, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, double mu, + double cotb, double vev2, double gs, int scheme = 0); Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm_with_tadpoles( - double rmtausq, double fmasq, double msnusq, double mstau1sq, - double mstau2sq, double sintau, double costau, double scalesq, - double amu, double tanb, double vev2, int scheme = 0); + double mtau2, double mA2, double msnusq, double mstau12, + double mstau22, double sintau, double costau, double scale2, + double mu, double tanb, double vev2, int scheme = 0); double self_energy_pseudoscalar_2loop_at_as_mssm_with_tadpoles( - double rmtsq, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, double amu, + double mt2, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, double mu, double tanb, double vev2, double gs); double self_energy_pseudoscalar_2loop_at_at_mssm_with_tadpoles( - double rmtsq, double rmbsq, double fmasq, double mst1sq, - double mst2sq, double msb1sq, double msb2sq, + double mt2, double mb2, double mA2, double mst12, + double mst22, double msb12, double msb22, double sxt, double cxt, double sxb, double cxb, - double scalesq, double amu, double tanb, double vev2); + double scale2, double mu, double tanb, double vev2); double self_energy_pseudoscalar_2loop_ab_as_mssm_with_tadpoles( - double rmbsq, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, double amu, - double cotbeta, double vev2, double gs); + double mb2, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, double mu, + double cotb, double vev2, double gs); double self_energy_pseudoscalar_2loop_atau_atau_mssm_with_tadpoles( - double rmtausq, double fmasq, double msnusq, double mstau1sq, - double mstau2sq, double sintau, double costau, double scalesq, - double amu, double tanb, double vev2); + double mtau2, double mA2, double msnusq, double mstau12, + double mstau22, double sintau, double costau, double scale2, + double mu, double tanb, double vev2); } // namespace mssm_twoloophiggs } // namespace flexiblesusy diff --git a/src/nmssm_twoloophiggs.cpp b/src/nmssm_twoloophiggs.cpp index ff5035afa..92e019123 100644 --- a/src/nmssm_twoloophiggs.cpp +++ b/src/nmssm_twoloophiggs.cpp @@ -41,14 +41,14 @@ template T sqr(T a) { return a * a; } } Eigen::Matrix tadpole_higgs_2loop_at_as_nmssm( - double rmtsq, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, - double amu, double tanb, double vev2, double gs, double svevS) + double mt2, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, + double mu, double tanb, double vev2, double gs, double svevS) { const double cosb = 1. / std::sqrt(1. + sqr(tanb)); const Eigen::Matrix t_mssm = tadpole_higgs_2loop_at_as_mssm( - rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs); + mt2, mg, mst12, mst22, sxt, cxt, scale2, mu, tanb, vev2, gs); Eigen::Matrix result; result.head<2>() = t_mssm; @@ -59,15 +59,15 @@ Eigen::Matrix tadpole_higgs_2loop_at_as_nmssm( } Eigen::Matrix tadpole_higgs_2loop_ab_as_nmssm( - double rmbsq, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, - double amu, double cotbeta, double vev2, double gs, double svevS) + double mb2, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, + double mu, double cotb, double vev2, double gs, double svevS) { - const double tanb = 1./cotbeta; + const double tanb = 1./cotb; const double sinb = tanb / std::sqrt(1. + sqr(tanb)); const Eigen::Matrix t_mssm = tadpole_higgs_2loop_ab_as_mssm( - rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotbeta, vev2, gs); + mb2, mg, msb12, msb22, sxb, cxb, scale2, mu, cotb, vev2, gs); Eigen::Matrix result; result.head<2>() = t_mssm; @@ -78,86 +78,86 @@ Eigen::Matrix tadpole_higgs_2loop_ab_as_nmssm( } Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm( - double rmt, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, double tanb, double vevS, - double lamS, double svevS, double as, double amu) + double rmt, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, double tanb, double vevS, + double lamS, double svevS, double as, double mu) { const double vev2 = sqr(vevS * std::sqrt(2.)); const double gs = std::sqrt(as * 4. * M_PI); const Eigen::Matrix se = self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( - rmt, mg, mst1sq, mst2sq, sxt, cxt, scalesq, tanb, vevS, lamS, svevS, as); + rmt, mg, mst12, mst22, sxt, cxt, scale2, tanb, vevS, lamS, svevS, as); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_at_as_nmssm( - sqr(rmt), mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs, svevS).asDiagonal(); + sqr(rmt), mg, mst12, mst22, sxt, cxt, scale2, mu, tanb, vev2, gs, svevS).asDiagonal(); return se + tadpoles; } Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( - double rmb, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, double cotb, double vevS, - double lamS, double svevS, double as, double amu) + double rmb, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, double cotb, double vevS, + double lamS, double svevS, double as, double mu) { const double vev2 = sqr(vevS * std::sqrt(2.)); const double gs = std::sqrt(as * 4. * M_PI); const Eigen::Matrix se = self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( - rmb, mg, msb1sq, msb2sq, sxb, cxb, scalesq, cotb, vevS, lamS, svevS, as); + rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vevS, lamS, svevS, as); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_ab_as_nmssm( - sqr(rmb), mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotb, vev2, gs, svevS).asDiagonal(); + sqr(rmb), mg, msb12, msb22, sxb, cxb, scale2, mu, cotb, vev2, gs, svevS).asDiagonal(); return se + tadpoles; } Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( - double rmt, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, double tanb, double vevS, - double lamS, double svevS, double as, double amu) + double rmt, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, double tanb, double vevS, + double lamS, double svevS, double as, double mu) { const double vev2 = sqr(vevS * std::sqrt(2.)); const double gs = std::sqrt(as * 4. * M_PI); const Eigen::Matrix se = self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( - rmt, mg, mst1sq, mst2sq, sxt, cxt, scalesq, tanb, vevS, + rmt, mg, mst12, mst22, sxt, cxt, scale2, tanb, vevS, lamS, svevS, as); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_at_as_nmssm( - sqr(rmt), mg, mst1sq, mst2sq, sxt, cxt, scalesq, amu, tanb, vev2, gs, svevS).asDiagonal(); + sqr(rmt), mg, mst12, mst22, sxt, cxt, scale2, mu, tanb, vev2, gs, svevS).asDiagonal(); return se + tadpoles; } Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( - double rmb, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, double cotb, double vevS, - double lamS, double svevS, double as, double amu) + double rmb, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, double cotb, double vevS, + double lamS, double svevS, double as, double mu) { const double vev2 = sqr(vevS * std::sqrt(2.)); const double gs = std::sqrt(as * 4. * M_PI); const Eigen::Matrix se = self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadpoles( - rmb, mg, msb1sq, msb2sq, sxb, cxb, scalesq, cotb, vevS, + rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vevS, lamS, svevS, as); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_ab_as_nmssm( - sqr(rmb), mg, msb1sq, msb2sq, sxb, cxb, scalesq, amu, cotb, vev2, gs, svevS).asDiagonal(); + sqr(rmb), mg, msb12, msb22, sxb, cxb, scale2, mu, cotb, vev2, gs, svevS).asDiagonal(); return se + tadpoles; } Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( - double rmt, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, double tanb, double vevS, + double rmt, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, double tanb, double vevS, double lamS, double svevS, double as) { int loop = 2; @@ -166,8 +166,8 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( { LOCK_MUTEX(); - effpot_(&loop, &rmt, &mg, &mst1sq, &mst2sq, &sxt, &cxt, - &scalesq, &tanb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); + effpot_(&loop, &rmt, &mg, &mst12, &mst22, &sxt, &cxt, + &scale2, &tanb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); } Eigen::Matrix result; @@ -179,13 +179,13 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( } Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( - double rmb, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, double cotb, double vevS, + double rmb, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, double cotb, double vevS, double lamS, double svevS, double as) { Eigen::Matrix result = self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( - rmb, mg, msb1sq, msb2sq, sxb, cxb, scalesq, cotb, vevS, + rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vevS, lamS, svevS, as); // Make appropriate substitutions for elements following 0907.4682 @@ -197,8 +197,8 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( } Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( - double rmt, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, double tanb, double vevS, + double rmt, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, double tanb, double vevS, double lamS, double svevS, double as) { int loop = 2; @@ -207,8 +207,8 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadp { LOCK_MUTEX(); - effpot_(&loop, &rmt, &mg, &mst1sq, &mst2sq, &sxt, &cxt, - &scalesq, &tanb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); + effpot_(&loop, &rmt, &mg, &mst12, &mst22, &sxt, &cxt, + &scale2, &tanb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); } Eigen::Matrix result; @@ -220,13 +220,13 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadp } Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadpoles( - double rmb, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, double cotb, double vevS, + double rmb, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, double cotb, double vevS, double lamS, double svevS, double as) { Eigen::Matrix result = self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( - rmb, mg, msb1sq, msb2sq, sxb, cxb, scalesq, cotb, vevS, + rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vevS, lamS, svevS, as); // Make appropriate substitutions for elements following 0907.4682 diff --git a/src/nmssm_twoloophiggs.hpp b/src/nmssm_twoloophiggs.hpp index 4e90fc7f4..75e668a0b 100644 --- a/src/nmssm_twoloophiggs.hpp +++ b/src/nmssm_twoloophiggs.hpp @@ -21,57 +21,94 @@ #include +/** + * @file nmssm_twoloophiggs.hpp + * @brief function declarations for 2-loop NMSSM Higgs self-energies + * and tadpoles + * + * Notation: + * + * mt2 : squared DR-bar top mass in the MSSM + * mb2 : squared DR-bar bottom mass in the MSSM + * mtau2 : squared DR-bar tau mass in the MSSM + * mg : DR-bar gluino mass in the MSSM + * mA2 : squared DR-bar CP-odd Higgs mass in the MSSM + * mst12 : squared DR-bar lightest stop mass + * mst22 : squared DR-bar heaviest stop mass + * msb12 : squared DR-bar lightest sbottom mass + * msb22 : squared DR-bar heaviest sbottom mass + * mstau12: squared DR-bar lightest stau mass + * mstau22: squared DR-bar heaviest stau mass + * + * sxt : sine of DR-bar stop mixing angle in the MSSM + * cxt : cosine of DR-bar stop mixing angle in the MSSM + * sxb : sine of DR-bar sbottom mixing angle in the MSSM + * cxb : cosine of DR-bar sbottom mixing angle in the MSSM + * sintau : sine of DR-bar stau mixing angle in the MSSM + * costau : cosine of DR-bar stau mixing angle in the MSSM + * + * gs : DR-bar strong gauge coupling g3 in the MSSM + * mu : DR-bar mu-parameter in the MSSM (arXiv:0907.4682) + * tanb : DR-bar tan(beta) = vu/vd in the MSSM + * cotb : DR-bar 1/tan(beta) in the MSSM + * vev2 : squared DR-bar vev^2 = (vu^2 + vd^2) in the MSSM + * vevS : DR-bar vev = sqrt(vu^2 + vd^2) in the MSSM + * svevS : DR-bar singlet vev = vS / sqrt(2) + * + * scheme : DR-bar scheme (0) or on-shell scheme (1) + */ + namespace flexiblesusy { namespace nmssm_twoloophiggs { Eigen::Matrix tadpole_higgs_2loop_at_as_nmssm( - double rmtsq, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, - double amu, double tanb, double vev2, double gs, double svevS); + double mt2, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, + double mu, double tanb, double vev2, double gs, double svevS); Eigen::Matrix tadpole_higgs_2loop_ab_as_nmssm( - double rmbsq, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, - double amu, double cotbeta, double vev2, double gs, double svevS); + double mb2, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, + double mu, double cotb, double vev2, double gs, double svevS); Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm( - double rmt, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, double tanb, double vevS, - double lamS, double svevS, double as, double amu); + double rmt, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, double tanb, double vevS, + double lamS, double svevS, double as, double mu); Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( - double rmb, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, double cotb, double vevS, - double lamS, double svevS, double as, double amu); + double rmb, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, double cotb, double vevS, + double lamS, double svevS, double as, double mu); Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( - double rmt, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, double tanb, double vevS, - double lamS, double svevS, double as, double amu); + double rmt, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, double tanb, double vevS, + double lamS, double svevS, double as, double mu); Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( - double rmb, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, double cotb, double vevS, - double lamS, double svevS, double as, double amu); + double rmb, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, double cotb, double vevS, + double lamS, double svevS, double as, double mu); Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( - double rmt, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, double tanb, double vevS, + double rmt, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, double tanb, double vevS, double lamS, double svevS, double as); Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( - double rmb, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, double cotb, double vevS, + double rmb, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, double cotb, double vevS, double lamS, double svevS, double as); Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( - double rmt, double mg, double mst1sq, double mst2sq, - double sxt, double cxt, double scalesq, double tanb, double vevS, + double rmt, double mg, double mst12, double mst22, + double sxt, double cxt, double scale2, double tanb, double vevS, double lamS, double svevS, double as); Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadpoles( - double rmb, double mg, double msb1sq, double msb2sq, - double sxb, double cxb, double scalesq, double cotb, double vevS, + double rmb, double mg, double msb12, double msb22, + double sxb, double cxb, double scale2, double cotb, double vevS, double lamS, double svevS, double as); } // namespace nmssm_twoloophiggs From a150d7efa719b332b6470d7670041abe39b5cc06 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 11 Aug 2016 17:02:25 +0200 Subject: [PATCH 51/64] use only one convention for the vev --- meta/SelfEnergies.m | 18 ++++++------------ src/nmssm_twoloophiggs.cpp | 38 ++++++++++++++++++-------------------- src/nmssm_twoloophiggs.hpp | 17 ++++++++--------- 3 files changed, 32 insertions(+), 41 deletions(-) diff --git a/meta/SelfEnergies.m b/meta/SelfEnergies.m index 8ec803ad6..0c6b45aab 100644 --- a/meta/SelfEnergies.m +++ b/meta/SelfEnergies.m @@ -1023,7 +1023,6 @@ const double rmtsq = Sqr(rmt); const double scalesq = Sqr(get_scale()); const double vev2 = " <> vev2Str <> "; -const double vev = Sqrt(" <> vev2Str <> "); const double tanb = " <> tanbStr <> "; const double amu = Re(" <> muStr <> "); const double mg = " <> m3Str <> "; @@ -1033,22 +1032,20 @@ const double rmbsq = Sqr(rmb); const double rmtausq = Sqr(" <> mtauStr <> "); const double lamS = Re(" <> lambdaStr <> "); -static const double root2 = Sqrt(2.0); -const double vevS = vev / root2; -const double svevS = " <> vsStr <> " / root2; +const double svevS = " <> vsStr <> " / Sqrt(2.0); " <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> " self_energy_2l(" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> "::Zero()); if (HIGGS_2LOOP_CORRECTION_AT_AS) { self_energy_2l += self_energy_higgs_2loop_at_as_nmssm( rmt, mg, mst1sq, mst2sq, sxt, cxt, - scalesq, tanb, vevS, lamS, svevS, as, amu); + scalesq, tanb, vev2, lamS, svevS, as, amu); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { self_energy_2l += self_energy_higgs_2loop_ab_as_nmssm( rmb, mg, msb1sq, msb2sq, sxb, cxb, - scalesq, cotb, vevS, lamS, svevS, as, amu); + scalesq, cotb, vev2, lamS, svevS, as, amu); } // Corrections as in MSSM, not corrected for NMSSM, @@ -1124,7 +1121,6 @@ const double rmtsq = Sqr(rmt); const double scalesq = Sqr(get_scale()); const double vev2 = " <> vev2Str <> "; -const double vev = Sqrt(" <> vev2Str <> "); const double tanb = " <> tanbStr <> "; const double amu = Re(" <> muStr <> "); const double mg = " <> m3Str <> "; @@ -1134,22 +1130,20 @@ const double rmbsq = Sqr(rmb); const double rmtausq = Sqr(" <> mtauStr <> "); const double lamS = Re(" <> lambdaStr <> "); -static const double root2 = Sqrt(2.0); -const double vevS = vev / root2; -const double svevS = " <> vsStr <> " / root2; +const double svevS = " <> vsStr <> " / Sqrt(2.0); " <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`PseudoScalar]] <> " self_energy_2l(" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`PseudoScalar]] <> "::Zero()); if (HIGGS_2LOOP_CORRECTION_AT_AS) { self_energy_2l += self_energy_pseudoscalar_2loop_at_as_nmssm( rmt, mg, mst1sq, mst2sq, sxt, cxt, - scalesq, tanb, vevS, lamS, svevS, as, amu); + scalesq, tanb, vev2, lamS, svevS, as, amu); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { self_energy_2l += self_energy_pseudoscalar_2loop_ab_as_nmssm( rmb, mg, msb1sq, msb2sq, sxb, cxb, - scalesq, cotb, vevS, lamS, svevS, as, amu); + scalesq, cotb, vev2, lamS, svevS, as, amu); } // Corrections as in MSSM, not corrected for NMSSM, diff --git a/src/nmssm_twoloophiggs.cpp b/src/nmssm_twoloophiggs.cpp index 92e019123..af59a663f 100644 --- a/src/nmssm_twoloophiggs.cpp +++ b/src/nmssm_twoloophiggs.cpp @@ -79,15 +79,14 @@ Eigen::Matrix tadpole_higgs_2loop_ab_as_nmssm( Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm( double rmt, double mg, double mst12, double mst22, - double sxt, double cxt, double scale2, double tanb, double vevS, + double sxt, double cxt, double scale2, double tanb, double vev2, double lamS, double svevS, double as, double mu) { - const double vev2 = sqr(vevS * std::sqrt(2.)); const double gs = std::sqrt(as * 4. * M_PI); const Eigen::Matrix se = self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( - rmt, mg, mst12, mst22, sxt, cxt, scale2, tanb, vevS, lamS, svevS, as); + rmt, mg, mst12, mst22, sxt, cxt, scale2, tanb, vev2, lamS, svevS, as); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_at_as_nmssm( @@ -98,15 +97,14 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm( Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( double rmb, double mg, double msb12, double msb22, - double sxb, double cxb, double scale2, double cotb, double vevS, + double sxb, double cxb, double scale2, double cotb, double vev2, double lamS, double svevS, double as, double mu) { - const double vev2 = sqr(vevS * std::sqrt(2.)); const double gs = std::sqrt(as * 4. * M_PI); const Eigen::Matrix se = self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( - rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vevS, lamS, svevS, as); + rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vev2, lamS, svevS, as); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_ab_as_nmssm( @@ -117,15 +115,14 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( double rmt, double mg, double mst12, double mst22, - double sxt, double cxt, double scale2, double tanb, double vevS, + double sxt, double cxt, double scale2, double tanb, double vev2, double lamS, double svevS, double as, double mu) { - const double vev2 = sqr(vevS * std::sqrt(2.)); const double gs = std::sqrt(as * 4. * M_PI); const Eigen::Matrix se = self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( - rmt, mg, mst12, mst22, sxt, cxt, scale2, tanb, vevS, + rmt, mg, mst12, mst22, sxt, cxt, scale2, tanb, vev2, lamS, svevS, as); const Eigen::Matrix tadpoles = @@ -137,15 +134,14 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( double rmb, double mg, double msb12, double msb22, - double sxb, double cxb, double scale2, double cotb, double vevS, + double sxb, double cxb, double scale2, double cotb, double vev2, double lamS, double svevS, double as, double mu) { - const double vev2 = sqr(vevS * std::sqrt(2.)); const double gs = std::sqrt(as * 4. * M_PI); const Eigen::Matrix se = self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadpoles( - rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vevS, + rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vev2, lamS, svevS, as); const Eigen::Matrix tadpoles = @@ -157,17 +153,18 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( double rmt, double mg, double mst12, double mst22, - double sxt, double cxt, double scale2, double tanb, double vevS, + double sxt, double cxt, double scale2, double tanb, double vev2, double lamS, double svevS, double as) { int loop = 2; + double vev = std::sqrt(0.5 * vev2); double DMS[3][3] = {{ 0. }}, DMP[3][3] = {{ 0. }}; { LOCK_MUTEX(); effpot_(&loop, &rmt, &mg, &mst12, &mst22, &sxt, &cxt, - &scale2, &tanb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); + &scale2, &tanb, &vev, &lamS, &svevS, &as, &DMS, &DMP); } Eigen::Matrix result; @@ -180,12 +177,12 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( double rmb, double mg, double msb12, double msb22, - double sxb, double cxb, double scale2, double cotb, double vevS, + double sxb, double cxb, double scale2, double cotb, double vev2, double lamS, double svevS, double as) { Eigen::Matrix result = self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( - rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vevS, + rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vev2, lamS, svevS, as); // Make appropriate substitutions for elements following 0907.4682 @@ -198,17 +195,18 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( double rmt, double mg, double mst12, double mst22, - double sxt, double cxt, double scale2, double tanb, double vevS, + double sxt, double cxt, double scale2, double tanb, double vev2, double lamS, double svevS, double as) { int loop = 2; + double vev = std::sqrt(0.5 * vev2); double DMS[3][3] = {{ 0. }}, DMP[3][3] = {{ 0. }}; { LOCK_MUTEX(); effpot_(&loop, &rmt, &mg, &mst12, &mst22, &sxt, &cxt, - &scale2, &tanb, &vevS, &lamS, &svevS, &as, &DMS, &DMP); + &scale2, &tanb, &vev, &lamS, &svevS, &as, &DMS, &DMP); } Eigen::Matrix result; @@ -221,12 +219,12 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadp Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadpoles( double rmb, double mg, double msb12, double msb22, - double sxb, double cxb, double scale2, double cotb, double vevS, + double sxb, double cxb, double scale2, double cotb, double vev2, double lamS, double svevS, double as) { Eigen::Matrix result = self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( - rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vevS, + rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vev2, lamS, svevS, as); // Make appropriate substitutions for elements following 0907.4682 diff --git a/src/nmssm_twoloophiggs.hpp b/src/nmssm_twoloophiggs.hpp index 75e668a0b..cdb516a32 100644 --- a/src/nmssm_twoloophiggs.hpp +++ b/src/nmssm_twoloophiggs.hpp @@ -52,7 +52,6 @@ * tanb : DR-bar tan(beta) = vu/vd in the MSSM * cotb : DR-bar 1/tan(beta) in the MSSM * vev2 : squared DR-bar vev^2 = (vu^2 + vd^2) in the MSSM - * vevS : DR-bar vev = sqrt(vu^2 + vd^2) in the MSSM * svevS : DR-bar singlet vev = vS / sqrt(2) * * scheme : DR-bar scheme (0) or on-shell scheme (1) @@ -73,42 +72,42 @@ Eigen::Matrix tadpole_higgs_2loop_ab_as_nmssm( Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm( double rmt, double mg, double mst12, double mst22, - double sxt, double cxt, double scale2, double tanb, double vevS, + double sxt, double cxt, double scale2, double tanb, double vev2, double lamS, double svevS, double as, double mu); Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( double rmb, double mg, double msb12, double msb22, - double sxb, double cxb, double scale2, double cotb, double vevS, + double sxb, double cxb, double scale2, double cotb, double vev2, double lamS, double svevS, double as, double mu); Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( double rmt, double mg, double mst12, double mst22, - double sxt, double cxt, double scale2, double tanb, double vevS, + double sxt, double cxt, double scale2, double tanb, double vev2, double lamS, double svevS, double as, double mu); Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( double rmb, double mg, double msb12, double msb22, - double sxb, double cxb, double scale2, double cotb, double vevS, + double sxb, double cxb, double scale2, double cotb, double vev2, double lamS, double svevS, double as, double mu); Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( double rmt, double mg, double mst12, double mst22, - double sxt, double cxt, double scale2, double tanb, double vevS, + double sxt, double cxt, double scale2, double tanb, double vev2, double lamS, double svevS, double as); Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( double rmb, double mg, double msb12, double msb22, - double sxb, double cxb, double scale2, double cotb, double vevS, + double sxb, double cxb, double scale2, double cotb, double vev2, double lamS, double svevS, double as); Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( double rmt, double mg, double mst12, double mst22, - double sxt, double cxt, double scale2, double tanb, double vevS, + double sxt, double cxt, double scale2, double tanb, double vev2, double lamS, double svevS, double as); Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadpoles( double rmb, double mg, double msb12, double msb22, - double sxb, double cxb, double scale2, double cotb, double vevS, + double sxb, double cxb, double scale2, double cotb, double vev2, double lamS, double svevS, double as); } // namespace nmssm_twoloophiggs From 421adbf62dd6ddaae43bfd7f71766ee39ab32bc6 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 11 Aug 2016 17:07:30 +0200 Subject: [PATCH 52/64] rename variable --- meta/SelfEnergies.m | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/meta/SelfEnergies.m b/meta/SelfEnergies.m index 0c6b45aab..2f357ede1 100644 --- a/meta/SelfEnergies.m +++ b/meta/SelfEnergies.m @@ -1031,7 +1031,7 @@ const double rmb = " <> mbStr <> "; const double rmbsq = Sqr(rmb); const double rmtausq = Sqr(" <> mtauStr <> "); -const double lamS = Re(" <> lambdaStr <> "); +const double lam = Re(" <> lambdaStr <> "); const double svevS = " <> vsStr <> " / Sqrt(2.0); " <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> " self_energy_2l(" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> "::Zero()); @@ -1039,13 +1039,13 @@ if (HIGGS_2LOOP_CORRECTION_AT_AS) { self_energy_2l += self_energy_higgs_2loop_at_as_nmssm( rmt, mg, mst1sq, mst2sq, sxt, cxt, - scalesq, tanb, vev2, lamS, svevS, as, amu); + scalesq, tanb, vev2, lam, svevS, as, amu); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { self_energy_2l += self_energy_higgs_2loop_ab_as_nmssm( rmb, mg, msb1sq, msb2sq, sxb, cxb, - scalesq, cotb, vev2, lamS, svevS, as, amu); + scalesq, cotb, vev2, lam, svevS, as, amu); } // Corrections as in MSSM, not corrected for NMSSM, @@ -1129,7 +1129,7 @@ const double rmb = " <> mbStr <> "; const double rmbsq = Sqr(rmb); const double rmtausq = Sqr(" <> mtauStr <> "); -const double lamS = Re(" <> lambdaStr <> "); +const double lam = Re(" <> lambdaStr <> "); const double svevS = " <> vsStr <> " / Sqrt(2.0); " <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`PseudoScalar]] <> " self_energy_2l(" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`PseudoScalar]] <> "::Zero()); @@ -1137,13 +1137,13 @@ if (HIGGS_2LOOP_CORRECTION_AT_AS) { self_energy_2l += self_energy_pseudoscalar_2loop_at_as_nmssm( rmt, mg, mst1sq, mst2sq, sxt, cxt, - scalesq, tanb, vev2, lamS, svevS, as, amu); + scalesq, tanb, vev2, lam, svevS, as, amu); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { self_energy_2l += self_energy_pseudoscalar_2loop_ab_as_nmssm( rmb, mg, msb1sq, msb2sq, sxb, cxb, - scalesq, cotb, vev2, lamS, svevS, as, amu); + scalesq, cotb, vev2, lam, svevS, as, amu); } // Corrections as in MSSM, not corrected for NMSSM, From cd6bfef1f6ed9ed8a56852a91be76a832a99ddb5 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 11 Aug 2016 17:24:08 +0200 Subject: [PATCH 53/64] rename variable for clarity --- src/nmssm_twoloophiggs.cpp | 48 ++++++++++++++++----------------- src/nmssm_twoloophiggs.hpp | 55 +++++++++++++++++++------------------- 2 files changed, 52 insertions(+), 51 deletions(-) diff --git a/src/nmssm_twoloophiggs.cpp b/src/nmssm_twoloophiggs.cpp index af59a663f..dffb4f037 100644 --- a/src/nmssm_twoloophiggs.cpp +++ b/src/nmssm_twoloophiggs.cpp @@ -43,7 +43,7 @@ template T sqr(T a) { return a * a; } Eigen::Matrix tadpole_higgs_2loop_at_as_nmssm( double mt2, double mg, double mst12, double mst22, double sxt, double cxt, double scale2, - double mu, double tanb, double vev2, double gs, double svevS) + double mu, double tanb, double vev2, double gs, double svev) { const double cosb = 1. / std::sqrt(1. + sqr(tanb)); @@ -53,7 +53,7 @@ Eigen::Matrix tadpole_higgs_2loop_at_as_nmssm( Eigen::Matrix result; result.head<2>() = t_mssm; // rescale T1 to get TS - result(2) = t_mssm(0) * std::sqrt(vev2) * cosb / (svevS * std::sqrt(2.)); + result(2) = t_mssm(0) * std::sqrt(vev2) * cosb / (svev * std::sqrt(2.)); return result; } @@ -61,7 +61,7 @@ Eigen::Matrix tadpole_higgs_2loop_at_as_nmssm( Eigen::Matrix tadpole_higgs_2loop_ab_as_nmssm( double mb2, double mg, double msb12, double msb22, double sxb, double cxb, double scale2, - double mu, double cotb, double vev2, double gs, double svevS) + double mu, double cotb, double vev2, double gs, double svev) { const double tanb = 1./cotb; const double sinb = tanb / std::sqrt(1. + sqr(tanb)); @@ -72,7 +72,7 @@ Eigen::Matrix tadpole_higgs_2loop_ab_as_nmssm( Eigen::Matrix result; result.head<2>() = t_mssm; // rescale T1 to get TS - result(2) = t_mssm(0) * std::sqrt(vev2) * sinb / (svevS * std::sqrt(2.)); + result(2) = t_mssm(0) * std::sqrt(vev2) * sinb / (svev * std::sqrt(2.)); return result; } @@ -80,17 +80,17 @@ Eigen::Matrix tadpole_higgs_2loop_ab_as_nmssm( Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm( double rmt, double mg, double mst12, double mst22, double sxt, double cxt, double scale2, double tanb, double vev2, - double lamS, double svevS, double as, double mu) + double lam, double svev, double as, double mu) { const double gs = std::sqrt(as * 4. * M_PI); const Eigen::Matrix se = self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( - rmt, mg, mst12, mst22, sxt, cxt, scale2, tanb, vev2, lamS, svevS, as); + rmt, mg, mst12, mst22, sxt, cxt, scale2, tanb, vev2, lam, svev, as); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_at_as_nmssm( - sqr(rmt), mg, mst12, mst22, sxt, cxt, scale2, mu, tanb, vev2, gs, svevS).asDiagonal(); + sqr(rmt), mg, mst12, mst22, sxt, cxt, scale2, mu, tanb, vev2, gs, svev).asDiagonal(); return se + tadpoles; } @@ -98,17 +98,17 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm( Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( double rmb, double mg, double msb12, double msb22, double sxb, double cxb, double scale2, double cotb, double vev2, - double lamS, double svevS, double as, double mu) + double lam, double svev, double as, double mu) { const double gs = std::sqrt(as * 4. * M_PI); const Eigen::Matrix se = self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( - rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vev2, lamS, svevS, as); + rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vev2, lam, svev, as); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_ab_as_nmssm( - sqr(rmb), mg, msb12, msb22, sxb, cxb, scale2, mu, cotb, vev2, gs, svevS).asDiagonal(); + sqr(rmb), mg, msb12, msb22, sxb, cxb, scale2, mu, cotb, vev2, gs, svev).asDiagonal(); return se + tadpoles; } @@ -116,18 +116,18 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( double rmt, double mg, double mst12, double mst22, double sxt, double cxt, double scale2, double tanb, double vev2, - double lamS, double svevS, double as, double mu) + double lam, double svev, double as, double mu) { const double gs = std::sqrt(as * 4. * M_PI); const Eigen::Matrix se = self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( rmt, mg, mst12, mst22, sxt, cxt, scale2, tanb, vev2, - lamS, svevS, as); + lam, svev, as); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_at_as_nmssm( - sqr(rmt), mg, mst12, mst22, sxt, cxt, scale2, mu, tanb, vev2, gs, svevS).asDiagonal(); + sqr(rmt), mg, mst12, mst22, sxt, cxt, scale2, mu, tanb, vev2, gs, svev).asDiagonal(); return se + tadpoles; } @@ -135,18 +135,18 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( double rmb, double mg, double msb12, double msb22, double sxb, double cxb, double scale2, double cotb, double vev2, - double lamS, double svevS, double as, double mu) + double lam, double svev, double as, double mu) { const double gs = std::sqrt(as * 4. * M_PI); const Eigen::Matrix se = self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadpoles( rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vev2, - lamS, svevS, as); + lam, svev, as); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_ab_as_nmssm( - sqr(rmb), mg, msb12, msb22, sxb, cxb, scale2, mu, cotb, vev2, gs, svevS).asDiagonal(); + sqr(rmb), mg, msb12, msb22, sxb, cxb, scale2, mu, cotb, vev2, gs, svev).asDiagonal(); return se + tadpoles; } @@ -154,7 +154,7 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( double rmt, double mg, double mst12, double mst22, double sxt, double cxt, double scale2, double tanb, double vev2, - double lamS, double svevS, double as) + double lam, double svev, double as) { int loop = 2; double vev = std::sqrt(0.5 * vev2); @@ -164,7 +164,7 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( LOCK_MUTEX(); effpot_(&loop, &rmt, &mg, &mst12, &mst22, &sxt, &cxt, - &scale2, &tanb, &vev, &lamS, &svevS, &as, &DMS, &DMP); + &scale2, &tanb, &vev, &lam, &svev, &as, &DMS, &DMP); } Eigen::Matrix result; @@ -178,12 +178,12 @@ Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( double rmb, double mg, double msb12, double msb22, double sxb, double cxb, double scale2, double cotb, double vev2, - double lamS, double svevS, double as) + double lam, double svev, double as) { Eigen::Matrix result = self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vev2, - lamS, svevS, as); + lam, svev, as); // Make appropriate substitutions for elements following 0907.4682 // bottom of page 9 @@ -196,7 +196,7 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( double rmt, double mg, double mst12, double mst22, double sxt, double cxt, double scale2, double tanb, double vev2, - double lamS, double svevS, double as) + double lam, double svev, double as) { int loop = 2; double vev = std::sqrt(0.5 * vev2); @@ -206,7 +206,7 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadp LOCK_MUTEX(); effpot_(&loop, &rmt, &mg, &mst12, &mst22, &sxt, &cxt, - &scale2, &tanb, &vev, &lamS, &svevS, &as, &DMS, &DMP); + &scale2, &tanb, &vev, &lam, &svev, &as, &DMS, &DMP); } Eigen::Matrix result; @@ -220,12 +220,12 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadp Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadpoles( double rmb, double mg, double msb12, double msb22, double sxb, double cxb, double scale2, double cotb, double vev2, - double lamS, double svevS, double as) + double lam, double svev, double as) { Eigen::Matrix result = self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( rmb, mg, msb12, msb22, sxb, cxb, scale2, cotb, vev2, - lamS, svevS, as); + lam, svev, as); // Make appropriate substitutions for elements following 0907.4682 // bottom of page 9 diff --git a/src/nmssm_twoloophiggs.hpp b/src/nmssm_twoloophiggs.hpp index cdb516a32..5d8f93c79 100644 --- a/src/nmssm_twoloophiggs.hpp +++ b/src/nmssm_twoloophiggs.hpp @@ -28,11 +28,11 @@ * * Notation: * - * mt2 : squared DR-bar top mass in the MSSM - * mb2 : squared DR-bar bottom mass in the MSSM - * mtau2 : squared DR-bar tau mass in the MSSM - * mg : DR-bar gluino mass in the MSSM - * mA2 : squared DR-bar CP-odd Higgs mass in the MSSM + * mt2 : squared DR-bar top mass in the NMSSM + * mb2 : squared DR-bar bottom mass in the NMSSM + * mtau2 : squared DR-bar tau mass in the NMSSM + * mg : DR-bar gluino mass in the NMSSM + * mA2 : squared DR-bar CP-odd Higgs mass in the NMSSM * mst12 : squared DR-bar lightest stop mass * mst22 : squared DR-bar heaviest stop mass * msb12 : squared DR-bar lightest sbottom mass @@ -40,19 +40,20 @@ * mstau12: squared DR-bar lightest stau mass * mstau22: squared DR-bar heaviest stau mass * - * sxt : sine of DR-bar stop mixing angle in the MSSM - * cxt : cosine of DR-bar stop mixing angle in the MSSM - * sxb : sine of DR-bar sbottom mixing angle in the MSSM - * cxb : cosine of DR-bar sbottom mixing angle in the MSSM - * sintau : sine of DR-bar stau mixing angle in the MSSM - * costau : cosine of DR-bar stau mixing angle in the MSSM + * sxt : sine of DR-bar stop mixing angle in the NMSSM + * cxt : cosine of DR-bar stop mixing angle in the NMSSM + * sxb : sine of DR-bar sbottom mixing angle in the NMSSM + * cxb : cosine of DR-bar sbottom mixing angle in the NMSSM + * sintau : sine of DR-bar stau mixing angle in the NMSSM + * costau : cosine of DR-bar stau mixing angle in the NMSSM * - * gs : DR-bar strong gauge coupling g3 in the MSSM - * mu : DR-bar mu-parameter in the MSSM (arXiv:0907.4682) - * tanb : DR-bar tan(beta) = vu/vd in the MSSM - * cotb : DR-bar 1/tan(beta) in the MSSM - * vev2 : squared DR-bar vev^2 = (vu^2 + vd^2) in the MSSM - * svevS : DR-bar singlet vev = vS / sqrt(2) + * gs : DR-bar strong gauge coupling g3 in the NMSSM + * mu : DR-bar mu-parameter in the NMSSM (arXiv:0907.4682) + * tanb : DR-bar tan(beta) = vu/vd in the NMSSM + * cotb : DR-bar 1/tan(beta) in the NMSSM + * vev2 : squared DR-bar vev^2 = (vu^2 + vd^2) in the NMSSM + * lam : DR-bar lambda in the NNMSSM + * svev : DR-bar singlet VEV = mu_eff / lam * * scheme : DR-bar scheme (0) or on-shell scheme (1) */ @@ -63,52 +64,52 @@ namespace nmssm_twoloophiggs { Eigen::Matrix tadpole_higgs_2loop_at_as_nmssm( double mt2, double mg, double mst12, double mst22, double sxt, double cxt, double scale2, - double mu, double tanb, double vev2, double gs, double svevS); + double mu, double tanb, double vev2, double gs, double svev); Eigen::Matrix tadpole_higgs_2loop_ab_as_nmssm( double mb2, double mg, double msb12, double msb22, double sxb, double cxb, double scale2, - double mu, double cotb, double vev2, double gs, double svevS); + double mu, double cotb, double vev2, double gs, double svev); Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm( double rmt, double mg, double mst12, double mst22, double sxt, double cxt, double scale2, double tanb, double vev2, - double lamS, double svevS, double as, double mu); + double lam, double svev, double as, double mu); Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm( double rmb, double mg, double msb12, double msb22, double sxb, double cxb, double scale2, double cotb, double vev2, - double lamS, double svevS, double as, double mu); + double lam, double svev, double as, double mu); Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm( double rmt, double mg, double mst12, double mst22, double sxt, double cxt, double scale2, double tanb, double vev2, - double lamS, double svevS, double as, double mu); + double lam, double svev, double as, double mu); Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm( double rmb, double mg, double msb12, double msb22, double sxb, double cxb, double scale2, double cotb, double vev2, - double lamS, double svevS, double as, double mu); + double lam, double svev, double as, double mu); Eigen::Matrix self_energy_higgs_2loop_at_as_nmssm_with_tadpoles( double rmt, double mg, double mst12, double mst22, double sxt, double cxt, double scale2, double tanb, double vev2, - double lamS, double svevS, double as); + double lam, double svev, double as); Eigen::Matrix self_energy_higgs_2loop_ab_as_nmssm_with_tadpoles( double rmb, double mg, double msb12, double msb22, double sxb, double cxb, double scale2, double cotb, double vev2, - double lamS, double svevS, double as); + double lam, double svev, double as); Eigen::Matrix self_energy_pseudoscalar_2loop_at_as_nmssm_with_tadpoles( double rmt, double mg, double mst12, double mst22, double sxt, double cxt, double scale2, double tanb, double vev2, - double lamS, double svevS, double as); + double lam, double svev, double as); Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_nmssm_with_tadpoles( double rmb, double mg, double msb12, double msb22, double sxb, double cxb, double scale2, double cotb, double vev2, - double lamS, double svevS, double as); + double lam, double svev, double as); } // namespace nmssm_twoloophiggs } // namespace flexiblesusy From d37198409970159823c55742fbdcbf66ebfb1539 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 11 Aug 2016 17:48:08 +0200 Subject: [PATCH 54/64] potential bugfix: ensure correct normalization of vS when passing vS to the Slavich routines. Note: vS must be normalized such that mu_eff == vS * lambda where lambda is also passed to the Slavich routines. --- meta/SelfEnergies.m | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/meta/SelfEnergies.m b/meta/SelfEnergies.m index 2f357ede1..060e183df 100644 --- a/meta/SelfEnergies.m +++ b/meta/SelfEnergies.m @@ -621,7 +621,7 @@ GetTwoLoopTadpoleCorrections[model_String /; model === "NMSSM"] := Module[{mTop, mBot, mTau, - g3Str, mtStr, mbStr, mtauStr, + g3Str, mtStr, mbStr, mtauStr, lambdaStr, vev2Str, svevStr, tanbStr, muStr, m3Str, mA0Str}, AssertFieldDimension[SARAH`HiggsBoson, 3, model]; mTop = TreeMasses`GetMass[TreeMasses`GetUpQuark[3,True]]; @@ -637,6 +637,7 @@ m3Str = CConversion`RValueToCFormString[FlexibleSUSY`M[SARAH`Gluino]]; mA0Str = CConversion`RValueToCFormString[Parameters`GetEffectiveMASqr[]]; svevStr = CConversion`RValueToCFormString[Parameters`GetParameterFromDescription["Singlet-VEV"]]; + lambdaStr = CConversion`RValueToCFormString[Parameters`GetParameterFromDescription["Singlet-Higgs-Interaction"]]; "\ using namespace flexiblesusy::mssm_twoloophiggs; using namespace flexiblesusy::nmssm_twoloophiggs; @@ -674,14 +675,15 @@ const double cotbeta = 1.0 / tanb; const double rmbsq = Sqr(" <> mbStr <> "); const double rmtausq = Sqr(" <> mtauStr <> "); -const double svevS = " <> svevStr <> " / Sqrt(2.0); +const double lam = Re(" <> lambdaStr <> "); +const double svev = Abs(amu / lam); " <> GetTadpoleVectorCType[3] <> " tadpole_2l(" <> GetTadpoleVectorCType[3] <> "::Zero()); if (HIGGS_2LOOP_CORRECTION_AT_AS) { tadpole_2l += tadpole_higgs_2loop_at_as_nmssm( rmtsq, mg, mst1sq, mst2sq, sxt, cxt, scalesq, - amu, tanb, vev2, gs, svevS); + amu, tanb, vev2, gs, svev); } if (HIGGS_2LOOP_CORRECTION_AT_AT) { @@ -693,7 +695,7 @@ if (HIGGS_2LOOP_CORRECTION_AB_AS) { tadpole_2l += tadpole_higgs_2loop_ab_as_nmssm( rmbsq, mg, msb1sq, msb2sq, sxb, cxb, scalesq, - amu, cotbeta, vev2, gs, svevS); + amu, cotbeta, vev2, gs, svev); } if (HIGGS_2LOOP_CORRECTION_ATAU_ATAU) { @@ -1032,20 +1034,20 @@ const double rmbsq = Sqr(rmb); const double rmtausq = Sqr(" <> mtauStr <> "); const double lam = Re(" <> lambdaStr <> "); -const double svevS = " <> vsStr <> " / Sqrt(2.0); +const double svev = Abs(amu / lam); " <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> " self_energy_2l(" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`HiggsBoson]] <> "::Zero()); if (HIGGS_2LOOP_CORRECTION_AT_AS) { self_energy_2l += self_energy_higgs_2loop_at_as_nmssm( rmt, mg, mst1sq, mst2sq, sxt, cxt, - scalesq, tanb, vev2, lam, svevS, as, amu); + scalesq, tanb, vev2, lam, svev, as, amu); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { self_energy_2l += self_energy_higgs_2loop_ab_as_nmssm( rmb, mg, msb1sq, msb2sq, sxb, cxb, - scalesq, cotb, vev2, lam, svevS, as, amu); + scalesq, cotb, vev2, lam, svev, as, amu); } // Corrections as in MSSM, not corrected for NMSSM, @@ -1130,20 +1132,20 @@ const double rmbsq = Sqr(rmb); const double rmtausq = Sqr(" <> mtauStr <> "); const double lam = Re(" <> lambdaStr <> "); -const double svevS = " <> vsStr <> " / Sqrt(2.0); +const double svev = Abs(amu / lam); " <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`PseudoScalar]] <> " self_energy_2l(" <> CConversion`CreateCType[TreeMasses`GetMassMatrixType[SARAH`PseudoScalar]] <> "::Zero()); if (HIGGS_2LOOP_CORRECTION_AT_AS) { self_energy_2l += self_energy_pseudoscalar_2loop_at_as_nmssm( rmt, mg, mst1sq, mst2sq, sxt, cxt, - scalesq, tanb, vev2, lam, svevS, as, amu); + scalesq, tanb, vev2, lam, svev, as, amu); } if (HIGGS_2LOOP_CORRECTION_AB_AS) { self_energy_2l += self_energy_pseudoscalar_2loop_ab_as_nmssm( rmb, mg, msb1sq, msb2sq, sxb, cxb, - scalesq, cotb, vev2, lam, svevS, as, amu); + scalesq, cotb, vev2, lam, svev, as, amu); } // Corrections as in MSSM, not corrected for NMSSM, From 9f95c699bf47d03153e43cd08d77b3cdfa1c06d9 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 11 Aug 2016 19:54:47 +0200 Subject: [PATCH 55/64] update ChangeLog --- ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog b/ChangeLog index d5f76d8af..09730f03c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -15,6 +15,11 @@ Flexiblesusy-1.5.2 [not released yet] * Bugfix (commit a5342eb): Avoid non-portable use of sed in createmodel. This fixes `make install-src' on Mac. + * Bugfix (commit 44b31fa): Fix potential race condition when + different model classes that make use of the (N)MSSM 2-loop Higgs + mass routines of P. Slavich call calculate_spectrum() at the same + time. + Flexiblesusy-1.5.1 [July, 12 2017] * Bugfix (commit 63f5361): Fix numerical instability of SOFTSUSY's B1 From 9deb24eae03eaeff07a1f9c4d9418664d31ddada Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 11 Aug 2016 22:20:46 +0200 Subject: [PATCH 56/64] rename variable for clarity --- src/mssm_twoloophiggs.cpp | 26 +++++++++++++------------- src/mssm_twoloophiggs.hpp | 11 ++++++----- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/mssm_twoloophiggs.cpp b/src/mssm_twoloophiggs.cpp index 91615d986..7bc1ab824 100644 --- a/src/mssm_twoloophiggs.cpp +++ b/src/mssm_twoloophiggs.cpp @@ -81,7 +81,7 @@ Eigen::Matrix tadpole_higgs_2loop_ab_as_mssm( } Eigen::Matrix tadpole_higgs_2loop_atau_atau_mssm( - double mtau2, double mA2, double msnusq, double mstau12, + double mtau2, double mA2, double msv2, double mstau12, double mstau22, double sintau, double costau, double scale2, double mu, double tanb, double vev2) { @@ -89,7 +89,7 @@ Eigen::Matrix tadpole_higgs_2loop_atau_atau_mssm( LOCK_MUTEX(); - tausqtad_(&mtau2, &mA2, &msnusq, &mstau12, &mstau22, &sintau, + tausqtad_(&mtau2, &mA2, &msv2, &mstau12, &mstau22, &sintau, &costau, &scale2, &mu, &tanb, &vev2, &result(0), &result(1)); return -result; @@ -147,7 +147,7 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm_with_tadpoles( } Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm_with_tadpoles( - double mtau2, double mA2, double msnusq, double mstau12, + double mtau2, double mA2, double msv2, double mstau12, double mstau22, double sintau, double costau, double scale2, double mu, double tanb, double vev2, int scheme) { @@ -155,7 +155,7 @@ Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm_with_tadpoles LOCK_MUTEX(); - tausqhiggs_(&mtau2, &mA2, &msnusq, &mstau12, &mstau22, &sintau, + tausqhiggs_(&mtau2, &mA2, &msv2, &mstau12, &mstau22, &sintau, &costau, &scale2, &mu, &tanb, &vev2, &scheme, &result(0,0), &result(1,1), &result(0,1)); @@ -206,7 +206,7 @@ double self_energy_pseudoscalar_2loop_ab_as_mssm_with_tadpoles( } double self_energy_pseudoscalar_2loop_atau_atau_mssm_with_tadpoles( - double mtau2, double mA2, double msnusq, double mstau12, + double mtau2, double mA2, double msv2, double mstau12, double mstau22, double sintau, double costau, double scale2, double mu, double tanb, double vev2) { @@ -214,7 +214,7 @@ double self_energy_pseudoscalar_2loop_atau_atau_mssm_with_tadpoles( LOCK_MUTEX(); - tausqodd_(&mtau2, &mA2, &msnusq, &mstau12, &mstau22, &sintau, + tausqodd_(&mtau2, &mA2, &msv2, &mstau12, &mstau22, &sintau, &costau, &scale2, &mu, &tanb, &vev2, &result); return -result; @@ -324,22 +324,22 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm( } Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm( - double mtau2, double mA2, double msnusq, double mstau12, + double mtau2, double mA2, double msv2, double mstau12, double mstau22, double sintau, double costau, double scale2, double mu, double tanb, double vev2, int scheme) { const Eigen::Matrix result = self_energy_higgs_2loop_atau_atau_mssm_with_tadpoles( - mtau2, mA2, msnusq, mstau12, mstau22, sintau, costau, scale2, + mtau2, mA2, msv2, mstau12, mstau22, sintau, costau, scale2, mu, tanb, vev2, scheme); const double dMA = self_energy_pseudoscalar_2loop_atau_atau_mssm_with_tadpoles( - mtau2, mA2, msnusq, mstau12, mstau22, sintau, costau, scale2, + mtau2, mA2, msv2, mstau12, mstau22, sintau, costau, scale2, mu, tanb, vev2); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_atau_atau_mssm( - mtau2, mA2, msnusq, mstau12, mstau22, sintau, costau, scale2, + mtau2, mA2, msv2, mstau12, mstau22, sintau, costau, scale2, mu, tanb, vev2); const Eigen::Matrix tM = @@ -422,17 +422,17 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_mssm( } Eigen::Matrix self_energy_pseudoscalar_2loop_atau_atau_mssm( - double mtau2, double mA2, double msnusq, double mstau12, + double mtau2, double mA2, double msv2, double mstau12, double mstau22, double sintau, double costau, double scale2, double mu, double tanb, double vev2) { const double se = self_energy_pseudoscalar_2loop_atau_atau_mssm_with_tadpoles( - mtau2, mA2, msnusq, mstau12, mstau22, sintau, costau, scale2, + mtau2, mA2, msv2, mstau12, mstau22, sintau, costau, scale2, mu, tanb, vev2); const Eigen::Matrix tadpoles = tadpole_higgs_2loop_atau_atau_mssm( - mtau2, mA2, msnusq, mstau12, mstau22, sintau, costau, scale2, + mtau2, mA2, msv2, mstau12, mstau22, sintau, costau, scale2, mu, tanb, vev2); return subtract_mssm_tadpoles_pseudoscalar(se, tadpoles, tanb); diff --git a/src/mssm_twoloophiggs.hpp b/src/mssm_twoloophiggs.hpp index 383178f00..6de40c062 100644 --- a/src/mssm_twoloophiggs.hpp +++ b/src/mssm_twoloophiggs.hpp @@ -39,6 +39,7 @@ * msb22 : squared DR-bar heaviest sbottom mass * mstau12: squared DR-bar lightest stau mass * mstau22: squared DR-bar heaviest stau mass + * msv2 : squared DR-bar tau sneutrino mass * * sxt : sine of DR-bar stop mixing angle in the MSSM * cxt : cosine of DR-bar stop mixing angle in the MSSM @@ -78,7 +79,7 @@ Eigen::Matrix tadpole_higgs_2loop_ab_as_mssm( double mu, double cotb, double vev2, double gs); Eigen::Matrix tadpole_higgs_2loop_atau_atau_mssm( - double mtau2, double mA2, double msnusq, double mstau12, + double mtau2, double mA2, double msv2, double mstau12, double mstau22, double sintau, double costau, double scale2, double mu, double tanb, double vev2); @@ -101,7 +102,7 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm( double cotb, double vev2, double gs, int scheme = 0); Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm( - double mtau2, double mA2, double msnusq, double mstau12, + double mtau2, double mA2, double msv2, double mstau12, double mstau22, double sintau, double costau, double scale2, double mu, double tanb, double vev2, int scheme = 0); @@ -123,7 +124,7 @@ Eigen::Matrix self_energy_pseudoscalar_2loop_ab_as_mssm( double cotb, double vev2, double gs); Eigen::Matrix self_energy_pseudoscalar_2loop_atau_atau_mssm( - double mtau2, double mA2, double msnusq, double mstau12, + double mtau2, double mA2, double msv2, double mstau12, double mstau22, double sintau, double costau, double scale2, double mu, double tanb, double vev2); @@ -146,7 +147,7 @@ Eigen::Matrix self_energy_higgs_2loop_ab_as_mssm_with_tadpoles( double cotb, double vev2, double gs, int scheme = 0); Eigen::Matrix self_energy_higgs_2loop_atau_atau_mssm_with_tadpoles( - double mtau2, double mA2, double msnusq, double mstau12, + double mtau2, double mA2, double msv2, double mstau12, double mstau22, double sintau, double costau, double scale2, double mu, double tanb, double vev2, int scheme = 0); @@ -168,7 +169,7 @@ double self_energy_pseudoscalar_2loop_ab_as_mssm_with_tadpoles( double cotb, double vev2, double gs); double self_energy_pseudoscalar_2loop_atau_atau_mssm_with_tadpoles( - double mtau2, double mA2, double msnusq, double mstau12, + double mtau2, double mA2, double msv2, double mstau12, double mstau22, double sintau, double costau, double scale2, double mu, double tanb, double vev2); From edf0a40b16d127caf0f2e0cad71230bd6f45cb77 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Thu, 11 Aug 2016 22:44:27 +0200 Subject: [PATCH 57/64] add missing header --- src/nmssm_twoloophiggs.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/nmssm_twoloophiggs.cpp b/src/nmssm_twoloophiggs.cpp index dffb4f037..a7d97e781 100644 --- a/src/nmssm_twoloophiggs.cpp +++ b/src/nmssm_twoloophiggs.cpp @@ -20,6 +20,7 @@ #include "mssm_twoloophiggs.hpp" #include "nmssm2loop.h" #include "config.h" +#include #include #ifdef ENABLE_THREADS From 473f2bc0b7dcf327e55ce84458d994189985dd8d Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Sat, 13 Aug 2016 12:05:39 +0200 Subject: [PATCH 58/64] avoid code duplication --- meta/LoopMasses.m | 56 ++++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/meta/LoopMasses.m b/meta/LoopMasses.m index a845841bf..e35356a40 100644 --- a/meta/LoopMasses.m +++ b/meta/LoopMasses.m @@ -54,6 +54,33 @@ Return[result]; ]; +AddMtPoleQCDCorrections[1, expr_] := "\ +double qcd_1l = 0.; + +{ + const double currentScale = get_scale(); + qcd_1l = " <> CConversion`RValueToCFormString[expr] <> "; +} +"; + +AddMtPoleQCDCorrections[2, expr_] := "\ +double qcd_2l = 0.; + +if (pole_mass_loop_order > 1 && TOP_2LOOP_CORRECTION_QCD > 0) { + const double currentScale = get_scale(); + qcd_2l = " <> CConversion`RValueToCFormString[expr] <> "; +} +"; + +AddMtPoleQCDCorrections[3, expr_] := "\ +double qcd_3l = 0.; + +if (pole_mass_loop_order > 2 && TOP_2LOOP_CORRECTION_QCD > 1) { + const double currentScale = get_scale(); + qcd_3l = " <> CConversion`RValueToCFormString[expr] <> "; +} +"; + Do1DimScalar[particle_, particleName_String, massName_String, massMatrixName_String, selfEnergyFunction_String, momentum_String, tadpole_String:""] := "const double p = " <> momentum <> ";\n" <> @@ -91,18 +118,8 @@ topSelfEnergyFunctionPR = SelfEnergies`CreateHeavySelfEnergyFunctionName[particle[PR]]; qcdOneLoop = N[-TwoLoopQCD`GetDeltaMPoleOverMRunningQCDOneLoop[particle, Global`currentScale, FlexibleSUSY`FSRenormalizationScheme]]; qcdTwoLoop = N[Expand[(-TwoLoopQCD`GetDeltaMPoleOverMRunningQCDTwoLoop[particle, Global`currentScale, FlexibleSUSY`FSRenormalizationScheme]) /. Log[m_/Global`currentScale^2] :> -Log[Global`currentScale^2/m]]]; -"\ -const bool add_2loop_corrections = pole_mass_loop_order > 1 && TOP_2LOOP_CORRECTION_QCD; -const double currentScale = get_scale(); - -const double qcd_1l = " <> CConversion`RValueToCFormString[qcdOneLoop] <> "; - -double qcd_2l = 0.; - -if (add_2loop_corrections) { - qcd_2l = " <> CConversion`RValueToCFormString[qcdTwoLoop] <> "; -} - + AddMtPoleQCDCorrections[1, qcdOneLoop] <> "\n" <> + AddMtPoleQCDCorrections[2, qcdTwoLoop] <> " const double p = " <> momentum <> "; const " <> CreateCType[type] <> " self_energy_1 = " <> CastIfReal[topSelfEnergyFunctionS <> "(p)",type] <> "; const " <> CreateCType[type] <> " self_energy_PL = " <> CastIfReal[topSelfEnergyFunctionPL <> "(p)",type] <> "; @@ -462,19 +479,8 @@ be set to the (positive) tree-level mass. M_tree thirdGenMass = TreeMasses`GetThirdGenerationMass[particle]; qcdOneLoop = N[-TwoLoopQCD`GetDeltaMPoleOverMRunningQCDOneLoop[particle, Global`currentScale, FlexibleSUSY`FSRenormalizationScheme]]; qcdTwoLoop = N[Expand[(-TwoLoopQCD`GetDeltaMPoleOverMRunningQCDTwoLoop[particle, Global`currentScale, FlexibleSUSY`FSRenormalizationScheme]) /. Log[m_/Global`currentScale^2] :> -Log[Global`currentScale^2/m]]]; - qcdCorrections = "\ -const bool add_2loop_corrections = pole_mass_loop_order > 1 && TOP_2LOOP_CORRECTION_QCD; -const double currentScale = get_scale(); - -const double qcd_1l = " <> CConversion`RValueToCFormString[qcdOneLoop /. FlexibleSUSY`M[particle] -> thirdGenMass] <> "; - -double qcd_2l = 0.; - -if (add_2loop_corrections) { - qcd_2l = " <> CConversion`RValueToCFormString[qcdTwoLoop /. FlexibleSUSY`M[particle] -> thirdGenMass] <> "; -} - -"; + qcdCorrections = AddMtPoleQCDCorrections[1, qcdOneLoop /. FlexibleSUSY`M[particle] -> thirdGenMass] <> "\n" <> + AddMtPoleQCDCorrections[2, qcdTwoLoop /. FlexibleSUSY`M[particle] -> thirdGenMass] <> "\n"; ]; selfEnergyFunctionS = SelfEnergies`CreateSelfEnergyFunctionName[particle[1]]; selfEnergyFunctionPL = SelfEnergies`CreateSelfEnergyFunctionName[particle[PL]]; From 0bb271b5ac08c197ddebc963f2ae2608018dc249 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Sat, 13 Aug 2016 12:21:08 +0200 Subject: [PATCH 59/64] adding helper function to calculate 3L QCD Mt contributions --- meta/ThreeLoopQCD.m | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/meta/ThreeLoopQCD.m b/meta/ThreeLoopQCD.m index 2c8353cfa..1049a62cb 100644 --- a/meta/ThreeLoopQCD.m +++ b/meta/ThreeLoopQCD.m @@ -37,6 +37,10 @@ quark_:SARAH`TopQuark, Q_:Q, NH_:1, NL_:5] "; +GetMTopPoleOverMTopMSbar::usage = "Returns the ratio of the pole top + mass over the top MS-bar, being the inverse of + GetMTopMSbarOverMTopPole[]." + Begin["`Private`"]; GetMTopMSbarOverMTopPole0L[] := 1; @@ -236,6 +240,16 @@ ) ]; +GetMTopPoleOverMTopMSbar[loopOrder_List:{1,1,1,1}, quark_:SARAH`TopQuark, Q_:Q, NH_:1, NL_:5] := + Module[{inv = Normal @ Series[1 / GetMTopMSbarOverMTopPole[{1, h, h^2, h^3}, quark, Q, NH, NL], {h,0,3}]}, + ( + loopOrder[[1]] Coefficient[inv, h, 0] + + loopOrder[[2]] Coefficient[inv, h, 1] + + loopOrder[[3]] Coefficient[inv, h, 2] + + loopOrder[[4]] Coefficient[inv, h, 3] + ) + ]; + End[]; EndPackage[]; From 42cf4d0a5c39c4cec39f995a3ff0598c5c0e50b2 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Sat, 13 Aug 2016 12:27:04 +0200 Subject: [PATCH 60/64] use helper function for the test --- test/test_ThreeLoopQCD.m | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/test/test_ThreeLoopQCD.m b/test/test_ThreeLoopQCD.m index 36d20b515..35005f934 100644 --- a/test/test_ThreeLoopQCD.m +++ b/test/test_ThreeLoopQCD.m @@ -96,10 +96,7 @@ (* pole mass up to 3L order *) M = Simplify[ - m[Q] (1 + - h^1 GetDeltaMPoleOverMRunningQCDOneLoopMSbar[TopQuark, Q] + - h^2 GetDeltaMPoleOverMRunningQCDTwoLoopMSbar[TopQuark, Q] + - h^3 M3L) /. gRules + m[Q] GetMTopPoleOverMTopMSbar[{1,h,h^2,h^3}] /. gRules , ass]; deriv = D[M, Q]; From 5e0bca1b11a1256fd35e6bd175fb72274f9afb31 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Sat, 13 Aug 2016 12:49:53 +0200 Subject: [PATCH 61/64] allow user to add 3L QCD corrections to Mt pole in non-SUSY models --- meta/LoopMasses.m | 24 +++++++++++++++++------- src/spectrum_generator_settings.cpp | 8 ++++---- src/spectrum_generator_settings.hpp | 2 +- src/two_loop_corrections.hpp | 4 ++-- templates/mass_eigenstates.cpp.in | 2 +- 5 files changed, 25 insertions(+), 15 deletions(-) diff --git a/meta/LoopMasses.m b/meta/LoopMasses.m index e35356a40..9238b36f1 100644 --- a/meta/LoopMasses.m +++ b/meta/LoopMasses.m @@ -66,7 +66,7 @@ AddMtPoleQCDCorrections[2, expr_] := "\ double qcd_2l = 0.; -if (pole_mass_loop_order > 1 && TOP_2LOOP_CORRECTION_QCD > 0) { +if (pole_mass_loop_order > 1 && TOP_POLE_QCD_CORRECTION > 0) { const double currentScale = get_scale(); qcd_2l = " <> CConversion`RValueToCFormString[expr] <> "; } @@ -75,7 +75,7 @@ AddMtPoleQCDCorrections[3, expr_] := "\ double qcd_3l = 0.; -if (pole_mass_loop_order > 2 && TOP_2LOOP_CORRECTION_QCD > 1) { +if (pole_mass_loop_order > 2 && TOP_POLE_QCD_CORRECTION > 1) { const double currentScale = get_scale(); qcd_3l = " <> CConversion`RValueToCFormString[expr] <> "; } @@ -110,7 +110,7 @@ _String, _String, _String, momentum_String, type_] := Module[{massName, topSelfEnergyFunctionS, topSelfEnergyFunctionPL, topSelfEnergyFunctionPR, - qcdOneLoop, qcdTwoLoop + qcdOneLoop, qcdTwoLoop, qcdThreeLoop }, massName = ToValidCSymbolString[FlexibleSUSY`M[particle]]; topSelfEnergyFunctionS = SelfEnergies`CreateHeavySelfEnergyFunctionName[particle[1]]; @@ -118,15 +118,20 @@ topSelfEnergyFunctionPR = SelfEnergies`CreateHeavySelfEnergyFunctionName[particle[PR]]; qcdOneLoop = N[-TwoLoopQCD`GetDeltaMPoleOverMRunningQCDOneLoop[particle, Global`currentScale, FlexibleSUSY`FSRenormalizationScheme]]; qcdTwoLoop = N[Expand[(-TwoLoopQCD`GetDeltaMPoleOverMRunningQCDTwoLoop[particle, Global`currentScale, FlexibleSUSY`FSRenormalizationScheme]) /. Log[m_/Global`currentScale^2] :> -Log[Global`currentScale^2/m]]]; + qcdThreeLoop = If[FlexibleSUSY`FSRenormalizationScheme === FlexibleSUSY`MSbar, + Simplify @ N[ThreeLoopQCD`GetMTopPoleOverMTopMSbar[{0,0,0,1}, particle, Global`currentScale] /. + Log[m_/Global`currentScale^2] :> -Log[Global`currentScale^2/m]], + 0]; AddMtPoleQCDCorrections[1, qcdOneLoop] <> "\n" <> - AddMtPoleQCDCorrections[2, qcdTwoLoop] <> " + AddMtPoleQCDCorrections[2, qcdTwoLoop] <> "\n" <> + AddMtPoleQCDCorrections[3, qcdThreeLoop] <> " const double p = " <> momentum <> "; const " <> CreateCType[type] <> " self_energy_1 = " <> CastIfReal[topSelfEnergyFunctionS <> "(p)",type] <> "; const " <> CreateCType[type] <> " self_energy_PL = " <> CastIfReal[topSelfEnergyFunctionPL <> "(p)",type] <> "; const " <> CreateCType[type] <> " self_energy_PR = " <> CastIfReal[topSelfEnergyFunctionPR <> "(p)",type] <> "; const auto M_loop = " <> massMatrixName <> "\ - self_energy_1 - " <> massMatrixName <> " * (self_energy_PL + self_energy_PR)\ - - " <> massMatrixName <> " * (qcd_1l + qcd_2l);\n + - " <> massMatrixName <> " * (qcd_1l + qcd_2l + qcd_3l);\n PHYSICAL(" <> massName <> ") = calculate_singlet_mass(M_loop);\n" ]; @@ -479,8 +484,13 @@ be set to the (positive) tree-level mass. M_tree thirdGenMass = TreeMasses`GetThirdGenerationMass[particle]; qcdOneLoop = N[-TwoLoopQCD`GetDeltaMPoleOverMRunningQCDOneLoop[particle, Global`currentScale, FlexibleSUSY`FSRenormalizationScheme]]; qcdTwoLoop = N[Expand[(-TwoLoopQCD`GetDeltaMPoleOverMRunningQCDTwoLoop[particle, Global`currentScale, FlexibleSUSY`FSRenormalizationScheme]) /. Log[m_/Global`currentScale^2] :> -Log[Global`currentScale^2/m]]]; + qcdThreeLoop = If[FlexibleSUSY`FSRenormalizationScheme === FlexibleSUSY`MSbar, + Simplify @ N[ThreeLoopQCD`GetMTopPoleOverMTopMSbar[{0,0,0,1}, particle, Global`currentScale] /. + Log[m_/Global`currentScale^2] :> -Log[Global`currentScale^2/m]], + 0]; qcdCorrections = AddMtPoleQCDCorrections[1, qcdOneLoop /. FlexibleSUSY`M[particle] -> thirdGenMass] <> "\n" <> - AddMtPoleQCDCorrections[2, qcdTwoLoop /. FlexibleSUSY`M[particle] -> thirdGenMass] <> "\n"; + AddMtPoleQCDCorrections[2, qcdTwoLoop /. FlexibleSUSY`M[particle] -> thirdGenMass] <> "\n" <> + AddMtPoleQCDCorrections[3, qcdThreeLoop /. FlexibleSUSY`M[particle] -> thirdGenMass] <> "\n"; ]; selfEnergyFunctionS = SelfEnergies`CreateSelfEnergyFunctionName[particle[1]]; selfEnergyFunctionPL = SelfEnergies`CreateSelfEnergyFunctionName[particle[PL]]; @@ -518,7 +528,7 @@ be set to the (positive) tree-level mass. M_tree If[topTwoLoop, selfEnergyMatrixCType <> " delta_M(- self_energy_PR * M_tree " <> "- M_tree * self_energy_PL - self_energy_1);\n" <> - "delta_M(2,2) -= M_tree(2,2) * (qcd_1l + qcd_2l);\n" + "delta_M(2,2) -= M_tree(2,2) * (qcd_1l + qcd_2l + qcd_3l);\n" , "const " <> selfEnergyMatrixCType <> " delta_M(- self_energy_PR * M_tree " <> "- M_tree * self_energy_PL - self_energy_1);\n" diff --git a/src/spectrum_generator_settings.cpp b/src/spectrum_generator_settings.cpp index 62207cc15..bda100b29 100644 --- a/src/spectrum_generator_settings.cpp +++ b/src/spectrum_generator_settings.cpp @@ -63,7 +63,7 @@ void Spectrum_generator_settings::set(Settings o, double value) * | higgs_2loop_correction_at_at | 0, 1 | 1 (= enabled) | * | higgs_2loop_correction_atau_atau | 0, 1 | 1 (= enabled) | * | force_output | 0 (no) or 1 (yes) | 0 (= no) | - * | top_2loop_corrections_qcd | 0, 1 | 1 (= enabled) | + * | top_pole_qcd_corrections | 0 (1L), 1 (2L), 2 (3L) | 1 (= 2L QCD) | * | beta_zero_threshold | any positive double | 1.0e-11 | * | calculate_observables | 0 (no) or 1 (yes) | 0 (= no) | * | force_positive_masses | 0 (no) or 1 (yes) | 0 (= no) | @@ -84,7 +84,7 @@ void Spectrum_generator_settings::reset() values[higgs_2loop_correction_at_at] = 1.; values[higgs_2loop_correction_atau_atau] = 1.; values[calculate_sm_masses] = 0.; // 0 = false - values[top_2loop_corrections_qcd] = 1.; + values[top_pole_qcd_corrections] = 1.; values[beta_zero_threshold] = 1.0e-11; values[calculate_observables] = 0; values[force_positive_masses] = 0; @@ -98,7 +98,7 @@ Two_loop_corrections Spectrum_generator_settings::get_two_loop_corrections() con two_loop_corrections.higgs_ab_as = get(higgs_2loop_correction_ab_as); two_loop_corrections.higgs_at_at = get(higgs_2loop_correction_at_at); two_loop_corrections.higgs_atau_atau = get(higgs_2loop_correction_atau_atau); - two_loop_corrections.top_qcd = get(top_2loop_corrections_qcd); + two_loop_corrections.top_qcd = get(top_pole_qcd_corrections); return two_loop_corrections; } @@ -110,7 +110,7 @@ void Spectrum_generator_settings::set_two_loop_corrections( set(higgs_2loop_correction_ab_as, two_loop_corrections.higgs_ab_as); set(higgs_2loop_correction_at_at, two_loop_corrections.higgs_at_at); set(higgs_2loop_correction_atau_atau, two_loop_corrections.higgs_atau_atau); - set(top_2loop_corrections_qcd, two_loop_corrections.top_qcd); + set(top_pole_qcd_corrections, two_loop_corrections.top_qcd); } } // namespace flexiblesusy diff --git a/src/spectrum_generator_settings.hpp b/src/spectrum_generator_settings.hpp index 512f185df..4f0aa8d99 100644 --- a/src/spectrum_generator_settings.hpp +++ b/src/spectrum_generator_settings.hpp @@ -47,7 +47,7 @@ class Spectrum_generator_settings { higgs_2loop_correction_at_at, ///< [10] Higgs 2-loop correction O(alpha_t alpha_t + alpha_t alpha_b + alpha_b alpha_b) higgs_2loop_correction_atau_atau, ///< [11] Higgs 2-loop correction O(alpha_tau alpha_tau) force_output, ///< [12] force output - top_2loop_corrections_qcd, ///< [13] Top-quark 2-loop QCD corrections + top_pole_qcd_corrections, ///< [13] Top-quark pole mass QCD corrections beta_zero_threshold, ///< [14] beta function zero threshold calculate_observables, ///< [15] calculate observables (a_muon, ...) force_positive_masses, ///< [16] force positive masses of majoran fermions diff --git a/src/two_loop_corrections.hpp b/src/two_loop_corrections.hpp index 9e2938e8c..ecd277d33 100644 --- a/src/two_loop_corrections.hpp +++ b/src/two_loop_corrections.hpp @@ -34,10 +34,10 @@ struct Two_loop_corrections { , higgs_ab_as(true) , higgs_at_at(true) , higgs_atau_atau(true) - , top_qcd(true) + , top_qcd(1) {} bool higgs_at_as, higgs_ab_as, higgs_at_at, higgs_atau_atau; - bool top_qcd; + unsigned top_qcd; ///< top pole mass QCD corrections }; } // namespace flexiblesusy diff --git a/templates/mass_eigenstates.cpp.in b/templates/mass_eigenstates.cpp.in index 22de39d0e..fa6326961 100644 --- a/templates/mass_eigenstates.cpp.in +++ b/templates/mass_eigenstates.cpp.in @@ -73,7 +73,7 @@ using namespace @ModelName@_info; #define HIGGS_2LOOP_CORRECTION_AB_AS two_loop_corrections.higgs_ab_as #define HIGGS_2LOOP_CORRECTION_AT_AT two_loop_corrections.higgs_at_at #define HIGGS_2LOOP_CORRECTION_ATAU_ATAU two_loop_corrections.higgs_atau_atau -#define TOP_2LOOP_CORRECTION_QCD two_loop_corrections.top_qcd +#define TOP_POLE_QCD_CORRECTION two_loop_corrections.top_qcd #define HIGGS_3LOOP_CORRECTION_AT_AS_AS 1 CLASSNAME::@ModelName@_mass_eigenstates(const @ModelName@_input_parameters& input_) From e04f45c658d40c3c79b920dc016751b11d7321fc Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Sat, 13 Aug 2016 13:08:32 +0200 Subject: [PATCH 62/64] slightly rename FlexibleSUSY[13] to reflect the new meaning to add 3L QCD corrections --- examples/customized-betas/LesHouches.in.MSSMcbs | 2 +- examples/tower/LesHouches.in.tower | 2 +- model_files/BLSM/LesHouches.in.BLSM | 2 +- model_files/BLSMlightZp/LesHouches.in.BLSMlightZp | 2 +- model_files/CMSSM/LesHouches.in.CMSSM | 2 +- model_files/CMSSMCPV/LesHouches.in.CMSSMCPV | 2 +- model_files/CMSSMNoFV/LesHouches.in.CMSSMNoFV | 2 +- model_files/DiracGauginos/LesHouches.in.DiracGauginos | 2 +- model_files/E6SSM/LesHouches.in.E6SSM | 2 +- model_files/HGTHDMIIMSSMBC/LesHouches.in.HGTHDMIIMSSMBC | 2 +- .../HGTHDMIIMSSMBCApprox/LesHouches.in.HGTHDMIIMSSMBCApprox | 2 +- model_files/HGTHDMIIMSSMBCFull/LesHouches.in.HGTHDMIIMSSMBCFull | 2 +- model_files/HSSUSY/LesHouches.in.HSSUSY | 2 +- model_files/HTHDMIIMSSMBC/LesHouches.in.HTHDMIIMSSMBC | 2 +- model_files/LHInputMSSM/LesHouches.in.LHInputMSSM | 2 +- model_files/MDM/LesHouches.in.MDM | 2 +- model_files/MRSSM/LesHouches.in.MRSSM | 2 +- model_files/MRSSM2/LesHouches.in.MRSSM2 | 2 +- model_files/MSSM/LesHouches.in.MSSM | 2 +- model_files/MSSMNoFV/LesHouches.in.MSSMNoFV | 2 +- model_files/MSSMNoFVSLHA2/LesHouches.in.MSSMNoFVSLHA2 | 2 +- model_files/MSSMNoFVatMGUT/LesHouches.in.MSSMNoFVatMGUT | 2 +- model_files/MSSMatMGUT/LesHouches.in.MSSMatMGUT | 2 +- model_files/NMSSM/LesHouches.in.NMSSM | 2 +- model_files/NMSSMCPV/LesHouches.in.NMSSMCPV | 2 +- model_files/NUHMSSM/LesHouches.in.NUHMSSM | 2 +- model_files/NUTNMSSM/LesHouches.in.NUTNMSSM | 2 +- model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_1308.1333_BP1 | 2 +- model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_1308.1333_BP2 | 2 +- model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_1308.1333_BP3 | 2 +- model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_GTP1 | 2 +- model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_GTP2 | 2 +- model_files/NUTSMSSM/LesHouches.in.NUTSMSSM | 2 +- model_files/SM/LesHouches.in.SM | 2 +- model_files/SMHighScale/LesHouches.in.SMHighScale | 2 +- model_files/SMSSM/LesHouches.in.SMSSM | 2 +- model_files/SSM/LesHouches.in.SSM | 2 +- model_files/SplitMSSM/LesHouches.in.SplitMSSM | 2 +- model_files/THDMII/LesHouches.in.THDMII | 2 +- model_files/THDMIIMSSMBC/LesHouches.in.THDMIIMSSMBC | 2 +- model_files/THDMIIMSSMBCApprox/LesHouches.in.THDMIIMSSMBCApprox | 2 +- model_files/THDMIIMSSMBCFull/LesHouches.in.THDMIIMSSMBCFull | 2 +- model_files/TensorCoupling/LesHouches.in.TensorCoupling | 2 +- model_files/U1xMSSM3G/LesHouches.in.U1xMSSM3G | 2 +- model_files/UMSSM/LesHouches.in.UMSSM | 2 +- model_files/cCMSSM/LesHouches.in.cCMSSM | 2 +- model_files/complexMSSM/LesHouches.in.complexMSSM | 2 +- model_files/lowMSSM/LesHouches.in.lowMSSM | 2 +- model_files/lowNMSSM/LesHouches.in.TP1 | 2 +- model_files/lowNMSSM/LesHouches.in.TP2 | 2 +- model_files/lowNMSSM/LesHouches.in.TP3 | 2 +- model_files/lowNMSSM/LesHouches.in.TP4 | 2 +- model_files/lowNMSSM/LesHouches.in.TP5 | 2 +- model_files/lowNMSSM/LesHouches.in.TP6 | 2 +- model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP1 | 2 +- model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP2 | 2 +- model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP3 | 2 +- model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP4 | 2 +- model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP5 | 2 +- model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP6 | 2 +- model_files/munuSSM/LesHouches.in.munuSSM | 2 +- test/test_CMSSMCPV_wrong_higgs_state.in.spc | 2 +- test/test_CMSSM_benchmark.in.spc.in | 2 +- test/test_CMSSM_gluino.spc.in | 2 +- test/test_CMSSM_slha_doubled_blocks.spc.in | 2 +- test/test_CMSSM_slha_output.in.spc | 2 +- test/test_E6SSM_nan.in.spc | 2 +- test/test_HSSUSY_SUSYHD.sh | 2 +- test/test_HSSUSY_SUSYHD_msq_m3_degenerate.in.spc | 2 +- test/test_HSSUSY_SUSYHD_msq_msu_m3_degenerate.in.spc | 2 +- test/test_HSSUSY_SUSYHD_msq_msu_m3_msusy_degenerate.in.spc | 2 +- test/test_HSSUSY_SUSYHD_msu_m3_degenerate.in.spc | 2 +- test/test_HSSUSY_SUSYHD_nondegenerate.in.spc | 2 +- test/test_NMSSM_benchmark.in.spc.in | 2 +- test/test_NMSSM_slha_output.in.spc | 2 +- test/test_ReadSLHA.m | 2 +- test/test_SM_0L_RGEs.in.spc | 2 +- 77 files changed, 77 insertions(+), 77 deletions(-) diff --git a/examples/customized-betas/LesHouches.in.MSSMcbs b/examples/customized-betas/LesHouches.in.MSSMcbs index 91abcd759..a21bfcf48 100644 --- a/examples/customized-betas/LesHouches.in.MSSMcbs +++ b/examples/customized-betas/LesHouches.in.MSSMcbs @@ -17,7 +17,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/examples/tower/LesHouches.in.tower b/examples/tower/LesHouches.in.tower index 4d91dee09..7b36e8a83 100644 --- a/examples/tower/LesHouches.in.tower +++ b/examples/tower/LesHouches.in.tower @@ -17,7 +17,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/BLSM/LesHouches.in.BLSM b/model_files/BLSM/LesHouches.in.BLSM index 02d4be4a4..29f7e2b94 100644 --- a/model_files/BLSM/LesHouches.in.BLSM +++ b/model_files/BLSM/LesHouches.in.BLSM @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/BLSMlightZp/LesHouches.in.BLSMlightZp b/model_files/BLSMlightZp/LesHouches.in.BLSMlightZp index 8d54b2ec1..588d2cf79 100644 --- a/model_files/BLSMlightZp/LesHouches.in.BLSMlightZp +++ b/model_files/BLSMlightZp/LesHouches.in.BLSMlightZp @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/CMSSM/LesHouches.in.CMSSM b/model_files/CMSSM/LesHouches.in.CMSSM index ef1c74e50..5f11bbb47 100644 --- a/model_files/CMSSM/LesHouches.in.CMSSM +++ b/model_files/CMSSM/LesHouches.in.CMSSM @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/CMSSMCPV/LesHouches.in.CMSSMCPV b/model_files/CMSSMCPV/LesHouches.in.CMSSMCPV index 653e6b219..39712acf5 100644 --- a/model_files/CMSSMCPV/LesHouches.in.CMSSMCPV +++ b/model_files/CMSSMCPV/LesHouches.in.CMSSMCPV @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/CMSSMNoFV/LesHouches.in.CMSSMNoFV b/model_files/CMSSMNoFV/LesHouches.in.CMSSMNoFV index ef1c74e50..5f11bbb47 100644 --- a/model_files/CMSSMNoFV/LesHouches.in.CMSSMNoFV +++ b/model_files/CMSSMNoFV/LesHouches.in.CMSSMNoFV @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/DiracGauginos/LesHouches.in.DiracGauginos b/model_files/DiracGauginos/LesHouches.in.DiracGauginos index c8fe6aa3e..d63199e89 100644 --- a/model_files/DiracGauginos/LesHouches.in.DiracGauginos +++ b/model_files/DiracGauginos/LesHouches.in.DiracGauginos @@ -15,7 +15,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/E6SSM/LesHouches.in.E6SSM b/model_files/E6SSM/LesHouches.in.E6SSM index 819067b6f..a9e2a1cd2 100644 --- a/model_files/E6SSM/LesHouches.in.E6SSM +++ b/model_files/E6SSM/LesHouches.in.E6SSM @@ -15,7 +15,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/HGTHDMIIMSSMBC/LesHouches.in.HGTHDMIIMSSMBC b/model_files/HGTHDMIIMSSMBC/LesHouches.in.HGTHDMIIMSSMBC index 081ca27b4..c29c63bf9 100644 --- a/model_files/HGTHDMIIMSSMBC/LesHouches.in.HGTHDMIIMSSMBC +++ b/model_files/HGTHDMIIMSSMBC/LesHouches.in.HGTHDMIIMSSMBC @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/HGTHDMIIMSSMBCApprox/LesHouches.in.HGTHDMIIMSSMBCApprox b/model_files/HGTHDMIIMSSMBCApprox/LesHouches.in.HGTHDMIIMSSMBCApprox index 47ea77b49..e4f6e1598 100644 --- a/model_files/HGTHDMIIMSSMBCApprox/LesHouches.in.HGTHDMIIMSSMBCApprox +++ b/model_files/HGTHDMIIMSSMBCApprox/LesHouches.in.HGTHDMIIMSSMBCApprox @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) Block SMINPUTS # Standard Model inputs 1 1.279440000e+02 # alpha^(-1) SM MSbar(MZ) 2 1.166380000e-05 # G_Fermi diff --git a/model_files/HGTHDMIIMSSMBCFull/LesHouches.in.HGTHDMIIMSSMBCFull b/model_files/HGTHDMIIMSSMBCFull/LesHouches.in.HGTHDMIIMSSMBCFull index 47ea77b49..e4f6e1598 100644 --- a/model_files/HGTHDMIIMSSMBCFull/LesHouches.in.HGTHDMIIMSSMBCFull +++ b/model_files/HGTHDMIIMSSMBCFull/LesHouches.in.HGTHDMIIMSSMBCFull @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) Block SMINPUTS # Standard Model inputs 1 1.279440000e+02 # alpha^(-1) SM MSbar(MZ) 2 1.166380000e-05 # G_Fermi diff --git a/model_files/HSSUSY/LesHouches.in.HSSUSY b/model_files/HSSUSY/LesHouches.in.HSSUSY index fc457839e..94ed1cd80 100644 --- a/model_files/HSSUSY/LesHouches.in.HSSUSY +++ b/model_files/HSSUSY/LesHouches.in.HSSUSY @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/HTHDMIIMSSMBC/LesHouches.in.HTHDMIIMSSMBC b/model_files/HTHDMIIMSSMBC/LesHouches.in.HTHDMIIMSSMBC index 02f896233..08d48b758 100644 --- a/model_files/HTHDMIIMSSMBC/LesHouches.in.HTHDMIIMSSMBC +++ b/model_files/HTHDMIIMSSMBC/LesHouches.in.HTHDMIIMSSMBC @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/LHInputMSSM/LesHouches.in.LHInputMSSM b/model_files/LHInputMSSM/LesHouches.in.LHInputMSSM index d87759c16..7b2710eb8 100644 --- a/model_files/LHInputMSSM/LesHouches.in.LHInputMSSM +++ b/model_files/LHInputMSSM/LesHouches.in.LHInputMSSM @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/MDM/LesHouches.in.MDM b/model_files/MDM/LesHouches.in.MDM index f519d6e48..5f7f884a4 100644 --- a/model_files/MDM/LesHouches.in.MDM +++ b/model_files/MDM/LesHouches.in.MDM @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 0 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold Block SMINPUTS # Standard Model inputs 1 1.279340000e+02 # alpha^(-1) SM MSbar(MZ) diff --git a/model_files/MRSSM/LesHouches.in.MRSSM b/model_files/MRSSM/LesHouches.in.MRSSM index 9aed69d6f..f8575ea86 100644 --- a/model_files/MRSSM/LesHouches.in.MRSSM +++ b/model_files/MRSSM/LesHouches.in.MRSSM @@ -26,7 +26,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/MRSSM2/LesHouches.in.MRSSM2 b/model_files/MRSSM2/LesHouches.in.MRSSM2 index 46edf09b5..0265ff3e7 100644 --- a/model_files/MRSSM2/LesHouches.in.MRSSM2 +++ b/model_files/MRSSM2/LesHouches.in.MRSSM2 @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/MSSM/LesHouches.in.MSSM b/model_files/MSSM/LesHouches.in.MSSM index 0017a4764..de2c09845 100644 --- a/model_files/MSSM/LesHouches.in.MSSM +++ b/model_files/MSSM/LesHouches.in.MSSM @@ -15,7 +15,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/MSSMNoFV/LesHouches.in.MSSMNoFV b/model_files/MSSMNoFV/LesHouches.in.MSSMNoFV index c28ee1977..53d075ae7 100644 --- a/model_files/MSSMNoFV/LesHouches.in.MSSMNoFV +++ b/model_files/MSSMNoFV/LesHouches.in.MSSMNoFV @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/MSSMNoFVSLHA2/LesHouches.in.MSSMNoFVSLHA2 b/model_files/MSSMNoFVSLHA2/LesHouches.in.MSSMNoFVSLHA2 index c28ee1977..53d075ae7 100644 --- a/model_files/MSSMNoFVSLHA2/LesHouches.in.MSSMNoFVSLHA2 +++ b/model_files/MSSMNoFVSLHA2/LesHouches.in.MSSMNoFVSLHA2 @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/MSSMNoFVatMGUT/LesHouches.in.MSSMNoFVatMGUT b/model_files/MSSMNoFVatMGUT/LesHouches.in.MSSMNoFVatMGUT index 20db4031d..c09310fd5 100644 --- a/model_files/MSSMNoFVatMGUT/LesHouches.in.MSSMNoFVatMGUT +++ b/model_files/MSSMNoFVatMGUT/LesHouches.in.MSSMNoFVatMGUT @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/MSSMatMGUT/LesHouches.in.MSSMatMGUT b/model_files/MSSMatMGUT/LesHouches.in.MSSMatMGUT index d64d9f3b0..f4a4d59a0 100644 --- a/model_files/MSSMatMGUT/LesHouches.in.MSSMatMGUT +++ b/model_files/MSSMatMGUT/LesHouches.in.MSSMatMGUT @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/NMSSM/LesHouches.in.NMSSM b/model_files/NMSSM/LesHouches.in.NMSSM index 611af5155..1c81e9684 100644 --- a/model_files/NMSSM/LesHouches.in.NMSSM +++ b/model_files/NMSSM/LesHouches.in.NMSSM @@ -15,7 +15,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/NMSSMCPV/LesHouches.in.NMSSMCPV b/model_files/NMSSMCPV/LesHouches.in.NMSSMCPV index 0585272fe..310dd0f38 100644 --- a/model_files/NMSSMCPV/LesHouches.in.NMSSMCPV +++ b/model_files/NMSSMCPV/LesHouches.in.NMSSMCPV @@ -15,7 +15,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/NUHMSSM/LesHouches.in.NUHMSSM b/model_files/NUHMSSM/LesHouches.in.NUHMSSM index 360565535..795d44aec 100644 --- a/model_files/NUHMSSM/LesHouches.in.NUHMSSM +++ b/model_files/NUHMSSM/LesHouches.in.NUHMSSM @@ -15,7 +15,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM b/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM index a21537dae..ff1b833ab 100644 --- a/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM +++ b/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_1308.1333_BP1 b/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_1308.1333_BP1 index d26453567..04f81fe41 100644 --- a/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_1308.1333_BP1 +++ b/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_1308.1333_BP1 @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_1308.1333_BP2 b/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_1308.1333_BP2 index 2ca979271..57e8bcddf 100644 --- a/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_1308.1333_BP2 +++ b/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_1308.1333_BP2 @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_1308.1333_BP3 b/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_1308.1333_BP3 index cfb5d4705..68542b489 100644 --- a/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_1308.1333_BP3 +++ b/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_1308.1333_BP3 @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_GTP1 b/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_GTP1 index a1f2d7eba..8f97cf299 100644 --- a/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_GTP1 +++ b/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_GTP1 @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_GTP2 b/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_GTP2 index b0680871d..1a022b8d3 100644 --- a/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_GTP2 +++ b/model_files/NUTNMSSM/LesHouches.in.NUTNMSSM_GTP2 @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/NUTSMSSM/LesHouches.in.NUTSMSSM b/model_files/NUTSMSSM/LesHouches.in.NUTSMSSM index 824608e20..081ab905d 100644 --- a/model_files/NUTSMSSM/LesHouches.in.NUTSMSSM +++ b/model_files/NUTSMSSM/LesHouches.in.NUTSMSSM @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/SM/LesHouches.in.SM b/model_files/SM/LesHouches.in.SM index 1b1286abf..baf601c33 100644 --- a/model_files/SM/LesHouches.in.SM +++ b/model_files/SM/LesHouches.in.SM @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 0 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/SMHighScale/LesHouches.in.SMHighScale b/model_files/SMHighScale/LesHouches.in.SMHighScale index aa16990d3..6beffe5dc 100644 --- a/model_files/SMHighScale/LesHouches.in.SMHighScale +++ b/model_files/SMHighScale/LesHouches.in.SMHighScale @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 0 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/SMSSM/LesHouches.in.SMSSM b/model_files/SMSSM/LesHouches.in.SMSSM index b101a97fd..007151f73 100644 --- a/model_files/SMSSM/LesHouches.in.SMSSM +++ b/model_files/SMSSM/LesHouches.in.SMSSM @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/SSM/LesHouches.in.SSM b/model_files/SSM/LesHouches.in.SSM index 1fb9d437b..ef379c585 100644 --- a/model_files/SSM/LesHouches.in.SSM +++ b/model_files/SSM/LesHouches.in.SSM @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 0 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 0 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/SplitMSSM/LesHouches.in.SplitMSSM b/model_files/SplitMSSM/LesHouches.in.SplitMSSM index ff5e1a99a..88e1ae40f 100644 --- a/model_files/SplitMSSM/LesHouches.in.SplitMSSM +++ b/model_files/SplitMSSM/LesHouches.in.SplitMSSM @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) Block SMINPUTS # Standard Model inputs 1 1.279440000e+02 # alpha^(-1) SM MSbar(MZ) 2 1.166380000e-05 # G_Fermi diff --git a/model_files/THDMII/LesHouches.in.THDMII b/model_files/THDMII/LesHouches.in.THDMII index 468a9de4e..a83453041 100644 --- a/model_files/THDMII/LesHouches.in.THDMII +++ b/model_files/THDMII/LesHouches.in.THDMII @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 0 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 0 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/THDMIIMSSMBC/LesHouches.in.THDMIIMSSMBC b/model_files/THDMIIMSSMBC/LesHouches.in.THDMIIMSSMBC index 123ab59af..0b6239cb4 100644 --- a/model_files/THDMIIMSSMBC/LesHouches.in.THDMIIMSSMBC +++ b/model_files/THDMIIMSSMBC/LesHouches.in.THDMIIMSSMBC @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/THDMIIMSSMBCApprox/LesHouches.in.THDMIIMSSMBCApprox b/model_files/THDMIIMSSMBCApprox/LesHouches.in.THDMIIMSSMBCApprox index 384b060d8..108449a28 100644 --- a/model_files/THDMIIMSSMBCApprox/LesHouches.in.THDMIIMSSMBCApprox +++ b/model_files/THDMIIMSSMBCApprox/LesHouches.in.THDMIIMSSMBCApprox @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) Block SMINPUTS # Standard Model inputs 1 1.279440000e+02 # alpha^(-1) SM MSbar(MZ) 2 1.166380000e-05 # G_Fermi diff --git a/model_files/THDMIIMSSMBCFull/LesHouches.in.THDMIIMSSMBCFull b/model_files/THDMIIMSSMBCFull/LesHouches.in.THDMIIMSSMBCFull index 384b060d8..108449a28 100644 --- a/model_files/THDMIIMSSMBCFull/LesHouches.in.THDMIIMSSMBCFull +++ b/model_files/THDMIIMSSMBCFull/LesHouches.in.THDMIIMSSMBCFull @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) Block SMINPUTS # Standard Model inputs 1 1.279440000e+02 # alpha^(-1) SM MSbar(MZ) 2 1.166380000e-05 # G_Fermi diff --git a/model_files/TensorCoupling/LesHouches.in.TensorCoupling b/model_files/TensorCoupling/LesHouches.in.TensorCoupling index d5f9d4cc7..aef1d87ac 100644 --- a/model_files/TensorCoupling/LesHouches.in.TensorCoupling +++ b/model_files/TensorCoupling/LesHouches.in.TensorCoupling @@ -15,7 +15,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/U1xMSSM3G/LesHouches.in.U1xMSSM3G b/model_files/U1xMSSM3G/LesHouches.in.U1xMSSM3G index 9a0c759ff..166c7934a 100644 --- a/model_files/U1xMSSM3G/LesHouches.in.U1xMSSM3G +++ b/model_files/U1xMSSM3G/LesHouches.in.U1xMSSM3G @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 0 # Top quark 2-loop corrections QCD + 13 0 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 1 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/UMSSM/LesHouches.in.UMSSM b/model_files/UMSSM/LesHouches.in.UMSSM index 16b194fae..ed922821a 100644 --- a/model_files/UMSSM/LesHouches.in.UMSSM +++ b/model_files/UMSSM/LesHouches.in.UMSSM @@ -15,7 +15,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/cCMSSM/LesHouches.in.cCMSSM b/model_files/cCMSSM/LesHouches.in.cCMSSM index e1c4e0af5..d92bfe86c 100644 --- a/model_files/cCMSSM/LesHouches.in.cCMSSM +++ b/model_files/cCMSSM/LesHouches.in.cCMSSM @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/complexMSSM/LesHouches.in.complexMSSM b/model_files/complexMSSM/LesHouches.in.complexMSSM index 5f7c25f8e..c0c473c24 100644 --- a/model_files/complexMSSM/LesHouches.in.complexMSSM +++ b/model_files/complexMSSM/LesHouches.in.complexMSSM @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/lowMSSM/LesHouches.in.lowMSSM b/model_files/lowMSSM/LesHouches.in.lowMSSM index 3af9a2654..eb511754f 100644 --- a/model_files/lowMSSM/LesHouches.in.lowMSSM +++ b/model_files/lowMSSM/LesHouches.in.lowMSSM @@ -12,7 +12,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/lowNMSSM/LesHouches.in.TP1 b/model_files/lowNMSSM/LesHouches.in.TP1 index 029f53bff..6eabfaaf2 100644 --- a/model_files/lowNMSSM/LesHouches.in.TP1 +++ b/model_files/lowNMSSM/LesHouches.in.TP1 @@ -11,7 +11,7 @@ Block FlexibleSUSY 9 1 # Higgs 2-loop corrections O(alpha_b alpha_s) 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/lowNMSSM/LesHouches.in.TP2 b/model_files/lowNMSSM/LesHouches.in.TP2 index 23fbc2c9a..e546773a8 100644 --- a/model_files/lowNMSSM/LesHouches.in.TP2 +++ b/model_files/lowNMSSM/LesHouches.in.TP2 @@ -11,7 +11,7 @@ Block FlexibleSUSY 9 1 # Higgs 2-loop corrections O(alpha_b alpha_s) 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/lowNMSSM/LesHouches.in.TP3 b/model_files/lowNMSSM/LesHouches.in.TP3 index 6064d78f6..d68425745 100644 --- a/model_files/lowNMSSM/LesHouches.in.TP3 +++ b/model_files/lowNMSSM/LesHouches.in.TP3 @@ -11,7 +11,7 @@ Block FlexibleSUSY 9 1 # Higgs 2-loop corrections O(alpha_b alpha_s) 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/lowNMSSM/LesHouches.in.TP4 b/model_files/lowNMSSM/LesHouches.in.TP4 index 6115620f7..ca02591a1 100644 --- a/model_files/lowNMSSM/LesHouches.in.TP4 +++ b/model_files/lowNMSSM/LesHouches.in.TP4 @@ -11,7 +11,7 @@ Block FlexibleSUSY 9 1 # Higgs 2-loop corrections O(alpha_b alpha_s) 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/lowNMSSM/LesHouches.in.TP5 b/model_files/lowNMSSM/LesHouches.in.TP5 index cdde60815..b2eee8931 100644 --- a/model_files/lowNMSSM/LesHouches.in.TP5 +++ b/model_files/lowNMSSM/LesHouches.in.TP5 @@ -11,7 +11,7 @@ Block FlexibleSUSY 9 1 # Higgs 2-loop corrections O(alpha_b alpha_s) 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/lowNMSSM/LesHouches.in.TP6 b/model_files/lowNMSSM/LesHouches.in.TP6 index 1eec54480..292321272 100644 --- a/model_files/lowNMSSM/LesHouches.in.TP6 +++ b/model_files/lowNMSSM/LesHouches.in.TP6 @@ -11,7 +11,7 @@ Block FlexibleSUSY 9 1 # Higgs 2-loop corrections O(alpha_b alpha_s) 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP1 b/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP1 index 4bbd3dfac..fe6845140 100644 --- a/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP1 +++ b/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP1 @@ -11,7 +11,7 @@ Block FlexibleSUSY 9 1 # Higgs 2-loop corrections O(alpha_b alpha_s) 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP2 b/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP2 index a11b37c8b..e83e8b10d 100644 --- a/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP2 +++ b/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP2 @@ -11,7 +11,7 @@ Block FlexibleSUSY 9 1 # Higgs 2-loop corrections O(alpha_b alpha_s) 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP3 b/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP3 index 4d439db77..5752557cb 100644 --- a/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP3 +++ b/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP3 @@ -11,7 +11,7 @@ Block FlexibleSUSY 9 1 # Higgs 2-loop corrections O(alpha_b alpha_s) 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP4 b/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP4 index b3e3e90b0..c783d4de1 100644 --- a/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP4 +++ b/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP4 @@ -11,7 +11,7 @@ Block FlexibleSUSY 9 1 # Higgs 2-loop corrections O(alpha_b alpha_s) 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP5 b/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP5 index 2bc66f7f5..f5df62e9e 100644 --- a/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP5 +++ b/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP5 @@ -11,7 +11,7 @@ Block FlexibleSUSY 9 1 # Higgs 2-loop corrections O(alpha_b alpha_s) 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP6 b/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP6 index f3fc2a558..25dd0b4d7 100644 --- a/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP6 +++ b/model_files/lowNMSSMTanBetaAtMZ/LesHouches.in.TP6 @@ -11,7 +11,7 @@ Block FlexibleSUSY 9 1 # Higgs 2-loop corrections O(alpha_b alpha_s) 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/model_files/munuSSM/LesHouches.in.munuSSM b/model_files/munuSSM/LesHouches.in.munuSSM index bf3bfff07..523b02b40 100644 --- a/model_files/munuSSM/LesHouches.in.munuSSM +++ b/model_files/munuSSM/LesHouches.in.munuSSM @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/test/test_CMSSMCPV_wrong_higgs_state.in.spc b/test/test_CMSSMCPV_wrong_higgs_state.in.spc index 657c936fc..613334b81 100644 --- a/test/test_CMSSMCPV_wrong_higgs_state.in.spc +++ b/test/test_CMSSMCPV_wrong_higgs_state.in.spc @@ -18,7 +18,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/test/test_CMSSM_benchmark.in.spc.in b/test/test_CMSSM_benchmark.in.spc.in index d259f89aa..9f0acd15f 100644 --- a/test/test_CMSSM_benchmark.in.spc.in +++ b/test/test_CMSSM_benchmark.in.spc.in @@ -28,7 +28,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) Block SPhenoInput # SPheno specific input 1 -1 # error level 2 1 # SPA conventions diff --git a/test/test_CMSSM_gluino.spc.in b/test/test_CMSSM_gluino.spc.in index 4efdc9a3d..07d8168e0 100644 --- a/test/test_CMSSM_gluino.spc.in +++ b/test/test_CMSSM_gluino.spc.in @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/test/test_CMSSM_slha_doubled_blocks.spc.in b/test/test_CMSSM_slha_doubled_blocks.spc.in index 42c38794d..c7a849adc 100644 --- a/test/test_CMSSM_slha_doubled_blocks.spc.in +++ b/test/test_CMSSM_slha_doubled_blocks.spc.in @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/test/test_CMSSM_slha_output.in.spc b/test/test_CMSSM_slha_output.in.spc index 883c90188..cf81920dc 100644 --- a/test/test_CMSSM_slha_output.in.spc +++ b/test/test_CMSSM_slha_output.in.spc @@ -12,7 +12,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) Block SOFTSUSY # SOFTSUSY specific inputs 1 1.000000000e-04 # tolerance 2 2 # up-quark mixing (=1) or down (=2) diff --git a/test/test_E6SSM_nan.in.spc b/test/test_E6SSM_nan.in.spc index 00182f04b..8db93d8d2 100644 --- a/test/test_E6SSM_nan.in.spc +++ b/test/test_E6SSM_nan.in.spc @@ -18,7 +18,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/test/test_HSSUSY_SUSYHD.sh b/test/test_HSSUSY_SUSYHD.sh index abb402bea..69a196a2f 100755 --- a/test/test_HSSUSY_SUSYHD.sh +++ b/test/test_HSSUSY_SUSYHD.sh @@ -52,7 +52,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) Block SMINPUTS # Standard Model inputs 1 1.279440000e+02 # alpha^(-1) SM MSbar(MZ) 2 1.166380000e-05 # G_Fermi diff --git a/test/test_HSSUSY_SUSYHD_msq_m3_degenerate.in.spc b/test/test_HSSUSY_SUSYHD_msq_m3_degenerate.in.spc index eafe84721..c3f6509a4 100644 --- a/test/test_HSSUSY_SUSYHD_msq_m3_degenerate.in.spc +++ b/test/test_HSSUSY_SUSYHD_msq_m3_degenerate.in.spc @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) Block SMINPUTS # Standard Model inputs 1 1.279440000e+02 # alpha^(-1) SM MSbar(MZ) 2 1.166380000e-05 # G_Fermi diff --git a/test/test_HSSUSY_SUSYHD_msq_msu_m3_degenerate.in.spc b/test/test_HSSUSY_SUSYHD_msq_msu_m3_degenerate.in.spc index e2cc70ca7..007591cb5 100644 --- a/test/test_HSSUSY_SUSYHD_msq_msu_m3_degenerate.in.spc +++ b/test/test_HSSUSY_SUSYHD_msq_msu_m3_degenerate.in.spc @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) Block SMINPUTS # Standard Model inputs 1 1.279440000e+02 # alpha^(-1) SM MSbar(MZ) 2 1.166380000e-05 # G_Fermi diff --git a/test/test_HSSUSY_SUSYHD_msq_msu_m3_msusy_degenerate.in.spc b/test/test_HSSUSY_SUSYHD_msq_msu_m3_msusy_degenerate.in.spc index 4713f525f..4713372f1 100644 --- a/test/test_HSSUSY_SUSYHD_msq_msu_m3_msusy_degenerate.in.spc +++ b/test/test_HSSUSY_SUSYHD_msq_msu_m3_msusy_degenerate.in.spc @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) Block SMINPUTS # Standard Model inputs 1 1.279440000e+02 # alpha^(-1) SM MSbar(MZ) 2 1.166380000e-05 # G_Fermi diff --git a/test/test_HSSUSY_SUSYHD_msu_m3_degenerate.in.spc b/test/test_HSSUSY_SUSYHD_msu_m3_degenerate.in.spc index bf9d5d5c4..8c625fdb7 100644 --- a/test/test_HSSUSY_SUSYHD_msu_m3_degenerate.in.spc +++ b/test/test_HSSUSY_SUSYHD_msu_m3_degenerate.in.spc @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) Block SMINPUTS # Standard Model inputs 1 1.279440000e+02 # alpha^(-1) SM MSbar(MZ) 2 1.166380000e-05 # G_Fermi diff --git a/test/test_HSSUSY_SUSYHD_nondegenerate.in.spc b/test/test_HSSUSY_SUSYHD_nondegenerate.in.spc index 661d0cfa0..5ca2838cd 100644 --- a/test/test_HSSUSY_SUSYHD_nondegenerate.in.spc +++ b/test/test_HSSUSY_SUSYHD_nondegenerate.in.spc @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) Block SMINPUTS # Standard Model inputs 1 1.279440000e+02 # alpha^(-1) SM MSbar(MZ) 2 1.166380000e-05 # G_Fermi diff --git a/test/test_NMSSM_benchmark.in.spc.in b/test/test_NMSSM_benchmark.in.spc.in index 04893babc..996aafbc9 100644 --- a/test/test_NMSSM_benchmark.in.spc.in +++ b/test/test_NMSSM_benchmark.in.spc.in @@ -29,7 +29,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) Block SPhenoInput # SPheno specific input 1 -1 # error level 2 1 # SPA conventions diff --git a/test/test_NMSSM_slha_output.in.spc b/test/test_NMSSM_slha_output.in.spc index 244fa8145..75920dbe8 100644 --- a/test/test_NMSSM_slha_output.in.spc +++ b/test/test_NMSSM_slha_output.in.spc @@ -12,7 +12,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) Block SOFTSUSY # SOFTSUSY specific inputs 1 1.000000000e-04 # tolerance 2 2 # up-quark mixing (=1) or down (=2) diff --git a/test/test_ReadSLHA.m b/test/test_ReadSLHA.m index 4981e419a..e620b8ef9 100644 --- a/test/test_ReadSLHA.m +++ b/test/test_ReadSLHA.m @@ -18,7 +18,7 @@ 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 0 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses diff --git a/test/test_SM_0L_RGEs.in.spc b/test/test_SM_0L_RGEs.in.spc index 670ff84c7..c1b9e8f17 100644 --- a/test/test_SM_0L_RGEs.in.spc +++ b/test/test_SM_0L_RGEs.in.spc @@ -14,7 +14,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 0 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.000000000e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, ...) 16 0 # force positive majorana masses From 65de2dfe39f1b26697dc934ea6a358d0dc79e6e5 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Sat, 13 Aug 2016 13:09:07 +0200 Subject: [PATCH 63/64] update documentation --- doc/slha_input.dox | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/slha_input.dox b/doc/slha_input.dox index 183e1b642..77f81df49 100644 --- a/doc/slha_input.dox +++ b/doc/slha_input.dox @@ -23,7 +23,7 @@ Block FlexibleSUSY 10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2) 11 1 # Higgs 2-loop corrections O(alpha_tau^2) 12 0 # force output - 13 1 # Top quark 2-loop corrections QCD + 13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L) 14 1.0e-11 # beta-function zero threshold 15 0 # calculate observables (a_muon, effective couplings) 16 0 # force positive majorana masses @@ -52,7 +52,7 @@ index | description | possible values | de 10 | higgs 2-loop correction O(at at) | 0, 1 | 1 (= enabled) 11 | higgs 2-loop correction O(atau atau) | 0, 1 | 1 (= enabled) 12 | force output | 0 (no) or 1 (yes) | 0 (= no) -13 | 2-loop top pole mass QCD corrections | 0, 1 | 1 (= enabled) +13 | top quark pole QCD corrections | 0 (1L), 1 (2L), 2 (3L) | 1 (= 2L QCD) 14 | beta function zero threshold | any positive double | 1.0e-11 15 | calculate observables | 0 (no) or 1 (yes) | 0 (= no) 16 | force positive Majorana masses | 0 (no) or 1 (yes) | 0 (= no) From dc6bd157491a6ed6abbf6d2f9173c2b47ae9b849 Mon Sep 17 00:00:00 2001 From: Alexander Voigt Date: Sat, 13 Aug 2016 13:09:15 +0200 Subject: [PATCH 64/64] update ChangeLog --- ChangeLog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ChangeLog b/ChangeLog index 09730f03c..e4d110e6b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,6 +12,16 @@ Flexiblesusy-1.5.2 [not released yet] {\[Lambda], BETA[g1] + BETA[g2] + BETA[1,Yu][3,3]} }; + * Feature (commit 5e0bca1): Allow user to add 3-loop QCD corrections + of [arxiv:hep-ph/9912391] when calculating the top pole mass in + non-SUSY models. The 3-loop QCD corrections are added if the flag + FlexibleSUSY[13] is set to 2 and the pole mass loop order, + FlexibleSUSY[4], is set to a value > 2. + + FlexibleSUSY[13] = 0 and FlexibleSUSY[4] > 0: 1L QCD correction + FlexibleSUSY[13] = 1 and FlexibleSUSY[4] > 1: 2L QCD correction + FlexibleSUSY[13] = 2 and FlexibleSUSY[4] > 2: 3L QCD correction + * Bugfix (commit a5342eb): Avoid non-portable use of sed in createmodel. This fixes `make install-src' on Mac.