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