Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Member Functions | Friends

Attrib::Provider Class Reference

provides the actual output to ... More...

Inheritance diagram for Attrib::Provider:
Attrib::StorageProvider

List of all members.

Public Member Functions

virtual bool isOK () const
const DescgetDesc () const
DescgetDesc ()
const DataHoldergetData (const BinID &relpos=BinID(0, 0), int idx=0)
const DataHoldergetDataDontCompute (const BinID &relpos) const
int nrOutputs () const
void enableOutput (int output, bool yn=true)
bool isOutputEnabled (int output) const
void setOutputInterestSize (bool preserve=false)
void enableAllOutputs (bool yn=true)
virtual void getCompNames (BufferStringSet &) const
virtual void setReqBufStepout (const BinID &, bool wait=false)
virtual void setDesBufStepout (const BinID &, bool wait=false)
const BinIDgetReqBufStepout () const
const BinIDgetDesBufStepout () const
void setDesiredVolume (const CubeSampling &)
const CubeSamplinggetDesiredVolume () const
void resetDesiredVolume ()
void setPossibleVolume (const CubeSampling &)
virtual bool getPossibleVolume (int outp, CubeSampling &)
const CubeSamplinggetPossibleVolume () const
int getTotalNrPos (bool)
void setCurLineKey (const char *linename)
virtual void adjust2DLineStoredVolume ()
virtual int moveToNextTrace (BinID startpos=BinID(-1,-1), bool firstcheck=false)
void computeNewStartPos (BinID &)
int alignInputs (ObjectSet< Provider > &)
int comparePosAndAlign (Provider *, bool, Provider *, bool, bool)
void resetMoved ()
void resetZIntervals ()
virtual const SeisTrcInfogetCurrentTrcInfo () const
BinID getCurrentPosition () const
virtual bool setCurrentPosition (const BinID &)
void updateCurrentInfo ()
virtual bool needStoredInput () const
void addLocalCompZIntervals (const TypeSet< Interval< int > > &)
const TypeSet< Interval< int > > & localCompZIntervals () const
void updateInputReqs (int input=-1)
virtual void updateStorageReqs (bool all=false)
void setUseSC ()
void setSelData (const Seis::SelData *)
void setExtraZ (const Interval< float > &)
void setNeedInterpol (bool)
void setExactZ (const TypeSet< float > &)
void computeRefStep ()
void setRefStep (float step)
float getRefStep () const
virtual BinID getStepoutStep () const
virtual float getMaxDistBetwTrcs () const
ObjectSet< Provider > & getInputs ()
BinID getTrcInfoBid () const
const char * errMsg () const
virtual void initSteering ()
virtual void initSteering (const BinID &)
virtual bool prepPriorToOutputSetup ()
virtual void prepPriorToBoundsCalc ()
virtual void prepareForComputeData ()
virtual void fillDataCubesWithTrc (DataCubes *) const
virtual void setRdmPaths (TypeSet< BinID > *truepath, TypeSet< BinID > *snappedpath)
 For directional attributes.

Static Public Member Functions

static Providercreate (Desc &, BufferString &)
static const char * prepare (Desc &)

Protected Member Functions

 Provider (Desc &)
