OpendTect  6.3
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 ________________________________________________________________________
10 
11 
12 */
13 
14 #include "algomod.h"
15 #include "namedobj.h"
16 #include "ranges.h"
17 #include "od_iosfwd.h"
18 
19 
30 {
31 public:
32 
33  virtual ProbDenFunc* clone() const = 0;
34  virtual ~ProbDenFunc() {}
35  virtual void copyFrom(const ProbDenFunc&) = 0;
36  virtual bool isEqual(const ProbDenFunc&) const;
37 
38  virtual const char* getTypeStr() const = 0;
39  virtual int nrDims() const = 0;
40  virtual const char* dimName(int dim) const = 0;
41  virtual void setDimName(int dim,const char*) = 0;
42  virtual float averagePos(int dim) const = 0;
43  virtual float value(const TypeSet<float>&) const = 0;
44 
45  virtual bool canScale() const { return false;}
46  virtual void scale(float) {}
47  virtual float normFac() const { return 1; }
48 
49  // Used for file store/retrieve:
50  virtual void fillPar(IOPar&) const = 0;
51  virtual bool usePar(const IOPar&) = 0;
52  virtual void writeBulk(od_ostream&,bool binary) const {}
53  virtual bool readBulk(od_istream&,bool binary) { return true; }
54 
55  virtual bool isCompatibleWith(const ProbDenFunc&) const;
56  void getIndexTableFor(const ProbDenFunc& pdf,
57  TypeSet<int>& tbl) const;
59 
60  virtual void prepareRandDrawing() const {}
61  virtual void drawRandomPos(TypeSet<float>&) const = 0;
62  static const char* sKeyNrDim();
63 
64 protected:
65 
67  ProbDenFunc(const ProbDenFunc&);
68 
69  virtual bool isEq(const ProbDenFunc&) const = 0;
71 
72 };
73 
74 
80 {
81 public:
82 
83  virtual void copyFrom( const ProbDenFunc& pdf )
84  { varnm_ = pdf.dimName(0); setName(pdf.name()); }
85 
86  virtual int nrDims() const { return 1; }
87  virtual const char* dimName(int) const { return varName(); }
88  virtual void setDimName( int dim, const char* nm )
89  { if ( !dim ) varnm_ = nm; }
90 
91  virtual const char* varName() const { return varnm_; }
92 
93  virtual float averagePos(int) const { return gtAvgPos(); }
94  inline float value( float v ) const { return gtVal( v ); }
95  virtual float value( const TypeSet<float>& v ) const
96  { return gtVal( v[0] ); }
97 
98  inline void drawRandomPos( float& v ) const
99  { drwRandPos( v ); }
100  virtual void drawRandomPos( TypeSet<float>& v ) const
101  { v.setSize(1); drwRandPos( v[0] ); }
102 
104 
105 protected:
106 
107  ProbDenFunc1D( const char* vnm="" )
108  : varnm_(vnm) {}
110  : ProbDenFunc(pdf)
111  , varnm_(pdf.varnm_) {}
112 
113  virtual float gtAvgPos() const = 0;
114  virtual float gtVal(float) const = 0;
115  virtual void drwRandPos(float&) const = 0;
116 
117 };
118 
119 
125 {
126 public:
127 
128  virtual void copyFrom( const ProbDenFunc& pdf )
129  { dim0nm_ = pdf.dimName(0); dim1nm_ = pdf.dimName(1);
130  setName(pdf.name()); }
131 
132  virtual int nrDims() const { return 2; }
133  virtual const char* dimName(int) const;
134  virtual void setDimName( int dim, const char* nm )
135  { if ( dim < 2 ) (dim ? dim1nm_ : dim0nm_) = nm; }
136 
137  float value( float x1, float x2 ) const
138  { return gtVal( x1, x2 ); }
139  virtual float value( const TypeSet<float>& v ) const
140  { return gtVal( v[0], v[1] ); }
141 
142  inline void drawRandomPos( float& x1, float& x2 ) const
143  { drwRandPos( x1, x2 ); }
144  virtual void drawRandomPos( TypeSet<float>& v ) const
145  { v.setSize(2); drwRandPos( v[0], v[1] ); }
146 
149 
150 protected:
151 
152  ProbDenFunc2D( const char* vnm0="Dim 0",
153  const char* vnm1="Dim 1" )
154  : dim0nm_(vnm0), dim1nm_(vnm1) {}
156  : ProbDenFunc(pdf)
157  , dim0nm_(pdf.dim0nm_)
158  , dim1nm_(pdf.dim1nm_) {}
159  ProbDenFunc2D& operator =(const ProbDenFunc2D&);
160 
161  virtual float gtVal(float,float) const = 0;
162  virtual void drwRandPos(float&,float&) const = 0;
163 
164 };
void drawRandomPos(float &x1, float &x2) const
Definition: probdenfunc.h:142
#define mExpClass(module)
Definition: commondefs.h:157
virtual const char * dimName(int) const
Definition: probdenfunc.h:87
OD class for stream write common access to the user log file, or std::cout in batch progs...
Definition: od_ostream.h:25
Probability Density Function for one dimensional datasets.
Definition: probdenfunc.h:79
virtual void drawRandomPos(TypeSet< float > &v) const
Definition: probdenfunc.h:100
virtual ~ProbDenFunc()
Definition: probdenfunc.h:34
virtual void setDimName(int dim, const char *nm)
Definition: probdenfunc.h:88
Base class for Probability Density Functions.
Definition: probdenfunc.h:29
virtual void prepareRandDrawing() const
Definition: probdenfunc.h:60
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
virtual void copyFrom(const ProbDenFunc &pdf)
Definition: probdenfunc.h:128
ProbDenFunc2D(const char *vnm0="Dim 0", const char *vnm1="Dim 1")
Definition: probdenfunc.h:152
virtual float value(const TypeSet< float > &v) const
Definition: probdenfunc.h:95
ProbDenFunc1D(const ProbDenFunc1D &pdf)
Definition: probdenfunc.h:109
ProbDenFunc1D(const char *vnm="")
Definition: probdenfunc.h:107
float value(float v) const
Definition: probdenfunc.h:94
virtual void drawRandomPos(TypeSet< float > &v) const
Definition: probdenfunc.h:144
OD class for stream read.
Definition: od_istream.h:23
virtual const char * dimName(int dim) const =0
void drawRandomPos(float &v) const
Definition: probdenfunc.h:98
virtual int nrDims() const
Definition: probdenfunc.h:86
BufferString dim0nm_
Definition: probdenfunc.h:147
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
virtual float value(const TypeSet< float > &v) const
Definition: probdenfunc.h:139
BufferString dim1nm_
Definition: probdenfunc.h:148
virtual bool readBulk(od_istream &, bool binary)
Definition: probdenfunc.h:53
virtual void setDimName(int dim, const char *nm)
Definition: probdenfunc.h:134
virtual float averagePos(int) const
Definition: probdenfunc.h:93
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
Probability Density Function for two dimensional datasets.
Definition: probdenfunc.h:124
virtual float normFac() const
Definition: probdenfunc.h:47
virtual void copyFrom(const ProbDenFunc &pdf)
Definition: probdenfunc.h:83
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
object with a name.
Definition: namedobj.h:20
virtual bool setSize(size_type, T val=T())
Definition: typeset.h:267
virtual void scale(float)
Definition: probdenfunc.h:46
virtual const char * varName() const
Definition: probdenfunc.h:91
ProbDenFunc()
Definition: probdenfunc.h:66
ProbDenFunc2D(const ProbDenFunc2D &pdf)
Definition: probdenfunc.h:155
virtual const OD::String & name() const
Definition: namedobj.h:33
float value(float x1, float x2) const
Definition: probdenfunc.h:137
BufferString varnm_
Definition: probdenfunc.h:103
virtual bool canScale() const
Definition: probdenfunc.h:45
virtual void writeBulk(od_ostream &, bool binary) const
Definition: probdenfunc.h:52
virtual int nrDims() const
Definition: probdenfunc.h:132

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