28 #include <QtCore/QDataStream>
29 #include <QtCore/QDir>
30 #include <QtCore/QFile>
31 #include <QtCore/QRegExp>
32 #include <QtCore/QStringList>
33 #include <QtCore/QTextStream>
56 return "SgVlbiStationInfo";
115 "::int2mntType(): got unknown value of the axis type (" + QString(
"").setNum(iMnt) +
")");
124 #pragma GCC push_options
125 #pragma GCC optimize ("O0")
317 #pragma GCC pop_options
328 auxObservationByScan_(),
329 cableCalsOriginTxt_(
""),
330 meteoDataOriginTxt_(
""),
338 tsysIfPolarizations_(),
376 for (
int iWave=0; iWave<11; iWave++)
377 for (
int iCoord=0; iCoord<3; iCoord++)
382 for (
int i=0; i<6; i++)
412 QMap<QString, SgVlbiAuxObservation*>::iterator it;
434 QString prefix =
"Stn " +
getKey().leftJustified(8,
' ') +
": ";
502 if (!auxObsByScan.size())
505 ": calcCBEpochs4Export(): cannot determine the epoch, the size of auxObs map is zero");
512 QMap<QString, SgVlbiAuxObservation*>::const_iterator it;
513 for (it=auxObsByScan.begin(); it!=auxObsByScan.end(); ++it)
519 if (*obs<*pb && tLeft<*obs)
521 if (*pb<*obs && *obs<tRight)
528 SgMJD exportEpoch(tLeft);
529 exportEpoch += 0.5*(tRight - tLeft);
531 double d=exportEpoch.
getTime();
532 d = round(d*24.0*60.0)/24.0/60.0;
537 ": calcCBEpochs4Export(): station " +
name() +
": set up clock break epoch for export: " +
544 ": calcCBEpochs4Export(): cannot determine clock break epoch for export: tLeft: " +
585 ": checkAuxObs(): station " +
name() +
": the size of aux.obs's container is zero");
588 QMap<SgMJD, QString> scanByTime;
589 QMap<QString, SgVlbiAuxObservation*>::iterator
596 if (!scanByTime.contains(*auxObs))
597 scanByTime.insert(*auxObs, it.key());
600 QString scanName=scanByTime.value(*auxObs);
602 ": WARNING: the station " +
name() +
": contains different observations at the same epoch: " +
603 auxObs->
toString() +
"; the scans: " + scanName +
" and " + it.key(),
true);
606 if (!scanNameById.contains(it.key()))
609 ": the scan " + it.key() +
" was removed from the list of known scans of the station " +
644 if (s.status() != QDataStream::Ok)
647 ": saveIntermediateResults(): error writting data");
652 if (s.status() == QDataStream::Ok)
657 ": saveIntermediateResults(): error writting data idx#" + QString(
"").setNum(i));
661 if (s.status() == QDataStream::Ok)
667 ": saveIntermediateResults(): error writting data for the local clock parameter setup");
673 ": saveIntermediateResults(): error writting data for the local zenith parameter setup");
677 return s.status() == QDataStream::Ok;
686 double v, e, a_0, a_1;
692 s >> n >> v >> e >> a_0 >> a_1 >> is >> ccs;
694 if (s.status() != QDataStream::Ok)
697 ": loadIntermediateResults(): error reading data: " +
698 (s.status()==QDataStream::ReadPastEnd?
"read past end of the file":
"read corrupt data"));
714 if (s.status() == QDataStream::Ok)
722 ": loadIntermediateResults(): error reading data idx#" + QString(
"").setNum(i) +
": " +
723 (s.status()==QDataStream::ReadPastEnd?
"read past end of the file":
"read corrupt data"));
729 if (s.status() != QDataStream::Ok)
732 ": loadIntermediateResults(): error reading clock breaks data: " +
733 (s.status()==QDataStream::ReadPastEnd?
"read past end of the file":
"read corrupt data"));
738 if (s.status() != QDataStream::Ok)
741 ": loadIntermediateResults(): error reading local clock parameter setup: " +
742 (s.status()==QDataStream::ReadPastEnd?
"read past end of the file":
"read corrupt data"));
747 if (s.status() != QDataStream::Ok)
750 ": loadIntermediateResults(): error reading local zenith parameter setup: " +
751 (s.status()==QDataStream::ReadPastEnd?
"read past end of the file":
"read corrupt data"));
755 return s.status()==QDataStream::Ok;
765 it.value()->resetCable();
777 it.value()->resetMeteo();
789 it.value()->resetTsys();
802 bool hasFslg, hasCdms, hasPcmt;
803 hasFslg = hasCdms = hasPcmt =
false;
848 ": prepare2Run(): station " +
name() +
": ccc index of cable calibration corrections is set to " +
const Sg3dVector v3Zero(0.0, 0.0, 0.0)
const SgMJD tZero(1957, 10, 4)
const SgMJD tInf(2100, 1, 1)
#define MAX_NUMBER_OF_POLYNOMIALS
bool isAttr(uint a) const
void createParameters(const QString &prefix)
bool loadIntermediateResults(QDataStream &)
bool saveIntermediateResults(QDataStream &) const
EccType getEccType() const
const Sg3dVector & getDR() const
virtual void write(LogLevel, quint32, const QString &, bool=false)
void setTime(double dTime)
@ F_YYYYMMDDHHMMSSSS
Long verbose: Fri, the 2nd of Apr, 2010; 17hr 02min 43.6400sec.
QString toString(Format format=F_Verbose) const
bool loadIntermediateResults(QDataStream &)
const QString & getKey() const
bool saveIntermediateResults(QDataStream &) const
@ Attr_PROCESSED
the observation has been processed;
void setEpoch4Export(const SgMJD &)
bool saveIntermediateResults(QDataStream &) const
bool loadIntermediateResults(QDataStream &)
double getElement(unsigned int i) const
const SgVector & cableCorrections() const
double aPrioriClockTerm_0_
static const QString className()
void calcCBEpochs4Export(const QMap< QString, SgVlbiAuxObservation * > &)
double estWetZenithDelay_
static const int maxNumOfPolynomials_
void prepare2Run(SgTaskConfig::CableCalSource src)
double estWetZenithDelaySigma_
bool saveIntermediateResults(QDataStream &) const
SgParameter * pAxisOffset_
SgBreakModel clockBreaks_
QVector< QString > tsysIfIds_
bool need2useAPrioriClocks_
SgTaskConfig::CableCalSource flybyCableCalSource_
QString tectonicPlateName_
double oLoadAmplitudes_[11][3]
CableCalsOrigin cableCalsOrigin_
@ Attr_ESTIMATE_AXO
estimate axis offset;
@ Attr_HAS_CCC_FSLG
a station has cable calibrations from FS log file
@ Attr_HAS_CABLE_CAL
a station has cable calibration readings;
@ Attr_ESTIMATE_COO
estimate station position;
@ Attr_HAS_METEO
a station has meteo parameters;
@ Attr_HAS_CCC_CDMS
a station has cable calibrations from CDMS
@ Attr_HAS_CCC_PCMT
a station has cable calibrations from PCMT
SgParameter * pClocks_[MAX_NUMBER_OF_POLYNOMIALS]
MeteoDataOrigin meteoDataOrigin_
static int mntType2int(MountingType)
QVector< double > tsysIfFreqs_
double estClockModel_[MAX_NUMBER_OF_POLYNOMIALS]
bool loadIntermediateResults(QDataStream &)
double cableCalMultiplierDBCal_
QVector< QString > tsysIfSideBands_
double cableCalMultiplier_
static MountingType int2mntType(int)
double estClockModelSigmas_[MAX_NUMBER_OF_POLYNOMIALS]
SgParameter * pZenithDelay_
void checkAuxObs(const QMap< QString, QString > &scanNameById)
QVector< QString > tsysIfPolarizations_
SgVlbiAuxObservation::CableCorrectionType cccIdx_
double aPrioriClockTerm_1_
void checkPresenceOfCableCalibratioCorrections()
double oLoadPhases_[11][3]
SgVlbiStationInfo(int idx=-1, const QString &key="Unknown", const QString &aka="Unknown too")
QMap< QString, SgVlbiAuxObservation * > auxObservationByScan_