virtual bool checkInpAndParsAtStart ()
virtual SeisMSCProvidergetMSCProvider () const
virtual bool getInputOutput (int input, TypeSet< int > &) const
virtual bool getInputData (const BinID &relpos, int idx)
virtual bool computeData (const DataHolder &output, const BinID &relpos, int t0, int nrsamples) const
virtual bool computeData (const DataHolder &output, const BinID &relpos, int t0, int nrsamples, int threadidx) const
int getDataIndex (int input) const
void fillInputRangesArray (Array2DImpl< Interval< int > > &, int, const Interval< int > &)
virtual bool allowParallelComputation () const
virtual bool setNrThreads (int idx)
virtual int minTaskSize () const
virtual bool finalizeCalculation (bool scs)
DataHoldergetDataHolder (const BinID &relpos)
void removeDataHolder (const BinID &relpos)
void setInput (int input, Provider *)
void addParent (Provider *prov)
virtual BinDataDesc getOutputFormat (int output) const
virtual bool doNotReUseDH () const
bool computeDesInputCube (int inp, int out, CubeSampling &, bool usestepout=true) const
void setUsedMultTimes ()
bool isUsedMultTimes ()
bool isNew2DLine () const
virtual const BinIDdesStepout (int input, int output) const
virtual const BinIDreqStepout (int input, int output) const
virtual const Interval< float > * desZMargin (int input, int output) const
virtual const Interval< float > * reqZMargin (int input, int output) const
virtual const Interval< int > * desZSampMargin (int input, int output) const
virtual const Interval< int > * reqZSampMargin (int input, int output) const
virtual bool getZStepStoredData (float &step) const
float getInterpolInputValue (const DataHolder &, int inputidx, float zval) const
float getInterpolInputValue (const DataHolder &, int inputidx, float sample, int z0) const
float getInputValue (const DataHolder &, int inputidx, int sampleidx, int z0) const
void setOutputValue (const DataHolder &output, int outputidx, int sampleidx, int z0, float val) const
float getExtraZFromSampPos (float) const
float getExtraZFromSampInterval (int, int) const
bool zIsTime () const
float zFactor () const
float dipFactor () const
float inldist () const
float crldist () const
float maxSecureDip () const

Static Protected Member Functions

static ProviderinternalCreate (Desc &, ObjectSet< Provider > &, bool &issame, BufferString &)

Protected Attributes

ObjectSet< Providerinputs_
ObjectSet< Providerparents_
Descdesc_
TypeSet< int > outputinterest_
BinID desbufferstepout_
BinID reqbufferstepout_
CubeSamplingdesiredvolume_
CubeSamplingpossiblevolume_
TypeSet< Interval< int > > localcomputezintervals_
ObjectSet< Providerallexistingprov_
TypeSet< float > exactz_
ProviderTask * providertask_
DataHolderLineBufferlinebuffer_
BinID currentbid_
int prevtrcnr_
LineKey curlinekey_
const Seis::SelDataseldata_
Interval< float > extraz_
const SeisTrcInfocurtrcinfo_
BinID trcinfobid_
bool useshortcuts_
float refstep_
bool alreadymoved_
bool isusedmulttimes_
bool needinterp_
BufferString errmsg_

Private Member Functions

 mRefCountImpl (Provider)

Friends

class ProviderTask

Detailed Description

provides the actual output to ...


Constructor & Destructor Documentation

Attrib::Provider::Provider ( Desc  )  [protected]

Member Function Documentation

void Attrib::Provider::addLocalCompZIntervals ( const TypeSet< Interval< int > > &   ) 
void Attrib::Provider::addParent ( Provider prov  )  [inline, protected]
virtual void Attrib::Provider::adjust2DLineStoredVolume (  )  [virtual]

Reimplemented in Attrib::StorageProvider.

int Attrib::Provider::alignInputs ( ObjectSet< Provider > &   ) 
virtual bool Attrib::Provider::allowParallelComputation (  )  const [inline, protected, virtual]

Reimplemented in Attrib::StorageProvider.

virtual bool Attrib::Provider::checkInpAndParsAtStart (  )  [protected, virtual]

Should be used for check _after_ inputs are set, for extra checks at other time use isOK()

Reimplemented in Attrib::StorageProvider.

int Attrib::Provider::comparePosAndAlign ( Provider ,
bool  ,
Provider ,
bool  ,
bool   
)
virtual bool Attrib::Provider::computeData ( const DataHolder output,
const BinID relpos,
int  t0,
int  nrsamples,
int  threadidx 
) const [protected, virtual]

The system will use the algorithm specified in this function to compute the attribute's outputs. The results will be stored as different series in the DataHolder output.

Parameters:
threadid thread identifier that may be handy when using multiple threads.

Reimplemented in Attrib::StorageProvider.

