6#include <tclap/CmdLine.h>
7#define MYSQLPP_SSQLS_NO_STATICS
8#include "PAHEmissionModel.h"
15 enum class Arg :
char {
23 CompareExperimentWithTheory,
33 Parameters(
const int argc,
const char *argv[]);
35 void parse(
const int argc,
const char *argv[]);
37 std::string_view getDatabase()
const;
38 std::string_view getHost()
const;
39 std::string_view getUsername()
const;
40 std::string_view getPassword()
const;
41 std::string_view getSocket()
const;
42 std::string_view getOutputFilename()
const;
43 std::string_view getInputFilename()
const;
45 const double &getFWHM()
const;
46 const double &getShift()
const;
47 double getEnergyInCGS()
const;
48 const double &getTemperatureInKelvin()
const;
50 const PAHdb::Database &getTable()
const;
51 const int &getPort()
const;
52 const int &getTimeout()
const;
53 const Arg &getModel()
const;
54 const Arg &getProfile()
const;
55 const Arg &getTool()
const;
56 const Arg &getUnits()
const;
57 const int &getDatabaseVersion()
const;
59 std::vector<int>
const &getIds()
const;
61 std::array<int, 2>
const &getPlotSize()
const;
63 void setIds(
const std::vector<int> &ids);
65 void setPlotLimits(
const std::array<double, 2> &plotlimits);
67 std::array<double, 2>
const &getPlotLimits()
const;
69 std::array<double, 2>
const &getPlotLimitsAsFrequencies()
const;
71 std::array<double, 2>
const &getPlotLimitsAsWavelenghts()
const;
73 std::vector<double>
const &getTemperaturesInKelvin()
const;
75 std::vector<double>
const &getWeights()
const;
84 TCLAP::CmdLine _cmdline;
86 std::string _database;
88 std::string _username;
89 std::string _password;
99 PAHdb::Database _table;
106 int _databaseversion;
114 std::vector<double> _temperatures;
116 std::vector<double> _weights;
118 std::array<double, 2> _plotlimits;
120 std::array<double, 2> _invplotlimits;
122 std::vector<int> _ids;
124 std::array<int, 2> _plotsize;
127inline std::string_view Parameters::getDatabase()
const {
return (_database); }
129inline std::string_view Parameters::getHost()
const {
return (_host); }
131inline std::string_view Parameters::getUsername()
const {
return (_username); }
133inline std::string_view Parameters::getPassword()
const {
return (_password); }
135inline std::string_view Parameters::getSocket()
const {
return (_socket); }
137inline std::string_view Parameters::getOutputFilename()
const {
141inline std::string_view Parameters::getInputFilename()
const {
145inline const Parameters::Arg &Parameters::getProfile()
const {
149inline const double &Parameters::getFWHM()
const {
return (_fwhm); }
151inline const double &Parameters::getShift()
const {
return (_shift); }
153inline double Parameters::getEnergyInCGS()
const {
154 return (1.6021765e-12 * _energy);
157inline const double &Parameters::getTemperatureInKelvin()
const {
158 return (_temperature);
161inline const PAHdb::Database &Parameters::getTable()
const {
return (_table); }
163inline const int &Parameters::getPort()
const {
return (_port); }
165inline const int &Parameters::getTimeout()
const {
return (_timeout); }
167inline bool Parameters::isCompress() {
return (_compress); }
169inline bool Parameters::isX11() {
return (_x11); }
171inline bool Parameters::isPNG() {
return (_png); }
173inline bool Parameters::isJPEG() {
return (_jpeg); }
175inline bool Parameters::isPostscript() {
return (_postscript); }
177inline std::vector<int>
const &Parameters::getIds()
const {
return (_ids); }
179inline std::array<int, 2>
const &Parameters::getPlotSize()
const {
183inline void Parameters::setIds(
const std::vector<int> &ids) { _ids = ids; }
185inline void Parameters::setPlotLimits(
const std::array<double, 2> &plotlimits) {
186 _plotlimits = plotlimits;
189inline std::array<double, 2>
const &Parameters::getPlotLimits()
const {
190 return (_plotlimits);
193inline std::array<double, 2>
const &
194Parameters::getPlotLimitsAsFrequencies()
const {
195 return (_units == Arg::Frequency ? _plotlimits : _invplotlimits);
198inline std::array<double, 2>
const &
199Parameters::getPlotLimitsAsWavelenghts()
const {
200 return (_units == Arg::Wavelength ? _plotlimits : _invplotlimits);
203inline std::vector<double>
const &Parameters::getTemperaturesInKelvin()
const {
204 return (_temperatures);
207inline std::vector<double>
const &Parameters::getWeights()
const {
211inline const Parameters::Arg &Parameters::getModel()
const {
return (_model); }
213inline const Parameters::Arg &Parameters::getTool()
const {
return (_tool); }
215inline const Parameters::Arg &Parameters::getUnits()
const {
return (_units); }
217inline const int &Parameters::getDatabaseVersion()
const {
218 return (_databaseversion);