OpendTect  6.6
gaussianprobdenfunc.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 "probdenfunc.h"
17 #include "samplingdata.h"
18 #include "arrayndimpl.h"
19 #include "bufstringset.h"
20 template <class T> class Array2DMatrix;
21 namespace Stats { class NormalRandGen; }
22 
23 
24 inline float cMaxGaussianCC() { return 0.99999f; }
25 inline const char* sGaussianCCRangeErrMsg()
26 { return "Correlation coefficients should be in range <-1,1>.\n"
27  "Maximum correlation is 0.99999."; }
28 
29 #define mDefGaussianProbDenFuncFns(nm) \
30  ~nm##ProbDenFunc(); \
31  nm##ProbDenFunc& operator =(const nm##ProbDenFunc&); \
32  virtual nm##ProbDenFunc* clone() const \
33  { return new nm##ProbDenFunc(*this); } \
34  virtual void copyFrom(const ProbDenFunc&); \
35  static const char* typeStr() { return #nm; } \
36  virtual const char* getTypeStr() const { return typeStr(); } \
37  virtual void fillPar(IOPar&) const; \
38  virtual bool usePar(const IOPar&); \
39  virtual bool isEq(const ProbDenFunc&) const;
40 
41 
42 
46 {
47 public:
48 
49  Gaussian1DProbDenFunc( float exp=0, float stdev=1 )
50  : rgen_(0), exp_(exp), std_(stdev) {}
52  : rgen_(0) { *this = oth; }
53 
55 
56  float exp_;
57  float std_;
58 
59 protected:
60 
61  mutable Stats::NormalRandGen* rgen_;
62 
63  virtual float gtAvgPos() const { return exp_; }
64  virtual float gtVal(float) const;
65  virtual void drwRandPos(float&) const;
66 
67 };
68 
69 
73 {
74 public:
75 
77  : rgen0_(0), rgen1_(0)
78  , exp0_(0), exp1_(0)
79  , std0_(1), std1_(1), cc_(0) {}
81  : rgen0_(0), rgen1_(0) { *this = oth; }
82 
84 
85  virtual float averagePos( int dim ) const
86  { return dim ? exp1_ : exp0_; }
87 
88  float exp0_, exp1_;
89  float std0_, std1_;
90  float cc_;
91 
92 protected:
93 
96 
97  virtual float gtVal(float,float) const;
98  virtual void drwRandPos(float&,float&) const;
99 
100 };
101 
102 
106 {
107 public:
108 
109  GaussianNDProbDenFunc(int nrdims=3);
111  { *this = oth; }
113 
114  virtual int nrDims() const { return vars_.size(); }
115  virtual const char* dimName(int) const;
116  virtual void setDimName(int,const char*);
117  virtual float averagePos(int) const;
118 
119  void prepareRandDrawing() const;
120  virtual void drawRandomPos(TypeSet<float>&) const;
121  virtual float value(const TypeSet<float>&) const;
123 
125  {
126  public:
127 
128  VarDef( const char* nm, float e=0, float s=1 )
129  : name_(nm), exp_(e), std_(s) {}
130  bool operator ==( const VarDef& vd ) const
131  { return name_ == vd.name_; }
132 
134  float exp_;
135  float std_;
136  };
137 
139  {
140  public:
141  Corr( int i0=0, int i1=0, float cc=1 )
142  : idx0_(i0), idx1_(i1), cc_(cc) {}
143  bool operator ==( const Corr& oth ) const
144  { return (idx0_ == oth.idx0_ && idx1_ == oth.idx1_)
145  || (idx0_ == oth.idx1_ && idx1_ == oth.idx0_); }
146 
147  int idx0_, idx1_;
148  float cc_;
149 
150  };
151 
154 
155  const char* firstUncorrelated() const;
156 
157 protected:
158 
159 
163 
164 };
165 
166 
GaussianNDProbDenFunc::VarDef::exp_
float exp_
Definition: gaussianprobdenfunc.h:134
GaussianNDProbDenFunc::VarDef
Definition: gaussianprobdenfunc.h:125
sGaussianCCRangeErrMsg
const char * sGaussianCCRangeErrMsg()
Definition: gaussianprobdenfunc.h:25
Gaussian2DProbDenFunc::Gaussian2DProbDenFunc
Gaussian2DProbDenFunc(const Gaussian2DProbDenFunc &oth)
Definition: gaussianprobdenfunc.h:80
Gaussian2DProbDenFunc
Two dimensional Gaussian PDF.
Definition: gaussianprobdenfunc.h:73
probdenfunc.h
Gaussian1DProbDenFunc::drwRandPos
virtual void drwRandPos(float &) const
ObjectSet
Set of pointers to objects.
Definition: commontypes.h:31
cMaxGaussianCC
float cMaxGaussianCC()
Definition: gaussianprobdenfunc.h:24
GaussianNDProbDenFunc::dimName
virtual const char * dimName(int) const
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
Gaussian2DProbDenFunc::std1_
float std1_
Definition: gaussianprobdenfunc.h:89
Gaussian2DProbDenFunc::drwRandPos
virtual void drwRandPos(float &, float &) const
Gaussian2DProbDenFunc::rgen1_
Stats::NormalRandGen * rgen1_
Definition: gaussianprobdenfunc.h:95
GaussianNDProbDenFunc::cholesky_
Array2DMatrix< float > * cholesky_
Definition: gaussianprobdenfunc.h:162
samplingdata.h
GaussianNDProbDenFunc::Corr::cc_
float cc_
Definition: gaussianprobdenfunc.h:148
GaussianNDProbDenFunc::GaussianNDProbDenFunc
GaussianNDProbDenFunc(const GaussianNDProbDenFunc &oth)
Definition: gaussianprobdenfunc.h:110
Gaussian1DProbDenFunc
One dimensional Gaussian PDF.
Definition: gaussianprobdenfunc.h:46
ProbDenFunc2D
Probability Density Function for two dimensional datasets.
Definition: probdenfunc.h:134
GaussianNDProbDenFunc::setDimName
virtual void setDimName(int, const char *)
operator==
bool operator==(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:81
GaussianNDProbDenFunc
Multi-dimensional pure Gaussian PDF.
Definition: gaussianprobdenfunc.h:106
arrayndimpl.h
GaussianNDProbDenFunc::prepareRandDrawing
void prepareRandDrawing() const
Gaussian1DProbDenFunc::gtVal
virtual float gtVal(float) const
GaussianNDProbDenFunc::averagePos
virtual float averagePos(int) const
GaussianNDProbDenFunc::drawRandomPos
virtual void drawRandomPos(TypeSet< float > &) const
GaussianNDProbDenFunc::Corr::idx1_
int idx1_
Definition: gaussianprobdenfunc.h:147
GaussianNDProbDenFunc::value
virtual float value(const TypeSet< float > &) const
Not properly implemented because it can't be done.
GaussianNDProbDenFunc::rgens_
ObjectSet< Stats::NormalRandGen > rgens_
Definition: gaussianprobdenfunc.h:161
GaussianNDProbDenFunc::VarDef::std_
float std_
Definition: gaussianprobdenfunc.h:135
Stats::NormalRandGen
Definition: statrand.h:79
GaussianNDProbDenFunc::Corr::idx0_
int idx0_
Definition: gaussianprobdenfunc.h:147
GaussianNDProbDenFunc::VarDef::name_
BufferString name_
Definition: gaussianprobdenfunc.h:133
GaussianNDProbDenFunc::vars_
TypeSet< VarDef > vars_
Definition: gaussianprobdenfunc.h:152
ProbDenFunc
Base class for Probability Density Functions.
Definition: probdenfunc.h:31
GaussianNDProbDenFunc::corrs4vars_
ObjectSet< TypeSet< int > > corrs4vars_
Definition: gaussianprobdenfunc.h:160
mDefGaussianProbDenFuncFns
#define mDefGaussianProbDenFuncFns(nm)
Definition: gaussianprobdenfunc.h:29
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
GaussianNDProbDenFunc::Corr
Definition: gaussianprobdenfunc.h:139
Array2DMatrix
Matrix class based on Array2D. Initialized to 0.
Definition: array2dmatrix.h:32
Gaussian2DProbDenFunc::exp1_
float exp1_
Definition: gaussianprobdenfunc.h:88
Gaussian1DProbDenFunc::Gaussian1DProbDenFunc
Gaussian1DProbDenFunc(float exp=0, float stdev=1)
Definition: gaussianprobdenfunc.h:49
bufstringset.h
Gaussian1DProbDenFunc::Gaussian1DProbDenFunc
Gaussian1DProbDenFunc(const Gaussian1DProbDenFunc &oth)
Definition: gaussianprobdenfunc.h:51
GaussianNDProbDenFunc::corrs_
TypeSet< Corr > corrs_
Definition: gaussianprobdenfunc.h:153
GaussianNDProbDenFunc::VarDef::VarDef
VarDef(const char *nm, float e=0, float s=1)
Definition: gaussianprobdenfunc.h:128
GaussianNDProbDenFunc::firstUncorrelated
const char * firstUncorrelated() const
Gaussian2DProbDenFunc::gtVal
virtual float gtVal(float, float) const
Stats
Statistics.
Definition: array2dinterpol.h:27
Gaussian2DProbDenFunc::Gaussian2DProbDenFunc
Gaussian2DProbDenFunc()
Definition: gaussianprobdenfunc.h:76
Gaussian2DProbDenFunc::rgen0_
Stats::NormalRandGen * rgen0_
Definition: gaussianprobdenfunc.h:94
GaussianNDProbDenFunc::Corr::Corr
Corr(int i0=0, int i1=0, float cc=1)
Definition: gaussianprobdenfunc.h:141
GaussianNDProbDenFunc::GaussianNDProbDenFunc
GaussianNDProbDenFunc(int nrdims=3)
Gaussian2DProbDenFunc::cc_
float cc_
Definition: gaussianprobdenfunc.h:90
ProbDenFunc1D
Probability Density Function for one dimensional datasets.
Definition: probdenfunc.h:88
TypeSet< float >

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