-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathmain.cpp
More file actions
99 lines (79 loc) · 3.44 KB
/
main.cpp
File metadata and controls
99 lines (79 loc) · 3.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/**
Project: SOFTSUSY
File: main.cpp
Author: Ben Allanach
Manual: B.C. Allanach, hep-ph/0104145, Comp. Phys. Comm. 143 (2002) 305
B.C. Allanach, M.A. Bernhardt, arXiv:0903.1805, Comp. Phys.
Commun. 181 (2010) 232-245
Webpage: http://allanach.home.cern.ch/allanach/softsusy.html
Description: main calling program example: performs a scan of tan beta
(starting at CMSSM10.1.1) and prints out Higgs masses as a result in
the format
<tan beta> <mh0> <mA0> <mH0> <mH+/->
*/
#include "main.h"
#include "nmssmsoftsusy.h"
#include "decays.h"
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
using namespace softsusy;
int main() {
/// Sets up exception handling
signal(SIGFPE, FPE_ExceptionHandler);
try {
/// Sets format of output: 6 decimal places
outputCharacteristics(6);
cout << "# SOFTSUSY" << PACKAGE_VERSION
<< " test program, Ben Allanach\n";
cout << "# If you use SOFTSUSY, please refer to B.C. Allanach,\n";
cout << "# Comput. Phys. Commun. 143 (2002) 305, hep-ph/0104145\n";
/// Parameters used: CMSSM parameters
double m12 = 500., a0 = 0., mGutGuess = 2.0e16, tanb = 10.0, m0 = 125.;
int sgnMu = 1; ///< sign of mu parameter
int numPoints = 10; ///< number of scan points
QedQcd oneset; ///< See "lowe.h" for default definitions parameters
/// most important Standard Model inputs: you may change these and recompile
double alphasMZ = 0.1187, mtop = 173.5, mbmb = 4.18;
oneset.setAlphaMz(ALPHAS, alphasMZ);
oneset.setPoleMt(mtop);
oneset.setMbMb(mbmb);
oneset.toMz(); ///< Runs SM fermion masses to MZ
oneset.runto(oneset.displayPoleMt()); ///< Run them to mt for matching
/// Print out the SM data being used, as well as quark mixing assumption and
/// the numerical accuracy of the solution
cout << "# Low energy data in SOFTSUSY: mixing=0" << " TOLERANCE="
<< TOLERANCE << endl;
/// Print out header line
cout << "# tan beta mh mA mH0 mH+- BN\n";
int i;
/// Set limits of tan beta scan
double startTb = 2., endTb = 50.;
/// Cycle through different points in the scan
for (i = 0; i <= numPoints; i++) {
tanb = (endTb - startTb) / static_cast<double>(numPoints) *
static_cast<double>(i) + startTb; /// set tan beta ready for the scan.
/// Preparation for calculation: set up object and input parameters
MssmSoftsusy r;
DoubleVector pars(3);
pars(1) = m0; pars(2) = m12; pars(3) = a0;
bool uni = true; ///< MGUT defined by g1(MGUT)=g2(MGUT)
/// Calculate the spectrum
r.lowOrg(sugraBcs, mGutGuess, pars, sgnMu, tanb, oneset, uni);
/// check the point in question is problem free: if so print the output
if (!r.displayProblem().test())
cout << tanb << " " << r.displayPhys().mh0(1) << " "
<< r.displayPhys().mA0(1) << " "
<< r.displayPhys().mh0(2) << " "
<< r.displayPhys().mHpm << " "
<< r.calcBayesianNaturalness() << endl;
else
/// print out what the problem(s) is(are)
cout << tanb << " " << r.displayProblem() << endl;
}
}
catch(const string & a) { cerr << a; return -1; }
catch(const char * a) { cerr << a; return -1; }
catch(...) { cerr << "Unknown type of exception caught.\n"; return -1; }
return 0;
}