#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().