Public Types | Public Member Functions
MaxEntryList Class Reference

Brief description of class still missing. More...

#include <MaxEntryList.h>

List of all members.

Public Types

enum  Type {
  Undefined, FK, SPAC, TFA,
  CURVE
}

Public Member Functions

int count (double x) const
int count () const
void fillGrid (IrregularGrid2D &grid)
IrregularGrid2D initGrid (int nValues, double minValue, double maxValue, SamplingOption ySampling)
void keepComponent (int componentIndex)
void keepRing (int ringIndex)
bool load (QString fileName)
 MaxEntryList ()
RealStatisticalValue meanValue (double x, SamplingOption ySampling) const
void rejectAmplitudeHorizontalAbsolute (double ampH)
void rejectAmplitudeVerticalAbsolute (double ampZ)
void rejectAmplitudeVerticalFactor (double factor)
void rejectDelay (double delay)
void rejectHigherDelays (double maxDelay)
void rejectLowerDelays (double minDelay)
void rejectNPeaksPerFrequency (int npf)
void rejectNPeaksPerMinute (double nppm)
void rejectPower (double relativeFactor, double absoluteFactor)
void rejectTime (double min, double max)
void rejectValue (double minValue, double maxValue)
bool save (QString fileName)
void selectAll (double x)
void selectAll ()
void setType (Type t)
void toStream (QTextStream &s)
Type type () const
void unselectAmplitude (double factor)
void unselectPower (double relativeFactor, double absoluteFactor)
void unselectValue (double x, double minSlowness, double maxSlowness)
void unselectWavenumber (double minWavenumber, double maxWavenumber)
 ~MaxEntryList ()

Detailed Description

Brief description of class still missing.

Full description of class still missing


Member Enumeration Documentation

Enumerator:
Undefined 
FK 
SPAC 
TFA 
CURVE 

Constructor & Destructor Documentation

References Undefined.

{_type=Undefined;}

References TRACE.

{
  TRACE;
  qDeleteAll(*this);
}

Member Function Documentation

int MaxEntryList::count ( double  x) const

Returns the number of samples at frequency.

References MaxEntry::isSelected(), TRACE, and MaxEntry::x().

Referenced by main().

{
  TRACE;
  int i= 0;
  QList<MaxEntry *>::const_iterator it;
  for(it=begin();it!=end();++it) {
    MaxEntry& entry=**it;
    if(entry.x()==x && entry.isSelected()) {
      i++;
    }
  }
  return i;
}
int MaxEntryList::count ( ) const [inline]

References QGpCoreTools::IrregularGrid2D::indexOfX(), QGpCoreTools::IrregularGrid2D::indexOfY(), QGpCoreTools::IrregularGrid2D::init(), MaxEntry::isSelected(), QGpCoreTools::IrregularGrid2D::nx(), TRACE, MaxEntry::value(), QGpCoreTools::IrregularGrid2D::valuePointer(), and MaxEntry::x().

Referenced by HistogramWidget::fillGrid().

{
  TRACE;
  grid.init(0.0);
  int ix;
  double x=-1.0;
  double * val=0;
  int nx=grid.nx();
  QList<MaxEntry *>::iterator it;
  for(it=begin();it!=end();++it) {
    MaxEntry& entry=**it;
    if(x!=entry.x()) {
      x=entry.x();
      ix=grid.indexOfX(x);
      val=grid.valuePointer(ix, 0);
    }
    if(entry.isSelected()) {
      int iy=grid.indexOfY(entry.value());
      val[ iy * nx ] ++;
    }
  }
}
IrregularGrid2D MaxEntryList::initGrid ( int  nValues,
double  minValue,
double  maxValue,
SamplingOption  ySampling 
)

References QGpCoreTools::LogScale, MSG_ID, rejectValue(), QGpCoreTools::IrregularGrid2D::setLinear(), QGpCoreTools::IrregularGrid2D::setLog(), QGpCoreTools::IrregularGrid2D::setX(), QGpCoreTools::tr(), TRACE, and QGpCoreTools::YAxis.

