Figure 1:
Fluxes off all passbands vs. revolutions divided by their median.
Bands 4 and 4' have too low flux, therefore points fall already
outside the scaling.
Figure 2:
Reconstructed pointings of all SWS Gam-Dra observations from SPD V6.x
headers relative to the Hipparcos position
Figure 3:
Guidestar positions for all Gam-Dra observations on startracker field
of view. The differnt guidestars (see legend for ISO guidestar numbers)
are marked with different symbols together with the revolution in which
they are used.
Appendix A
Listing of script to analyse all the Gam-Dra observations:
==============================================================
; initialize and read all the filenames
; do not forget to setup for AOT band 4A
;
path1='dkb100:[fgb.data.gamdra]'
path2=path1
string=''
aocsname=strarr(2000)
openr,in,path1+'listing1.txt',/get_lun
i=0
while ( not ( eof( in ) ) ) do begin
readf,in,format='(a)',string
if (strmid(string,0,4) eq 'AOCS') then begin
aocsname(i)=strmid(string,0,17)
i=i+1
endif
endwhile
close,in
swspname=strarr(2000)
openr,in,path2+'listing2.txt',/get_lun
i=0
while ( not ( eof( in ) ) ) do begin
readf,in,format='(a)',string
if (strmid(string,0,4) eq 'SWSP') then begin
SWSPname(i)=strmid(string,0,17)
i=i+1
endif
endwhile
close,in
aocsname=aocsname(where(aocsname ne ''))
swspname=swspname(where(swspname ne ''))
if n_elements(swspname) ne n_elements(aocsname) then stop
restore,'cal23.idl'
cal13=readcal(13,cal='[.b4ext]CAL13_017_EXT4.FITS')
cal13.data(7).aot_band='2C'
cal13.data(13).aot_band='4'
; adapt shifted key_wavelengths for 4A and 4D
cal13.data(14).key_wavelength=14.13
cal13.data(15).key_wavelength=24.268
lineflux=fltarr(n_elements(swspname),16)
result=fltarr(n_elements(swspname),16,2)
roll=fltarr(n_elements(swspname))
rev=fltarr(n_elements(swspname))
guidestar=fltarr(n_elements(swspname))
aotnum=strarr(n_elements(swspname))
ra=fltarr(n_elements(swspname))
dec=fltarr(n_elements(swspname))
cra=fltarr(n_elements(swspname))
cdec=fltarr(n_elements(swspname))
solas=fltarr(n_elements(swspname))
trefhel2=fltarr(n_elements(swspname))
viso=fltarr(n_elements(swspname))
stry=fltarr(n_elements(swspname))
strz=fltarr(n_elements(swspname))
restore,'dkb100:[fgb.data.gamdra]colguideforgamdra.idl'
sc=180.*60*60/!pi
plot,indgen(14400)-7200.,indgen(10800)-5400.,/nodata,$
tit='Guidestar Positions on STR for Gam-Dra Observations',$
xtit='arcsec',ytit='arcsec',charsize=1.5,charthick=2.,xst=1,yst=1
; do it now for all revolutions available
for i=0,n_elements(swspname)-1 do begin $
header=rd_fitsfile_hdr(path2+swspname(i))
a=read_fits_key(header,'INSTROLL',r,comment)
roll(i)=float(r)
rev(i)=float(strmid(swspname(i),4,3))
a=read_fits_key(header,'ATTGUIDE',r,comment)
guidestar(i)=float(r)
a=read_fits_key(header,'EOHAAOTN',r,comment)
aotnum(i)=r
a=read_fits_key(header,'ATTRA',r,comment)
ra(i)=float(r)
a=read_fits_key(header,'ATTDEC',r,comment)
dec(i)=float(r)
a=read_fits_key(header,'CINSTRA',r,comment)
cra(i)=float(r)
a=read_fits_key(header,'CINSTDEC',r,comment)
cdec(i)=float(r)
a=read_fits_key(header,'ATTSAANG',r,comment)
solas(i)=float(r)
a=read_fits_key(header,'TREFHEL2',r,comment)
trefhel2(i)=float(r)
a=read_fits_key(header,'TREFDOP2',r,comment)
viso(i)=float(r)
aocs=read_faocs(path1+aocsname(i))
ind=where(colguide eq guidestar(i))
plots,mean(float(aocs.data.stry/839825.)*sc),$
mean(float(aocs.data.strz/839825.)*sc),psym=4,col=ind(0)*70+40,$
symsize=2.,thick=5.
xyouts,mean(float(aocs.data.stry/839825.)*sc)-20,$
mean(float(aocs.data.strz/839825.)*sc)+60,$
strmid(strtrim(string(fix(rev(i))),2),0,3),charsize=1.
xyouts,mean(float(aocs.data.stry/839825.)*sc)-300,$
mean(float(aocs.data.strz/839825.)*sc)-150,$
strmid(strtrim(string(roll(i)),2),0,5),charsize=1.
stry(i)=mean(float(aocs.data.stry/839825.)*sc)
strz(i)=mean(float(aocs.data.strz/839825.)*sc)
print,rev(i),roll(i),guidestar(i)
spd=read_fspd(path2+swspname(i))
spd=get_grat_ang(spd)
spd=wave(spd,cal23=c23)
aar=daar(spd,cal13='[.b4ext]CAL13_017_EXT4.FITS')
; do it for all lines in that revolution
if is_aar(aar) then begin $
for j=0,15 do begin $
upper=cal13.data(j).key_wavelength+cal13.data(j).passband/2
lower=cal13.data(j).key_wavelength-cal13.data(j).passband/2
ind=where(aar.data.wave ge lower and aar.data.wave le upper)
; do it only if data points exist for that line, because not all lines were
; done in all revolutions
if n_elements(ind) ge 10 then begin $
; cut out your line and do some standard processing
cutaar,aar,test,lower,upper,strtrim(cal13.data(j).aot_band,2)
test=sws_flatfield(test,lines=0,/noplot,aot_band=cal13.data(j).aot_band)
test=sigclip(test,sig=3,lines=0,nit=4,res=1800,$
aot_band=cal13.data(j).aot_band,/noplot)
cutaar,test,test,lower,upper,strtrim(cal13.data(j).aot_band,2)
; derive the flux and store all results of interest in the variables
; lineflux and result
; i = revolutions, j = bands
lineflux(i,j) = mean(test.data.flux)
result(i,j,0) = stdev(test.data.flux)
do some output control
print,lineflux(i,j)
endif ; enough points in passband
endfor ; all key_wavelength of a file
endif; a valid AAR
endfor ; all files
; save your results in a file
save,file='dkb100:[fgb.data.gamdra]allrollangles.idl',rev,roll,aotnum,ra,dec,$
stry,strz,guidestar,$
cra,cdec,solas,trefhel2
save,file='dkb100:[fgb.data.gamdra]resultsfor_17.idl',lineflux,result
!p.charsize=1.5
legend,strtrim(string(long(colguide)),2),col=indgen(4)*70+40,$
psym=[4,4,4,4],/hori
!p.charsize=1.
end
==============================================================
Appendix B
Code for CUTAAR, called by main script:
==============================================================
pro cutaar,inst,outst,lmin,lmax,aotband
if aotband ne '' then begin $
aotband=strupcase(aotband)
band=['1A','1B','1D','1E','2A','2B','2C','3A','3C','3D','3E','4','5A','5B', $
'5C','5D','6','4A','4D']
ord =[4,3,3,2,2,1,1,2,2,1,1,1,3,2,2,1,1,2,1]
slit=[1,1,2,2,2,2,3,1,2,2,3,3,1,1,2,2,3,1,2]
deth=[12,12,12,12,24,24,24,36,36,36,36,48,49,49,49,49,51,48,48]
detl=[1,1,1,1,13,13,13,25,25,25,25,37,49,49,49,49,51,37,37]
ind=where(band(*) eq aotband)
dummy1=ord(ind)
dummy2=slit(ind)
dummy3=detl(ind)
dummy4=deth(ind)
index=where(inst.data.wave ge lmin and $
inst.data.wave le lmax and $
byte(inst.data.flag) eq (dummy1(0)*32) and $
test_status(inst.data.status,aper=dummy2(0)) eq 1 and $
inst.data.det le dummy4(0) and inst.data.det ge dummy3(0))
endif else begin $
index=where(inst.data.wave ge lmin and $
inst.data.wave le lmax and $
(byte(inst.data.flag) and 1) ne 1 and $
(byte(inst.data.flag) and 2) ne 2 and $
(byte(inst.data.flag) and 16) ne 16)
endelse
if n_elements(index) gt 1 then $
outst=define_aar(header=inst.header,length=n_elements(index),$
data=inst.data(index)) else outst=0
end
===================================================================
Appendix C
Mail from A. Schuetz to Craig Stephenson:
=========================================
Alain Sch=FCtz
05/29/98 02:56 PM
To: Craig Stephenson/vilspa/ESA@ESA
cc: Alan Batten/vilspa/ESA@ESA
Subject: Re: ISO pointing errors (Document link not converted)
Dear Craig,
Concerning the stellar aberration, you are right: is not taken into account
in our S/W. The differential in aberration between the requested pointing
direction and the direction of the guide star is also correct: at most 0.9
arcsecs if the guide star is 2.5 degrees away from the instrument optical
axis.
Proper motion: After the decision was taken to update the star catalogue on
a regular basis (every 3monyhs) the effect of the proper motion can be
neglected. But this not true before. In addition we had problems with the
first version of the star catalogue (list of suspect TDT's available to SOC)..
Parallax: according to text books the nearest star (and hence the highest
parallax) is Proxima Centauri with a parallax of 0.762 arcsecs. However its
visual magnitude is 11.05 , too faint to be observed. The next nearest star
is Alfa Centauri with a parallax of 0.745 arcsecs but with a magnitude of
-0.01 too bright !!!
The nearest star in the visual range 2 to 8.5 has a parallax of 0.400
Hence the error due to the parallax is not greater than 0.4 arcseconds.
What could be done is to reconstitute the pointing direction from the
intended pointing direction, the star position taken from the Tycho output
catalogue, corrected for proper motion, parallax and aberration at the time
of observation, and the commanded star position within the STR field-of-view.
Best regards
===========================