29 #if QT_VERSION >= 0x050000
30 # include <QtWidgets/QBoxLayout>
31 # include <QtWidgets/QButtonGroup>
32 # include <QtWidgets/QCheckBox>
33 # include <QtWidgets/QComboBox>
34 # include <QtWidgets/QFrame>
35 # include <QtWidgets/QGroupBox>
36 # include <QtWidgets/QHeaderView>
37 # include <QtWidgets/QLabel>
38 # include <QtWidgets/QLineEdit>
39 # include <QtWidgets/QMessageBox>
40 # include <QtWidgets/QPlainTextEdit>
41 # include <QtWidgets/QPushButton>
42 # include <QtWidgets/QRadioButton>
43 # include <QtWidgets/QSpinBox>
45 # include <QtGui/QBoxLayout>
46 # include <QtGui/QButtonGroup>
47 # include <QtGui/QCheckBox>
48 # include <QtGui/QComboBox>
49 # include <QtGui/QFrame>
50 # include <QtGui/QGroupBox>
51 # include <QtGui/QHeaderView>
52 # include <QtGui/QLabel>
53 # include <QtGui/QLineEdit>
54 # include <QtGui/QMessageBox>
55 # include <QtGui/QPlainTextEdit>
56 # include <QtGui/QPushButton>
57 # include <QtGui/QRadioButton>
58 # include <QtGui/QSpinBox>
88 QString str(
"finished successfully");
92 setWindowTitle(
"Automatic data processing " + str);
97 layout =
new QVBoxLayout(
this);
103 QStringList listOfStrings;
109 listOfExcludedObs << obs;
111 QString str2copyBlName(
""), strQCs(
"");
112 for (
int i=0; i<listOfExcludedObs.size(); i++)
122 for (QMap<QString, SgVlbiObservable*>::iterator it_obs=obs->
observableByKey().begin();
124 strQCs += it_obs.key() +
":" + QString(
"").setNum(it_obs.value()->getQualityFactor()) +
",";
126 strQCs = strQCs.left(strQCs.size() - 1);
128 str.sprintf(
"observation #%d,%s %s, %s, QC=(%s) which fits at %.2f +/- %.2f ps",
138 listOfStrings << str;
141 int length=0, maxLength=0;
143 layout->addWidget(label=
new QLabel(
"The automatic data analysis of the session " +
146 label->setAlignment(Qt::AlignCenter);
147 layout->addSpacing(20);
148 layout->addWidget(label=
new QLabel(
"The summary of operations:",
150 label->setAlignment(Qt::AlignLeft);
152 QGridLayout *grid=
new QGridLayout;
153 const QString sYes(
"Yes"), sNo(
"No");
154 layout->addLayout(grid);
155 grid->addWidget(
new QLabel(
"Ionoshpere corrections:"), 0,0);
156 grid->addWidget(
new QLabel(
"Group delay ambiguities:"), 1,0);
157 grid->addWidget(
new QLabel(
"Clock breaks found:"), 2,0);
158 grid->addWidget(
new QLabel(
"Outlier processing:"), 3,0);
159 grid->addWidget(
new QLabel(
"Weight correction:"), 4,0);
165 grid->addWidget(
new QLabel(sNo),
171 layout->addSpacing(15);
173 grid=
new QGridLayout;
174 layout->addLayout(grid);
175 grid->addWidget(
new QLabel(
"Number of used observations:"), 0,0);
176 grid->addWidget(
new QLabel(
"Weighted root mean squares, ps:"), 1,0);
178 grid->addWidget(
new QLabel(
"Normalized χ<sup>2</sup>:"), 2,0);
184 grid->addWidget(label=
new QLabel(str.sprintf(
"%.2f", band->
wrms(
DT_DELAY)*1.0e12)),
187 grid->addWidget(label=
new QLabel(str.sprintf(
"%.4f",
192 layout->addSpacing(15);
194 if (listOfStrings.size())
196 layout->addWidget(label=
new QLabel(
"The list of potentially usable but deselected observations:",
199 layout->addWidget(otliersDisplay);
200 otliersDisplay->setReadOnly(
true);
203 for (
int i=0; i<listOfStrings.size(); i++)
205 otliersDisplay->appendPlainText(listOfStrings.at(i));
206 length = otliersDisplay->fontMetrics().width(listOfStrings.at(i) +
"W");
207 if (maxLength < length)
211 otliersDisplay->setMinimumWidth(maxLength);
214 layout->addWidget(
new QLabel(
"No observations were deselected.",
this));
218 layout->addSpacing(20);
219 layout->addWidget(label=
new QLabel(
220 "Cannot perform automatic data analysis of the session " +
222 label->setAlignment(Qt::AlignCenter);
223 layout->addWidget(label=
new QLabel(
"Make the analysis manually.",
this));
224 label->setAlignment(Qt::AlignCenter);
225 layout->addSpacing(20);
228 QFrame *bar=
new QFrame(
this);
229 bar->setFrameStyle(QFrame::HLine | QFrame::Sunken);
230 layout->addWidget(bar);
232 QBoxLayout *subLayout=
new QHBoxLayout();
233 layout->addLayout(subLayout);
234 subLayout->addStretch(1);
237 subLayout->addWidget(button=
new QPushButton(
"Close",
this));
238 button->setMinimumSize(button->sizeHint());
239 connect(button, SIGNAL(clicked()), SLOT(
accept()));
bool isAttr(uint a) const
SgParametersDescriptor * parametersDescriptor_
SgGuiPiaReport(SgTaskConfig *, SgParametersDescriptor *, SgVlbiSession *, QWidget *=NULL, Qt::WindowFlags=0)
virtual ~SgGuiPiaReport()
@ F_HHMMSS
Just time: 17:02:43.6.
QString toString(Format format=F_Verbose) const
const QString & getKey() const
int numProcessed(DataType dType) const
double chi2(DataType) const
double wrms(DataType) const
@ Attr_NOT_VALID
omit the observation;
int getQualityCodeThreshold() const
double getResidual() const
const SgMJD & epoch() const
SgVlbiSourceInfo *& src()
SgVlbiMeasurement * activeDelay()
SgVlbiBaselineInfo * baseline()
int minQualityFactor() const
SgVlbiObservable * primeObs()
QMap< QString, SgVlbiObservable * > & observableByKey()
const QString & getName() const
@ Attr_FF_WEIGHTS_CORRECTED
weights have been corrected;
@ Attr_FF_ION_C_CALCULATED
ionospheric corrections have been calculated;
@ Attr_FF_OUTLIERS_PROCESSED
outliers have been processed;
@ Attr_FF_AMBIGS_RESOLVED
ambiguities have been resolved;
@ Attr_FF_AUTOPROCESSED
automatic data processing performed successfully;
const QString & getSessionCode() const
SgVlbiBand * primaryBand()
QList< SgVlbiObservation * > & observations()
QMap< QString, SgVlbiBaselineInfo * > & baselinesByName()