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 bool isPDF();
83
84private:
85 TCLAP::CmdLine _cmdline;
86
87 std::string _database;
88 std::string _host;
89 std::string _username;
90 std::string _password;
91 std::string _socket;
92 std::string _output;
93 std::string _input;
94
95 double _fwhm;
96 double _shift;
97 double _energy;
98 double _temperature;
99
100 PAHdb::Database _table;
101 int _port;
102 int _timeout;
103 Arg _model;
104 Arg _profile;
105 Arg _tool;
106 Arg _units;
107 int _databaseversion;
108
109 bool _compress;
110 bool _x11;
111 bool _png;
112 bool _jpeg;
113 bool _postscript;
114 bool _pdf;
115
116 std::vector<double> _temperatures;
117
118 std::vector<double> _weights;
119
120 std::array<double, 2> _plotlimits;
121
122 std::array<double, 2> _invplotlimits;
123
124 std::vector<int> _ids;
125
126 std::array<int, 2> _plotsize;
127};
128
129inline std::string_view Parameters::getDatabase() const { return (_database); }
130
131inline std::string_view Parameters::getHost() const { return (_host); }
132
133inline std::string_view Parameters::getUsername() const { return (_username); }
134
135inline std::string_view Parameters::getPassword() const { return (_password); }
136
137inline std::string_view Parameters::getSocket() const { return (_socket); }
138
139inline std::string_view Parameters::getOutputFilename() const {
140 return (_output);
141}
142
143inline std::string_view Parameters::getInputFilename() const {
144 return (_input);
145}
146
147inline const Parameters::Arg &Parameters::getProfile() const {
148 return (_profile);
149}
150
151inline const double &Parameters::getFWHM() const { return (_fwhm); }
152
153inline const double &Parameters::getShift() const { return (_shift); }
154
155inline double Parameters::getEnergyInCGS() const {
156 return (1.6021765e-12 * _energy);
157}
158
159inline const double &Parameters::getTemperatureInKelvin() const {
160 return (_temperature);
161}
162
163inline const PAHdb::Database &Parameters::getTable() const { return (_table); }
164
165inline const int &Parameters::getPort() const { return (_port); }
166
167inline const int &Parameters::getTimeout() const { return (_timeout); }
168
169inline bool Parameters::isCompress() { return (_compress); }
170
171inline bool Parameters::isX11() { return (_x11); }
172
173inline bool Parameters::isPNG() { return (_png); }
174
175inline bool Parameters::isJPEG() { return (_jpeg); }
176
177inline bool Parameters::isPostscript() { return (_postscript); }
178
179inline bool Parameters::isPDF() { return (_pdf); }
180
181inline std::vector<int> const &Parameters::getIds() const { return (_ids); }
182
183inline std::array<int, 2> const &Parameters::getPlotSize() const {
184 return (_plotsize);
185}
186
187inline void Parameters::setIds(const std::vector<int> &ids) { _ids = ids; }
188
189inline void Parameters::setPlotLimits(const std::array<double, 2> &plotlimits) {
190 _plotlimits = plotlimits;
191}
192
193inline std::array<double, 2> const &Parameters::getPlotLimits() const {
194 return (_plotlimits);
195}
196
197inline std::array<double, 2> const &
198Parameters::getPlotLimitsAsFrequencies() const {
199 return (_units == Arg::Frequency ? _plotlimits : _invplotlimits);
200}
201
202inline std::array<double, 2> const &
203Parameters::getPlotLimitsAsWavelenghts() const {
204 return (_units == Arg::Wavelength ? _plotlimits : _invplotlimits);
205}
206
207inline std::vector<double> const &Parameters::getTemperaturesInKelvin() const {
208 return (_temperatures);
209}
210
211inline std::vector<double> const &Parameters::getWeights() const {
212 return (_weights);
213}
214
215inline const Parameters::Arg &Parameters::getModel() const { return (_model); }
216
217inline const Parameters::Arg &Parameters::getTool() const { return (_tool); }
218
219inline const Parameters::Arg &Parameters::getUnits() const { return (_units); }
220
221inline const int &Parameters::getDatabaseVersion() const {
222 return (_databaseversion);
223}
224
225#endif /* PARAMETERS_H_ */

From FY2025 onward the NASA Ames PAH IR Spectroscopic Database is being supported through the Laboratory Astrophysics Round 3 directed Work Package at NASA Ames.
From FY2023-2025 the NASA Ames PAH IR Spectroscopic Database was supported through the Laboratory Astrophysics Round 2 directed Work Package at NASA Ames.
From FY2019-2022 the NASA Ames PAH IR Spectroscopic Database was supported through a directed Work Package at NASA Ames titled: "Laboratory Astrophysics – The NASA Ames PAH IR Spectroscopic Database".
© Copyright 2021-2025, Christiaan Boersma