CppEphem
CEExecOptions.h
Go to the documentation of this file.
1 
2 
3 #ifndef CEExecOptions_h
4 #define CEExecOptions_h
5 
6 #include "CppEphem.h"
7 #include "CLOptions.h"
8 
9 class CEExecOptions : public CLOptions {
10 public:
11 
12  /**********************************************************************/
16  {
17  init_members();
18  }
19  /**********************************************************************/
23  CEExecOptions(const std::string& prog_name)
24  {
25  init_members();
26  SetProgName(prog_name);
27  }
28  /**********************************************************************/
31  virtual ~CEExecOptions() {}
32 
33  /**********************************************************************/
38  {
39  // Make sure the two objects are not the same
40  if (this != &other) {
41  free_members();
42  init_members();
43  copy_members(other);
44  }
45  return *this;
46  }
47 
48  /* Methods for adding variables */
49  void AddCirsPars(void);
50  void AddIcrsPars(void);
51  void AddGalacticPars(void);
52  void AddObservedPars(void);
53 
54  void AddCorrFilePars(void);
55  void AddCirsPar(void);
56  void AddIcrsPar(void);
57  void AddGalacticPar(void);
58  void AddEclipticPar(void);
59  void AddObservedPar(void);
60  void AddObserverPars(void);
61  void AddJDPar(void);
62 
63  CEObserver GenObserver(void);
64 
65  void SetCorrFiles(void);
66  void SetProgName(const std::string& prog_name);
67 
68 private:
69 
70  /* Methods */
71  void copy_members(const CEExecOptions& other);
72  void init_members(void);
73  void free_members(void);
74 
75  /* Variables */
76  std::string prog_name_;
77 };
78 
79 
80 /**********************************************************************/
90 inline
92 {
93  AddDoubleParam("r,ra", "RA in the CIRS coordinate frame (degrees)", 0.0);
94  AddDoubleParam("d,dec", "DEC in the CIRS coordinate frame (degrees)", 0.0);
95 }
96 
97 /**********************************************************************/
107 inline
109 {
110  AddDoubleParam("R,ra", "RA in ICRS coordinate frame (degrees)", 0.0);
111  AddDoubleParam("D,dec", "DEC in the ICRS coordinate frame (degrees)", 0.0);
112 }
113 
114 /**********************************************************************/
124 inline
126 {
127  AddDoubleParam("l,glon", "Galactic longitude (degrees)", 0.0);
128  AddDoubleParam("b,glat", "Galactic latitude (degrees)", 0.0);
129 }
130 
131 /**********************************************************************/
141 inline
143 {
144  AddDoubleParam("a,azimuth", "Azimuth angle (degrees, north=0, east=90)", 0.0);
145  AddDoubleParam("z,zenith", "Zenith angle (degrees)", 0.0);
146 }
147 
148 /**********************************************************************/
168 inline
170 {
171  CEObserver obs;
172  AddDoubleParam("x,longitude", "Observer geographic longitude (degrees east positive)", 0.0);
173  AddDoubleParam("y,latitude", "Observer geographic latitude (degrees)", 0.0);
174  AddDoubleParam("elevation", "Observer elevation (meters)", 0.0);
175  AddDoubleParam("pressure", "Observer's atmospheric pressure (hPa)", obs.Pressure_hPa());
176  AddDoubleParam("humidity", "Observer's atmospheric humicity (0-1)", obs.RelativeHumidity());
177  AddDoubleParam("temperature", "Observer's atmospheric temperature (Celsius)", obs.Temperature_C());
178  AddDoubleParam("wavelength", "Observing wavelength (micrometers)", obs.Wavelength_um());
179 
180  // Add date parameter
181  AddJDPar();
182 }
183 
184 /**********************************************************************/
192 inline
194 {
195  AddDoubleParam("j,juliandate", "Input Julian date", CEDate::CurrentJD());
196 }
197 
198 /**********************************************************************/
206 inline
208 {
209  AddStringParam("nutation", "File containing nutation corrections",
210  "");
211  AddStringParam("ttut1hist", "File containing 'TT - UT1' corrections (historical)",
212  "");
213  AddStringParam("ttut1pred", "File containing 'TT - UT1' corrections (predicted)",
214  "");
215 }
216 
217 /**********************************************************************/
225 inline
227 {
228  AddStringParam("cirs", "Input CIRS RA,Dec coordinates (degrees)", "");
229  if (!HasPar("delim")) {
230  AddStringParam("delim", "Angle delimiter", "");
231  }
232 }
233 
234 /**********************************************************************/
242 inline
244 {
245  AddStringParam("icrs", "Input ICRS RA,Dec coordinates (degrees)", "");
246  if (!HasPar("delim")) {
247  AddStringParam("delim", "Angle delimiter", "");
248  }
249 }
250 
251 /**********************************************************************/
259 inline
261 {
262  AddStringParam("galactic", "Input Galactic longitude,latitude coordinates (degrees)",
263  "");
264  if (!HasPar("delim")) {
265  AddStringParam("delim", "Angle delimiter", "");
266  }
267 }
268 
269 /**********************************************************************/
277 inline
279 {
280  AddStringParam("ecliptic", "Ecliptic longitude,latitude (degrees)", "");
281  if (!HasPar("delim")) {
282  AddStringParam("delim", "Angle delimiter", "");
283  }
284 }
285 
286 /**********************************************************************/
294 inline
296 {
297  AddStringParam("observed", "Observed altitude,zenith (degrees)", "");
298  if (!HasPar("delim")) {
299  AddStringParam("delim", "Angle delimiter (single character)", "");
300  }
301 }
302 
303 /**********************************************************************/
306 inline
308 {
309  CEObserver obs(AsDouble("longitude"),
310  AsDouble("latitude"),
311  AsDouble("elevation"),
313  obs.SetRelativeHumidity(AsDouble("humidity"));
314  obs.SetPressure_hPa(AsDouble("pressure"));
315  obs.SetWavelength_um(AsDouble("wavelength"));
316 
317  return obs;
318 }
319 
320 /**********************************************************************/
323 inline
325 {
326  // Nutation
327  if (AsString("nutation").size() > 0) {
328  CppEphem::SetNutationFile(AsString("nutation"));
329  }
330  // TT - UT1 (historical)
331  if (AsString("ttut1hist").size() > 0) {
332  CppEphem::SetTtUt1HistFile(AsString("ttut1hist"));
333  }
334  // TT - UT1 (predictions)
335  if (AsString("ttut1pred").size() > 0) {
336  CppEphem::SetTtUt1PredFile(AsString("ttut1pred"));
337  }
338 }
339 
340 /**********************************************************************/
344 inline
345 void CEExecOptions::SetProgName(const std::string& prog_name)
346 {
347  std::string vers_str = prog_name + " v" + CPPEPHEM_VERSION;
348  prog_name_ = prog_name;
349  AddVersionInfo(vers_str);
350 }
351 
352 /**********************************************************************/
356 inline
358 {
359  prog_name_ = other.prog_name_;
360 }
361 
362 /**********************************************************************/
365 inline
367 {
368  prog_name_ = "unnamed";
369 }
370 
371 /**********************************************************************/
374 inline
376 {}
377 
378 #endif /* CEExecOptions_h */
CEExecOptions::AddObservedPars
void AddObservedPars(void)
Add parameters for observed azimuth,zenith coordinates.
Definition: CEExecOptions.h:142
CppEphem::SetNutationFile
void SetNutationFile(const std::string &filename)
Set the name of the file to use for defining the nutation corrections.
Definition: CENamespace.cpp:66
CEExecOptions::AddCirsPars
void AddCirsPars(void)
Add parameters for CIRS coordinates.
Definition: CEExecOptions.h:91
CEExecOptions::free_members
void free_members(void)
Free explicitly allocated memory.
Definition: CEExecOptions.h:375
CEExecOptions::SetProgName
void SetProgName(const std::string &prog_name)
Defines the program name and sets the version information.
Definition: CEExecOptions.h:345
CEExecOptions::CEExecOptions
CEExecOptions()
Default constructor.
Definition: CEExecOptions.h:15
CEObserver::Temperature_C
double Temperature_C() const
Return temperature in degrees Celsius.
Definition: CEObserver.h:186
CEExecOptions::init_members
void init_members(void)
Initialize data members.
Definition: CEExecOptions.h:366
CEExecOptions::GenObserver
CEObserver GenObserver(void)
Generate an observer object.
Definition: CEExecOptions.h:307
CEObserver::RelativeHumidity
double RelativeHumidity() const
Return relative humidity.
Definition: CEObserver.h:216
CEExecOptions::AddGalacticPar
void AddGalacticPar(void)
Add parameters for Galactic coordinates.
Definition: CEExecOptions.h:260
CEObserver::SetRelativeHumidity
void SetRelativeHumidity(const double &humidity=0.0)
Set the observer's relative humidity.
Definition: CEObserver.h:349
CEExecOptions::AddObserverPars
void AddObserverPars(void)
Add parameters defining an observer and their atmospheric properties.
Definition: CEExecOptions.h:169
CEExecOptions::AddObservedPar
void AddObservedPar(void)
Add parameters for Observed coordinates.
Definition: CEExecOptions.h:295
CEObserver::SetWavelength_um
void SetWavelength_um(const double &new_wavelength_um)
Set the observer's observing wavelength (micrometers)
Definition: CEObserver.h:393
CEObserver::SetPressure_hPa
void SetPressure_hPa(const double &pressure=CppEphem::EstimatePressure_hPa(CppEphem::SeaLevelTemp_C()))
Set the observer's pressure.
Definition: CEObserver.h:338
CEExecOptions::AddJDPar
void AddJDPar(void)
Add parameter for the Julian date.
Definition: CEExecOptions.h:193
CppEphem.h
CEExecOptions::prog_name_
std::string prog_name_
Definition: CEExecOptions.h:76
CEObserver::Pressure_hPa
double Pressure_hPa() const
Return atmospheric pressure in units of hPa.
Definition: CEObserver.h:176
CEObserver::Wavelength_um
double Wavelength_um() const
Return the wavelength in units of micrometers.
Definition: CEObserver.h:226
CEExecOptions::copy_members
void copy_members(const CEExecOptions &other)
Copy data members from another object of the same class.
Definition: CEExecOptions.h:357
CEAngleType::DEGREES
CEExecOptions::AddCirsPar
void AddCirsPar(void)
Add parameters for CIRS coordinates.
Definition: CEExecOptions.h:226
CEExecOptions::SetCorrFiles
void SetCorrFiles(void)
Defines the corrections terms from user supplied options.
Definition: CEExecOptions.h:324
CppEphem::SetTtUt1PredFile
void SetTtUt1PredFile(const std::string &filename)
Set the name of the file to use for defining the predicted TT-UT1 corrections.
Definition: CENamespace.cpp:88
CEExecOptions::~CEExecOptions
virtual ~CEExecOptions()
Deconstruct.
Definition: CEExecOptions.h:31
CEExecOptions::AddEclipticPar
void AddEclipticPar(void)
Add parameters for Ecliptic coordinates.
Definition: CEExecOptions.h:278
CEExecOptions::AddIcrsPar
void AddIcrsPar(void)
Add parameters for ICRS coordinates.
Definition: CEExecOptions.h:243
CEExecOptions::operator=
CEExecOptions & operator=(const CEExecOptions &other)
Copy assignment operator.
Definition: CEExecOptions.h:37
CEDate::CurrentJD
static double CurrentJD()
Static method for getting the current Julian date.
Definition: CEDate.cpp:632
CEObserver
Definition: CEObserver.h:28
CEExecOptions::AddIcrsPars
void AddIcrsPars(void)
Add parameters for ICRS coordinates.
Definition: CEExecOptions.h:108
CEExecOptions::AddCorrFilePars
void AddCorrFilePars(void)
Add parameter for the corrections file path.
Definition: CEExecOptions.h:207
CEExecOptions::CEExecOptions
CEExecOptions(const std::string &prog_name)
Construct from a program name.
Definition: CEExecOptions.h:23
CEExecOptions
Definition: CEExecOptions.h:9
CppEphem::SetTtUt1HistFile
void SetTtUt1HistFile(const std::string &filename)
Set the name of the file to use for defining the historic TT-UT1 corrections.
Definition: CENamespace.cpp:77
CEExecOptions::AddGalacticPars
void AddGalacticPars(void)
Add parameters for Galactic coordinates.
Definition: CEExecOptions.h:125