23 #ifndef SG_STN_LOG_COLLECTOR_H
24 #define SG_STN_LOG_COLLECTOR_H
36 #include <QtCore/QByteArray>
37 #include <QtCore/QString>
38 #include <QtCore/QList>
39 #include <QtCore/QMap>
40 #include <QtCore/QRegularExpression>
41 #include <QtCore/QTextStream>
42 #include <QtCore/QVector>
330 for (
int i=0; i<tsr.
getTrakls().size(); i++)
489 inline void addRecord(
const QString& sensorId,
const QString& boardId,
double bw,
490 const QString& agc,
double gainU,
double gainL,
double tpOffU,
double tpOffL,
491 double tpOnU,
double tpOnL,
double sefdU,
double sefdL)
560 for (QMap<QString, float*>::iterator it=
pcal_.begin(); it!=
pcal_.end(); ++it)
582 inline bool addPcals(
const QMap<QString, float*>& pcals)
585 for (QMap<QString, float*>::const_iterator it=pcals.begin(); it!=pcals.end(); ++it)
587 if (
pcal_.contains(it.key()))
591 "::addPcals(): the key \"" + it.key() +
"\" is already in the map");
593 float *f =
new float[2];
595 *(f + 1) = *(it.value() + 1);
596 pcal_.insert(it.key(), f);
646 for (QMap<QString, QVector<double>*>::const_iterator it=sr.
getValByChanKey().begin();
648 valByChanKey_.insert(it.key(),
new QVector<double>(*it.value()));
685 const QString& chanKey,
const QVector<double>& val);
700 QMap<QString, QVector<double>*>
860 for (
int i=0; i<
tSyses_.size(); i++)
931 static double calcSkyFreq(
double loFreq,
double bbcFreq,
double width,
1007 QMap<QString, SgChannelSideBand>
1009 QMap<QString, SgChannelPolarization>
1014 QMap<QString, SgChannelSideBand>
1016 QMap<QString, SgChannelPolarization>
1024 QMap<QString, SgChannelPolarization>
1027 QMap<QString, SgChannelSideBand>
1036 QMap<QString, SgChannelPolarization>
1104 ChanCfg(
const QString& bandKey,
int cIdx,
double skyFrq,
double bandWidth,
1238 bool createAntabFile(
const QString& inputLogFileName,
const QString& outputFileName,
1239 const QString& stnKey,
const SgChannelSkeded *channelSkeded,
bool useSkededChannelSetup,
1240 bool have2overwrite,
bool reportAllTsysData);
1241 bool createAntCalFile(
const QString& inputLogFileName,
const QString& outputFileName,
1242 const QString& stnKey,
const SgChannelSkeded *channelSkeded,
bool useSkededChannelSetup,
1243 bool have2overwrite,
bool reportAllReadings,
bool supressNonUsedSensors,
int antcalOutputData,
1244 const QString& ext4compress,
const QString& userCommand);
1282 QMap<QString, SgOnSourceRecord*>
1424 bool readLogFile(
const QString& fileName,
const QString& stnName,
1426 const QString& orderOfMeteo);
1430 bool reportAllTsysData);
1432 inline bool createAntabFile(
const QString& stnKey,
const QString& outputFileName,
bool have2owrt,
1433 bool reportAllTsysData)
1439 inline bool createAntCalFile(
const QString& stnKey,
const QString& outputFileName,
bool have2owrt,
1440 bool reportAllReadings,
bool supressNonUsedSensors,
const QString& ext4compress)
1464 static const QRegularExpression
1466 static const QRegularExpression
1468 static const QRegularExpression
1470 static const QRegularExpression
1472 static const QRegularExpression
1501 QMap<QString, float>& tSys,
const SgMJD& tAtTheBegin);
1507 QMap<QString, float>& tSys,
const SgMJD& tAtTheBegin);
1514 QMap<QString, QVector<int> >& tPcont,
const SgMJD& tAtTheBegin);
1517 QMap<QString, float*>& pcal,
const SgMJD& tAtTheBegin);
1520 QString& sKey,
float& dot2gps,
const SgMJD& tAtTheBegin);
1526 SgMJD& t, QString& sensorId, QString& srcName,
double& az,
double& de, QVector<double>& vec,
1527 const SgMJD& tAtTheBegin);
1533 const QString& rinexStnName);
1535 SgMJD& t,
double& v, QString& source, QString& scan);
1542 bool extractVcReading(
const QString& str,
const QRegularExpressionMatch& match,
1544 bool extractLoReading(
const QString& str,
const QRegularExpressionMatch& match,
1552 bool extractVciReading(
const QString& str,
const QRegularExpressionMatch& match,
1556 QString
setupTpSensor(
const QString& sensorTag,
const QString& callerName);
1565 #define NUM_OF_VLBA_ENTRIES (15)
1600 bool readLogFile(
const QString& fileName,
int year);
1618 QMap<QString, SgStnLogReadings*>
1624 bool strs2mjd(
int nYear,
const QString& sDay,
const QString& sHr,
const QString& sMin,
1625 const QString& sSec,
SgMJD& t);
const SgMJD tZero(1957, 10, 4)
#define NUM_OF_VLBA_ENTRIES
static const QString className()
void setT(const SgMJD &t)
void setOsRec(SgOnSourceRecord *os)
SgCableCalReading(const SgMJD &t, double v)
bool operator==(const SgCableCalReading &cab) const
SgCableCalReading(const SgCableCalReading &cr)
const SgMJD & getT() const
SgOnSourceRecord * osRec_
const SgOnSourceRecord * getOsRec() const
QMap< QString, SgChannelPolarization > pcalPolarizationById_
QMap< QString, QString > pcalIdByKey_
QMap< QString, double > & ifFreqBySensorKey()
QMap< QString, SgChannelSideBand > & ifSideBandById()
QMap< QString, int > & ifIdxById()
QMap< QString, QList< QString > > & origSensorIdById()
QMap< QString, SgChannelPolarization > loPolarizationById_
QMap< QString, SgChannelSideBand > & loSideBandById()
QMap< QString, SgChannelPolarization > & loPolarizationById()
QMap< QString, double > & ifBandwidthBySensorKey()
QMap< int, double > ifFreqByIdx_
QMap< QString, SgChannelPolarization > & pcalPolarizationById()
QMap< QString, double > ifBandwidthBySensorKey_
QMap< QString, QString > loIdBySensorKey_
QMap< QString, QString > loIdByCid_
QMap< QString, QString > xpsIdByKey_
QMap< QString, QList< QString > > origSensorIdById_
QMap< QString, SgChannelPolarization > loPolarizationBySensorKey_
QMap< int, double > & bbcBandwidthByIdx()
QMap< QString, SgChannelSideBand > loSideBandBySensorKey_
void setBackEndType(BackEndType tp)
QMap< QString, QString > & ifIdBySensorKey()
QMap< QString, SgChannelPolarization > ifPolarizationById_
bool selfCheck(const QString &stnKey)
QMap< int, double > & bbcFreqByIdx()
QMap< QString, QString > & xpsIdByKey()
QMap< QString, double > & loFreqById()
QMap< QString, QString > ifIdBySensorKey_
QMap< QString, QString > & pcalIdByKey()
QMap< QString, int > ifIdxById_
static double calcSkyFreq(double loFreq, double bbcFreq, double width, SgChannelSideBand loSideBand, SgChannelSideBand ifSideBand)
QMap< QString, double > ifFreqBySensorKey_
QMap< QString, SgChannelSideBand > loSideBandById_
QMap< QString, QString > & loIdByCid()
QMap< int, QString > loIdByIdx_
static const QString className()
QMap< QString, SgChannelPolarization > & loPolarizationBySensorKey()
QMap< QString, QString > & loIdBySensorKey()
QMap< int, double > bbcFreqByIdx_
QMap< QString, double > loFreqById_
QMap< int, QString > & loIdByIdx()
QMap< QString, double > & loFreqBySensorKey()
QMap< QString, double > loFreqBySensorKey_
QMap< QString, SgChannelPolarization > & ifPolarizationById()
QMap< int, double > & ifFreqByIdx()
BackEndType getBackEndType() const
QMap< int, double > bbcBandwidthByIdx_
QMap< QString, SgChannelSideBand > ifSideBandById_
QMap< QString, SgChannelSideBand > & loSideBandBySensorKey()
void setHwType(HwType tp)
const QString & getBandKey() const
QList< SgChannelSideBand > sideBands_
const QList< SgChannelSideBand > & getSideBands() const
ChanCfg(const QString &bandKey, int cIdx, double skyFrq, double bandWidth, const QList< SgChannelSideBand > &sideBands)
double getBandWidth() const
ChanCfg(const ChanCfg &cc)
StnCfg(const QString &key)
void setStnKey(const QString &key)
const QList< ChanCfg > & getChannelCfgs() const
const QString & getStnKey() const
QList< ChanCfg > channelCfgs_
QList< ChanCfg > & channelCfgs()
QMap< QString, StnCfg > stnCfgByKey_
static const QString className()
bool parseSkdFile(const QString &fileName)
TpRecord(const TpRecord &tpr)
TpRecord & operator=(const TpRecord &tpr)
void addRecord(const QString &sensorId, const QString &boardId, double bw, const QString &agc, double gainU, double gainL, double tpOffU, double tpOffL, double tpOnU, double tpOnL, double sefdU, double sefdL)
static const QString className()
QMap< QString, TpRecord > & tpBySensor()
void setOsRec(SgOnSourceRecord *os)
const SgOnSourceRecord * getOsRec() const
bool getIsOnSource() const
const SgMJD & getT() const
void setIsOnSource(bool isOnSource)
void setT(const SgMJD &t)
SgOnSourceRecord *& osRec()
const QMap< QString, TpRecord > & getTpBySensor() const
SgOnSourceRecord * osRec_
void setIsDataOn(bool isDataOn)
QMap< QString, TpRecord > tpBySensor_
SgDbbc3TpReading(const SgDbbc3TpReading &tps)
void setT(const SgMJD &t)
QMap< QString, float > dot2gpsByBrd_
const SgOnSourceRecord * getOsRec() const
bool addDot2gpsByBrd(const QString &key, float v)
SgDot2xpsReading(const SgDot2xpsReading &d2r)
const QMap< QString, float > & getDot2gpsByBrd() const
void setOsRec(SgOnSourceRecord *os)
static const QString className()
SgOnSourceRecord * osRec_
const SgMJD & getT() const
SgOnSourceRecord *& osRec()
virtual void write(LogLevel, quint32, const QString &, bool=false)
const SgMJD & getT() const
const SgOnSourceRecord * getOsRec() const
SgOnSourceRecord * osRec_
void setT(const SgMJD &t)
bool operator==(const SgMeteoReading &met) const
SgMeteoReading(const SgMJD &t, const SgMeteoData &m)
void setOsRec(SgOnSourceRecord *os)
SgMeteoReading(const SgMeteoReading &mr)
static const QString className()
void setM(const SgMeteoData &m)
const SgMeteoData & getM() const
SgMeteoReading(const SgMJD &t, double temp, double pres, double rho)
QList< SgCableCalReading * > & cableCals()
QList< SgTsysReading * > & tSyses()
static const QString className()
const SgMJD & getTdataOn() const
const QString & getScanName() const
void setScanName(const QString &str)
const SgMJD & getTfinis() const
void setSourceName(const QString &str)
bool operator==(const SgOnSourceRecord &rec) const
bool isSameArgs(const SgOnSourceRecord &rec) const
void setTfinis(const SgMJD &t)
QList< SgCableCalReading * > cableCals_
QList< SgDbbc3TpReading * > & dbbc3Tps()
void setTdataOn(const SgMJD &t)
const QString & getSourceName() const
QList< SgMeteoReading * > meteoPars_
const SgMJD & getTstart() const
void setTstart(const SgMJD &t)
QList< SgTsysReading * > tSyses_
QList< SgMeteoReading * > & meteoPars()
QList< SgDbbc3TpReading * > dbbc3Tps_
SgOnSourceRecord *& osRec()
const SgOnSourceRecord * getOsRec() const
SgPcalReading(const SgPcalReading &pcr)
void setT(const SgMJD &t)
void setOsRec(SgOnSourceRecord *os)
SgOnSourceRecord * osRec_
const QMap< QString, float * > & getPcal() const
static const QString className()
QMap< QString, float * > & pcal()
const SgMJD & getT() const
bool addPcals(const QMap< QString, float * > &pcals)
QMap< QString, float * > pcal_
const SgMJD & getT() const
SgSefdReading(const SgSefdReading &sr)
static const QString className()
void setT(const SgMJD &t)
bool addValByChanKey(const SgMJD &t, const QString &srcName, double az, double el, const QString &chanKey, const QVector< double > &val)
QMap< QString, QVector< double > * > valByChanKey_
QMap< QString, QVector< double > * > & valByChanKey()
void setSrcName(const QString &name)
const QMap< QString, QVector< double > * > & getValByChanKey() const
const QString & getSrcName() const
const QList< QString > & getContent() const
QList< QString > & content()
const QString & getName() const
QList< QString > content_
int getNumOfExpanded() const
Procedure(const QString &name)
Procedure(const Procedure &p)
void setName(const QString &name)
const QMap< QString, double > * rinexPressureOffsetByStn_
QString setupTpSensor(const QString &sensorTag, const QString &callerName)
void setDefaultCableSignByStn(const QMap< QString, int > *map)
const QMap< QString, QString > * rinexFileNameByStn_
const SgChannelSkeded * getChannelSkeded() const
static const QRegularExpression reMet_
void setAntcalOutputData(int outputData)
FieldSystemEpochFormat fsFmt_
void setStationName(const QString &name)
bool useSkededChannelSetup_
void setRinexPressureOffsetByStn(const QMap< QString, double > *map)
bool extractTraklReading(const QString &str, const QRegularExpressionMatch &match, SgMJD &t, SgTraklReading &, const SgMJD &tAtTheBegin)
SgStnLogReadings & logReadings()
static const QString className()
bool extractTsysVgosReading(const QString &str, const QRegularExpression &reTsys, SgMJD &t, QMap< QString, float > &tSys, const SgMJD &tAtTheBegin)
static const QRegularExpression reFsOld_
bool extractBbcReading(const QString &str, const QRegularExpressionMatch &match, SgMJD &t, const SgMJD &atEnd, SgChannelSetup &cs, const SgMJD &tFirst)
bool createAntabFile(const QString &stnKey, const QString &outputFileName, bool have2owrt, bool reportAllTsysData)
static const QRegularExpression rePcmt_
bool hasCdmsRecord() const
bool extractTsysReading(const QString &str, const QRegularExpression &reTsys, SgMJD &t, QMap< QString, float > &tSys, const SgMJD &tAtTheBegin)
SgChannelSkeded * channelSkeded()
bool extractDataFromMetRecord(const QString &str, const QRegularExpressionMatch &match, SgMJD &t, SgMeteoData &m)
const QString & getStationName() const
bool extractVciReading(const QString &str, const QRegularExpressionMatch &match, SgMJD &t, const SgMJD &atEnd, SgChannelSetup &cs, const SgMJD &tFirst)
bool readDbbc3DumpFile(const QString &fileName)
const QMap< QString, int > * defaultCableSignByStn_
int getAntcalOutputData() const
bool extractCableCalibration(const QString &str, const QRegularExpressionMatch &match, SgMJD &t, double &v)
static int fsContentStartsAt_[]
bool extractCableCalibrationSignByDiff(const QRegularExpressionMatch &match, int &v)
bool propagateData(SgVlbiStationInfo *stn, bool createAntabFile, bool overwriteAntabFile, bool reportAllTsysData)
void setRinexFileNameByStn(const QMap< QString, QString > *map)
bool extractContent(const QString &str, QString &content)
QString inputLogFileName_
bool extractVcReading(const QString &str, const QRegularExpressionMatch &match, SgMJD &t, const SgMJD &atEnd, SgChannelSetup &cs, const SgMJD &tFirst)
void setUseSkededChannelSetup(bool use)
SgChannelSkeded * channelSkeded_
bool createAntCalFile(const QString &stnKey, const QString &outputFileName, bool have2owrt, bool reportAllReadings, bool supressNonUsedSensors, const QString &ext4compress)
bool extractPatchReading(const QString &str, const QRegularExpressionMatch &match, SgMJD &t, const SgMJD &atEnd, SgChannelSetup &cs, const SgMJD &tFirst)
bool extractMeteoReading(const QString &str, const QRegularExpression &reMeteo, SgMJD &t, SgMeteoData &m, const int *oom)
FieldSystemEpochFormat guessFsFormat(const QString &str)
void setChannelSkeded(SgChannelSkeded *cs)
bool readLogFile(const QString &fileName, const QString &stnName, const SgMJD &tFirst, const SgMJD &tLast, const QString &orderOfMeteo)
FieldSystemEpochFormat fsFmt() const
bool extractChanSkyFrqReading(const QString &str, const QRegularExpressionMatch &match, SgMJD &t, const SgMJD &atEnd, SgChannelSetup &cs, const SgMJD &tFirst)
bool extractDot2gpsVgosReading(const QString &str, const QRegularExpressionMatch &match, SgMJD &t, QString &sKey, float &dot2gps, const SgMJD &tAtTheBegin)
void setUserCommand(const QString &str)
bool getUseSkededChannelSetup() const
bool extractEpoch(const QString &str, SgMJD &t)
bool extractLoReading(const QString &str, const QRegularExpressionMatch &match, SgMJD &t, const SgMJD &atEnd, SgChannelSetup &cs, const SgMJD &tFirst)
bool extractDataFromPcmtRecord(const QString &str, const QRegularExpressionMatch &match, SgMJD &t, double &v, QString &source, QString &scan)
static const QRegularExpression reFsNewest_
bool extractPcalVgosReading(const QString &str, const QRegularExpression &re, SgMJD &t, QMap< QString, float * > &pcal, const SgMJD &tAtTheBegin)
QMap< QString, Procedure * > procedureByName_
static const QRegularExpression reFsNew_
SgStnLogReadings logReadings_
const QMap< QString, int > * getDefaultCableSignByStn() const
const QString & getUserCommand()
bool hasCableRecord() const
QMap< QString, Procedure * > & procedureByName()
bool checkRinexFile(const QString &fileName, const SgMJD &tStart, const SgMJD &tFinis, const QString &rinexStnName)
bool extractSefdReading(const QString &str, const QRegularExpressionMatch &match, SgMJD &t, QString &sensorId, QString &srcName, double &az, double &de, QVector< double > &vec, const SgMJD &tAtTheBegin)
bool hasTsysRecord() const
bool extractTpcontVgosReading(const QString &str, const QRegularExpression &reTpcont, SgMJD &t, QMap< QString, QVector< int > > &tPcont, const SgMJD &tAtTheBegin)
bool extractLoRxgReading(const QString &str, const QRegularExpressionMatch &match, SgMJD &t, const SgMJD &atEnd, SgChannelSetup &cs, const SgMJD &tFirst)
const QString & getRecorderInfo() const
QList< SgDbbc3TpReading * > & dbbc3Tps()
static const QString sFiller_
QList< SgTraklReading * > & trakls()
void removeCableCalReadings()
QList< SgDot2xpsReading * > dot2xpses_
QList< SgSefdReading * > sefds_
void export2antabFrqs_vgosSetup(QTextStream &s)
bool createAntabFile(const QString &inputLogFileName, const QString &outputFileName, const QString &stnKey, const SgChannelSkeded *channelSkeded, bool useSkededChannelSetup, bool have2overwrite, bool reportAllTsysData)
void export2antCalFrqs_vgosSetup(QTextStream &s)
QList< SgCableCalReading * > & cableCals()
void removeMeteoReadings()
const QString & getFsVersionLabel() const
void export2antabFrqs_skededSetup(QTextStream &s, const SgChannelSkeded::StnCfg &sCfg)
void allocateCableReadings()
bool areMeteosPresent() const
QList< SgTsysReading * > & tSyses()
bool createAntCalFile(const QString &inputLogFileName, const QString &outputFileName, const QString &stnKey, const SgChannelSkeded *channelSkeded, bool useSkededChannelSetup, bool have2overwrite, bool reportAllReadings, bool supressNonUsedSensors, int antcalOutputData, const QString &ext4compress, const QString &userCommand)
void cleanCableCalibrations()
void interpolateMeteoParameters(SgVlbiAuxObservation *aux)
void setCableCalAmbig(double a)
void export2antabFrqs_nativeSetup(QTextStream &s)
QList< SgPcalReading * > pcals_
int determineCableSignFromLong()
static const QString className()
QList< SgSefdReading * > & sefds()
QList< SgDbbc3TpReading * > dbbc3Tps_
void export2antabFrqs_missedSetup(QTextStream &s)
static const double dFiller_
QList< SgCableCalReading * > cableCals_
bool compareChannelSetups(const SgChannelSkeded::StnCfg &sCfg)
void lookupScanName(SgOnSourceRecord *osRec, const QMap< QString, SgVlbiAuxObservation * > &auxObsByScan)
QList< SgMeteoReading * > & meteoPars()
const SgChannelSetup & getChannelSetup() const
QList< SgDot2xpsReading * > & dot2xpses()
void setRecorderInfo(const QString &info)
void setStationName(const QString &name)
void setBackEndInfo(const QString &info)
QList< SgOnSourceRecord * > & onSourceRecords()
QList< SgOnSourceRecord * > onSourceRecords_
QList< SgTraklReading * > trakls_
SgChannelSetup & channelSetup()
SgChannelSetup channelSetup_
InputType getItType() const
bool areCableCalsPresent() const
const QString & getExperimentName() const
void setExperimentName(const QString &name)
QList< SgTsysReading * > tSyses_
QList< SgMeteoReading * > meteoPars_
double getCableCalAmbig() const
const QString & getBackEndInfo() const
void export2antCalPcal_vgosSetup(QTextStream &s)
void cleanMeteoParameters()
QList< SgCableCalReading * > & cableLongs()
bool tSensorsPrinted2AntCal_
void setFsVersionLabel(const QString &ver)
QList< SgCableCalReading * > cableLongs_
void export2antCalFrqs_skededSetup(QTextStream &s, const SgChannelSkeded::StnCfg &sCfg)
bool compareChannelNumbers(const SgChannelSkeded::StnCfg &sCfg)
bool propagateData(SgVlbiStationInfo *stn)
void verifyReadings(SgVlbiStationInfo *stn, const QMap< QString, int > *defaultCableSignByStn)
static const int nFiller_
QList< SgPcalReading * > & pcals()
bool areCableCalsPresent_
void removeTsysReadings()
QMap< QString, SgOnSourceRecord * > recordByScan_
void setItType(InputType t)
void export2antCalFrqs_nativeSetup(QTextStream &s)
static const QString className()
void setT(const SgMJD &t)
SgTraklReading(const SgMJD &t, float az, float azv, float el, float elv)
const SgMJD & getT() const
SgTraklReading(const SgTraklReading &r)
void setOsRec(SgOnSourceRecord *os)
void setT(const SgMJD &t)
SgTsysReading(const SgTsysReading &tsr)
static const QString className()
void addTsyses(const QMap< QString, float > &tsys)
void setIsOnSource(bool isOnSource)
const QMap< QString, float > & getTsys() const
QMap< QString, QVector< int > > & tpcont()
QList< SgTraklReading * > & trakls()
const SgOnSourceRecord * getOsRec() const
void setIsDataOn(bool isDataOn)
QList< SgTraklReading * > trakls_
const QList< SgTraklReading * > & getTrakls() const
const SgMJD & getT() const
QMap< QString, QVector< int > > tpcont_
QMap< QString, float > & tsys()
const QMap< QString, QVector< int > > & getTpcont() const
QMap< QString, float > tsys_
SgOnSourceRecord * osRec_
void addTpconts(const QMap< QString, QVector< int > > &tpcont)
bool getIsOnSource() const
SgOnSourceRecord *& osRec()
static const QString className()
const QString & getLogFileName() const
bool readLogFile(const QString &fileName, int year)
bool strs2mjd(int nYear, const QString &sDay, const QString &sHr, const QString &sMin, const QString &sSec, SgMJD &t)
bool propagateData(SgVlbiStationInfo *stn)
static const QString ivsStationNames_[NUM_OF_VLBA_ENTRIES]
bool isVlba(const QString &key) const
static const QString vlbaStationCodes_[NUM_OF_VLBA_ENTRIES]
QMap< QString, QString > ivs2vlba_
QMap< QString, SgStnLogReadings * > readingsByKey_