function readstokes,filename,frac=frac ; Reads a HANLERT Stokes file ; Open file openr,dev,filename,/get_lun,error=ierr ; Check that is open if (ierr ne 0) then begin print,' # readstokes: Problem opening file '+filename return, -1 endif ; Check string bit = bytarr(2) readu,dev,bit bits = string(bit) if (bits ne 'be') then begin free_lun,dev print,' # readstokes: '+filename+' is not a HANLERT Stokes file' return, -1 endif ; Read dimensions nfreq = 1L readu,dev,nfreq if (nfreq lt 1) then begin free_lun,dev print,' # readstokes: number of frequencies '+nfreq+' < 0 is an invalid dimension' return, -1 endif ; Read angles ang = dblarr(2) readu,dev,ang ; Read frequencies omg = dblarr(nfreq) readu,dev,omg omg = reverse(1d2/omg) ; Read Stokes stki = dblarr(nfreq,4) readu,dev,stki free_lun,dev ; Fractional pol. if asked if (keyword_set(frac)) then for ii=1,3 do stki[*,ii] /= stki[*,0] ; Rearrange stk = {n: nfreq, theta: ang[0], phi: ang[1], lamb: omg , $ I: reform(reverse(stki[*,0])), Q: reform(reverse(-stki[*,1])), $ U: reform(reverse(-stki[*,2])), V: reform(reverse(stki[*,3]))} return, stk end