Public Member Functions | Protected Member Functions | Protected Attributes
ToolSPAC Class Reference

#include <ToolSPAC.h>

Inheritance diagram for ToolSPAC:
ToolArrayBase GeopsyGui::ToolBase

List of all members.

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

AbstractParametersparameters (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

Constructor & Destructor Documentation

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;
}

References TRACE.

{
  TRACE;
}

Member Function Documentation

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)

References _d, and TRACE.

{
  TRACE;
  _d->ringEdit->load(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]

Reimplemented from GeopsyGui::ToolBase.

References _d, and TRACE.

{
  TRACE;
  _d->winParam->updateAllFields();
  _d->timeLimits->updateAllFields();
}
void ToolSPAC::waitFinished ( ) [virtual]

Member Data Documentation

QTime ToolSPAC::_chrono [protected]

Referenced by startLoop().

ToolSPACd* ToolSPAC::_d [protected]
SPACLoop* ToolSPAC::_loop [protected]

Referenced by startLoop(), ToolSPAC(), and waitFinished().

Referenced by startLoop().

Referenced by setCoArrayMap().

Referenced by initStations().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines