All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions | Protected Member Functions | Protected Attributes
QGpCompatibility::CompatAutocorrData Class Reference

#include <CompatAutocorrData.h>

Inheritance diagram for QGpCompatibility::CompatAutocorrData:
QGpCompatibility::CompatAutocorrCurves QGpCompatibility::CompatMultiModalFrequency

List of all members.

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.

Constructor & Destructor Documentation

Default constructor.

References _measurements, _stddev, _weight, and TRACE.

QGpCompatibility::CompatAutocorrData::CompatAutocorrData ( int  modesCount,
int  radiusCount,
int  omegasCount 
)

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();
}

Member Function Documentation

void QGpCompatibility::CompatAutocorrData::addLog ( QString &  s) [inline]

add new lines to existing comments

{_log+=s+"\n";}

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];
    }
  }
}

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];
    }
  }
}

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;
}

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;
}

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;
}

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]

Set the stddev of the ith measurements of radius r.

{_stddev[m][r][i]=stddev;}
void QGpCompatibility::CompatAutocorrData::setWeight ( int  i,
int  r,
int  m,
double  w 
) [inline]

Set the weith of the ith measurements of radius r.

{_weight[m][r][i]=w;}
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;
}

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;
      }
    }
  }
}

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;
}

Member Data Documentation

Any comment on how the measurement curve was generated.

Referenced by CompatAutocorrData(), dataToReport(), and reportToData().

Storage for measured autocorrelation standard error.

Referenced by allocatesData(), CompatAutocorrData(), dataToReport(), deleteData(), distanceStddev(), isSameData(), reportToData(), stddev(), and valuesToData().

Storage for measured autocorrelation weights.

Referenced by allocatesData(), CompatAutocorrData(), dataToReport(), deleteData(), isSameData(), reportToDataWeight(), valuesToData(), and weight().


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