sicd_rs/dep/v0_4_0/
error_statistics.rs

1use super::Parameter;
2use serde::Deserialize;
3
4#[derive(Debug, Deserialize, PartialEq, Clone)]
5pub struct ErrorStatistics {
6    #[serde(rename = "CompositeSCP")]
7    pub composite_scp: Option<CompositeSCP>,
8    #[serde(rename = "Components")]
9    pub components: Option<Components>,
10    #[serde(rename = "AdditionalParams")]
11    pub additional_params: Option<Vec<Parameter>>,
12}
13#[derive(Debug, Deserialize, PartialEq, Clone)]
14pub struct CompositeSCP {
15    #[serde(rename = "RgAzErr")]
16    pub rg_az_err: Option<RgAzErr>,
17    #[serde(rename = "RowColErr")]
18    pub row_col_err: Option<RowColErr>,
19}
20#[derive(Debug, Deserialize, PartialEq, Clone)]
21pub struct RgAzErr {
22    #[serde(rename = "Rg")]
23    pub rg: f64,
24    #[serde(rename = "Az")]
25    pub az: f64,
26    #[serde(rename = "RgAz")]
27    pub rg_az: f64,
28}
29#[derive(Debug, Deserialize, PartialEq, Clone)]
30pub struct RowColErr {
31    #[serde(rename = "Row")]
32    pub row: f64,
33    #[serde(rename = "Col")]
34    pub col: f64,
35    #[serde(rename = "RowCol")]
36    pub row_col: f64,
37}
38
39#[derive(Debug, Deserialize, PartialEq, Clone)]
40pub struct Components {
41    #[serde(rename = "PosVelErr")]
42    pub pos_vel_err: Option<PosVelErr>,
43    #[serde(rename = "RadarSensor")]
44    pub radar_sensor: Option<RadarSensor>,
45    #[serde(rename = "TropoErro")]
46    pub tropo_erro: Option<TropoError>,
47    #[serde(rename = "IonoError")]
48    pub iono_error: Option<IonoError>,
49}
50#[derive(Debug, Deserialize, PartialEq, Clone)]
51pub struct PosVelErr {
52    #[serde(rename = "Frame")]
53    pub frame: Frame,
54    #[serde(rename = "P1")]
55    pub p1: f64,
56    #[serde(rename = "P2")]
57    pub p2: f64,
58    #[serde(rename = "P3")]
59    pub p3: f64,
60    #[serde(rename = "V1")]
61    pub v1: f64,
62    #[serde(rename = "V2")]
63    pub v2: f64,
64    #[serde(rename = "V3")]
65    pub v3: f64,
66    #[serde(rename = "CorrCoefs")]
67    pub corr_coefs: Option<CorrCoefs>,
68    #[serde(rename = "PositionDecorr")]
69    pub position_decorr: Option<Decorr>,
70}
71#[derive(Debug, Deserialize, PartialEq, Clone)]
72pub struct Frame {
73    #[serde(rename = "$text")]
74    pub value: FrameEnum,
75}
76#[derive(Debug, Deserialize, PartialEq, Clone)]
77pub enum FrameEnum {
78    ECF,
79    #[serde(rename = "RIC_ECF")]
80    RICECF,
81    #[serde(rename = "RIC_ECI")]
82    RICECI,
83}
84#[derive(Debug, Deserialize, PartialEq, Clone)]
85pub struct CorrCoefs {
86    #[serde(rename = "P1P2")]
87    pub p1p2: f64,
88    #[serde(rename = "P1P3")]
89    pub p1p3: f64,
90    #[serde(rename = "P1V1")]
91    pub p1v1: f64,
92    #[serde(rename = "P1V2")]
93    pub p1v2: f64,
94    #[serde(rename = "P1V3")]
95    pub p1v3: f64,
96    #[serde(rename = "P2P3")]
97    pub p2p3: f64,
98    #[serde(rename = "P2V1")]
99    pub p2v1: f64,
100    #[serde(rename = "P2V2")]
101    pub p2v2: f64,
102    #[serde(rename = "P2V3")]
103    pub p2v3: f64,
104    #[serde(rename = "P3V1")]
105    pub p3v1: f64,
106    #[serde(rename = "P3V2")]
107    pub p3v2: f64,
108    #[serde(rename = "P3V3")]
109    pub p3v3: f64,
110    #[serde(rename = "V1V2")]
111    pub v1v2: f64,
112    #[serde(rename = "V1V3")]
113    pub v1v3: f64,
114    #[serde(rename = "V2V3")]
115    pub v2v3: f64,
116}
117#[derive(Debug, Deserialize, PartialEq, Clone)]
118pub struct RadarSensor {
119    #[serde(rename = "RangeBias")]
120    pub range_bias: f64,
121    #[serde(rename = "ClockFreqSF")]
122    pub clock_freq_sf: Option<f64>,
123    #[serde(rename = "TransmitFreqSF")]
124    pub transmit_freq_sf: Option<f64>,
125    #[serde(rename = "RangeBiasDecorr")]
126    pub range_bias_decorr: Option<Decorr>,
127}
128#[derive(Debug, Deserialize, PartialEq, Clone)]
129pub struct TropoError {
130    #[serde(rename = "TropoRangeVertical")]
131    pub tropo_range_vertical: Option<f64>,
132    #[serde(rename = "TropoRangeSlant")]
133    pub tropo_range_slant: Option<f64>,
134    #[serde(rename = "TropoRangeDecorr")]
135    pub tropo_range_decorr: Option<Decorr>,
136}
137#[derive(Debug, Deserialize, PartialEq, Clone)]
138pub struct IonoError {
139    #[serde(rename = "IonoRangeVertical")]
140    pub iono_range_vertical: Option<f64>,
141    #[serde(rename = "IonoRangeRateVertical")]
142    pub iono_range_rate_vertical: Option<f64>,
143    #[serde(rename = "IonoRgRgRateCC")]
144    pub iono_rg_rg_rate_cc: f64,
145    #[serde(rename = "IonoRangeVertDecorr")]
146    pub iono_range_vert_decorr: Option<Decorr>,
147}
148
149#[derive(Debug, Deserialize, PartialEq, Clone)]
150pub struct Decorr {
151    #[serde(rename = "CorrCoefZero")]
152    pub corr_coef_zero: f64,
153    #[serde(rename = "DecorrRate")]
154    pub decorr_rate: f64,
155}