module pefest  
! Estimate a PEF avoiding zeros and bursty noise on input.
  use quantile_mod
  use helicon
  use misinput
  use pef
  implicit none
  contains
  subroutine pefest1( niter, yy, aa)
    integer, intent( in)         :: niter
    real, dimension( :), pointer :: yy
    type( filter)                :: aa
    real, dimension(:),allocatable  :: rr
    real                         :: rbar
    integer                      :: stat
    allocate(rr(size(yy)))
    call helicon_init( aa)                          ! starting guess
    stat = helicon_lop( .false., .false., yy, rr)
    rbar = quantile( size( yy)/3, abs( rr))         
    ! rbar=(r safe below rbar)
    where( aa%mis)
      yy = 0.
end where
    call find_mask(( yy /= 0. .and. abs( rr) < 5 * rbar), aa)
    call find_pef( yy, aa, niter)  
    deallocate(rr)
  end subroutine 
end module 
