Skip to content

Commit

Permalink
Replace MSSM by MSSMD5O in tower example
Browse files Browse the repository at this point in the history
In the lower model, the low-energy neutrino masses and mixing determine
WOp, the coefficient matrix of the dimension-5 operator.  At the
matching scale, the seesaw relation is used to fix Yv and Mv in the
upper model from WOp plus supplementary conditions on the structure of
Yv.
  • Loading branch information
jhyeon committed Sep 19, 2014
1 parent 46a2cc1 commit b4f1ada
Show file tree
Hide file tree
Showing 11 changed files with 448 additions and 275 deletions.
6 changes: 3 additions & 3 deletions config/Makefile.tower.in
Expand Up @@ -10,7 +10,7 @@ ENABLE_THREADS := @ENABLE_THREADS@

LIBEXT := @LIBEXT@

MODEL1 := MSSM
MODEL1 := MSSMD5O
MODEL2 := MSSMRHN

MODEL1DIR := $(ABSBASEDIR)/models/$(MODEL1)
Expand Down Expand Up @@ -68,8 +68,8 @@ endif

TOWER_SRC := \
run_tower.cpp \
MSSM_MSSMRHN_two_scale_matching.cpp \
MSSM_MSSMRHN_two_scale_initial_guesser.cpp
MSSMD5O_MSSMRHN_two_scale_matching.cpp \
MSSMD5O_MSSMRHN_two_scale_initial_guesser.cpp

TOWER_OBJ := \
$(patsubst %.cpp, %.o, $(filter %.cpp, $(TOWER_SRC))) \
Expand Down
34 changes: 14 additions & 20 deletions examples/tower/LesHouches.in.tower
Expand Up @@ -34,26 +34,20 @@ Block MINPAR # Input parameters
5 0 # Azero
Block EXTPAR # Input parameters
0 0 # unification scale (0 = automatic)
Block YvIN # neutrino Yukawas at MX
1 1 0.1568611 # Yv(1,1)
1 2 0.6400513 # Yv(1,2)
1 3 0.7521494 # Yv(1,3)
2 1 0.4663838 # Yv(2,1)
2 2 0.4936038 # Yv(2,2)
2 3 -0.5173031 # Yv(2,3)
3 1 0.6971391 # Yv(3,1)
3 2 -0.4287217 # Yv(3,2)
3 3 0.2194375 # Yv(3,3)
Block MvIN # heavy neutrino masses at MX
1 1 4.150000E+14 # Mv(1,1)
1 2 0.000000E+00 # Mv(1,2)
1 3 0.000000E+00 # Mv(1,3)
2 1 0.000000E+00 # Mv(2,1)
2 2 4.150000E+14 # Mv(2,2)
2 3 0.000000E+00 # Mv(2,3)
3 1 0.000000E+00 # Mv(3,1)
3 2 0.000000E+00 # Mv(3,2)
3 3 4.150000E+14 # Mv(3,3)
# specimen normal spectrum
1 5.0E-11 # mv1
2 5.07523E-11 # mv2
3 6.96419E-11 # mv3
# specimen inverted spectrum
# 1 6.90956E-11 # mv1
# 2 6.96419E-11 # mv2
# 3 5.0E-11 # mv3
4 0.586168 # ThetaV12
5 0.157512 # ThetaV13
6 0.705053 # ThetaV23
7 0.6 # YvDiag1
8 0.8 # YvDiag2
9 1.0 # YvDiag3
Block BMvIN # right-handed sneutrino bilinear terms
1 1 1.000000E+02 # BMv(1,1)
1 2 0.000000E+00 # BMv(1,2)
Expand Down
Expand Up @@ -16,13 +16,13 @@
// <http://www.gnu.org/licenses/>.
// ====================================================================

#ifndef MSSM_MSSMRHN_INITIAL_GUESSER_H
#define MSSM_MSSMRHN_INITIAL_GUESSER_H
#ifndef MSSMD5O_MSSMRHN_INITIAL_GUESSER_H
#define MSSMD5O_MSSMRHN_INITIAL_GUESSER_H

