#ifndef _LEVEL1DATA_H_ #define _LEVEL1DATA_H_ #include #include #include "DatabaseHandles.h" typedef std::vector > Vector2D; class CMarkup; class Level1Data { public: Level1Data() {} virtual ~Level1Data() {} void Init(CMarkup* xml, const std::string& section="level1"); bool AverageList(const std::vector& events, char* l1_ver) ; bool Read(const int EventNo, char* l1_ver ); bool ReadSummary(const int EventNo, char* l1_ver); void ReadScans(const int EventNo); // void ReadSignals(const int EventNo); void ReadGridded(const int EventNo); void ReadZPT(const int EventNo); void ReadEphem(const int EventNo); // void ReadLockDown(const int EventNo); void ReadDriftData(const int EventNo); void ReadMSIS(const int EventNo) ; // void ReadSolarExtent(const int EventNo); int EventNo() const { return _EventNo; } int OrbitNo() const { return _OrbitNo; } std::string Mode() const { return _Mode; } std::string StartTime() const { return _StartTime; } std::string EndTime() const { return _EndTime; } std::vector ScanElev() const { return _ElevAng; } std::vector ScanData(const int band) const {return _ScanData.at(band-1); } std::vector GetTransmittance(const int band) const { return _DetectorData.at(band-1) ; } //std::vector GetSignal(const int band) const { return _DetData.at(band-1) ; } // RGS Changere, with signal averages, we want to use Transmissions rather than signal for computed transmissions (see poor man FOV for instance) // force the 'GetSignal' function to return Transmission * vexo std::vector GetSignal(const int band) const { std::vector CurrentSignal = _DetectorData.at(band-1); double Currentexo = _exoV.at(band-1); for(int i = 0; i& v ) { _DetData[band-1] = v; } std::vector GetImpactAlts() { return _TPAlt; } std::vector GetViewAngle() { return _ViewAngle; } std::vector LockDownElev() { return _LockDownElev; } std::vector SolarExtent() { return _SolarExtent; } std::vector SunSensorRefraction() { return _SSRefraction; } std::vector SunSensorTransmission(const int iregion) { return _SSTransmission.at(iregion) ; } std::vector GetTimes() { return _Times; } std::vector Alt() { return _Altitude; } std::vector Pres() {return _Pressure; } std::vector Temp() { return _Temperature; } std::vector msisAlt() { return _msisAlt; } std::vector msisO() { return _msisO; } std::vector msisO2() { return _msisO2; } std::vector msisN2() { return _msisN2; } double DriftVariance( const int band) const { return _noise.at(band-1) ;} double GetExoCounts( const int band) const { return _exoV.at(band-1); } double DetectorTemp(const int band) const {return _FilterTemps.at(band-1); } double Attenuator(const int band) const { return _Attenuators.at(band-1); } double ThermalChiSq(const int band) const { return _ThermalChiSq.at(band-1); } float RadiusCurvature() const { return _CurvatureRadius; } // need to get from database float EarthSunDistance() const { return _EarthSunDistance; } float LOS_Bearing() const { return _LOS_Bearing; } float Lat83() { return _Lat; } float Lon83() { return _Lon; } float RegOffset() { return _RegOffset; } // void SetLockDownElev(const std::vector& v) { _LockDownElev = v; } void Set_TP_Alts(const std::vector& v) { _TPAlt = v; } protected: // from summary info int _EventNo, _OrbitNo; // std::string _topIndex, _lastIndex; std::string _StartTime, _EndTime; // mysql format yyyy-mm-dd hh:mm:ss std::string _Mode; //r or s // from read scan data std::vector _ElevAng; // Solar Scan Elevation Data Vector2D _ScanData; // Solar to Limb function for bands 1-16 // All the signals on an gridded altitude std::vector _Times; // seconds since _StartTime Vector2D _DetectorData; // bands 1-16 Transmission and difference signals (17-24) Vector2D _DetData; Vector2D _SSTransmission; std::vector _exoV; // bands 1-16 exo values (counts) std::vector _noise; // noise values for signals std dev // The Z, P, T Profile std::vector _Altitude, _Temperature, _Pressure, _msisAlt, _msisO, _msisO2, _msisN2; // Ephemeris Data Tangent Point lats and longs Doppler shifts etc. std::vector _ViewAngle, _TPAlt, _TPLat, _TPLon, _SSRefraction; // _SSTransmission; ; // radius of curvature float _CurvatureRadius, _EarthSunDistance, _LOS_Bearing; // location interpolated to 83km Needs implemented float _Lat, _Lon, _RegOffset; // Filter Temperatures std::vector _FilterTemps; // (K) bands 1-16 filter temperatures // attenuator settings std::vector _Attenuators; //band 1-16 std::vector _ThermalChiSq; // NO Thermal Correction // Lockdown of Band 3 std::vector _LockDownElev; // radians std::vector _LockDownAz; //Radians std::vector _SolarExtent; //radians // database info gatsDBpp::GATS_DBptr _dbconn; bool _blob; // this is string data std::string _summaryTable, _mergedTPtable, _transmissionTable,_signalTable, _statsTable , _solarTable, _solarAngleTable, _ephemTable, _timeTable, _lockdownTable, _altsTable, _driftTable,_solarDatTable,_miscTable,_msisTable; }; extern Level1Data gLevel1Data; #endif //_LEVEL1DATA_H_