Earth Observation Mission CFI Software Orbit Software User Manual |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.18 00003 //-------------------------------------------------------- 00004 00005 //-------------------------------------------------------------------- 00006 // CVS Info: $Id: OrbitId.h,v 1.31 2014-02-25 15:36:33 cavm Exp $ 00007 //-------------------------------------------------------------------- 00008 00009 #ifndef _ORBITID_H 00010 #define _ORBITID_H 00011 00012 //--INCLUDE----------------------------------------------------------- 00013 #include "OrbitData.h" 00014 #include "CfiError.h" 00015 #include "CfiId.h" 00016 #include "TimeCorrelation.h" 00017 #include "OsvRec.h" 00018 #include "OsfRec.h" 00019 #include "SatId.h" 00020 #include "StateVector.h" 00021 #include "ModelId.h" 00022 #include "PropagPreciseConf.h" 00023 #include "TleRec.h" 00024 #include "SP3File.h" 00025 #include "OemFile.h" // AN-578 00026 #include "OrbitFileDiagnostics.h" // ANR-692 00027 00028 //--NAMESPACES-------------------------------------------------------- 00029 00030 namespace EECFI 00031 { 00032 00036 class XO_DECL OrbitIdCheckReport 00037 { 00038 friend class OrbitId; 00039 public: 00040 long numOsvsOutsideLooseTolerance; 00041 std::vector<long> indexOsvsOutsideLooseTolerance; 00042 long numOsvsOutsideTightTolerance; 00043 std::vector<long> indexOsvsOutsideTightTolerance; 00044 std::vector<OrbitFileDiagnosticsReport> fileDiagnosticsReports; 00045 00046 OrbitIdCheckReport(); 00047 ~OrbitIdCheckReport() NOEXCEPT; 00048 private: 00049 explicit OrbitIdCheckReport(void *report); 00050 };// Added for ANR-692 00051 00055 class XO_DECL OrbitId: public CfiId 00056 { 00057 friend class ANXTime; 00058 friend class RelANXTime; 00059 friend class Swath; 00060 friend class SwathStar; 00061 friend class OrbitExtra; 00062 friend class SwathId; // AN-505 00063 friend class AttitudeDef; // AN-596 00064 00065 public: 00066 00071 OrbitId( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00072 long timeRef, double time, 00073 long orbit0, long driftMode, double ascMlstDrift, 00074 double inclination, long irep, long icyc, double rlong, 00075 double ascMlst ) ; 00076 00079 OrbitId( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00080 long timeRef, double time, 00081 long orbit0, const RefOrbitInfo &refOrbitInfo ) ; 00082 00084 OrbitId( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00085 long timeRef, double time, 00086 const double pos[3], const double vel[3], long absOrbit ) ; 00087 00089 OrbitId( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00090 long timeRef, long orbitFileMode, 00091 const std::vector<std::string> &inputFiles, long timeInitMode, 00092 double time0, double time1, 00093 long orbit0, long orbit1) ; 00094 00096 OrbitId( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00097 long timeRef, double time, 00098 const double pos[3], const double vel[3], long absOrbit, 00099 const PropagPreciseConf &preciseConf ) ; 00100 00102 OrbitId( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00103 long timeRef, long orbitFileMode, 00104 const std::vector<std::string> &inputFiles, long timeInitMode, 00105 double time0, double time1, 00106 long orbit0, long orbit1, 00107 const PropagPreciseConf &preciseConf ) ; 00108 00110 OrbitId( const SatId &satId, 00111 const ModelId &modelId, 00112 const TimeCorrelation &timeCor, 00113 long timeRef, 00114 long orbitFileMode, 00115 const std::vector<OsfFile> &osfData, 00116 long timeInitMode, 00117 double time0, double time1, 00118 long orbit0, long orbit1) ; 00120 OrbitId( const SatId &satId, 00121 const ModelId &modelId, 00122 const TimeCorrelation &timeCor, 00123 long timeRef, 00124 long orbitFileMode, 00125 const std::vector<OrbitFile> &osvData, 00126 long timeInitMode, 00127 double time0, double time1, 00128 long orbit0, long orbit1) ; 00132 OrbitId( const SatId &satId, 00133 const ModelId &modelId, 00134 const TimeCorrelation &timeCor, 00135 long timeRef, 00136 long orbitFileMode, 00137 const std::vector<OrbitFile> &osvData, 00138 const OrbitChangeData &orbitChangeData, 00139 long timeInitMode, 00140 double time0, double time1, 00141 long orbit0, long orbit1) ; // ANR-527 00143 OrbitId( const SatId &satId, 00144 const ModelId &modelId, 00145 const TimeCorrelation &timeCor, 00146 long timeRef, 00147 long orbitFileMode, 00148 const std::vector<DorisFile> &dorisData, 00149 long timeInitMode, 00150 double time0, double time1, 00151 long orbit0, long orbit1) ; 00155 OrbitId( const SatId &satId, 00156 const ModelId &modelId, 00157 const TimeCorrelation &timeCor, 00158 long timeRef, 00159 long orbitFileMode, 00160 const std::vector<DorisFile> &dorisData, 00161 const OrbitChangeData &orbitChangeData, 00162 long timeInitMode, 00163 double time0, double time1, 00164 long orbit0, long orbit1) ; // ANR-527 00165 00167 OrbitId( const SatId &satId, 00168 const ModelId &modelId, 00169 const TimeCorrelation &timeCor, 00170 long timeRef, 00171 long orbitFileMode, 00172 const std::vector<SP3File> &sp3Data, 00173 long timeInitMode, 00174 double time0, double time1) ; // AN-550 00175 00178 OrbitId( const SatId &satId, 00179 const ModelId &modelId, 00180 const TimeCorrelation &timeCor, 00181 const GeoOrbitInitData &geoOrbitInit) ; // Added for AN-353 00182 00184 OrbitId( const SatId &satId, 00185 const ModelId &modelId, 00186 const TimeCorrelation &timeCor, 00187 long timeRef, 00188 long orbitFileMode, 00189 const std::vector<OemFile> &oemData, 00190 long timeInitMode, 00191 double time0, double time1) ; // AN-578 00192 00194 OrbitId( OrbitId &orbitIdIn ); 00195 00197 ~OrbitId() EXCEPT; 00198 00202 void init( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00203 long timeRef, double time, 00204 long orbit0, long driftMode, double ascMlstDrift, 00205 double inclination, long irep, long icyc, double rlong, 00206 double ascMlst ) ; 00207 00209 void init( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00210 long timeRef, double time, 00211 long orbit0, const RefOrbitInfo &refOrbitInfo ) ; 00212 00214 void init( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00215 long timeRef, double time, 00216 const double pos[3], const double vel[3], long absOrbit ) ; 00217 00219 void init( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00220 long timeRef, long orbitFileMode, 00221 const std::vector<std::string> &inputFiles, long timeInitMode, 00222 double time0, double time1, 00223 long orbit0, long orbit1) ; 00224 00226 void init( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00227 long timeRef, double time, 00228 const double pos[3], const double vel[3], long absOrbit, 00229 const PropagPreciseConf &preciseConf) ; 00230 00232 void init( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00233 long timeRef, long orbitFileMode, 00234 const std::vector<std::string> &inputFiles, long timeInitMode, 00235 double time0, double time1, 00236 long orbit0, long orbit1, 00237 const PropagPreciseConf &preciseConf ) ; 00238 00241 void init( const SatId &satId, 00242 const ModelId &modelId, 00243 const TimeCorrelation &timeCor, 00244 const GeoOrbitInitData &geoOrbitInit) ; // Added for AN-353 00245 00247 void change( const OrbitChangeData &changeData) ; // Added for AN-527 00248 00250 SatId satId() const; 00251 00253 std::vector<OsvRec> getOsv() const; 00254 00256 void setOsv( const std::vector<OsvRec> &osvRecList ); 00257 00259 std::vector<ANXExtra> getAnx() const; 00260 00262 void setAnx( const std::vector<ANXExtra> &anxList ); 00263 00265 std::vector<OsfRecords> getOsf() const; 00266 00268 void setOsf( const std::vector<OsfRecords> &osvRecList ); 00269 00271 ValidityTime getValTime() const; 00272 00274 void setValTime( const ValidityTime &valTime ); 00275 00277 PropagPreciseConf getPrecisePropagConfig() const ; 00278 00280 void setPrecisePropagConfig( const PropagPreciseConf &preciseConf ); 00281 00283 void setGeoOrbitInfo( const GeoOrbitInfo &geoOrbitInfo ) ; // Added for AN-353 00284 00286 GeoOrbitInfo getGeoOrbitInfo() ; // Added for AN-353 00287 00289 OrbitalInfo getOrbitInfo( long absoluteOrbit ) const ; 00290 00299 void orbitInfoConfigure( long item, long option ) const ; // AN-523 00300 00302 OrbitInfo getOrbitNumbersFromRel( long relOrbit, long cycle ) const ; 00303 00305 OrbitInfo getOrbitNumbersFromPhase( long phase ) const ; 00306 00308 OrbitInfo getOrbitNumbersFromAbs( long absOrbit ) const ; 00309 00313 StateVector osvCompute( long mode, long timeRef, double time) const ; 00314 00318 StateVectorExtraInfo osvComputeExtra( long extraChoice ) const ; 00319 00331 StateVector positionOnOrbitToTime( long abs_orbit_number, long angle_type, 00332 double angle, double angle_rate, double angle_rate_rate, 00333 long deriv, long time_ref) const ; 00334 00342 TleRec osvToTle( long timeMode, long timeRef, double time0, double time1, 00343 long orbit0, long orbit1 ) const; 00344 00373 OrbitIdCheckReport check(const OrbitFileDiagnosticsSettings &settings) const ; 00374 00376 void operator=( const OrbitId &orbitIdIn ); 00377 00378 protected: 00379 00381 OrbitId(); 00382 00384 GenericId* getId(); // this is the xo_orbit_id variable 00385 00387 void eraseOrbit() ; 00388 00389 private: 00390 00392 void dataFileInit(const SatId &satId, 00393 const ModelId &modelId, 00394 const TimeCorrelation &timeCor, 00395 long timeRef, 00396 long orbitFileMode, 00397 const void *fileData, 00398 long timeInitMode, 00399 double time0, double time1, 00400 long orbit0, long orbit1) ; 00401 00402 TimeCorrelation timeId; 00403 ModelId modelId; 00404 }; 00405 00406 } // closing namespace 00407 00408 #endif