namespace flexiblesusy {

template <class T>
class MSSM_MSSMRHN_initial_guesser;
class MSSMD5O_MSSMRHN_initial_guesser;

} // namespace flexiblesusy

Expand Down
Expand Up @@ -16,13 +16,13 @@
// <http://www.gnu.org/licenses/>.
// ====================================================================

#ifndef MSSM_MSSMRHN_MATCHING_H
#define MSSM_MSSMRHN_MATCHING_H
#ifndef MSSMD5O_MSSMRHN_MATCHING_H
#define MSSMD5O_MSSMRHN_MATCHING_H

namespace flexiblesusy {

template <class T>
class MSSM_MSSMRHN_matching;
class MSSMD5O_MSSMRHN_matching;

} // namespace flexiblesusy

Expand Down
Expand Up @@ -16,26 +16,23 @@
// <http://www.gnu.org/licenses/>.
// ====================================================================

#ifndef MSSM_MSSMRHN_SPECTRUM_GENERATOR_H
#define MSSM_MSSMRHN_SPECTRUM_GENERATOR_H
#ifndef MSSMD5O_MSSMRHN_SPECTRUM_GENERATOR_H
#define MSSMD5O_MSSMRHN_SPECTRUM_GENERATOR_H

#include "MSSM_two_scale_model.hpp"
#include "MSSM_two_scale_high_scale_constraint.hpp"
#include "MSSM_two_scale_susy_scale_constraint.hpp"
#include "MSSM_two_scale_low_scale_constraint.hpp"
#include "MSSM_two_scale_convergence_tester.hpp"
#include "MSSM_utilities.hpp"
#include "MSSMD5O_two_scale_model.hpp"
#include "MSSMD5O_two_scale_susy_scale_constraint.hpp"
#include "MSSMD5O_two_scale_low_scale_constraint.hpp"
#include "MSSMD5O_two_scale_convergence_tester.hpp"
#include "MSSMD5O_utilities.hpp"

#include "MSSM_MSSMRHN_two_scale_matching.hpp"
#include "MSSMD5O_MSSMRHN_two_scale_matching.hpp"

#include "MSSMRHN_two_scale_model.hpp"
#include "MSSMRHN_two_scale_high_scale_constraint.hpp"
#include "MSSMRHN_two_scale_susy_scale_constraint.hpp"
#include "MSSMRHN_two_scale_low_scale_constraint.hpp"
#include "MSSMRHN_two_scale_convergence_tester.hpp"
#include "MSSMRHN_utilities.hpp"

#include "MSSM_MSSMRHN_two_scale_initial_guesser.hpp"
#include "MSSMD5O_MSSMRHN_two_scale_initial_guesser.hpp"