virtual bool Attrib::Provider::computeData ( const DataHolder output,
const BinID relpos,
int  t0,
int  nrsamples 
) const [inline, protected, virtual]
Note:
Same function as below, but lacks the threadidx variable. Implement the latter one for all new classes. This function may be removed in coming releases.
bool Attrib::Provider::computeDesInputCube ( int  inp,
int  out,
CubeSampling ,
bool  usestepout = true 
) const [protected]

The system uses the margin and stepout requirements to compute the ideal desired volume for each input

void Attrib::Provider::computeNewStartPos ( BinID  ) 
void Attrib::Provider::computeRefStep (  ) 

If an attribute uses as inputs stored cubes with a different z step the smallest one will be taken as reference step

static Provider* Attrib::Provider::create ( Desc ,
BufferString  
) [static]

Also creates all inputs, the input's inputs, and so on

float Attrib::Provider::crldist (  )  const [protected]
virtual const BinID* Attrib::Provider::desStepout ( int  input,
int  output 
) const [protected, virtual]

The system will try to supply the attribute with the desired stepout, but will not take the desired stepout into account when computing the volume that can be computed.

Returns:
the desired stepout on input if output is going to be computed, or NULL if no stepout is desired.
virtual const Interval<float>* Attrib::Provider::desZMargin ( int  input,
int  output 
) const [protected, virtual]

The gate is specified in the depth-unit of the survey (e.g. seconds, feet or meters), and is in addition to the gate specified in desZSampMargin. The system will try to supply the attribute with the desired gate, but will not take the desired gate into account when computing the volume that can be computed.

Returns:
the extra gate desired on input if output is going to be computed, or NULL if no extra gate is desired.
virtual const Interval<int>* Attrib::Provider::desZSampMargin ( int  input,
int  output 
) const [protected, virtual]

The gate is specified in the trace samples, and is in addition to the gate specified in desZMargin. The system will try to supply the attribute with the desired gate, but will not take the desired gate into account when computing the volume that can be computed.

Returns:
the extra gate desired on input if output is going to be computed, or NULL if no extra gate is desired.
float Attrib::Provider::dipFactor (  )  const [inline, protected]
virtual bool Attrib::Provider::doNotReUseDH (  )  const [inline, protected, virtual]
void Attrib::Provider::enableAllOutputs ( bool  yn = true  ) 
void Attrib::Provider::enableOutput ( int  output,
bool  yn = true 
)
const char* Attrib::Provider::errMsg (  )  const
virtual void Attrib::Provider::fillDataCubesWithTrc ( DataCubes  )  const [inline, virtual]

Reimplemented in Attrib::StorageProvider.

void Attrib::Provider::fillInputRangesArray ( Array2DImpl< Interval< int > > &  ,
int  ,
const Interval< int > &   
) [protected]
virtual bool Attrib::Provider::finalizeCalculation ( bool  scs  )  [inline, protected, virtual]

Called one all computeData have returned.

Parameters:
scs is true if all computeData were successful.
virtual void Attrib::Provider::getCompNames ( BufferStringSet  )  const [virtual]
BinID Attrib::Provider::getCurrentPosition (  )  const
virtual const SeisTrcInfo* Attrib::Provider::getCurrentTrcInfo (  )  const [inline, virtual]
const DataHolder* Attrib::Provider::getData ( const BinID relpos = BinID(0, 0),
int  idx = 0 
)
const DataHolder* Attrib::Provider::getDataDontCompute ( const BinID relpos  )  const
DataHolder* Attrib::Provider::getDataHolder ( const BinID relpos  )  [protected]
int Attrib::Provider::getDataIndex ( int  input  )  const [protected]

Gets the index of the serie needed in the input DataHolder

const BinID& Attrib::Provider::getDesBufStepout (  )  const [inline]
const Desc& Attrib::Provider::getDesc (  )  const
Desc& Attrib::Provider::getDesc (  ) 
const CubeSampling* Attrib::Provider::getDesiredVolume (  )  const [inline]
float Attrib::Provider::getExtraZFromSampInterval ( int  ,
int   
) const [protected]
float Attrib::Provider::getExtraZFromSampPos ( float   )  const [protected]
virtual bool Attrib::Provider::getInputData ( const BinID relpos,
int  idx 
) [protected, virtual]

