Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
Interface.h
Go to the documentation of this file.
1#ifndef INTERFACE_H
2#define INTERFACE_H
3
4#include <string>
5#include <iostream>
6#include <memory>
7#include <unordered_map>
8#include <functional>
9
33enum class CalculatorType {
34 Softsusy,
35 TwoHDM
36};
37
38
55public:
67 virtual void calculateSpectrum(const std::string& inputFilePath, const std::string& outputFilePath) = 0;
68
70 virtual ~ICalculator() = default;
71
72};
73
83class ICommand {
84public:
86 virtual void execute() = 0;
87
89 virtual ~ICommand() = default;
90};
91
92
106private:
107 ICalculator& calculator;
108 std::string inputFilePath;
109 std::string outputFilePath;
110
111public:
119 CalculateSpectrumCommand(ICalculator& calculator_, std::string inputFilePath_, std::string outputFilePath_)
120 : calculator(calculator_), inputFilePath(std::move(inputFilePath_)), outputFilePath(std::move(outputFilePath_)) {}
121
128 void execute() override {
129 calculator.calculateSpectrum(inputFilePath, outputFilePath);
130 }
131};
132
133
134
151public:
163 static std::shared_ptr<ICalculator> createCalculator(CalculatorType type);
164
179 static void executeCommand(CalculatorType type, const std::string& commandName, const std::string& inputFilePath, const std::string& outputFilePath);
180};
181
182
183#endif
CalculatorType
Definition Interface.h:33
@ TwoHDM
Use 2HDMC–based calculator.
@ Softsusy
Use SOFTSUSY–based calculator.
Command to calculate the spectrum using a given calculator.
Definition Interface.h:105
CalculateSpectrumCommand(ICalculator &calculator_, std::string inputFilePath_, std::string outputFilePath_)
Constructs a new CalculateSpectrumCommand.
Definition Interface.h:119
void execute() override
Executes the command to calculate the spectrum.
Definition Interface.h:128
Factory and dispatcher for spectrum calculators and commands.
Definition Interface.h:150
static void executeCommand(CalculatorType type, const std::string &commandName, const std::string &inputFilePath, const std::string &outputFilePath)
Executes a named command on a chosen calculator type.
Definition Interface.cpp:19
static std::shared_ptr< ICalculator > createCalculator(CalculatorType type)
Creates a concrete calculator for a given type.
Definition Interface.cpp:8
Interface for calculator classes.
Definition Interface.h:54
virtual void calculateSpectrum(const std::string &inputFilePath, const std::string &outputFilePath)=0
Performs the spectrum calculation.
virtual ~ICalculator()=default
Virtual destructor.
Minimal command interface.
Definition Interface.h:83
virtual ~ICommand()=default
Virtual destructor.
virtual void execute()=0
Executes the command.
Hash specialization for SymbolId<Tag>.
Definition BlockName.h:353