Skip to content

Commit

Permalink
allow calculation of observable at runtime
Browse files Browse the repository at this point in the history
using FlexibleSUSY[15]

Conflicts:
	model_files/CMSSM/FlexibleSUSY.m.in
	model_files/NMSSM/FlexibleSUSY.m.in
	model_files/NUTNMSSM/FlexibleSUSY.m.in
  • Loading branch information
Alexander Voigt authored and Alexander Voigt committed Dec 20, 2015
1 parent 2d91f0f commit 8b90e40
Show file tree
Hide file tree
Showing 8 changed files with 42 additions and 19 deletions.
5 changes: 2 additions & 3 deletions meta/WriteOut.m
Expand Up @@ -343,9 +343,8 @@
WriteSLHABlockEntry[{par_ /; MemberQ[FlexibleSUSYObservable`FSObservables,par], idx___}, comment_String:""] :=
Module[{parStr, commentStr},
{parStr, commentStr} = Switch[par,
FlexibleSUSYObservable`amu,
{FlexibleSUSY`FSModelName <> "_GMuonMinus2::calculate_amuon(MODEL)",
"Delta(g-2)_muon/2"},
FlexibleSUSYObservable`aMuon,
{"OBSERVABLES.a_muon", "Delta(g-2)_muon/2"},
_,
{"", ""}
];
Expand Down
1 change: 1 addition & 0 deletions model_files/SM/LesHouches.in.SM
Expand Up @@ -16,6 +16,7 @@ Block FlexibleSUSY
12 0 # force output
13 1 # Top quark 2-loop corrections QCD
14 1.000000000e-11 # beta-function zero threshold
15 0 # calculate observables (a_muon, ...)
Block SMINPUTS # Standard Model inputs
1 1.279340000e+02 # alpha^(-1) SM MSbar(MZ)
2 1.166370000e-05 # G_Fermi
Expand Down
8 changes: 4 additions & 4 deletions src/observables.cpp
Expand Up @@ -21,14 +21,14 @@
namespace flexiblesusy {

Observables::Observables()
: amu(0.)
: a_muon(0.)
{
}

Eigen::ArrayXd Observables::get() const
{
Eigen::ArrayXd vec(NUMBER_OF_OBSERVABLES);
vec(0) = amu;
vec(0) = a_muon;
return vec;
}

Expand All @@ -41,13 +41,13 @@ std::vector<std::string> Observables::get_names()

void Observables::clear()
{
amu = 0.;
a_muon = 0.;
}

void Observables::set(const Eigen::ArrayXd& vec)
{
assert(vec.rows() == NUMBER_OF_OBSERVABLES);
amu = vec(0);
a_muon = vec(0);
}

} // namespace flexiblesusy
2 changes: 1 addition & 1 deletion src/observables.hpp
Expand Up @@ -39,7 +39,7 @@ struct Observables {
void clear(); ///< sets all observables to zero
void set(const Eigen::ArrayXd&); ///< sets all observables from given vector

double amu; ///< a_mu = (g-2)/2 of the muon
double a_muon; ///< a_muon = (g-2)/2 of the muon
};

} // namespace flexiblesusy
Expand Down
2 changes: 1 addition & 1 deletion templates/observables.cpp.in
Expand Up @@ -23,7 +23,7 @@
#include "@ModelName@_g_muon_minus_2.hpp"

#define MODEL model
#define AMU amu
#define AMU a_muon

namespace flexiblesusy {

Expand Down
7 changes: 5 additions & 2 deletions templates/run.cpp.in
Expand Up @@ -86,6 +86,10 @@ int main(int argc, const char* argv[])
scales.SUSYScale = spectrum_generator.get_susy_scale();
scales.LowScale = spectrum_generator.get_low_scale();

Observables observables;
if (spectrum_generator_settings.get(Spectrum_generator_settings::calculate_observables))
observables = calculate_observables(model);

// SLHA output
if (!slha_output_file.empty()) {
slha_io.set_spinfo(problems);
Expand All @@ -94,7 +98,7 @@ int main(int argc, const char* argv[])
if (!problems.have_problem() ||
spectrum_generator_settings.get(Spectrum_generator_settings::force_output)) {
slha_io.set_spectrum(model);
slha_io.set_extra(model, scales);
slha_io.set_extra(model, scales, observables);
}

if (slha_output_file == "-") {
Expand All @@ -107,7 +111,6 @@ int main(int argc, const char* argv[])
if (!database_output_file.empty() &&
(!problems.have_problem() ||
spectrum_generator_settings.get(Spectrum_generator_settings::force_output))) {
const Observables observables(calculate_observables(model));
@ModelName@_database::to_database(database_output_file, model, &qedqcd, &observables);
}

Expand Down
5 changes: 4 additions & 1 deletion templates/run_cmd_line.cpp.in
Expand Up @@ -19,6 +19,7 @@
// File generated at @DateAndTime@

#include "@ModelName@_input_parameters.hpp"
#include "@ModelName@_observables.hpp"
#include "@ModelName@_spectrum_generator.hpp"
#include "@ModelName@_slha_io.hpp"

Expand Down Expand Up @@ -93,8 +94,10 @@ int main(int argc, char* argv[])
scales.SUSYScale = spectrum_generator.get_susy_scale();
scales.LowScale = spectrum_generator.get_low_scale();

const Observables observables(calculate_observables(model));

// SLHA output
SLHAea::Coll slhaea(@ModelName@_slha_io::fill_slhaea(model, qedqcd, scales));
SLHAea::Coll slhaea(@ModelName@_slha_io::fill_slhaea(model, qedqcd, scales, observables));

std::cout << slhaea;

Expand Down
31 changes: 24 additions & 7 deletions templates/slha_io.hpp.in
Expand Up @@ -24,11 +24,11 @@
#include "@ModelName@_two_scale_model_slha.hpp"
#include "@ModelName@_info.hpp"
#include "@ModelName@_physical.hpp"
#include "@ModelName@_g_muon_minus_2.hpp"
#include "slha_io.hpp"
#include "ckm.hpp"
#include "ew_input.hpp"
#include "lowe.h"
#include "observables.hpp"

#include <Eigen/Core>
#include <string>
Expand All @@ -40,6 +40,7 @@
#define LOCALPHYSICAL(p) physical.p
#define MODEL model
#define MODELPARAMETER(p) model.get_##p()
#define OBSERVABLES observables
#define LowEnergyConstant(p) Electroweak_constants::p
#define SCALES(p) scales.p

Expand Down Expand Up @@ -72,7 +73,7 @@ public:
void read_from_source(const std::string&);
void read_from_stream(std::istream&);
void set_extpar(const @ModelName@_input_parameters&);
template <class T> void set_extra(const @ModelName@_slha<T>&, const @ModelName@_scales&);
template <class T> void set_extra(const @ModelName@_slha<T>&, const @ModelName@_scales&, const Observables&);
void set_minpar(const @ModelName@_input_parameters&);
void set_sminputs(const softsusy::QedQcd&);
template <class T> void set_spectrum(const @ModelName@_slha<T>&);
Expand All @@ -85,14 +86,17 @@ public:
static void fill_extpar_tuple(@ModelName@_input_parameters&, int, double);

template <class T>
static void fill_slhaea(SLHAea::Coll&, const @ModelName@_slha<T>&, const softsusy::QedQcd&, const @ModelName@_scales&);
static void fill_slhaea(SLHAea::Coll&, const @ModelName@_slha<T>&, const softsusy::QedQcd&, const @ModelName@_scales&, const Observables&);

template <class T>
static SLHAea::Coll fill_slhaea(const @ModelName@_slha<T>&, const softsusy::QedQcd&);

template <class T>
static SLHAea::Coll fill_slhaea(const @ModelName@_slha<T>&, const softsusy::QedQcd&, const @ModelName@_scales&);

template <class T>
static SLHAea::Coll fill_slhaea(const @ModelName@_slha<T>&, const softsusy::QedQcd&, const @ModelName@_scales&, const Observables&);

private:
SLHA_io slha_io; ///< SLHA io class
static unsigned const NUMBER_OF_DRBAR_BLOCKS = @numberOfDRbarBlocks@;
Expand Down Expand Up @@ -122,7 +126,8 @@ void @ModelName@_slha_io::fill(@ModelName@_slha<T>& model) const
template <class T>
void @ModelName@_slha_io::fill_slhaea(
SLHAea::Coll& slhaea, const @ModelName@_slha<T>& model,
const softsusy::QedQcd& qedqcd, const @ModelName@_scales& scales)
const softsusy::QedQcd& qedqcd, const @ModelName@_scales& scales,
const Observables& observables)
{
@ModelName@_slha_io slha_io;
const @ModelName@_input_parameters& input = model.get_input();
Expand All @@ -136,7 +141,7 @@ void @ModelName@_slha_io::fill_slhaea(
slha_io.set_extpar(input);
if (!error) {
slha_io.set_spectrum(model);
slha_io.set_extra(model, scales);
slha_io.set_extra(model, scales, observables);
}

slhaea = slha_io.get_slha_io().get_data();
Expand All @@ -155,9 +160,19 @@ template <class T>
SLHAea::Coll @ModelName@_slha_io::fill_slhaea(
const @ModelName@_slha<T>& model, const softsusy::QedQcd& qedqcd,
const @ModelName@_scales& scales)
{
Observables observables;

return fill_slhaea(model, qedqcd, scales, observables);
}

template <class T>
SLHAea::Coll @ModelName@_slha_io::fill_slhaea(
const @ModelName@_slha<T>& model, const softsusy::QedQcd& qedqcd,
const @ModelName@_scales& scales, const Observables& observables)
{
SLHAea::Coll slhaea;
@ModelName@_slha_io::fill_slhaea(slhaea, model, qedqcd, scales);
@ModelName@_slha_io::fill_slhaea(slhaea, model, qedqcd, scales, observables);

return slhaea;
}
Expand All @@ -180,7 +195,8 @@ void @ModelName@_slha_io::set_model_parameters(const @ModelName@_slha<T>& model)
*/
template <class T>
void @ModelName@_slha_io::set_extra(
const @ModelName@_slha<T>& model, const @ModelName@_scales& scales)
const @ModelName@_slha<T>& model, const @ModelName@_scales& scales,
const Observables& observables)
{
const @ModelName@_physical physical(model.get_physical_slha());

Expand Down Expand Up @@ -231,6 +247,7 @@ void @ModelName@_slha_io::set_spectrum(const @ModelName@_slha<T>& model)
#undef LOCALPHYSICAL
#undef MODEL
#undef MODELPARAMETER
#undef OBSERVABLES
#undef LowEnergyConstant
#undef SCALES

Expand Down

0 comments on commit 8b90e40

Please sign in to comment.