#include <ToolSPAC.h>
Public Member Functions | |
| virtual bool | initStations (SubSignalPool *subPool) |
| virtual void | setParameters (int &argc, char **argv) |
| void | setRings (QString fileName) |
| ToolSPAC (QWidget *parent) | |
| virtual void | waitFinished () |
| ~ToolSPAC () | |
Protected Member Functions | |
| AbstractParameters * | parameters (AbstractParameters *param=0) const |
| void | setArrayMap () |
| void | setCoArrayMap () |
| void | startLoop (SPACLoop *loop, SPACParameters *param) |
| virtual const char * | toolName () |
| virtual void | updateAllFields () |
Protected Attributes | |
| QTime | _chrono |
| ToolSPACd * | _d |
| SPACLoop * | _loop |
| SPACParameters * | _param |
| QVector< StationCouple > | _stationCouples |
| TimeWindowList | _winList |
| ToolSPAC::ToolSPAC | ( | QWidget * | parent | ) |
References _d, _loop, GeopsyGui::ToolBase::loadLogParameters(), GeopsyGui::ToolBase::setWindowTitle(), and TRACE.
:
ToolArrayBase(parent, 2)
{
TRACE;
setWindowIcon(QIcon( ":/images/spac-22x22.png" ));
setObjectName("ToolSPAC");
QVBoxLayout * baseLayout=new QVBoxLayout(this);
_d=new ToolSPACd(this);
baseLayout->addWidget(_d);
setWindowTitle( "SPAC toolbox" );
connect(_d->startBut, SIGNAL(clicked()), this, SLOT(start()) );
connect(_d->stopBut, SIGNAL(clicked()), this, SLOT(stop()) );
connect(_d->testBut, SIGNAL(clicked()), this, SLOT(parametersChanged()) );
connect(_d->loadParam, SIGNAL(clicked()), this, SLOT(loadLogParameters()) );
connect(_d->winParam, SIGNAL(parametersChanged()), this, SLOT(parametersChanged()) );
connect(_d->timeLimits, SIGNAL(parametersChanged()), this, SLOT(parametersChanged()) );
connect(_d->testFrequency, SIGNAL(valueChanged( const QString& )), this, SLOT(parametersChanged()) );
_loop=0;
}
| bool ToolSPAC::initStations | ( | SubSignalPool * | subPool | ) | [virtual] |
Reimplemented from GeopsyGui::ToolBase.
References ToolArrayBase::_array, _arrayMap, GeopsyGui::ToolBase::_childrenList, _coArrayMap, _d, GeopsyGui::ToolBase::_subPool, _winList, GeopsyCore::StationList::components(), geopsyGui, ToolArrayBase::initStations(), MSG_ID, GeopsyCore::SubSignalPool::name(), setArrayMap(), setCoArrayMap(), ToolArrayBase::setTimeWindowLayer(), GeopsyGui::ToolBase::timeWindowLayer(), QGpCoreTools::tr(), TRACE, and GeopsyGui::ToolBase::updateSubPool().
{
TRACE;
if( !ToolArrayBase::initStations(subPool, _d->winParam) ) return false;
switch (_array.components()) {
case StationSignals::VerticalComponent:
case StationSignals::AllComponent:
break;
default:
Message::warning(MSG_ID, tr("Creating array"),
tr( "Error while checking components: only vertical or 3 components allowed." ),
Message::cancel());
return false;
}
_d->timeLimits->setPicks(_subPool);
// Create children plots: coordinates and azimuth
if( !_arrayMap || !_coArrayMap) {
_childrenList[ 0 ]=new ArrayMap;
_childrenList[ 1 ]=new ArrayMap;
_arrayMap->QWidget::resize(300, 300); // default size
_arrayMap->setObjectName( "arrayMap" );
_arrayMap->setWindowTitle(tr( "%1 - array map" ).arg(_subPool->name()) );
_arrayMap->setAttribute(Qt::WA_DeleteOnClose, false);
_coArrayMap->QWidget::resize(300, 300); // default size
_coArrayMap->setObjectName( "coArrayMap" );
_coArrayMap->setWindowTitle(tr( "%1 - co-array map " ).arg(_subPool->name()) );
_coArrayMap->setAttribute(Qt::WA_DeleteOnClose, false);
_d->ringEdit->setCoArrayGraph(_coArrayMap);
geopsyGui->addWindow(_arrayMap);
geopsyGui->addWindow(_coArrayMap);
}
setArrayMap();
setCoArrayMap();
geopsyGui->showWindow(_arrayMap);
geopsyGui->showWindow(_coArrayMap);
if(timeWindowLayer()) {
setTimeWindowLayer(&_winList);
}
emit updateSubPool();
return true;
}
| AbstractParameters * ToolSPAC::parameters | ( | AbstractParameters * | param = 0 | ) | const [protected, virtual] |
Reimplemented from GeopsyGui::ToolBase.
References _d, ToolSPACd::getParameters(), and TRACE.
{
TRACE;
if(!param) {
param=new SPACParameters;
}
_d->getParameters(*static_cast<SPACParameters *>(param));
return param;
}
| void ToolSPAC::setArrayMap | ( | ) | [protected] |
References ToolArrayBase::_array, _arrayMap, ToolArrayBase::_log, GeopsyCore::StationSignals::coordinates(), SciFigs::NameLine::curve(), GeopsyCore::StationSignals::name(), QGpCoreTools::Curve< pointType >::resize(), QGpCoreTools::Point::toString(), and TRACE.
Referenced by initStations().
{
TRACE;
int n=_array.count();
NameLineLayer * plot=_arrayMap->mapLayer();
LayerLocker ll(plot);
NameLine * l=static_cast<NameLine *>(_arrayMap->line(0));
Curve<NamedPoint>& c=l->curve();
c.resize(n);
StationSignals * stat;
for(int i=0;i < _array.count(); i++ ) {
NamedPoint& p=c[ i ];
stat=_array.at(i);
_log+=QString( "Station %1, coord %2\n" ).
arg(stat->name()).arg(stat->coordinates().toString());
p=stat->coordinates();
p.setName(stat->name());
}
_arrayMap->setLimitsArray();
}
| void ToolSPAC::setCoArrayMap | ( | ) | [protected] |
References ToolArrayBase::_array, _coArrayMap, ToolArrayBase::_initLog, _stationCouples, GeopsyCore::StationSignals::coordinates(), SciFigs::NameLine::curve(), ArrayCore::StationCouple::name(), QGpCoreTools::Curve< pointType >::resize(), QGpCoreTools::NamedPoint::setName(), QGpCoreTools::Point2D::setX(), QGpCoreTools::Point2D::setY(), ArrayCore::StationCouple::station1(), ArrayCore::StationCouple::station2(), QGpCoreTools::tr(), TRACE, QGpCoreTools::Point2D::x(), and QGpCoreTools::Point2D::y().
Referenced by initStations().
{
TRACE;
// Construct the couple list
int nStations=_array.count();
int nCouples=nStations * (nStations - 1)/2;
_stationCouples.resize(nCouples);
QList<StationSignals *>::iterator statIt1, statIt2;
int iCouple=0;
for(statIt1=_array.begin();statIt1!=_array.end();++statIt1) {
statIt2=statIt1;
for( ++statIt2;statIt2!=_array.end();++statIt2, iCouple++ )
_stationCouples[ iCouple ].setStations( *statIt1, *statIt2);
}
_initLog+=tr("Found %1 couples\n").arg(iCouple);
NameLineLayer * plot=_coArrayMap->mapLayer();
LayerLocker ll(plot);
NameLine * l=static_cast<NameLine *>(_coArrayMap->line(0));
Curve<NamedPoint>& c=l->curve();
c.resize(nCouples);
for(int i=0;i < nCouples;i++ ) {
NamedPoint& p=c[ i ];
const StationCouple& couple=_stationCouples[ i ];
const Point& p1=couple.station1()->coordinates();
const Point& p2=couple.station2()->coordinates();
double dx=p1.x() - p2.x();
double dy=p1.y() - p2.y();
if(( dx < 0 && dy > 0) || (dx > 0 && dy < 0) ) p.setX( -fabs(dx) ); else p.setX(fabs( dx) );
p.setY(fabs( dy) );
p.setName(couple.name());
}
_coArrayMap->setLimitsCoArray( );
}
| void ToolSPAC::setParameters | ( | int & | argc, |
| char ** | argv | ||
| ) | [virtual] |
By default loads parameters values from current settings. If you redefine this function do not forget to call this version before doing anything else.
Reimplemented from GeopsyGui::ToolBase.
References _d, GeopsyGui::ToolBase::loadLogParameters(), and TRACE.
{
TRACE;
ToolBase::setParameters(argc, argv);
int i, j=1;
for(i=1; i<argc; i++) {
QByteArray arg=argv[i];
if(arg[0]=='-') {
if(arg=="-param") {
CoreApplication::checkOptionArg(i, argc, argv);
loadLogParameters(argv[i] );
} else if(arg=="-rings") {
CoreApplication::checkOptionArg(i, argc, argv);
_d->ringEdit->load(argv[i] );
} else {
argv[j++]=argv[i];
}
} else {
argv[j++]=argv[i];
}
}
if(j < argc) {
argv[j]=0;
argc=j;
}
}
| void ToolSPAC::setRings | ( | QString | fileName | ) |
| void ToolSPAC::startLoop | ( | SPACLoop * | loop, |
| SPACParameters * | param | ||
| ) | [protected] |
References _chrono, _d, ToolArrayBase::_log, _loop, _param, QGpCoreTools::SamplingParameters::count(), ArrayCore::ArrayParameters::frequencySampling(), GeopsyGui::ToolBase::lockSubPool(), ArrayCore::ArrayParameters::outputFile(), ToolSPACd::setRunning(), QGpCoreTools::ParallelLoop::start(), QGpCoreTools::tr(), and ToolArrayBase::writeParameterLogs().
{
_d->detailedStatus->setLoop(loop);
_loop=loop;
_param=param;
// Start main loop
lockSubPool(); // Prevent any change on the orignal signals
_d->setRunning(true);
writeParameterLogs(_param->outputFile());
_log += tr("Process started at %1\n").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
_chrono.start();
_loop->start(0, _param->frequencySampling().count());
}
| const char * ToolSPAC::toolName | ( | ) | [protected, virtual] |
Implements ToolArrayBase.
{
return "SPAC Array analysis";
}
| void ToolSPAC::updateAllFields | ( | ) | [protected, virtual] |
| void ToolSPAC::waitFinished | ( | ) | [virtual] |
Reimplemented from GeopsyGui::ToolBase.
References _loop, TRACE, and QGpCoreTools::ParallelLoop::waitFinished().
{
TRACE;
if(_loop) {
_loop->waitFinished();
}
}
QTime ToolSPAC::_chrono [protected] |
Referenced by startLoop().
ToolSPACd* ToolSPAC::_d [protected] |
Referenced by initStations(), parameters(), setParameters(), setRings(), startLoop(), ToolSPAC(), and updateAllFields().
SPACLoop* ToolSPAC::_loop [protected] |
Referenced by startLoop(), ToolSPAC(), and waitFinished().
SPACParameters* ToolSPAC::_param [protected] |
Referenced by startLoop().
QVector<StationCouple> ToolSPAC::_stationCouples [protected] |
Referenced by setCoArrayMap().
TimeWindowList ToolSPAC::_winList [protected] |
Referenced by initStations().