NAPISD
PAHdb website C++ backend
Loading...
Searching...
No Matches
Parameters.h
1#ifndef PARAMETERS_H_
2#define PARAMETERS_H_
3
4#include "../config.h"
5#include "Exception.h"
6#include <tclap/CmdLine.h>
7#define MYSQLPP_SSQLS_NO_STATICS
8#include "PAHEmissionModel.h"
9#include "PAHdb.h"
10#include <cstdlib>
11
13
14public:
15 enum class Arg : char {
16 ZeroKelvin,
17 FixedTemperature,
18 Temperature,
19 Cascade,
20 CoAdd,
21 Stack,
22 TemperatureStack,
23 CompareExperimentWithTheory,
24 SpectralFit,
25 Wavelength,
26 Frequency,
27 Lorentzian,
28 Gaussian,
29 Drude
30 };
31
32 Parameters();
33 Parameters(const int argc, const char *argv[]);
34
35 void parse(const int argc, const char *argv[]);
36
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;
44
45 const double &getFWHM() const;
46 const double &getShift() const;
47 double getEnergyInCGS() const;
48 const double &getTemperatureInKelvin() const;
49
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;
58
59 std::vector<int> const &getIds() const;
60
61 std::array<int, 2> const &getPlotSize() const;
62
63 void setIds(const std::vector<int> &ids);
64
65 void setPlotLimits(const std::array<double, 2> &plotlimits);
66
67 std::array<double, 2> const &getPlotLimits() const;
68
69 std::array<double, 2> const &getPlotLimitsAsFrequencies() const;
70
71 std::array<double, 2> const &getPlotLimitsAsWavelenghts() const;
72
73 std::vector<double> const &getTemperaturesInKelvin() const;
74
75 std::vector<double> const &getWeights() const;
76
77 bool isCompress();
78 bool isX11();
79 bool isPNG();
80 bool isJPEG();
81 bool isPostscript();
82
83private:
84 TCLAP::CmdLine _cmdline;
85
86 std::string _database;
87 std::string _host;
88 std::string _username;
89 std::string _password;
90 std::string _socket;
91 std::string _output;
92 std::string _input;
93
94 double _fwhm;
95 double _shift;
96 double _energy;
97 double _temperature;
98
99 PAHdb::Database _table;
100 int _port;
101 int _timeout;
102 Arg _model;
103 Arg _profile;
104 Arg _tool;
105 Arg _units;
106 int _databaseversion;
107
108 bool _compress;
109 bool _x11;
110 bool _png;
111 bool _jpeg;
112 bool _postscript;
113
114 std::vector<double> _temperatures;
115
116 std::vector<double> _weights;
117
118 std::array<double, 2> _plotlimits;
119
120 std::array<double, 2> _invplotlimits;
121
122 std::vector<int> _ids;
123
124 std::array<int, 2> _plotsize;
125};
126
127inline std::string_view Parameters::getDatabase() const { return (_database); }
128
129inline std::string_view Parameters::getHost() const { return (_host); }
130
131inline std::string_view Parameters::getUsername() const { return (_username); }
132
133inline std::string_view Parameters::getPassword() const { return (_password); }
134
135inline std::string_view Parameters::getSocket() const { return (_socket); }
136
137inline std::string_view Parameters::getOutputFilename() const {
138 return (_output);
139}
140
141inline std::string_view Parameters::getInputFilename() const {
142 return (_input);
143}
144
145inline const Parameters::Arg &Parameters::getProfile() const {
146 return (_profile);
147}
148
149inline const double &Parameters::getFWHM() const { return (_fwhm); }
150
151inline const double &Parameters::getShift() const { return (_shift); }
152
153inline double Parameters::getEnergyInCGS() const {
154 return (1.6021765e-12 * _energy);
155}
156
157inline const double &Parameters::getTemperatureInKelvin() const {
158 return (_temperature);
159}
160
161inline const PAHdb::Database &Parameters::getTable() const { return (_table); }
162
163inline const int &Parameters::getPort() const { return (_port); }
164
165inline const int &Parameters::getTimeout() const { return (_timeout); }
166
167inline bool Parameters::isCompress() { return (_compress); }
168
169inline bool Parameters::isX11() { return (_x11); }
170
171inline bool Parameters::isPNG() { return (_png); }
172
173inline bool Parameters::isJPEG() { return (_jpeg); }
174
175inline bool Parameters::isPostscript() { return (_postscript); }
176
177inline std::vector<int> const &Parameters::getIds() const { return (_ids); }
178
179inline std::array<int, 2> const &Parameters::getPlotSize() const {
180 return (_plotsize);
181}
182
183inline void Parameters::setIds(const std::vector<int> &ids) { _ids = ids; }
184
185inline void Parameters::setPlotLimits(const std::array<double, 2> &plotlimits) {
186 _plotlimits = plotlimits;
187}
188
189inline std::array<double, 2> const &Parameters::getPlotLimits() const {
190 return (_plotlimits);
191}
192
193inline std::array<double, 2> const &
194Parameters::getPlotLimitsAsFrequencies() const {
195 return (_units == Arg::Frequency ? _plotlimits : _invplotlimits);
196}
197
198inline std::array<double, 2> const &
199Parameters::getPlotLimitsAsWavelenghts() const {
200 return (_units == Arg::Wavelength ? _plotlimits : _invplotlimits);
201}
202
203inline std::vector<double> const &Parameters::getTemperaturesInKelvin() const {
204 return (_temperatures);
205}
206
207inline std::vector<double> const &Parameters::getWeights() const {
208 return (_weights);
209}
210
211inline const Parameters::Arg &Parameters::getModel() const { return (_model); }
212
213inline const Parameters::Arg &Parameters::getTool() const { return (_tool); }
214
215inline const Parameters::Arg &Parameters::getUnits() const { return (_units); }
216
217inline const int &Parameters::getDatabaseVersion() const {
218 return (_databaseversion);
219}
220
221#endif /* PARAMETERS_H_ */

Since FY2019 the NASA Ames PAH IR Spectroscopic Database is being supported through a directed Work Package at NASA Ames titled: "Laboratory Astrophysics - The NASA Ames PAH IR Spectroscopic Database".
Since FY2023 the NASA Ames PAH IR Spectroscopic Database is being supported through the Laboratory Astrophysics Rd 2 directed Work Package at NASA Ames.
© Copyright 2021-2025, Christiaan Boersma