Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes

SeisMSCProvider Class Reference

Reads seismic data into buffers providing a Moving Virtual Subcube of seismic data. More...

List of all members.

Public Types

enum  AdvanceState { NewPosition, Buffering, EndReached, Error }

Public Member Functions

 SeisMSCProvider (const MultiID &)
 Use any real user entry from '.omf' file.
 SeisMSCProvider (const IOObj &)
 Use any real user entry from '.omf' file.
 SeisMSCProvider (const char *fnm)
 'loose' 3D Post-stack CBVS files only.
virtual ~SeisMSCProvider ()
bool is2D () const
bool prepareWork ()
 Opens the input data. Can still set stepouts etc.
void forceFloatData (bool yn)
void setStepout (int, int, bool required)
void setStepout (Array2D< bool > *mask)
void setStepoutStep (int i, int c)
int inlStepout (bool req) const
int crlStepout (bool req) const
void setSelData (Seis::SelData *)
 seldata becomes mine
AdvanceState advance ()
const char * errMsg () const
BinID getPos () const
int getTrcNr () const
SeisTrcget (int deltainl, int deltacrl)
SeisTrcget (const BinID &)
const SeisTrcget (int i, int c) const
const SeisTrcget (const BinID &bid) const
int comparePos (const SeisMSCProvider &) const
 0 = equal; -1 means I need to next(), 1 the other
int estimatedNrTraces () const
 returns -1 when unknown
SeisTrcReaderreader ()
const SeisTrcReaderreader () const

Protected Types

enum  ReadState { NeedStart, ReadOK, ReadAtEnd, ReadErr }

Protected Member Functions

void init ()
bool startWork ()
int readTrace (SeisTrc &)
bool isReqBoxFilled () const
bool doAdvance ()

Protected Attributes

SeisTrcReaderrdr_
ObjectSet< SeisTrcBuftbufs_
RowCol reqstepout_
RowCol desstepout_
RowCol stepoutstep_
Array2D< bool > * reqmask_
bool intofloats_
bool workstarted_
ReadState readstate_
BufferString errmsg_
int estnrtrcs_
int bufidx_
int trcidx_
int pivotidx_
int pivotidy_

Detailed Description

Reads seismic data into buffers providing a Moving Virtual Subcube of seismic data.

This is a SeisTrcGroup that allows advancing by reading traces from storage. Note that the provider may skip incomplete parts.

The get() method returns a pointer to the trace, where you specify the inline and crossline number relative to the center. This is irrespective the steps in the cube's numbers. Therefore, the actual inline number of get(1,0) may be 10 higher than get(0,0) .

The advance() method moves the reader one step further along the seismic storage. The return value will tell you whether there is a new position available to work on, or that more traces need to be read first.

You can specify two stepouts: required and desired. The required stepout traces will always be available when the return of advance() is DataOK. If "Buffering" is returned, then the provider is still gathering more traces.


Member Enumeration Documentation

Enumerator:
NewPosition 
Buffering 
EndReached 
Error 
enum SeisMSCProvider::ReadState [protected]
Enumerator:
NeedStart 
ReadOK 
ReadAtEnd 
ReadErr 

Constructor & Destructor Documentation

SeisMSCProvider::SeisMSCProvider ( const MultiID  ) 

Use any real user entry from '.omf' file.

SeisMSCProvider::SeisMSCProvider ( const IOObj  ) 

Use any real user entry from '.omf' file.

SeisMSCProvider::SeisMSCProvider ( const char *  fnm  ) 

'loose' 3D Post-stack CBVS files only.

virtual SeisMSCProvider::~SeisMSCProvider (  )  [virtual]

Member Function Documentation

AdvanceState SeisMSCProvider::advance (  ) 
int SeisMSCProvider::comparePos ( const SeisMSCProvider  )  const

0 = equal; -1 means I need to next(), 1 the other

int SeisMSCProvider::crlStepout ( bool  req  )  const [inline]
bool SeisMSCProvider::doAdvance (  )  [protected]
const char* SeisMSCProvider::errMsg (  )  const [inline]
int SeisMSCProvider::estimatedNrTraces (  )  const

returns -1 when unknown

void SeisMSCProvider::forceFloatData ( bool  yn  )  [inline]
const SeisTrc* SeisMSCProvider::get ( const BinID bid  )  const [inline]
const SeisTrc* SeisMSCProvider::get ( int  i,
int  c 
) const [inline]
SeisTrc* SeisMSCProvider::get ( int  deltainl,
int  deltacrl 
)
SeisTrc* SeisMSCProvider::get ( const BinID  ) 
BinID SeisMSCProvider::getPos (  )  const
int SeisMSCProvider::getTrcNr (  )  const
void SeisMSCProvider::init (  )  [protected]
int SeisMSCProvider::inlStepout ( bool  req  )  const [inline]
bool SeisMSCProvider::is2D (  )  const
bool SeisMSCProvider::isReqBoxFilled (  )  const [protected]
bool SeisMSCProvider::prepareWork (  ) 

Opens the input data. Can still set stepouts etc.

const SeisTrcReader& SeisMSCProvider::reader (  )  const [inline]
SeisTrcReader& SeisMSCProvider::reader (  )  [inline]
int SeisMSCProvider::readTrace ( SeisTrc  )  [protected]
void SeisMSCProvider::setSelData ( Seis::SelData  ) 

seldata becomes mine

void SeisMSCProvider::setStepout ( Array2D< bool > *  mask  ) 

mask has 2m+1 * 2n+1 entries and becomes mine.

void SeisMSCProvider::setStepout ( int  ,
int  ,
bool  required 
)
void SeisMSCProvider::setStepoutStep ( int  i,
int  c 
) [inline]
bool SeisMSCProvider::startWork (  )  [protected]

Member Data Documentation

int SeisMSCProvider::bufidx_ [protected]
int SeisMSCProvider::estnrtrcs_ [mutable, protected]
bool SeisMSCProvider::intofloats_ [protected]
int SeisMSCProvider::pivotidx_ [protected]
int SeisMSCProvider::pivotidy_ [protected]
Array2D<bool>* SeisMSCProvider::reqmask_ [protected]
int SeisMSCProvider::trcidx_ [protected]