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

Brief description of class still missing. More...

#include <RefractionCurve.h>

Inheritance diagram for QGpCoreWave::RefractionCurve:
QGpCoreTools::Curve< FactoryPoint > QGpCoreTools::XMLClass QVector

List of all members.

Public Member Functions

void addLog (QString s)
void clear ()
void linkReceivers (const QVector< double > &xRec)
void linkSource (const QVector< double > &xSrc)
QString log () const
double misfit (int &nValues, int &nData, const RefractionFactory &f, MisfitType type, double minMisfit) const
QString name () const
bool operator== (const RefractionCurve &o) const
 RefractionCurve ()
 RefractionCurve (const RefractionCurve &o)
 RefractionCurve (int n)
void setName (QString n)
void setSource (double s)
void sort ()
double source () const
virtual const QString & xml_tagName () const
virtual ~RefractionCurve ()

Static Public Attributes

static const QString xmlRefractionCurveTag = "RefractionCurve"

Protected Member Functions

XMLMember xml_member (XML_MEMBER_ARGS)
bool xml_setProperty (XML_SETPROPERTY_ARGS)
void xml_writeChildren (XML_WRITECHILDREN_ARGS) const
void xml_writeProperties (XML_WRITEPROPERTIES_ARGS) const

Detailed Description

Brief description of class still missing.

Full description of class still missing


Constructor & Destructor Documentation

{_source=0.0;}

References TRACE.

                                                                : Curve<FactoryPoint>(o), XMLClass()
{
  TRACE;
  _name=o._name;
  _log=o._log;
  _source=o._source;
}
: Curve<FactoryPoint>(n) {_source=0.0;}
virtual QGpCoreWave::RefractionCurve::~RefractionCurve ( ) [inline, virtual]
{}

Member Function Documentation

void QGpCoreWave::RefractionCurve::addLog ( QString  s) [inline]

Referenced by QGpGuiWave::RefractionProxy::addLog().

{_log+=s;}

Reimplemented from QGpCoreTools::Curve< FactoryPoint >.

References TRACE.

Referenced by QGpGuiWave::RefractionProxy::parse().

{
  TRACE;
  Curve<FactoryPoint>::clear();
  _log="";
  _name="";
  _source=0.0;
}
void QGpCoreWave::RefractionCurve::linkReceivers ( const QVector< double > &  xRec)

Set the index in vector xRec of each sample of the curve. Each sample of the curve must have its corresponding value in vector xRec.

References QGpCoreTools::Curve< FactoryPoint >::at(), QGpCoreTools::Curve< FactoryPoint >::count(), and TRACE.

Referenced by QGpCoreWave::RefractionFactory::linkX().

{
  TRACE;
  int n=count();
  int nx=xRec.count();
  int ix=0;
  for(int i=0; i< n; i++) {
    while(ix<nx && xRec.at(ix) < at(i).x()) ix++;
    ASSERT(at(i).x()==xRec.at(ix));
    (*this)[i].setIndex(ix);
  }
}
void QGpCoreWave::RefractionCurve::linkSource ( const QVector< double > &  xSrc)

Set the index in vector xSrc of source. Source x must be in xSrc.

References TRACE.

Referenced by QGpCoreWave::RefractionFactory::linkX().

{
  TRACE;
  _sourceIndex=xSrc.indexOf(_source);
  ASSERT(_sourceIndex>-1);
}
QString QGpCoreWave::RefractionCurve::log ( ) const [inline]

Referenced by QGpGuiWave::RefractionProxy::log().

{return _log;}
double QGpCoreWave::RefractionCurve::misfit ( int &  nValues,
int &  nData,
const RefractionFactory f,
MisfitType  type,
double  minMisfit 
) const

Calculate the squared misfit of values with respect to this curve.

nValues is incremented by the number of valid values where the comparison was possible. nData is incremented by the number of valid data where the comparison is possible. In all cases, nData >= nValues and for the best matching case, nValues==nData.

minMisfit2 is the square of the minimum misfit value that can be reached for each sample individualy.

References QGpCoreTools::Curve< FactoryPoint >::at(), QGpCoreTools::Curve< FactoryPoint >::count(), QGpCoreWave::FactoryPoint::index(), QGpCoreTools::StatisticalValue< numberType >::misfit(), QGpCoreWave::RefractionFactory::source(), and TRACE.

{
  TRACE;
  double res=0;
  int nx=count();
  const RealValue * values=f.source(_sourceIndex);
  for(int i=0;i<nx;i++) {
    const FactoryPoint& p=at(i);
    double pointMisfit=p.misfit(nValues, nData, values[ p.index() ], type, minMisfit);
    if(pointMisfit>0.0) {
      res+=pointMisfit;
    }
  }
  return res;
}
QString QGpCoreWave::RefractionCurve::name ( ) const [inline]

