Make local copy of the events set Open AUX file belonging to input set. if mode == 'HTR' { Subroutine calculateHTRFrameTimes open event lists of all CCD sum of all Delta_T to create times per frame } Subroutine addExposureTable find rows of AUX1 table with CCDID = current CCD copy only these rows of columns from AUX1 to EXPOSURE table close AUX1 table find and delete duplicate rows of EXPOSURE table sort and check EXPOSURE table set BAD_FRAME flag if mode == 'SPECTROSCOPY' { Subroutine processFrameTimes calculate frame integration times calculate frame event time by setting time to mid of exposure period } else mode == 'HTR' { Subroutine fillHTRFrameTimes per frame, find corresponding time calculate frame integration time set BAD_FRAME flag based on minexposuretime } Subroutine processPixelTable add standard attributes correct frame numbersof PIXEL table for int16 wrap around rename RAWX/RAWY to TELX/TELY find and delete duplicate rows of PIXEL table create new RAWX/Y and shift pixel number by +1 if more /= 'HTR' add SHAPE and GRADE columns based on dpp software version if windowdx indicates Single Readout Node "pseudo-mode" revert pixel positions to dual node scheme and set SINGLERO keyword in events header to 1 else set SINGLERO keyword in events header to 0 Subroutine addFracExposure start loop Nodes get number of uplinked bad pixels from CAL calculate FRACEXP end loop Nodes if mode == 'HTR' set FRACEXP = 1 (no processing) Subroutine Pixels_and_Frames optional: add frame rate column optional: set BAD_FRAME flag for number of pixels per frame > maxrawpixels optional: set BAD_FRAME flag for number of pixels per second > maxrawpixelrate Subroutine createGTI add GTI table Subroutine cleanupExposureTable delete unwanted columns from EXPOSURE table