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