Program sftahwrite | Read Trace And Header (tah) from standard input, write to separate files
[SYNOPSIS]
sftahwrite < in.rsf > out.rsf verbose=1 label#=(2,...) n#=(2,...) o#=(2,...) d#=(2,...) output= outheaders= mode=
[COMMENTS]

tah is the abbreviation of Trace And Header.  Madagascar programs 
that begin with sftah are a designed to:
1- read trace and headers from separate rsf files and write them to 
standard output (ie sftahread)
2- filter programs that read and write standard input/output and 
process the tah data (eg sftahnmo, sftahstack)
3- read tah data from standard input and write separate rsf files for 
the trace and headers data (ie sftahwrite)

These programs allow Seismic Unix (su) like processing in Madagascar.  
Some programs have su like names.

Some programs in this suite are sftahread, sftahgethw, ftahhdrmath, 
and sftahwrite.

The sftahwrite program reads the trace and header data (tah) from 
standard input (usually a pipe), separates the trace data from the
header data.  The trace data is written to output and the header is
written to outheaders.  The output files can be mapped or sequential.
Mapped files use to trace header to determine the location in the 
file to write the trace.  The iline and xline headers are used in the 
following example to put stacked data in (time, xline, iline) order 
so it can be viewed using sfgrey. Sequential files order the traces in 
the file in the order they are read from standard output.  Sequential 
files are a good way to save traces when the order is not important.
Sequential files are especially useful to save prestack seismic data.
The following example also saves the data in sequential mode.    

EXAMPLE:

sftahread \
verbose=1 \
input=npr3_gathers.rsf \
| sftahnmo \
verbose=1  \
tnmo=0,.373,.619,.826,.909,1.017,1.132,1.222,1.716,3.010 \
vnmo=9086,10244,11085,10803,10969,11578,12252,12669,14590,17116 \
| sftahstack key=iline,xline verbose=1 \
| sftahwrite \
verbose=1                           \
label2="xline" o2=1 n2=188 d2=1   \
label3="iline" o3=1 n3=345 d3=1   \
output=mappedstack.rsf \
| sftahwrite \
verbose=1                           \
mode=seq \
output=seqstack.rsf \
>/dev/null

sfgrey <mappedstack.rsf | sfpen

In this example the cmp sorted prestack data, npr3_gathers.rsf,  are 
read by sftahread.  The headers are in the file npr3_gathers_hdr.rsf, 
the headers parameter default.  The headers are merged with the trace 
amplitudes and the tah data sent down the pipe for nmo and stack.  The 
sftahwrite writes the trace data to mappedstack.rsf and the headers 
are written to the file mappedstack_hdr.rsf.  The order of the data in
the output file is defined by the iline and xline trace headers, so the 
data order is (time,xline,iline).  Finally, the output volume is
displayed using sfgrey.

[PARAMETERS]
float   | d# | =(2,...) |   | 	delta in the #-th dimension 
string  | label# | =(2,...) |   | 	name of each of the axes. 
	  label1 is not changed from input. Each label must be a 
	  header key like cdp, cdpt, or ep.  The trace header 
	  values are used to define the output trace location in
	  the output file. 
string  | mode | = |   | 	

     mapped - order traces in the output file by traces headers 
              use label2, label3... n2, n3, ..., o2, o3, .. and d2, d3,..
     seq - just write the traces to the output files in the order
           read from STDIN
     

  
largeint | n# | =(2,...) |   | 	number of locations in the #-th dimension 
float   | o# | =(2,...) |   | 	origin of the #-th dimension 
string  | outheaders | = |   | 	

     Output trace header file name.  Default is the input data
     file name, with the final .rsf changed to _hdr.rsf. 
  
string  | output | = |   | 	

     output trace filename. Required parameter with no default.
  
int     | verbose | =1 |   | 	

     flag to control amount of print
     0 terse, 1 informative, 2 chatty, 3 debug
  
[DIRECTORY]
user/karl
