General Purpose Geodetic Library
SgParametersDescriptor.h
Go to the documentation of this file.
1 /*
2  *
3  * This file is a part of Space Geodetic Library. The library is used by
4  * nuSolve, a part of CALC/SOLVE system, and designed to make analysis of
5  * geodetic VLBI observations.
6  * Copyright (C) 2010-2020 Sergei Bolotin.
7  *
8  * This program is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program. If not, see <http://www.gnu.org/licenses/>.
20  *
21  */
22 
23 #ifndef SG_EST_PARAMETERS_DESCRIPTOR_H
24 #define SG_EST_PARAMETERS_DESCRIPTOR_H
25 
26 
27 #ifdef HAVE_CONFIG_H
28 # include <config.h>
29 #endif
30 
31 
32 #include <QtCore/QString>
33 
34 class QDataStream;
35 
36 #include <SgParameterCfg.h>
37 
38 
39 #define NUMBER_OF_KNOWN_PARAMETER_SPECIES 21
40 
41 
42 /***===================================================================================================*/
49 {
50 public:
51  enum ParIdx
52  {
57  Idx_ZENITH = 4,
59  Idx_CABLE = 6,
61  Idx_STNCOO = 8,
62  Idx_STNVEL = 9,
63  Idx_SRCCOO =10,
64  Idx_SRCSSM =11,
71  Idx_BL_CLK =18,
73  Idx_TEST =20,
74  };
75 
76 
77  //
78  // constructors/destructors:
79  //
84 
89 
93  inline ~SgParametersDescriptor();
94 
95 
96 
97  //
98  // Interfaces:
99  //
103 
104  // gets:
105  //
106  // Clocks:
107  //
110  inline const SgParameterCfg& getClock0() const;
111 
114  inline const SgParameterCfg& getClock1() const;
115 
118  inline const SgParameterCfg& getClock2() const;
119 
122  inline const SgParameterCfg& getClock3() const;
123 
124  // troposphere:
127  inline const SgParameterCfg& getZenith() const;
128 
131  inline const SgParameterCfg& getAtmGrad() const;
132 
135  inline const SgParameterCfg& getCable() const;
136 
139  inline const SgParameterCfg& getAxisOffset() const;
140 
141  // coordinates:
144  inline const SgParameterCfg& getStnCoo() const;
145 
148  inline const SgParameterCfg& getStnVel() const;
149 
152  inline const SgParameterCfg& getSrcCoo() const;
153 
156  inline const SgParameterCfg& getSrcSsm() const;
157 
158  // EOP:
161  inline const SgParameterCfg& getPolusXY() const;
162 
165  inline const SgParameterCfg& getPolusXYRate() const;
166 
169  inline const SgParameterCfg& getPolusUT1() const;
170 
173  inline const SgParameterCfg& getPolusUT1Rate() const;
174 
177  inline const SgParameterCfg& getPolusNut() const;
178 
181  inline const SgParameterCfg& getPolusNutRate() const;
182 
185  inline const SgParameterCfg& getBlClock() const;
186 
189  inline const SgParameterCfg& getBlLength() const;
190 
191  // test:
194  inline const SgParameterCfg& getTest() const;
195 
196 
197 
198  // sets:
202  inline void setClock0(const SgParameterCfg& p);
203 
207  inline void setClock1(const SgParameterCfg& p);
208 
212  inline void setClock2(const SgParameterCfg& p);
213 
217  inline void setClock3(const SgParameterCfg& p);
218 
222  inline void setZenith(const SgParameterCfg& p);
223 
227  inline void setAtmGrad(const SgParameterCfg& p);
228 
232  inline void setCable(const SgParameterCfg& p);
233 
237  inline void setAxisOffset(const SgParameterCfg& p);
238 
242  inline void setStnCoo(const SgParameterCfg& p);
243 
247  inline void setStnVel(const SgParameterCfg& p);
248 
252  inline void setSrcCoo(const SgParameterCfg& p);
253 
254  inline void setSrcSsm(const SgParameterCfg& p);
255 
256  // EOP:
260  inline void setPolusXY(const SgParameterCfg& p);
261 
265  inline void setPolusXYRate(const SgParameterCfg& p);
266 
270  inline void setPolusUT1(const SgParameterCfg& p);
271 
275  inline void setPolusUT1Rate(const SgParameterCfg& p);
276 
280  inline void setPolusNut(const SgParameterCfg& p);
281 
285  inline void setPolusNutRate(const SgParameterCfg& p);
286 
290  inline void setBlClock(const SgParameterCfg& p);
291 
295  inline void setBlLength(const SgParameterCfg& p);
296 
300  inline void setTest(const SgParameterCfg& p);
301 
302 
303  // modes:
306  inline SgParameterCfg::PMode getClock0Mode() const;
307 
310  inline SgParameterCfg::PMode getClock1Mode() const;
311 
314  inline SgParameterCfg::PMode getClock2Mode() const;
315 
318  inline SgParameterCfg::PMode getClock3Mode() const;
319 
320  // troposphere:
323  inline SgParameterCfg::PMode getZenithMode() const;
324 
327  inline SgParameterCfg::PMode getAtmGradMode() const;
328 
331  inline SgParameterCfg::PMode getCableMode() const;
332 
336 
337  // coordinates:
340  inline SgParameterCfg::PMode getStnCooMode() const;
341 
344  inline SgParameterCfg::PMode getStnVelMode() const;
345 
348  inline SgParameterCfg::PMode getSrcCooMode() const;
349  inline SgParameterCfg::PMode getSrcSsmMode() const;
350 
351  // EOP:
354  inline SgParameterCfg::PMode getPolusXYMode() const;
355 
359 
362  inline SgParameterCfg::PMode getPolusUT1Mode() const;
363 
367 
370  inline SgParameterCfg::PMode getPolusNutMode() const;
371 
375 
378  inline SgParameterCfg::PMode getBlClockMode() const;
379 
382  inline SgParameterCfg::PMode getBlLengthMode() const;
383 
384  // test:
387  inline SgParameterCfg::PMode getTestMode() const;
388 
389 
390 
394  inline void setClock0Mode(SgParameterCfg::PMode mode);
395 
399  inline void setClock1Mode(SgParameterCfg::PMode mode);
400 
404  inline void setClock2Mode(SgParameterCfg::PMode mode);
405 
409  inline void setClock3Mode(SgParameterCfg::PMode mode);
410 
414  inline void setZenithMode(SgParameterCfg::PMode mode);
415 
419  inline void setAtmGradMode(SgParameterCfg::PMode mode);
420 
424  inline void setCableMode(SgParameterCfg::PMode mode);
425 
429  inline void setAxisOffsetMode(SgParameterCfg::PMode mode);
430 
434  inline void setStnCooMode(SgParameterCfg::PMode mode);
435 
439  inline void setStnVelMode(SgParameterCfg::PMode mode);
440 
444  inline void setSrcCooMode(SgParameterCfg::PMode mode);
445  inline void setSrcSsmMode(SgParameterCfg::PMode mode);
446 
450  inline void setPolusXYMode(SgParameterCfg::PMode mode);
451 
455  inline void setPolusXYRateMode(SgParameterCfg::PMode mode);
456 
460  inline void setPolusUT1Mode(SgParameterCfg::PMode mode);
461 
465  inline void setPolusUT1RateMode(SgParameterCfg::PMode mode);
466 
470  inline void setPolusNutMode(SgParameterCfg::PMode mode);
471 
475  inline void setPolusNutRateMode(SgParameterCfg::PMode mode);
476 
480  inline void setBlClockMode(SgParameterCfg::PMode mode);
481 
485  inline void setBlLengthMode(SgParameterCfg::PMode mode);
486 
490  inline void setTestMode(SgParameterCfg::PMode mode);
491 
492 
493 
494  //
495  // Functions:
496  //
499  static const QString className();
500 
501  void setMode(int i, SgParameterCfg::PMode mode);
502 
503  SgParameterCfg::PMode getMode(int i) const;
504 
507  inline const SgParameterCfg& getParameter(int i) const;
508 
511  inline void setParameter(int i, const SgParameterCfg& p);
512 
515  inline SgParameterCfg& parameter(ParIdx i) {return parameters_[0<=i&&i<num_ ? i : 0];};
516 
519  static int num();
520 
521  void unsetAllParameters();
523  void unsetParameter (ParIdx);
525  void unsetParameters (const QList<ParIdx>&);
526 
527 
528  //
529  // Friends:
530  //
531 
532  //
533  // I/O:
534  //
536 
538  //
539 
540 private:
542  static const int num_;
543 };
544 /*=====================================================================================================*/
545 
546 
547 
548 
549 
550 
551 
552 
553 /*=====================================================================================================*/
554 /* */
555 /* SgParamatersDescriptor inline members: */
556 /* */
557 /*=====================================================================================================*/
558 //
559 //
560 // CONSTRUCTORS:
561 //
562 // A copying constructor:
564 {
565  *this = pd;
566 };
567 
568 
569 
570 // A destructor:
572 {
573  // nothing to do
574 };
575 
576 
577 
578 //
579 // INTERFACES:
580 //
581 //
582 //
584 {
585  for (int i=0; i<pd.num(); i++)
586  setParameter(i, pd.getParameter(i));
587  return *this;
588 };
589 
590 
591 
592 // gets:
594 {
595  return parameters_[Idx_CLOCK_0];
596 };
597 
598 
599 
600 //
602 {
603  return parameters_[Idx_CLOCK_1];
604 };
605 
606 
607 
608 //
610 {
611  return parameters_[Idx_CLOCK_2];
612 };
613 
614 
615 
616 //
618 {
619  return parameters_[Idx_CLOCK_3];
620 };
621 
622 
623 
624 //
626 {
627  return parameters_[Idx_ZENITH];
628 };
629 
630 
631 
632 //
634 {
635  return parameters_[Idx_ATMGRAD];
636 };
637 
638 
639 
640 //
642 {
643  return parameters_[Idx_CABLE];
644 };
645 
646 
647 
648 //
650 {
651  return parameters_[Idx_AXISOFFSET];
652 };
653 
654 
655 
656 //
658 {
659  return parameters_[Idx_STNCOO];
660 };
661 
662 
663 
664 //
666 {
667  return parameters_[Idx_STNVEL];
668 };
669 
670 
671 
672 //
674 {
675  return parameters_[Idx_SRCCOO];
676 };
677 
678 
679 
680 //
682 {
683  return parameters_[Idx_SRCSSM];
684 };
685 
686 
687 
688 //
690 {
691  return parameters_[Idx_POLUSXY];
692 };
693 
694 
695 
696 //
698 {
699  return parameters_[Idx_POLUSXYR];
700 };
701 
702 
703 
704 //
706 {
707  return parameters_[Idx_POLUSUT1];
708 };
709 
710 
711 
712 //
714 {
715  return parameters_[Idx_POLUSUT1R];
716 };
717 
718 
719 
720 //
722 {
723  return parameters_[Idx_POLUSNUT];
724 };
725 
726 
727 
728 //
730 {
731  return parameters_[Idx_POLUSNUTR];
732 };
733 
734 
735 
736 //
738 {
739  return parameters_[Idx_BL_CLK];
740 };
741 
742 
743 
744 //
746 {
747  return parameters_[Idx_BL_LENGTH];
748 };
749 
750 
751 
752 //
754 {
755  return parameters_[Idx_TEST];
756 };
757 
758 
759 
760 // sets:
762 {
764 };
765 
766 
767 
768 //
770 {
772 };
773 
774 
775 
776 //
778 {
780 };
781 
782 
783 
784 //
786 {
788 };
789 
790 
791 
792 //
794 {
795  parameters_[Idx_ZENITH] = p;
796 };
797 
798 
799 
800 //
802 {
804 };
805 
806 
807 
808 //
810 {
811  parameters_[Idx_CABLE] = p;
812 };
813 
814 
815 
816 //
818 {
820 };
821 
822 
823 
824 //
826 {
827  parameters_[Idx_STNCOO] = p;
828 };
829 
830 
831 
832 //
834 {
835  parameters_[Idx_STNVEL] = p;
836 };
837 
838 
839 
840 //
842 {
843  parameters_[Idx_SRCCOO] = p;
844 };
845 
846 
847 
848 //
850 {
851  parameters_[Idx_SRCSSM] = p;
852 };
853 
854 
855 
856 //
858 {
860 };
861 
862 
863 
864 //
866 {
868 };
869 
870 
871 
872 //
874 {
876 };
877 
878 
879 
880 //
882 {
884 };
885 
886 
887 
888 //
890 {
892 };
893 
894 
895 
896 //
898 {
900 };
901 
902 
903 
904 //
906 {
907  parameters_[Idx_BL_CLK] = p;
908 };
909 
910 
911 
912 //
914 {
916 };
917 
918 
919 
920 //
922 {
923  parameters_[Idx_TEST] = p;
924 };
925 
926 
927 
928 
929 
930 //
931 // FUNCTIONS:
932 //
933 //
934 //
936 {
937  return parameters_[0<=i&&i<num_ ? i : 0];
938 };
939 
940 
941 
942 //
944 {
945  parameters_[0<=i&&i<num_ ? i : 0] = p;
946 };
947 
948 
949 
950 //
952 {
953  return parameters_[Idx_CLOCK_0].getPMode();
954 };
955 
956 
957 
958 //
960 {
961  return parameters_[Idx_CLOCK_1].getPMode();
962 };
963 
964 
965 
966 //
968 {
969  return parameters_[Idx_CLOCK_2].getPMode();
970 };
971 
972 
973 
974 //
976 {
977  return parameters_[Idx_CLOCK_3].getPMode();
978 };
979 
980 
981 
982 //
984 {
985  return parameters_[Idx_ZENITH].getPMode();
986 };
987 
988 
989 
990 //
992 {
993  return parameters_[Idx_ATMGRAD].getPMode();
994 };
995 
996 
997 
998 //
1000 {
1001  return parameters_[Idx_CABLE].getPMode();
1002 };
1003 
1004 
1005 
1006 //
1008 {
1010 };
1011 
1012 
1013 
1014 //
1016 {
1017  return parameters_[Idx_STNCOO].getPMode();
1018 };
1019 
1020 
1021 
1022 //
1024 {
1025  return parameters_[Idx_STNVEL].getPMode();
1026 };
1027 
1028 
1029 
1030 //
1032 {
1033  return parameters_[Idx_SRCCOO].getPMode();
1034 };
1035 
1036 
1037 
1038 //
1040 {
1041  return parameters_[Idx_SRCSSM].getPMode();
1042 };
1043 
1044 
1045 
1046 //
1048 {
1049  return parameters_[Idx_POLUSXY].getPMode();
1050 };
1051 
1052 
1053 
1054 //
1056 {
1057  return parameters_[Idx_POLUSXYR].getPMode();
1058 };
1059 
1060 
1061 
1062 //
1064 {
1065  return parameters_[Idx_POLUSUT1].getPMode();
1066 };
1067 
1068 
1069 
1070 //
1072 {
1074 };
1075 
1076 
1077 
1078 //
1080 {
1081  return parameters_[Idx_POLUSNUT].getPMode();
1082 };
1083 
1084 
1085 
1086 //
1088 {
1090 };
1091 
1092 
1093 
1094 //
1096 {
1097  return parameters_[Idx_BL_CLK].getPMode();
1098 };
1099 
1100 
1101 
1102 //
1104 {
1106 };
1107 
1108 
1109 
1110 //
1112 {
1113  return parameters_[Idx_TEST].getPMode();
1114 };
1115 
1116 
1117 
1118 //
1120 {
1121  parameters_[0<=i&&i<num_ ? i : 0].setPMode(mode);
1122 };
1123 
1124 
1125 
1126 //
1128 {
1129  return parameters_[0<=i&&i<num_ ? i : 0].getPMode();
1130 };
1131 
1132 
1133 
1134 //
1136 {
1138 };
1139 
1140 
1141 
1142 //
1144 {
1146 };
1147 
1148 
1149 
1150 //
1152 {
1154 };
1155 
1156 
1157 
1158 //
1160 {
1162 };
1163 
1164 
1165 
1166 //
1168 {
1170 };
1171 
1172 
1173 
1174 //
1176 {
1178 };
1179 
1180 
1181 
1182 //
1184 {
1186 };
1187 
1188 
1189 
1190 //
1192 {
1194 };
1195 
1196 
1197 
1198 //
1200 {
1202 };
1203 
1204 
1205 
1206 //
1208 {
1210 };
1211 
1212 
1213 
1214 //
1216 {
1218 };
1219 
1220 
1221 
1222 //
1224 {
1226 };
1227 
1228 
1229 
1230 //
1232 {
1234 };
1235 
1236 
1237 
1238 //
1240 {
1242 };
1243 
1244 
1245 
1246 //
1248 {
1250 };
1251 
1252 
1253 
1254 //
1256 {
1258 };
1259 
1260 
1261 
1262 //
1264 {
1266 };
1267 
1268 
1269 
1270 //
1272 {
1274 };
1275 
1276 
1277 
1278 //
1280 {
1282 };
1283 
1284 
1285 
1286 //
1288 {
1290 };
1291 
1292 
1293 
1294 //
1296 {
1297  parameters_[Idx_TEST].setPMode(mode);
1298 };
1299 
1300 
1301 
1302 
1303 //
1304 // FRIENDS:
1305 //
1306 //
1307 //
1308 
1309 
1310 
1311 /*=====================================================================================================*/
1312 
1313 
1314 
1315 
1316 
1317 /*=====================================================================================================*/
1318 //
1319 // aux functions:
1320 //
1321 
1322 
1323 /*=====================================================================================================*/
1324 #endif //SG_EST_PARAMETERS_DESCRIPTOR_H
#define NUMBER_OF_KNOWN_PARAMETER_SPECIES
void setPMode(PMode mode)
PMode getPMode() const
void setPolusUT1(const SgParameterCfg &p)
void setClock2(const SgParameterCfg &p)
const SgParameterCfg & getBlClock() const
void setTest(const SgParameterCfg &p)
SgParameterCfg::PMode getClock1Mode() const
void unsetParameters(const QList< ParIdx > &)
void setStnVelMode(SgParameterCfg::PMode mode)
const SgParameterCfg & getClock1() const
const SgParameterCfg & getZenith() const
void setSrcSsmMode(SgParameterCfg::PMode mode)
void setClock0(const SgParameterCfg &p)
void setClock1(const SgParameterCfg &p)
const SgParameterCfg & getAxisOffset() const
const SgParameterCfg & getStnVel() const
const SgParameterCfg & getPolusUT1Rate() const
const SgParameterCfg & getSrcSsm() const
const SgParameterCfg & getSrcCoo() const
SgParameterCfg::PMode getPolusXYMode() const
void setPolusXYRate(const SgParameterCfg &p)
bool saveIntermediateResults(QDataStream &) const
void setAtmGradMode(SgParameterCfg::PMode mode)
void setCableMode(SgParameterCfg::PMode mode)
SgParameterCfg::PMode getTestMode() const
void setPolusUT1RateMode(SgParameterCfg::PMode mode)
const SgParameterCfg & getPolusNutRate() const
SgParameterCfg::PMode getClock2Mode() const
void setClock1Mode(SgParameterCfg::PMode mode)
SgParameterCfg::PMode getPolusXYRateMode() const
void setBlClock(const SgParameterCfg &p)
const SgParameterCfg & getBlLength() const
SgParametersDescriptor & operator=(const SgParametersDescriptor &)
SgParameterCfg::PMode getSrcSsmMode() const
static const QString className()
const SgParameterCfg & getAtmGrad() const
void setCable(const SgParameterCfg &p)
void setMode4Parameter(SgParameterCfg::PMode, ParIdx)
void setClock0Mode(SgParameterCfg::PMode mode)
SgParameterCfg::PMode getStnCooMode() const
SgParameterCfg::PMode getPolusNutMode() const
const SgParameterCfg & getPolusUT1() const
SgParameterCfg::PMode getClock0Mode() const
void setSrcCoo(const SgParameterCfg &p)
void setAxisOffsetMode(SgParameterCfg::PMode mode)
void setAxisOffset(const SgParameterCfg &p)
void setZenith(const SgParameterCfg &p)
const SgParameterCfg & getPolusXY() const
void setBlLengthMode(SgParameterCfg::PMode mode)
const SgParameterCfg & getClock2() const
void setParameter(int i, const SgParameterCfg &p)
void setSrcCooMode(SgParameterCfg::PMode mode)
void setPolusNut(const SgParameterCfg &p)
SgParameterCfg::PMode getAxisOffsetMode() const
void setPolusUT1Mode(SgParameterCfg::PMode mode)
const SgParameterCfg & getParameter(int i) const
void setSrcSsm(const SgParameterCfg &p)
const SgParameterCfg & getCable() const
SgParameterCfg::PMode getPolusNutRateMode() const
const SgParameterCfg & getPolusNut() const
SgParameterCfg::PMode getCableMode() const
void setStnCooMode(SgParameterCfg::PMode mode)
SgParameterCfg::PMode getClock3Mode() const
const SgParameterCfg & getClock0() const
void setClock3(const SgParameterCfg &p)
void setPolusNutRate(const SgParameterCfg &p)
void setStnCoo(const SgParameterCfg &p)
SgParameterCfg & parameter(ParIdx i)
void setBlLength(const SgParameterCfg &p)
SgParameterCfg::PMode getMode(int i) const
SgParameterCfg::PMode getZenithMode() const
void setMode(int i, SgParameterCfg::PMode mode)
void setTestMode(SgParameterCfg::PMode mode)
void setPolusUT1Rate(const SgParameterCfg &p)
SgParameterCfg::PMode getBlLengthMode() const
void setPolusXYMode(SgParameterCfg::PMode mode)
SgParameterCfg::PMode getPolusUT1RateMode() const
SgParameterCfg::PMode getAtmGradMode() const
void setBlClockMode(SgParameterCfg::PMode mode)
bool loadIntermediateResults(QDataStream &)
const SgParameterCfg & getPolusXYRate() const
void setMode4Parameters(SgParameterCfg::PMode, const QList< ParIdx > &)
void setClock2Mode(SgParameterCfg::PMode mode)
void setAtmGrad(const SgParameterCfg &p)
void setPolusNutMode(SgParameterCfg::PMode mode)
const SgParameterCfg & getClock3() const
SgParameterCfg::PMode getSrcCooMode() const
const SgParameterCfg & getTest() const
void setPolusXY(const SgParameterCfg &p)
void setPolusNutRateMode(SgParameterCfg::PMode mode)
const SgParameterCfg & getStnCoo() const
@ Idx_SRCCOO
index for source coordinates
@ Idx_POLUSXY
index for EOP: polar motion
@ Idx_POLUSXYR
index for EOP: polar motion
@ Idx_CLOCK_1
index for clocks (order #1)
@ Idx_CLOCK_3
index for clocks (order #3)
@ Idx_STNCOO
index for station coordinates
@ Idx_POLUSUT1R
index for EOP: d(UT1-UTC) Rate
@ Idx_ATMGRAD
index for atmospheric gradients
@ Idx_CLOCK_2
index for clocks (order #2)
@ Idx_POLUSNUT
index for EOP: nutation angles
@ Idx_POLUSUT1
index for EOP: d(UT1-UTC)
@ Idx_CABLE
index for cable corrections
@ Idx_POLUSNUTR
index for EOP: nutation angles
@ Idx_TEST
index for test purposes
@ Idx_BL_CLK
index for baseline clocks
@ Idx_STNVEL
index for station velocities
@ Idx_SRCSSM
index for source SSM
@ Idx_BL_LENGTH
index for baseline length
@ Idx_ZENITH
index for wet zenith delay
@ Idx_CLOCK_0
index for clocks (order #0)
@ Idx_AXISOFFSET
index for axis offset
SgParameterCfg::PMode getStnVelMode() const
void setStnVel(const SgParameterCfg &p)
SgParameterCfg parameters_[NUMBER_OF_KNOWN_PARAMETER_SPECIES]
void setPolusXYRateMode(SgParameterCfg::PMode mode)
SgParameterCfg::PMode getPolusUT1Mode() const
void setClock3Mode(SgParameterCfg::PMode mode)
SgParameterCfg::PMode getBlClockMode() const
void setZenithMode(SgParameterCfg::PMode mode)