Referenced by HistogramWidget::initGrid().

{
  TRACE;
  rejectValue(minValue, maxValue);
  QList<double> xList=xSamples();
  int nBands=xList.count();
  if(nBands==0) {
    Message::critical(MSG_ID, tr("Grid initialization"), tr("Null number of frequency samples: check you filter parameters."));
    xList << 1.0; // Add a fake frequency
    nBands=1;
  }
  IrregularGrid2D grid(nBands, nValues);
  for(int i=0;i<nBands;i++) grid.setX(i, xList.at(i));
  if(ySampling & LogScale) {
    grid.setLog(YAxis, minValue, maxValue);
  } else {
    grid.setLinear(YAxis, minValue, maxValue);
  }
  return grid;
}
void MaxEntryList::keepComponent ( int  componentIndex)

References QGpCoreTools::ConsoleProgress::begin(), SPACMaxEntry::component(), count(), QGpCoreTools::ConsoleProgress::end(), QGpCoreTools::ConsoleProgress::setCaption(), QGpCoreTools::AbstractProgress::setMaximum(), QGpCoreTools::AbstractProgress::setValue(), SPAC, and TRACE.

Referenced by HistogramWidget::select().

{
  TRACE;
  ASSERT(_type==SPAC);
  QList<MaxEntry *> newEntryList;
  ConsoleProgress progress;
  progress.setCaption("Filtering(component)...  ");
  progress.setMaximum(count()-1);
  progress.begin();
  int nEntries=count();
  for(int i=0;i<nEntries;i++) {
    const SPACMaxEntry& m=*static_cast<const SPACMaxEntry *>(at(i));
     if(m.component()!=componentIndex) {
      delete at(i);
    } else {
      newEntryList.append(at(i));
    }
    progress.setValue(i);
  }
  progress.end();
  clear();
  *static_cast< QList<MaxEntry *>* >(this)=newEntryList;
}
void MaxEntryList::keepRing ( int  ringIndex)

References QGpCoreTools::ConsoleProgress::begin(), count(), QGpCoreTools::ConsoleProgress::end(), SPACMaxEntry::ring(), QGpCoreTools::ConsoleProgress::setCaption(), QGpCoreTools::AbstractProgress::setMaximum(), QGpCoreTools::AbstractProgress::setValue(), SPAC, and TRACE.

Referenced by HistogramWidget::select().

{
  TRACE;
  ASSERT(_type==SPAC);
  QList<MaxEntry *> newEntryList;
  ConsoleProgress progress;
  progress.setCaption("Filtering(ring)...  ");
  progress.setMaximum(count()-1);
  progress.begin();
  int nEntries=count();
  for(int i=0;i<nEntries;i++) {
    const SPACMaxEntry& m=*static_cast<const SPACMaxEntry *>(at(i));
     if(m.ring()!=ringIndex) {
      delete at(i);
    } else {
      newEntryList.append(at(i));
    }
    progress.setValue(i);
  }
  progress.end();
  clear();
  *static_cast< QList<MaxEntry *>* >(this)=newEntryList;
}
bool MaxEntryList::load ( QString  fileName)

Can be called only once.

References QGpCoreTools::ConsoleProgress::begin(), count(), CURVE, QGpCoreTools::ConsoleProgress::end(), FK, TFAMaxEntry::isHeaderLine(), CurveMaxEntry::isHeaderLine(), SPACMaxEntry::isHeaderLine(), FKMaxEntry::isHeaderLine(), MSG_ID, MaxEntry::readLine(), QGpCoreTools::ConsoleProgress::setCaption(), QGpCoreTools::AbstractProgress::setValue(), SPAC, TFA, QGpCoreTools::tr(), TRACE, and Undefined.

Referenced by main().

