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

#include <CompatMultiModalData.h>

Inheritance diagram for QGpCompatibility::CompatMultiModalData:
QGpCompatibility::CompatDispersionData QGpCompatibility::CompatEllipticityData QGpCompatibility::CompatHodoChroneData

List of all members.

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

Constructor & Destructor Documentation

QGpCompatibility::CompatMultiModalData::CompatMultiModalData ( int  modesCount,
int  omegasCount 
)
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();
}

Member Function Documentation

void QGpCompatibility::CompatMultiModalData::addLog ( QString &  s) [inline]
{_log+=s+"\n";}

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

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

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

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;
}
{return _log;}
double QGpCompatibility::CompatMultiModalData::measurement ( int  i,
int  mode 
) const [inline]

References mode.

{return _measurements[mode][i];}

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]
void QGpCompatibility::CompatMultiModalData::setStddev ( int  i,
int  mode,
double  stddev 
) [inline]
void QGpCompatibility::CompatMultiModalData::setWeight ( int  i,
int  m,
double  w 
) [inline]
double QGpCompatibility::CompatMultiModalData::stddev ( int  i,
int  mode 
) const [inline]

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;
}
double QGpCompatibility::CompatMultiModalData::Weight ( int  i,
int  m 
) [inline]
{return _weight[m][i];}

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

Member Data Documentation


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