Gets all imput data, including data for which a stepout is required

virtual bool Attrib::Provider::getInputOutput ( int  input,
TypeSet< int > &   
) const [protected, virtual]

Specifies the outputs needed for calculation among all those provided by the input data; very usefull when steering used as input data

ObjectSet<Provider>& Attrib::Provider::getInputs (  )  [inline]
float Attrib::Provider::getInputValue ( const DataHolder ,
int  inputidx,
int  sampleidx,
int  z0 
) const [protected]
float Attrib::Provider::getInterpolInputValue ( const DataHolder ,
int  inputidx,
float  zval 
) const [protected]
float Attrib::Provider::getInterpolInputValue ( const DataHolder ,
int  inputidx,
float  sample,
int  z0 
) const [protected]
virtual float Attrib::Provider::getMaxDistBetwTrcs (  )  const [virtual]

Reimplemented in Attrib::StorageProvider.

virtual SeisMSCProvider* Attrib::Provider::getMSCProvider (  )  const [protected, virtual]

Reimplemented in Attrib::StorageProvider.

virtual BinDataDesc Attrib::Provider::getOutputFormat ( int  output  )  const [protected, virtual]

Reimplemented in Attrib::StorageProvider.

const CubeSampling* Attrib::Provider::getPossibleVolume (  )  const [inline]
virtual bool Attrib::Provider::getPossibleVolume ( int  outp,
CubeSampling  
) [virtual]

Reimplemented in Attrib::StorageProvider.

float Attrib::Provider::getRefStep (  )  const
const BinID& Attrib::Provider::getReqBufStepout (  )  const [inline]
virtual BinID Attrib::Provider::getStepoutStep (  )  const [virtual]

Reimplemented in Attrib::StorageProvider.

int Attrib::Provider::getTotalNrPos ( bool   ) 
BinID Attrib::Provider::getTrcInfoBid (  )  const [inline]
virtual bool Attrib::Provider::getZStepStoredData ( float &  step  )  const [inline, protected, virtual]

Reimplemented in Attrib::StorageProvider.

virtual void Attrib::Provider::initSteering (  )  [inline, virtual]
virtual void Attrib::Provider::initSteering ( const BinID  )  [inline, virtual]
float Attrib::Provider::inldist (  )  const [protected]
static Provider* Attrib::Provider::internalCreate ( Desc ,
ObjectSet< Provider > &  ,
bool &  issame,
BufferString  
) [static, protected]

Creates the provider needed and all its input providers

bool Attrib::Provider::isNew2DLine (  )  const [inline, protected]
virtual bool Attrib::Provider::isOK (  )  const [virtual]
bool Attrib::Provider::isOutputEnabled ( int  output  )  const
bool Attrib::Provider::isUsedMultTimes (  )  [inline, protected]
const TypeSet< Interval<int> >& Attrib::Provider::localCompZIntervals (  )  const
float Attrib::Provider::maxSecureDip (  )  const [inline, protected]
virtual int Attrib::Provider::minTaskSize (  )  const [inline, protected, virtual]
virtual int Attrib::Provider::moveToNextTrace ( BinID  startpos = BinID(-1,-1),
bool  firstcheck = false 
) [virtual]
Return values:
-1 something went wrong
0 finished, no more positions
1 arrived at new position

Reimplemented in Attrib::StorageProvider.

Attrib::Provider::mRefCountImpl ( Provider   )  [private]
virtual bool Attrib::Provider::needStoredInput (  )  const [virtual]

Reimplemented in Attrib::StorageProvider.

int Attrib::Provider::nrOutputs (  )  const [inline]
static const char* Attrib::Provider::prepare ( Desc  )  [static]

Must be called before getting inputs/outputs etc. from a Desc

virtual void Attrib::Provider::prepareForComputeData (  )  [virtual]

Everything is known now.

