OpendTect  6.6
probdenfunc.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: Bert
8  Date: Jan 2010
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 
13 */
14 
15 #include "algomod.h"
16 #include "namedobj.h"
17 #include "ranges.h"
18 #include "od_iosfwd.h"
19 
20 
31 {
32 public:
33 
34  virtual ProbDenFunc* clone() const = 0;
35  virtual ~ProbDenFunc() { cleanup(); }
36  virtual void copyFrom(const ProbDenFunc&) = 0;
37  virtual bool isEqual(const ProbDenFunc&) const;
38 
39  virtual const char* getTypeStr() const = 0;
40  virtual int nrDims() const = 0;
41  virtual const char* dimName(int dim) const = 0;
42  virtual void setDimName(int dim,const char*) = 0;
43  virtual float averagePos(int dim) const = 0;
44  virtual float value(const TypeSet<float>&) const = 0;
45 
46  virtual bool canScale() const { return false;}
47  virtual void scale(float) {}
48  virtual float normFac() const { return 1; }
49 
50  // Used for file store/retrieve:
51  virtual void fillPar(IOPar&) const = 0;
52  virtual bool usePar(const IOPar&) = 0;
53  virtual void writeBulk(od_ostream&,bool binary) const {}
54  virtual bool readBulk(od_istream&,bool binary) { return true; }
55 
56  virtual bool isCompatibleWith(const ProbDenFunc&) const;
57  void getIndexTableFor(const ProbDenFunc& pdf,
58  TypeSet<int>& tbl) const;
60 
61  virtual void prepareRandDrawing() const {}
62  virtual void drawRandomPos(TypeSet<float>&) const = 0;
63  static const char* sKeyNrDim();
64 
65  void setUOMSymbol(int dim,const char*);
66  const char* getUOMSymbol(int dim) const;
67  void readUOMFromPar(const IOPar&);
68  void copyUOMFrom(const ProbDenFunc&);
69 
70 protected:
71 
72  ProbDenFunc() { init(); }
74 
75  virtual bool isEq(const ProbDenFunc&) const = 0;
77 
78  void init();
79  void cleanup();
80 };
81 
82 
88 {
89 public:
90 
91  virtual void copyFrom( const ProbDenFunc& pdf )
92  { varnm_ = pdf.dimName(0); setName(pdf.name());
93  copyUOMFrom(pdf); }
94 
95  virtual int nrDims() const { return 1; }
96  virtual const char* dimName(int) const { return varName(); }
97  virtual void setDimName( int dim, const char* nm )
98  { if ( !dim ) varnm_ = nm; }
99 
100  virtual const char* varName() const { return varnm_; }
101 
102  virtual float averagePos(int) const { return gtAvgPos(); }
103  inline float value( float v ) const { return gtVal( v ); }
104  virtual float value( const TypeSet<float>& v ) const
105  { return gtVal( v[0] ); }
106 
107  inline void drawRandomPos( float& v ) const
108  { drwRandPos( v ); }
109  virtual void drawRandomPos( TypeSet<float>& v ) const
110  { v.setSize(1); drwRandPos( v[0] ); }
111 
113 
114 protected:
115 
116  ProbDenFunc1D( const char* vnm="" )
117  : varnm_(vnm) {}
119  : ProbDenFunc(pdf)
120  , varnm_(pdf.varnm_) {}
121 
122  virtual float gtAvgPos() const = 0;
123  virtual float gtVal(float) const = 0;
124  virtual void drwRandPos(float&) const = 0;
125 
126 };
127 
128 
134 {
135 public:
136 
137  virtual void copyFrom( const ProbDenFunc& pdf )
138  { dim0nm_ = pdf.dimName(0); dim1nm_ = pdf.dimName(1);
139  setName(pdf.name()); copyUOMFrom(pdf); }
140 
141  virtual int nrDims() const { return 2; }
142  virtual const char* dimName(int) const;
143  virtual void setDimName( int dim, const char* nm )
144  { if ( dim < 2 ) (dim ? dim1nm_ : dim0nm_) = nm; }
145 
146  float value( float x1, float x2 ) const
147  { return gtVal( x1, x2 ); }
148  virtual float value( const TypeSet<float>& v ) const
149  { return gtVal( v[0], v[1] ); }
150 
151  inline void drawRandomPos( float& x1, float& x2 ) const
152  { drwRandPos( x1, x2 ); }
153  virtual void drawRandomPos( TypeSet<float>& v ) const
154  { v.setSize(2); drwRandPos( v[0], v[1] ); }
155 
158 
159 protected:
160 
161  ProbDenFunc2D( const char* vnm0="Dim 0",
162  const char* vnm1="Dim 1" )
163  : dim0nm_(vnm0), dim1nm_(vnm1) {}
165  : ProbDenFunc(pdf)
166  , dim0nm_(pdf.dim0nm_)
167  , dim1nm_(pdf.dim1nm_) {}
168  ProbDenFunc2D& operator =(const ProbDenFunc2D&);
169 
170  virtual float gtVal(float,float) const = 0;
171  virtual void drwRandPos(float&,float&) const = 0;
172 
173 };
174 
175 
ProbDenFunc::fillPar
virtual void fillPar(IOPar &) const =0
NamedObject
object with a name.
Definition: namedobj.h:42
Strat::init
void init()
ProbDenFunc2D::value
virtual float value(const TypeSet< float > &v) const
Definition: probdenfunc.h:148
ProbDenFunc::prepareRandDrawing
virtual void prepareRandDrawing() const
Definition: probdenfunc.h:61
ProbDenFunc1D::drwRandPos
virtual void drwRandPos(float &) const =0
ProbDenFunc1D::nrDims
virtual int nrDims() const
Definition: probdenfunc.h:95
ProbDenFunc2D::dim0nm_
BufferString dim0nm_
Definition: probdenfunc.h:156
ProbDenFunc::copyFrom
virtual void copyFrom(const ProbDenFunc &)=0
ProbDenFunc::setUOMSymbol
void setUOMSymbol(int dim, const char *)
ProbDenFunc1D::dimName
virtual const char * dimName(int) const
Definition: probdenfunc.h:96
ProbDenFunc2D::setDimName
virtual void setDimName(int dim, const char *nm)
Definition: probdenfunc.h:143
ProbDenFunc::~ProbDenFunc
virtual ~ProbDenFunc()
Definition: probdenfunc.h:35
ProbDenFunc::value
virtual float value(const TypeSet< float > &) const =0
ProbDenFunc2D::copyFrom
virtual void copyFrom(const ProbDenFunc &pdf)
Definition: probdenfunc.h:137
ProbDenFunc2D::drawRandomPos
virtual void drawRandomPos(TypeSet< float > &v) const
Definition: probdenfunc.h:153
ProbDenFunc::sKeyNrDim
static const char * sKeyNrDim()
ProbDenFunc::usePar
virtual bool usePar(const IOPar &)=0
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
od_istream
OD class for stream read common access to the std::cin.
Definition: od_istream.h:24
namedobj.h
ProbDenFunc::canScale
virtual bool canScale() const
Definition: probdenfunc.h:46
ProbDenFunc1D::drawRandomPos
void drawRandomPos(float &v) const
Definition: probdenfunc.h:107
ProbDenFunc::getTypeStr
virtual const char * getTypeStr() const =0
ProbDenFunc1D::ProbDenFunc1D
ProbDenFunc1D(const ProbDenFunc1D &pdf)
Definition: probdenfunc.h:118
ProbDenFunc2D
Probability Density Function for two dimensional datasets.
Definition: probdenfunc.h:134
ProbDenFunc::isCompatibleWith
virtual bool isCompatibleWith(const ProbDenFunc &) const
ProbDenFunc2D::ProbDenFunc2D
ProbDenFunc2D(const char *vnm0="Dim 0", const char *vnm1="Dim 1")
Definition: probdenfunc.h:161
ProbDenFunc2D::value
float value(float x1, float x2) const
Definition: probdenfunc.h:146
ProbDenFunc::getUOMSymbol
const char * getUOMSymbol(int dim) const
NamedObject::name
virtual const name_type & name() const
Definition: namedobj.h:54
ProbDenFunc::dimName
virtual const char * dimName(int dim) const =0
ProbDenFunc2D::drawRandomPos
void drawRandomPos(float &x1, float &x2) const
Definition: probdenfunc.h:151
ProbDenFunc::drawRandomPos
virtual void drawRandomPos(TypeSet< float > &) const =0
ProbDenFunc::isEq
virtual bool isEq(const ProbDenFunc &) const =0
already checked for type, name and dim names
ProbDenFunc2D::gtVal
virtual float gtVal(float, float) const =0
ProbDenFunc::clone
virtual ProbDenFunc * clone() const =0
ProbDenFunc::readBulk
virtual bool readBulk(od_istream &, bool binary)
Definition: probdenfunc.h:54
ProbDenFunc1D::varName
virtual const char * varName() const
Definition: probdenfunc.h:100
ProbDenFunc::nrDims
virtual int nrDims() const =0
ProbDenFunc::copyUOMFrom
void copyUOMFrom(const ProbDenFunc &)
ProbDenFunc
Base class for Probability Density Functions.
Definition: probdenfunc.h:31
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
ProbDenFunc2D::dimName
virtual const char * dimName(int) const
ProbDenFunc1D::value
float value(float v) const
Definition: probdenfunc.h:103
ProbDenFunc::writeBulk
virtual void writeBulk(od_ostream &, bool binary) const
Definition: probdenfunc.h:53
ProbDenFunc2D::dim1nm_
BufferString dim1nm_
Definition: probdenfunc.h:157
ProbDenFunc2D::drwRandPos
virtual void drwRandPos(float &, float &) const =0
ProbDenFunc::readUOMFromPar
void readUOMFromPar(const IOPar &)
od_iosfwd.h
ProbDenFunc1D::value
virtual float value(const TypeSet< float > &v) const
Definition: probdenfunc.h:104
ProbDenFunc::getIndexTableFor
void getIndexTableFor(const ProbDenFunc &pdf, TypeSet< int > &tbl) const
tbl[0] tells what my index is for pdf's index '0'
ProbDenFunc1D::averagePos
virtual float averagePos(int) const
Definition: probdenfunc.h:102
ProbDenFunc::isEqual
virtual bool isEqual(const ProbDenFunc &) const
ProbDenFunc1D::copyFrom
virtual void copyFrom(const ProbDenFunc &pdf)
Definition: probdenfunc.h:91
ProbDenFunc2D::ProbDenFunc2D
ProbDenFunc2D(const ProbDenFunc2D &pdf)
Definition: probdenfunc.h:164
ProbDenFunc1D::drawRandomPos
virtual void drawRandomPos(TypeSet< float > &v) const
Definition: probdenfunc.h:109
ProbDenFunc::cleanup
void cleanup()
ProbDenFunc1D::gtVal
virtual float gtVal(float) const =0
ProbDenFunc1D::setDimName
virtual void setDimName(int dim, const char *nm)
Definition: probdenfunc.h:97
ProbDenFunc::scale
virtual void scale(float)
Definition: probdenfunc.h:47
ProbDenFunc::averagePos
virtual float averagePos(int dim) const =0
ProbDenFunc::ProbDenFunc
ProbDenFunc()
Definition: probdenfunc.h:72
ranges.h
ProbDenFunc2D::nrDims
virtual int nrDims() const
Definition: probdenfunc.h:141
od_ostream
OD class for stream write common access to the user log file, or std::cout in other than od_main.
Definition: od_ostream.h:26
ProbDenFunc1D::ProbDenFunc1D
ProbDenFunc1D(const char *vnm="")
Definition: probdenfunc.h:116
ProbDenFunc1D
Probability Density Function for one dimensional datasets.
Definition: probdenfunc.h:88
ProbDenFunc::normFac
virtual float normFac() const
Definition: probdenfunc.h:48
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
ProbDenFunc::setDimName
virtual void setDimName(int dim, const char *)=0
ProbDenFunc1D::gtAvgPos
virtual float gtAvgPos() const =0
TypeSet< float >
ProbDenFunc::init
void init()
ProbDenFunc1D::varnm_
BufferString varnm_
Definition: probdenfunc.h:112
ProbDenFunc::ProbDenFunc
ProbDenFunc(const ProbDenFunc &)

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B.V. 1995-2021