 |
OpendTect
6.6
|
Go to the documentation of this file.
62 inline bool isRoughlySymmetrical(
bool mustbearound0=
false)
const;
66 bool limitspikes=
false)
const;
69 inline void getAvgStdRMS(VT&,VT&,VT&)
const;
90 inline void normalise(
bool in_the_math_sense=
true);
92 inline bool deSpike(VT ratioaboverg=VT(0.4));
107 template <
class VT>
inline
111 const int sz = distrib_.data_.size();
115 const VT divby = in_the_math_sense ? distrib_.cumdata_[sz-1]
117 if ( divby == VT(0) || divby == VT(1) )
120 for (
int idx=0; idx<sz; idx++ )
122 distrib_.data_[idx] /= divby;
123 distrib_.setCumData( idx );
126 if ( in_the_math_sense )
127 distrib_.cumdata_[sz-1] = VT(1);
134 template <
class VT>
inline
138 const int sz = distrib_.data_.size();
142 VT maxval = distrib_.data_[0];
143 VT runnerupval = maxval;
147 for (
int idx=1; idx<sz; idx++ )
149 const VT val = distrib_.data_[idx];
152 else if ( val > maxval )
154 runnerupval = maxval;
160 const VT unspikedvalrg = runnerupval - minval;
161 const VT spikelimit = minval + VT(1+cutoff) * unspikedvalrg;
162 if ( maxval > spikelimit )
164 distrib_.data_[idxatmax] = spikelimit;
173 template <
class VT>
inline
175 bool onlyaround0 )
const
178 int maxidx; distrib_.gtMax( &maxidx );
179 VT medpos = distrib_.medianPosition();
180 VT diff = medpos - distrib_.sampling_.atIndex( maxidx );
183 if ( diff < distrib_.sampling_.step )
187 if ( medpos > -distrib_.sampling_.step
188 && medpos < distrib_.sampling_.step )
196 template <
class VT>
inline
198 bool limitspikes )
const
200 xvals.setEmpty(); yvals.setEmpty();
207 xvals, yvals,
false );
212 while ( iter.next() )
215 yvals += iter.
value();
221 template <
class VT>
inline
226 xrg.start = distrib_.sampling_.start;
227 const int sz = distrib_.data_.size();
230 xrg.stop = xrg.start;
231 yrg.start = yrg.stop = 0;
235 xrg.stop = distrib_.sampling_.atIndex( sz-1 );
236 yrg.start = yrg.stop = distrib_.data_[0];
237 for (
int idx=1; idx<sz; idx++ )
239 const VT val = distrib_.data_[idx];
240 if ( val > yrg.stop )
242 else if ( val < yrg.start )
249 template <
class VT>
inline
251 VT& stdev, VT& rms )
const
254 const int sz = distrib_.data_.size();
256 { avg = rms = stdev = VT(0);
return; }
257 avg = rms = distrib_.data_[0]; stdev = VT(0);
265 VT sum_x, sum_xx, sum_w, sum_wx, sum_wxx;
266 sum_x = sum_xx = sum_w = sum_wx = sum_wxx = VT(0);
268 for (
int idx=0; idx<sz; idx++ )
270 const VT x = distrib_.sampling_.atIndex( idx );
271 const VT wt = distrib_.data_[idx];
272 sum_x += x; sum_xx += x * x;
273 sum_w += wt; sum_wx += wt * x; sum_wxx += wt * x * x;
279 avg = sum_wx / sum_w;
281 const VT var = (sum_wxx - (sum_wx * sum_wx / sum_w))
282 / ( ((sz-1) * sum_w) / sz );
283 stdev = var > VT(0) ?
Math::Sqrt( var ) : VT(0);
287 template <
class VT>
inline
296 template <
class VT>
inline
302 distrib_.cumdata_.setSize( distrib_.data_.size() );
303 for (
int idx=0; idx<distrib_.cumdata_.size(); idx++ )
304 distrib_.setCumData( idx );
TypeSet< VT > cumdata_
Definition: datadistribution.h:98
FixedString Sampling()
Definition: keystrs.h:130
TypeSet< VT > data_
Definition: datadistribution.h:97
Sharable data distribution. Sampling defaults to 0 step 1.
Definition: datadistribution.h:43
void set(const char *ky, const char *val)
bool get(const char *, short &) const
#define mLockMonitorable4Read(obj)
Definition: monitor.h:54
bool deSpike(VT ratioaboverg=VT(0.4))
Definition: datadistributiontools.h:135
FixedString Data()
Definition: keystrs.h:52
idx_type curidx_
Definition: monitoriter.h:67
DataDistributionIter(const DataDistributionIter &oth)
Definition: datadistributiontools.h:29
static ChangeType cDataChange()
Definition: datadistribution.h:86
#define mSendMonitorableEntireObjChgNotif(obj)
Definition: monitor.h:64
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
void normalise(bool in_the_math_sense=true)
if !math, sets max to 1
Definition: datadistributiontools.h:108
Definition: datadistribution.h:18
VT cumValue() const
Definition: datadistributiontools.h:39
bool isValid() const
Definition: monitoriter.h:51
#define mLockMonitorable4Write(obj)
Definition: monitor.h:56
VT position() const
Definition: datadistributiontools.h:42
VT value() const
Definition: datadistributiontools.h:36
base class for MonitoredObject iterators. Inherit from one of its subclasses.
Definition: monitoriter.h:32
static IDType cUnspecChgID()
Definition: monitoredobject.h:109
DataDistribution< VT > DistribType
Definition: datadistributiontools.h:25
DataDistributionChanger(DistribType &d)
Definition: datadistributiontools.h:87
DataDistributionIter(const DistribType &d)
Definition: datadistributiontools.h:27
#define mClass(module)
Definition: commondefs.h:181
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:174
DistribType & distrib_
Definition: datadistributiontools.h:101
void usePar(const IOPar &)
Definition: datadistributiontools.h:297
Definition: datadistribution.h:20
const MonitoredObject & monitored() const
Definition: monitoriter.h:43
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:274
DataDistribution< VT > DistribType
Definition: datadistributiontools.h:85
MonitorableIterBase< int > base_type
Definition: datadistributiontools.h:24
base class for const MonitoredObject iterator.
Definition: monitoriter.h:84
#define mSendMonitorableChgNotif(obj, typ, id)
Definition: monitor.h:62
DataDistributionIter & operator=(const DataDistributionIter &)=delete
bool isValid() const
Definition: datadistributiontools.h:35
Interval of values.
Definition: commontypes.h:30
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
const DistribType & distrib() const
Definition: datadistributiontools.h:31
Generated at
for the OpendTect
seismic interpretation project.
Copyright (C): dGB Beheer B.V. 1995-2021