{
  TRACE;
  QFile f(fileName);
  if( !f.open(QIODevice::ReadOnly) ) {
    Message::warning(MSG_ID, tr("Loading max file"),
                         tr("Impossible to access to file %1").arg(fileName), Message::cancel());
    return false;
  }
  QTextStream s(&f);
  // get type of max file
  if(_type==Undefined) {
    QString line;
    while(true) {
      line=s.readLine();
      if(line.isEmpty()) break;
      if(line[0]=='#') {
        line=line.toLower().replace(" ", "");
        if(FKMaxEntry::isHeaderLine(line)) {
          _type=FK;
          break;
        } else if(SPACMaxEntry::isHeaderLine(line)) {
          _type=SPAC;
          break;
        } else if(TFAMaxEntry::isHeaderLine(line)) {
          _type=TFA;
          break;
        } else if(CurveMaxEntry::isHeaderLine(line)) {
          _type=CURVE;
          break;
        }
      }
    }
  }

  // load entries
  MaxEntry * entry;
  ConsoleProgress progress;
  progress.setCaption("Loading...  ");
  progress.begin();
  while(true) {
    switch (_type) {
    case FK: entry=new FKMaxEntry; break;
    case SPAC: entry=new SPACMaxEntry; break;
    case TFA: entry=new TFAMaxEntry; break;
    case CURVE: entry=new CurveMaxEntry; break;
    default: 
      Message::warning(MSG_ID, "Loading max file",
                          "Impossible to determine file type (FK, SPAC, TFA or CURVE). This type is automatically recognized from the "
                          "comment line containing the field names. You can force the type by using the command line options. See "
                          "-help for more information.", Message::cancel());
      return false;
    }
    if(entry->readLine(s)) {
      append(entry);
    } else {
      delete entry;
      break;
    }
    progress.setValue(count());
  }
  progress.end(count());
  fprintf(stderr,"Sorting...                           \n");
  qSort(begin(), end(), lessThan);
  return true;
}
RealStatisticalValue MaxEntryList::meanValue ( double  x,
SamplingOption  ySampling 
) const

Return the mean value of the samples at x.

References QGpCoreTools::ProcessStatistics::add(), QGpCoreTools::ProcessStatistics::addLog(), MaxEntry::isSelected(), QGpCoreTools::LogScale, TRACE, QGpCoreTools::ProcessStatistics::value(), MaxEntry::value(), QGpCoreTools::ProcessStatistics::valueLog(), and MaxEntry::x().

{
  TRACE;
  ProcessStatistics p;
  QList<MaxEntry *>::const_iterator it;
  if(ySampling & LogScale) {
    for(it=begin();it!=end();++it) {
      MaxEntry& entry=**it;
      if(entry.x()==x && entry.isSelected()) {
        p.addLog(entry.value());
      }
    }
    return p.valueLog();
  } else {
    for(it=begin();it!=end();++it) {
      MaxEntry& entry=**it;
      if(entry.x()==x && entry.isSelected()) {
        p.add(entry.value());
      }
    }
    return p.value();
  }
}

References QGpCoreTools::ConsoleProgress::begin(), count(), QGpCoreTools::ConsoleProgress::end(), TFAMaxEntry::hAmplitude(), QGpCoreTools::ConsoleProgress::setCaption(), QGpCoreTools::AbstractProgress::setMaximum(), QGpCoreTools::AbstractProgress::setValue(), TFA, and TRACE.

Referenced by filter().

{
  TRACE;
  ASSERT(_type==TFA);
  QList<MaxEntry *> newEntryList;
  ConsoleProgress progress;
  progress.setCaption("Filtering(tfaAmpH)...  ");
  progress.setMaximum(count()-1);
  progress.begin();
  int nEntries=count();
  for(int i=0;i<nEntries;i++) {
    const TFAMaxEntry& m=*static_cast<const TFAMaxEntry *>(at(i));
    if(m.hAmplitude() < ampH) {
      delete at(i);
    } else {
      newEntryList.append(at(i));
    }
    progress.setValue(i);
  }
  progress.end();
  clear();
  *static_cast< QList<MaxEntry *>* >(this)=newEntryList;
}