virtual void Attrib::Provider::prepPriorToBoundsCalc (  )  [virtual]

Z refstep is known now, this is meant to be used before possible- and desired- volumes are computed

virtual bool Attrib::Provider::prepPriorToOutputSetup (  )  [virtual]

returns whether the outputs plan acquired from the parameter file has to be overruled

void Attrib::Provider::removeDataHolder ( const BinID relpos  )  [protected]
virtual const BinID* Attrib::Provider::reqStepout ( int  input,
int  output 
) const [protected, virtual]

The system will supply the attribute with the required stepout, and use it to compute the volume that can be computed.

Returns:
the required stepout on input if output is going to be computed, or NULL if no stepout is required.
virtual const Interval<float>* Attrib::Provider::reqZMargin ( int  input,
int  output 
) const [protected, virtual]
virtual const Interval<int>* Attrib::Provider::reqZSampMargin ( int  input,
int  output 
) const [protected, virtual]

The gate is specified in the trace samples, and is in addition to the gate specified in reqZMargin. The system will supply the attribute with the required gate, and use it to compute the volume that can be computed.

Returns:
the extra gate required on input if output is going to be computed, or NULL if no extra gate is required.
void Attrib::Provider::resetDesiredVolume (  ) 
void Attrib::Provider::resetMoved (  ) 
void Attrib::Provider::resetZIntervals (  ) 
void Attrib::Provider::setCurLineKey ( const char *  linename  ) 
virtual bool Attrib::Provider::setCurrentPosition ( const BinID  )  [virtual]
virtual void Attrib::Provider::setDesBufStepout ( const BinID ,
bool  wait = false 
) [virtual]

Reimplemented in Attrib::StorageProvider.

void Attrib::Provider::setDesiredVolume ( const CubeSampling  ) 

The desired volume is the ideal volume required by the user

void Attrib::Provider::setExactZ ( const TypeSet< float > &   ) 
void Attrib::Provider::setExtraZ ( const Interval< float > &   ) 
void Attrib::Provider::setInput ( int  input,
Provider  
) [protected]
void Attrib::Provider::setNeedInterpol ( bool   ) 
virtual bool Attrib::Provider::setNrThreads ( int  idx  )  [inline, protected, virtual]
void Attrib::Provider::setOutputInterestSize ( bool  preserve = false  ) 
void Attrib::Provider::setOutputValue ( const DataHolder output,
int  outputidx,
int  sampleidx,
int  z0,
float  val 
) const [protected]
void Attrib::Provider::setPossibleVolume ( const CubeSampling  ) 

The possible volume is the volume that can really be computed taking care of all margins and stepouts

virtual void Attrib::Provider::setRdmPaths ( TypeSet< BinID > *  truepath,
TypeSet< BinID > *  snappedpath 
) [virtual]

For directional attributes.

void Attrib::Provider::setRefStep ( float  step  ) 
virtual void Attrib::Provider::setReqBufStepout ( const BinID ,
bool  wait = false 
) [virtual]

Reimplemented in Attrib::StorageProvider.

void Attrib::Provider::setSelData ( const Seis::SelData  ) 
void Attrib::Provider::setUsedMultTimes (  )  [protected]

The same provider can be used multiple times which allows the attribute to be computed only once

void Attrib::Provider::setUseSC (  )  [inline]
void Attrib::Provider::updateCurrentInfo (  ) 
void Attrib::Provider::updateInputReqs ( int  input = -1  ) 
virtual void Attrib::Provider::updateStorageReqs ( bool  all = false  )  [virtual]

Reimplemented in Attrib::StorageProvider.

float Attrib::Provider::zFactor (  )  const [inline, protected]
bool Attrib::Provider::zIsTime (  )  const [protected]

Friends And Related Function Documentation

friend class ProviderTask [friend]

Member Data Documentation

TypeSet<float> Attrib::Provider::exactz_ [protected]
Interval<float> Attrib::Provider::extraz_ [protected]
ProviderTask* Attrib::Provider::providertask_ [protected]
float Attrib::Provider::refstep_ [protected]