#include <CompatAutocorrData.h>
Public Member Functions | |
void | addLog (QString &s) |
add new lines to existing comments | |
CompatAutocorrData () | |
Default constructor. | |
CompatAutocorrData (int modesCount, int radiusCount, int omegasCount) | |
Allocates an empty structure. | |
CompatAutocorrData (const CompatAutocorrData *curve, int modesCount) | |
Copy constructor changing the number of modes. | |
CompatAutocorrData (const CompatAutocorrCurves *curve) | |
Set the CompatCompatAutocorrCurve as the measurements. | |
void | dataToReport (QDataStream &s) |
Store in an inversion report. | |
QVector< double > * | distanceMeasurements (int iMode, int iOmega) |
Returns the measurements of frequency iOmega. | |
QVector< double > * | distanceStddev (int iMode, int iOmega) |
Returns the stddev of frequency iOmega. | |
bool | isSameData (const CompatAutocorrData *other) const |
Compares the measurments of two objects. | |
QString & | log () |
return the log comments | |
double | measurement (int i, int r, int m) |
Returns the ith measurements of radius r. | |
QVector< double > * | measurements (int iMode, int iRadius) |
Returns the measurements of radius r. | |
void | reportToData (QDataStream &s) |
Load from an inversion report. | |
void | reportToDataWeight (QDataStream &s, bool loadIt) |
Version 3 of CompatCompatInversionReport, statistical weight of all point. | |
void | setMean (int i, int r, int m, double mean) |
Set the average of the ith measurements of radius r. | |
void | setStddev (int i, int r, int m, double stddev) |
Set the stddev of the ith measurements of radius r. | |
void | setWeight (int i, int r, int m, double w) |
Set the weith of the ith measurements of radius r. | |
double | stddev (int i, int r, int m) |
Returns the stddev of the ith measurements of radius r. | |
QVector< double > * | stddev (int iMode, int iRadius) |
Returns the stddev of radius r. | |
void | valuesToData (const CompatAutocorrCurves *o) |
Transfers values from the autocorrCurve o to measurements. | |
void | valuesToData () |
Transfers values from the autocorrCurve sub-object to measurements. | |
double | weight (int i, int r, int m) |
Returns the weith of the ith measurements of radius r. | |
QVector< double > * | weight (int iMode, int iRadius) |
Returns the weight of radius r. | |
virtual | ~CompatAutocorrData () |
Destructor: get rid of all unused memory. | |
Protected Member Functions | |
void | allocatesData () |
Allocates the storage for measured values. | |
void | deleteData () |
De-allocates the storage for measured values. | |
Protected Attributes | |
QString | _log |
Any comment on how the measurement curve was generated. | |
double *** | _measurements |
Storage for measured autocorrelation curves. | |
double *** | _stddev |
Storage for measured autocorrelation standard error. | |
double *** | _weight |
Storage for measured autocorrelation weights. |
Default constructor.
References _measurements, _stddev, _weight, and TRACE.
: CompatAutocorrCurves() { TRACE; _measurements=0; _stddev=0; _weight=0; }
QGpCompatibility::CompatAutocorrData::CompatAutocorrData | ( | int | modesCount, |
int | radiusCount, | ||
int | omegasCount | ||
) |
Allocates an empty structure.
References _measurements, _stddev, _weight, allocatesData(), and TRACE.
: CompatAutocorrCurves(modesCount, radiusCount, omegasCount) { TRACE; _measurements=0; _stddev=0; _weight=0; allocatesData(); }
QGpCompatibility::CompatAutocorrData::CompatAutocorrData | ( | const CompatAutocorrData * | curve, |
int | modesCount | ||
) |
Copy constructor changing the number of modes.
References _log, _measurements, QGpCompatibility::CompatMultiModalFrequency::_modesCount, QGpCompatibility::CompatMultiModalFrequency::_omegasCount, QGpCompatibility::CompatAutocorrCurves::_radiusCount, _stddev, _weight, allocatesData(), CompatAUTOCORR_INVALID_VALUE, measurements(), QGpCompatibility::CompatMultiModalFrequency::modesCount(), stddev(), TRACE, and weight().
: CompatAutocorrCurves(o,modesCount) { TRACE; _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 ** measurementsMode=_measurements[iMode]; double ** stddevMode=_stddev[iMode]; double ** weightMode=_weight[iMode]; double ** o_measurementsMode=o->_measurements[iMode]; double ** o_stddevMode=o->_stddev[iMode]; double ** o_weightMode=o->_weight[iMode]; for(int iRadius=0;iRadius<_radiusCount;iRadius++) { double * measurements=measurementsMode[iRadius]; double * stddev=stddevMode[iRadius]; double * weight=weightMode[iRadius]; double * o_measurements=o_measurementsMode[iRadius]; double * o_stddev=o_stddevMode[iRadius]; double * o_weight=o_weightMode[iRadius]; 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 ** measurementsMode=_measurements[iMode]; double ** stddevMode=_stddev[iMode]; double ** weightMode=_weight[iMode]; for(int iRadius=0;iRadius<_radiusCount;iRadius++) { double * measurements=measurementsMode[iRadius]; double * stddev=stddevMode[iRadius]; double * weight=weightMode[iRadius]; for(int i=0;i<_omegasCount;i++) { measurements[i]=CompatAUTOCORR_INVALID_VALUE; stddev[i]=0; weight[i]=1; } } } _log=o->_log; }
Set the CompatCompatAutocorrCurve as the measurements.
References _measurements, QGpCompatibility::CompatMultiModalFrequency::_modesCount, QGpCompatibility::CompatMultiModalFrequency::_omegasCount, QGpCompatibility::CompatAutocorrCurves::_radiusCount, QGpCompatibility::CompatAutocorrCurves::_radiusMax, QGpCompatibility::CompatAutocorrCurves::_radiusMin, _stddev, QGpCompatibility::CompatAutocorrCurves::_values, _weight, allocatesData(), measurements(), QGpCompatibility::CompatAutocorrCurves::radiusMax(), QGpCompatibility::CompatAutocorrCurves::radiusMin(), stddev(), TRACE, and weight().
: CompatAutocorrCurves(o) { TRACE; _measurements=0; _stddev=0; _weight=0; allocatesData(); // Copy autocorr from autocorr into measurements int iMode; for(iMode=0; iMode<_modesCount;iMode++) { double ** measurementsMode=_measurements[iMode]; double ** stddevMode=_stddev[iMode]; double ** weightMode=_weight[iMode]; double ** o_valuesMode=o->_values[iMode]; for(int iRadius=0;iRadius<_radiusCount;iRadius++) { double * measurements=measurementsMode[iRadius]; double * stddev=stddevMode[iRadius]; double * weight=weightMode[iRadius]; double * o_values=o_valuesMode[iRadius]; for(int i=0;i<_omegasCount;i++) { measurements[i]=o_values[i]; stddev[i]=0; weight[i]=1; } } } // Copy the radius min and max for(int iRadius=0;iRadius<_radiusCount;iRadius++) { _radiusMin[iRadius]=o->radiusMin(iRadius); _radiusMax[iRadius]=o->radiusMax(iRadius); } }
Destructor: get rid of all unused memory.
References deleteData(), and TRACE.
{ TRACE; deleteData(); }
void QGpCompatibility::CompatAutocorrData::addLog | ( | QString & | s | ) | [inline] |
add new lines to existing comments
{_log+=s+"\n";}
void QGpCompatibility::CompatAutocorrData::allocatesData | ( | ) | [protected] |
Allocates the storage for measured values.
References _measurements, QGpCompatibility::CompatMultiModalFrequency::_modesCount, QGpCompatibility::CompatMultiModalFrequency::_omegasCount, QGpCompatibility::CompatAutocorrCurves::_radiusCount, _stddev, _weight, deleteData(), and TRACE.
Referenced by CompatAutocorrData().
{ TRACE; deleteData(); _measurements=new double**[_modesCount]; _stddev=new double**[_modesCount]; _weight=new double**[_modesCount]; for(int iMode=0; iMode<_modesCount;iMode++) { double ** measurementsMode=new double *[_radiusCount]; _measurements[iMode]=measurementsMode; double ** stddevMode=new double *[_radiusCount]; _stddev[iMode]=stddevMode; double ** weightMode=new double *[_radiusCount]; _weight[iMode]=weightMode; for(int iRadius=0; iRadius<_radiusCount;iRadius++) { measurementsMode[iRadius]=new double[_omegasCount]; stddevMode[iRadius]=new double[_omegasCount]; weightMode[iRadius]=new double[_omegasCount]; } } }
void QGpCompatibility::CompatAutocorrData::dataToReport | ( | QDataStream & | s | ) |
Store in an inversion report.
References _log, _measurements, QGpCompatibility::CompatMultiModalFrequency::_modesCount, QGpCompatibility::CompatMultiModalFrequency::_omegasCount, QGpCompatibility::CompatAutocorrCurves::_radiusCount, _stddev, _weight, measurements(), QGpCompatibility::CompatAutocorrCurves::radiusToReport(), stddev(), TRACE, and weight().
Referenced by QGpCompatibility::CompatAutocorrReport::addAutocorrGoal(), and QGpCompatibility::CompatAutocorrReport::modifyAutocorrGoal().
{ TRACE; radiusToReport(s); int iMode; for(iMode=0;iMode<_modesCount;iMode++) { double ** measurementsMode=_measurements[iMode]; double ** stddevMode=_stddev[iMode]; for(int iRadius=0; iRadius<_radiusCount;iRadius++) { double * measurements=measurementsMode[iRadius]; double * stddev=stddevMode[iRadius]; for(int i=0;i<_omegasCount;i++) { s << measurements[i]; s << stddev[i]; } } } s << _log; // Write it separately to allow version compatibility (Version 3) for(iMode=0;iMode<_modesCount;iMode++) { double ** weightMode=_weight[iMode]; for(int iRadius=0; iRadius<_radiusCount;iRadius++) { double * weight=weightMode[iRadius]; for(int i=0;i<_omegasCount;i++) s << weight[i]; } } }
void QGpCompatibility::CompatAutocorrData::deleteData | ( | ) | [protected] |
De-allocates the storage for measured values.
References _measurements, QGpCompatibility::CompatMultiModalFrequency::_modesCount, QGpCompatibility::CompatAutocorrCurves::_radiusCount, _stddev, _weight, and TRACE.
Referenced by allocatesData(), and ~CompatAutocorrData().
{ TRACE; if(_measurements) { for(int iMode=0; iMode<_modesCount;iMode++) { for(int iRadius=0; iRadius<_radiusCount;iRadius++) delete [] _measurements[iMode][iRadius]; delete [] _measurements[iMode]; } delete [] _measurements; _measurements=0; } if(_stddev) { for(int iMode=0; iMode<_modesCount;iMode++) { for(int iRadius=0; iRadius<_radiusCount;iRadius++) delete [] _stddev[iMode][iRadius]; delete [] _stddev[iMode]; } delete [] _stddev; _stddev=0; } if(_weight) { for(int iMode=0; iMode<_modesCount;iMode++) { for(int iRadius=0; iRadius<_radiusCount;iRadius++) delete [] _weight[iMode][iRadius]; delete [] _weight[iMode]; } delete [] _weight; _weight=0; } }
QVector< double > * QGpCompatibility::CompatAutocorrData::distanceMeasurements | ( | int | iMode, |
int | iOmega | ||
) |
Returns the measurements of frequency iOmega.
References _measurements, QGpCompatibility::CompatMultiModalFrequency::_modesCount, QGpCompatibility::CompatMultiModalFrequency::_omegasCount, and QGpCompatibility::CompatAutocorrCurves::_radiusCount.
{ ASSERT(iMode<_modesCount); ASSERT(iOmega<_omegasCount); QVector<double> * list=new QVector<double>; double ** values=_measurements[iMode]; for(int i=0;i<_radiusCount;i++) list->push_back(values[i][iOmega]); return list; }
QVector< double > * QGpCompatibility::CompatAutocorrData::distanceStddev | ( | int | iMode, |
int | iOmega | ||
) |
Returns the stddev of frequency iOmega.
References QGpCompatibility::CompatMultiModalFrequency::_modesCount, QGpCompatibility::CompatMultiModalFrequency::_omegasCount, QGpCompatibility::CompatAutocorrCurves::_radiusCount, and _stddev.
{ ASSERT(iMode<_modesCount); ASSERT(iOmega<_omegasCount); QVector<double> * list=new QVector<double>; double ** values=_stddev[iMode]; for(int i=0;i<_radiusCount;i++) list->push_back(values[i][iOmega]); return list; }
bool QGpCompatibility::CompatAutocorrData::isSameData | ( | const CompatAutocorrData * | other | ) | const |
Compares the measurments of two objects.
References _measurements, QGpCompatibility::CompatMultiModalFrequency::_modesCount, QGpCompatibility::CompatMultiModalFrequency::_omegasCount, QGpCompatibility::CompatAutocorrCurves::_radiusCount, _stddev, _weight, and TRACE.
{ TRACE; if(_modesCount!=o->_modesCount) return false; if(_radiusCount!=o->_radiusCount) return false; if(_omegasCount!=o->_omegasCount) return false; for(int iMode=0;iMode<_modesCount;iMode++) { double ** measurementsMode1=_measurements[iMode]; double ** stddevMode1=_stddev[iMode]; double ** weightMode1=_weight[iMode]; double ** measurementsMode2=o->_measurements[iMode]; double ** stddevMode2=o->_stddev[iMode]; double ** weightMode2=o->_weight[iMode]; for(int iRadius=0;iRadius<_radiusCount;iRadius++) { double * measurements1=measurementsMode1[iRadius]; double * stddev1=stddevMode1[iRadius]; double * weight1=weightMode1[iRadius]; double * measurements2=measurementsMode2[iRadius]; double * stddev2=stddevMode2[iRadius]; double * weight2=weightMode2[iRadius]; 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::CompatAutocorrData::log | ( | ) | [inline] |
return the log comments
{return _log;}
double QGpCompatibility::CompatAutocorrData::measurement | ( | int | i, |
int | r, | ||
int | m | ||
) | [inline] |
Returns the ith measurements of radius r.
{return _measurements[m][r][i];}
QVector< double > * QGpCompatibility::CompatAutocorrData::measurements | ( | int | iMode, |
int | iRadius | ||
) |
Returns the measurements of radius r.
References _measurements, QGpCompatibility::CompatMultiModalFrequency::_modesCount, QGpCompatibility::CompatMultiModalFrequency::_omegasCount, and QGpCompatibility::CompatAutocorrCurves::_radiusCount.
Referenced by CompatAutocorrData(), dataToReport(), reportToData(), and valuesToData().
{ ASSERT(iMode<_modesCount); ASSERT(iRadius<_radiusCount); QVector<double> * list=new QVector<double>; double * values=_measurements[iMode][iRadius]; for(int i=0;i<_omegasCount;i++) list->push_back(values[i]); return list; }
void QGpCompatibility::CompatAutocorrData::reportToData | ( | QDataStream & | s | ) |
Load from an inversion report.
References _log, _measurements, QGpCompatibility::CompatMultiModalFrequency::_modesCount, QGpCompatibility::CompatMultiModalFrequency::_omegasCount, QGpCompatibility::CompatAutocorrCurves::_radiusCount, _stddev, measurements(), QGpCompatibility::CompatAutocorrCurves::reportToRadius(), stddev(), and TRACE.
Referenced by QGpCompatibility::CompatAutocorrReport::loadAutocorrGoal().
{ TRACE; if(!_omegasCount || !_modesCount || !_radiusCount) return; reportToRadius(s); for(int iMode=0;iMode<_modesCount;iMode++) { double ** measurementsMode=_measurements[iMode]; double ** stddevMode=_stddev[iMode]; for(int iRadius=0; iRadius<_radiusCount;iRadius++) { double * measurements=measurementsMode[iRadius]; double * stddev=stddevMode[iRadius]; for(int i=0;i<_omegasCount;i++) { s >> measurements[i]; s >> stddev[i]; } } } s >> _log; }
void QGpCompatibility::CompatAutocorrData::reportToDataWeight | ( | QDataStream & | s, |
bool | loadIt | ||
) |
Version 3 of CompatCompatInversionReport, statistical weight of all point.
References QGpCompatibility::CompatMultiModalFrequency::_modesCount, QGpCompatibility::CompatMultiModalFrequency::_omegasCount, QGpCompatibility::CompatAutocorrCurves::_radiusCount, _weight, TRACE, and weight().
Referenced by QGpCompatibility::CompatAutocorrReport::loadAutocorrGoal().
{ TRACE; if(!_omegasCount || !_modesCount) return; if(loadIt) { for(int iMode=0;iMode<_modesCount;iMode++) { double ** weightMode=_weight[iMode]; for(int iRadius=0; iRadius<_radiusCount;iRadius++) { double * weight=weightMode[iRadius]; for(int i=0;i<_omegasCount;i++) s >> weight[i]; } } } else { for(int iMode=0;iMode<_modesCount;iMode++) { double ** weightMode=_weight[iMode]; for(int iRadius=0; iRadius<_radiusCount;iRadius++) { double * weight=weightMode[iRadius]; for(int i=0;i<_omegasCount;i++) weight[i]=1; } } } }
void QGpCompatibility::CompatAutocorrData::setMean | ( | int | i, |
int | r, | ||
int | m, | ||
double | mean | ||
) | [inline] |
Set the average of the ith measurements of radius r.
{_measurements[m][r][i]=mean;}
void QGpCompatibility::CompatAutocorrData::setStddev | ( | int | i, |
int | r, | ||
int | m, | ||
double | stddev | ||
) | [inline] |
void QGpCompatibility::CompatAutocorrData::setWeight | ( | int | i, |
int | r, | ||
int | m, | ||
double | w | ||
) | [inline] |
double QGpCompatibility::CompatAutocorrData::stddev | ( | int | i, |
int | r, | ||
int | m | ||
) | [inline] |
Returns the stddev of the ith measurements of radius r.
Referenced by CompatAutocorrData(), dataToReport(), reportToData(), and valuesToData().
{return _stddev[m][r][i];}
QVector< double > * QGpCompatibility::CompatAutocorrData::stddev | ( | int | iMode, |
int | iRadius | ||
) |
Returns the stddev of radius r.
References QGpCompatibility::CompatMultiModalFrequency::_modesCount, QGpCompatibility::CompatMultiModalFrequency::_omegasCount, QGpCompatibility::CompatAutocorrCurves::_radiusCount, and _stddev.
{ ASSERT(iMode<_modesCount); ASSERT(iRadius<_radiusCount); QVector<double> * list=new QVector<double>; double * values=_stddev[iMode][iRadius]; for(int i=0;i<_omegasCount;i++) list->push_back(values[i]); return list; }
void QGpCompatibility::CompatAutocorrData::valuesToData | ( | const CompatAutocorrCurves * | o | ) |
Transfers values from the autocorrCurve o to measurements.
References _measurements, QGpCompatibility::CompatMultiModalFrequency::_modesCount, QGpCompatibility::CompatMultiModalFrequency::_omegasCount, QGpCompatibility::CompatAutocorrCurves::_radiusCount, _stddev, QGpCompatibility::CompatAutocorrCurves::_values, _weight, measurements(), stddev(), TRACE, and weight().
{ TRACE; for(int iMode=0;iMode<_modesCount;iMode++) { double ** measurementsMode=_measurements[iMode]; double ** o_valuesMode=o->_values[iMode]; double ** stddevMode=_stddev[iMode]; double ** weightMode=_weight[iMode]; for(int iRadius=0;iRadius<_radiusCount;iRadius++) { double * measurements=measurementsMode[iRadius]; double * o_values=o_valuesMode[iRadius]; double * stddev=stddevMode[iRadius]; double * weight=weightMode[iRadius]; for(int i=0;i<_omegasCount;i++) { measurements[i]=o_values[i]; stddev[i]=0; weight[i]=1; } } } }
void QGpCompatibility::CompatAutocorrData::valuesToData | ( | ) | [inline] |
Transfers values from the autocorrCurve sub-object to measurements.
References valuesToData().
Referenced by valuesToData().
{valuesToData(this);}
double QGpCompatibility::CompatAutocorrData::weight | ( | int | i, |
int | r, | ||
int | m | ||
) | [inline] |
Returns the weith of the ith measurements of radius r.
Referenced by CompatAutocorrData(), dataToReport(), reportToDataWeight(), and valuesToData().
{return _weight[m][r][i];}
QVector< double > * QGpCompatibility::CompatAutocorrData::weight | ( | int | iMode, |
int | iRadius | ||
) |
Returns the weight of radius r.
References QGpCompatibility::CompatMultiModalFrequency::_modesCount, QGpCompatibility::CompatMultiModalFrequency::_omegasCount, QGpCompatibility::CompatAutocorrCurves::_radiusCount, and _weight.
{ ASSERT(iMode<_modesCount); ASSERT(iRadius<_radiusCount); QVector<double> * list=new QVector<double>; double * values=_weight[iMode][iRadius]; for(int i=0;i<_omegasCount;i++) list->push_back(values[i]); return list; }
QString QGpCompatibility::CompatAutocorrData::_log [protected] |
Any comment on how the measurement curve was generated.
Referenced by CompatAutocorrData(), dataToReport(), and reportToData().
double*** QGpCompatibility::CompatAutocorrData::_measurements [protected] |
Storage for measured autocorrelation curves.
Referenced by allocatesData(), CompatAutocorrData(), dataToReport(), deleteData(), distanceMeasurements(), isSameData(), measurements(), reportToData(), and valuesToData().
double*** QGpCompatibility::CompatAutocorrData::_stddev [protected] |
Storage for measured autocorrelation standard error.
Referenced by allocatesData(), CompatAutocorrData(), dataToReport(), deleteData(), distanceStddev(), isSameData(), reportToData(), stddev(), and valuesToData().
double*** QGpCompatibility::CompatAutocorrData::_weight [protected] |
Storage for measured autocorrelation weights.
Referenced by allocatesData(), CompatAutocorrData(), dataToReport(), deleteData(), isSameData(), reportToDataWeight(), valuesToData(), and weight().