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

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