Earth Observation Mission CFI Software Orbit Software User Manual |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.26 00003 //-------------------------------------------------------- 00004 00005 //-------------------------------------------------------------------- 00006 // CVS Info: $Id: OrbitData.h,v 1.33 2014-03-25 07:51:59 cavm Exp $ 00007 //-------------------------------------------------------------------- 00008 00013 00014 #ifndef EECFI_ORBITDATA 00015 #define EECFI_ORBITDATA 00016 00017 //--INCLUDE----------------------------------------------------------- 00018 #include <DataHandlingData.h> 00019 #include <LibData.h> 00020 #include <OrbitDllExport.h> 00021 #include <OsfFile.h> 00022 00023 //--NAMESPACES-------------------------------------------------------- 00024 00025 namespace EECFI 00026 { 00027 //------------------------------------------------------ 00028 // CONSTANT DATA 00029 //------------------------------------------------------ 00031 #define XOCFI_NUM_CHECK_PARAMS 6 00032 00033 /* AN-353: Geostationary default values */ 00035 #define XOCFI_GEO_DEFAULT_LATITUDE 0. 00036 00038 #define XOCFI_GEO_DEFAULT_ALTITUDE 35786000. 00039 00040 //------------------------------------------------------ 00041 // DATA ENUMERATION 00042 // Enumeration values are defined in an equivalent way to the C library 00043 // except for the prefix that has been changed from XX_ to XXCFI_ 00044 //------------------------------------------------------ 00045 00047 typedef enum 00048 { 00049 XOCFI_ORBIT_EXTRA_DEP_NODAL_PERIOD = 0, 00050 XOCFI_ORBIT_EXTRA_DEP_UTC_CURRENT_ANX, 00051 XOCFI_ORBIT_EXTRA_DEP_ORBIT_NUMBER, 00052 XOCFI_ORBIT_EXTRA_DEP_SEC_SINCE_ANX, 00053 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_A, 00054 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_E, 00055 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_I, 00056 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_RA, 00057 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_W, 00058 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_M, 00059 XOCFI_ORBIT_EXTRA_NUM_DEP_ELEMENTS 00060 } OrbitExtraModelMKODependantEnum; 00061 00063 typedef enum 00064 { 00065 XOCFI_ORBIT_EXTRA_GEOC_LONG = 0, 00066 XOCFI_ORBIT_EXTRA_GEOD_LAT, 00067 XOCFI_ORBIT_EXTRA_GEOD_ALT, 00068 XOCFI_ORBIT_EXTRA_GEOC_LONG_D, 00069 XOCFI_ORBIT_EXTRA_GEOD_LAT_D, 00070 XOCFI_ORBIT_EXTRA_GEOD_ALT_D, 00071 XOCFI_ORBIT_EXTRA_GEOC_LONG_2D, 00072 XOCFI_ORBIT_EXTRA_GEOD_LAT_2D, 00073 XOCFI_ORBIT_EXTRA_GEOD_ALT_2D, 00074 XOCFI_ORBIT_EXTRA_RAD_CUR_PARALLEL_MERIDIAN, 00075 XOCFI_ORBIT_EXTRA_RAD_CUR_ORTHO_MERIDIAN, 00076 XOCFI_ORBIT_EXTRA_RAD_CUR_ALONG_GROUNDTRACK, 00077 XOCFI_ORBIT_EXTRA_NORTH_VEL, 00078 XOCFI_ORBIT_EXTRA_EAST_VEL, 00079 XOCFI_ORBIT_EXTRA_MAG_VEL, 00080 XOCFI_ORBIT_EXTRA_AZ_VEL, 00081 XOCFI_ORBIT_EXTRA_NORTH_ACC, 00082 XOCFI_ORBIT_EXTRA_EAST_ACC, 00083 XOCFI_ORBIT_EXTRA_GROUNDTRACK_ACC, 00084 XOCFI_ORBIT_EXTRA_AZ_ACC, 00085 XOCFI_ORBIT_EXTRA_SAT_ECLIPSE_FLAG, 00086 XOCFI_ORBIT_EXTRA_SZA, 00087 XOCFI_ORBIT_EXTRA_MLST, 00088 XOCFI_ORBIT_EXTRA_TLST, 00089 XOCFI_ORBIT_EXTRA_TRUE_SUN_RA, 00090 XOCFI_ORBIT_EXTRA_TRUE_SUN_DEC, 00091 XOCFI_ORBIT_EXTRA_TRUE_SUN_SEMIDIAM, 00092 XOCFI_ORBIT_EXTRA_MOON_RA, 00093 XOCFI_ORBIT_EXTRA_MOON_DEC, 00094 XOCFI_ORBIT_EXTRA_MOON_SEMI_DIAM, 00095 XOCFI_ORBIT_EXTRA_MOON_AREA_LIT, 00096 XOCFI_ORBIT_EXTRA_OSC_KEPL_A, 00097 XOCFI_ORBIT_EXTRA_OSC_KEPL_E, 00098 XOCFI_ORBIT_EXTRA_OSC_KEPL_I, 00099 XOCFI_ORBIT_EXTRA_OSC_KEPL_RA, 00100 XOCFI_ORBIT_EXTRA_OSC_KEPL_W, 00101 XOCFI_ORBIT_EXTRA_OSC_KEPL_M, 00102 XOCFI_ORBIT_EXTRA_ORBIT_RAD, 00103 XOCFI_ORBIT_EXTRA_RADIAL_ORB_VEL, 00104 XOCFI_ORBIT_EXTRA_TRANS_ORB_VEL, 00105 XOCFI_ORBIT_EXTRA_ORB_VEL_MAG, 00106 XOCFI_ORBIT_EXTRA_RA_SAT, 00107 XOCFI_ORBIT_EXTRA_DEC_SAT, 00108 XOCFI_ORBIT_EXTRA_EARTH_ROTATION_ANGLE, 00109 XOCFI_ORBIT_EXTRA_RA_SAT_D, 00110 XOCFI_ORBIT_EXTRA_RA_SAT_2D, 00111 XOCFI_ORBIT_EXTRA_OSC_TRUE_LAT, 00112 XOCFI_ORBIT_EXTRA_OSC_TRUE_LAT_D, 00113 XOCFI_ORBIT_EXTRA_OSC_TRUE_LAT_2D, 00114 XOCFI_ORBIT_EXTRA_NUM_INDEP_ELEMENTS 00115 00116 } OrbitExtraModelMKOIndependantEnum; 00117 00119 typedef enum 00120 { 00121 // model independant 00122 XOCFI_ORBIT_EXTRA_NO_RESULTS = 0, 00123 XOCFI_ORBIT_EXTRA_GEOLOCATION = 1, 00124 XOCFI_ORBIT_EXTRA_GEOLOCATION_D = 2, 00125 XOCFI_ORBIT_EXTRA_GEOLOCATION_2D = 4, 00126 XOCFI_ORBIT_EXTRA_GEOLOCATION_EXTRA = 8, 00127 XOCFI_ORBIT_EXTRA_EARTH_FIXED_D = 16, 00128 XOCFI_ORBIT_EXTRA_EARTH_FIXED_2D = 32, 00129 XOCFI_ORBIT_EXTRA_SUN = 64, 00130 XOCFI_ORBIT_EXTRA_MOON = 128, 00131 XOCFI_ORBIT_EXTRA_OSCULATING_KEPLER = 256, 00132 XOCFI_ORBIT_EXTRA_INERTIAL_AUX = 512, 00133 // model dependant 00134 XOCFI_ORBIT_EXTRA_DEP_ANX_TIMING = 1024, 00135 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPLER = 2048, 00136 XOCFI_ORBIT_EXTRA_ALL_RESULTS = 4095 00137 00138 } OrbitExtraChoiceEnum; 00139 00141 typedef enum 00142 { 00143 XOCFI_SAT_DEFAULT = XLCFI_SAT_DEFAULT, 00144 XOCFI_SAT_DEFAULT1 = XLCFI_SAT_DEFAULT1, 00145 XOCFI_SAT_DEFAULT2 = XLCFI_SAT_DEFAULT2, 00146 XOCFI_SAT_DEFAULT3 = XLCFI_SAT_DEFAULT3, 00147 XOCFI_SAT_DEFAULT4 = XLCFI_SAT_DEFAULT4, 00148 XOCFI_SAT_DEFAULT5 = XLCFI_SAT_DEFAULT5, 00149 XOCFI_SAT_DEFAULT6 = XLCFI_SAT_DEFAULT6, 00150 XOCFI_SAT_DEFAULT7 = XLCFI_SAT_DEFAULT7, 00151 XOCFI_SAT_DEFAULT8 = XLCFI_SAT_DEFAULT8, 00152 XOCFI_SAT_DEFAULT9 = XLCFI_SAT_DEFAULT9, 00153 XOCFI_SAT_ERS1 = XLCFI_SAT_ERS1, 00154 XOCFI_SAT_ERS2 = XLCFI_SAT_ERS2, 00155 XOCFI_SAT_ENVISAT = XLCFI_SAT_ENVISAT, 00156 XOCFI_SAT_METOP1 = XLCFI_SAT_METOP1, 00157 XOCFI_SAT_METOP2 = XLCFI_SAT_METOP2, 00158 XOCFI_SAT_METOP3 = XLCFI_SAT_METOP3, 00159 XOCFI_SAT_CRYOSAT = XLCFI_SAT_CRYOSAT, 00160 XOCFI_SAT_ADM = XLCFI_SAT_ADM, 00161 XOCFI_SAT_GOCE = XLCFI_SAT_GOCE, 00162 XOCFI_SAT_SMOS = XLCFI_SAT_SMOS, 00163 XOCFI_SAT_TERRASAR = XLCFI_SAT_TERRASAR, 00164 XOCFI_SAT_EARTHCARE = XLCFI_SAT_EARTHCARE, 00165 XOCFI_SAT_SWARM_A = XLCFI_SAT_SWARM_A, 00166 XOCFI_SAT_SWARM_B = XLCFI_SAT_SWARM_B, 00167 XOCFI_SAT_SWARM_C = XLCFI_SAT_SWARM_C, 00168 XOCFI_SAT_SENTINEL_1A = XLCFI_SAT_SENTINEL_1A, 00169 XOCFI_SAT_SENTINEL_1B = XLCFI_SAT_SENTINEL_1B, 00170 XOCFI_SAT_SENTINEL_2 = XLCFI_SAT_SENTINEL_2, 00171 XOCFI_SAT_SENTINEL_3 = XLCFI_SAT_SENTINEL_3, 00172 XOCFI_SAT_SEOSAT = XLCFI_SAT_SEOSAT, 00173 XOCFI_SAT_SENTINEL_1C = XLCFI_SAT_SENTINEL_1C, 00174 XOCFI_SAT_SENTINEL_2A = XLCFI_SAT_SENTINEL_2A, 00175 XOCFI_SAT_SENTINEL_2B = XLCFI_SAT_SENTINEL_2B, 00176 XOCFI_SAT_SENTINEL_2C = XLCFI_SAT_SENTINEL_2C, 00177 XOCFI_SAT_SENTINEL_3A = XLCFI_SAT_SENTINEL_3A, 00178 XOCFI_SAT_SENTINEL_3B = XLCFI_SAT_SENTINEL_3B, 00179 XOCFI_SAT_SENTINEL_3C = XLCFI_SAT_SENTINEL_3C, 00180 XOCFI_SAT_JASON_CSA = XLCFI_SAT_JASON_CSA, // AN-531 00181 XOCFI_SAT_JASON_CSB = XLCFI_SAT_JASON_CSB, // AN-531 00182 XOCFI_SAT_METOP_SG_A1 = XLCFI_SAT_METOP_SG_A1, // AN-530 00183 XOCFI_SAT_METOP_SG_A2 = XLCFI_SAT_METOP_SG_A2, // AN-530 00184 XOCFI_SAT_METOP_SG_A3 = XLCFI_SAT_METOP_SG_A3, // AN-530 00185 XOCFI_SAT_METOP_SG_B1 = XLCFI_SAT_METOP_SG_B1, // AN-530 00186 XOCFI_SAT_METOP_SG_B2 = XLCFI_SAT_METOP_SG_B2, // AN-530 00187 XOCFI_SAT_METOP_SG_B3 = XLCFI_SAT_METOP_SG_B3, // AN-530 00188 XOCFI_SAT_SENTINEL_5P = XLCFI_SAT_SENTINEL_5P, // AN-502 00189 XOCFI_SAT_BIOMASS = XLCFI_SAT_BIOMASS, // AN-601 00190 XOCFI_SAT_SENTINEL_5 = XLCFI_SAT_SENTINEL_5, // AN-639 00191 XOCFI_SAT_SAOCOM_CS = XLCFI_SAT_SAOCOM_CS, // AN-640 00192 XOCFI_SAT_FLEX = XLCFI_SAT_FLEX, /* AN-683 */ 00193 XOCFI_SAT_SENTINEL_6A = XLCFI_SAT_SENTINEL_6A, 00194 XOCFI_SAT_SENTINEL_6B = XLCFI_SAT_SENTINEL_6B, 00195 XOCFI_SAT_CIMR = XLCFI_SAT_CIMR, 00196 XOCFI_SAT_ROSEL = XLCFI_SAT_ROSEL, 00197 XOCFI_SAT_CHIME = XLCFI_SAT_CHIME, 00198 XOCFI_SAT_CRISTAL = XLCFI_SAT_CRISTAL, 00199 XOCFI_SAT_CO2M = XLCFI_SAT_CO2M, 00200 XOCFI_SAT_LSTM = XLCFI_SAT_LSTM, 00201 XOCFI_SAT_FORUM = XLCFI_SAT_FORUM, 00202 XOCFI_SAT_TRUTHS = XLCFI_SAT_TRUTHS, 00203 XOCFI_SAT_GENERIC = XLCFI_SAT_GENERIC, 00204 // AN-353 00205 XOCFI_SAT_GENERIC_GEO = XLCFI_SAT_GENERIC_GEO, 00206 XOCFI_SAT_MTG = XLCFI_SAT_MTG, 00207 // END AN-353 00208 XOCFI_SAT_GENERIC_MEO = XLCFI_SAT_GENERIC_MEO // AN-550 00209 } SatIdOrbitEnum; 00210 00212 typedef enum 00213 { 00214 XOCFI_TIME_UNDEF = XLCFI_TIME_UNDEF, 00215 XOCFI_TIME_TAI = XLCFI_TIME_TAI, 00216 XOCFI_TIME_UTC = XLCFI_TIME_UTC, 00217 XOCFI_TIME_UT1 = XLCFI_TIME_UT1, 00218 XOCFI_TIME_GPS = XLCFI_TIME_GPS 00219 } TimeRefOrbitEnum; 00220 00222 typedef enum 00223 { 00224 XOCFI_TIME_REF_OF_TAI = XDCFI_TIME_REF_OF_TAI, 00225 XOCFI_TIME_REF_OF_UTC = XDCFI_TIME_REF_OF_UTC, 00226 XOCFI_TIME_REF_OF_UT1 = XDCFI_TIME_REF_OF_UT1, 00227 XOCFI_TIME_REF_OF_GPS = XDCFI_TIME_REF_OF_GPS 00228 } TimeRefOfOrbitEnum; 00229 00231 typedef enum 00232 { 00233 XOCFI_SEL_FILE = 0, 00234 XOCFI_SEL_TIME, 00235 XOCFI_SEL_ORBIT, 00236 XOCFI_SEL_DEFAULT 00237 } InitModeEnum; 00238 00240 typedef enum 00241 { 00242 XOCFI_ORBIT_INIT_UNKNOWN_MODE = -1, 00243 XOCFI_ORBIT_INIT_AUTO = XDCFI_AUTO, 00244 XOCFI_ORBIT_INIT_ORBIT_CHANGE_MODE = XDCFI_ORBIT_CHANGE, 00245 XOCFI_ORBIT_INIT_STATE_VECTOR_MODE = XDCFI_STATE_VECTOR, 00246 XOCFI_ORBIT_INIT_OSF_MODE = XDCFI_OSF_TYPE, 00247 XOCFI_ORBIT_INIT_POF_MODE = XDCFI_POF_TYPE, 00248 XOCFI_ORBIT_INIT_ROF_MODE = XDCFI_ROF_TYPE, 00249 XOCFI_ORBIT_INIT_DORIS_MODE = XDCFI_DORIS_TYPE, 00250 XOCFI_ORBIT_INIT_POF_N_DORIS_MODE = XDCFI_POF_N_DORIS_TYPE, 00251 XOCFI_ORBIT_INIT_OEF_OSF_MODE = XDCFI_OEF_OSF_TYPE, 00252 XOCFI_ORBIT_INIT_OEF_POF_MODE = XDCFI_OEF_POF_TYPE, 00253 XOCFI_ORBIT_INIT_TLE_MODE = XDCFI_TLE_TYPE, 00254 XOCFI_ORBIT_INIT_SP3_MODE = XDCFI_SP3_TYPE, // AN-550 00255 XOCFI_ORBIT_INIT_OEM_MODE = XDCFI_OEM_TYPE, // AN-578 00256 XOCFI_ORBIT_INIT_STATE_VECTOR_PRECISE_MODE, 00257 XOCFI_ORBIT_INIT_POF_PRECISE_MODE, 00258 XOCFI_ORBIT_INIT_ROF_PRECISE_MODE, 00259 XOCFI_ORBIT_INIT_DORIS_PRECISE_MODE, 00260 XOCFI_ORBIT_INIT_OEF_POF_PRECISE_MODE, 00261 XOCFI_ORBIT_INIT_POF_N_DORIS_PRECISE_MODE, 00262 XOCFI_ORBIT_INIT_GEO_LON_MODE, // AN-353 00263 XOCFI_ORBIT_INIT_TLE_SDP4_MODE, // AN-494 00264 XOCFI_ORBIT_INIT_TLE_SGP4_MODE, // AN-494 00265 XOCFI_ORBIT_INIT_USER_OSV_LIST_MODE, // AN-497 00266 XOCFI_ORBIT_INIT_POF_ORBNUM_ADJ_MODE, /* ANR-527 */ 00267 XOCFI_ORBIT_INIT_ROF_ORBNUM_ADJ_MODE, /* ANR-527 */ 00268 XOCFI_ORBIT_INIT_DORIS_ORBNUM_ADJ_MODE, /* ANR-527 */ 00269 XOCFI_ORBIT_INIT_OEM_ORBNUM_ADJ_MODE, // AN-578 00270 XOCFI_ORBIT_INIT_MAX_VALUE 00271 00272 } OrbitInitModeEnum; 00273 00275 typedef enum 00276 { 00277 XOCFI_INTERPOL_MODEL_DEFAULT = 0 00278 } InterpolModelEnum; 00279 00281 typedef enum 00282 { 00283 // AN-497 00284 XOCFI_PROPAG_MODEL_NOT_INITIALIZED = -1, 00285 XOCFI_PROPAG_MODEL_MEAN_KEPL = 0, 00286 XOCFI_PROPAG_MODEL_SPOT = 1, 00287 XOCFI_PROPAG_MODEL_TLE = 2, 00288 XOCFI_PROPAG_MODEL_PRECISE = 3, 00289 XOCFI_PROPAG_MODEL_GEO = 4, 00290 XOCFI_PROPAG_MODEL_AUTO = 10, 00291 XOCFI_PROPAG_MODEL_DOUBLE = 100 00292 } PropagModelEnum; 00293 00295 typedef enum 00296 { 00297 XOCFI_NOSUNSYNC_DRIFT = 0, 00298 XOCFI_NOSUNSYNC_INCLINATION, 00299 XOCFI_NOSUNSYNC_DRIFT_NONLINEAR, 00300 XOCFI_NOSUNSYNC_USE_SIM_MODEL = 10 00301 } NoSunSychronousModeEnum; 00302 00304 typedef enum 00305 { 00306 XOCFI_OSV_PRECISE_NO = 1, 00307 XOCFI_OSV_PRECISE_MINUTE, 00308 XOCFI_OSV_PRECISE_TEN_SECONDS 00309 00310 } OsvPreciseEnum; 00311 00313 typedef enum 00314 { 00315 XOCFI_REF_FILETYPE_OSF = 1, 00316 XOCFI_REF_FILETYPE_OEF_OSF, 00317 XOCFI_REF_FILETYPE_POF, 00318 XOCFI_REF_FILETYPE_OEF_POF, 00319 XOCFI_REF_FILETYPE_DORIS_NAV, 00320 XOCFI_REF_FILETYPE_ROF, 00321 XOCFI_REF_FILETYPE_TLE, 00322 XOCFI_REF_FILETYPE_DORIS_PREM, 00323 XOCFI_REF_FILETYPE_DORIS_PREC 00324 00325 } RefFiletypeEnum; 00326 00328 typedef enum 00329 { 00330 XOCFI_NO_PHASE_INCREMENT = 0, 00331 XOCFI_PHASE_INCREMENT = 1 00332 } GenOsfPhaseIncrementEnum; 00333 00335 typedef enum 00336 { 00337 XOCFI_FIT_TLE = XDCFI_FIT_TLE, 00338 XOCFI_FIT_TLE_LIST = XDCFI_FIT_TLE_LIST, 00339 XOCFI_ONE_TLE_PER_OSV = XDCFI_ONE_TLE_PER_OSV 00340 } TLEFitModeEnum; 00341 00343 typedef enum 00344 { 00345 XOCFI_SEARCH_FORWARD = 1, 00346 XOCFI_SEARCH_BACKWARD = -1 00347 } GenOsfSearchDirectionEnum; 00348 00350 typedef enum 00351 { 00352 XOCFI_DEFAULT_VALUES = XDCFI_DEFAULT_VALUES, 00353 XOCFI_USER_VALUES = XDCFI_USER_VALUES 00354 } OrbitPrecisePropagUserFlagEnum; 00355 00357 typedef enum 00358 { 00359 XOCFI_NOT_SELECT = XDCFI_NOT_SELECT, 00360 XOCFI_SELECT = XDCFI_SELECT 00361 } OrbitPrecisePropagSelectionFlagEnum; 00362 00364 typedef enum 00365 { 00366 XOCFI_SGA_USE_PARAMETERS = XDCFI_SGA_USE_PARAMETERS, 00367 XOCFI_SGA_READ_VALUES_FROM_FILE = XDCFI_SGA_READ_VALUES_FROM_FILE 00368 } OrbitPrecisePropagSgaFlagEnum; 00369 00371 typedef enum 00372 { 00373 XOCFI_GC_LONGITUDE_ONLY 00374 } GeoCoordEnum; // Created for AN-353 00375 00377 typedef enum 00378 { 00379 XOCFI_FILTER_OUTLIERS 00380 } OrbitDataFilterEnum; // Created for ANR-382/455 00381 00383 typedef enum 00384 { 00385 XOCFI_REMOVE = 0, 00386 XOCFI_SMOOTH 00387 } OrbitDataFilterActionEnum; // Created for ANR-382/455 00388 00390 typedef enum 00391 { 00392 XOCFI_ORBIT_ID_CHANGE_OSF = 0, 00393 XOCFI_ORBIT_ID_CHANGE_TIME_ORBIT 00394 } OrbitIdChangeEnum; // ANR-527 00395 00397 typedef enum 00398 { 00399 XOCFI_ORBIT_INFO_ITEM_SMX 00400 } OrbitInfoItemsEnum; // AN-523 00401 00403 typedef enum 00404 { 00405 XOCFI_DEACTIVATE_ITEM, 00406 XOCFI_ACTIVATE_ITEM 00407 } OrbitInfoFlagEnum; // AN-523 00408 00410 typedef enum 00411 { 00412 XOCFI_ORBIT_ABS = 0, 00413 XOCFI_ORBIT_REL = 1 00414 } XOOrbitTypeEnum; //AN-596 00415 00417 typedef enum 00418 { 00419 XOCFI_TIME_TYPE, 00420 XOCFI_ORBIT_TYPE, 00421 XOCFI_BOTH_TYPE 00422 } XOTimeTypeEnum; 00423 // END AN-596 00424 00425 //------------------------------------------------------ 00426 // DATA STRUCTURES 00427 //------------------------------------------------------ 00428 00430 class XO_DECL ANXExtra 00431 { 00432 public: 00433 long absOrbit; 00434 double tAnx; 00435 double tNod; 00436 00438 ANXExtra() : 00439 absOrbit(-1L), tAnx(-1.), tNod(-1.) {} 00440 00442 ANXExtra(long absOrb, double timeAnx, double timeNod) : 00443 absOrbit(absOrb), tAnx(timeAnx), tNod(timeNod) {} 00444 }; 00445 00447 class XO_DECL ValidityTime 00448 { 00449 public: 00450 long timeRef; 00451 double start; 00452 double stop; 00453 00455 ValidityTime() : 00456 timeRef(-1L), start(-1.), stop(-1.) {} 00457 00459 ValidityTime(long timeReference, double startVal, double stopVal) : 00460 timeRef(timeReference), start(startVal), stop(stopVal) {} 00461 }; 00462 00464 class XO_DECL OrbitInfo 00465 { 00466 public: 00467 long absOrbit; 00468 long relOrbit; 00469 long cycle; 00470 long phase; 00471 00473 OrbitInfo() : 00474 absOrbit(-1L), relOrbit(-1L), cycle(-1L), phase(-1L) {} 00475 00477 OrbitInfo(long absoluteOrbit, long relativeOrbit, long cycleOrbit, long phaseOrbit) : 00478 absOrbit(absoluteOrbit), relOrbit(relativeOrbit), cycle(cycleOrbit), phase(phaseOrbit) {} 00479 }; 00480 00482 class XO_DECL StateVectorInfo 00483 { 00484 public: 00485 double pos[3]; 00486 double vel[3]; 00487 double acc[3]; 00488 00490 StateVectorInfo() : 00491 pos{0., 0., 0.}, vel{0., 0., 0.}, acc{0., 0., 0.} {} 00492 00494 StateVectorInfo(const double* posIn, const double* velIn, const double* accIn) : 00495 pos{posIn[0], posIn[1], posIn[2]}, vel{velIn[0], velIn[1], velIn[2]}, acc{accIn[0], accIn[1], accIn[2]} {} 00496 }; 00497 00499 class XO_DECL StateVectorExtraInfo 00500 { 00501 public: 00502 double modelDep[XOCFI_ORBIT_EXTRA_NUM_DEP_ELEMENTS]; 00503 double modelIndep[XOCFI_ORBIT_EXTRA_NUM_INDEP_ELEMENTS]; 00504 00506 StateVectorExtraInfo() : 00507 modelDep(), modelIndep() {} 00508 00510 StateVectorExtraInfo(const double* model, const double* extra) : 00511 modelDep(), modelIndep() 00512 { 00513 std::memcpy(modelDep, model, XOCFI_ORBIT_EXTRA_NUM_DEP_ELEMENTS * sizeof(double)); 00514 std::memcpy(modelIndep, extra, XOCFI_ORBIT_EXTRA_NUM_INDEP_ELEMENTS * sizeof(double)); 00515 } 00516 }; 00517 00519 class XO_DECL AnxInfo 00520 { 00521 public: 00522 double anxTai; 00523 double anxUtc; 00524 double anxUt1; 00525 double anxPos[3]; 00526 double anxVel[3]; 00527 double kepl[6]; 00528 double tNod; 00529 }; 00530 00532 class XO_DECL RefOrbitInfo 00533 { 00534 public: 00535 long driftMode; 00536 double inclination; 00537 long repCycle; 00538 long cycleLength; 00539 double AnxLong; 00540 double mlst; 00541 double mlstDrift; 00542 MlstNonlinearDrift mlstNonlinearDrift; 00543 ANXLongDrift anxLongitudeDrift; 00544 }; 00545 00547 class XO_DECL OsfRecords 00548 { 00549 public: 00550 OrbitInfo missionInfo; 00551 RefOrbitInfo refOrbitinfo; 00552 AnxInfo anxInfo; 00553 }; 00554 00556 class XO_DECL OrbitalInfo 00557 { 00558 public: 00559 long absOrbit; 00560 long repCycle; 00561 long cycLength; 00562 double mlstDrift; 00563 double mlst; 00564 double phasing; 00565 double utcAnx; 00566 double posAnx[3]; 00567 double velAnx[3]; 00568 double meanKep[6]; 00569 double oscKep[6]; 00570 double nodalPeriod; 00571 // AN-523 00572 double utcSmx; 00573 }; 00574 00575 // AN-353 00577 class XO_DECL GeoGeodCoord 00578 { 00579 public: 00580 double gcLongitude; 00581 double gdLatitude; 00582 double gdAltitude; 00583 }; 00584 00586 class XO_DECL GeoOrbitInfo 00587 { 00588 public: 00589 GeoGeodCoord geodCoord; 00590 }; 00591 00593 class XO_DECL GeoOrbitInitData 00594 { 00595 public: 00596 long type; 00597 GeoOrbitInfo geoOrbitInfo; 00598 }; 00599 // END AN-353 00600 00601 // ANR-382 00603 class XO_DECL OrbitDataFilterOutliersConfiguration 00604 { 00605 public: 00606 OrbitDataFilterOutliersConfiguration() : 00607 action(XOCFI_REMOVE), thresholdPos(0.), thresholdVel(0.) {} 00608 00609 OrbitDataFilterOutliersConfiguration(long a, double p, double v) : 00610 action(a), thresholdPos(p), thresholdVel(v) {} 00611 00612 long action; 00613 double thresholdPos; 00614 double thresholdVel; 00615 }; 00616 00618 class XO_DECL OrbitDataFilterConfiguration 00619 { 00620 public: 00621 OrbitDataFilterConfiguration() : 00622 type(0L), outliersConfiguration() {} 00623 00627 explicit OrbitDataFilterConfiguration(long t) : 00628 type(t), outliersConfiguration() 00629 { 00630 switch(type) 00631 { 00632 case XOCFI_FILTER_OUTLIERS: 00633 outliersConfiguration = OrbitDataFilterOutliersConfiguration(XOCFI_REMOVE, 0, 0); 00634 break; 00635 } 00636 } 00637 00644 OrbitDataFilterConfiguration(long t, long a, double p, double v) : 00645 type(t), outliersConfiguration() 00646 { 00647 switch(type) 00648 { 00649 case XOCFI_FILTER_OUTLIERS: 00650 outliersConfiguration = OrbitDataFilterOutliersConfiguration(a, p, v); 00651 break; 00652 } 00653 } 00654 00655 long type; 00656 OrbitDataFilterOutliersConfiguration outliersConfiguration; 00657 }; 00658 00660 class XO_DECL OrbitDataFilterOutliersReport 00661 { 00662 public: 00663 OrbitDataFilterOutliersReport() : 00664 nofOSVin(0L), 00665 nofOSVfiltered(0L), 00666 minTimeGap(0.), 00667 maxTimeGap(0.), 00668 minRMSPos(0.), 00669 maxRMSPos(0.), 00670 minRMSVel(0.), 00671 maxRMSVel(0.) {} 00672 00673 OrbitDataFilterOutliersReport(long in, long fi, double ming, double MaxG, double minp, double MaxP, double minv, double MaxV) : 00674 nofOSVin(in), 00675 nofOSVfiltered(fi), 00676 minTimeGap(ming), 00677 maxTimeGap(MaxG), 00678 minRMSPos(minp), 00679 maxRMSPos(MaxP), 00680 minRMSVel(minv), 00681 maxRMSVel(MaxV) {} 00682 00683 long nofOSVin; 00684 long nofOSVfiltered; 00685 double minTimeGap; 00686 double maxTimeGap; 00687 double minRMSPos; 00688 double maxRMSPos; 00689 double minRMSVel; 00690 double maxRMSVel; 00691 }; 00692 00694 class XO_DECL OrbitDataFilterReport 00695 { 00696 public: 00697 OrbitDataFilterReport() : 00698 type(0L), outliersReport() {} 00699 OrbitDataFilterReport(long t) : 00700 type(t), outliersReport() {} 00701 00702 long type; 00703 OrbitDataFilterOutliersReport outliersReport; 00704 }; 00705 // END ANR-382 00706 00708 class XO_DECL OrbitChangeFile 00709 { 00710 public: 00711 long fileType; 00712 OsfFile osfData; 00713 00714 OrbitChangeFile() : 00715 fileType(-1), osfData() {} 00716 00717 }; // AN-527 00718 00720 class XO_DECL OrbitChangeData 00721 { 00722 public: 00723 long changeMode; 00724 OrbitChangeFile changeFile; 00725 double changeTimeRef; 00726 double changeTime; 00727 long changeOrbit; 00728 00729 OrbitChangeData() : 00730 changeMode(-1), changeFile(), changeTimeRef(0.), changeTime(0.), changeOrbit(0L) {} 00731 00732 }; // AN-527 00733 00735 class XO_DECL OrbTime 00736 { 00737 public: 00738 long type; 00739 long timeRef; 00740 double time; 00741 long orbitNum; 00742 long sec; 00743 long msec; 00744 00745 OrbTime() : 00746 type(0L), timeRef(XOCFI_TIME_UTC), time(0.), orbitNum(0L), sec(0L), msec(0L) {} 00747 00748 OrbTime(long typeIn, long timeR, double timeIn, long orbitNumIn, long secIn, long msecIn) : 00749 type(typeIn), timeRef(timeR), time(timeIn), orbitNum(orbitNumIn), sec(secIn), msec(msecIn) {} 00750 00751 }; // AN-596 00752 00754 class XO_DECL OrbTimeInterval 00755 { 00756 public: 00757 OrbTime tstart; 00758 OrbTime tstop; 00759 00760 OrbTimeInterval() : 00761 tstart(), tstop() {} 00762 00763 OrbTimeInterval(const OrbTime& t0, const OrbTime& t1) : 00764 tstart(t0), tstop(t1) {} 00765 00766 }; // AN-596 00767 00768 } // namespace EECFI 00769 00770 #endif