General Purpose Geodetic Library
SgSolutionReporter.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_SOLUTION_REPORTER
24 #define SG_SOLUTION_REPORTER
25 
26 
27 #ifdef HAVE_CONFIG_H
28 # include <config.h>
29 #endif
30 
31 
32 #include <QtCore/QMap>
33 #include <QtCore/QString>
34 #include <QtCore/QTextStream>
35 
36 
37 #include <SgEstimator.h>
38 #include <SgIdentities.h>
39 #include <SgMJD.h>
40 
41 
42 
43 class SgSymMatrix;
44 
45 class SgArcStorage;
46 class SgParameter;
47 class SgParameterCfg;
49 class SgPwlStorage;
50 class SgTaskConfig;
51 class SgTaskManager;
52 class SgVlbiBand;
53 class SgVlbiSession;
54 class SgVlbiSourceInfo;
55 /***===================================================================================================*/
62 {
63 public:
64  // Statics:
67  static const QString className();
68 
69  //
70  // constructors/destructors:
71  //
76 
81 
82 
83  //
84  // Interfaces:
85  //
86  inline SgVlbiSession* getSession() const {return session_;};
87  //
88  inline const SgMJD& getRunEpoch() const;
89  //
90  inline const QString& getPath2APrioriFiles() const;
91  //
92  inline int getNumOfUnknowns() const;
93  //
94  inline int getNumOfObservations() const;
95  //
97  //
98  inline void setRunEpoch(const SgMJD& epoch);
99  //
100  inline void setPath2APrioriFiles(const QString& path);
101 
102  //
103  inline SgIdentities* identities();
104 
105  //
106  inline QMap<QString, SgParameter*> *parByName();
107 
108  inline QMap<QString, QMap<QString, SgParameter*> >* stcParByName() {return &stcParByName_;};
109 
110  inline const QMap<QString, SgPwlStorage*>& pwlByName() {return pwlByName_;};
111 
112  inline const QMap<QString, SgArcStorage*>& arcByName() {return arcByName_;};
113 
114  inline double dUt1Value() const {return dUt1Value_;};
115  inline double dUt1Correction() const {return dUt1Correction_;};
116  inline double dUt1StdDev() const {return dUt1StdDev_;};
117 
118 
119 
120  //
121  // Functions:
122  //
123  void report2spoolFile(const QString& path, const QString& path2obsStatus, const QString& fileName,
124  bool=false);
125  void report2aposterioriFiles(const QString& path, const QString& fileNameBase);
126  bool reportTotalZenithDelays(const QString& path);
127  void reportStochasticEstimations(const QString& path);
128  void report2MyFile(const QString& path, const QString& fileName);
129 
130  void absorbInfo(SgTaskManager*);
131  // can be called separately:
132  bool reportNotUsedObs(const QString& path, const QString& fileName);
133 
134  //
135  void addUserComment(const QString& coment) {userComents_.append(coment);};
136 
137 private:
138  // sesson:
141  QString activeBandKey_;
142  // identities:
148  QString reportID_;
149  // general stats:
154  // pathes and filenames:
156  // estimated parameters:
161 
162  QMap<QString, SgEstimator::StochasticSolutionCarrier>
165  double condNumber_;
166 
167  QMap<QString, SgParameter*> parByName_;
168  QMap<QString, QMap<QString, SgParameter*> >
170  QMap<QString, SgPwlStorage*> pwlByName_;
171  QMap<QString, SgArcStorage*> arcByName_;
174  // user comments:
176 
177  // a priori:
184 
185 
186  double dUt1Value_;
188  double dUt1StdDev_;
189 
190  // private functions:
191  void freeResources();
192  void synchronizeInfo();
193  void evaluateUsedErpApriori();
197 
198  // spoolfile output:
199  void reportIdentitiesBlock_Output4Spoolfile(QTextStream&);
200  void reportConfiguresBlock_Output4Spoolfile(QTextStream&);
201  void reportMetStatsBlock_Output4Spoolfile(QTextStream&);
202  void reportGeneralStatsBlock_Output4Spoolfile(QTextStream&);
204  void reportSourceStatsBlock_Output4Spoolfile(QTextStream&);
205  void reportStationStatsBlock_Output4Spoolfile(QTextStream&);
206  void reportAPrioriBlock_Output4Spoolfile(QTextStream&);
207  void reportEstimationBlock_Output4Spoolfile(QTextStream&);
209  void reportResidualsBlock_Output4Spoolfile(QTextStream&);
214 
215  bool reportAtmo(const QString& path, const QString& fileName); // ATMO<U.I.>
216  bool reportCloc(const QString& path, const QString& fileName); // CLOC<U.I.>
217  bool reportPall(const QString& path, const QString& fileName); // PALL<U.I.>
218 
219  bool reportSources_Output4AposterioriFiles(const QString& path, const QString& fileName);
220  bool reportStations_Output4AposterioriFiles(const QString& path, const QString& fileName);
221 
222  bool reportStoch4Stn(const QString& path);
223 
224  bool reportStochParameter(const QString& key, const SgParameterCfg& parCfg,
225  const QString& path, const QString& fileName);
226 
227 };
228 /*=====================================================================================================*/
229 
230 
231 
232 
233 
234 
235 /*=====================================================================================================*/
236 /* */
237 /* SgSolutionReporter inline members: */
238 /* */
239 /*=====================================================================================================*/
240 //
241 //
242 // CONSTRUCTORS:
243 //
244 
245 //
246 // INTERFACE:
247 //
248 //
249 //
251 {
252  return runEpoch_;
253 };
254 
255 
256 
257 //
258 inline const QString& SgSolutionReporter::getPath2APrioriFiles() const
259 {
260  return path2APrioriFiles_;
261 };
262 
263 
264 
265 //
267 {
268  return numOfUnknowns_;
269 };
270 
271 
272 
273 //
275 {
276  return numOfObservations_;
277 };
278 
279 
280 
281 
282 //
283 inline void SgSolutionReporter::setRunEpoch(const SgMJD& epoch)
284 {
285  runEpoch_ = epoch;
286 };
287 
288 
289 
290 //
291 inline void SgSolutionReporter::setPath2APrioriFiles(const QString& path)
292 {
293  path2APrioriFiles_ = path;
294 };
295 
296 
297 
298 //
300 {
301  return &identities_;
302 };
303 
304 
305 
306 //
307 inline QMap<QString, SgParameter*>* SgSolutionReporter::parByName()
308 {
309  return &parByName_;
310 };
311 
312 
313 
314 
315 
316 //
317 // FUNCTIONS:
318 //
319 //
320 //
321 
322 
323 
324 //
325 // FRIENDS:
326 //
327 //
328 //
329 /*=====================================================================================================*/
330 
331 
332 
333 
334 
335 
336 /*=====================================================================================================*/
337 //
338 // aux functions:
339 //
340 
341 
342 /*=====================================================================================================*/
343 #endif //SG_SOLUTION_REPORTER
Definition: SgMJD.h:59
QMap< QString, SgArcStorage * > arcByName_
bool reportAtmo(const QString &path, const QString &fileName)
SgVlbiSession * getSession() const
QList< SgParameter * > parList_
void absorbInfo(SgTaskManager *)
const QMap< QString, SgArcStorage * > & arcByName()
void reportAPrioriBlock_Output4Spoolfile(QTextStream &)
int getNumOfUnknowns() const
QMap< QString, QMap< QString, SgParameter * > > * stcParByName()
SgVlbiSession * session_
void reportStationStatsBlock_Output4Spoolfile(QTextStream &)
void setSession(SgVlbiSession *)
void setRunEpoch(const SgMJD &epoch)
void reportGeneralStatsBlock_Output4Spoolfile(QTextStream &)
const QString & getPath2APrioriFiles() const
const SgMJD & getRunEpoch() const
void reportResidualsBlock_Output4Spoolfile(QTextStream &)
double dUt1Value() const
SgSolutionReporter(SgVlbiSession *, const SgIdentities &)
void reportDeselectedObsBlock_Output4Spoolfile(QTextStream &)
QList< QString > userComents_
SgTaskConfig * config_
bool reportSources_Output4AposterioriFiles(const QString &path, const QString &fileName)
void reportBaselineVariationsBlock_Output4Spoolfile(QTextStream &)
void reportDeselectedObsBlock_Output4Spoolfile_v2(QTextStream &)
QList< SgPwlStorage * > pwlList_
bool reportNotUsedObs(const QString &path, const QString &fileName)
bool reportTotalZenithDelays(const QString &path)
QMap< QString, SgPwlStorage * > pwlByName_
QList< SgVlbiSourceInfo * > usedSources_
QList< SgParameter * > allParList_
void reportSourceStatsBlock_Output4Spoolfile(QTextStream &)
void reportIdentitiesBlock_Output4Spoolfile(QTextStream &)
void report2aposterioriFiles(const QString &path, const QString &fileNameBase)
bool reportStoch4Stn(const QString &path)
void report2MyFile(const QString &path, const QString &fileName)
void reportMetStatsBlock_Output4Spoolfile(QTextStream &)
void reportEstimationBlock_Output4Spoolfile(QTextStream &)
int getNumOfObservations() const
void reportConfiguresBlock_Output4Spoolfile(QTextStream &)
QMap< QString, SgParameter * > * parByName()
void lookupParameter(SgParameter *)
void reportResidualsBlock_Output4Spoolfile_old(QTextStream &)
SgParametersDescriptor * parametersDescriptor_
QList< SgArcStorage * > arcList_
void reportBaselineStatsBlock_Output4Spoolfile(QTextStream &)
bool reportStations_Output4AposterioriFiles(const QString &path, const QString &fileName)
double dUt1StdDev() const
QMap< QString, SgEstimator::StochasticSolutionCarrier > stcSolutions_
bool reportCloc(const QString &path, const QString &fileName)
QMap< QString, SgParameter * > parByName_
void addUserComment(const QString &coment)
SgIdentities * identities()
const QMap< QString, SgPwlStorage * > & pwlByName()
bool reportStochParameter(const QString &key, const SgParameterCfg &parCfg, const QString &path, const QString &fileName)
double dUt1Correction() const
void reportDeselectedObsBlock_Output4Spoolfile_v3(QTextStream &)
QMap< QString, QMap< QString, SgParameter * > > stcParByName_
bool reportPall(const QString &path, const QString &fileName)
void setPath2APrioriFiles(const QString &path)
void report2spoolFile(const QString &path, const QString &path2obsStatus, const QString &fileName, bool=false)
QList< SgVlbiSourceInfo * > skippedSources_
void reportStochasticEstimations(const QString &path)
static const QString className()