C+ C NAME: C A_mainf_transit_test C PURPOSE: C to find the centroid of a star averaged over a transit C CATEGORY: C SMEI Data processing C INPUTS: C C OUTPUTS: C C CALLS: C none C PROCEDURE: C C MODIFICATION HISTORY: C April, 2003 A. Smith (UCSD/CASS) C- program A_mainf_transit_test implicit none ! Dimensions for node, nodeid, hits above must be at least 2*(4**(level+1)) ! For LEVEL = 12, KMAX = 134217728 ! For LEVEL = 8, KMAX = 524288 integer*2 TOP_LEVEL parameter ( TOP_LEVEL = 10 ) integer*8 TOP_KMAX parameter ( TOP_KMAX = 2*(4**(TOP_LEVEL+1)) ) integer*2 level /TOP_LEVEL/ integer*8 kmax /TOP_KMAX/ real*4 frame(1272,256) C real*4 frame(636,128) C real*4 frame(318,64) real*4 ped /0./ real*4 dark /0./ real*4 hroom /49400./ !'headroom'=new onboard value of 65k ADUs real*4 adu2e real*8 affine(6) /6*0.0D0/ ! Affine parameters zero for now real*8 cra real*8 cdec real*8 alfa real*8 beta real*8 gamma real*8 euler(3) real*8 camlat real*8 degperminute real*8 ra0 real*8 arg real*8 arg1 real*8 dusk integer*4 mode /1/ !onboard binning mode integer*4 ic /1/ !Camera # integer*4 ifm /0/ !ROI mask (0=no,1=yes) integer*4 id /1272/ integer*4 jd /256/ integer*4 icrcnt /0/ integer*4 neighbors /0/ integer*4 ihist(250) integer*4 i integer*4 j character listfile*23,framename*28,infile*47 c c AARON'S DECLARATIONS c integer*4 idarkcr, dumcnt4, icra, goodframe, ss, date, maxk integer*8 k, kk, loopcnt real*8 response, arg, arg1, phi, rlat real*8 qcam(3,4), qc(4), qsc(4), qandy(4), qdum(4), qfinal(4) date=0225 write(listfile,'(A15,I4.4,A4)') 'DATA_SMEI/list_',date,'.txt' if(date.eq.0225) maxk=3641 if(date.eq.0226) maxk=3641 if(date.eq.0227) maxk=840 !!maxk=3641 if(date.eq.0228) maxk=3641 if(date.eq.0301) maxk=3641 !! loop through all of the stars do ss=1,1 if(ss.eq.1)then CCC coordinates of Aldebaran print*, 'Aldebaran...' cra=68.9802D0 cdec=16.5093D0 elseif(ss.eq.2)then print*, 'Almach...' cra=30.975D0 cdec=42.330D0 elseif(ss.eq.3)then CCC coordinates of Sirius (HD 48915) print*, 'Sirius...' cra=101.28717D0 cdec=-16.71611D0 elseif(ss.eq.4)then CCC coordinates of Vega (alfa lyra) print*, 'Vega...' cra=279.23475D0 cdec=38.78361D0 elseif(ss.eq.5)then CCC coordinates of Alcaid print*, 'Alcaid...' cra=206.8852D0 cdec=49.3133D0 elseif(ss.eq.6)then CCC coordinates of Eta Draconis print*, 'Eta Draconis...' cra=245.99786D0 cdec=61.51421D0 elseif(ss.eq.7)then print*, 'Betelgeuse...' cra=88.75D0 cdec=7.41D0 elseif(ss.eq.8)then print*, 'Hamal...' cra=31.793D0 cdec=23.463D0 elseif(ss.eq.9)then print*, 'Enif...' cra=326.046D0 cdec=9.875D0 elseif(ss.eq.10)then CCC coordinates of HD 20902 print*, 'HD 20902...' cra=51.0807D0 cdec=49.8611D0 elseif(ss.eq.11)then print*, 'Mirach...' cra=17.433D0 cdec=35.621D0 elseif(ss.eq.12)then print*, 'Vega...' cra=279.23475D0 cdec=38.78361D0 elseif(ss.eq.13)then print*, 'Altair...' cra=297.696D0 cdec=8.869D0 elseif(ss.eq.14)then print*, 'Antares...' cra=247.352D0 cdec=-26.932D0 elseif(ss.eq.15)then print*, 'Arcturus...' cra=213.915D0 cdec=19.183D0 elseif(ss.eq.16)then print*, 'Spica...' cra=201.73D0 cdec=-11.161D0 elseif(ss.eq.17)then print*, 'Alfa Oph...' cra=263.734D0 cdec=12.56D0 elseif(ss.eq.18)then CCC coordinates of Sirius print*, 'Sirius...' cra=101.287D0 cdec=-16.716D0 elseif(ss.eq.19)then CCC coordinates of Achernar print*, 'Achernar...' cra=24.429D0 cdec=-57.236D0 elseif(ss.eq.20)then CCC coordinates Beta CEtus print*, 'BEta Cetus...' cra=10.897D0 cdec=-17.986D0 elseif(ss.eq.21)then print*, 'Canopus...' cra=95.766D0 cdec=-52.695D0 elseif(ss.eq.22)then print*, 'Hamal...' cra=31.793D0 cdec=23.462D0 endif !! Quaternion from Andy's Euler angles for camera 3 qcam(3,1) = 0.216504D0 qcam(3,2) = 0.432944D0 qcam(3,3) = -0.868351D0 qcam(3,4) = -0.107945D0 !! refined camera 1 quaternions, ap003, a3tx9, tx995 qcam(1,1) =-0.2377267D0 qcam(1,2) = 0.4680082D0 qcam(1,3) = 0.8481501D0 qcam(1,4) = 0.0713853D0 !! updated test quaternions(gp020,bm0035) with x0 shift, thetax & thetay correction qcam(2,1) =-0.26839441D0 qcam(2,2) = 0.01748647D0 qcam(2,3) = 0.96205384D0 qcam(2,4) = 0.04594647D0 !!quaternion to rotate Andy's coordinates to Don's qandy(1)=0.5D0 qandy(2)=0.5D0 qandy(3)=0.5D0 qandy(4)=0.5D0 data ihist /250*0/ open(13,file=listfile,status='old') loopcnt=0 do k=1,maxk loopcnt=loopcnt+1 if(loopcnt.eq.100) then print*, k loopcnt=0 endif read(13,13)framename 13 format(a28) if(k.gt.0)then goodframe=0 write(infile,'(A14,I4.4,A1,A28)') 'DATA_SMEI/2003',date,'/',framename C if(date.eq.0529) write(infile,'(A14,I4.4,A1,A28)') 'DATA_SMEI/cam3',date,'/',framename C print*,k,': ',infile C call read_frame(infile,mode,ic,id,jd,frame,qdum) call read_framecrx_old_i4(infile,mode,ic,id,jd,frame,qdum) !! input quaternion is of form ai+bj+ck+d, not d+ai+bj+cK -> swap with new quaternion qsc(1)=qdum(4) qsc(2)=qdum(1) qsc(3)=qdum(2) qsc(4)=qdum(3) !! multiply camera quaternion into spacecraft(frame) quaternion and take the inverse !! of camera quaternion because it goes from sky to ccd qc(1)=qcam(ic,1) qc(2)=-qcam(ic,2) qc(3)=-qcam(ic,3) qc(4)=-qcam(ic,4) call qmultiply(qsc,qc,qdum) call qmultiply(qdum,qandy,qfinal) !!take inverse of final quaternion: going from ccd to sky, not the other way around C qfinal(1)=qfinal(1) qfinal(2)=-qfinal(2) qfinal(3)=-qfinal(3) qfinal(4)=-qfinal(4) C find ra/dec of center of FOV for a frame C find ra of center of the first frame; use to calculate ra bounds in final image C car/cdec calculated from thetax=thetay=0 C phi=0.D0 C rlat=90.D0 C call rotateq(qfinal,phi,rlat) !!rotate to standard system C print*, ' RA/DEC: ',phi,rlat call indexframe(mode,ic,id,jd,affine,qfinal,goodframe,cra,cdec) if(goodframe.eq.1) print*,k,': ',infile endif enddo close(13) enddo 99 print*, 'Fortran out!' end