Referenced by QGpGuiWave::RefractionProxy::name().

{return _name;}
bool QGpCoreWave::RefractionCurve::operator== ( const RefractionCurve o) const [inline]
{
  return _name==o._name &&
         _log==o._log &&
         _source==o._source &&
         Curve<FactoryPoint>::operator==(o);
}
void QGpCoreWave::RefractionCurve::setName ( QString  n) [inline]

Referenced by QGpGuiWave::RefractionProxy::setName().

{_name=n;}
void QGpCoreWave::RefractionCurve::setSource ( double  s) [inline]
double QGpCoreWave::RefractionCurve::source ( ) const [inline]

Re-implement this function to offer XML restore (children and properties) support to your class.

From tag and map (with contains the attibute value) return a unique identifier under the format of a XMLMember. XMLMember is initialized with 3 types of contructors:

  • An integer: id number of a property
  • A XMLClass * : a child of this object identified by tag
  • Default constructor: error, unknow child or property

Map of attributes can be inspected in this way (can be achived also in xml_setProperty()):

    static const QString tmp("childrenName");
    XMLRestoreAttributeIterator it=map.find(tmp);
    if(it!=map.end()) {
      // found attribute "childrenName"
    }

If the map of attributes is not used:

    Q_UNUSED(attributes);
    if(tag=="x1") return XMLMember(0);
    else if(tag=="y1") return XMLMember(1);
    else if(tag=="x2") return XMLMember(2);
    else if(tag=="y2") return XMLMember(3);
    else return XMLMember(XMLMember::Unknown);

Arithmetic operations + and - apply to XMLMember to avoid confusion of property id numbers between inherited objects. Offset 3 corresponds to the number of properties defined in this object.

    if(tag=="anInteger") return XMLMember(0);
    else if(tag=="aString") return XMLMember(1);
    else if(tag=="aDouble") return XMLMember(2);
    return AbstractLine::xml_member(tag, attributes, context)+3;

For the arguments of this function use Macro XML_MEMBER_ARGS.

Reimplemented from QGpCoreTools::XMLClass.

References QGpCoreTools::Curve< FactoryPoint >::append(), QGpCoreTools::Curve< FactoryPoint >::last(), and TRACE.

{
  TRACE;
  Q_UNUSED(attributes)
  Q_UNUSED(context);
  if(tag=="StatPoint") {
    append(FactoryPoint());
    return XMLMember(&last());
  } else if(tag=="name") return XMLMember(0);
  else if(tag=="log") return XMLMember(1);
  else if(tag=="source") return XMLMember(2);
  else return XMLMember(XMLMember::Unknown);
}

Re-implement this function to offer XML restore properties support to your class.

From memberID set the corresponding property with value content. The map of attributes is given as a supplementary information (not useful in all cases).

For a general case:

  Q_UNUSED(attributes);
  double val=content.toDouble();
  switch (memberID) {
  case 0:
    _x1=val;
    return true;
  case 1:
    _y1=val;
    return true;
  case 2:
    _x2=val;
    return true;
  case 3:
    _y2=val;
    return true;
  default:
    return false;
  }

For classes inheriting other classes (see also xml_member())

  switch (memberID) {
  case 0:
    _anInteger=content.toString();
    return true;
  case 1:
    _aString=content.toInt();
    return true;
  case 2:
    _aDouble=content.toDouble();
    return true;
  default:
    return AbstractLine::xml_setProperty(memberID-3, map, content);

For the arguments of this function use Macro XML_SETPROPERTY_ARGS.

Reimplemented from QGpCoreTools::XMLClass.

References TRACE.

{
  TRACE;
  Q_UNUSED(tag);
  Q_UNUSED(attributes)
  Q_UNUSED(context);
  switch (memberID) {
  case 0: _name=content.toString(); return true;
  case 1: _log=content.toString(); return true;
  case 2: _source=content.toDouble(); return true;
  default: return false;
  }
}
virtual const QString& QGpCoreWave::RefractionCurve::xml_tagName ( ) const [inline, virtual]

Reimplemented from QGpCoreTools::XMLClass.

References QGpCoreTools::Curve< FactoryPoint >::begin(), QGpCoreTools::Curve< FactoryPoint >::end(), and TRACE.

{
  TRACE;
  const_iterator it;
  for(it=begin(); it!=end(); ++it) {
    it->xml_save(s, context);
  }
}

Reimplemented from QGpCoreTools::XMLClass.

References TRACE, and QGpCoreTools::XMLClass::writeProperty().

{
  TRACE;
  Q_UNUSED(context);
  writeProperty(s,"name",_name);
  writeProperty(s,"log",_log);
  writeProperty(s,"source",_source);
}

Member Data Documentation

const QString QGpCoreWave::RefractionCurve::xmlRefractionCurveTag = "RefractionCurve" [static]

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