MODULE em_events_module Read the file names of event files (input and output) and frame file Open files Get keyword values parameters read : choice of sub_tasks to execute Loop over input task parameters Read the task parameter / 1 to perform the procedure, 0 not to perform it / End loop Get the values of files columns in memory SUBROUTINE CUT_BAD if cut_bad requested then read bad pixels in extension Loop over frames Creation of image using inverse pattern definition Connection with binodal task in the case of 2 files (prime and redundant) analysis Set bad pixels to 0 Loop over events Use of EDUSOFT code for new pattern reconstruction creation of new rows and destruction of old ones end loop end loop endif SUBROUTINE DIAGO if diago requested then Loop over event rows for diagonal patterns Check if both E1 and E2 energies are different from Si K energy In this case : first correct the existing pattern pattern is 0, e2 is 0, others the same second create another pattern pattern is 0, e1 is old e2, X & Y to be calculated depending on pattern e2 is 0, others the same both patterns are flagged ( do not correct the NVALID in the file frame ) end loop new rows have been created at the end of file now shift of lines in order to insert new events Loop over number of new lines Shift all rows following place of insertion end loop endif Check events with energy value below EMDHLOW or above EMDHHIGH SUBROUTINE CUT_GTI if cut_gti requested then Loop over frame rows all events whose frames were flagged are flagged for rejection end loop endif SUBROUTINE PUT_XY if put_xy requested then Loop over events center the events, substract the underscan, add 1. flag the events outside the field of view end loop Modify window keywords Compute camera coordinates endif SUBROUTINE PUT_TI ( Imaging mode ) if put_ti requested then Loop over frame rows Loop over events rows calculate the average time for the frame copy this time in the time column of events file end loop end loop endif SUBROUTINE PUT_TT ( Timing mode ) if put_tt requested then Loop over frame rows Loop over events rows calculate the new time as reference frame time plus Y offset copy this time in the time column of events file end loop end loop endif SUBROUTINE REJECT_ROWS if reject_rows requested then Loop over frame rows Loop over events rows Build RAWY profile end loop Loop over events rows Flag events with RAWY profile larger than maxeventsperrow If 2 or more, flag events within +/- widthnexttorow (in the same frame) as well end loop end loop endif SUBROUTINE REJECT_E3 if reject_e3 requested then if detectbadoffsets and not SW mode then Build median E3 on each row and column Look for successive rows/columns with median E3 < -100 Solve E3(i) = - 3*offset(i-1) - 2*offset(i) - 3*offset(i+1) to deduce which offset is wrong Flag events on rows/columns with wrong offset endif Read e3threshold from CAL Loop over events rows Flag events with pattern <= 4 and E3 < e3threshold end loop endif For each triplet in tolfxy, call REJECT_FLICKERING SUBROUTINE REJECT_FLICKERING(ftol,xtol,ytol) Ignore events OUT_OF_CCD_WINDOW, IN_BAD_FRAME, ON_BADROW, ON_BADPIX volref = (2*ftol+1) * (2*xtol+1) * (2*ytol+1) Get map of average event density, smoothed at xtol, ytol Get number of events per frame, smoothed at ftol Loop over events Count number of other events within ftol, xtol, ytol Estimate local average from larger of averages over FRAME (for sources) and RAWX,RAWY (for flares) If Poisson probability to get observed counts is > 1E-6, count as peak end loop Keep only local maxima among peaks Loop over peaks Identify events closer than 2*ftol in FRAME, 10*(xtol,ytol) in RAWX,RAWY If spatial distribution is compatible with a source (not too peaked, not too elongated) don't flag else flag events close to the peak, up to the point where the density meets the average end loop SUBROUTINE SP_GATTI if sp_gatti requested then Loop over events rows calculate the E1 spectrum, the (E1+gatti) spectrum and the gatti spectrum end loop Convolution of E1 and gatti spectra endif sequence of instructions for outevent1 creation closing files end module