10-Jun-1998
Status of study on Gam-Dra fluxes and related pointing errors
=============================================================
Author: H. Feuchtgruber
0) Introduction and Purpose
Purpose of this study has been to find possible reasons for the flux
modulations, seen on the regular Gam-Dra key-wavelength observations via the
CAP analysis for CAL13 derivation. Here no CAP was applied, but just simple
IA scripts in order to reproduce these modulations in a fast way and by
inspecting the product header and the AOCS files to get all relevant
supplementary information to correlate with.
A first report on this study is given in REF. 1., compare also with the CAP
key-wavelength results from REF. 2.
1) Description of the available data
On top of the regular AOT06 key-wavelength observations all other AOTs on
Gam-Dra were included in this data sample. All processing started from SPD
level with latest grating wavelength calibration (incl. time dependencies)
applied. The SPDs were retrieved from the archive, processed with pipeline V6.x.
Supplementary information was extracted per observation from the SPD header
and the AOCS files and stored into IDL arrays:
- Revolution number - Rollangle
- Mean startracker y - Mean startracker z
- Guidestar number - RA, DEC, corrected RA, corrected DEC
- V ISO - Solar aspect angle
- AOT number - Heliocentric correction
A total of 120 observations were carried out starting from REV24 to REV867.
Every observation usually contains 16 passbands, including 2C', 4', 4A and 4D,
but not all observations (--> AOT02s) did contain all bands. Corrected
pointings were not yet available for all observations, the period between
REV450-REV620 was not yet processed with the respective pipeline version,
however during this period already the improved pointing was implemented in the
uplink. Therefore the corrected pointing should ideally be equal to the uplinked
pointing, differing only by numerical rounding errors.
2) Data processing
The observations are processed within IA by an IDL 3.6.1 script listed in
appendix A and B. It mainly consists of:
- Read in the files (SWSP* and AOCS*)
- Initialize supplemental arrays
- Extract the header information
- Derive mean STR Y and STR Z
- Update wavelength calibration (GET_GRAT_ANG, WAVE)
(not quite correct for AOT01s, but reasonably accurate for this
purpose)
- DAAR
- Flatfielding and sigma-clipping
- Derive mean flux and STDEV of flux
- Loop through all passbands
- Loop through all files
- Store results
In case of no data being available within a passband, the derived flux values
remained at 0. Due to some missing or corrupt (TM/TC, memory) lines, several
checking steps in the script make sure that only useful data is selected for
analysis.
In order to get clear trends for fluxes, only one (!) CAL13 has been used
to process all the observations (CAL13_017, with entries for band 4A
and 4D to allow processing). A preliminary CAL25 for band 4A and CAL25_010 for
band 4D were used within RESPCAL. Otherwise, all calfiles and the TIMEDEP file
from OLP 7.0 are used during DAAR.
3) Results
3.1 Fluxes in passbands
Figure 1 gives all the derived fluxes within the passbands of the related
AOT band versus revolution. Also the three Gam-Dra raster exercises in REV126,
REV368 and REV369 are included in this sample, clearly to be seen for example
in band 1D. The flux modulations can clearly be seen in 2A,2B,2C,2C',3A,3C,
3D,3E,4A,4D. Band 4 and 4' have too low flux to provide a statement there.
No related modulation of comparable amplitude can be seen in band 1. It should
be noted that a more accurate characterisation of the Gam-Dra fluxes for the
actual flux calibration via the actual CAP is described in REF. 2., this study
focussed mainly on the investigation for the reason of the modulation.
Fluxes are heavily affected by pointing inaccuracies, as can be seen in the
period before REV369, when significant pointing errors happened. Also the use
of different guidestars with different accuracies are suspect in introducing
additional noise in the flux trends. The best explanation, however still not
proven so far, for the flux modulation is a systematic pointing error towards
Gam-Dra. Band 1 has basically 0 FPG offset, while all the other bands are offset
by 2"-3". This makes bands 2,3,4 sensitive to even small (~1") pointing errors,
as they are operated close to the edge of the flat top of the SWS beam profile.
Band 1 remains rather robust against pointing errors, being centered.
3.2 Pointing
The major source for the observed modulation in flux is thought to be some
systematic in absolute pointing. However no clear source for this error could
be identified so far. Figure 2 gives the reconstructed pointings for the three
periods during the ISO mission with respect to the HIPPARCOS output as
implemented in OLP V7.0 (CINSTRA, CINSTDEC keywords in SPD):
- Before REV369 (no corrections in the uplink)
- Between REV369 and REV452 (STR focal length correction only)
- After REV452 (STR focal length correction + improved sun model)
The STR focal length problem caused a pointing bias towards the guidestar,
increasing with distance of the guidestar from the center of the STR field of
view. It should be also noted that after REV452, when all above corrections
were implemented in the uplink, the corrections in the downlink go to 0, as
both involve the same algorithms. The offset of 0.3" in RA after REV369 is due
to the PGA cut off at 0.1 sec in time of RA. Figure 3 shows for all
observations the position of the guidestar on the startracker field of view,
the revolution and the guidestar number.
The following sources of error which are not yet part of the ISO pointing
reconstruction algorithm have been investigated:
a) Aberration of guidestars
No correction done within OLP V7.0, therefore SCREW 359 has been raised.
The effect can cause errors up to +-1", depending on the ISO velocity
perpendicular to the line of sight towards the guidestar and the location of
the guidestar with respect to the target.
b) Parallax of guidestars
Only few nearby guidestars affected, where some are even too bright to be
selected. Largest error +-0.4" (see also appendix C)
c) Proper motion
Early in the mission (up to REV483, REF. 5) no correction was done for this in the
uplink. After the problem has been discovered, the guidestar catalogue was
cleaned such that stars with proper motion larger than 0.5" per year have been
removed and the catalogue was updated every 3 months with respect to the mid
of every period (REF. 4). Therefore, early in the mission the error has been
straight the proper motion since 1997, while later, the remaining error
is: +-0.06" (see values below for the individual guidestars).
d) Quality of guidestars
The following guidestars were used during SWS Gam-Dra observations:
95358: Class D, RA=17 49 4.313, DEC=+50 46 51.21, HIP#87212,
Proper motion: -0.053,0.210
Maximum bias error up to +-0.17" (REF. 3.)
Hipparcos:
RA = 17 49 04.3355 difference = -0.3"
DEC = +50 46 49.96 difference = +1.2"
Parallax: 0.01503
Proper motion: -0.05189,0.21815
95527: Class 1, RA=17 50 37.796, DEC=+51 14 31.72, HIP#87328,
Proper motion: -0.029,0.042
Maximum bias error up to +-0.73" (REF.3.)
Hipparcos:
RA = 17 50 37.80 difference = -0.06"
DEC = +51 14 31.5 difference = +0.22"
Parallax: 0.00431
Proper motion: -0.02425,0.03842
96906: Class 1, RA=18 0 49.807, DEC=+53 37 43.82, HIP#88212,
Proper motion: -0.001,0.014
Maximum bias error up to +-0.73" (REF.3.)
Hipparcos:
RA = 18 00 49.81 difference = -0.045"
DEC = +53 37 43.7 difference = +0.12"
Parallax: 0.0031
Proper motion: 0.00862,0.00486
97717: Class C, RA=18 6 53.474, DEC=+50 49 21.90, HIP#88732,
Proper motion: -0.003,0.095
Maximum bias error up to +-0.17" (REF. 3.)
Hipparcos:
RA = 18 06 53.47 difference = -0.3"
DEC = +50 49 21.4 difference = +0.5"
Parallax: 0.00845
Proper motion: 0.00473,0.09223
The differences between the ISO guidestar catalogue and the HIPPARCOS
catalogue are mainly due to the fact that HIPPARCOS is J(1991.25) and the ISO
catalogue is J(1997), but there are also small further differences, because
the ISO catalogue has been a sort of pre-release of the HIPPARCOS cat. by BdL
and was not updated to its final version. This results in slight differences
in proper motions and parallaxes.
It is quite obvious that a combination of the individual sources of pointing
errors listed above can cause the flux modulation as seen on Gam-Dra.
4) Open Problems
The reason for the fluxmodulation is not yet found, however the abolute
pointing is suspect. Therefore once aberration, parallax and proper motion of
guidestars is available within the corrected pointing in the headers, together
with the guide star catalogue (in its different versions) and the actual used
coordinates of the guidestars per observation (for quality of guidestars,
see REF. 3.) one can reassess the then improved reconstructed pointings. Also
still more correlations between the different extracted data entities could be
tested.
5) Further documents
REF. 1: SWS Ground Segment Meeting 12-13 March 1998, Minutes
REF. 2: EOM, fluxcal document
REF. 3: ISO: In-Orbit Calibration of the AOCS Sensors and Maximisation
of Pointing Performance by A. J. Batten, C. A. Stephenson
REF. 4: ISO: Parameter Estimation from Confirmation Star Data,
C.A. Stephenson
REF. 5: MOD/SMD/JF/RC/115
6) Figure captions
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
===========================