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;
85 TCLAP::CmdLine _cmdline;
87 std::string _database;
89 std::string _username;
90 std::string _password;
100 PAHdb::Database _table;
107 int _databaseversion;
116 std::vector<double> _temperatures;
118 std::vector<double> _weights;
120 std::array<double, 2> _plotlimits;
122 std::array<double, 2> _invplotlimits;
124 std::vector<int> _ids;
126 std::array<int, 2> _plotsize;
129inline std::string_view Parameters::getDatabase()
const {
return (_database); }
131inline std::string_view Parameters::getHost()
const {
return (_host); }
133inline std::string_view Parameters::getUsername()
const {
return (_username); }
135inline std::string_view Parameters::getPassword()
const {
return (_password); }
137inline std::string_view Parameters::getSocket()
const {
return (_socket); }
139inline std::string_view Parameters::getOutputFilename()
const {
143inline std::string_view Parameters::getInputFilename()
const {
147inline const Parameters::Arg &Parameters::getProfile()
const {
151inline const double &Parameters::getFWHM()
const {
return (_fwhm); }
153inline const double &Parameters::getShift()
const {
return (_shift); }
155inline double Parameters::getEnergyInCGS()
const {
156 return (1.6021765e-12 * _energy);
159inline const double &Parameters::getTemperatureInKelvin()
const {
160 return (_temperature);
163inline const PAHdb::Database &Parameters::getTable()
const {
return (_table); }
165inline const int &Parameters::getPort()
const {
return (_port); }
167inline const int &Parameters::getTimeout()
const {
return (_timeout); }
169inline bool Parameters::isCompress() {
return (_compress); }
171inline bool Parameters::isX11() {
return (_x11); }
173inline bool Parameters::isPNG() {
return (_png); }
175inline bool Parameters::isJPEG() {
return (_jpeg); }
177inline bool Parameters::isPostscript() {
return (_postscript); }
179inline bool Parameters::isPDF() {
return (_pdf); }
181inline std::vector<int>
const &Parameters::getIds()
const {
return (_ids); }
183inline std::array<int, 2>
const &Parameters::getPlotSize()
const {
187inline void Parameters::setIds(
const std::vector<int> &ids) { _ids = ids; }
189inline void Parameters::setPlotLimits(
const std::array<double, 2> &plotlimits) {
190 _plotlimits = plotlimits;
193inline std::array<double, 2>
const &Parameters::getPlotLimits()
const {
194 return (_plotlimits);
197inline std::array<double, 2>
const &
198Parameters::getPlotLimitsAsFrequencies()
const {
199 return (_units == Arg::Frequency ? _plotlimits : _invplotlimits);
202inline std::array<double, 2>
const &
203Parameters::getPlotLimitsAsWavelenghts()
const {
204 return (_units == Arg::Wavelength ? _plotlimits : _invplotlimits);
207inline std::vector<double>
const &Parameters::getTemperaturesInKelvin()
const {
208 return (_temperatures);
211inline std::vector<double>
const &Parameters::getWeights()
const {
215inline const Parameters::Arg &Parameters::getModel()
const {
return (_model); }
217inline const Parameters::Arg &Parameters::getTool()
const {
return (_tool); }
219inline const Parameters::Arg &Parameters::getUnits()
const {
return (_units); }
221inline const int &Parameters::getDatabaseVersion()
const {
222 return (_databaseversion);