; Runs defocus group loop & endmerge in parallel
;
; SOURCE:       pub_refine_start.pam 
;                            [rn]   ArDean Leith Feb 2005
;                            []     ArDean Leith Dec 2005
;                            clone  ArDean Leith Jan 2009
;
; PURPOSE:      Runs defocus group loop & endmerge  ArDean Leith Feb. 2002
;
; MASTER COPY:  /net/bali/usr1/spider/docs/techs/recon/newprogs/
;
; PURPOSE:      Calls grploop/smangloop, or endmerge in parallel 
;
; CALLED FROM:  Run directly using PubSub
;
; INPUT REGISTERS (SET On operation line):
;    [task]        Task selector
;    [iter]        Current iteration 
;    [grp]         Group number 
;    [rn]          Random number for unique DOC_SYNC files

MD
TR OFF                      ; Loop info turned off
MD
VB OFF                      ; File info turned off

; Input global parameters & file names 
@refine_settings([maxspfreq],[radius],[alignsh],[prj-radius],[iter1],[iter-end],[lambda],[small-ang],[winsize],[converg])

MD                          ; Set OMP processors to all available
SET MP
0

MY FL

IF([task].EQ.-1)THEN       ; Runs angle setting task
   @cpang([iter],[grp])
ENDIF

RR S [ang-step]            ; Angular step (varies with iteration)
[ang-steps]
[iter]

RR S [ang-limit]           ;  Restriction on ang. search (varies with iteration)
[ang-limits]
[iter]

IF([task].EQ.0)THEN        ; Runs main refinement  grploop tasks
   ; Copy files to local disk  
   @pub_ref_loop_clone([iter],[grp])

   ; Returns [stop] which is communicated via document files
   @grploop([ang-step],[ang-limit],[radius],[alignsh],[prj-radius],[iter],[grp],[stop],[maxspfreq])

   ; Copy local disk files to server disk  
   @pub_ref_loop_declone([iter],[grp])
ENDIF

IF([task].EQ.1)THEN  ; Runs main refinement smangloop tasks
   ; Returns [stop] which is communicated via document files
   @smangloop([ang-step],[radius],[alignsh],[prj-radius],[iter],[grp],[stop],[maxspfreq])
ENDIF

IF([task].EQ.2)THEN          ; Runs endmerge consolidation task
   [next-iter]=[iter]        ; Operates on current iteration

   ; Copy files to local disk  
   @pub_ref_merge_clone([iter],[grp])

   @endmerge([prj-radius],[grp],[next-iter])

   ; Copy local disk files to server disk  
   @pub_ref_merge_declone([iter],[grp])
ENDIF

MY FL

; Signal master SPIDER that this task is finished
@pub_refine_doc_sync([task],[stop],[grp],[rn])

EN                           ; This SPIDER ends now
;