Commit 8e424d9d authored by Zolnierczuk, Piotr's avatar Zolnierczuk, Piotr
Browse files

allow for dumping all tof channels (command dump)

dump creates a series of files *.firef.* and *.daref.* - similar
to echodet that allows one to debug echo fitting process
parent a71bd7c8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ export PROJECT=drspine

export VERSION_MAJOR=2
export VERSION_MINOR=0
export VERSION_RELEASE=a4
export VERSION_RELEASE=a5

export PROJLIB=lib$(PROJECT).a
export PROJARCH=$(PROJECT)-$(VERSION_MAJOR).$(VERSION_MINOR)
+5 −1
Original line number Diff line number Diff line
@@ -92,6 +92,8 @@ def plot_fit_pixel(itau, pix, axes=None, datadir='.', **kwargs):
    ave   = mfit.get('ave', 0)
    amp   = mfit.get('amp', 0)
    sym   = mfit.get('sym', 0) or mfit.get('pha', 0)
    up    = mfit.get('up', 0)
    dn    = mfit.get('dn', 0)

    bgcolor = axes.set_facecolor
    if mark_pixels:
@@ -104,7 +106,9 @@ def plot_fit_pixel(itau, pix, axes=None, datadir='.', **kwargs):
    if fit is not None:
        axes.plot    (fit[0]/unit, fit[1], ls='-', lw=1, color=fcolor, label=flabel)
        axes.axvline (sym/unit, color=fcolor, lw=1)
        axes.axhline (ave, color='green', lw=1)
        axes.axhline (ave, color='green', lw=2)
        axes.axhline (up , color='green', lw=1, ls='--')
        axes.axhline (dn , color='green', lw=1, ls='--')

    if maxy:
        axes.set_ylim(ymin=miny, ymax=maxy)
+6 −2
Original line number Diff line number Diff line
@@ -289,6 +289,7 @@ program drspine
  istat = add_tab_expansion('dump verbose')
  istat = add_tab_expansion('dump clean')
  istat = add_tab_expansion('dump run')
  istat = add_tab_expansion('dump all')
  !
  istat = add_tab_expansion('dir' )
  istat = add_tab_expansion('dir full')
