C+ C NAME: C A_mod_mainf C PURPOSE: C This is the main Fortran program to index TMO/SMEI data using utilizing C Spatial Index functions from the c++ file A_mod_L12_all.cpp C CATEGORY: C SMEI data analysis C CALLING SEQUENCE: C INPUTS: C Various parameters are presently specified by data statements at the top C This program presently combines data from a single SMEI camera C OUTPUTS: C A data file listing pedestal and dark current values versus frame number C A grid file containing the resulting sky map C CALLS: C set_flatfields !sets the appropriate flatfields for the selected camera C read_frame !reads a frame of data C pedestalr !removes pedestal from empty pixels C darkr !removes dark current from covered pixels C cosmicra !cosmic ray removal C lsff !large scale flatfield C ssff !small scale flatfield C rotate8 !euler angle rotation C indexframe !frame indexing routine C SEE ALSO: C INCLUDE: C COMMON BLOCKS: C PROCEDURE: C This program uses the hierarchical triangle coordinate system from Johns Hopkins, C as a base upon which the photometric measurements from a single SMEI camera are C combined and then averaged to produce a surface-brightness sky map. The "level" C parameter governs the granularityof the triangular coordinate frame. The C coordinates of the four corners of a pixel (or bin) are transformed down into C this frame, and the photometric surface brightness as measured by that pixel is C added to all triangles whose centers lie within the rectangle. C This surface brightness is corrected by 1/cosine of the pixel's angle to the camera C axis, and by r/r0 the pixel's1 fractional distance to the FOV's rotational center C When the data sequence is finished, all triangle response sums are C averaged and the resulting sky map binned into an output surface brightness map. C MODIFICATION HISTORY: C 2002,2003 Aaron Smith (UCSD/CASS) C 2002->Original version C 2003->removed most C++ functions and re-wrote in fortran as subroutines C ->add quaternion capabilities C DEC-2002, Paul Hick (UCSD/CASS; pphick@ucsd.edu) C Defined LEVEL and KMAX as parameters. KMAX is determined from LEVEL. C KMAX is then used to dimension arrays node, nodeid and hits C JAN-2003, Andrew Buffington (UCSD/CASS) C Integrated standard pedestal and dark current routines, FORTRAN C Rendered names compliant with those of B.V. Jackson C Incorporated 1/cosine surface-brightness correction for aperture perspective (currently in indexframe routine) C Incorporated large and small scale flatfield corrections C Incorporated FORTRAN read subroutine C- PROGRAM A_mod_mainf 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 = 11 ) integer*8 TOP_KMAX parameter ( TOP_KMAX = 2*(4**(TOP_LEVEL+1)) ) real*4 node ( TOP_KMAX ) !/TOP_KMAX*0.0/ integer*8 nodeid( TOP_KMAX ) !/TOP_KMAX*0 / integer*2 hits ( TOP_KMAX ) !/TOP_KMAX*0 / integer*2 level /TOP_LEVEL/ integer*8 kmax /TOP_KMAX/ C real*4 frame (1272,256) C real*4 framessff (1272,256) C real*4 framelsff (1272,256) C real*4 framelsffu (1272,256) real*4 frame (318,64) real*4 framessff (318,64) real*4 framelsff (318,64) real*4 framelsffu (318,64) real*4 ped /0./ real*4 dark /0./ C real*4 avg (1272,256) /0./ real*4 avg (318,64) /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 /4/ !onboard binning mode integer*4 ic /2/ !Camera # integer*4 ifm /0/ !ROI mask (0=no,1=yes) integer*4 id /318/ !1280 for TMO integer*4 jd /64/ !600 for TMO integer*4 icrcnt /0/ integer*4 neighbors /0/ C integer*4 iframemask (1272,256) /325632*1/ C integer*4 ihit(1272,256) integer*4 iframemask (318,64) /20352*1/ integer*4 ihit(318,64) integer*4 ihist(250) integer*4 image1(1200,1200) /1440000*0/ integer*4 image2(1200,1200) /1440000*0/ integer*4 image3(1200,1200) /1440000*0/ integer*4 npolarimage(1600,1600) /2560000*0/ integer*4 spolarimage(1600,1600) /2560000*0/ integer*4 ikbad /1/ integer*4 badk,imaxaurora integer*8 k character kbad(10000)*6 real*4 response(10000),tempresp c c AARON'S DECLARATIONS c character infile*47, infile9*44, listfile*23,framename*28, mytime*6, badtime*6, dum1*2, dum2*2, dum3*2 character outfile1*20,outfile2*20,outfile3*20, outfile4*18, outfile5*18 integer*4 idarkcr, icra, meascnt, jday, date, hour, maxk, mink,ipixsum,ipixdif integer*4 i, j, ss, fcnt real*8 phi, rlat, f, pixsum, pixdif C real*8 x(4), y(4), ra(4), dec(4) real*8 qcam(3,4), qc(4), qsc(4), qandy(4), qdum(4), qfinal(4) data ihist /250*0/ C data ihit /81408*0/ data ihit /20352*0/ !! updated test quaternions (e1=-86.10, e2=59.05, e3=-6.75) qcam(2,1) = -0.268131D0 qcam(2,2) = 0.0170381D0 qcam(2,3) = 0.962053D0 qcam(2,4) = 0.0476403D0 !! refined camera 1 quaternions [-28.5,70.4,-21.5] qcam(1,1) = -0.237689D0 qcam(1,2) = 0.467706D0 qcam(1,3) = 0.848236D0 qcam(1,4) = 0.0724612D0 !! test quaternion for camera 3 [-143.3, 63.43, -0.42] qcam(3,1) = 0.203781D0 qcam(3,2) = 0.437286D0 qcam(3,3) = -0.869462D0 qcam(3,4) = -0.106259D0 !!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 meascnt=0 print*, 'Fortran In ...' c print*, 'Level: ', level, ' (array size: ', kmax,')' adu2e=4.5*65536./hroom c call set_flatfields(ic,framessff,framelsff,framelsffu) !note dimensions should be checked before ff is done... c call set_cr_backgnd(mode,ic,ifm,id,jd,avg) imaxaurora=0 c if(ic.eq.1)then c imaxaurora=2747 c open(19,file='aurora1.txt') c endif c if(ic.eq.2)then c imaxaurora=9848 c open(19,file='aurora2.txt') c endif c if(imaxaurora.gt.0)then c do i=1,imaxaurora c read(19,19)dum1, dum2, dum3,tempresp ! Not reading in date, only time of day. If no aurora for >24 hours, could have problem. c19 format(10x,a2,1x,a2,1x,a2,12x,f7.2) c write(badtime,'(a2,a2,a2)')dum1,dum2,dum3 c kbad(i)=badtime c response(i)=tempresp c tempresp=0 cc print*, response(i) c enddo c close(19) c endif !! loop to index many orbits separately do ss= 1,1 !19,36 if(ss.eq.1) then c ic=1 date=0529 hour=03 if(ic.eq.1)then maxk=1282 mink=1 endif if(ic.eq.2)then maxk=50 !1180 mink=1 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.2)then c ic=1 date=0529 hour=04 if(ic.eq.1)then maxk=2593 mink=1283 endif if(ic.eq.2)then maxk=2411 mink=1181 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.3)then c ic=1 date=0529 hour=06 if(ic.eq.1)then maxk=3640 mink=2594 endif if(ic.eq.2)then maxk=3484 mink=2412 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.4)then c ic=1 date=0529 hour=08 if(ic.eq.1)then maxk=4738 mink=3641 endif if(ic.eq.2)then maxk=4620 mink=3485 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.5)then c ic=1 date=0529 hour=09 if(ic.eq.1)then maxk=5814 mink=4739 endif if(ic.eq.2)then maxk=5691 mink=4621 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.6)then c ic=1 date=0529 hour=11 if(ic.eq.1)then maxk=7069 mink=5815 endif if(ic.eq.2)then maxk=7050 mink=5692 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.7)then c ic=1 date=0529 hour=13 if(ic.eq.1)then maxk=8349 mink=7070 endif if(ic.eq.2)then maxk=8359 mink=7051 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.8)then c ic=1 date=0529 hour=14 if(ic.eq.1)then maxk=9319 mink=8350 endif if(ic.eq.2)then maxk=9449 mink=8360 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.9)then c ic=1 date=0529 hour=16 if(ic.eq.1)then maxk=10411 mink=9320 endif if(ic.eq.2)then maxk=10548 mink=9450 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.10)then c ic=1 date=0529 hour=18 if(ic.eq.1)then maxk=11586 mink=10412 endif if(ic.eq.2)then maxk=11687 mink=10549 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.11)then c ic=1 date=0529 hour=20 if(ic.eq.1)then maxk=12539 mink=11587 endif if(ic.eq.2)then maxk=12618 mink=11687 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.12)then c ic=1 date=0529 hour=21 if(ic.eq.1)then maxk=13569 mink=12540 endif if(ic.eq.2)then maxk=13665 mink=12619 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.13)then c ic=1 date=0529 hour=23 if(ic.eq.1)then maxk=14404 mink=13570 endif if(ic.eq.2)then maxk=14741 mink=13665 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.14)then c ic=1 date=0530 hour=01 if(ic.eq.1)then maxk=15293 mink=14390 endif if(ic.eq.2)then maxk=15834 mink=14742 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.15)then c ic=1 date=0530 hour=02 if(ic.eq.1)then maxk=16230 mink=15294 endif if(ic.eq.2)then maxk=16995 mink=15835 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.16)then c ic=1 date=0530 hour=04 if(ic.eq.1)then maxk=17421 mink=16231 endif if(ic.eq.2)then maxk=18238 mink=16996 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.17)then c ic=1 date=0530 hour=06 if(ic.eq.1)then maxk=18697 mink=17422 endif if(ic.eq.2)then maxk=19538 mink=18239 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.18)then c ic=1 date=0530 hour=07 if(ic.eq.1)then maxk=19846 mink=18698 endif if(ic.eq.2)then maxk=20773 mink=19539 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.19)then c ic=1 date=0530 hour=09 if(ic.eq.1)then maxk=20976 mink=19847 endif if(ic.eq.2)then maxk=22018 mink=20774 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.20)then c ic=1 date=0530 hour=11 if(ic.eq.1)then maxk=22229 mink=20977 endif if(ic.eq.2)then maxk=23352 mink=22019 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.21)then c ic=1 date=0530 hour=12 if(ic.eq.1)then maxk=23588 mink=22230 endif if(ic.eq.2)then maxk=24732 mink=23353 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.22)then c ic=1 date=0530 hour=14 if(ic.eq.1)then maxk=24893 mink=23589 endif if(ic.eq.2)then maxk=26043 mink=24733 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.23)then c ic=1 date=0530 hour=16 if(ic.eq.1)then maxk=26096 mink=24894 endif if(ic.eq.2)then maxk=27258 mink=26044 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.24)then c ic=1 date=0530 hour=18 if(ic.eq.1)then maxk=27282 mink=26097 endif if(ic.eq.2)then maxk=28409 mink=27259 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.25)then c ic=1 date=0530 hour=19 if(ic.eq.1)then maxk=28437 mink=27283 endif if(ic.eq.2)then maxk=29543 mink=28410 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.26)then c ic=1 date=0530 hour=21 if(ic.eq.1)then maxk=29431 mink=28438 endif if(ic.eq.2)then maxk=30577 mink=29544 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.27)then c ic=1 date=0530 hour=23 if(ic.eq.1)then maxk=30643 mink=29432 endif if(ic.eq.2)then maxk=31779 mink=30578 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.28)then c ic=1 date=0531 hour=00 if(ic.eq.1)then maxk=31704 mink=30644 endif if(ic.eq.2)then maxk=32880 mink=31780 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.29)then c ic=1 date=0531 hour=02 if(ic.eq.1)then maxk=32923 mink=31705 endif if(ic.eq.2)then maxk=34088 mink=32881 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.30)then c ic=1 date=0531 hour=04 if(ic.eq.1)then maxk=34051 mink=32924 endif if(ic.eq.2)then maxk=35287 mink=34089 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.31)then c ic=1 date=0531 hour=05 if(ic.eq.1)then maxk=35118 mink=34052 endif if(ic.eq.2)then maxk=36424 mink=35288 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.32)then c ic=1 date=0531 hour=07 if(ic.eq.1)then maxk=36112 mink=35119 endif if(ic.eq.2)then maxk=37563 mink=36425 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.33)then c ic=1 date=0531 hour=09 if(ic.eq.1)then maxk=37158 mink=36113 endif if(ic.eq.2)then maxk=38753 mink=37564 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.34)then c ic=1 date=0531 hour=10 if(ic.eq.1)then maxk=38166 mink=37159 endif if(ic.eq.2)then maxk=39998 mink=38754 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.35)then c ic=1 date=0531 hour=12 if(ic.eq.1)then maxk=39476 mink=38167 endif if(ic.eq.2)then maxk=41318 mink=39999 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.36)then c ic=1 date=0531 hour=14 if(ic.eq.1)then maxk=40729 mink=39477 endif if(ic.eq.2)then maxk=42583 mink=41319 endif C write(listfile,'(A13,I1,A1,I4.4,A4)') 'DATA_SMEI/cam',ic,'_',date,'.txt' C write(listfile,'(A13,I1,A1,I3.3,A4)') 'DATA_SMEI/cam',ic,'_',jday,'.txt' elseif(ss.eq.999)then c ic=2 date=0529 hour=99 if(ic.eq.3)then maxk=1517 mink=1 endif if(ic.eq.2)then maxk=19870 !!20065 mink=19866 endif write(listfile,'(A15,I4.4,A4)') 'DATA_SMEI/list_',date,'.txt' endif if(ic.eq.1)write(listfile,'(A23)') 'DATA_SMEI/list_cam1.txt' if(ic.eq.2)write(listfile,'(A23)') 'DATA_SMEI/list_cam2.txt' C write(listfile,'(A23)') 'DATA_SMEI/list_0227.txt' C write(listfile,'(A23)') 'DATA_SMEI/list_0228.txt' C write(listfile,'(A23)') 'DATA_SMEI/list_0301.txt' C write(listfile,'(A23)') 'DATA_SMEI/list_0034.txt' C write(listfile,'(A23)') 'DATA_SMEI/list_0035.txt' do k=1,kmax node(k)=0.0 nodeid(k)=0 hits(k)=0 enddo c open(12,file='DATA_SMEI/temp.txt',status='old') open(12,file=listfile,status='old') do k=1,maxk read(12,12)framename 12 format(a28) write(mytime,'(a6)') framename(16:21) badk=0 c if(mytime.eq.kbad(ikbad))then c if(response(ikbad).gt.6.) badk=1 cc if(response(ikbad).gt.20.) badk=1 c if(ikbad.lt.imaxaurora) ikbad=ikbad+1 c endif c if(k.ge.mink.and.badk.eq.1) print*, mytime, response(ikbad-1) if(k.ge.mink.and.badk.eq.0)then !Choose badk.eq.1 to do aurora frames if(ic.eq.1)then if(k.le.13989)write(infile,'(A19,A28)') 'DATA_SMEI/cam10529/',framename if(k.gt.13989.and.k.le.30149)write(infile,'(A19,A28)')'DATA_SMEI/cam10530/',framename if(k.gt.30149.and.k.le.40752)write(infile,'(A19,A28)') 'DATA_SMEI/cam10531/',framename endif if(ic.eq.2)then if(k.le.13989)write(infile,'(A19,A28)') 'DATA_SMEI/cam20529/',framename if(k.gt.13989.and.k.le.30149)write(infile,'(A19,A28)')'DATA_SMEI/cam10530/',framename if(k.gt.30149.and.k.le.40752)write(infile,'(A19,A28)') 'DATA_SMEI/cam10531/',framename endif c write(infile,'(A13,I1,A1,I4.4,A1,A28)') 'DATA_SMEI/cam'ic,'_',date,'/',framename C if(ic.eq.3) write(infile,'(A19,A28)') 'DATA_SMEI/cam30529/',framename C write(infile,'(A14,I4.4,A1,A28)') 'DATA_SMEI/2003',date,'/',framename print 1001,k,infile !if(mod(k,100).eq.0) 1001 format(i7,': ',a47) call read_framecrx_mode(infile,mode,ic,id,jd,frame,qdum,meascnt) C call read_framecrx_old_i2(infile,mode,ic,id,jd,frame,qdum) c do i=1,318 c do j=1,64 c if(frame(i,j).ne.0) frame(i,j)=frame(i,j)+0.025*float(meascnt) c enddo c enddo !! 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 cra=0.D0 c cdec=90.D0 c call rotateq(qfinal,cra,cdec) !!rotate to standard system c print*, ' RA/DEC: ',cra,cdec c call pedestalr(mode,ic,ifm,id,jd,iframemask,frame,ped) c call darkr(mode,ic,ifm,id,jd,iframemask,frame,dark,adu2e,idarkcr,ihit,ihist) c call cosmicra(mode,ic,ifm,id,jd,iframemask,frame,avg,adu2e,icrcnt,ihist,ihit,neighbors) c print*, icrcnt c print 1000,ped,dark,idarkcr,icrcnt,neighbors c1000 format(' Frame ',i6,', Ped = ',f8.2,', Dark = ',f8.2,', cosmic rays ',3i5) c write(11,11)ped,dark,idarkcr,icrcnt,neighbors c11 format(i6,2f10.2,3i7) c call lsff(mode,ic,ifm,id,jd,iframemask,framelsff,frame) c call ssff(mode,ic,ifm,id,jd,iframemask,framessff,frame) call indexframe(mode,ic,id,jd,level,TOP_KMAX,node,nodeid,hits,frame,affine,qfinal) endif !!end if block to include only one orbit enddo !!end k frame loop close(12) print*, 'Calling average night' call averagenight_allsky(node,nodeid,hits,TOP_KMAX,level,image1,image2,image3, npolarimage, spolarimage) print*, 'Night Averaged, Writing Files...' if(ss.lt.1000)then !!Write image1(sky atlas) to file write (outfile1,'(I4.4,A1,I2.2,A13)') date,'_',hour,'_EqPlot_1.grd' open (10,file = outfile1, form = 'formatted') write(10,10) 10 format('DSAA'/'1200 1200'/'0 120'/'-60 60'/'0 1400') do j=1,1200 write(10,'(20i6)')(image1(i,j),i=1,1200) enddo close(10) write (outfile2,'(I4.4,A1,I2.2,A13)') date,'_',hour,'_EqPlot_2.grd' open (13,file = outfile2, form = 'formatted') write(13,13) 13 format('DSAA'/'1200 1200'/'120 240'/'-60 60'/'0 1400') do j=1,1200 write(13,'(20i6)')(image2(i,j),i=1,1200) enddo close(13) write (outfile3,'(I4.4,A1,I2.2,A13)') date,'_',hour,'_EqPlot_3.grd' open (14,file = outfile3, form = 'formatted') write(14,14) 14 format('DSAA'/'1200 1200'/'240 360'/'-60 60'/'0 1400') do j=1,1200 write(14,'(20i6)')(image3(i,j),i=1,1200) enddo close(14) write (outfile4,'(I4.4,A1,I2.2,A11)') date,'_',hour,'_npolar.grd' open (15,file = outfile4, form = 'formatted') write(15,15) 15 format('DSAA'/'1600 1600'/'-40 40'/'-40 40'/'0 1400') do j=1,1600 write(15,'(20i6)')(npolarimage(i,j),i=1,1600) enddo close(15) write (outfile5,'(I4.4,A1,I2.2,A11)') date,'_',hour,'_spolar.grd' open (16,file = outfile5, form = 'formatted') write(16,16) 16 format('DSAA'/'1600 1600'/'-40 40'/'-40 40'/'0 1400') do j=1,1600 write(16,'(20i6)')(spolarimage(i,j),i=1,1600) enddo close(16) endif !!don't waste time writing files when testing enddo !!end ss loop to separately index many orbits print*, ' ' print*, 'All Orbits Finished!!!' END