33 bool dosqout=
false,
bool doabs=
false,
34 bool donormalizesum=
false,
40 , donormalizesum_(donormalizesum)
41 , dosqrtsum_(dosqrtsum)
62 template <
class ArrType,
class SumType,
class OperType,
class RetType>
70 ,
sz_(xvals.info().getTotalSz())
125 SumType sumval = 0, comp = 0;
136 if ( yiter ) yiter->setGlobalPos( start );
139 const bool hasyvals =
yarr_;
142 for (
od_int64 idx=start; idx<=stop; idx++ )
144 SumType xvalue = xvals ? xvals[idx]
145 : xstor ? xstor->
value(idx)
149 if ( xiter ) xiter->
next();
150 if ( yiter ) yiter->next();
155 if ( doshiftxvals ) xvalue +=
xshift_;
156 if ( doscalexvals ) xvalue *=
xfact_;
159 SumType yvalue = yvals ? yvals[idx]
160 : ystor ? ystor->
value(idx)
164 if ( xiter ) xiter->
next();
165 if ( yiter ) yiter->next();
170 if ( doshiftyvals ) yvalue +=
yshift_;
171 if ( doscaleyvals ) yvalue *=
yfact_;
184 const SumType t = sumval + xvalue;
185 comp = ( t - sumval ) - xvalue;
188 if ( xiter ) xiter->
next();
189 if ( yiter ) yiter->next();
192 delete xiter;
delete yiter;
205 if ( !success ||
count_ == 0 )
244 template <
class ArrType,
class SumType,
class OperType>
255 ,
sz_(xvals.info().getTotalSz())
259 , shift_(
mUdf(OperType))
284 if ( outarr_.info().getTotalSz() !=
sz_ )
297 ArrType* outvals = outarr_.getData();
308 if ( yiter ) yiter->setGlobalPos( start );
309 if ( outiter ) outiter->setGlobalPos( start );
311 const bool hasyvals =
yarr_;
313 const bool doshiftoutvals = !
mIsUdf(shift_);
314 for (
od_int64 idx=start; idx<=stop; idx++ )
316 SumType xvalue = xvals ? xvals[idx]
317 : xstor ? xstor->
value(idx)
321 if ( xiter ) xiter->
next();
322 if ( yiter ) yiter->next();
323 if ( outiter ) outiter->next();
327 if ( doscalexvals ) xvalue *=
xfact_;
330 SumType yvalue = yvals ? yvals[idx]
331 : ystor ? ystor->
value(idx)
335 if ( xiter ) xiter->
next();
336 if ( yiter ) yiter->next();
337 if ( outiter ) outiter->next();
341 if ( doscaleyvals ) yvalue *=
yfact_;
348 if ( doshiftoutvals )
351 const ArrType res =
mCast(ArrType,xvalue);
357 outarr_.setND( outiter->getPos(), res );
359 if ( xiter ) xiter->
next();
360 if ( yiter ) yiter->next();
361 if ( outiter ) outiter->next();
364 delete xiter;
delete yiter;
delete outiter;
390 template <
class ArrType,
class SumType,
class OperType,
class RetType>
396 return mUdf(RetType);
404 template <
class ArrType,
class SumType,
class OperType,
class RetType>
412 return mUdf(ArrType);
420 template <
class ArrType,
class SumType,
class OperType>
422 OperType fact, SumType shift,
bool noudf,
bool parallel )
436 template <
class ArrType,
class SumType,
class OperType>
449 template <
class ArrType,
class SumType,
class OperType>
452 bool noudf,
bool parallel )
465 template <
class ArrType,
class SumType,
class OperType>
468 bool noudf,
bool parallel )
480 template <
class ArrType,
class SumType,
class OperType,
class RetType>
483 bool noudf,
bool parallel )
491 return mUdf(RetType);
493 return sumprodexec.
getSum();
499 template <
class ArrType,
class SumType,
class OperType,
class RetType>
507 return mUdf(RetType);
509 return sumsqexec.
getSum();
515 template <
class ArrType,
class SumType,
class OperType,
class RetType>
524 return mUdf(RetType);
526 return norm2exec.
getSum();
532 template <
class ArrType,
class SumType,
class OperType,
class RetType>
541 return mUdf(RetType);
549 template <
class ArrType,
class SumType,
class OperType,
class RetType>
560 residualexec.
setScaler( (OperType)-1,
false );
562 return mUdf(RetType);
564 return residualexec.
getSum();
570 template <
class ArrType,
class SumType,
class OperType,
class RetType>
580 sumxmy2exec.
setScaler( (SumType)-1,
false );
582 return mUdf(RetType);
584 return sumxmy2exec.
getSum();
590 template <
class ArrType,
class SumType,
class OperType,
class RetType>
601 return mUdf(RetType);
603 return sumx2py2exec.
getSum();
609 template <
class ArrType,
class SumType,
class OperType,
class RetType>
619 sumx2my2exec.
setScaler( (SumType)-1,
false );
621 return mUdf(RetType);
623 return sumx2my2exec.
getSum();
629 template <
class ArrType,
class SumType,
class OperType>
631 bool noudf,
bool parallel )
633 const SumType averagevalue =
634 getAverage<ArrType,SumType,OperType,SumType>( in, noudf, parallel );
635 if (
mIsUdf(averagevalue) )
638 getScaled<ArrType,SumType,OperType>( in, &out, (OperType)1, -averagevalue,
646 template <
class ArrType,
class SumType,
class OperType>
651 return removeBias<ArrType,SumType,OperType>( inconst, inout, noudf,
656 #define mFillTrendXArray() \ 658 ArrType* trendxvals = trendx.getData(); \ 659 ValueSeries<ArrType>* trendstor = trendx.getStorage(); \ 662 for ( od_uint64 idx=0; idx<sz; idx++ ) \ 663 trendxvals[idx] = mCast(ArrType,idx); \ 665 else if ( trendstor ) \ 667 for ( od_uint64 idx=0; idx<sz; idx++ ) \ 668 trendstor->setValue(idx,mCast(ArrType,idx)); \ 672 ArrayNDIter iter( trendx.info() ); \ 676 trendx.setND( iter.getPos(), mCast(ArrType,idx) ); \ 678 } while ( iter.next() ); \ 684 template <
class ArrType,
class OperType>
687 OperType& intercept, OperType& gradient,
690 const OperType avgyvals = getAverage<ArrType,OperType,OperType,OperType>(
691 iny,
false, parallel );
695 const bool hasxvals = inx_;
699 const od_uint64 sz = iny.info().getTotalSz();
701 if ( !inxtmp->
isOK() )
702 {
delete inxtmp;
return false; }
710 const OperType avgxvals = getAverage<ArrType,OperType,OperType,OperType>(
711 *inx,
false, parallel );
713 {
if ( !hasxvals)
delete inx;
return false; }
722 numgradexec.
setShift( -avgyvals,
false );
725 denomgradexec.
setShift( -avgxvals );
728 {
if ( !hasxvals)
delete inx;
return false; }
730 gradient = numgradexec.
getSum() / denomgradexec.
getSum();
731 intercept = avgyvals - gradient * avgxvals;
742 template <
class ArrType,
class OperType>
747 if ( !trendx.
isOK() )
751 OperType intercept=0, gradient=0;
752 if ( !getInterceptGradient<ArrType,OperType>(in,&trendx,intercept,gradient,
758 getScaled<ArrType,OperType,OperType>( trendx, 0, gradient, intercept,
true,
760 getSum<ArrType,OperType,OperType>( in, trendx, out, (OperType)1,
761 (OperType)-1,
false, true );
769 template <
class ArrType,
class OperType>
774 return removeTrend<ArrType,OperType>( inconst, inout );
816 }
while( iter.next() );
842 for (
int idx=0; idx<sz; idx++ )
844 const fT val = in.
get( idx );
849 for (
int idx=0; idx<sz; idx++ )
851 const fT val = in.
get( idx );
881 float paramval=
mUdf(
float));
884 bool isOK()
const {
return window_; }
889 void setValue(
int idx,
float val) { window_[idx]=val; }
891 bool setType(
const char*,
float paramval=
mUdf(
float));
900 if ( out_ && in->
info() != out_->info() )
return false;
901 if ( in->
info() != size_ )
return false;
903 const od_int64 totalsz = size_.getTotalSz();
907 if ( indata && outdata )
909 for (
unsigned long idx = 0; idx<totalsz; idx++ )
911 Type inval = indata[idx];
912 outdata[idx] =
mIsUdf( inval ) ? inval : inval * window_[idx];
920 if ( instorage && outstorage )
922 for (
unsigned long idx = 0; idx < totalsz; idx++ )
926 mIsUdf( inval ) ? inval : inval * window_[idx] );
937 mIsUdf( inval ) ? inval : inval * window_[idx] );
939 }
while ( iter.
next() );
955 bool buildWindow(
const char* winnm,
float pval);
961 float p0,
float p1,
float p2,
962 bool posperiodic =
false )
966 float dist0 = p0 - intpos0;
967 int prevpos0 = intpos0;
976 float dist1 = p1 - intpos1;
977 int prevpos1 = intpos1;
986 float dist2 = p2 - intpos2;
987 int prevpos2 = intpos2;
996 if ( !posperiodic && ( prevpos0 < 0 || prevpos0 > size.
getSize(0) -2 ||
997 prevpos1 < 0 || prevpos1 > size.
getSize(1) -2 ||
998 prevpos2 < 0 || prevpos2 > size.
getSize(2) -2 ))
1001 if ( !posperiodic && ( !prevpos0 || prevpos0 > size.
getSize(0) -3 ||
1002 !prevpos1 || prevpos1 > size.
getSize(1) -3 ||
1003 !prevpos2 || prevpos2 > size.
getSize(2) -3 ))
1005 return linearInterpolate3D(
1006 array.
get( prevpos0 , prevpos1 , prevpos2 ),
1007 array.
get( prevpos0 , prevpos1 , prevpos2+1),
1008 array.
get( prevpos0 , prevpos1+1, prevpos2 ),
1009 array.
get( prevpos0 , prevpos1+1, prevpos2+1),
1010 array.
get( prevpos0+1, prevpos1 , prevpos2 ),
1011 array.
get( prevpos0+1, prevpos1 , prevpos2+1),
1012 array.
get( prevpos0+1, prevpos1+1, prevpos2 ),
1013 array.
get( prevpos0+1, prevpos1+1, prevpos2+1),
1014 dist0, dist1, dist2 );
1017 int firstpos0 = prevpos0 - 1;
1018 int nextpos0 = prevpos0 + 1;
1019 int lastpos0 = prevpos0 + 2;
1025 int firstpos1 = prevpos1 - 1;
1026 int nextpos1 = prevpos1 + 1;
1027 int lastpos1 = prevpos1 + 2;
1033 int firstpos2 = prevpos2 - 1;
1034 int nextpos2 = prevpos2 + 1;
1035 int lastpos2 = prevpos2 + 2;
1041 return polyInterpolate3D (
1042 array.
get( firstpos0 , firstpos1 , firstpos2 ),
1043 array.
get( firstpos0 , firstpos1 , prevpos2 ),
1044 array.
get( firstpos0 , firstpos1 , nextpos2 ),
1045 array.
get( firstpos0 , firstpos1 , lastpos2 ),
1047 array.
get( firstpos0 , prevpos1 , firstpos2 ),
1048 array.
get( firstpos0 , prevpos1 , prevpos2 ),
1049 array.
get( firstpos0 , prevpos1 , nextpos2 ),
1050 array.
get( firstpos0 , prevpos1 , lastpos2 ),
1052 array.
get( firstpos0 , nextpos1 , firstpos2 ),
1053 array.
get( firstpos0 , nextpos1 , prevpos2 ),
1054 array.
get( firstpos0 , nextpos1 , nextpos2 ),
1055 array.
get( firstpos0 , nextpos1 , lastpos2 ),
1057 array.
get( firstpos0 , lastpos1 , firstpos2 ),
1058 array.
get( firstpos0 , lastpos1 , prevpos2 ),
1059 array.
get( firstpos0 , lastpos1 , nextpos2 ),
1060 array.
get( firstpos0 , lastpos1 , lastpos2 ),
1063 array.
get( prevpos0 , firstpos1 , firstpos2 ),
1064 array.
get( prevpos0 , firstpos1 , prevpos2 ),
1065 array.
get( prevpos0 , firstpos1 , nextpos2 ),
1066 array.
get( prevpos0 , firstpos1 , lastpos2 ),
1068 array.
get( prevpos0 , prevpos1 , firstpos2 ),
1069 array.
get( prevpos0 , prevpos1 , prevpos2 ),
1070 array.
get( prevpos0 , prevpos1 , nextpos2 ),
1071 array.
get( prevpos0 , prevpos1 , lastpos2 ),
1073 array.
get( prevpos0 , nextpos1 , firstpos2 ),
1074 array.
get( prevpos0 , nextpos1 , prevpos2 ),
1075 array.
get( prevpos0 , nextpos1 , nextpos2 ),
1076 array.
get( prevpos0 , nextpos1 , lastpos2 ),
1078 array.
get( prevpos0 , lastpos1 , firstpos2 ),
1079 array.
get( prevpos0 , lastpos1 , prevpos2 ),
1080 array.
get( prevpos0 , lastpos1 , nextpos2 ),
1081 array.
get( prevpos0 , lastpos1 , lastpos2 ),
1084 array.
get( nextpos0 , firstpos1 , firstpos2 ),
1085 array.
get( nextpos0 , firstpos1 , prevpos2 ),
1086 array.
get( nextpos0 , firstpos1 , nextpos2 ),
1087 array.
get( nextpos0 , firstpos1 , lastpos2 ),
1089 array.
get( nextpos0 , prevpos1 , firstpos2 ),
1090 array.
get( nextpos0 , prevpos1 , prevpos2 ),
1091 array.
get( nextpos0 , prevpos1 , nextpos2 ),
1092 array.
get( nextpos0 , prevpos1 , lastpos2 ),
1094 array.
get( nextpos0 , nextpos1 , firstpos2 ),
1095 array.
get( nextpos0 , nextpos1 , prevpos2 ),
1096 array.
get( nextpos0 , nextpos1 , nextpos2 ),
1097 array.
get( nextpos0 , nextpos1 , lastpos2 ),
1099 array.
get( nextpos0 , lastpos1 , firstpos2 ),
1100 array.
get( nextpos0 , lastpos1 , prevpos2 ),
1101 array.
get( nextpos0 , lastpos1 , nextpos2 ),
1102 array.
get( nextpos0 , lastpos1 , lastpos2 ),
1105 array.
get( lastpos0 , firstpos1 , firstpos2 ),
1106 array.
get( lastpos0 , firstpos1 , prevpos2 ),
1107 array.
get( lastpos0 , firstpos1 , nextpos2 ),
1108 array.
get( lastpos0 , firstpos1 , lastpos2 ),
1110 array.
get( lastpos0 , prevpos1 , firstpos2 ),
1111 array.
get( lastpos0 , prevpos1 , prevpos2 ),
1112 array.
get( lastpos0 , prevpos1 , nextpos2 ),
1113 array.
get( lastpos0 , prevpos1 , lastpos2 ),
1115 array.
get( lastpos0 , nextpos1 , firstpos2 ),
1116 array.
get( lastpos0 , nextpos1 , prevpos2 ),
1117 array.
get( lastpos0 , nextpos1 , nextpos2 ),
1118 array.
get( lastpos0 , nextpos1 , lastpos2 ),
1120 array.
get( lastpos0 , lastpos1 , firstpos2 ),
1121 array.
get( lastpos0 , lastpos1 , prevpos2 ),
1122 array.
get( lastpos0 , lastpos1 , nextpos2 ),
1123 array.
get( lastpos0 , lastpos1 , lastpos2 ),
1124 dist0, dist1, dist2 );
1135 const int ndim = destsz.
getNDim();
1136 if ( ndim != srcsz.
getNDim() || ndim != copypos.
size() )
return false;
1138 for (
int idx=0; idx<ndim; idx++ )
1140 if ( !srcperiodic &&
1150 for (
int idx=0; idx<ndim; idx++ )
1152 srcposition[idx] = copypos[idx] + destposition[idx];
1158 dest.
setND( destposition.
getPos(), src.get( &srcposition[0] ));
1161 }
while ( destposition.
next() );
1169 int p0,
int p1,
int p2,
bool srcperiodic=
false )
1174 const int destsz0 = destsz.
getSize(0);
1175 const int destsz1 = destsz.
getSize(1);
1176 const int destsz2 = destsz.
getSize(2);
1178 const int srcsz0 = srcsz.
getSize(0);
1179 const int srcsz1 = srcsz.
getSize(1);
1180 const int srcsz2 = srcsz.
getSize(2);
1184 if ( p0 + destsz0 > srcsz0 ||
1185 p1 + destsz1 > srcsz1 ||
1186 p2 + destsz2 > srcsz2 )
1193 for (
int id0=0; id0<destsz0; id0++ )
1195 for (
int id1=0; id1<destsz1; id1++ )
1197 for (
int id2=0; id2<destsz2; id2++ )
1214 bool destperiodic=
false )
1219 const int ndim = destsz.
getNDim();
1220 if ( ndim != srcsz.
getNDim() || ndim != pastepos.
size() )
return false;
1222 for (
int idx=0; idx<ndim; idx++ )
1224 if ( !destperiodic &&
1237 for (
int idx=0; idx<ndim; idx++ )
1239 destposition[idx] = pastepos[idx] + srcposition[idx];
1245 dest( destposition ) = ptr[ptrpos++];
1247 }
while ( srcposition.
next() );
1255 int p0,
int p1,
bool destperiodic=
false )
1260 const int srcsz0 = srcsz.
getSize(0);
1261 const int srcsz1 = srcsz.
getSize(1);
1263 const int destsz0 = destsz.
getSize(0);
1264 const int destsz1 = destsz.
getSize(1);
1266 if ( !destperiodic )
1268 if ( p0 + srcsz0 > destsz0 ||
1269 p1 + srcsz1 > destsz1 )
1277 for (
int id0=0; id0<srcsz0; id0++ )
1279 for (
int id1=0; id1<srcsz1; id1++ )
1293 int p0,
int p1,
int p2,
1294 bool destperiodic=
false )
1299 const int srcsz0 = srcsz.
getSize(0);
1300 const int srcsz1 = srcsz.
getSize(1);
1301 const int srcsz2 = srcsz.
getSize(2);
1303 const int destsz0 = destsz.
getSize(0);
1304 const int destsz1 = destsz.
getSize(1);
1305 const int destsz2 = destsz.
getSize(2);
1307 if ( !destperiodic )
1309 if ( p0 + srcsz0 > destsz0 ||
1310 p1 + srcsz1 > destsz1 ||
1311 p2 + srcsz2 > destsz2 )
1319 for (
int id0=0; id0<srcsz0; id0++ )
1321 for (
int id1=0; id1<srcsz1; id1++ )
1323 for (
int id2=0; id2<srcsz2; id2++ )
1372 return canCopyAll() ? 0 : commontks_.nrLines();
1379 return tksout_ == tksin_ && in_.getData() &&
1380 ( out_.getData() || out_.getStorage() );
1385 if ( in_.info().getSize(0) != tksin_.nrLines() ||
1386 in_.info().getSize(1) != tksin_.nrTrcs() )
1391 if ( out_.info().getSize(0) != tksout_.nrLines() ||
1392 out_.info().getSize(1) != tksout_.nrTrcs() )
1395 if ( !outimpl || !outimpl->setSize( tksout_.nrLines(),
1396 tksout_.nrTrcs() ) )
1401 out_.setAll(
mUdf(T) );
1406 if ( out_.getData() )
1407 in_.getAll( out_.getData() );
1408 else if ( out_.getStorage() )
1409 in_.getAll( *out_.getStorage() );
1421 const bool usearrayptrs = in_.getData() && out_.getData() &&
1428 const int nrcrl = tks.
nrTrcs();
1429 const od_int64 nrbytes = nrcrl *
sizeof(T);
1432 const int startcrlidyin = tksin.
trcIdx( startcrl );
1433 const int startcrlidyout = tksout.
trcIdx( startcrl );
1434 for (
int idx=
mCast(
int,start); idx<=
mCast(
int,stop); idx++)
1437 const int inlidxin = tksin.
lineIdx( inl );
1438 const int inlidxout = tksout.
lineIdx( inl );
1442 in_.info().getOffset(inlidxin,startcrlidyin) );
1444 out_.info().getOffset(inlidxout,startcrlidyout) );
1445 OD::memCopy(outvals->
arr(),invals->
arr(),nrbytes);
1450 for (
int idy=0; idy<nrcrl; idy++ )
1453 in_.get( inlidxin, startcrlidyin+idy );
1454 out_.set( inlidxout, startcrlidyout+idy, val );
1500 #define mGetInfo() \ 1501 const Array3DInfoImpl infoin( tkzsin_.hsamp_.nrLines(), \ 1502 tkzsin_.hsamp_.nrTrcs(), tkzsin_.nrZ() ); \ 1503 const Array3DInfoImpl infoout( tkzsout_.hsamp_.nrLines(), \ 1504 tkzsout_.hsamp_.nrTrcs(), tkzsout_.nrZ() ); 1509 if ( in_.info() != infoin )
1512 if ( out_.info() != infoout && !out_.setInfo(infoout) )
1515 if ( tkzsin_.hsamp_.survid_ != tkzsout_.hsamp_.survid_ )
1518 if ( !tkzsin_.zsamp_.isCompatible(tkzsout_.zsamp_) )
1521 out_.setAll(
mUdf(T) );
1532 const int nrzout = infoout.getSize(2);
1534 zrg.
limitTo( tkzsin_.zsamp_ );
1535 const int nrztocopy = zrg.
nrSteps() + 1;
1536 const int z0in = tkzsin_.zsamp_.getIndex( zrg.
start );
1537 const int z0out = tkzsout_.zsamp_.getIndex( zrg.
start );
1540 const T* inptr = in_.getData();
1541 T* outptr = out_.getData();
1544 const bool hasarrayptr = inptr && outptr;
1545 const bool hasstorage = instor && outstor;
1546 const bool needgetset = !hasarrayptr && !hasstorage;
1549 infoout.getSize( 1 ) );
1551 iter.setGlobalPos( start );
1553 const od_int64 offsetout = start * nrzout + z0out;
1554 outptr += offsetout;
1557 for (
od_int64 idx=start; idx<=stop; idx++, iter.next(),
1558 outptr+=nrzout, validxout+=nrzout,
1561 const int inlidx = iter[0];
1562 const int crlidx = iter[1];
1567 const int inlidxin = tksin.
lineIdx( bid.lineNr() );
1568 const int crlidxin = tksin.
trcIdx( bid.trcNr() );
1569 const od_int64 offsetin = needgetset ? 0
1570 : infoin.getOffset( inlidxin, crlidxin, z0in );
1573 OD::memCopy( outptr, inptr+offsetin, nrbytes );
1575 else if ( hasstorage )
1577 for (
int idz=0; idz<nrztocopy; idz++ )
1579 outstor->setValue( validxout+idz,
1580 instor->
value(offsetin+idz));
1585 for (
int idz=0, idzin=z0in; idz<nrztocopy; idz++,
1589 in_.get( inlidxin, crlidxin, idzin );
1590 out_.set( inlidx, crlidx, idz, val );
1623 static const
char* sKeyOrder() {
return "Polynomial Order"; }
1627 const IDXABLE& valuelistj);
1634 template <
class T>
void apply(
const Coord& pos,
bool dir,T&)
const;
1652 void initOrder1(
const TypeSet<Coord>&,
1654 void initOrder2(
const TypeSet<Coord>&,
1656 void initCenter(
const TypeSet<Coord>&);
1662 template <
class IDXABLE>
inline 1665 int sz = poslist.
size();
1669 f0_ = f1_ = f2_ = f11_ = f12_ = f22_ = posc_.x_ = posc_.y_ = 0.;
1672 for (
int idx=0; idx<sz; idx++ )
1674 if ( !poslist[idx].isDefined() ||
mIsUdf(vals[idx]) )
1677 posnoudf += poslist[idx];
1678 valsnoudf += (double) vals[idx];
1681 sz = valsnoudf.
size();
1682 if ( order_ == Order2 && sz > 5 )
1683 initOrder2( posnoudf, valsnoudf );
1684 else if ( order_ == Order1 && sz > 2 )
1685 initOrder1( posnoudf, valsnoudf );
1687 initOrder0( valsnoudf );
1693 template <
class T>
inline 1699 const double fact = dir ? -1. : 1;
1700 double inp = (double) val;
1702 if ( order_ == Order0 )
1708 const double dx = pos.
x_ - posc_.x_;
1709 const double dy = pos.
y_ - posc_.y_;
1710 inp += fact * ( f1_ * dx + f2_ * dy );
1711 if ( order_ == Order1 )
1717 const double dx2 = dx * dx;
1718 const double dxy = dx * dy;
1719 const double dyy = dy * dy;
1720 inp += fact * ( f11_ * dx2 + f12_ * dxy + f22_ * dyy );
1740 , undefidxs_(undefidxs)
1748 : ParallelTask(
"Array Udf Replacer")
1751 , undefidxs_(undefidxs)
1754 , totalnr_(inp.info().getTotalSz()/inp.info().getSize(2))
1759 return tr(
"Replacing undefined values");
1770 trcssampling_ = trcssampling;
1782 undefidxs_->setEmpty();
1789 const bool isrect = tks_ && trcssampling_
1790 ? trcssampling_->isFullyRectAndReg()
1793 const int nrtrcsp = info.
getSize( inp_.get1DDim() );
1794 T* dataptr = inp_.getData();
1796 const bool hasarrayptr = dataptr;
1797 const bool hasstorage = datastor;
1798 const bool neediterator = !hasarrayptr && !hasstorage;
1799 const od_int64 offset = start * nrtrcsp;
1807 const T replval = replval_;
1808 for (
od_int64 idx=start; idx<=stop; idx++,
1811 const bool hastrcdata = isrect ?
true 1812 : trcssampling_->isValid(idx,*tks_);
1815 for (
int idz=0; idz<nrtrcsp; idz++ )
1817 const int* pos = iter ? iter->
getPos() : 0;
1818 const T val = hasarrayptr ? *dataptr
1820 ? datastor->
value( validx )
1821 : inp_.getND( pos );
1824 if ( hasarrayptr ) dataptr++;
1825 else if ( hasstorage ) validx++;
1834 *undefidxs_ += idx*nrtrcsp + idz;
1839 *dataptr++ = replval;
1840 else if ( hasstorage )
1841 datastor->
setValue( validx++, replval );
1844 inp_.setND( pos, replval );
1856 else if ( hasstorage )
1858 for (
int idz=0; idz<nrtrcsp; idz++ )
1859 datastor->
setValue( validx++, replval );
1863 for (
int idz=0; idz<nrtrcsp; idz++ )
1865 inp_.setND( iter->
getPos(), replval );
1903 , undefidxs_(undefidxs)
1905 , totalnr_(undefidxs.
size())
1920 T* outpptr = outp_.getData();
1926 const T udfval =
mUdf(T);
1928 for (
od_int64 idx=start; idx<=stop; idx++,
1931 const od_uint64 sidx = undefidxs_[idx];
1933 outpptr[sidx] = udfval;
1934 else if ( outpstor )
1935 outpstor->
setValue( sidx, udfval );
1939 outp_.setND( pos, udfval );
1964 , trcssampling_(trcssampling)
1984 const int nrtrcsp = info.
getSize( outp_.get1DDim() );
1985 T* outpptr = outp_.getData();
1987 const bool hasarrayptr = outpptr;
1988 const bool hasstorage = outstor;
1989 const od_int64 offset = start * nrtrcsp;
1997 hiter->setGlobalPos( start );
1999 for (
od_int64 idx=start; idx<=stop; idx++ )
2001 if ( trcssampling_.isValid(idx,tks_) )
2003 if ( hasarrayptr ) outpptr+=nrtrcsp;
2004 else if ( hasstorage ) validx+=nrtrcsp;
2015 else if ( hasstorage )
2017 for (
int idz=0; idz<nrtrcsp; idz++ )
2022 const int inlidx = (*hiter)[0];
2023 const int crlidx = (*hiter)[1];
2024 for (
int idz=0; idz<nrtrcsp; idz++ )
2025 outp_.set( inlidx, crlidx, idz,
mUdf(T) );
2057 , tailmute_(tailmute)
2066 return tr(
"Extracting mute positions");
2075 trcssampling_ = trcssampling;
2086 const int data1ddim = data_.get1DDim();
2087 if ( ( data1ddim != 1 && data1ddim != 2 ) ||
2088 topmute_.get1DDim() != data1ddim-1 ||
2089 tailmute_.get1DDim() != data1ddim-1 )
2092 topmute_.setAll( 0 );
2094 mCast(
int,data_.info().getTotalSz()/totalnr_);
2095 tailmute_.setAll( nrz-1 );
2102 const bool isrect = tks_ && trcssampling_
2103 ? trcssampling_->isFullyRectAndReg()
2105 const T* dataptr = data_.getData();
2106 int* topmuteptr = topmute_.getData();
2107 int* tailmuteptr = tailmute_.getData();
2111 const bool hasarrayptr = dataptr && topmuteptr &&
2113 const bool hasstorage = datastor && topmutestor &&
2115 const bool neediterator = !hasarrayptr && !hasstorage;
2117 const int zidx = data_.get1DDim();
2118 const int nrtrcsp = info.
getSize( zidx );
2119 const od_int64 offset = start * nrtrcsp;
2123 topmuteptr += start;
2124 tailmuteptr += start;
2128 const int ndim = info.
getNDim();
2129 const bool is2d = ndim == 2;
2130 const int nrlines = is2d ? 1 : info.
getSize(0);
2131 const int nrtrcs = info.
getSize( is2d ? 0 : 1 );
2138 const T zeroval =
mCast(T,0);
2143 for (
od_int64 idx=start; idx<=stop; idx++,
2146 const bool hastrcdata = isrect ?
true 2147 : trcssampling_->isValid(idx,*tks_);
2156 if ( hasstorage ) validx+=nrtrcsp;
2162 const int* hpos = hiter ? hiter->
getPos() : 0;
2165 for (
int ipos=0; ipos<ndim; ipos++ )
2166 pos[ipos] = hpos[ipos];
2170 bool allnull =
false;
2171 for (
int idz=0; idz<nrtrcsp; idz++ )
2173 if ( hiter ) pos[zidx] = idz;
2174 const float val = hasarrayptr
2177 ? datastor->
value( validx++ )
2178 : data_.getND( pos );
2179 if ( val == zeroval )
2184 *topmuteptr++ = idz;
2185 dataptr += nrtrcsp-idz-2;
2187 else if ( hasstorage )
2190 validx += nrtrcsp-idz-2;
2193 topmute_.setND( hpos, idz );
2203 *topmuteptr++ = nrtrcsp;
2204 *tailmuteptr++ = -1;
2206 else if ( hasstorage )
2208 topmutestor->
setValue( idx, nrtrcsp );
2209 tailmutestor->setValue( idx, -1 );
2213 topmute_.setND( hpos, nrtrcsp );
2214 tailmute_.setND( hpos, -1 );
2220 for (
int idz=nrtrcsp-1; idz>=0; idz-- )
2222 if ( hiter ) pos[zidx] = idz;
2223 const float val = hasarrayptr
2226 ? datastor->
value( validx-- )
2227 : data_.getND( pos );
2228 if ( val == zeroval )
2233 *tailmuteptr++ = idz;
2234 dataptr += nrtrcsp-idz+1;
2236 else if ( hasstorage )
2238 tailmutestor->setValue( idx, idz );
2239 validx += nrtrcsp-idz+1;
2242 tailmute_.setND( hpos, idz );
uiString nrDoneText() const
Definition: arrayndalgo.h:81
Array1D ( Subclass of ArrayND ) is a one dimensional array.
Definition: arraynd.h:97
bool doabs_
Definition: arrayndalgo.h:47
Definition: arrayndalgo.h:1620
const TrcKeySampling * tks_
Definition: arrayndalgo.h:1880
T * arr()
Definition: valseriesimpl.h:202
#define mExpClass(module)
Definition: commondefs.h:157
virtual uint64_t getTotalSz() const
virtual int getNDim() const =0
bool isOK() const
Definition: arrayndalgo.h:884
bool rectangular_
Definition: arrayndalgo.h:950
#define mIsUdf(val)
Use mIsUdf to check for undefinedness of simple types.
Definition: undefval.h:285
uiString message() const
Definition: arrayndalgo.h:1490
virtual T value(int64_t) const =0
static uiString sDone()
Definition: uistrings.h:302
static uiString tr(const char *text, const char *disambiguation=0, int pluralnr=-1)
Definition: paralleltask.h:65
void setYVals(const ArrayND< ArrType > &yvals)
Definition: arrayndalgo.h:266
double f2_
Definition: arrayndalgo.h:1645
mODTextTranslationClass(Array2DCopier) public
Definition: arrayndalgo.h:1340
Locks the lock, shutting out access from other threads if needed.
Definition: threadlock.h:83
Array2D< T > & out_
Definition: arrayndalgo.h:1469
static uiString sTrcFinished()
Definition: paralleltask.h:88
SumType cumsum_
Definition: arrayndalgo.h:233
const od_int64 totalnr_
Definition: arrayndalgo.h:2038
#define mDeclareAndTryAlloc(tp, var, stmt)
Creates variable, try to alloc and catch bad_alloc.
Definition: commondefs.h:251
A lock of a type that (hopefully) suits your needs. To use it, you need the Locker class...
Definition: threadlock.h:51
ArrayOperExecSetup(bool doadd=true, bool dosqinp=false, bool dosqout=false, bool doabs=false, bool donormalizesum=false, bool dosqrtsum=false)
Definition: arrayndalgo.h:32
bool isOK() const
Definition: arrayndimpl.h:66
InterpolType
Definition: mathfunc.h:153
Definition: arrayndalgo.h:1732
bool doWork(od_int64 start, od_int64 stop, int)
Definition: arrayndalgo.h:1787
void getScaled(const ArrayND< ArrType > &in, ArrayND< ArrType > *out_, OperType fact, SumType shift, bool noudf, bool parallel)
returns a scaled array
Definition: arrayndalgo.h:421
float * getValues() const
Definition: arrayndalgo.h:887
Contains the information about the size of Array3D, and in what order the data is stored (if accessab...
Definition: arrayndinfo.h:116
const ArrayND< ArrType > * yarr_
Definition: arrayndalgo.h:376
SumType shift_
Definition: arrayndalgo.h:380
Parallel task for computing the element wise operations of one array and optionally a second input ar...
Definition: arrayndalgo.h:245
#define mGlobal(module)
Definition: commondefs.h:160
const ValueSeries< T > * getStorage() const
Definition: arraynd.h:42
#define mCast(tp, v)
Definition: commondefs.h:120
Tapers the N-dimentional ArrayND with a windowFunction.
Definition: arrayndalgo.h:870
bool noudf_
Definition: arrayndalgo.h:224
void setOrder(PolyTrend::Order t)
Definition: arrayndalgo.h:1625
bool doFinish(bool success)
Definition: arrayndalgo.h:203
uiString message() const
Definition: arrayndalgo.h:1366
uiString message() const
Definition: arrayndalgo.h:264
#define od_int64
Definition: plftypes.h:34
bool dosqrtsum_
Definition: arrayndalgo.h:49
Definition: arrayndalgo.h:1957
bool set(const TypeSet< Coord > &, const IDXABLE &valuelistj)
Definition: arrayndalgo.h:1663
virtual void set(int, T)=0
const TrcKeyZSampling & tkzsin_
Definition: arrayndalgo.h:1598
Order getOrder() const
Definition: arrayndalgo.h:1632
bool doWork(od_int64 start, od_int64 stop, int)
Definition: arrayndalgo.h:1415
Threads::Lock writelock_
Definition: arrayndalgo.h:226
double f11_
Definition: arrayndalgo.h:1646
void quickAddToNrDone(int64_t loopidx)
bool removeTrend(const ArrayND< ArrType > &in, ArrayND< ArrType > &out)
Fills an ArrayND with a de-trended version of another.
Definition: arrayndalgo.h:743
Implementation of ArrayNDInfo.
Definition: arrayndinfo.h:217
Implementation of Array2D.
Definition: arrayndimpl.h:101
int nrSteps() const
Definition: ranges.h:758
bool doPrepare(int nrthreads)
Definition: arrayndalgo.h:112
Contains the information about the size of ArrayND, and in what order the data is stored (if accessab...
Definition: arrayndinfo.h:21
double f0_
Definition: arrayndalgo.h:1643
Threads::Mutex lck_
Definition: arrayndalgo.h:1883
TrcKeySampling commontks_
Definition: arrayndalgo.h:1468
OperType yfact_
Definition: arrayndalgo.h:379
BinID atIndex(int i0, int i1) const
RetType getResidual(const ArrayND< ArrType > &in1, const ArrayND< ArrType > &in2, bool noudf, bool parallel)
returns the residual differences of two arrays
Definition: arrayndalgo.h:550
float * window_
Definition: arrayndalgo.h:948
bool Array3DCopy(Array3D< T > &dest, const Array3D< T > &src, int p0, int p1, int p2, bool srcperiodic=false)
Definition: arrayndalgo.h:1168
virtual bool getArrayPos(uint64_t, int *) const
void limitTo(const BasicInterval< X > &i)
Definition: ranges.h:63
Definition: uistring.h:88
T atIndex(int) const
Definition: ranges.h:679
ValueSeries of offsets.
Definition: valseriesimpl.h:22
virtual void setND(const int *, T)=0
mODTextTranslationClass(ArrayUdfValRestorer) public
Definition: arrayndalgo.h:1898
double f1_
Definition: arrayndalgo.h:1644
int lineIdx(Pos::LineID) const
Definition: trckeysampling.h:216
od_uint64 sz_
Definition: arrayndalgo.h:372
BufferString windowtypename_
Definition: arrayndalgo.h:952
ParallelTask(const char *nm=0)
void setReplacementValue(T val)
Definition: arrayndalgo.h:1764
unsigned int Abs(unsigned int i)
Definition: math2.h:78
RetType getSumX2MY2(const ArrayND< ArrType > &in1, const ArrayND< ArrType > &in2, bool noudf, bool parallel)
returns the sum of subtracted squarred amplitudes of two arrays
Definition: arrayndalgo.h:610
virtual int get1DDim() const
Definition: arraynd.h:354
od_int64 nrIterations() const
Definition: arrayndalgo.h:108
#define mDeclareEnumUtils(enm)
Some utilities surrounding the often needed enum <-> string table.
Definition: enums.h:188
virtual void set(int, int, T)=0
FixedString None()
Definition: keystrs.h:90
Generalization of a task that can be run in parallel.
Definition: paralleltask.h:64
mODTextTranslationClass(CumArrOperExec)
const TrcKeySampling & tks_
Definition: arrayndalgo.h:2035
ArrayND< T > & outp_
Definition: arrayndalgo.h:1949
static uiString sInline(int num=1)
Definition: uistrings.h:347
Definition: arrayndalgo.h:29
bool Array2DPaste(Array2D< T > &dest, const Array2D< T > &src, int p0, int p1, bool destperiodic=false)
Definition: arrayndalgo.h:1254
od_int64 nrIterations() const
Definition: arrayndalgo.h:278
mODTextTranslationClass(ArrayUdfValReplacer) public
Definition: arrayndalgo.h:1733
virtual int getSize(int dim) const =0
const ArrayOperExecSetup & setup_
Definition: arrayndalgo.h:371
Transfers the common samples from one 3D array to another.
Definition: arrayndalgo.h:1476
bool dosqout_
Definition: arrayndalgo.h:46
RetType getSum() const
Definition: arrayndalgo.h:104
bool doadd_
Definition: arrayndalgo.h:44
uiString message() const
Definition: arrayndalgo.h:1757
RetType getSumXMY2(const ArrayND< ArrType > &in1, const ArrayND< ArrType > &in2, bool noudf, bool parallel)
returns the sum of squarred differences of two arrays
Definition: arrayndalgo.h:571
#define mNINT32(x)
Definition: commondefs.h:48
const T * getData() const
Definition: arraynd.h:51
const TrcKeySampling & tksin_
Definition: arrayndalgo.h:1466
const Array2D< T > & in_
Definition: arrayndalgo.h:1465
virtual T getND(const int *) const =0
OperType xfact_
Definition: arrayndalgo.h:231
WindowType
Definition: arrayndalgo.h:873
uiString message() const
Definition: arrayndalgo.h:1971
virtual const Array3DInfo & info() const =0
bool apply(ArrayND< Type > *in, ArrayND< Type > *out_=0) const
Definition: arrayndalgo.h:895
float getParamVal() const
Definition: arrayndalgo.h:886
bool doPrepare(int)
Definition: arrayndalgo.h:282
Array2D ( Subclass of ArrayND ) is a two dimensional array.
Definition: arraynd.h:127
bool operator==(const NamedCallBacker &oth) const
Definition: namedobj.h:58
Horizontal sampling (inline and crossline range and steps).
Definition: trckeysampling.h:25
RetType getSumProduct(const ArrayND< ArrType > &in1, const ArrayND< ArrType > &in2, bool noudf, bool parallel)
returns the sum of product amplitudes between two vectors
Definition: arrayndalgo.h:481
Array3D< T > & out_
Definition: arrayndalgo.h:1603
od_uint64 sz_
Definition: arrayndalgo.h:223
SumType yshift_
Definition: arrayndalgo.h:230
RetType getNorm2(const ArrayND< ArrType > &in, bool noudf, bool parallel)
return the Norm-2 of the array
Definition: arrayndalgo.h:516
static uiString sPosFinished()
Definition: paralleltask.h:87
Definition: arrayndalgo.h:26
float paramval_
Definition: arrayndalgo.h:953
RetType getRMS(const ArrayND< ArrType > &in, bool noudf, bool parallel)
return the RMS of the array
Definition: arrayndalgo.h:533
bool ArrayNDPaste(ArrayND< T > &dest, const ArrayND< T > &src, const TypeSet< int > &pastepos, bool destperiodic=false)
Definition: arrayndalgo.h:1212
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:270
double f22_
Definition: arrayndalgo.h:1648
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:32
Interface to a series of values.
Definition: odmemory.h:15
const ArrayND< ArrType > * yarr_
Definition: arrayndalgo.h:228
bool isDefined() const
Definition: geometry.h:477
od_uint64 count_
Definition: arrayndalgo.h:234
bool setGlobalPos(int64_t)
Definition: arraynd.h:260
void setSampling(const TrcKeySampling &tks, const PosInfo::CubeData *trcssampling)
Definition: arrayndalgo.h:1766
int trcIdx(Pos::TraceID) const
Definition: trckeysampling.h:224
double f12_
Definition: arrayndalgo.h:1647
const ArrayND< ArrType > & xarr_
Definition: arrayndalgo.h:375
const TrcKeyZSampling & tkzsout_
Definition: arrayndalgo.h:1599
mODTextTranslationClass(Array3DCopier) public
Definition: arrayndalgo.h:1477
bool ArrayNDCopy(ArrayND< T > &dest, const ArrayND< T > &src, const TypeSet< int > ©pos, bool srcperiodic=false)
Definition: arrayndalgo.h:1129
T x_
Definition: geometry.h:80
bool doPrepare(int)
Definition: arrayndalgo.h:1383
virtual void set(int, int, int, T)=0
void memValueSet(T *, T, int64_t, TaskRunner *taskrun=0)
Definition: odmemory.h:501
bool Array3DPaste(Array3D< T > &dest, const Array3D< T > &src, int p0, int p1, int p2, bool destperiodic=false)
Definition: arrayndalgo.h:1292
SumType xshift_
Definition: arrayndalgo.h:229
OperType yfact_
Definition: arrayndalgo.h:232
mDeclareEnumUtils(Order) static const char *sKeyOrder()
Definition: arrayndalgo.h:1621
bool removeBias(const ArrayND< ArrType > &in, ArrayND< ArrType > &out, bool noudf, bool parallel)
Fills an ArrayND with an unbiased version of another.
Definition: arrayndalgo.h:630
bool doPrepare(int)
Definition: arrayndalgo.h:1779
#define mDynamicCastGet(typ, out, in)
Definition: commondefs.h:123
const ArrayND< ArrType > & xarr_
Definition: arrayndalgo.h:227
void setOffset(int64_t no)
Definition: valseriesimpl.h:217
bool doWork(od_int64 start, od_int64 stop, int threadidx)
Definition: arrayndalgo.h:123
virtual bool executeParallel(bool parallel)
void add(xT x, yT y)
Definition: mathfunc.h:404
virtual T get(int p0, int p1, int p2) const =0
OperType xfact_
Definition: arrayndalgo.h:378
ArrayND< T > & inp_
Definition: arrayndalgo.h:1877
void setShift(SumType shift)
Definition: arrayndalgo.h:274
#define mGetInfo()
Definition: arrayndalgo.h:1500
virtual void setValue(int64_t, T)
Definition: valseries.h:40
const TrcKeySampling & tksout_
Definition: arrayndalgo.h:1467
LargeValVec< od_uint64 > * undefidxs_
Definition: arrayndalgo.h:1879
StepInterval< int > lineRange() const
Type
Definition: angles.h:25
#define od_uint64
Definition: plftypes.h:35
Coord posc_
Definition: arrayndalgo.h:1649
void apply(const Coord &pos, bool dir, T &) const
Definition: arrayndalgo.h:1694
Iterates through all samples in an ArrayND.
Definition: arraynd.h:175
void setValue(int idx, float val)
Definition: arrayndalgo.h:889
void getProduct(const ArrayND< ArrType > &in1, const ArrayND< ArrType > &in2, ArrayND< ArrType > &out, bool noudf, bool parallel)
computes the product array between two arrays
Definition: arrayndalgo.h:466
uiString message() const
Definition: arrayndalgo.h:1908
bool isFullyRectAndReg() const
const ArrayOperExecSetup & setup_
Definition: arrayndalgo.h:222
CumArrOperExec(const ArrayND< ArrType > &xvals, bool noudf, const ArrayOperExecSetup &setup)
Definition: arrayndalgo.h:66
IdxType & crl()
Definition: posidxpair.h:46
bool includes(const TrcKeySampling &, bool ignoresteps=false) const
bool hasUndefs(const ArrayND< fT > &in)
Returns whether there are undefs in the Array.
Definition: arrayndalgo.h:783
bool interpUdf(Array1D< fT > &in, typename BendPointBasedMathFunction< fT, fT >::InterpolType ipoltyp=BendPointBasedMathFunction< fT, fT >::Poly)
Definition: arrayndalgo.h:833
#define mPlural
Definition: uistrings.h:17
bool noudf_
Definition: arrayndalgo.h:373
size_type size() const
Definition: typeset.h:263
od_int64 nrIterations() const
Definition: arrayndalgo.h:1914
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
void setYVals(const ArrayND< ArrType > &yvals)
Definition: arrayndalgo.h:84
T dePeriodize(T val, T period)
Definition: periodicvalue.h:24
bool donormalizesum_
Definition: arrayndalgo.h:48
RetType getSumX2PY2(const ArrayND< ArrType > &in1, const ArrayND< ArrType > &in2, bool noudf, bool parallel)
returns the sum of summed squarred amplitudes of two arrays
Definition: arrayndalgo.h:591
T Array3DInterpolate(const Array3D< T > &array, float p0, float p1, float p2, bool posperiodic=false)
Definition: arrayndalgo.h:960
bool doPrepare(int)
Definition: arrayndalgo.h:1506
bool resize(const char *, int64_t)
Definition: arrayndalgo.h:874
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:28
Is a lock that allows a thread to have exlusive rights to something.
Definition: thread.h:43
uiString nrDoneText() const
Definition: arrayndalgo.h:1910
virtual const Array1DInfo & info() const =0
Definition: arrayndalgo.h:1897
const int * getPos() const
Definition: arraynd.h:187
bool getInterceptGradient(const ArrayND< ArrType > &iny, const ArrayND< ArrType > *inx_, OperType &intercept, OperType &gradient, bool parallel)
returns the intercept and gradient of two arrays
Definition: arrayndalgo.h:685
bool doWork(od_int64 start, od_int64 stop, int)
Definition: arrayndalgo.h:1918
virtual T get(int) const =0
void setScaler(OperType scaler, bool forx=true)
Definition: arrayndalgo.h:96
Implementation of Array2DInfo.
Definition: arrayndinfo.h:164
bool doWork(od_int64 start, od_int64 stop, int)
Definition: arrayndalgo.h:293
uiString nrDoneText() const
Definition: arrayndalgo.h:1973
const LargeValVec< od_uint64 > & undefidxs_
Definition: arrayndalgo.h:1948
void setScaler(OperType scaler, bool forx=true)
Definition: arrayndalgo.h:267
ArrOperExec(const ArrayND< ArrType > &xvals, const ArrayND< ArrType > *yvals, bool noudf, const ArrayOperExecSetup &setup, ArrayND< ArrType > &outvals)
Definition: arrayndalgo.h:248
Order order_
Definition: arrayndalgo.h:1642
Parallel task for computing the sum of element wise operations of one array and optionally a second i...
Definition: arrayndalgo.h:63
const PosInfo::CubeData & trcssampling_
Definition: arrayndalgo.h:2034
void convertUndefinedIndexList(const TrcKeyZSampling &tkzsin, const TrcKeyZSampling &tkzsout, LargeValVec< od_uint64 > &)
uiString nrDoneText() const
Definition: arrayndalgo.h:263
uiString nrDoneText() const
Definition: arrayndalgo.h:1492
T start
Definition: ranges.h:90
bool doWork(od_int64 start, od_int64 stop, int)
Definition: arrayndalgo.h:1527
#define mFillTrendXArray()
Definition: arrayndalgo.h:656
uiString nrDoneText() const
Definition: arrayndalgo.h:1762
bool canCopyAll() const
Definition: arrayndalgo.h:1377
od_int64 nrIterations() const
Definition: arrayndalgo.h:1496
bool getInterSection(const TrcKeySampling &, TrcKeySampling &) const
Returns false if intersection is empty.
const Array3D< T > & in_
Definition: arrayndalgo.h:1602
od_int64 nrIterations() const
Definition: arrayndalgo.h:1370
bool doWork(od_int64 start, od_int64 stop, int)
Definition: arrayndalgo.h:1981
virtual const ArrayNDInfo & info() const =0
const od_int64 totalnr_
Definition: arrayndalgo.h:1600
MathFunction based on bend points.
Definition: mathfunc.h:149
static uiString phrJoinStrings(const uiString &a, const uiString &b)
"
const PosInfo::CubeData * trcssampling_
Definition: arrayndalgo.h:1881
Implementation of Array1D.
Definition: arrayndimpl.h:51
ArrayUdfValReplacer(Array3D< T > &inp, LargeValVec< od_uint64 > *undefidxs)
Definition: arrayndalgo.h:1746
mODTextTranslationClass(Array3DUdfTrcRestorer) public
Definition: arrayndalgo.h:1958
#define mClass(module)
Definition: commondefs.h:161
virtual const Array2DInfo & info() const =0
2D point or vector class.
Definition: commontypes.h:58
RetType getSumSq(const ArrayND< ArrType > &in, bool noudf, bool parallel)
returns the sum of squarred amplitudes of the array
Definition: arrayndalgo.h:500
Order
Definition: arrayndalgo.h:1620
bool dosqinp_
Definition: arrayndalgo.h:45
void setShift(SumType shift, bool forx=true)
Definition: arrayndalgo.h:87
Position info for an entire 3D cube. The LineData's are not sorted.
Definition: posinfo.h:96
ArrayNDInfoImpl size_
Definition: arrayndalgo.h:949
Array3D ( Subclass of ArrayND ) is a three dimensional array.
Definition: arraynd.h:149
const od_int64 totalnr_
Definition: arrayndalgo.h:1882
od_int64 nrIterations() const
Definition: arrayndalgo.h:1775
T y_
Definition: geometry.h:81
RetType getAverage(const ArrayND< ArrType > &in, bool noudf, bool parallel)
returns the average amplitude of the array
Definition: arrayndalgo.h:405
T replval_
Definition: arrayndalgo.h:1878
const od_int64 totalnr_
Definition: arrayndalgo.h:1950
Polynomial trend with order 0 (mean), 1 (linear) or 2 (parabolic) The trend is derived from a set of ...
Definition: arrayndalgo.h:1613
yT getValue(xT x) const
Definition: mathfunc.h:166
Transfers the common samples from one 2D array to another.
Definition: arrayndalgo.h:1339
od_int64 nrIterations() const
Definition: arrayndalgo.h:1977
Array3D< T > & outp_
Definition: arrayndalgo.h:2036
uiString message() const
Definition: arrayndalgo.h:82
uiString nrDoneText() const
Definition: arrayndalgo.h:1360
ArrayND< ArrType > & outarr_
Definition: arrayndalgo.h:377
TrcKeySampling hsamp_
Definition: trckeyzsampling.h:57
BinID start_
Definition: trckeysampling.h:129