diff --git a/README.md b/README.md index 642bc51..d9463ff 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ can be used in conjunction with other programs for [many different particle physics calculations](https://arxiv.org/abs/0805.2088). SOFTSUSY now has a mode with 3 loop RGEs and some 2-loop threshold correction and 2-loop SUSY QCD corrections to gluino and squark pole masses. SOFTSUSY *now computes decay branching ratios for the MSSM and NMSSM*. It also ships with (and links to) Himalaya-1.0 for three-loop corrections to mh0. ## Download -* SOFTSUSY-4.1.20 (??/8/23): Fixed SLHA output which was giving the wrong RPV inputs. Also switched MSUSY scale RPV BC on in rpvHouchesInput: this gives lighter neutrinos. +* SOFTSUSY-4.1.20 (??/8/23): Fixed SLHA output which was giving the wrong RPV inputs. SOFTSUSY-specific SLHA input options given automatically printed out now in SLHA output. * SOFTSUSY-4.1.19 (16/8/23): improved 2/3 body neutralino/chargino decays. Previously, there were occasionally numerical problems yielding junk for a (very heavy) RH sneutrino contribution. The RH sneutrino parts have now been explicitly decoupled. Thanks to S Kraml and T Pascal for reporting the bug. * SOFTSUSY-4.1.18 (25/7/23): improved 2/3 body neutralino decays. Occasionally, SOFTSUSY would find neutralino2 to be stable when in fact it really had 3 body decays. This occured when the decay of the running mass of the Z would allow 2 body decays but not the pole mass. Thanks to S Kraml and T Pascal for reporting the bug. * SOFTSUSY-4.1.17 (2/2/23): improved documentation for github diff --git a/doc/neutManual.pdf b/doc/neutManual.pdf index da6491c..5fe6586 100644 Binary files a/doc/neutManual.pdf and b/doc/neutManual.pdf differ diff --git a/doc/rpcManual.pdf b/doc/rpcManual.pdf index f97ecb6..d072a3e 100644 Binary files a/doc/rpcManual.pdf and b/doc/rpcManual.pdf differ diff --git a/doc/rpvManual.pdf b/doc/rpvManual.pdf index 60758b0..cdf0b75 100644 Binary files a/doc/rpvManual.pdf and b/doc/rpvManual.pdf differ diff --git a/inOutFiles/lesHouchesInput b/inOutFiles/lesHouchesInput index 8af8d3e..8495a7f 100644 --- a/inOutFiles/lesHouchesInput +++ b/inOutFiles/lesHouchesInput @@ -31,7 +31,7 @@ Block SOFTSUSY # Optional SOFTSUSY-specific parameters 13 0.000000000e+00 # Set a tachyonic A^0 to zero mass 19 1.000000000e+00 # Include 3-loop SUSY RGEs 20 0.000000000e+00 # Include 2-loop g/Yuk corrections: 31 for all - 21 1.000000000e+00 # Calculate uncertainties in Higgs mass prediction + 21 1.000000000e+00 # Calculate uncertainties in Higgs mass prediction # 22 1.000000000e+00 # Include 2-loop sparticle mass thresholds # 23 0.000000000e+00 # No expansion of 2-loop gluino terms # 24 1.000000000e-06 # If decay BR is below this number, don't output diff --git a/inOutFiles/lesHouchesOutput b/inOutFiles/lesHouchesOutput index fe2cbc8..dd58fd9 100644 --- a/inOutFiles/lesHouchesOutput +++ b/inOutFiles/lesHouchesOutput @@ -4,6 +4,21 @@ Block SPINFO # Program information 1 SOFTSUSY # spectrum calculator 2 4.1.20 # version number +Block SOFTSUSY # SOFTSUSY specific SLHA options + 0 1.000000000e+00 # Calculate decays in output (only for RPC (N)MSSM) + 1 1.000000000e-03 # Numerical precision: suggested range 10^(-3...-6) + 2 0.000000000e+00 # Quark mixing parameter: see manual + 3 0.000000000e+00 # Additional verbose output? + 4 1.000000000e+00 # Change electroweak symmetry breaking scale? + 6 1.000000000e-04 # Numerical precision + 7 2.000000000e+00 # Number of loops in Higgs mass computation + 10 0.000000000e+00 # Force it to SLHA***1*** output? + 11 1.000000000e+19 # Gravitino mass + 12 0.000000000e+00 # Print spectrum even when point disallowed + 13 0.000000000e+00 # Set a tachyonic A^0 to zero mass + 19 1.000000000e+00 # Include 3-loop SUSY RGEs + 20 0.000000000e+00 # Include 2-loop g/Yuk corrections: 31 for all + 21 1.000000000e+00 # Calculate uncertainties in Higgs mass prediction Block MODSEL # Select model 1 1 # sugra Block SMINPUTS # Standard Model inputs diff --git a/inOutFiles/neutOutputTest b/inOutFiles/neutOutputTest index 9d0fff8..f9d086d 100644 --- a/inOutFiles/neutOutputTest +++ b/inOutFiles/neutOutputTest @@ -7,6 +7,7 @@ Block SPINFO # Program information 1 SOFTSUSY # spectrum calculator 2 4.1.20 # version number +Block SOFTSUSY # SOFTSUSY specific SLHA options Block MODSEL # Select model 1 1 # sugra 4 1 # R-parity violating diff --git a/inOutFiles/nmssmSLHAZ3Output b/inOutFiles/nmssmSLHAZ3Output index b7fcce8..47294cc 100644 --- a/inOutFiles/nmssmSLHAZ3Output +++ b/inOutFiles/nmssmSLHAZ3Output @@ -5,6 +5,18 @@ Block SPINFO # Program information 1 SOFTSUSY # spectrum calculator 2 4.1.20 # version number +Block SOFTSUSY # SOFTSUSY specific SLHA options + 0 1.000000000e+00 # Calculate decays in output (only for RPC (N)MSSM) + 1 1.000000000e-04 # tolerance + 2 2.000000000e+00 # up-quark mixing (=1) or down (=2) + 5 1.000000000E+00 # 2-loop running + 3 0.000000000E+00 # printout + 15 1.000000000E+00 # NMSSMTools compatible output (default: 0) + 16 0.000000000E+00 # Call micrOmegas (default: 0 = no, + 17 1.000000000E+00 # Sparticle decays via NMSDECAY (default: 0) + 18 0.000000000E+00 # use soft Higgs masses as EWSB output + 24 1.000000000e-06 # If decay BR is below this number, don't output + 25 1.000000000e+00 # If set to 0, don't calculate 3-body decays (1=default) Block MODSEL # Select model 1 1 # sugra 3 1 # NMSSM diff --git a/inOutFiles/nmssmSLHAnoZ3Output b/inOutFiles/nmssmSLHAnoZ3Output index fb0cb4a..37a50d3 100644 --- a/inOutFiles/nmssmSLHAnoZ3Output +++ b/inOutFiles/nmssmSLHAnoZ3Output @@ -5,6 +5,18 @@ Block SPINFO # Program information 1 SOFTSUSY # spectrum calculator 2 4.1.20 # version number +Block SOFTSUSY # SOFTSUSY specific SLHA options + 0 1.000000000e+00 # Calculate decays in output (only for RPC (N)MSSM) + 1 1.000000000e-04 # tolerance + 2 2.000000000e+00 # up-quark mixing (=1) or down (=2) + 5 1.000000000E+00 # 2-loop running + 3 0.000000000E+00 # printout + 15 1.000000000E+00 # NMSSMTools compatible output (default: 0) + 16 0.000000000E+00 # Call micrOmegas (default: 0 = no, + 17 0.000000000E+00 # Sparticle decays via NMSDECAY (default: 0) + 18 0.000000000E+00 # use soft Higgs masses as EWSB output + 24 1.000000000e-06 # If decay BR is below this number, don't output + 25 1.000000000e+00 # If set to 0, don't calculate 3-body decays (1=default) Block MODSEL # Select model 1 1 # sugra 3 1 # NMSSM diff --git a/inOutFiles/rpvHouchesOutput b/inOutFiles/rpvHouchesOutput index 74fea22..6641a05 100644 --- a/inOutFiles/rpvHouchesOutput +++ b/inOutFiles/rpvHouchesOutput @@ -7,6 +7,11 @@ Block SPINFO # Program information 1 SOFTSUSY # spectrum calculator 2 4.1.20 # version number +Block SOFTSUSY # SOFTSUSY specific SLHA options + 1 1.000000000e-03 + 2 2.000000000e+00 # quark mixing: none (=0), up (=1) or down (=2) + 8 0.000000000e+00 # Switch MSUSY scale RPV boundary condition on? + 9 0.000000000e+00 # Use normal hierarchy(=0.0) or inverted (=1.0) Block MODSEL # Select model 1 1 # sugra 4 1 # R-parity violating diff --git a/inOutFiles/slha2Output b/inOutFiles/slha2Output index 568bb0c..77eb592 100644 --- a/inOutFiles/slha2Output +++ b/inOutFiles/slha2Output @@ -3,6 +3,11 @@ Block SPINFO # Program information 1 SOFTSUSY # spectrum calculator 2 4.1.20 # version number +Block SOFTSUSY # SOFTSUSY specific SLHA options + 1 1.000000000e-03 # tolerance + 2 2.000000000e+00 # up-quark mixing (=1) or down (=2) + 5 1.000000000E+00 # 2-loop running + 3 0.000000000E+00 # printout Block MODSEL # Select model 1 1 # sugra 6 1 # flavour violating MSSM diff --git a/src/nmssmsoftsusy.cpp b/src/nmssmsoftsusy.cpp index 22afd07..ac7737a 100644 --- a/src/nmssmsoftsusy.cpp +++ b/src/nmssmsoftsusy.cpp @@ -9512,6 +9512,7 @@ namespace { bool GUTsVev = displayGUTsVev(); int MICROMEGAS = displayMICROMEGAS(); int NMSDECAY = displayNMSDECAY(); + string sopts = displaySoftsusyOpts(); setSoftsusy(empty); /// Always starts from an empty object /// These are things that are re-written by the new initialisation @@ -9527,6 +9528,7 @@ namespace { setGUTsVev(GUTsVev); setMICROMEGAS(MICROMEGAS); setNMSDECAY(NMSDECAY); + setSoftsusyOpts(sopts); double mz = displayMz(); if (mxGuess > 0.0) diff --git a/src/rpvneut.cpp b/src/rpvneut.cpp index 254e25f..a26d12c 100644 --- a/src/rpvneut.cpp +++ b/src/rpvneut.cpp @@ -2793,6 +2793,8 @@ void RpvNeutrino::spinfoSLHA(ostream & out) { << displayFracDiff() << endl; if (displayProblem().testSeriousProblem()) out << " 4 Point invalid: " << displayProblem() << endl; + out << "Block SOFTSUSY # SOFTSUSY specific SLHA options" << endl; + out << displaySoftsusyOpts(); } void RpvNeutrino::hmixSLHA(ostream & out) { diff --git a/src/softpoint.cpp b/src/softpoint.cpp index ab259ba..e2614a7 100644 --- a/src/softpoint.cpp +++ b/src/softpoint.cpp @@ -1132,6 +1132,7 @@ int main(int argc, char *argv[]) { } } else if (block == "SOFTSUSY") { + r->setSoftsusyOpts(r->displaySoftsusyOpts() + line + "\n"); int i; double d; kk >> i >> d; switch(i) { case 0: if (int(d) > 0) calcDecays = true; @@ -1418,10 +1419,13 @@ int main(int argc, char *argv[]) { } } - if (RPVflag) { + if (RPVflag) { kw.setNumRpcBcs(pars.displayEnd()); kw.rpvDisplay(pars); + string sopts = r->displaySoftsusyOpts(); + /// Bug in next line - temporarily fixed by following line kw.setFlavourSoftsusy(k); + kw.setSoftsusyOpts(sopts); r = &kw; if (boundaryCondition == &sugraBcs) @@ -1464,6 +1468,8 @@ int main(int argc, char *argv[]) { if (useThreeLoopRge) { r->setLoops(3); k.setLoops(3); nmssm.setLoops(3); } + k.setSoftsusyOpts(r->displaySoftsusyOpts()); + nmssm.setSoftsusyOpts(r->displaySoftsusyOpts()); /// Run to scale at which MSUSY and QEDxQCD are matched: by default it's /// mt for MSSM, MZ for NMSSM diff --git a/src/softsusy.cpp b/src/softsusy.cpp index 6f29745..17ab45f 100644 --- a/src/softsusy.cpp +++ b/src/softsusy.cpp @@ -58,6 +58,7 @@ const MssmSoftsusy& MssmSoftsusy::operator=(const MssmSoftsusy& s) { t1OV1Ms1loop = s.displayTadpole1Ms1loop(); t2OV2Ms1loop = s.displayTadpole2Ms1loop(); qewsb = s.displayQewsb(); + softsusyOpts = s.softsusyOpts; mxBC = s.displayMxBC(); included_thresholds = s.included_thresholds; @@ -71,7 +72,8 @@ const MssmSoftsusy& MssmSoftsusy::operator=(const MssmSoftsusy& s) { mw(0.0), dataSet(), fracDiff(1.), setTbAtMX(false), altEwsb(false), altMt(false), altAlphaS(false), altAlphaEm(false), predMzSq(0.), t1OV1Ms(0.), t2OV2Ms(0.), - t1OV1Ms1loop(0.), t2OV2Ms1loop(0.), qewsb(1.), mxBC(mxDefault) + t1OV1Ms1loop(0.), t2OV2Ms1loop(0.), qewsb(1.), softsusyOpts(), + mxBC(mxDefault) { setPars(110); setMu(0.0); @@ -101,6 +103,7 @@ const MssmSoftsusy& MssmSoftsusy::operator=(const MssmSoftsusy& s) { t1OV1Ms(s.displayTadpole1Ms()), t2OV2Ms(s.displayTadpole2Ms()), t1OV1Ms1loop(s.displayTadpole1Ms1loop()), t2OV2Ms1loop(s.displayTadpole2Ms1loop()), qewsb(s.displayQewsb()), + softsusyOpts(s.displaySoftsusyOpts()), mxBC(s.displayMxBC()) { setPars(110); @@ -116,7 +119,7 @@ MssmSoftsusy::MssmSoftsusy(const MssmSusyRGE &s) setTbAtMX(false), altEwsb(false), altMt(false), altAlphaS(false), altAlphaEm(false), predMzSq(0.), t1OV1Ms(0.), t2OV2Ms(0.), t1OV1Ms1loop(0.), t2OV2Ms1loop(0.), - qewsb(1.0), mxBC(mxDefault) { + qewsb(1.0), softsusyOpts(), mxBC(mxDefault) { setPars(110); setMu(s.displayMu()); @@ -141,7 +144,7 @@ MssmSoftsusy::MssmSoftsusy(const MssmSusyRGE &s) altEwsb(false), altMt(false), altAlphaS(false), altAlphaEm(false), predMzSq(0.), t1OV1Ms(0.), t2OV2Ms(0.), t1OV1Ms1loop(0.), t2OV2Ms1loop(0.), - qewsb(1.0), mxBC(mxDefault){ + qewsb(1.0), softsusyOpts(), mxBC(mxDefault){ setHvev(hv); setPars(110); setMu(mu); @@ -7383,6 +7386,7 @@ void MssmSoftsusy::fixedPointIteration double maCondFirst = displayMaCond(); double qqewsb = displayQewsb(); int lpnum = displayLoops(); + string sopts = displaySoftsusyOpts(); int enabled_thresholds = included_thresholds; setSoftsusy(empty); /// Always starts from an empty object @@ -7398,6 +7402,7 @@ void MssmSoftsusy::fixedPointIteration setMuCond(muCondFirst); setMaCond(maCondFirst); setQewsb(qqewsb); + setSoftsusyOpts(sopts); double mz = displayMz(); @@ -10012,6 +10017,8 @@ void MssmSoftsusy::spinfoSLHA(ostream & out) { } if (displayProblem().testSeriousProblem()) out << " 4 " << displayProblem() << " # Point invalid" << endl; + out << "Block SOFTSUSY # SOFTSUSY specific SLHA options" << endl; + out << displaySoftsusyOpts(); } void MssmSoftsusy::softsusySLHA(ostream & out) { diff --git a/src/softsusy.h b/src/softsusy.h index 47ff601..4c60783 100644 --- a/src/softsusy.h +++ b/src/softsusy.h @@ -103,7 +103,9 @@ namespace softsusy { /// there are two possible conventions: if QEWSB > MZ, its value is assumed /// in GeV and used as a constant MSUSY. Otherwise, it MULTIPLIES the usual /// MSUSY value, of root(mstop1 mstop2) - double qewsb; + double qewsb; + /// SOFTSUSY + string softsusyOpts; protected: void setT1OV1Ms(double t1) { t1OV1Ms = t1; } @@ -169,8 +171,9 @@ namespace softsusy { /// Return a trilinear element in "SUGRA style" double displaySoftA(trilinears, int, int) const; - /// Displays iteration accuracy attained - double displayFracDiff() const { return fracDiff; }; + /// Displays iteration accuracy attained + string displaySoftsusyOpts() const { return softsusyOpts; } + double displayFracDiff() const { return fracDiff; }; double displayMinpot() const; ///< Returns minimum of Higgs potential double displayMsusy() const; ///< Returns Higgs minimisation scale double displayMw() const; ///< Returns predicted pole MW @@ -242,7 +245,9 @@ namespace softsusy { void flagProblemThrown(bool a) { problem.problemThrown = a; } /// Sets all problem flags void setProblem(const sProblem a) { problem = a; } - + + /// Sets SOFTSUSY-specific option string + void setSoftsusyOpts(const string & s) { softsusyOpts = s; } /// Sets whole object equal to another void setSoftsusy(const MssmSoftsusy & s) { *this = s; }; /// Sets low energy Standard Model fermion mass and gauge coupling data