References QGpCoreTools::ConsoleProgress::begin(), count(), QGpCoreTools::ConsoleProgress::end(), QGpCoreTools::ConsoleProgress::setCaption(), QGpCoreTools::AbstractProgress::setMaximum(), QGpCoreTools::AbstractProgress::setValue(), TFA, TRACE, and TFAMaxEntry::vAmplitude().

Referenced by filter().

{
  TRACE;
  ASSERT(_type==TFA);
  QList<MaxEntry *> newEntryList;
  ConsoleProgress progress;
  progress.setCaption("Filtering(tfaAmpZ)...  ");
  progress.setMaximum(count()-1);
  progress.begin();
  int nEntries=count();
  for(int i=0;i<nEntries;i++) {
    const TFAMaxEntry& m=*static_cast<const TFAMaxEntry *>(at(i));
    if(m.vAmplitude() < ampZ) {
      delete at(i);
    } else {
      newEntryList.append(at(i));
    }
    progress.setValue(i);
  }
  progress.end();
  clear();
  *static_cast< QList<MaxEntry *>* >(this)=newEntryList;
}

References QGpCoreTools::ConsoleProgress::begin(), count(), QGpCoreTools::ConsoleProgress::end(), QGpCoreTools::ConsoleProgress::setCaption(), QGpCoreTools::AbstractProgress::setMaximum(), QGpCoreTools::AbstractProgress::setValue(), TFA, TRACE, TFAMaxEntry::vAmplitude(), and MaxEntry::x().

Referenced by filter().

{
  TRACE;
  ASSERT(_type==TFA);
  QList<MaxEntry *> newEntryList;
  ConsoleProgress progress;
  progress.setCaption("Filtering(tfaAmpZFactor)...  ");
  progress.setMaximum(count()-1);
  progress.begin();
  QMap<double,double> minVAmplitude;
  minAmplitudeVectors(minVAmplitude, factor);
  int nEntries=count();
  for(int i=0;i<nEntries;i++) {
    const TFAMaxEntry& m=*static_cast<const TFAMaxEntry *>(at(i));
    double x=m.x();
    if(m.vAmplitude() < minVAmplitude[x]) {
      delete at(i);
    } else {
      newEntryList.append(at(i));
    }
    progress.setValue(i);
  }
  progress.end();
  clear();
  *static_cast< QList<MaxEntry *>* >(this)=newEntryList;
}
void MaxEntryList::rejectDelay ( double  delay)

References QGpCoreTools::ConsoleProgress::begin(), count(), TFAMaxEntry::delay(), QGpCoreTools::ConsoleProgress::end(), QGpCoreTools::ConsoleProgress::setCaption(), QGpCoreTools::AbstractProgress::setMaximum(), QGpCoreTools::AbstractProgress::setValue(), TFA, and TRACE.

Referenced by filter().

{
  TRACE;
  ASSERT(_type==TFA);
  QList<MaxEntry *> newEntryList;
  ConsoleProgress progress;
  progress.setCaption("Filtering(tfaNppm)...  ");
  progress.setMaximum(count()-1);
  progress.begin();
  int nEntries=count();
  for(int i=0;i<nEntries;i++) {
    const TFAMaxEntry& m=*static_cast<const TFAMaxEntry *>(at(i));
    if(m.delay()!=delay) {
      delete at(i);
    } else {
      newEntryList.append(at(i));
    }
    progress.setValue(i);
  }
  progress.end();
  clear();
  *static_cast< QList<MaxEntry *>* >(this)=newEntryList;
}
void MaxEntryList::rejectHigherDelays ( double  maxDelay)
void MaxEntryList::rejectLowerDelays ( double  minDelay)

Assumes that all entries are sorted by frequency, vAmplitude

References QGpCoreTools::ConsoleProgress::begin(), count(), QGpCoreTools::ConsoleProgress::end(), QGpCoreTools::ConsoleProgress::setCaption(), QGpCoreTools::AbstractProgress::setMaximum(), QGpCoreTools::AbstractProgress::setValue(), TFA, and TRACE.

