DOCUMENTATION

SYNOPSIS

PROGRAM NAME: iPick (interactive Picking) 
AUTHOR:  Juan Lorenzo

CHANGES and their DATES

DATE:  June 15 2019 

DESCRIPTION

Interactively pick points

USE

When "purpose" is 'geopsy', the processing
is slightly different and
the output directories and files have a unique format

ep is an appropriated gather header. 
If you do not want to have ep defined as a gather header 
variable, then the following is allowed:
ep = 0
ep max=0
ep min=0  

??JML TODO


Examples:

    base_file_name  	= 30Hz_All_geom_geom;
    gather_header  	= fldr;   (single gather type for picking)
    offset_type  		= tracl;  
    first_gather   	= 1;
    gather_inc    		= 1;
    last_gather    	= 100;
    freq    		    = 0,3,100,200;       (Hz; can be left empty without any values as well)
    **gather_type    	= fldr;
    min_amplitude      = .0;
    max_amplitude      = .75;
    min_x1             = 15.873015           (Hz, for geopsy)
    max_x1             = 999.999             (Hz, for geopsy)
    purpose            = geopsy

    In geopsy plotting is in 'normal' and not 'seismic' mode,
    The x1 axis is frequency and the y axis is phase velocity

    * Label displayed in the plot
      header parameter value to digitize and use as Y-axis values for picking
      If you want to digitize as a function of offset,
      modify the d2 and f2 values prior to picking.
     
    ** Used only to define family of interactive user messages to use
       and can be either = SP or CDP

Examples

SEISMIC UNIX NOTES

STEPS

Perl NOTES

We are using Moose
Moose already declares that you need debuggers turned on
so you don't need a line like the following:
use warnings;

For the iPick tool and in  order to prevent redefining subroutines
we implement new modulesB,C,D ...

Both of the following instantiate iPick_spec.pm
--iPick_config 
			calls 
		config_superflows 
		    calls 
		big_streams_param 
			which requires and instantiates iPick_spec
--iPick.pm
		uses and instantiates iPick_specB.pm
		uses iShowNselect_picks
		      which instantiates iPick_specC
		uses iSelect_xt
			  which instantiates iPick_specD		

Instantiate classes:

Create a new version of the package 
with a unique name

Get configuration information

Declare variables

in local memory space

Check for old data

Display

data first time

Create Main Window

Start event-driven loop
Interaction with user
initialize values
If picks are new, show
message on how to pick data

Decide whether to

	PICK or move on to NEXT GATHER
	Place windows (2) near the left side
	of the screen
     
	Changing geometry of the toplevel window
	my $h = $mw->screenheight();
	my $w = $mw->screenwidth();
	print("width and height of screen are $w,$h\n\n");
	print("geometry of screen is $geom\n\n");

Set the prompt

value according
to which button is pressed
then exit the MainLoop
destroy the main window after the prompt
is properly set

sub set_pick

callbacks

send gather number to $iPick
delete output of previous displays
Delete output
of previous muting

number_of_tries -replot 1st data -PICK X-T pairs -Increment number of tries to make data display interact with user (number_of_tries = 1)

sub set_calc

-PRESS the CALC button
-Increment number of tries to make
 display and show old picks
 (if number_of_tries >1)

Delete

the previous display

Message

to halt flow
when number_of_tries >0

sub set_saveNcont

same as next

sub set_next

In this case $self is empty
1. increment gather
   Exit if beyond last gather 
2. reset prompt
3. Otherwise display the first semblance
4 ... see following callbacks

Delete output

of previous top mute

Display

update gather number in memory
first x,t again
Show user message
Select the xt values

sub set_exit

say goodbye 
clear old images
kill window
stop script

2 POD Errors

The following errors were encountered while parsing the POD:

Around line 311:

'=item' outside of any '=over'

Around line 320:

You forgot a '=back' before '=head2'