#include "coupling_monitor.hpp"
#include "error.hpp"
Expand All @@ -47,9 +44,9 @@
namespace flexiblesusy {

template <class T>
class MSSM_MSSMRHN_spectrum_generator {
class MSSMD5O_MSSMRHN_spectrum_generator {
public:
MSSM_MSSMRHN_spectrum_generator()
MSSMD5O_MSSMRHN_spectrum_generator()
: solver()
, model_1(), model_2()
, high_scale_constraint_2()
Expand All @@ -63,15 +60,15 @@ class MSSM_MSSMRHN_spectrum_generator {
, precision_goal(1.0e-4)
, max_iterations(0)
, calculate_sm_masses(false) {}
~MSSM_MSSMRHN_spectrum_generator() {}
~MSSMD5O_MSSMRHN_spectrum_generator() {}

double get_high_scale_2() const { return high_scale_2; }
double get_susy_scale_1() const { return susy_scale_1; }
double get_low_scale_1() const { return low_scale_1; }
double get_matching_scale() const { return matching_scale; }
const MSSM<T>& get_model_1() const { return model_1; }
const MSSMD5O<T>& get_model_1() const { return model_1; }
const MSSMRHN<T>& get_model_2() const { return model_2; }
const Problems<MSSM_info::NUMBER_OF_PARTICLES>& get_problems() const {
const Problems<MSSMD5O_info::NUMBER_OF_PARTICLES>& get_problems() const {
return model_1.get_problems();
}
int get_exit_code() const { return get_problems().have_serious_problem(); };
Expand All @@ -83,18 +80,18 @@ class MSSM_MSSMRHN_spectrum_generator {
void set_max_iterations(unsigned n) { max_iterations = n; }
void set_calculate_sm_masses(bool flag) { calculate_sm_masses = flag; }

void run(const QedQcd& oneset, const MSSM_input_parameters& input_1, const MSSMRHN_input_parameters& input_2);
void write_running_couplings_1(const std::string& filename = "MSSM_rge_running.dat") const;
void write_spectrum(const std::string& filename = "MSSM_spectrum.dat") const;
void run(const QedQcd& oneset, const MSSMD5O_input_parameters& input_1, const MSSMRHN_input_parameters& input_2);
void write_running_couplings_1(const std::string& filename = "MSSMD5O_rge_running.dat") const;
void write_spectrum(const std::string& filename = "MSSMD5O_spectrum.dat") const;

private:
RGFlow<T> solver;
MSSM<T> model_1;
MSSMD5O<T> model_1;
MSSMRHN<T> model_2;
MSSMRHN_high_scale_constraint<T> high_scale_constraint_2;
MSSM_susy_scale_constraint<T> susy_scale_constraint_1;
MSSM_low_scale_constraint<T> low_scale_constraint_1;
MSSM_MSSMRHN_matching<T> matching;
MSSMD5O_susy_scale_constraint<T> susy_scale_constraint_1;
MSSMD5O_low_scale_constraint<T> low_scale_constraint_1;
MSSMD5O_MSSMRHN_matching<T> matching;
double high_scale_2, susy_scale_1, low_scale_1;
double matching_scale;
double input_scale_2; ///< high-scale parameter input scale
Expand All @@ -116,9 +113,9 @@ class MSSM_MSSMRHN_spectrum_generator {
* @param input model input parameters
*/
template <class T>
void MSSM_MSSMRHN_spectrum_generator<T>::run
void MSSMD5O_MSSMRHN_spectrum_generator<T>::run
(const QedQcd& oneset,
const MSSM_input_parameters& input_1, const MSSMRHN_input_parameters& input_2)
const MSSMD5O_input_parameters& input_1, const MSSMRHN_input_parameters& input_2)
{
high_scale_constraint_2.clear();
susy_scale_constraint_1.clear();
Expand All @@ -127,7 +124,7 @@ void MSSM_MSSMRHN_spectrum_generator<T>::run
high_scale_constraint_2.set_input_parameters(input_2);
susy_scale_constraint_1.set_input_parameters(input_1);
low_scale_constraint_1.set_input_parameters(input_1);
matching.set_upper_input_parameters(input_2);
matching.set_lower_input_parameters(input_1);
high_scale_constraint_2.initialize();
susy_scale_constraint_1.initialize();
low_scale_constraint_1.initialize();
Expand All @@ -137,10 +134,8 @@ void MSSM_MSSMRHN_spectrum_generator<T>::run

std::vector<Constraint<T>*> upward_constraints_1;
upward_constraints_1.push_back(&low_scale_constraint_1);
// upward_constraints.push_back(&high_scale_constraint);

std::vector<Constraint<T>*> downward_constraints_1;
// downward_constraints.push_back(&high_scale_constraint);
downward_constraints_1.push_back(&susy_scale_constraint_1);
downward_constraints_1.push_back(&low_scale_constraint_1);

Expand All @@ -157,7 +152,7 @@ void MSSM_MSSMRHN_spectrum_generator<T>::run
model_2.clear();
model_2.set_input_parameters(input_2);

MSSM_convergence_tester<T> convergence_tester_1(&model_1, precision_goal);
MSSMD5O_convergence_tester<T> convergence_tester_1(&model_1, precision_goal);
MSSMRHN_convergence_tester<T> convergence_tester_2(&model_2, precision_goal);
if (max_iterations > 0) {
convergence_tester_1.set_max_iterations(max_iterations);
Expand All @@ -167,8 +162,8 @@ void MSSM_MSSMRHN_spectrum_generator<T>::run
convergence_tester.add_convergence_tester(&convergence_tester_1);
convergence_tester.add_convergence_tester(&convergence_tester_2);

MSSM_MSSMRHN_initial_guesser<T> initial_guesser
(&model_1, &model_2, input_2, oneset,
MSSMD5O_MSSMRHN_initial_guesser<T> initial_guesser
(&model_1, &model_2, input_1, oneset,
low_scale_constraint_1,
susy_scale_constraint_1,
high_scale_constraint_2,
Expand Down Expand Up @@ -221,13 +216,13 @@ void MSSM_MSSMRHN_spectrum_generator<T>::run
* @param filename name of output file
*/
template <class T>
void MSSM_MSSMRHN_spectrum_generator<T>::write_running_couplings_1(const std::string& filename) const
void MSSMD5O_MSSMRHN_spectrum_generator<T>::write_running_couplings_1(const std::string& filename) const
{
MSSM<T> tmp_model(model_1);
MSSMD5O<T> tmp_model(model_1);
tmp_model.run_to(low_scale_1);

MSSM_parameter_getter parameter_getter;
Coupling_monitor<MSSM<T>, MSSM_parameter_getter>
MSSMD5O_parameter_getter parameter_getter;
Coupling_monitor<MSSMD5O<T>, MSSMD5O_parameter_getter>
coupling_monitor(tmp_model, parameter_getter);

coupling_monitor.run(low_scale_1, matching_scale, 100, true);
Expand All @@ -240,9 +235,9 @@ void MSSM_MSSMRHN_spectrum_generator<T>::write_running_couplings_1(const std::st
* @param filename output file name
*/
template <class T>
void MSSM_MSSMRHN_spectrum_generator<T>::write_spectrum(const std::string& filename) const
void MSSMD5O_MSSMRHN_spectrum_generator<T>::write_spectrum(const std::string& filename) const
{
MSSM_spectrum_plotter plotter;
MSSMD5O_spectrum_plotter plotter;
plotter.extract_spectrum<T>(model_1);
plotter.write_to_file(filename);
}
Expand Down
Expand Up @@ -16,8 +16,8 @@
// <http://www.gnu.org/licenses/>.
// ====================================================================

#include "MSSM_MSSMRHN_two_scale_initial_guesser.hpp"
#include "MSSM_two_scale_model.hpp"
#include "MSSMD5O_MSSMRHN_two_scale_initial_guesser.hpp"
#include "MSSMD5O_two_scale_model.hpp"
#include "MSSMRHN_two_scale_model.hpp"
#include "lowe.h"
#include "error.hpp"
Expand All @@ -35,14 +35,14 @@ namespace flexiblesusy {
#define SM(p) Electroweak_constants::p
// #define MODEL model

MSSM_MSSMRHN_initial_guesser<Two_scale>::MSSM_MSSMRHN_initial_guesser(
MSSM<Two_scale>* model_1_, MSSMRHN<Two_scale>* model_2_,
const MSSMRHN_input_parameters& input_pars_,
MSSMD5O_MSSMRHN_initial_guesser<Two_scale>::MSSMD5O_MSSMRHN_initial_guesser(
MSSMD5O<Two_scale>* model_1_, MSSMRHN<Two_scale>* model_2_,
const MSSMD5O_input_parameters& input_pars_,
const QedQcd& oneset_,
const MSSM_low_scale_constraint<Two_scale>& low_constraint_1_,
const MSSM_susy_scale_constraint<Two_scale>& susy_constraint_1_,
const MSSMD5O_low_scale_constraint<Two_scale>& low_constraint_1_,
const MSSMD5O_susy_scale_constraint<Two_scale>& susy_constraint_1_,
const MSSMRHN_high_scale_constraint<Two_scale>& high_constraint_2_,
const MSSM_MSSMRHN_matching<Two_scale>& matching_
const MSSMD5O_MSSMRHN_matching<Two_scale>& matching_
)
: Initial_guesser<Two_scale>()
, model_1(model_1_), model_2(model_2_)
Expand All @@ -53,20 +53,20 @@ MSSM_MSSMRHN_initial_guesser<Two_scale>::MSSM_MSSMRHN_initial_guesser(
, high_constraint_2(high_constraint_2_)
, matching(matching_)
{
assert(model_1 && model_2 && "MSSM_MSSMRHN_initial_guesser: Error: pointers to models must not be zero");
assert(model_1 && model_2 && "MSSMD5O_MSSMRHN_initial_guesser: Error: pointers to models must not be zero");
}

MSSM_MSSMRHN_initial_guesser<Two_scale>::~MSSM_MSSMRHN_initial_guesser()
MSSMD5O_MSSMRHN_initial_guesser<Two_scale>::~MSSMD5O_MSSMRHN_initial_guesser()
{
}

void MSSM_MSSMRHN_initial_guesser<Two_scale>::guess()
void MSSMD5O_MSSMRHN_initial_guesser<Two_scale>::guess()
{
guess_susy_parameters();
guess_soft_parameters();
}

void MSSM_MSSMRHN_initial_guesser<Two_scale>::guess_susy_parameters()
void MSSMD5O_MSSMRHN_initial_guesser<Two_scale>::guess_susy_parameters()
{
QedQcd leAtMt(oneset);
const double MZ = Electroweak_constants::MZ;
Expand Down Expand Up @@ -113,9 +113,59 @@ void MSSM_MSSMRHN_initial_guesser<Two_scale>::guess_susy_parameters()
model_1->set_Yu(new_Yu);
model_1->set_Yd(new_Yd);
model_1->set_Ye(new_Ye);

const auto mv1 = INPUTPARAMETER(mv1);
const auto mv2 = INPUTPARAMETER(mv2);
const auto mv3 = INPUTPARAMETER(mv3);
const auto ThetaV12 = INPUTPARAMETER(ThetaV12);
const auto ThetaV13 = INPUTPARAMETER(ThetaV13);
const auto ThetaV23 = INPUTPARAMETER(ThetaV23);

model_1->set_WOp(0, 0, (2*(mv1*Sqr(Cos(ThetaV12))*Sqr(Cos(ThetaV13)) + mv2*Sqr
(Cos(ThetaV13))*Sqr(Sin(ThetaV12)) + mv3*Sqr(Sin(ThetaV13))))/Sqr(vu));
model_1->set_WOp(0, 1, (2*(mv3*Cos(ThetaV13)*Sin(ThetaV13)*Sin(ThetaV23) + mv1
*Cos(ThetaV12)*Cos(ThetaV13)*(-(Cos(ThetaV23)*Sin(ThetaV12)) - Cos(ThetaV12)
*Sin(ThetaV13)*Sin(ThetaV23)) + mv2*Cos(ThetaV13)*Sin(ThetaV12)*(Cos(
ThetaV12)*Cos(ThetaV23) - Sin(ThetaV12)*Sin(ThetaV13)*Sin(ThetaV23))))/Sqr(
vu));
model_1->set_WOp(0, 2, (2*(mv3*Cos(ThetaV13)*Cos(ThetaV23)*Sin(ThetaV13) + mv2
*Cos(ThetaV13)*Sin(ThetaV12)*(-(Cos(ThetaV23)*Sin(ThetaV12)*Sin(ThetaV13)) -
Cos(ThetaV12)*Sin(ThetaV23)) + mv1*Cos(ThetaV12)*Cos(ThetaV13)*(-(Cos(
ThetaV12)*Cos(ThetaV23)*Sin(ThetaV13)) + Sin(ThetaV12)*Sin(ThetaV23))))/Sqr(
vu));
model_1->set_WOp(1, 0, (2*(mv3*Cos(ThetaV13)*Sin(ThetaV13)*Sin(ThetaV23) + mv1
*Cos(ThetaV12)*Cos(ThetaV13)*(-(Cos(ThetaV23)*Sin(ThetaV12)) - Cos(ThetaV12)
*Sin(ThetaV13)*Sin(ThetaV23)) + mv2*Cos(ThetaV13)*Sin(ThetaV12)*(Cos(
ThetaV12)*Cos(ThetaV23) - Sin(ThetaV12)*Sin(ThetaV13)*Sin(ThetaV23))))/Sqr(
vu));
model_1->set_WOp(1, 1, (2*(mv3*Sqr(Cos(ThetaV13))*Sqr(Sin(ThetaV23)) + mv1*Sqr
(-(Cos(ThetaV23)*Sin(ThetaV12)) - Cos(ThetaV12)*Sin(ThetaV13)*Sin(ThetaV23))
+ mv2*Sqr(Cos(ThetaV12)*Cos(ThetaV23) - Sin(ThetaV12)*Sin(ThetaV13)*Sin(
ThetaV23))))/Sqr(vu));
model_1->set_WOp(1, 2, (2*(mv1*(-(Cos(ThetaV12)*Cos(ThetaV23)*Sin(ThetaV13)) +
Sin(ThetaV12)*Sin(ThetaV23))*(-(Cos(ThetaV23)*Sin(ThetaV12)) - Cos(ThetaV12
)*Sin(ThetaV13)*Sin(ThetaV23)) + mv2*(-(Cos(ThetaV23)*Sin(ThetaV12)*Sin(
ThetaV13)) - Cos(ThetaV12)*Sin(ThetaV23))*(Cos(ThetaV12)*Cos(ThetaV23) - Sin
(ThetaV12)*Sin(ThetaV13)*Sin(ThetaV23)) + mv3*Cos(ThetaV23)*Sin(ThetaV23)*
Sqr(Cos(ThetaV13))))/Sqr(vu));
model_1->set_WOp(2, 0, (2*(mv3*Cos(ThetaV13)*Cos(ThetaV23)*Sin(ThetaV13) + mv2
*Cos(ThetaV13)*Sin(ThetaV12)*(-(Cos(ThetaV23)*Sin(ThetaV12)*Sin(ThetaV13)) -
Cos(ThetaV12)*Sin(ThetaV23)) + mv1*Cos(ThetaV12)*Cos(ThetaV13)*(-(Cos(
ThetaV12)*Cos(ThetaV23)*Sin(ThetaV13)) + Sin(ThetaV12)*Sin(ThetaV23))))/Sqr(
vu));
model_1->set_WOp(2, 1, (2*(mv1*(-(Cos(ThetaV12)*Cos(ThetaV23)*Sin(ThetaV13)) +
Sin(ThetaV12)*Sin(ThetaV23))*(-(Cos(ThetaV23)*Sin(ThetaV12)) - Cos(ThetaV12
)*Sin(ThetaV13)*Sin(ThetaV23)) + mv2*(-(Cos(ThetaV23)*Sin(ThetaV12)*Sin(
ThetaV13)) - Cos(ThetaV12)*Sin(ThetaV23))*(Cos(ThetaV12)*Cos(ThetaV23) - Sin
(ThetaV12)*Sin(ThetaV13)*Sin(ThetaV23)) + mv3*Cos(ThetaV23)*Sin(ThetaV23)*
Sqr(Cos(ThetaV13))))/Sqr(vu));
model_1->set_WOp(2, 2, (2*(mv3*Sqr(Cos(ThetaV13))*Sqr(Cos(ThetaV23)) + mv2*Sqr
(-(Cos(ThetaV23)*Sin(ThetaV12)*Sin(ThetaV13)) - Cos(ThetaV12)*Sin(ThetaV23))
+ mv1*Sqr(-(Cos(ThetaV12)*Cos(ThetaV23)*Sin(ThetaV13)) + Sin(ThetaV12)*Sin(
ThetaV23))))/Sqr(vu));
}

void MSSM_MSSMRHN_initial_guesser<Two_scale>::guess_soft_parameters()
void MSSMD5O_MSSMRHN_initial_guesser<Two_scale>::guess_soft_parameters()
{
const double low_scale_guess_1 = low_constraint_1.get_initial_scale_guess();
const double high_scale_guess_2 =
Expand Down

0 comments on commit b4f1ada

Please sign in to comment.