Referenced by filter().

{
  TRACE;
  ASSERT(_type==TFA);
  QList<MaxEntry *> newEntryList;
  ConsoleProgress progress;
  progress.setCaption("Filtering(tfaNppf)...  ");
  progress.setMaximum(count()-1);
  progress.begin();
  int n=0;
  double currentX=first()->x();
  int nEntries=count();
  for(int i=0;i<nEntries;i++) {
    if(at(i)->x()!=currentX) {
      n=0;
      currentX=at(i)->x();
    }
    if(n>=npf) {
      delete at(i);
    } else {
      newEntryList.append(at(i));
      n++;
    }
    progress.setValue(i);
  }
  progress.end();
  clear();
  *static_cast< QList<MaxEntry *>* >(this)=newEntryList;
}
void MaxEntryList::rejectNPeaksPerMinute ( double  nppm)

Assumes that all entries are sorted by frequency, vAmplitude. If nppm is less than 1, the time length is increased until reaching 1

References QGpCoreTools::ConsoleProgress::begin(), count(), QGpCoreTools::ConsoleProgress::end(), QGpCoreTools::ConsoleProgress::setCaption(), QGpCoreTools::AbstractProgress::setMaximum(), QGpCoreTools::AbstractProgress::setValue(), TFA, and TRACE.

Referenced by filter(), and HistogramWidget::select().

{
  TRACE;
  ASSERT(_type==TFA);
  QList<MaxEntry *> newEntryList;
  ConsoleProgress progress;
  progress.setCaption("Filtering(tfaNppm)...  ");
  progress.setMaximum(count()-1);
  progress.begin();
  double currentX=first()->x();
  int nEntries=count();
  QMap<double, int> times;
  double timeSegment;
  if(nppm < 1.0) {
    timeSegment=60.0/nppm;
    nppm=1.0;
  } else {
    timeSegment=60.0;
  }
  for(int i=0;i<nEntries;i++) {
    if(at(i)->x()!=currentX) {
      currentX=at(i)->x();
      times.clear();
    }
    // Look back timeSegment seconds before and after this peak and count available peaks
    progress.setValue(i);
    double t=at(i)->time();
    double currentNppmB=0.0, currentNppmF=0.0;
    QMap<double, int>::iterator itForward=times.lowerBound(t);
    QMap<double, int>::iterator itBack=itForward-1;
    QList<double> aroundTimes;
    while(itBack!=times.end() && itBack.key() > t-timeSegment) {
      aroundTimes.prepend(itBack.key());
      itBack--;
      currentNppmB++;
    }
    if(currentNppmB>=nppm) {
      delete at(i);
      continue;
    }
    while(itForward!=times.end() && itForward.key() < t+timeSegment) {
      aroundTimes.append(itForward.key());
      itForward++;
      currentNppmF++;
    }
    if(currentNppmF>=nppm) {
      delete at(i);
      continue;
    }
    // Scan all possible time segment to check if number of time is less than nppm
    int iAroundTimes, iNppm=(int) nppm - 1;
    for(iAroundTimes=aroundTimes.count() - iNppm -1; iAroundTimes>=0; iAroundTimes-- ) {
      if(aroundTimes.at(iAroundTimes+iNppm) - aroundTimes.at(iAroundTimes) < timeSegment) {
        break;
      }
    }
    if(iAroundTimes>=0) {
      delete at(i);
      continue;
    }
    // OK, new time is acceptable
    times.insert(at(i)->time(), i);
    newEntryList.append(at(i));
  }
  progress.end();
  clear();
  *static_cast< QList<MaxEntry *>* >(this)=newEntryList;
}
void MaxEntryList::rejectPower ( double  relativeFactor,
double  absoluteFactor 
)

