Earth Observation Mission CFI Software DataHandling Software User Manual |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.20 00003 //-------------------------------------------------------- 00004 00005 //-------------------------------------------------------------------- 00006 // CVS Info: $Id: DataHandlingData.h,v 1.35 2014-03-25 07:51:58 cavm Exp $ 00007 //-------------------------------------------------------------------- 00008 00010 // This file contais generic data that can be used as input/output in 00011 // the classes of EXPCFI DataHandling library 00013 00014 #ifndef __EECFI_DATAHANDLINGDATA__ 00015 #define __EECFI_DATAHANDLINGDATA__ 00016 00017 //--INCLUDE----------------------------------------------------------- 00018 #include <AttRec.h> 00019 #include <DataHandlingDllExport.h> 00020 #include <string> 00021 #include <vector> 00022 #define MaxStationVertices 999 00023 00024 //--NAMESPACES-------------------------------------------------------- 00025 00026 namespace EECFI 00027 { 00028 //------------------------------------------------------ 00029 // CONSTANT DATA 00030 //------------------------------------------------------ 00031 00032 //------------------------------------------------------ 00033 // DATA ENUMERATION 00034 //------------------------------------------------------ 00035 00037 typedef enum 00038 { 00039 XDCFI_ATT_QUATERNIONS = 0, 00040 XDCFI_ATT_ANGLES 00041 } AttitudeDataTypeEnum; 00042 00044 typedef enum 00045 { 00046 XDCFI_LINE_GEOM = 0, 00047 XDCFI_POINT_GEOM, 00048 XDCFI_LIMB_GEOM, 00049 XDCFI_DISTANCE_GEOM 00050 } GeomTypeEnum; 00051 00053 typedef enum 00054 { 00055 XDCFI_NO_ASAR = 0, 00056 XDCFI_NARROW_ASAR, 00057 XDCFI_WIDE_ASAR 00058 } AsarTypeEnum; 00059 00061 typedef enum 00062 { 00063 XDCFI_NO_REF = 0, 00064 XDCFI_STD_REF, 00065 XDCFI_USER_REF, 00066 XDCFI_PRED_REF, 00067 XDCFI_STD_REF_N = 10, 00068 XDCFI_USER_REF_N = 20, 00069 XDCFI_PRED_REF_N = 30, 00070 XDCFI_US76_REF = 300, 00071 XDCFI_TROPIC_REF, 00072 XDCFI_MID_SUM_REF, 00073 XDCFI_MID_WIN_REF, 00074 XDCFI_SUBAR_SUM_REF, 00075 XDCFI_SUBAR_WIN_REF, 00076 XDCFI_LUT_REF = 400, 00077 XDCFI_US76_REF_N = 3000, 00078 XDCFI_TROPIC_REF_N, 00079 XDCFI_MID_SUM_REF_N, 00080 XDCFI_MID_WIN_REF_N, 00081 XDCFI_SUBAR_SUM_REF_N, 00082 XDCFI_SUBAR_WIN_REF_N, 00083 XDCFI_LUT_REF_N = 4000 00084 } TargetRayEnum; 00085 00087 typedef enum 00088 { 00089 XDCFI_OPEN_SWATH, 00090 XDCFI_CLOSED_SWATH 00091 } SwathTypecEnum; 00092 00094 typedef enum 00095 { 00096 XDCFI_GEODETIC_SWATH_TYPE, 00097 XDCFI_INERTIAL_SWATH_TYPE 00098 } SwathPointTypeEnum; 00099 00101 typedef enum 00102 { 00103 XDCFI_SWATH_POINTING_GEOM = 0, /* Algorithms of calculation of Swaths */ 00104 XDCFI_SWATH_DISTANCE_GEOM, 00105 XDCFI_SWATH_LIMB_GEOM, 00106 XDCFI_SWATH_INERTIAL_GEOM, 00107 XDCFI_SWATH_SUBSATELLITE_GEOM, 00108 XDCFI_SWATH_ASAR_GEOM, 00109 XDCFI_SWATH_ASAR_GEOM_RANGERATE_ALGO, 00110 XDCFI_SWATH_INCIDENCE_ANGLE_GEOM // AN-665 00111 } SwathGeomEnum; 00112 00114 typedef enum 00115 { 00116 XDCFI_NOT_DEFINED = -1, 00117 XDCFI_POINT = 0, 00118 XDCFI_CIRCLE = 1, 00119 XDCFI_SEGMENT = 2, 00120 XDCFI_POLYGON = 3 00121 } ZoneTypeEnum; 00122 00124 typedef enum 00125 { 00126 XDCFI_SAT_ORBITAL_REF = 0, 00127 XDCFI_SAT_NOMINAL_ATT, 00128 XDCFI_SAT_ATT, 00129 XDCFI_INSTR_ATT 00130 } AttitudeFrameEnum; 00131 00133 typedef enum 00134 { 00135 XDCFI_BAR_MEAN_2000 = 1, 00136 XDCFI_HEL_MEAN_2000, 00137 XDCFI_GEO_MEAN_2000, 00138 XDCFI_MEAN_DATE, 00139 XDCFI_TRUE_DATE, 00140 XDCFI_PSEUDO_EARTH_FIXED, 00141 XDCFI_EARTH_FIXED, 00142 XDCFI_LIF, 00143 XDCFI_BAR_MEAN_1950, 00144 XDCFI_GALACTIC, 00145 XDCFI_SAT_ACT_REF, 00146 XDCFI_QUASI_MEAN_DATE, 00147 XDCFI_PSE_TRUE_DATE, 00148 XDCFI_TOPOCENTRIC, 00149 XDCFI_SAT_REF, 00150 XDCFI_SAT_REL_REF 00151 } CoordinateSystemsEnum; // Updated for AN-509 00152 00154 typedef enum 00155 { 00156 XDCFI_3_ADJUST_NOMI = 1, 00157 XDCFI_4_ADJUST_DMAN, 00158 XDCFI_5_INTERP_DGAP, 00159 XDCFI_6_EXTRAP_LT1D, 00160 XDCFI_7_EXTRAP_1D2D, 00161 XDCFI_8_EXTRAP_GT2D, 00162 XDCFI_8_EXTRAP_AMAN, 00163 XDCFI_Q_INDEX_MAX_ENUM 00164 } QualityIndexEnum; 00165 00167 typedef enum 00168 { 00169 XDCFI_SCF_DRAW_SOLID, 00170 XDCFI_SCF_DRAW_DASHED, 00171 XDCFI_SCF_DRAW_DOTTED, 00172 XDCFI_SCF_DRAW_TIMELINE 00173 } SCFDrawModesEnum; 00174 00176 typedef enum 00177 { 00178 XDCFI_SCF_FILL_SOLID, 00179 XDCFI_SCF_FILL_HOLLOW 00180 } SCFFillModesEnum; 00181 00183 typedef enum 00184 { 00185 XDCFI_EVENT_TYPE_NONE, 00186 XDCFI_EVENT_TYPE_ZONE, 00187 XDCFI_EVENT_TYPE_STATION, 00188 XDCFI_EVENT_TYPE_GEO 00189 } SCFEventTypeEnum; 00190 00192 typedef enum 00193 { 00194 XDCFI_SEL_FILE = 0, 00195 XDCFI_SEL_TIME, 00196 XDCFI_SEL_ORBIT, 00197 XDCFI_SEL_DEFAULT, 00198 XDCFI_SEL_NONE 00199 } TimeInitModeEnum; 00200 00202 typedef enum 00203 { 00204 XDCFI_TIME_UNDEF = -1, 00205 XDCFI_TIME_TAI, 00206 XDCFI_TIME_UTC, 00207 XDCFI_TIME_UT1, 00208 XDCFI_TIME_GPS 00209 } TimeRefDataHandlingEnum; 00210 00212 typedef enum 00213 { 00214 XDCFI_EXTEND_NUM_OSV = 0, 00215 XDCFI_EXTEND_TIME 00216 } ExtendTypeEnum; 00217 00219 typedef enum 00220 { 00221 XDCFI_TIME_REF_OF_TAI = XDCFI_TIME_TAI, 00222 XDCFI_TIME_REF_OF_UTC = XDCFI_TIME_UTC, 00223 XDCFI_TIME_REF_OF_UT1 = XDCFI_TIME_UT1, 00224 XDCFI_TIME_REF_OF_GPS = XDCFI_TIME_GPS 00225 } TimeRefOfDataHandlingEnum; 00226 00228 typedef enum 00229 { 00230 XDCFI_READ_DB = 0, 00231 XDCFI_GNOMONIC = 1, 00232 XDCFI_RECTANGULAR = 2 00233 } ProjectionEnum; 00234 00236 typedef enum 00237 { 00238 XDCFI_ATT_NONE = 0, 00239 XDCFI_ATT_AOCS, 00240 XDCFI_ATT_PARAM, 00241 XDCFI_ATT_HARMONIC, 00242 XDCFI_ATT_FILE, 00243 XDCFI_ATT_ANGLE, 00244 XDCFI_ATT_MATRIX 00245 } AttModelEnum; 00246 00248 typedef enum 00249 { 00250 XDCFI_ORBIT_FILE, 00251 XDCFI_OSF_FILE, 00252 XDCFI_DORIS_FILE, 00253 XDCFI_IERS_BULLETIN_FILE, 00254 XDCFI_USER_OSV_LIST, 00255 XDCFI_SP3_FILE, // AN-550 00256 XDCFI_POF_FILE, 00257 XDCFI_ROF_FILE, 00258 XDCFI_SDF_FILE, 00259 XDCFI_STF_FILE, 00260 XDCFI_ATTITUDE_FILE, 00261 XDCFI_DEM_CONF_FILE, 00262 XDCFI_DEM_FILE, 00263 XDCFI_ZONE_FILE, 00264 XDCFI_STATION_FILE, 00265 XDCFI_STAR_FILE, 00266 XDCFI_ATT_STAR_TRACKER_CONF_FILE, 00267 XDCFI_ATT_STAR_TRACKER_FILE, 00268 XDCFI_TLE_FILE, 00269 XDCFI_ATTITUDE_DEFINITION_FILE, //AN-469 00270 XDCFI_OEM_FILE, //AN-578 00271 XDCFI_FOV_CONSTRAINTS_FILE, //AN-628 00272 XDCFI_AEM_FILE //AN-578 00273 } FileEnum; // Updated for AN-527, to have it alligned with XD_data_file_type_enum 00274 00276 typedef enum 00277 { 00278 XDCFI_UNKNOWN_TYPE = -1, 00279 XDCFI_AUTO, 00280 XDCFI_ORBIT_CHANGE, 00281 XDCFI_STATE_VECTOR, 00282 XDCFI_OSF_TYPE, 00283 XDCFI_POF_TYPE, 00284 XDCFI_ROF_TYPE, 00285 XDCFI_DORIS_TYPE, 00286 XDCFI_POF_N_DORIS_TYPE, 00287 XDCFI_OEF_OSF_TYPE, 00288 XDCFI_OEF_POF_TYPE, 00289 XDCFI_IERS_B_TYPE, 00290 XDCFI_TLE_TYPE, 00291 XDCFI_STF_TYPE, 00292 XDCFI_DORISPREC_TYPE, 00293 XDCFI_DORISPREM_TYPE, 00294 XDCFI_ATT_TYPE, 00295 XDCFI_SCF_TYPE, 00296 XDCFI_PRECISE_PROPAG_TYPE, 00297 XDCFI_DEMCFG_TYPE, 00298 XDCFI_SATCFG_TYPE, 00299 XDCFI_GND_DB_TYPE, 00300 XDCFI_SW_DEF_TYPE, 00301 XDCFI_ZON_DB_TYPE, 00302 XDCFI_STR1ATT_TYPE, 00303 XDCFI_IERS_A_TYPE, 00304 XDCFI_IERS_B_AND_A_TYPE, 00305 XDCFI_ATT_DEF_TYPE, 00306 XDCFI_USER_OSV_LIST_TYPE, 00307 XDCFI_SP3_TYPE, /* AN-550 */ 00308 XDCFI_OSF_POF_MODE, // AN-527 00309 XDCFI_OSF_ROF_MODE, // AN-527 00310 XDCFI_OSF_DORIS_MODE, // AN-527 00311 XDCFI_OEM_TYPE, // AN-578 00312 XDCFI_OSF_OEM_MODE, // AN-578 00313 XDCFI_FILE_TYPE_MAX_VALUE 00314 } FileTypeEnum; 00315 00317 typedef enum 00318 { 00319 XDCFI_DEM_ACE_MODEL = 0, 00320 XDCFI_DEM_GETASSE30_V1, 00321 XDCFI_DEM_GETASSE30_V2, 00322 XDCFI_DEM_ACE2_9SEC, 00323 XDCFI_DEM_GETASSE30_V3, /*AN-503*/ 00324 XDCFI_DEM_GDEM_V2, /*AN-504*/ 00325 XDCFI_DEM_ACE2_30SEC, /*AN-615*/ 00326 XDCFI_DEM_ACE2_3SEC, // AN-619 00327 XDCFI_DEM_ACE2_5MIN, // AN-726 00328 XDCFI_DEM_GENERIC, // AN-740 00329 XDCFI_DEM_TANDEMX_90, // AN-767 00330 XDCFI_DEM_GDEM_V3, // AN-827 00331 XDCFI_DEM_NUM_MODELS 00332 } DemModelEnum; 00333 00335 typedef enum 00336 { 00337 XDCFI_DEM_GETASSE30_SOURCE_ACE, /* land-ice/snow */ 00338 XDCFI_DEM_GETASSE30_SOURCE_MSS, /* sea */ 00339 XDCFI_DEM_GETASSE30_SOURCE_EGM96, /* sea-ice */ 00340 XDCFI_DEM_GETASSE30_SOURCE_SRTM30 /* land */ 00341 } DemGetasseDataSourceEnum; 00342 00344 typedef enum 00345 { 00346 XDCFI_DEM_ACE2_SOURCE_SRTM0, /* Pure SRTM (above 60�N pure GLOBE data, below 60S pure ACE [original] data) */ 00347 XDCFI_DEM_ACE2_SOURCE_SRTM1, /* SRTM voids filled by interpolation and/or altimeter data */ 00348 XDCFI_DEM_ACE2_SOURCE_SRTM2, /* SRTM data warped using the ERS-1 Geodetic Mission */ 00349 XDCFI_DEM_ACE2_SOURCE_SRTM3, /* SRTM data warped using EnviSat & ERS-2 data */ 00350 XDCFI_DEM_ACE2_SOURCE_SRTM_LAKE, /* Mean lake level data derived from Altimetry */ 00351 XDCFI_DEM_ACE2_SOURCE_SRTM_GLOBE, /* GLOBE/ACE data warped using combined altimetry (only above 60�N) */ 00352 XDCFI_DEM_ACE2_SOURCE_SRTM_ALT /* Pure altimetry data (derived from ERS-1 Geodetic Mission, 00353 ERS-2 and EnviSat data using Delaunay Triangulation and Bilinear interpolation) */ 00354 } DemAce2DataSourceEnum; 00355 00357 typedef enum 00358 { 00359 XDCFI_DEM_GDEM_SOURCE_NO_SOURCE_FILE = -1, 00360 XDCFI_DEM_GDEM_SOURCE_SRTM3_V3 = 0, 00361 XDCFI_DEM_GDEM_SOURCE_SRTM3_V2, 00362 XDCFI_DEM_GDEM_SOURCE_NED, 00363 XDCFI_DEM_GDEM_SOURCE_CDED, 00364 XDCFI_DEM_GDEM_SOURCE_ALASKA_DEM 00365 } DemGdemV2DataSourceEnum; 00366 00368 typedef enum 00369 { 00370 XDCFI_DEM_CELL_CENTER, 00371 XDCFI_DEM_CELL_NORTHWEST, 00372 XDCFI_DEM_CELL_NORTHEAST, 00373 XDCFI_DEM_CELL_SOUTHEAST, 00374 XDCFI_DEM_CELL_SOUTHWEST, 00375 } DemCellLocationEnum; // AN-778 00376 00378 typedef enum 00379 { 00380 XDCFI_DEM_DATA_TYPE_INT16 = 0, 00381 XDCFI_DEM_DATA_TYPE_INT32, 00382 XDCFI_DEM_DATA_TYPE_INT64, 00383 XDCFI_DEM_DATA_TYPE_UINT16, 00384 XDCFI_DEM_DATA_TYPE_UINT32, 00385 XDCFI_DEM_DATA_TYPE_UINT64, 00386 XDCFI_DEM_DATA_TYPE_FLOAT32, 00387 XDCFI_DEM_DATA_TYPE_FLOAT64, 00388 XDCFI_DEM_DATA_TYPE_INT8, 00389 } DemDataTypesEnum; // AN-740 00390 00392 typedef enum 00393 { 00394 XDCFI_DEM_DATA_UNIT_METER = 0, 00395 XDCFI_DEM_DATA_UNIT_KILOMETER 00396 } DemDataUnitsEnum; // AN-740 00397 00399 typedef enum 00400 { 00401 XDCFI_DEM_DATA_REFERENCE_WGS84 = 0, 00402 XDCFI_DEM_DATA_REFERENCE_EGM96 00403 } DemDataReferencesEnum; // AN-740 00404 00406 typedef enum 00407 { 00408 XDCFI_CFI_READ_ATT_INIT_PARSER_ERR = 0, 00409 XDCFI_CFI_READ_ATT_READ_PARAM_ERR, 00410 XDCFI_CFI_READ_ATT_WRONG_FILE_TYPE_ERR, 00411 XDCFI_CFI_READ_XML_ATT_NAVIGATION_ERR, 00412 XDCFI_CFI_READ_ATT_WRONG_DATA_TYPE_ERR, 00413 XDCFI_CFI_READ_ATT_INCONSISTENT_DATA_TYPE_ERR, 00414 XDCFI_CFI_READ_ATT_XML_DATA_BLOCK_SIZE_ERR, 00415 XDCFI_CFI_READ_ATT_WRONG_REF_FRAME_ERR, 00416 XDCFI_CFI_READ_ATT_READ_LIST_ERR, 00417 XDCFI_CFI_READ_ATT_TIME_CONV_ERR, 00418 XDCFI_CFI_READ_ATT_MEMORY_ERR, 00419 XDCFI_CFI_READ_ATT_CLEANUP_PARSER_ERR, 00420 XDCFI_CFI_READ_ATT_WRONG_TIME_REF_ERR, 00421 XDCFI_CFI_READ_ATT_WRONG_QUATERNION_ERR, 00422 XDCFI_CFI_READ_ATT_WRONG_ANGLE_ERR, 00423 XDCFI_CFI_READ_ATT_MAX_GAP_ERR, 00424 XDCFI_CFI_READ_ATT_OBSOLETE_TAG_WARN //AN-516 00425 } ReadAttErrEnum; 00426 00428 typedef enum 00429 { 00430 XDCFI_DEFAULT_VALUES = 0, 00431 XDCFI_USER_VALUES = 1 00432 } PrecisePropagUserFlagEnum; 00433 00435 typedef enum 00436 { 00437 XDCFI_NOT_SELECT = 0, 00438 XDCFI_SELECT = 1 00439 } PrecisePropagSelectionFlagEnum; 00440 00442 typedef enum 00443 { 00444 XDCFI_SGA_USE_PARAMETERS = 0, 00445 XDCFI_SGA_READ_VALUES_FROM_FILE = 1 00446 } PrecisePropagSgaFlagEnum; 00447 00449 typedef enum 00450 { 00451 XDCFI_SAT_DEFAULT = 0, 00452 XDCFI_SAT_DEFAULT1 = 1, 00453 XDCFI_SAT_DEFAULT2 = 2, 00454 XDCFI_SAT_DEFAULT3 = 3, 00455 XDCFI_SAT_DEFAULT4 = 4, 00456 XDCFI_SAT_DEFAULT5 = 5, 00457 XDCFI_SAT_DEFAULT6 = 6, 00458 XDCFI_SAT_DEFAULT7 = 7, 00459 XDCFI_SAT_DEFAULT8 = 8, 00460 XDCFI_SAT_DEFAULT9 = 9, 00461 XDCFI_SAT_ERS1 = 11, 00462 XDCFI_SAT_ERS2 = 12, 00463 XDCFI_SAT_ENVISAT = 21, 00464 XDCFI_SAT_METOP1 = 31, 00465 XDCFI_SAT_METOP2 = 32, 00466 XDCFI_SAT_METOP3 = 33, 00467 XDCFI_SAT_CRYOSAT = 41, 00468 XDCFI_SAT_ADM = 51, 00469 XDCFI_SAT_GOCE = 61, 00470 XDCFI_SAT_SMOS = 71, 00471 XDCFI_SAT_TERRASAR = 81, 00472 XDCFI_SAT_EARTHCARE = 91, 00473 XDCFI_SAT_SWARM_A = 101, 00474 XDCFI_SAT_SWARM_B = 102, 00475 XDCFI_SAT_SWARM_C = 103, 00476 XDCFI_SAT_SENTINEL_1A = 110, 00477 XDCFI_SAT_SENTINEL_1B = 111, 00478 XDCFI_SAT_SENTINEL_2 = 112, 00479 XDCFI_SAT_SENTINEL_3 = 113, 00480 XDCFI_SAT_SEOSAT = 120, 00481 XDCFI_SAT_SENTINEL_1C = 125, 00482 XDCFI_SAT_SENTINEL_2A = 126, 00483 XDCFI_SAT_SENTINEL_2B = 127, 00484 XDCFI_SAT_SENTINEL_2C = 128, 00485 XDCFI_SAT_SENTINEL_3A = 129, 00486 XDCFI_SAT_SENTINEL_3B = 130, 00487 XDCFI_SAT_SENTINEL_3C = 131, 00488 XDCFI_SAT_JASON_CSA = 132, // AN-531 00489 XDCFI_SAT_JASON_CSB = 133, // AN-531 00490 XDCFI_SAT_METOP_SG_A1 = 134, // AN-530 00491 XDCFI_SAT_METOP_SG_A2 = 135, // AN-530 00492 XDCFI_SAT_METOP_SG_A3 = 136, // AN-530 00493 XDCFI_SAT_METOP_SG_B1 = 137, // AN-530 00494 XDCFI_SAT_METOP_SG_B2 = 138, // AN-530 00495 XDCFI_SAT_METOP_SG_B3 = 139, // AN-530 00496 XDCFI_SAT_SENTINEL_5P = 140, // AN-502 00497 XDCFI_SAT_BIOMASS = 141, // AN-601 00498 XDCFI_SAT_SENTINEL_5 = 142, // AN-639 00499 XDCFI_SAT_SAOCOM_CS = 143, // AN-640 00500 XDCFI_SAT_FLEX = 144, /* AN-683 */ 00501 XDCFI_SAT_SENTINEL_6A = 145, /* AN-809 */ 00502 XDCFI_SAT_SENTINEL_6B = 146, /* AN-809 */ 00503 XDCFI_SAT_CIMR = 147, 00504 XDCFI_SAT_ROSEL = 148, 00505 XDCFI_SAT_CHIME = 149, 00506 XDCFI_SAT_CRISTAL = 150, 00507 XDCFI_SAT_CO2M = 151, 00508 XDCFI_SAT_LSTM = 152, 00509 XDCFI_SAT_FORUM = 153, 00510 XDCFI_SAT_GENERIC = 200, 00511 XDCFI_SAT_GENERIC_GEO = 300, 00512 XDCFI_SAT_MTG = 301, 00513 XDCFI_SAT_GENERIC_MEO = 400 // AN-550 00514 } XDSatIdEnum; 00515 00517 typedef enum 00518 { 00519 XDCFI_BULLETIN_A = 0, 00520 XDCFI_BULLETIN_B 00521 } XDBulletinTypeEnum; 00522 00524 typedef enum 00525 { 00526 XDCFI_NO_CACHE = 0, 00527 XDCFI_PRELOAD_CACHE, 00528 XDCFI_FIFO_CACHE 00529 } DemCacheTypeEnum; // Added for AN-487 00530 00532 typedef enum 00533 { 00534 XDCFI_DEM_GEOID_COMPUTATION_DISABLED = 0, 00535 XDCFI_DEM_GEOID_COMPUTATION_ENABLED = 1 00536 } DemGeoidFlagEnum; // AN-466 00537 00539 typedef enum 00540 { 00541 XDCFI_ATT_NONE_MODEL = 0, 00542 XDCFI_ATT_AOCS_MODEL, 00543 XDCFI_ATT_PARAMETER_MODEL, 00544 XDCFI_ATT_HARMONIC_MODEL, 00545 XDCFI_ATT_FILE_MODEL, 00546 XDCFI_ATT_ANGLE_MODEL, 00547 XDCFI_ATT_MATRIX_MODEL, 00548 XDCFI_ATT_QUATERNION_ANGLE_MODEL, 00549 XDCFI_ATT_QUATERNION_MATRIX_MODEL 00550 } AttDefModelEnum; // AN-469 00551 00553 typedef enum 00554 { 00555 XDCFI_SAT_NOMINAL_ATT_DEF = 0, 00556 XDCFI_SAT_ATT_DEF, 00557 XDCFI_INSTR_ATT_DEF 00558 } XDAttDefFrameEnum; // AN-469 00559 00561 typedef enum 00562 { 00563 XDCFI_AOCS_GPM = 0, 00564 XDCFI_AOCS_LNP, 00565 XDCFI_AOCS_YSM, 00566 XDCFI_AOCS_ZDOPPLER 00567 } XDSatNominalAttAocsModeEnum; // AN-469 00568 00570 typedef enum 00571 { 00572 XDCFI_MODEL_GENERIC = 0, 00573 XDCFI_MODEL_ENVISAT, 00574 XDCFI_MODEL_CRYOSAT, 00575 XDCFI_MODEL_ADM, 00576 XDCFI_MODEL_SENTINEL1, 00577 XDCFI_MODEL_SENTINEL2, 00578 XDCFI_MODEL_GEO, 00579 XDCFI_MODEL_METOPSG /* AN-666 */ 00580 } XDSatNominalAttModelEnum; // AN-469 00581 00583 typedef enum 00584 { 00585 XDCFI_ANGLE_TYPE_TRUE_LAT_TOD = 0, 00586 XDCFI_ANGLE_TYPE_TRUE_LAT_EF /* AN-508 */ 00587 } XDAngleTypeEnum; // AN-469 00588 00590 typedef enum 00591 { 00592 XDCFI_FIT_TLE = 0, /*Used for POF, not valid for OSV LIST*/ 00593 XDCFI_FIT_TLE_LIST, 00594 XDCFI_ONE_TLE_PER_OSV 00595 } XDTLEFitmodeEnum; 00596 00598 typedef enum 00599 { 00600 XDCFI_SP3_POSITION_TYPE, 00601 XDCFI_SP3_POSITION_PLUS_VELOCITY_TYPE 00602 } XDCFISP3FileTypeEnum; // AN-550 00603 00605 typedef enum 00606 { 00607 XDCFI_SP3_GPS = 0, 00608 XDCFI_SP3_MIXED, 00609 XDCFI_SP3_GLONASS, 00610 XDCFI_SP3_LEO, 00611 XDCFI_SP3_GALILEO, 00612 XDCFI_SP3_COMPASS, 00613 XDCFI_SP3_QZSS 00614 } XDCFISP3FileDescriptorEnum; // AN-550 00615 00617 typedef enum 00618 { 00619 XDCFI_SP3_TIME_GPS = 0, 00620 XDCFI_SP3_TIME_GLONASS, 00621 XDCFI_SP3_TIME_GALILEO, 00622 XDCFI_SP3_TIME_TAI, 00623 XDCFI_SP3_TIME_UTC, 00624 XDCFI_SP3_TIME_QZSS 00625 } XDCFISP3TimeSystemEnum; 00626 00628 typedef enum 00629 { 00630 XDCFI_SAT_GPS = 0, 00631 XDCFI_SAT_GLONASS, 00632 XDCFI_SAT_LEO, 00633 XDCFI_SAT_GALILEO, 00634 XDCFI_SAT_COMPASS, 00635 XDCFI_SAT_QZSS 00636 } XDCFISATSP3SatDescriptorEnum; 00637 00639 typedef enum 00640 { 00641 XDCFI_DORIS_CRYOSAT_TYPE, 00642 XDCFI_DORIS_SENTINEL3_TYPE, 00643 XDCFI_DORIS_JASON_TYPE, // AN-701 00644 XDCFI_DORIS_UNKNOWN_TYPE // AN-701 00645 } XDDORISFileTypeEnum; //AN-524 00646 00648 typedef enum 00649 { 00650 XDCFI_FOV_CONSTRAINTS_SC_LINK, 00651 XDCFI_FOV_CONSTRAINTS_CELESTIAL_BODY_LINK, // AN-677 00652 XDCFI_FOV_CONTRAINTS_MAX 00653 } XD_Fov_constraints_enum; // AN-628 00654 00656 typedef enum 00657 { 00658 XDCFI_FALSE = 0, 00659 XDCFI_TRUE = 1 00660 } XDCFI_Boolean; // AN-628 00661 00662 /*ANR-638*/ 00663 typedef enum 00664 { 00665 XDCFI_FFS_DEFAULT = 0, 00666 XDCFI_FFS_V1, 00667 XDCFI_FFS_V2, 00668 XDCFI_FFS_V3, 00669 XDCFI_FFS_MAX, 00670 XD_FFS_ERROR 00671 } XDCFI_EOFFS_version; 00672 static const char file_format_standard_version[sizeof(XDCFI_EOFFS_version) + 2][250] = {"DEFAULT", "1.0", "2.0", "3.0", "MAX", "ERROR"}; 00673 00674 //------------------------------------------------------ 00675 // DATA STRUCTURES 00676 //------------------------------------------------------ 00677 00681 class XD_DECL AngleModel 00682 { 00683 public: 00684 //Attributes 00685 double angles[3]; 00686 double offsets[3]; 00687 00689 AngleModel(){}; 00690 00692 AngleModel(double* angle, double* offset) 00693 { 00694 for(int i = 0; i < 3; ++i) 00695 { 00696 angles[i] = angle[i]; 00697 offsets[i] = offset[i]; 00698 } // end for i 00699 } 00700 }; 00701 00705 class XD_DECL Asar 00706 { 00707 public: 00708 //Attributes 00709 long asarType; 00710 double slantRangeLeft; 00711 double slantRangeRight; 00712 00714 Asar(){}; 00715 00720 Asar(const long asarTyp, double slantLeft, double slantRight) 00721 { 00722 asarType = asarTyp; 00723 slantRangeLeft = slantLeft; 00724 slantRangeRight = slantRight; 00725 } 00726 }; //class Asar 00727 00731 class XD_DECL BulbTable 00732 { 00733 public: 00734 double day; 00735 double ut1Utc; 00736 double ut1Tai; 00737 00739 BulbTable(){}; 00740 00742 BulbTable(double dayUtc, double diffUt1Utc, double diffUt1Tai) 00743 { 00744 day = dayUtc; 00745 ut1Utc = diffUt1Utc; 00746 ut1Tai = diffUt1Tai; 00747 } 00748 }; 00749 00753 class XD_DECL DemPoint 00754 { 00755 public: 00756 //Attributes 00757 double lon; 00758 double lat; 00759 double alt; 00760 00762 DemPoint(){}; 00763 00765 DemPoint(double longitude, double latitude, double altitude) 00766 { 00767 lon = longitude; 00768 lat = latitude; 00769 alt = altitude; 00770 } 00771 }; 00772 00776 class XD_DECL DorisHeader 00777 { 00778 public: 00779 //Atributtes 00780 std::string fileName; 00781 std::string sensingStart; // UTC 00782 std::string sensingStop; // UTC 00783 long relOrbit; 00784 long absOrbit; 00785 double deltaUt1; 00786 std::string leapUtc; 00787 int leapSign; 00788 int leapErr; 00789 long numDsd; 00790 long dsOffset; 00791 long numDsr; 00792 00793 // extra data: the following values are not read from the file. 00794 // but it must be provided for the writing function 00795 //MPH 00796 std::string procStageCode; 00797 std::string refDoc; 00798 std::string procTime; 00799 std::string softwareVersion; 00800 std::string phase; 00801 long cycle; 00802 std::string stateVectorTime; 00803 double xPosition; 00804 double yPosition; 00805 double zPosition; 00806 double xVelocity; 00807 double yVelocity; 00808 double zVelocity; 00809 std::string stateVectorSource; 00810 std::string productErr; 00811 long totSize; 00812 long numDataSets; 00813 00814 //SPH 00815 std::string sphDescriptor; 00816 std::string sensingStartTai; // TAI 00817 long absOrbitStart; 00818 double relTimeAscNodeStart; 00819 std::string sensingStopTai; // TAI 00820 long absOrbitStop; 00821 double relTimeAscNodeStop; 00822 std::string equatorCrossTime; 00823 long equatorCrossLong; 00824 std::string ascendingFlag; 00825 long startLat; 00826 long startLong; 00827 long stopLat; 00828 long stopLong; 00829 long numIsps; 00830 long numMissingIsps; 00831 long numErrorIsps; 00832 long numDiscardedIsps; 00833 long numRsIsps; 00834 long numRsCorrections; 00835 long dsrSize; 00836 00838 DorisHeader(); 00839 00841 DorisHeader(const std::string& fileNam, 00842 const std::string& senStart, 00843 const std::string& sensStop, 00844 long relOrbi, 00845 long absOrbi, 00846 double delta_Ut1, 00847 const std::string& leap_Utc, 00848 int leap_Sign, 00849 int leap_Err, 00850 long num_Dsd, 00851 long ds_Offset, 00852 long num_Dsr); 00853 00855 DorisHeader(const std::string& fileNam, 00856 const std::string& sensStart, 00857 const std::string& sensStop, 00858 long relOrbi, 00859 long absOrbi, 00860 double delta_Ut1, 00861 const std::string& leap_Utc, 00862 int leap_Sign, 00863 int leap_Err, 00864 long num_Dsd, 00865 long ds_Offset, 00866 long num_Dsr, 00867 const std::string& procStageCod, 00868 const std::string& ref_Doc, 00869 const std::string& procTim, 00870 const std::string& softVersion, 00871 const std::string& phaseIn, 00872 long cycleIn, 00873 const std::string& stateVectorTim, 00874 double xPos, 00875 double yPos, 00876 double zPos, 00877 double xVel, 00878 double yVel, 00879 double zVel, 00880 const std::string& stateVectSource, 00881 const std::string& prodErr, 00882 long tot_Size, 00883 long numDataSet, 00884 const std::string& sphDesc, 00885 const std::string& sensStartTai, 00886 long absOrbStart, 00887 double relTimAscNodeStart, 00888 const std::string& sensStopTai, 00889 long absOrbStop, 00890 double relTimAscNodeStop, 00891 const std::string& equator_CrossTime, 00892 long equator_CrossLong, 00893 const std::string& ascendFlag, 00894 long start_Lat, 00895 long start_Long, 00896 long stop_Lat, 00897 long stop_Long, 00898 long num_Isps, 00899 long numMissIsps, 00900 long numErrIsps, 00901 long numDiscardIsps, 00902 long num_RsIsps, 00903 long num_RsCorrections, 00904 long dsr_Size); 00905 }; 00906 00910 class XD_DECL FileModel 00911 { 00912 public: 00913 //Attributes 00914 std::vector<std::string> files; 00915 std::string auxFile; 00916 long timeRef; 00917 double time0; 00918 double time1; 00919 00921 FileModel(){}; 00922 00924 FileModel(const std::vector<std::string>& fileNames, 00925 const std::string& auxiliaryFile, 00926 const long timeReference, 00927 const double timeZero, 00928 const double timeOne) 00929 { 00930 files = fileNames; 00931 auxFile = auxiliaryFile; 00932 timeRef = timeReference; 00933 time0 = timeZero; 00934 time1 = timeOne; 00935 } 00936 }; 00937 00941 class XD_DECL HarmonicData 00942 { 00943 public: 00944 //Attributes 00945 std::vector<long> harmonicTypePitch; 00946 std::vector<long> harmonicTypeRoll; 00947 std::vector<long> harmonicTypeYaw; 00948 std::vector<double> harmonicCoeffPitch; 00949 std::vector<double> harmonicCoeffRoll; 00950 std::vector<double> harmonicCoeffYaw; 00951 00953 HarmonicData(){}; 00954 00956 HarmonicData(const std::vector<long>& harmonicTypPitch, 00957 const std::vector<long>& harmonicTypRoll, 00958 const std::vector<long>& harmonicTypYaw, 00959 const std::vector<double>& harmonicCoefPitch, 00960 const std::vector<double>& harmonicCoefRoll, 00961 const std::vector<double>& harmonicCoefYaw) 00962 { 00963 harmonicTypePitch = harmonicTypPitch; 00964 harmonicTypeRoll = harmonicTypRoll; 00965 harmonicTypeYaw = harmonicTypYaw; 00966 harmonicCoeffPitch = harmonicCoefPitch; 00967 harmonicCoeffRoll = harmonicCoefRoll; 00968 harmonicCoeffYaw = harmonicCoefYaw; 00969 } 00970 }; 00971 00975 class XD_DECL HarmonicModel 00976 { 00977 public: 00978 //Attributes 00979 long angleType; 00980 HarmonicData harmonicData; 00981 double offsets[3]; 00982 00984 HarmonicModel(){}; 00985 00987 HarmonicModel(const long angleTyp, const HarmonicData& harmonicDat, double* offset) 00988 { 00989 angleType = angleTyp; 00990 harmonicData = harmonicDat; 00991 00992 for(int i = 0; i < 3; ++i) 00993 { 00994 offsets[i] = offset[i]; 00995 } 00996 } 00997 }; 00998 01002 class XD_DECL MatrixModel 01003 { 01004 public: 01005 //Attributes 01006 double attMatrix[3][3]; 01007 double offsets[3]; 01008 01010 MatrixModel(){}; 01011 01013 MatrixModel(double** matrix, double* offset) 01014 { 01015 for(int i = 0; i < 3; ++i) 01016 { 01017 for(int j = 0; j < 3; ++j) 01018 { 01019 attMatrix[i][j] = matrix[i][j]; 01020 } // end for j 01021 offsets[i] = offset[i]; 01022 } // end for i 01023 } 01024 }; 01025 01029 class XD_DECL MlstHarmonics 01030 { 01031 public: 01032 //Attributes 01033 double refTime; 01034 double period; 01035 double sinAmplitude; 01036 double cosAmplitude; 01037 01039 MlstHarmonics() 01040 { 01041 refTime = 0.; 01042 period = 1.; 01043 sinAmplitude = 0.; 01044 cosAmplitude = 0.; 01045 }; 01046 01048 MlstHarmonics(double time_in, double period_in, double sinAmp_in, double cosAmp_in) 01049 { 01050 refTime = time_in; 01051 period = period_in; 01052 sinAmplitude = sinAmp_in; 01053 cosAmplitude = cosAmp_in; 01054 } 01055 }; 01056 01060 class XD_DECL MlstNonlinearDrift 01061 { 01062 public: 01063 //Attributes 01064 long linearApproxValidity; 01065 double quadraticTerm; 01066 std::vector<MlstHarmonics> mlstHarmonics; 01067 01069 MlstNonlinearDrift() 01070 { 01071 long i; 01072 01073 linearApproxValidity = 99999; 01074 quadraticTerm = 0.; 01075 for(i = 0; i < 2; i++) 01076 { 01077 mlstHarmonics.push_back(MlstHarmonics()); 01078 } 01079 }; 01080 01082 MlstNonlinearDrift(long linApprox, double quadratic, const std::vector<MlstHarmonics>& harmonics) 01083 { 01084 linearApproxValidity = linApprox; 01085 quadraticTerm = quadratic; 01086 mlstHarmonics = harmonics; 01087 } 01088 }; 01089 01093 class XD_DECL ParamModel 01094 { 01095 public: 01096 //Attributes 01097 long model; 01098 std::vector<double> modelParam; 01099 01101 ParamModel(){}; 01102 01104 ParamModel(const long mod, const std::vector<double>& modParam) 01105 { 01106 model = mod; 01107 modelParam = modParam; 01108 } 01109 }; 01110 01114 class XD_DECL SwathGeometry 01115 { 01116 public: 01117 //Attributes 01118 long geometryType; 01119 double azimuth; 01120 double elevation; 01121 double altitude; 01122 double distance; 01123 double angle; 01124 01126 SwathGeometry(){}; 01127 01129 SwathGeometry(long geomType, double azim, double elevat, double alt, double dist, double ang) 01130 { 01131 geometryType = geomType; 01132 azimuth = azim; 01133 elevation = elevat; 01134 altitude = alt; 01135 distance = dist; 01136 angle = ang; // AN-665 01137 } 01138 }; 01139 01143 class XD_DECL TrackerLimits 01144 { 01145 public: 01146 //Attributes 01147 double maxPenalty; 01148 double normThr; 01149 double maxGap; 01150 01152 TrackerLimits(){}; 01153 01155 TrackerLimits(double maxPenal, double normThreshold, double maximumGap) 01156 { 01157 maxPenalty = maxPenal; 01158 normThr = normThreshold; 01159 maxGap = maximumGap; 01160 } 01161 }; 01162 01166 class XD_DECL StfPt 01167 { 01168 public: 01169 //Attributes 01170 double lon; 01171 double lat; 01172 01174 StfPt(){}; 01175 01177 StfPt(double longitude, double latitude) 01178 { 01179 lon = longitude; 01180 lat = latitude; 01181 } 01182 }; 01183 01187 class XD_DECL StfVhr 01188 { 01189 public: 01190 //Attributes 01191 std::string stfName; 01192 std::string ReferenceOSF; 01193 std::string ReferenceSDF; 01194 long swathType; 01195 long swathPointType; 01196 01197 double timeStep; 01198 long refractionMode; 01199 double frequency; 01200 01201 long numPoints; 01202 std::vector<double> altitude; 01203 01204 bool geometryFlag; 01205 01206 long repCycle; 01207 long cycleLength; 01208 double mlstDrift; 01209 01210 long absOrbit; 01211 long orbitStart; 01212 long orbitStop; 01213 01214 double position[3]; 01215 double velocity[3]; 01216 01218 StfVhr(); 01219 01221 StfVhr(const std::string& stfNam, 01222 const std::string& refOSF, 01223 const std::string& refSDF, 01224 long swathTyp, 01225 long swathPointTyp, 01226 double timStep, 01227 long refrMode, 01228 double freq, 01229 long numP, 01230 const std::vector<double>& alt, 01231 bool geomFlag, 01232 long repCycl, 01233 long cyclLength, 01234 double meanlstDrift, 01235 long absOrb, 01236 long orbit0, 01237 long orbit1, 01238 const double* pos, 01239 const double* vel); 01240 01242 StfVhr(const StfVhr& stfVhr); 01243 01245 ~StfVhr() NOEXCEPT; 01246 01248 void operator=(const StfVhr& stfVhr); 01249 01250 }; //class StfVhr 01251 01255 class XD_DECL ZonePoint 01256 { 01257 public: 01258 //Attributes 01259 double ptLong; 01260 double ptLat; 01261 01263 ZonePoint(){}; 01264 01266 ZonePoint(double ptLongitude, double ptLatitude) 01267 { 01268 ptLong = ptLongitude; 01269 ptLat = ptLatitude; 01270 } 01271 }; 01272 01276 class XD_DECL AttitudeModel 01277 { 01278 public: 01279 //Attributes 01280 long attitudeModel; 01281 long AOCS; 01282 ParamModel* paramModel; 01283 HarmonicModel* harmonicModel; 01284 FileModel* fileModel; 01285 AngleModel* angleModel; 01286 MatrixModel* matrixModel; 01287 01289 AttitudeModel(); 01290 01292 AttitudeModel(long attModel, 01293 long AOCSModel, 01294 const ParamModel& parMod, 01295 const HarmonicModel& harmMod, 01296 const FileModel& fileMod, 01297 const AngleModel& angleMod, 01298 const MatrixModel& matrixMod); 01299 01301 AttitudeModel(const AttitudeModel& attModel); 01302 01304 ~AttitudeModel() NOEXCEPT; 01305 01307 void operator=(const AttitudeModel& attModel); 01308 01309 protected: 01310 private: 01312 void eraseAttitude(); 01313 }; 01314 01318 class XD_DECL PolarMotionParams 01319 { 01320 public: 01321 //Attributes 01322 double x; 01323 double y; 01324 01326 PolarMotionParams() 01327 { 01328 x = 0.; 01329 y = 0.; 01330 } 01331 01333 PolarMotionParams(double x1, double y1) 01334 { 01335 x = x1; 01336 y = y1; 01337 } 01338 }; 01339 01343 class XD_DECL IersBulletinBrec 01344 { 01345 public: 01346 double day; 01347 double ut1Utc; 01348 double ut1Tai; 01349 PolarMotionParams polarMotionParams; 01350 01352 IersBulletinBrec() 01353 { 01354 day = 0.; 01355 ut1Utc = 0.; 01356 ut1Tai = 0.; 01357 } 01358 01360 IersBulletinBrec(double dayUtc, double diffUt1Utc, double diffUt1Tai, const PolarMotionParams& polarMotion) 01361 { 01362 day = dayUtc; 01363 ut1Utc = diffUt1Utc; 01364 ut1Tai = diffUt1Tai; 01365 polarMotionParams = polarMotion; 01366 } 01367 }; 01368 01372 class XD_DECL IersBulletinArec 01373 { 01374 public: 01375 double day; 01376 double ut1Utc; 01377 double ut1Tai; 01378 PolarMotionParams polarMotionParams; 01379 01381 IersBulletinArec() 01382 { 01383 day = 0.; 01384 ut1Utc = 0.; 01385 ut1Tai = 0.; 01386 } 01387 01389 IersBulletinArec(double dayUtc, double diffUt1Utc, double diffUt1Tai, const PolarMotionParams& polarMotion) 01390 { 01391 day = dayUtc; 01392 ut1Utc = diffUt1Utc; 01393 ut1Tai = diffUt1Tai; 01394 polarMotionParams = polarMotion; 01395 } 01396 }; 01397 01401 class XD_DECL PolarMotionFormula 01402 { 01403 public: 01404 double ax; 01405 double bx; 01406 double cx; 01407 double dx; 01408 double ex; 01409 01410 double ay; 01411 double by; 01412 double cy; 01413 double dy; 01414 double ey; 01415 01416 double Aref; 01417 double Adiv; 01418 double Cref; 01419 double Cdiv; 01420 01422 PolarMotionFormula() 01423 { 01424 ax = 0.; 01425 bx = 0.; 01426 cx = 0.; 01427 dx = 0.; 01428 ex = 0.; 01429 01430 ay = 0.; 01431 by = 0.; 01432 cy = 0.; 01433 dy = 0.; 01434 ey = 0.; 01435 01436 Aref = 0.; 01437 Adiv = 0.; 01438 Cref = 0.; 01439 Cdiv = 0.; 01440 } 01441 01443 PolarMotionFormula(double a1, double b1, double c1, double d1, double e1, double a2, double b2, double c2, double d2, double e2, double Ar, double Ad, double Cr, double Cd) 01444 { 01445 ax = a1; 01446 bx = b1; 01447 cx = c1; 01448 dx = d1; 01449 ex = e1; 01450 01451 ay = a2; 01452 by = b2; 01453 cy = c2; 01454 dy = d2; 01455 ey = e2; 01456 01457 Aref = Ar; 01458 Adiv = Ad; 01459 Cref = Cr; 01460 Cdiv = Cd; 01461 } 01462 }; 01463 01467 class XD_DECL TimeCorrelationFormula 01468 { 01469 public: 01470 double a; 01471 double b; 01472 double bRef; 01473 01475 TimeCorrelationFormula() 01476 { 01477 a = 0.; 01478 b = 0.; 01479 bRef = 0.; 01480 } 01481 01483 TimeCorrelationFormula(double a1, double b1, double br) 01484 { 01485 a = a1; 01486 b = b1; 01487 bRef = br; 01488 } 01489 }; 01490 01494 class XD_DECL IersBulletinBFile 01495 { 01496 public: 01497 std::string bulletinId; 01498 std::vector<IersBulletinBrec> finalTable; 01499 std::vector<IersBulletinBrec> preliminaryTable; 01500 01502 IersBulletinBFile() 01503 { 01504 bulletinId = ""; 01505 } 01506 01508 IersBulletinBFile(const std::string& bulId, 01509 const std::vector<IersBulletinBrec>& vecFinal, 01510 const std::vector<IersBulletinBrec>& vecPrel) 01511 { 01512 bulletinId = bulId; 01513 finalTable = vecFinal; 01514 preliminaryTable = vecPrel; 01515 } 01516 01517 }; //class IersBulletinBFile 01518 01522 class XD_DECL IersBulletinAFile 01523 { 01524 public: 01525 std::string bulletinId; 01526 std::vector<IersBulletinArec> predictionTable; 01527 PolarMotionFormula polarMotionFormula; 01528 TimeCorrelationFormula timeCorrelationFormula; 01529 01531 IersBulletinAFile() 01532 { 01533 bulletinId = ""; 01534 } 01535 01537 IersBulletinAFile(const std::string& bulId, 01538 const std::vector<IersBulletinArec>& vecPred, 01539 const PolarMotionFormula& polarFormula, 01540 const TimeCorrelationFormula& timeFormula) 01541 { 01542 bulletinId = bulId; 01543 predictionTable = vecPred; 01544 polarMotionFormula = polarFormula; 01545 timeCorrelationFormula = timeFormula; 01546 } 01547 01548 }; //class IersBulletinAFile 01549 01553 class XD_DECL DemMiniTiles 01554 { 01555 public: 01556 std::string fileName; 01557 double lonSize; 01558 double latSize; 01559 01561 DemMiniTiles() 01562 { 01563 fileName = ""; 01564 lonSize = 0.; 01565 latSize = 0.; 01566 } 01567 01569 DemMiniTiles(std::string fileN, double lon, double lat) 01570 { 01571 fileName = fileN; 01572 lonSize = lon; 01573 latSize = lat; 01574 } 01575 }; // AN-492 01576 01580 class XD_DECL QuaternionPlusAngle 01581 { 01582 public: 01583 //Attributes 01584 std::string quatDefFile; 01585 01586 long inertialFrame; 01587 std::vector<AttRec> quat; 01588 AngleModel angleModel; 01589 01591 QuaternionPlusAngle(){}; 01592 01594 QuaternionPlusAngle(const std::string& file, const AngleModel& angModel) 01595 { 01596 quatDefFile = file; 01597 angleModel = angModel; 01598 } 01599 01601 ~QuaternionPlusAngle() NOEXCEPT 01602 { 01603 // Nothing to be done 01604 } 01605 }; // AN-469 01606 01607 // 01610 class XD_DECL QuaternionPlusMatrix 01611 { 01612 public: 01613 //Attributes 01614 std::string quatDefFile; 01615 MatrixModel matrixModel; 01616 01618 QuaternionPlusMatrix(){}; 01619 01621 QuaternionPlusMatrix(const std::string& file, const MatrixModel& matModel) 01622 { 01623 quatDefFile = file; 01624 matrixModel = matModel; 01625 } 01626 01628 ~QuaternionPlusMatrix() NOEXCEPT 01629 { 01630 // Nothing to be done 01631 } 01632 }; // AN-469 01633 01637 class XD_DECL AttitudeDefinitionModel 01638 { 01639 public: 01640 //Attributes 01641 long attitudeModel; 01642 long AOCS; 01643 ParamModel* paramModel; 01644 HarmonicModel* harmonicModel; 01645 FileModel* fileModel; 01646 AngleModel* angleModel; 01647 MatrixModel* matrixModel; 01648 QuaternionPlusAngle* quaternionAngleModel; 01649 QuaternionPlusMatrix* quaternionMatrixModel; 01650 01652 AttitudeDefinitionModel(); 01653 01655 AttitudeDefinitionModel(long attModel, 01656 long AOCSModel, 01657 const ParamModel& parMod, 01658 const HarmonicModel& harmMod, 01659 const FileModel& fileMod, 01660 const AngleModel& angleMod, 01661 const MatrixModel& matrixMod, 01662 const QuaternionPlusAngle& quatAngMod, 01663 const QuaternionPlusMatrix& quatMatMod); 01664 01666 AttitudeDefinitionModel(const AttitudeDefinitionModel& attModel); 01667 01669 ~AttitudeDefinitionModel() NOEXCEPT; 01670 01672 void operator=(const AttitudeDefinitionModel& attModel); 01673 01674 protected: 01675 private: 01677 void eraseAttitude(); 01678 }; // AN-469 01679 01681 class XD_DECL AzElMask 01682 { 01683 public: 01684 long numMaskPt; 01685 long status; 01686 01687 01688 01689 01690 01691 01692 01693 01694 01695 01696 01697 01698 double azimuth[MaxStationVertices]; 01699 double elevation[MaxStationVertices]; 01700 }; 01701 01703 class XD_DECL LinkMask 01704 { 01705 public: 01706 AzElMask inclMask; 01707 AzElMask exclMask; 01708 }; 01709 01711 class XD_DECL LinkData 01712 { 01713 public: 01714 LinkMask maskData; 01715 double minTgHeight; 01716 }; 01717 01719 union XD_DECL FovConstraintsUnion 01720 { 01721 public: 01722 LinkData SCLinkData; 01723 LinkData CelestialBodyLinkData; 01724 }; 01725 01729 template<typename T> struct GenericInternals 01730 { 01731 }; // AN-823 01732 01733 } // namespace EECFI 01734 01735 #endif