OpendTect  6.6
sampledprobdenfunc.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 
21 
29 {
30 public:
31  virtual ~ArrayNDProbDenFunc() { delete [] cumbins_; }
33 
34  int size( int dim ) const
35  { return getArrND().info().getSize(dim); }
37  { return getArrND().info().getTotalSz(); }
38 
39  virtual const ArrayND<float>& getData() const
40  { return getArrND(); }
42  { return const_cast<ArrayND<float>&>(getArrND()); }
43  virtual ArrayND<float>* getArrClone() const = 0;
44 
45  virtual SamplingData<float> sampling( int dim ) const
46  { return getSampling(dim); }
47  virtual SamplingData<float>& sampling( int dim )
48  { return const_cast<SamplingData<float>&>(
49  getSampling(dim)); }
50 
51  void fillPar(IOPar&) const;
52  bool usePar(const IOPar&);
53  void writeBulkData(od_ostream&,bool) const;
54  bool readBulkData(od_istream&,bool);
55 
56  float getAveragePos(int dim) const;
57  static float findAveragePos(const float*,int,float grandtotal);
58 
59 protected:
61  : cumbins_(nullptr) {}
63  : cumbins_(nullptr) { *this = oth; }
64 
65  virtual const ArrayND<float>& getArrND() const = 0;
66  virtual const SamplingData<float>& getSampling(int) const = 0;
67  virtual float getNormFac() const;
68  virtual void doScale(float);
69  virtual bool gtIsEq(const ProbDenFunc&) const;
70 
71  mutable float* cumbins_;
73 
74  void prepRndDrw() const;
75  void fillCumBins() const;
77  od_uint64 getBinPos(float) const;
78 
79 };
80 
81 
82 #define mDefArrayNDProbDenFuncFns(nm) \
83  virtual nm##ProbDenFunc* clone() const \
84  { return new nm##ProbDenFunc(*this); } \
85  static const char* typeStr() { return #nm; } \
86  virtual const char* getTypeStr() const { return typeStr(); } \
87  virtual float normFac() const { return getNormFac();}\
88  virtual bool canScale() const { return true; } \
89  virtual void scale( float f ) { doScale(f); } \
90  virtual void prepareRandDrawing() const { prepRndDrw(); } \
91  virtual bool isEq( const ProbDenFunc& oth ) const \
92  { return gtIsEq(oth); }
93 
94 
100  , public ArrayNDProbDenFunc
101 {
102 public:
103 
107  Sampled1DProbDenFunc(const float*,int);
110  virtual void copyFrom(const ProbDenFunc&);
112 
113  virtual void fillPar(IOPar&) const;
114  virtual bool usePar(const IOPar&);
115  virtual void writeBulk(od_ostream&,bool binary) const;
116  virtual bool readBulk(od_istream&,bool binary);
117  virtual ArrayND<float>* getArrClone() const
118  { return new Array1DImpl<float>(bins_); }
119 
122 
123 protected:
124 
125  virtual const ArrayND<float>& getArrND() const { return bins_;}
126  virtual const SamplingData<float>& getSampling(int) const { return sd_; }
127 
128  virtual float gtAvgPos() const;
129  virtual float gtVal(float) const;
130  virtual void drwRandPos(float&) const;
131 
132 };
133 
134 
140  , public ArrayNDProbDenFunc
141 {
142 public:
143 
148  virtual void copyFrom(const ProbDenFunc&);
150 
151  virtual void fillPar(IOPar&) const;
152  virtual bool usePar(const IOPar&);
153  virtual void writeBulk(od_ostream&,bool binary) const;
154  virtual bool readBulk(od_istream&,bool binary);
155  virtual ArrayND<float>* getArrClone() const
156  { return new Array2DImpl<float>(bins_); }
157  virtual float averagePos( int dim ) const
158  { return getAveragePos( dim ); }
159 
163 
164 protected:
165 
166  virtual const ArrayND<float>& getArrND() const { return bins_;}
167  virtual const SamplingData<float>& getSampling( int d ) const
168  { return d ? sd1_ : sd0_; }
169 
170  virtual float gtVal(float,float) const;
171  virtual void drwRandPos(float&,float&) const;
172 
173 };
174 
175 
183  , public ArrayNDProbDenFunc
184 {
185 public:
186 
187  SampledNDProbDenFunc(int nrdims);
191  virtual void copyFrom(const ProbDenFunc&);
193 
194  virtual int nrDims() const { return bins_.info().getNDim(); }
195  virtual const char* dimName(int) const;
196  virtual void setDimName( int dim, const char* nm )
197  { *dimnms_[dim] = nm; }
198  virtual float averagePos( int dim ) const
199  { return getAveragePos( dim ); }
200  virtual float value(const TypeSet<float>&) const;
201  virtual void drawRandomPos(TypeSet<float>&) const;
202  virtual ArrayND<float>* getArrClone() const
203  { return new ArrayNDImpl<float>(bins_); }
204 
205  virtual void fillPar(IOPar&) const;
206  virtual bool usePar(const IOPar&);
207  virtual void writeBulk(od_ostream&,bool binary) const;
208  virtual bool readBulk(od_istream&,bool binary);
209 
213 
214 protected:
215 
216  virtual const ArrayND<float>& getArrND() const
217  { return bins_;}
218  virtual const SamplingData<float>& getSampling( int d ) const
219  { return sds_[d]; }
220 
221 public:
222 
224 
225 };
226 
227 
ArrayNDProbDenFunc::size
int size(int dim) const
Definition: sampledprobdenfunc.h:34
od_uint64
#define od_uint64
Definition: plftypes.h:36
probdenfunc.h
Sampled1DProbDenFunc
One dimensional PDF based on binned data.
Definition: sampledprobdenfunc.h:101
SampledNDProbDenFunc::usePar
virtual bool usePar(const IOPar &)
SampledNDProbDenFunc::averagePos
virtual float averagePos(int dim) const
Definition: sampledprobdenfunc.h:198
Sampled2DProbDenFunc::sd1_
SamplingData< float > sd1_
Definition: sampledprobdenfunc.h:161
ArrayNDProbDenFunc::cumbins_
float * cumbins_
Definition: sampledprobdenfunc.h:71
BufferStringSet
Set of BufferString objects.
Definition: bufstringset.h:26
Sampled2DProbDenFunc::drwRandPos
virtual void drwRandPos(float &, float &) const
Array1DImpl< float >
SampledNDProbDenFunc::getSampling
virtual const SamplingData< float > & getSampling(int d) const
Definition: sampledprobdenfunc.h:218
Sampled1DProbDenFunc::gtAvgPos
virtual float gtAvgPos() const
Sampled1DProbDenFunc::Sampled1DProbDenFunc
Sampled1DProbDenFunc(const TypeSet< float > &)
ArrayNDProbDenFunc::findAveragePos
static float findAveragePos(const float *, int, float grandtotal)
ArrayNDProbDenFunc::getRandBin
od_uint64 getRandBin() const
ArrayNDProbDenFunc::writeBulkData
void writeBulkData(od_ostream &, bool) const
SampledNDProbDenFunc::getArrND
virtual const ArrayND< float > & getArrND() const
Definition: sampledprobdenfunc.h:216
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
Sampled2DProbDenFunc::getArrND
virtual const ArrayND< float > & getArrND() const
Definition: sampledprobdenfunc.h:166
od_istream
OD class for stream read common access to the std::cin.
Definition: od_istream.h:24
Sampled1DProbDenFunc::Sampled1DProbDenFunc
Sampled1DProbDenFunc(const Array1D< float > &)
Sampled1DProbDenFunc::drwRandPos
virtual void drwRandPos(float &) const
samplingdata.h
usePar
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
ArrayNDProbDenFunc::~ArrayNDProbDenFunc
virtual ~ArrayNDProbDenFunc()
Definition: sampledprobdenfunc.h:31
SampledNDProbDenFunc::SampledNDProbDenFunc
SampledNDProbDenFunc(const ArrayND< float > &)
SampledNDProbDenFunc::drawRandomPos
virtual void drawRandomPos(TypeSet< float > &) const
ArrayNDProbDenFunc::getData
virtual const ArrayND< float > & getData() const
Definition: sampledprobdenfunc.h:39
ArrayNDProbDenFunc::readBulkData
bool readBulkData(od_istream &, bool)
Sampled1DProbDenFunc::getArrND
virtual const ArrayND< float > & getArrND() const
Definition: sampledprobdenfunc.h:125
ProbDenFunc2D
Probability Density Function for two dimensional datasets.
Definition: probdenfunc.h:134
Array1D< float >
arrayndimpl.h
SampledNDProbDenFunc::getArrClone
virtual ArrayND< float > * getArrClone() const
Definition: sampledprobdenfunc.h:202
Sampled2DProbDenFunc::sd0_
SamplingData< float > sd0_
Definition: sampledprobdenfunc.h:160
SampledNDProbDenFunc::value
virtual float value(const TypeSet< float > &) const
Sampled2DProbDenFunc::getSampling
virtual const SamplingData< float > & getSampling(int d) const
Definition: sampledprobdenfunc.h:167
SampledNDProbDenFunc::dimName
virtual const char * dimName(int) const
Sampled2DProbDenFunc::Sampled2DProbDenFunc
Sampled2DProbDenFunc(const Sampled2DProbDenFunc &)
ArrayNDProbDenFunc::prepRndDrw
void prepRndDrw() const
ArrayNDProbDenFunc::ArrayNDProbDenFunc
ArrayNDProbDenFunc(const ArrayNDProbDenFunc &oth)
Definition: sampledprobdenfunc.h:62
Sampled2DProbDenFunc::bins_
Array2DImpl< float > bins_
Definition: sampledprobdenfunc.h:162
ArrayNDProbDenFunc::getBinPos
od_uint64 getBinPos(float) const
ArrayNDProbDenFunc::sampling
virtual SamplingData< float > sampling(int dim) const
Definition: sampledprobdenfunc.h:45
Sampled1DProbDenFunc::gtVal
virtual float gtVal(float) const
ArrayNDProbDenFunc::fillCumBins
void fillCumBins() const
SampledNDProbDenFunc::sds_
TypeSet< SamplingData< float > > sds_
Definition: sampledprobdenfunc.h:210
ArrayNDProbDenFunc::doScale
virtual void doScale(float)
ArrayNDImpl< float >
Sampled2DProbDenFunc::Sampled2DProbDenFunc
Sampled2DProbDenFunc(const Array2D< float > &)
SampledNDProbDenFunc::copyFrom
virtual void copyFrom(const ProbDenFunc &)
ArrayNDProbDenFunc::gtIsEq
virtual bool gtIsEq(const ProbDenFunc &) const
Sampled1DProbDenFunc::getSampling
virtual const SamplingData< float > & getSampling(int) const
Definition: sampledprobdenfunc.h:126
SampledNDProbDenFunc::SampledNDProbDenFunc
SampledNDProbDenFunc()
SamplingData< float >
ArrayNDProbDenFunc::fillPar
void fillPar(IOPar &) const
ArrayNDProbDenFunc::getArrClone
virtual ArrayND< float > * getArrClone() const =0
SampledNDProbDenFunc::fillPar
virtual void fillPar(IOPar &) const
SampledNDProbDenFunc::dimnms_
BufferStringSet dimnms_
Definition: sampledprobdenfunc.h:212
SampledNDProbDenFunc::bins_
ArrayNDImpl< float > bins_
Definition: sampledprobdenfunc.h:211
SampledNDProbDenFunc::setDimName
virtual void setDimName(int dim, const char *nm)
Definition: sampledprobdenfunc.h:196
fillPar
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:174
ArrayNDProbDenFunc::getNormFac
virtual float getNormFac() const
ProbDenFunc
Base class for Probability Density Functions.
Definition: probdenfunc.h:31
bufstringset.h
Array2DImpl< float >
Sampled1DProbDenFunc::sd_
SamplingData< float > sd_
Definition: sampledprobdenfunc.h:120
ArrayNDProbDenFunc::usePar
bool usePar(const IOPar &)
SampledNDProbDenFunc::SampledNDProbDenFunc
SampledNDProbDenFunc(const SampledNDProbDenFunc &)
SampledNDProbDenFunc
Multi-dimensional PDF based on binned data.
Definition: sampledprobdenfunc.h:184
ArrayNDProbDenFunc::getAveragePos
float getAveragePos(int dim) const
ArrayND< float >
ArrayNDProbDenFunc::avgpos_
TypeSet< float > avgpos_
Definition: sampledprobdenfunc.h:72
SampledNDProbDenFunc::writeBulk
virtual void writeBulk(od_ostream &, bool binary) const
Sampled1DProbDenFunc::copyFrom
virtual void copyFrom(const ProbDenFunc &)
ArrayNDProbDenFunc::sampling
virtual SamplingData< float > & sampling(int dim)
Definition: sampledprobdenfunc.h:47
Sampled2DProbDenFunc::Sampled2DProbDenFunc
Sampled2DProbDenFunc()
ArrayNDProbDenFunc::getArrND
virtual const ArrayND< float > & getArrND() const =0
Sampled2DProbDenFunc::averagePos
virtual float averagePos(int dim) const
Definition: sampledprobdenfunc.h:157
ArrayNDProbDenFunc::ArrayNDProbDenFunc
ArrayNDProbDenFunc()
Definition: sampledprobdenfunc.h:60
Sampled1DProbDenFunc::Sampled1DProbDenFunc
Sampled1DProbDenFunc(const Sampled1DProbDenFunc &)
ArrayNDProbDenFunc::getSampling
virtual const SamplingData< float > & getSampling(int) const =0
Sampled2DProbDenFunc::copyFrom
virtual void copyFrom(const ProbDenFunc &)
Sampled1DProbDenFunc::Sampled1DProbDenFunc
Sampled1DProbDenFunc(const float *, int)
Sampled2DProbDenFunc
Two dimensional PDF based on binned data.
Definition: sampledprobdenfunc.h:141
ArrayNDProbDenFunc
PDF based on ArrayND implementation.
Definition: sampledprobdenfunc.h:29
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
ArrayNDProbDenFunc::totalSize
od_uint64 totalSize() const
Definition: sampledprobdenfunc.h:36
Sampled1DProbDenFunc::Sampled1DProbDenFunc
Sampled1DProbDenFunc()
SampledNDProbDenFunc::readBulk
virtual bool readBulk(od_istream &, bool binary)
ProbDenFunc1D
Probability Density Function for one dimensional datasets.
Definition: probdenfunc.h:88
Sampled1DProbDenFunc::bins_
Array1DImpl< float > bins_
Definition: sampledprobdenfunc.h:121
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
Array2D< float >
mDefArrayNDProbDenFuncFns
#define mDefArrayNDProbDenFuncFns(nm)
Definition: sampledprobdenfunc.h:82
SampledNDProbDenFunc::SampledNDProbDenFunc
SampledNDProbDenFunc(int nrdims)
ArrayNDProbDenFunc::getData
virtual ArrayND< float > & getData()
Definition: sampledprobdenfunc.h:41
TypeSet< float >
Sampled2DProbDenFunc::gtVal
virtual float gtVal(float, float) const

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