References FKMaxEntry::absolutePower(), QGpCoreTools::ConsoleProgress::begin(), count(), QGpCoreTools::ConsoleProgress::end(), FK, FKMaxEntry::relativePower(), QGpCoreTools::ConsoleProgress::setCaption(), QGpCoreTools::AbstractProgress::setMaximum(), QGpCoreTools::AbstractProgress::setValue(), TRACE, and MaxEntry::x().

Referenced by HistogramWidget::select().

{
  TRACE;
  ASSERT(_type==FK);
  QList<MaxEntry *> newEntryList;
  ConsoleProgress progress;
  progress.setCaption("Filtering(power)...  ");
  progress.setMaximum(count()-1);
  progress.begin();
  QMap<double,double> minRelPow, minAbsPow;
  minPowerVectors(minRelPow, minAbsPow, relativeFactor, absoluteFactor);
  int nEntries=count();
  for(int i=0;i<nEntries;i++) {
    const FKMaxEntry& m=*static_cast<const FKMaxEntry *>(at(i));
    double x=m.x();
    if(m.relativePower() < minRelPow[x] && m.absolutePower() < minAbsPow[x] ) {
      delete at(i);
    } else {
      newEntryList.append(at(i));
    }
    progress.setValue(i);
  }
  progress.end();
  clear();
  *static_cast< QList<MaxEntry *>* >(this)=newEntryList;
}
void MaxEntryList::rejectTime ( double  min,
double  max 
)

References QGpCoreTools::ConsoleProgress::begin(), count(), QGpCoreTools::ConsoleProgress::end(), QGpCoreTools::ConsoleProgress::setCaption(), QGpCoreTools::AbstractProgress::setMaximum(), QGpCoreTools::AbstractProgress::setValue(), QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  QList<MaxEntry *> newEntryList;
  ConsoleProgress progress;
  progress.setCaption(tr("Filtering(time)...  "));
  progress.setMaximum(count()-1);
  progress.begin();
  int nEntries=count();
  for(int i=0;i<nEntries;i++) {
    double t=at(i)->time();
    if(t<min || t>max) {
      delete at(i);
    } else {
      newEntryList.append(at(i));
    }
    progress.setValue(i);
  }
  progress.end();
  clear();
  *static_cast< QList<MaxEntry *>* >(this)=newEntryList;
}
void MaxEntryList::rejectValue ( double  minValue,
double  maxValue 
)

References QGpCoreTools::ConsoleProgress::begin(), count(), QGpCoreTools::ConsoleProgress::end(), QGpCoreTools::ConsoleProgress::setCaption(), QGpCoreTools::AbstractProgress::setMaximum(), QGpCoreTools::AbstractProgress::setValue(), QGpCoreTools::tr(), and TRACE.

Referenced by initGrid().

{
  TRACE;
  QList<MaxEntry *> newEntryList;
  ConsoleProgress progress;
  progress.setCaption(tr("Filtering(value)...  "));
  progress.setMaximum(count()-1);
  progress.begin();
  int nEntries=count();
  for(int i=0;i<nEntries;i++) {
    double s=at(i)->value();
    if(s<minValue || s>maxValue) {
      delete at(i);
    } else {
      newEntryList.append(at(i));
    }
    progress.setValue(i);
  }
  progress.end();
  clear();
  *static_cast< QList<MaxEntry *>* >(this)=newEntryList;
}
bool MaxEntryList::save ( QString  fileName)

References MSG_ID, toStream(), QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  if(isEmpty()) {
    Message::warning(MSG_ID, tr("Saving max file"),
                         tr("Null number of entries, nothing written"), Message::cancel());
    return false;
  }
  QFile f(fileName);
  if(!f.open(QIODevice::WriteOnly)) {
    Message::warning(MSG_ID, tr("Saving max file"),
                         tr("Impossible to access to file %1").arg(fileName), Message::cancel());
    return false;
  }
  QTextStream s(&f);
  toStream(s);
  return true;
}
void MaxEntryList::selectAll ( double  x)

References MaxEntry::setSelected(), TRACE, and MaxEntry::x().

