All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions | Protected Attributes
ArrayCore::FKStationSignals Class Reference

#include <FKStationSignals.h>

Inheritance diagram for ArrayCore::FKStationSignals:
GeopsyCore::StationProcessSignals LinearFKActiveStationSignals

List of all members.

Public Member Functions

double absolutePower (int iComp, int iFreqMin, int iFreqMax, double *taperingFunction)
 FKStationSignals (const StationSignals *originalSignals)
ComplexgetShift (int offset)
ComplexgetShift ()
Complex getShiftedSignal (int component, int iFreq, int offset)
Complex getShiftedSignal (int component, int iFreq)
Complex getSignalSpectrum (int component, int iFreq)
void initPhaseShifts (int n)
bool isSelected () const
void select (bool s)
void setCurrentShift (double kx, double ky)
void setPhaseShift (int index, double kx, double ky)
virtual void setProcessed (const TimeRange &tw, AbstractParameters *param)
void setRelativeCoordinates (const Point2D &p)
 ~FKStationSignals ()

Protected Attributes

Complex _currentShift
Point2D _relativeCoordinates
bool _selected
Complex_shift

Constructor & Destructor Documentation

References _selected, _shift, and TRACE.

  : StationProcessSignals(originalSignals)
{
  TRACE;
  _shift=0;
  _selected=true;
}

References _shift, and TRACE.

{
  TRACE;
  delete [] _shift;
}

Member Function Documentation

double ArrayCore::FKStationSignals::absolutePower ( int  iComp,
int  iFreqMin,
int  iFreqMax,
double *  taperingFunction 
)

Return absolute power convoluted with taperingFunction, samples are supposed to be locked

References GeopsyCore::DoubleSignal::amplitude2(), GeopsyCore::StationProcessSignals::processed(), and GeopsyCore::StationProcessSignals::processedSamples().

Referenced by ArrayCore::FK::absolutePower().

{
  double sum=0.0;
  for(int i=iFreqMin;i<=iFreqMax;i++) {
    //printf("%i %lg %lg\n",i,_signals[0].processed->reAmplitude(i),_signals[0].processed->imAmplitude(i));
    sum+=processed(iComp)->amplitude2(processedSamples(iComp), i) * taperingFunction[i];
  }
  //printf("Individual power: %lg\n",sum*512);
  return sum;
}
{return _shift[ offset ];}
{return _currentShift;}
Complex ArrayCore::FKStationSignals::getShiftedSignal ( int  component,
int  iFreq,
int  offset 
) [inline]
Complex ArrayCore::FKStationSignals::getShiftedSignal ( int  component,
int  iFreq 
) [inline]
Complex ArrayCore::FKStationSignals::getSignalSpectrum ( int  component,
int  iFreq 
) [inline]

References _shift, and TRACE.

Referenced by ArrayCore::FK::initGrid().

{
  TRACE;
  delete [] _shift;
  _shift=new Complex [n];
}
bool ArrayCore::FKStationSignals::isSelected ( ) const [inline]
void ArrayCore::FKStationSignals::select ( bool  s) [inline]
{_selected=s;}
void ArrayCore::FKStationSignals::setCurrentShift ( double  kx,
double  ky 
) [inline]
void ArrayCore::FKStationSignals::setPhaseShift ( int  index,
double  kx,
double  ky 
)
void ArrayCore::FKStationSignals::setProcessed ( const TimeRange tw,
AbstractParameters param 
) [virtual]

Set processed signals for all components

Implements GeopsyCore::StationProcessSignals.

References GeopsyCore::StationProcessSignals::copyOriginalSignal(), GeopsyCore::DoubleSignal::fastFourierTransform(), GeopsyCore::StationProcessSignals::nComponents(), GeopsyCore::StationProcessSignals::processed(), GeopsyCore::TaperParameters::setAlpha(), GeopsyCore::TaperParameters::setWindow(), GeopsyCore::DoubleSignal::subtractValue(), and GeopsyCore::DoubleSignal::taper().

{
  int nComp=nComponents();
  for(int iComp=0; iComp<nComp; iComp++) {
    copyOriginalSignal(iComp, tw);
    DoubleSignal * sig=processed(iComp);
    //printf("nStart=%i nSamples=%i\n",nStart,nSamples);
    sig->subtractValue();
    // Set a 10% taper in time domain
    TaperParameters param;
    param.setWindow(TaperParameters::Tukey);
    param.setAlpha(0.2);
    sig->taper(param);
    // Enlarge signal for frequency oversampling
    /*DoubleSignal * sigLarge=new DoubleSignal(sig->nSamples()*2);
    sigLarge->setDeltaT(sig->deltaT());
    sigLarge->setValue(0.0);
    sigLarge->copySamplesFrom(sig, 0.0, 0.0, winLen);
    processed(iComp)=sigLarge;
    delete sig;
    sig=sigLarge;*/
    // Switch to frequency domain
    sig->fastFourierTransform(DoubleSignal::Spectrum);
    /*for(int i=0; i<nSamples/2;i++) 
      printf("%lg %lg\n",(double)i*_signals[0].processed->duration(),
            _signals[0].processed->spectrumAmplitude(i));*/
  }
}

Member Data Documentation

Referenced by setCurrentShift(), and setPhaseShift().

Referenced by FKStationSignals().


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