#include <CompatMultiModalData.h>
Public Member Functions | |
void | addLog (QString &s) |
bool | checkStdDev (double ratio) |
CompatMultiModalData () | |
CompatMultiModalData (int modesCount, int omegasCount) | |
CompatMultiModalData (const CompatMultiModalData *o, int modesCount, double invalidValue) | |
CompatMultiModalData (const CompatMultiModalCurves *o) | |
ModalCurve | curve (int iMode) |
void | dataToReport (QDataStream &s) |
bool | insideDev (double devRatio, int iMode, Point2D *pDisp, int countPoints) |
bool | isSameData (const CompatMultiModalData *o) const |
QString & | log () |
double | measurement (int i, int mode) const |
QVector< double > * | measurements (int iMode) |
void | reportToData (QDataStream &s) |
void | reportToDataWeight (QDataStream &s, bool loadIt) |
void | setMean (int i, int mode, double mean) |
void | setStddev (int i, int mode, double stddev) |
void | setWeight (int i, int m, double w) |
double | stddev (int i, int mode) const |
QVector< double > * | stddev (int iMode) |
void | valuesToData (CompatMultiModalCurves *o) |
double | Weight (int i, int m) |
QVector< double > * | weight (int iMode) |
~CompatMultiModalData () | |
Protected Member Functions | |
void | allocatesData () |
void | deleteData () |
Protected Attributes | |
QString | _log |
double ** | _measurements |
int | _modesCount |
int | _omegasCount |
double ** | _stddev |
double ** | _weight |
References _measurements, _modesCount, _omegasCount, _stddev, _weight, and TRACE.
{ TRACE; _modesCount=0; _omegasCount=0; _measurements=0; _stddev=0; _weight=0; }
QGpCompatibility::CompatMultiModalData::CompatMultiModalData | ( | int | modesCount, |
int | omegasCount | ||
) |
References _measurements, _modesCount, _omegasCount, _stddev, _weight, allocatesData(), and TRACE.
{ TRACE; _measurements=0; _stddev=0; _weight=0; _modesCount=modesCount; _omegasCount=omegasCount; allocatesData(); }
QGpCompatibility::CompatMultiModalData::CompatMultiModalData | ( | const CompatMultiModalData * | o, |
int | modesCount, | ||
double | invalidValue | ||
) |
References _log, _measurements, _modesCount, _omegasCount, _stddev, _weight, allocatesData(), measurements(), stddev(), TRACE, and weight().
{ TRACE; _modesCount=modesCount; _omegasCount=o->_omegasCount; _measurements=0; _stddev=0; _weight=0; allocatesData(); int minModeCount=o->_modesCount; if(minModeCount>_modesCount) minModeCount=_modesCount; int iMode; for(iMode=0;iMode<minModeCount;iMode++) { double * measurements=_measurements[iMode]; double * stddev=_stddev[iMode]; double * weight=_weight[iMode]; double * o_measurements=o->_measurements[iMode]; double * o_stddev=o->_stddev[iMode]; double * o_weight=o->_weight[iMode]; for(int i=0;i<_omegasCount;i++) { measurements[i]=o_measurements[i]; stddev[i]=o_stddev[i]; weight[i]=o_weight[i]; } } for(iMode=minModeCount;iMode<_modesCount;iMode++) { double * measurements=_measurements[iMode]; double * stddev=_stddev[iMode]; double * weight=_weight[iMode]; for(int i=0;i<_omegasCount;i++) { measurements[i]=invalidValue; stddev[i]=0; weight[i]=1; } } _log=o->_log; }
References _measurements, _modesCount, _omegasCount, _stddev, QGpCompatibility::CompatMultiModalCurves::_values, _weight, allocatesData(), measurements(), QGpCompatibility::CompatMultiModalFrequency::modesCount(), QGpCompatibility::CompatMultiModalFrequency::omegasCount(), stddev(), TRACE, and weight().
{ TRACE; _measurements=0; _stddev=0; _weight=0; _modesCount=o->modesCount(); _omegasCount=o->omegasCount(); allocatesData(); for(int iMode=0;iMode<_modesCount;iMode++) { double * measurements=_measurements[iMode]; double * stddev=_stddev[iMode]; double * weight=_weight[iMode]; double * o_values=o->_values[iMode]; for(int i=0;i<_omegasCount;i++) { measurements[i]=o_values[i]; stddev[i]=0; weight[i]=1; } } }
References deleteData(), and TRACE.
{ TRACE; deleteData(); }
void QGpCompatibility::CompatMultiModalData::addLog | ( | QString & | s | ) | [inline] |
{_log+=s+"\n";}
void QGpCompatibility::CompatMultiModalData::allocatesData | ( | ) | [protected] |
References _measurements, _modesCount, _omegasCount, _stddev, _weight, deleteData(), mode, and TRACE.
Referenced by CompatMultiModalData().
{ TRACE; deleteData(); _measurements=new double*[_modesCount]; int mode; for(mode=0; mode<_modesCount;mode++) _measurements[mode]=new double[_omegasCount]; _stddev=new double*[_modesCount]; for(mode=0; mode<_modesCount;mode++) _stddev[mode]=new double[_omegasCount]; _weight=new double*[_modesCount]; for(mode=0; mode<_modesCount;mode++) _weight[mode]=new double[_omegasCount]; }
bool QGpCompatibility::CompatMultiModalData::checkStdDev | ( | double | ratio | ) |
References _measurements, _modesCount, _omegasCount, _stddev, measurements(), mode, stddev(), and TRACE.
{ TRACE; for(int mode=0;mode<_modesCount;mode++) { double * measurements=_measurements[mode]; double * stddev=_stddev[mode]; for(int i=0;i<_omegasCount;i++) { if(stddev[i]!=0 && measurements[i]<stddev[i]*ratio) return false; } } return true; }
ModalCurve QGpCompatibility::CompatMultiModalData::curve | ( | int | iMode | ) |
Reimplemented in QGpCompatibility::CompatEllipticityData, and QGpCompatibility::CompatDispersionData.
References _measurements, _modesCount, _omegasCount, _stddev, _weight, QGpCoreTools::StatisticalValue< numberType >::setMean(), QGpCoreTools::StatisticalValue< numberType >::setStddev(), QGpCoreTools::StatisticalValue< numberType >::setWeight(), and TRACE.
{ TRACE; ASSERT(iMode<_modesCount); ModalCurve c(_omegasCount); for(int i=0;i<_omegasCount;i++) { FactoryPoint& p=c[i]; p.setMean(_measurements[iMode][i] ); p.setStddev(_stddev[iMode][i] ); p.setWeight(_weight[iMode][i] ); } return c; }
void QGpCompatibility::CompatMultiModalData::dataToReport | ( | QDataStream & | s | ) |
References _log, _measurements, _modesCount, _omegasCount, _stddev, _weight, measurements(), mode, stddev(), TRACE, and weight().
Referenced by QGpCompatibility::CompatInversionReport::addDispersionGoal(), QGpCompatibility::CompatInversionReport::addEllipticityGoal(), QGpCompatibility::CompatRefraReport::addRefraGoal(), QGpCompatibility::CompatInversionReport::modifyDispersionGoal(), QGpCompatibility::CompatInversionReport::modifyEllipticityGoal(), and QGpCompatibility::CompatRefraReport::modifyRefraGoal().
{ TRACE; if(!_omegasCount || !_modesCount) return; int mode; for(mode=0; mode<_modesCount;mode++) { double * measurements=_measurements[mode]; double * stddev=_stddev[mode]; for(int i=0;i<_omegasCount;i++) { s << measurements[i]; s << stddev[i]; } } s << _log; // Write it separately to allow version compatibility for(mode=0; mode<_modesCount;mode++) { double * weight=_weight[mode]; for(int i=0;i<_omegasCount;i++) s << weight[i]; } }
void QGpCompatibility::CompatMultiModalData::deleteData | ( | ) | [protected] |
References _measurements, _modesCount, _stddev, _weight, mode, and TRACE.
Referenced by allocatesData(), and ~CompatMultiModalData().
{ TRACE; if(_measurements) { for(int mode=0; mode<_modesCount;mode++) delete [] _measurements[mode]; delete [] _measurements; _measurements=0; } if(_stddev) { for(int mode=0; mode<_modesCount;mode++) delete [] _stddev[mode]; delete [] _stddev; _stddev=0; } if(_weight) { for(int mode=0; mode<_modesCount;mode++) delete [] _weight[mode]; delete [] _weight; _weight=0; } }
bool QGpCompatibility::CompatMultiModalData::insideDev | ( | double | devRatio, |
int | iMode, | ||
Point2D * | pDisp, | ||
int | countPoints | ||
) |
Select curves that lies inside +/-devRatio*stddev A tolerance of 5 percent is accepted (5% percent of the samples may exceed the implied limits
References _measurements, _omegasCount, _stddev, measurements(), stddev(), and TRACE.
{ TRACE; ASSERT(countPoints==_omegasCount); double * measurements=_measurements[iMode]; double * stddev=_stddev[iMode]; double outCount=0, dCount=1.0/_omegasCount; for(int i=0;i<_omegasCount;i++) { if(fabs(pDisp[i].y()-measurements[i])>devRatio*stddev[i]) { outCount+=dCount; if(outCount>0.05) return false; } } return true; }
bool QGpCompatibility::CompatMultiModalData::isSameData | ( | const CompatMultiModalData * | o | ) | const |
References _measurements, _modesCount, _omegasCount, _stddev, _weight, mode, and TRACE.
Referenced by QGpCompatibility::CompatInversionReport::isSameGoalDispersion().
{ TRACE; if(_modesCount!=o->_modesCount) return false; if(_omegasCount!=o->_omegasCount) return false; for(int mode=0;mode<_modesCount;mode++) { double * measurements1=_measurements[mode]; double * measurements2=o->_measurements[mode]; double * stddev1=_stddev[mode]; double * stddev2=o->_stddev[mode]; double * weight1=_weight[mode]; double * weight2=o->_weight[mode]; for(int i=0;i<_omegasCount;i++) { if(measurements1[i]!=measurements2[i]) return false; if(stddev1[i]!=stddev2[i]) return false; if(weight1[i]!=weight2[i]) return false; } } return true; }
QString& QGpCompatibility::CompatMultiModalData::log | ( | ) | [inline] |
{return _log;}
double QGpCompatibility::CompatMultiModalData::measurement | ( | int | i, |
int | mode | ||
) | const [inline] |
References mode.
{return _measurements[mode][i];}
QVector< double > * QGpCompatibility::CompatMultiModalData::measurements | ( | int | iMode | ) |
References _measurements, _modesCount, and _omegasCount.
Referenced by QGpCompatibility::CompatHodoChroneData::calculate(), checkStdDev(), QGpCompatibility::CompatDispersionData::closestModeMisfit(), CompatMultiModalData(), QGpCompatibility::CompatDispersionData::convertStddev(), dataToReport(), insideDev(), QGpCompatibility::CompatDispersionData::misfit(), reportToData(), QGpCompatibility::CompatHodoChroneData::setSource(), QGpCompatibility::CompatHodoChroneData::srcIndex(), and valuesToData().
{ ASSERT(iMode<_modesCount); QVector<double> * list=new QVector<double>; double * values=_measurements[iMode]; for(int i=0;i<_omegasCount;i++) list->push_back(values[i]); return list; }
void QGpCompatibility::CompatMultiModalData::reportToData | ( | QDataStream & | s | ) |
References _log, _measurements, _modesCount, _omegasCount, _stddev, measurements(), mode, stddev(), and TRACE.
Referenced by QGpCompatibility::CompatInversionReport::loadDispersionGoal(), QGpCompatibility::CompatInversionReport::loadEllipticityGoal(), and QGpCompatibility::CompatRefraReport::loadRefraGoal().
{ TRACE; if(!_omegasCount || !_modesCount) return; for(int mode=0; mode<_modesCount;mode++) { double * measurements=_measurements[mode]; double * stddev=_stddev[mode]; for(int i=0;i<_omegasCount;i++) { s >> measurements[i]; s >> stddev[i]; //printf("%i %lg+-%lg\n",i,measurements[i], stddev[i]); } } s >> _log; }
void QGpCompatibility::CompatMultiModalData::reportToDataWeight | ( | QDataStream & | s, |
bool | loadIt | ||
) |
References _modesCount, _omegasCount, _weight, mode, TRACE, and weight().
Referenced by QGpCompatibility::CompatInversionReport::loadDispersionGoal(), QGpCompatibility::CompatInversionReport::loadEllipticityGoal(), and QGpCompatibility::CompatRefraReport::loadRefraGoal().
{ TRACE; if(!_omegasCount || !_modesCount) return; if(loadIt) { for(int mode=0; mode<_modesCount;mode++) { double * weight=_weight[mode]; for(int i=0;i<_omegasCount;i++) s >> weight[i]; } } else { for(int mode=0; mode<_modesCount;mode++) { double * weight=_weight[mode]; for(int i=0;i<_omegasCount;i++) weight[i]=1; } } }
void QGpCompatibility::CompatMultiModalData::setMean | ( | int | i, |
int | mode, | ||
double | mean | ||
) | [inline] |
References mode.
Referenced by QGpCompatibility::CompatModalEllipticity::oldStyle(), and QGpCompatibility::CompatModalDispersion::oldStyle().
{_measurements[mode][i]=mean;}
void QGpCompatibility::CompatMultiModalData::setStddev | ( | int | i, |
int | mode, | ||
double | stddev | ||
) | [inline] |
References mode.
Referenced by QGpCompatibility::CompatModalEllipticity::oldStyle(), and QGpCompatibility::CompatModalDispersion::oldStyle().
void QGpCompatibility::CompatMultiModalData::setWeight | ( | int | i, |
int | m, | ||
double | w | ||
) | [inline] |
double QGpCompatibility::CompatMultiModalData::stddev | ( | int | i, |
int | mode | ||
) | const [inline] |
References mode.
Referenced by checkStdDev(), QGpCompatibility::CompatDispersionData::closestModeMisfit(), CompatMultiModalData(), QGpCompatibility::CompatDispersionData::convertStddev(), dataToReport(), insideDev(), QGpCompatibility::CompatDispersionData::misfit(), reportToData(), and valuesToData().
QVector< double > * QGpCompatibility::CompatMultiModalData::stddev | ( | int | iMode | ) |
References _modesCount, _omegasCount, and _stddev.
{ ASSERT(iMode<_modesCount); QVector<double> * list=new QVector<double>; double * values=_stddev[iMode]; for(int i=0;i<_omegasCount;i++) list->push_back(values[i]); return list; }
Reimplemented in QGpCompatibility::CompatHodoChroneData, and QGpCompatibility::CompatDispersionData.
References _measurements, _modesCount, _omegasCount, _stddev, QGpCompatibility::CompatMultiModalCurves::_values, _weight, measurements(), mode, stddev(), TRACE, and weight().
Referenced by QGpCompatibility::CompatDispersionData::valuesToData(), QGpCompatibility::CompatHodoChroneData::valuesToData(), and QGpCompatibility::CompatEllipticityData::valuesToData().
{ TRACE; for(int mode=0;mode<_modesCount;mode++) { double * measurements=_measurements[mode]; double * values=o->_values[mode]; double * stddev=_stddev[mode]; double * weight=_weight[mode]; for(int i=0;i<_omegasCount;i++) { measurements[i]=values[i]; stddev[i]=0; weight[i]=1; } } }
double QGpCompatibility::CompatMultiModalData::Weight | ( | int | i, |
int | m | ||
) | [inline] |
{return _weight[m][i];}
QVector< double > * QGpCompatibility::CompatMultiModalData::weight | ( | int | iMode | ) |
References _modesCount, _omegasCount, and _weight.
Referenced by CompatMultiModalData(), dataToReport(), reportToDataWeight(), and valuesToData().
{ ASSERT(iMode<_modesCount); QVector<double> * list=new QVector<double>; double * values=_weight[iMode]; for(int i=0;i<_omegasCount;i++) list->push_back(values[i]); return list; }
QString QGpCompatibility::CompatMultiModalData::_log [protected] |
Referenced by CompatMultiModalData(), dataToReport(), and reportToData().
double** QGpCompatibility::CompatMultiModalData::_measurements [protected] |
Referenced by allocatesData(), QGpCompatibility::CompatHodoChroneData::calculate(), checkStdDev(), QGpCompatibility::CompatDispersionData::closestModeMisfit(), CompatMultiModalData(), QGpCompatibility::CompatDispersionData::convertStddev(), curve(), dataToReport(), deleteData(), QGpCompatibility::CompatDispersionData::groupSlowness(), insideDev(), isSameData(), QGpCompatibility::CompatDispersionData::maxDataFrequency(), measurements(), QGpCompatibility::CompatDispersionData::minDataFrequency(), QGpCompatibility::CompatDispersionData::misfit(), reportToData(), QGpCompatibility::CompatHodoChroneData::setSource(), QGpCompatibility::CompatHodoChroneData::srcIndex(), and valuesToData().
int QGpCompatibility::CompatMultiModalData::_modesCount [protected] |
Referenced by allocatesData(), QGpCompatibility::CompatHodoChroneData::calculate(), checkStdDev(), CompatMultiModalData(), QGpCompatibility::CompatDispersionData::convertStddev(), curve(), dataToReport(), deleteData(), isSameData(), QGpCompatibility::CompatDispersionData::maxDataFrequency(), measurements(), QGpCompatibility::CompatDispersionData::minDataFrequency(), QGpCompatibility::CompatDispersionData::misfit(), reportToData(), reportToDataWeight(), QGpCompatibility::CompatHodoChroneData::setSource(), stddev(), valuesToData(), and weight().
int QGpCompatibility::CompatMultiModalData::_omegasCount [protected] |
Referenced by allocatesData(), QGpCompatibility::CompatHodoChroneData::calculate(), checkStdDev(), QGpCompatibility::CompatDispersionData::closestModeMisfit(), CompatMultiModalData(), QGpCompatibility::CompatDispersionData::convertStddev(), QGpCompatibility::CompatDispersionData::curve(), curve(), QGpCompatibility::CompatEllipticityData::curve(), dataToReport(), insideDev(), isSameData(), measurements(), QGpCompatibility::CompatDispersionData::minDataFrequency(), reportToData(), reportToDataWeight(), QGpCompatibility::CompatHodoChroneData::setSource(), QGpCompatibility::CompatHodoChroneData::srcIndex(), stddev(), valuesToData(), and weight().
double** QGpCompatibility::CompatMultiModalData::_stddev [protected] |
Referenced by allocatesData(), checkStdDev(), QGpCompatibility::CompatDispersionData::closestModeMisfit(), CompatMultiModalData(), QGpCompatibility::CompatDispersionData::convertStddev(), curve(), dataToReport(), deleteData(), insideDev(), isSameData(), QGpCompatibility::CompatDispersionData::misfit(), reportToData(), stddev(), and valuesToData().
double** QGpCompatibility::CompatMultiModalData::_weight [protected] |
Referenced by allocatesData(), CompatMultiModalData(), curve(), dataToReport(), deleteData(), isSameData(), reportToDataWeight(), valuesToData(), and weight().