EIT Software Listings

 

anal
obsolete
response
util

 

Previous Routine
Next Routine

 

Listing of $SSW/soho/eit/idl/util/eit_proton_summary.pro

 



pro eit_proton_summary, time0, time1, $
   wave=wave, full=full, $                      ; pass to > eit_files
   eitfiles=eitfiles,    $                      ; optional filelist
   cadence=cadence, $                           ; optional cadence (mins_
   subfov=subfov, threshold=threshold, $        ; pass to > cosmic_stat
   nodisplay=nodisplay, www=www, movie=movie, $ ; display & www summary options
   quiet=quiet, cstats=cstats, index=index, $
   mwindow=mwindow
;+
;
;   Name: eit_proton_summary
;
;   Purpose: "standard" processing pipeline/summary plot for proton events
;
;   Calls:
;      plot_goes, plot_goesp, eit_files, eit_prep, cosmic_stat 
;      time_window, evt_grid, plus the usual ssw suspects.
;
;   Input Parameters:
;      time0, time1 - time range of interest
;      wave - desired wavelength (default = 195)
;      full - if set, use the FULL DISK data base
;      subfov - desired box for cosmic ray counts - per cosmic_stat.pro
;               [default = [0,0,1024,50] 
;      threshold - per cosmic_stat.pro
;      nodisplay - if set, dont make the summary plots (just return cstat)
;      mwindow - time window (minutes) +/-  around EIT Peak for movie
;      cstats (OUTPUT) - the affected area statistics (%pixels affected)
;      index  (OUTPUT) - index (header) vector
;-
;

if not keyword_set(wave) then wave='195'
full=keyword_set(full)
nodisplay=keyword_set(nodisplay)
display=1-nodisplay
movie=keyword_set(movie)
www=(keyword_set(www) or movie) and display
quiet=keyword_set(quiet)

; -------- find the files of interest 
case 1 of 
   data_chk(eitfiles,/string): efiles=eitfiles           ; user supplied list
   n_params() eq 2: begin 
      if full then begin
         efiles=eit_files(time0,time1,full=full, wave=wave)
         sscnt=([n_elements(efiles),0])(efiles(0) eq '')
      endif else begin 
      efiles=eit_files(time0,time1)
      read_eit, efiles, header
      ss=where(gt_tagval(header,/naxis1) eq 1024 and $
               gt_tagval(header,/naxis2) eq 1024 and $
               gt_tagval(header,/nmissb) le 1    and $
               gt_tagval(header,/object,missing='') eq "full FOV", sscnt)
      endelse
   endcase
   else: begin 
      box_message,['Must supply time range or EITFILES list',$
                   'IDL> eit_proton_summary,time0,time1 [OPTIONS]', $
                   '     -OR-',$
                   'IDL> eit_proton_summary,eitfiles=FILELIST [OPTIONS]']
      return
   endcase
endcase

if sscnt eq 0 then begin 
   box_message,"No eit files match desired criteria, returning..."
   return
endif

if keyword_set(cadence) then begin 
   ss=grid_data(file2time(efiles),minutes=cadence)
endif else if n_element(ss) eq 0 then ss=lindgen(n_elements(efiles))

read_eit, efiles(ss), index                      ; read headers
eit_prep, efiles(ss), pindex, pdata, /save_zero   ; prep data
pindex=index 
delvarx,data                                     ; memory cleanup

if not keyword_set(subfov) then subfov=[0,0,data_chk(pdata,/nx),50]
if not keyword_set(threshold) then threshold=20

if not quiet then box_message,$
   'Using subfield boxsize [x0,y0,nx,ny] >> [' + arr2str(subfov,/trim) + ']'


cstats=cosmic_stat(pindex, pdata, threshold, /percent, $
                   peak_spectra=peak_spectra, subfov=subfov)

psave=!p.multi
time_window,index, t0, t1
deit=deriv_arr([cstats(0),cstats])
epeakd=(where(deit eq max(deit)))(0)

epeak=(where(cstats eq max(cstats)))(0)
epeak50=where(cstats ge .5*cstats(epeak))  ; .5 max
epeakd=epeak50(0)

rd_gxd,t0,t1,/goes8,/five_min,gxd
gpeak=(where(gxd.lo eq max(gxd.lo)))(0)
dgoes=deriv_arr([gxd(0).lo,gxd.lo])
gpeakd=(where(dgoes eq max(dgoes)))(0)

dgp2ep=ssw_deltat(pindex(epeak),ref=gxd(gpeak),/hour)
dgr2er=ssw_deltat(pindex(epeakd), ref=gxd(gpeakd),/hour)

if display then begin 
   wdef,xx,zbuffer=www, 850,850
   !p.multi=[0,1,3]
   linecolors
   plot_goes,  t0,  t1, background=11, color=7, xstyle=5, charsize=2.5, $
      ymargin=[4,2],xmargin=[8,0]
   evt_grid,pindex(epeakd),color=5,linestyle=0, thick=2, label='EIT Peak Event Half Max'+$
      anytim(pindex(epeakd),/vms,/trunc),labpos=.95,align=0
   plot_goesp, t0, t1,  xstyle=5, /nowindow, charsize=2.5, /log, $
      ymargin=[2,0], xmargin=[8,0], /proton_only
   utplot, index, cstats, ytitle='Affected Area (%Pixels)', $
                      timerange=[t0,t1],xstyle=9, psym=2, color=5, charsize=2.5, $
      ymargin=[4,2], xmargin=[8,0], title='EIT CCD Affected Area'
endif

!p.multi=psave

if www then begin 
   root='eit_protons_' + time2file(t0)
   gdir=concat_dir('$path_http','protons')
   if not file_exist(gdir) then gdir=get_logenv('path_http')
   gname=concat_dir(gdir,root+'.gif')                           ; summary plot
   hdoc=concat_dir(gdir,root+'.html')                           ; top http
   zbuff2file,gname                                             ; Z->gif
   movie_html=''  
   cfile=root+'_cadence'
   sfile=root+'_peak_spectra.gif'
   sname=concat_dir(gdir,sfile)
   pfile=root+'_peak_events.gif'
   pname=concat_dir(gdir,pfile)
   genxfile=concat_dir(gdir,root+'.genx')

;  --- make peak event image ------
   wdef,xx,im=pdata(*,*,epeak),/zbuffer
   ct2rgb,3,gamma=.8
   tvscl,safe_log10(pdata(*,*,epeak)<3000,/byte)
   zbuff2file,pname
   ptf=str_replace(pname,'.gif','_thumb.gif')
   pthumb=mkthumb(ingif=pname,outfile=ptf,nx=200)

;  --- plot Peak spectra ---------
   wdef,xx,512,512,/zbuffer
   linecolors
   plot, peak_spectra, psym=10, background=11,color=7,$
      title='Energy Spectra for Image @' + anytim(pindex(epeak),/vms,/trunc), $
      ytitle='Frequency (#Pixels)', xtitle='CCD DN'

   zbuff2file,sname
   stf=str_replace(sname,'.gif','_thumb.gif')
   sthumb=mkthumb(ingif=sname,outfile=stf,nx=200)
   
   thumbhtml=thumbnail_table_html([pname,sname],[pthumb,sthumb])

;make a cadence plot to append to movie -----------
   cname=concat_dir(gdir,cfile+'.gif')
   wdef,xx,/zbuffer,data_chk(pdata,/nx),data_chk(pdata,/nx)/3
   loadct,3
   !p.multi=0
    utplot, index, cstats, ytitle='EIT CCD Affected Area (%Pixels)', $
          timerange=[t0,t1],xstyle=1, psym=2, color=0, charsize=1, $
          ymargin=[4,2], xmargin=[8,0], background=!p.color-10, $
          mtitle='EIT Affected Area'

   evt_grid,index,ticklen=.02,tickpos=.95,color=5,thick=2,linestyle=0
   
   evt_grid,index(epeakd),label='EIT Peak Rise (half max)'+anytim(index(epeakd),/vms,/trunc),$
      align=0,color=50,thick=2, tickpos=.99, labpos=.88,labcolor=20,/arrow
   evt_grid,index(epeakd),color=20
   zbuff2file,cname
   eit_fill_cube, pdata
   if movie then begin 
       if n_elements(mwindow) ne 2 then mwindow=[-1,3]
       time_window,[anytim(gxd(gpeakd),/vms), $
                    anytim(pindex(epeak),/vms)],mt0, mt1, hour=mwindow
       mss=sel_timrange(pindex,mt0,mt1)
       pdata=cube_edit(pdata,/data,ss=mss)
       pindex=pindex(mss)
       box_message,'Cleaning data via <ssw_unspike_cube>'
       cleandata=confac(temporary(ssw_unspike_cube(pindex,pdata)),.5)
       pdata=confac(temporary(pdata),.5)
       mdata=[pdata,cleandata]
       mreadfits_fixup,pindex,mdata
       sdata=safe_log10(pindex,mdata,/byte)
       event_movie2,pindex, data=sdata, moviedata ,/reverse

       special_movie,pindex,moviedata,/inc_times,html=movie_html,$    
          movie_dir=gdir,thumbsize=128, /no_htmldoc, movie_name=root,$
          table=3
   endif
   html_doc,hdoc,/header
   file_append,hdoc,'<h3> EIT Proton Event Summary</h3>'
   file_append,hdoc,['Created by <em>eit_proton_summary.pro</em> ', $
                  ' at ' + systime(),'<p>']

   header=['Start Time', 'Stop Time',$
           'GOES XRay Peak Time',$          
           'Maximum EIT Affected Area',$
           'dT(GOES XR Peak to EIT Peak)', $
           'dt(GOES XR Rise to EIT Rise)', $ 
           'Median Threshold','CCD Sub Field [x0,y0,nx,ny]']
   tdata=[anytim([time0,time1],/ecs,/trunc),$
          anytim(gxd(gpeak),/ecs,/trunc), $
          string(max(cstats),format='(f5.1)') +'%', $
          string(dgp2ep,format='(f5.1)') +' (hr)',$
          string(dgr2er,format='(f5.1)') +' (hr)',$          
          string(threshold,format='(F5.1)'), $
          '[ ' + arr2str(subfov,/trim) + ' ]']
   file_append,hdoc,strtab2html([[header],[tdata]],/row0) 
   
   gtab=transpose(['GOES X-Ray / PROTONS / EIT Affected Area', $
                   '<img src="' + root + '.gif">' ])
   file_append,hdoc,strtab2html(gtab,/row0)
   file_append,hdoc,['<p>',$
     '<h3> Image and Spectra at time of EIT event peak: '+ $
      anytim(index(epeak),/ecs) +   '</h3>',$
     thumbhtml]
   file_append,hdoc,['<p>',$
     '<h3>Event Movie - Original and "cleaned" version</h3>',$
      movie_html]
   html_doc,hdoc,/trailer

   savegen,file=genxfile,root,time0,time1,threshold,subfov,index,pindex,cstats

endif

return
end


Web curator: Frédéric Auchère
Responsible NASA official: Joseph B. Gurman, Facility Scientist, Solar Data Analysis Center
joseph.b.gurman@gsfc.nasa.gov
+1 301 286-4767
NASA Goddard Space Flight Center
Solar Physics Branch / Code 682

Last revised: - Wed May 9 21:45:20 2007- F. Auchère