- Timestamp:
- Nov 18, 2009, 10:36:47 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/BNC/latencychecker.cpp ¶
r1973 r1978 309 309 void latencyChecker::checkObsLatency(const QList<p_obs>& obsList) { 310 310 311 if ( _checkMountPoint == _staID || _checkMountPoint == "ALL" ) { 312 if (_perfIntr > 0 ) { 313 314 QListIterator<p_obs> it(obsList); 315 while (it.hasNext()) { 316 p_obs obs = it.next(); 311 if (_perfIntr > 0 ) { 312 313 QListIterator<p_obs> it(obsList); 314 while (it.hasNext()) { 315 p_obs obs = it.next(); 317 316 318 _newSecGPS = static_cast<int>(obs->_o.GPSWeeks); 319 if (_newSecGPS != _oldSecGPS) { 320 if (_newSecGPS % _perfIntr < _oldSecGPS % _perfIntr) { 321 if (_numLat > 0) { 322 if (_meanDiff > 0.0) { 317 _newSecGPS = static_cast<int>(obs->_o.GPSWeeks); 318 if (_newSecGPS != _oldSecGPS) { 319 if (_newSecGPS % _perfIntr < _oldSecGPS % _perfIntr) { 320 if (_numLat > 0) { 321 if (_meanDiff > 0.0) { 322 if ( _checkMountPoint == _staID || _checkMountPoint == "ALL" ) { 323 323 emit( newMessage(QString("%1: Mean latency %2 sec, min %3, max %4, rms %5, %6 epochs, %7 gaps") 324 324 .arg(_staID.data()) … … 330 330 .arg(_numGaps) 331 331 .toAscii(), true) ); 332 } else { 332 } 333 } else { 334 if ( _checkMountPoint == _staID || _checkMountPoint == "ALL" ) { 333 335 emit( newMessage(QString("%1: Mean latency %2 sec, min %3, max %4, rms %5, %6 epochs") 334 336 .arg(_staID.data()) … … 341 343 } 342 344 } 343 _meanDiff = _diffSecGPS / _numLat;344 _diffSecGPS = 0;345 _numGaps = 0;346 _sumLat = 0.0;347 _sumLatQ = 0.0;348 _numLat = 0;349 _minLat = _maxDt;350 _maxLat = -_maxDt;351 345 } 352 if (_followSec) { 353 _diffSecGPS += _newSecGPS - _oldSecGPS; 354 if (_meanDiff>0.) { 355 if (_newSecGPS - _oldSecGPS > 1.5 * _meanDiff) { 356 _numGaps += 1; 357 } 358 } 359 } 360 361 // Compute the observations latency 362 // -------------------------------- 363 int week; 364 double sec; 365 currentGPSWeeks(week, sec); 366 const double secPerWeek = 7.0 * 24.0 * 3600.0; 367 if (week < obs->_o.GPSWeek) { 368 week += 1; 369 sec -= secPerWeek; 370 } 371 if (week > obs->_o.GPSWeek) { 372 week -= 1; 373 sec += secPerWeek; 374 } 375 376 _curLat = sec - obs->_o.GPSWeeks; 377 _sumLat += _curLat; 378 _sumLatQ += _curLat * _curLat; 379 if (_curLat < _minLat) { 380 _minLat = _curLat; 381 } 382 if (_curLat >= _maxLat) { 383 _maxLat = _curLat; 384 } 385 _numLat += 1; 386 _oldSecGPS = _newSecGPS; 387 _followSec = true; 388 } 389 } 390 } 391 } 392 } 393 394 // Perform latency checks (corrections) 395 ////////////////////////////////////////////////////////////////////////////// 396 void latencyChecker::checkCorrLatency(int corrGPSEpochTime) { 397 398 if (corrGPSEpochTime < 0) { 399 return; 400 } 401 402 if ( _checkMountPoint == _staID || _checkMountPoint == "ALL" ) { 403 if (_perfIntr > 0) { 404 405 _newSecGPS = corrGPSEpochTime; 406 407 int week; 408 double sec; 409 currentGPSWeeks(week, sec); 410 double dt = fabs(sec - _newSecGPS); 411 const double secPerWeek = 7.0 * 24.0 * 3600.0; 412 if (dt > 0.5 * secPerWeek) { 413 if (sec > _newSecGPS) { 414 sec -= secPerWeek; 415 } else { 416 sec += secPerWeek; 417 } 418 } 419 if (_newSecGPS != _oldSecGPS) { 420 if (int(_newSecGPS) % _perfIntr < int(_oldSecGPS) % _perfIntr) { 421 if (_numLat>0) { 422 QString late; 423 if (_meanDiff>0.) { 424 late = QString(": Mean latency %1 sec, min %2, max %3, rms %4, %5 epochs, %6 gaps") 425 .arg(int(_sumLat/_numLat*100)/100.) 426 .arg(int(_minLat*100)/100.) 427 .arg(int(_maxLat*100)/100.) 428 .arg(int((sqrt((_sumLatQ - _sumLat * _sumLat / _numLat)/_numLat))*100)/100.) 429 .arg(_numLat) 430 .arg(_numGaps); 431 emit(newMessage(QString(_staID + late ).toAscii(), true) ); 432 } 433 else { 434 late = QString(": Mean latency %1 sec, min %2, max %3, rms %4, %5 epochs") 435 .arg(int(_sumLat/_numLat*100)/100.) 436 .arg(int(_minLat*100)/100.) 437 .arg(int(_maxLat*100)/100.) 438 .arg(int((sqrt((_sumLatQ - _sumLat * _sumLat / _numLat)/_numLat))*100)/100.) 439 .arg(_numLat); 440 emit(newMessage(QString(_staID + late ).toAscii(), true) ); 441 } 442 } 443 _meanDiff = int(_diffSecGPS)/_numLat; 346 _meanDiff = _diffSecGPS / _numLat; 444 347 _diffSecGPS = 0; 445 348 _numGaps = 0; … … 447 350 _sumLatQ = 0.0; 448 351 _numLat = 0; 449 _minLat = 1000.;450 _maxLat = - 1000.;352 _minLat = _maxDt; 353 _maxLat = -_maxDt; 451 354 } 452 355 if (_followSec) { … … 458 361 } 459 362 } 460 _curLat = sec - _newSecGPS; 363 364 // Compute the observations latency 365 // -------------------------------- 366 int week; 367 double sec; 368 currentGPSWeeks(week, sec); 369 const double secPerWeek = 7.0 * 24.0 * 3600.0; 370 if (week < obs->_o.GPSWeek) { 371 week += 1; 372 sec -= secPerWeek; 373 } 374 if (week > obs->_o.GPSWeek) { 375 week -= 1; 376 sec += secPerWeek; 377 } 378 _curLat = sec - obs->_o.GPSWeeks; 461 379 _sumLat += _curLat; 462 380 _sumLatQ += _curLat * _curLat; … … 471 389 _followSec = true; 472 390 } 391 } 392 } 393 } 394 395 // Perform latency checks (corrections) 396 ////////////////////////////////////////////////////////////////////////////// 397 void latencyChecker::checkCorrLatency(int corrGPSEpochTime) { 398 399 if (corrGPSEpochTime < 0) { 400 return; 401 } 402 403 if (_perfIntr > 0) { 404 405 _newSecGPS = corrGPSEpochTime; 406 407 int week; 408 double sec; 409 currentGPSWeeks(week, sec); 410 double dt = fabs(sec - _newSecGPS); 411 const double secPerWeek = 7.0 * 24.0 * 3600.0; 412 if (dt > 0.5 * secPerWeek) { 413 if (sec > _newSecGPS) { 414 sec -= secPerWeek; 415 } else { 416 sec += secPerWeek; 417 } 418 } 419 if (_newSecGPS != _oldSecGPS) { 420 if (int(_newSecGPS) % _perfIntr < int(_oldSecGPS) % _perfIntr) { 421 if (_numLat>0) { 422 QString late; 423 if (_meanDiff>0.) { 424 late = QString(": Mean latency %1 sec, min %2, max %3, rms %4, %5 epochs, %6 gaps") 425 .arg(int(_sumLat/_numLat*100)/100.) 426 .arg(int(_minLat*100)/100.) 427 .arg(int(_maxLat*100)/100.) 428 .arg(int((sqrt((_sumLatQ - _sumLat * _sumLat / _numLat)/_numLat))*100)/100.) 429 .arg(_numLat) 430 .arg(_numGaps); 431 if ( _checkMountPoint == _staID || _checkMountPoint == "ALL" ) { 432 emit(newMessage(QString(_staID + late ).toAscii(), true) ); 433 } 434 } 435 else { 436 late = QString(": Mean latency %1 sec, min %2, max %3, rms %4, %5 epochs") 437 .arg(int(_sumLat/_numLat*100)/100.) 438 .arg(int(_minLat*100)/100.) 439 .arg(int(_maxLat*100)/100.) 440 .arg(int((sqrt((_sumLatQ - _sumLat * _sumLat / _numLat)/_numLat))*100)/100.) 441 .arg(_numLat); 442 if ( _checkMountPoint == _staID || _checkMountPoint == "ALL" ) { 443 emit(newMessage(QString(_staID + late ).toAscii(), true) ); 444 } 445 } 446 } 447 _meanDiff = int(_diffSecGPS)/_numLat; 448 _diffSecGPS = 0; 449 _numGaps = 0; 450 _sumLat = 0.0; 451 _sumLatQ = 0.0; 452 _numLat = 0; 453 _minLat = 1000.; 454 _maxLat = -1000.; 455 } 456 if (_followSec) { 457 _diffSecGPS += _newSecGPS - _oldSecGPS; 458 if (_meanDiff>0.) { 459 if (_newSecGPS - _oldSecGPS > 1.5 * _meanDiff) { 460 _numGaps += 1; 461 } 462 } 463 } 464 _curLat = sec - _newSecGPS; 465 _sumLat += _curLat; 466 _sumLatQ += _curLat * _curLat; 467 if (_curLat < _minLat) { 468 _minLat = _curLat; 469 } 470 if (_curLat >= _maxLat) { 471 _maxLat = _curLat; 472 } 473 _numLat += 1; 474 _oldSecGPS = _newSecGPS; 475 _followSec = true; 473 476 } 474 477 }
Note:
See TracChangeset
for help on using the changeset viewer.