{
  TRACE;
  QList<MaxEntry *>::iterator it;
  for(it=begin();it!=end();++it) {
    MaxEntry& entry=**it;
    if(entry.x()==x)
      entry.setSelected(true);
  }
}

References TRACE.

{
  TRACE;
  QList<MaxEntry *>::iterator it;
  for(it=begin();it!=end();++it) {
    (*it)->setSelected(true);
  }
}
void MaxEntryList::setType ( Type  t) [inline]

Referenced by main().

{_type=t;}
void MaxEntryList::toStream ( QTextStream &  s)

References QGpCoreTools::ConsoleProgress::begin(), count(), QGpCoreTools::ConsoleProgress::end(), QGpCoreTools::ConsoleProgress::setCaption(), QGpCoreTools::AbstractProgress::setMaximum(), QGpCoreTools::AbstractProgress::setValue(), QGpCoreTools::tr(), and TRACE.

Referenced by main(), and save().

{
  TRACE;
  first()->writeHeader(s);
  ConsoleProgress progress;
  progress.setCaption(tr("Saving...  "));
  progress.setMaximum(count()-1);
  progress.begin();
  int nEntries=count();
  for(int i=0;i<nEntries;i++) {
    at(i)->writeLine(s);
    progress.setValue(i);
  }
  progress.end();
}
Type MaxEntryList::type ( ) const [inline]
void MaxEntryList::unselectAmplitude ( double  factor)

References MaxEntry::setSelected(), TFA, TRACE, TFAMaxEntry::vAmplitude(), and MaxEntry::x().

{
  TRACE;
  ASSERT(_type==TFA);
  QMap<double,double> minVAmplitude;
  minAmplitudeVectors(minVAmplitude, factor);
  QList<MaxEntry *>::iterator it;
  for(it=begin();it!=end();++it) {
    TFAMaxEntry& entry=*static_cast<TFAMaxEntry *>(*it);
    double x=entry.x();
    if(entry.vAmplitude() < minVAmplitude[x]) {
      entry.setSelected(false);
    }
  }
}
void MaxEntryList::unselectPower ( double  relativeFactor,
double  absoluteFactor 
)

References FKMaxEntry::absolutePower(), FK, FKMaxEntry::relativePower(), MaxEntry::setSelected(), TRACE, and MaxEntry::x().

{
  TRACE;
  ASSERT(_type==FK);
  QMap<double,double> minRelPow, minAbsPow;
  minPowerVectors(minRelPow, minAbsPow, relativeFactor, absoluteFactor);
  QList<MaxEntry *>::iterator it;
  for(it=begin();it!=end();++it) {
    FKMaxEntry& entry=*static_cast<FKMaxEntry *>(*it);
    double x=entry.x();
    if(entry.relativePower() < minRelPow[x] && entry.absolutePower() < minAbsPow[x] ) {
      entry.setSelected(false);
    }
  }
}
void MaxEntryList::unselectValue ( double  x,
double  minSlowness,
double  maxSlowness 
)

References MaxEntry::setSelected(), TRACE, MaxEntry::value(), and MaxEntry::x().

{
  TRACE;
  QList<MaxEntry *>::iterator it;
  for(it=begin();it!=end();++it) {
    MaxEntry& entry=**it;
    double s=entry.value();
    if(entry.x()==x && (s<minValue || s>maxValue)) {
      entry.setSelected(false);
    }
  }
}
void MaxEntryList::unselectWavenumber ( double  minWavenumber,
double  maxWavenumber 
)

Specific to FK type

References FK, MaxEntry::setSelected(), TRACE, and FKMaxEntry::wavenumber().

{
  TRACE;
  ASSERT(_type==FK);
  QList<MaxEntry *>::iterator it;
  for(it=begin();it!=end();++it) {
    FKMaxEntry& entry=*static_cast<FKMaxEntry *>(*it);
    double k=entry.wavenumber();
    if(k<minWavenumber || k>maxWavenumber) {
      entry.setSelected(false);
    }
  }
}

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