@@ -616,10 +617,11 @@ program drspine
     !> COMMAND: dump
     !-------------------------------------------------------------
     if(command('dump  ', &
          ' dump [run <run>] [file <filename> ] [verbose] [clean]'//LF//&
          ' dump [run <run>] [file <filename> ] [verbose] [all] [clean]'//LF//&
          '   - dump echo data '//LF//&
          '     - file <filename> - dump echo data to a file instead to a terminal'//LF//&
          '     - verbose         - produce verbose dump'//LF//&
          '     - all             - dump info for all TOF channels (default is a sum over all wavelength)'//LF//&
          '     - clean           - remove files/directories before writing'//LF//&
          ''//LF//&
          ' NOTE: '//LF//&
@@ -1885,12 +1887,14 @@ CONTAINS
    integer :: output
    logical :: verbose
    logical :: clean
    logical :: alltbins
    integer :: i, inew, irun

    call msg_info('drspine', '===> dump data')
    output   = output_unit
    verbose  = get_loglevel()>LOG_INFO
    clean    = found('clean')
    alltbins = found('all')
    filename = ' '
    irun     = 0

@@ -1915,7 +1919,7 @@ CONTAINS
             ctmp=' '
          end if
       end if
       call dump_echo_data(data_scan(i), output, verbose, trim(ctmp))
       call dump_echo_data(data_scan(i), output, verbose, trim(ctmp), alltbins)
    end do dump_loop

    ! FIXME: (paz) initial xyz development
+17 −13
Original line number Diff line number Diff line
@@ -24,14 +24,16 @@ module dump_data
  ! private variables
  integer ::                        out_unit     = output_unit! output redirection
  logical ::                        out_verbose  = .false.    ! verbose output?
  logical ::                        out_alltbins = .false.    ! true = all TOF bins, otherwise sum over all wavelengths
  character(len=MAX_PATH_LENGTH) :: out_dir      = REPEAT(' ',MAX_PATH_LENGTH) ! phase fits output

contains
  subroutine dump_echo_data(scan_data, iout, verbose, fits_dir)
  subroutine dump_echo_data(scan_data, iout, verbose, fits_dir, alltbins)
    type(scan_struct),intent(in)  :: scan_data
    integer, intent(in), optional :: iout
    logical, intent(in), optional :: verbose
    character(len=*), intent(in), optional :: fits_dir
    logical, intent(in), optional :: alltbins 
    !
    integer :: iscan
    logical :: write_maps
@@ -39,6 +41,7 @@ contains
    if (present(iout))     out_unit    = iout
    if (present(verbose))  out_verbose = verbose
    if (present(fits_dir)) out_dir     = fits_dir
    if (present(alltbins)) out_alltbins = alltbins

    write_maps  = len_trim(out_dir) > 0

@@ -258,6 +261,7 @@ contains
    call dump_phase_scan(scan_point%centerbin, cmsg)

    do it=0, tpix
       if ((.not.out_alltbins).and.(it>0)) exit
       do ix=1, xpix
          do iy=1, ypix
             write(cmsg, "(1x,a,'[',3i4,']')") &
@@ -302,16 +306,16 @@ contains
        scan_name, scan_point%spectrum(0), &
        [iscan, 0, 0, 0, xpix, ypix], out_dir)

    !do it=0, tpix
    it = 0
    do it=0, tpix
        if ((.not.out_alltbins).and.(it>0)) exit
        do ix=1, xpix
            do iy=1, ypix
                call dump_phase_fit(scan_point%pixelbin(it, ix, iy), &
                scan_name, scan_point%spectrum(it), &
                    scan_name, scan_point%spectrum(0), & ! (paz) must use spectrum(0)??
                    [iscan, it, ix, iy, xpix, ypix], out_dir)
            end do
        end do
    !end do
    end do
  end subroutine dump_scan_phase_fits


+11 −10
Original line number Diff line number Diff line
@@ -489,16 +489,17 @@ bgr_pixel_bin(l)
  !! write collection header
  subroutine collect_sqt_raw_header(iunit)
    integer, intent(in)                   :: iunit
    write (iunit,'(a)', advance='no') '#IT  IX  IY '
    write (iunit,'(a)', advance='no') ' TAU_MEAN      Q_MEAN       '
    write (iunit,'(a)', advance='no') ' F(Q,T)                     '
    write (iunit,'(a)', advance='no') ' RES(Q,T)                   '
    write (iunit,'(a)', advance='no') ' SIG(Q,T)                   '
    write (iunit,'(a)', advance='no') ' UP(Q,T)                    '
    write (iunit,'(a)', advance='no') ' DOWN(Q,T)                  '
    write (iunit,'(a)', advance='no') '  CHI2_RES      CHI2_SIG    '
    write (iunit,'(a)', advance='no') '     RUN   '
    write (iunit,'(a)', advance='no') '     Q_VEC '
    ! changed header for easier computer parsing
    write (iunit,'(a)', advance='no') 'it,ix,iy,'
    write (iunit,'(a)', advance='no') 'tau,q,'
    write (iunit,'(a)', advance='no') 'fqt,e_fqt,'
    write (iunit,'(a)', advance='no') 'fqt_res,e_fqt_res,'
    write (iunit,'(a)', advance='no') 'fqt_sig,e_fqt_sig,'
    write (iunit,'(a)', advance='no') 'up,e_up,'
    write (iunit,'(a)', advance='no') 'down,e_down,'
    write (iunit,'(a)', advance='no') 'chi2_res,chi2_sig,'
    write (iunit,'(a)', advance='no') 'run,'
    write (iunit,'(a)', advance='no') 'qx,qy,qz'
    write (iunit,*)
  end subroutine collect_sqt_raw_header