CARMA C++
ModelReaderNew.h
Go to the documentation of this file.
1 // $Id: ModelReaderNew.h,v 1.1 2010/12/13 21:06:31 eml Exp $
2 
3 #ifndef SZA_MATLAB_MODELREADERNEW_H
4 #define SZA_MATLAB_MODELREADERNEW_H
5 
15 #include <string>
16 #include <vector>
17 
18 #include "carma/szautil/Angle.h"
19 #include "carma/szautil/Flux.h"
20 #include "carma/szautil/Frequency.h"
21 #include "carma/szautil/QuadraticInterpolatorNormal.h"
23 #include "carma/szautil/TimeVal.h"
24 #include "carma/szautil/Temperature.h"
25 
26 class InputStream;
27 
28 namespace sza {
29  namespace util {
30 
31  class ModelReaderNew {
32  public:
33 
34  // Enumerate interpolation error codes
35 
36  enum {
37  ERR_NONE = 0x0,
38  ERR_OUTSIDE_MJD = 0x1,
39  ERR_OUTSIDE_FREQ = 0x2,
40  ERR_NO_DATA = 0x4
41  };
42 
43  static const double arcSecPerRad_;
44 
48  ModelReaderNew();
49  ModelReaderNew(std::string dir, std::string fileName, std::vector<Frequency> freqs);
50  void initialize(std::vector<Frequency> freqs);
51 
55  virtual ~ModelReaderNew();
56 
57  void readFile(std::string dir, std::string fileName);
58 
63  void findMjdIndices(double mjd, unsigned& iStart, unsigned& iStop);
64  void findFreqIndices(Frequency& freq, unsigned& iStart, unsigned& iStop);
65 
66  Temperature brightnessTemperature(TimeVal& mjd, Frequency& freq,
67  unsigned int& errCode);
68 
69  SolidAngle solidAngle(TimeVal& mjd, unsigned int& errCode);
70 
71  Angle eDiam(TimeVal& mjd, unsigned int& errCode);
72 
73  Angle pDiam(TimeVal& mjd, unsigned int& errCode);
74 
75  Flux flux(TimeVal& mjd, Frequency& freq, unsigned int& errCode);
76 
77  virtual void readRecord(InputStream* stream);
78  virtual void readItem(InputStream* stream);
79 
80  public:
81 
82  std::vector<Frequency> freqs_;
83  unsigned nFreq_;
84 
85  std::vector<double> mjd_;
86  std::vector<double> eDiam_;
87  std::vector<double> pDiam_;
88  std::vector<std::vector<double> > t_;
89 
90  std::vector<sza::util::QuadraticInterpolatorNormal> tInterp_;
93 
95 
96  public:
97 
98  void fillInterpolationContainers(TimeVal& time, Frequency& freq);
99  void fillInterpolationContainers(TimeVal& time);
100 
101  }; // End class ModelReaderNew
102 
103  } // End namespace matlab
104 } // End namespace sza
105 
106 
107 
108 #endif // End #ifndef SZA_MATLAB_MODELREADERNEW_H
Tagged: Fri Nov 14 12:39:38 UTC 2003.
Tagged: Wed Sep 14 17:52:22 PDT 2005.
Tagged: Wed Sep 14 17:14:39 PDT 2005.
Class for interpolating normal (non-angle) ordinates.