;label, iso, long, lat ;calib image ; 13165 ; 2022-03-09T20:37:37 ; 77.941986 ; 1.099998 ;-sci frame ; 15117 ; 2022-06-16T20:26:05 ; 173.387755 ; 16.748467 ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--- TAG --- I -- Initialization And Input Verification -----------------------; ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; getSB = 0 id = 15117 ;in RS ; id = 13165 ;in Calib ;--I.1-- Directories ------------------------------------------------------------------------- spawn, 'hostname', host case strTrim(host) of 'hyperion': dirEuclid = '/data/euclid/' 'endymion': dirEuclid = '/home/bcarry/work/data/euclid/' else: stop endcase dirFilter = dirEuclid+'filters/' dirTaxo = dirEuclid+'taxonomy/' dirImg = dirEuclid+'/images/' ;--I.2-- Imaging DIT & Delays ---------------------------------------------------------------- filt= ['VIS','Y','J','H'] ecCol = ['Black', 'Orange', 'Cornflower blue', 'Firebrick'] DIT = [565., 121, 116, 81] pre = [10.,40,20,20] jit = 75. fov = sqrt(0.57) /2. ;-degree radius nbBlock = 4 nbFilter = 4 ;--I.3-- Targeted FOV ------------------------------------------------------------------------ case id of 15117: begin t1 = '2022-06-16T20:26:05' t2 = '2022-06-16T21:36:05' eLon = 173.387755 eLat = 16.748467 fKey = {x:0.06, y:0.07, len:0.05, yShi:0.035} dKey = {x:0.05, y:0.95} lKey = {x:0.95, y:0.95, yShi:0.035, cal:0} zoom={yn:1, name:'2014 WQ501', pos:[173.38, +16.85], rad:0.175, $ ang1:110, ang2:-80} end 13165: begin t1 = '2022-03-09T20:37:37' t2 = '2022-03-09T21:47:37' eLon = 77.941986 eLat = 1.099998 fKey = {x:0.06, y:0.07, len:0.05, yShi:0.035} dKey = {x:0.05, y:0.95} lKey = {x:0.95, y:0.95, yShi:0.035, cal:1} zoom={yn:0} end endcase dirEph = dirImg+strTrim(string(id),2)+'/' if not file_test(dirEph,/dir) then file_mkdir, dirEph raDec = framecoord_ec2eq( eLon, eLat ) ra = raDec[0] dec= raDec[1] jd1 = date_conv( t1, 'JULIAN') vis = 0.1 ;- "/pix nisp = 0.3 ;- "/pix ;--I.4-- Look 'n' Feek ------------------------------------------------------------------------- lineThick = 10 ;stop ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--- TAG --- II -- SkyBot Requests -----------------------; ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; if getSB eq 1 then begin ;--II.1-- First epoch ---------------------------------------------------------------------- ; sso1 = voSkybot_coneSearch( ra, dec, fov*1.5, t1, dump=dirEph+'skybot-'+t1+'.xml', mime='votable') sso1 = voSkybot_coneSearch( ra, dec, fov*1.5, t1, dump=dirEph+'skybot-'+t1+'.txt', mime='text' ) n1 = n_elements(sso1) ;--II.2-- Last epoch ----------------------------------------------------------------------- ; sso2 = voSkybot_coneSearch( ra, dec, fov*1.5, t2, dump=dirEph+'skybot-'+t2+'.xml', mime='votable' ) sso2 = voSkybot_coneSearch( ra, dec, fov*1.5, t2, dump=dirEph+'skybot-'+t2+'.txt', mime='text' ) n2 = n_elements(sso2) ;--II.3-- All times ------------------------------------------------------------------------ for kC=0, nbBlock-1 do begin for kF=0, nbFilter-1 do begin if kF eq 0 then begin before = kC*(jit+total(pre+DIT)) + pre[0] after = kC*(jit+total(pre+DIT)) + pre[0] + DIT[0] endif else begin before = kC*(jit+total(pre+DIT)) + total(pre[0:kF]) + total(DIT[0:kF-1]) after = kC*(jit+total(pre+DIT)) + total(pre[0:kF]) + total(DIT[0:kF]) endelse jdB = jd1 + before/(3600.*24.d) jdE = jd1 + after /(3600.*24.d) isoB = date_conv(jdB, 'FITS') isoE = date_conv(jdE, 'FITS') print, kC,filt[kF], DIT[kF], pre[kF] ,before, $ format='(I1,1x,A-4,1x,I3,2x,I3,4x,I5)' ssoB = voSkybot_coneSearch( ra, dec, fov*1.5, jdB, dump=dirEph+'skybot-'+isoB+'.txt', mime='text' ) ssoE = voSkybot_coneSearch( ra, dec, fov*1.5, jdE, dump=dirEph+'skybot-'+isoE+'.txt', mime='text' ) endfor endfor endif else begin sso1 = voSkybot_read( dirEph+'skybot-'+t1+'.txt', mime='text' ) n1 = n_elements(sso1) sso2 = voSkybot_read( dirEph+'skybot-'+t2+'.txt', mime='text' ) n2 = n_elements(sso2) endelse ;stop ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--- TAG --- III -- Graphic -----------------------; ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--II.1-- Set up EPS ------------------------------------------------------------------------- name = 'Euclid-Sky-'+strTrim(string(id),2)+'.eps' cgPS_open, Filename=dirImg+name, /metric, /decomposed, /encapsulated, $ xSize=35, ySize=35, language_level=2, /quiet, /color xRang = eLon + [-1,1]*fov yRang = eLat + [-1,1]*fov cgPlot, 0,0, /NoData, /Normal, $ xStyle=1, xRange=xRang, $ yStyle=1, yRange=yRang, $ xTitle = 'Ecliptic longitude (!Uo!N)', $ yTitle = 'Ecliptic latitude (!Uo!N)', $ ; xTickInt = 0.1, $ ; yTickInt = 0.1, $ position=[0.09,0.09,0.99,0.99] ;--II.2-- Plot all streaks ------------------------------------------------------------------- for k=0, n1-1 do begin ; for k=0, 20, 2 do begin ;--Current object name1 = sso1[k].name ;-- for each filter, draw the 4 blocks for kF=0, nbFilter-1 do begin for kC=0, nbBlock-1 do begin if kF eq 0 then begin before = kC*(jit+total(pre+DIT)) + pre[0] after = kC*(jit+total(pre+DIT)) + pre[0] + DIT[0] endif else begin before = kC*(jit+total(pre+DIT)) + total(pre[0:kF]) + total(DIT[0:kF-1]) after = kC*(jit+total(pre+DIT)) + total(pre[0:kF]) + total(DIT[0:kF]) endelse jdB = jd1 + before/(3600.*24.d) jdE = jd1 + after /(3600.*24.d) isoB = date_conv(jdB, 'FITS') isoE = date_conv(jdE, 'FITS') ssoB = voSkybot_read( dirEph+'skybot-'+isoB+'.txt', mime='text' ) ssoE = voSkybot_read( dirEph+'skybot-'+isoE+'.txt', mime='text' ) posB = where( strCmp(ssoB.name,name1) ) posE = where( strCmp(ssoE.name,name1) ) if posB[0] ne -1 and posE[0] ne -1 then begin ec1 = frameCoord_eq2ec( ssoB[posB].ra.dec, ssoB[posB].dec.dec ) ec2 = frameCoord_eq2ec( ssoE[posE].ra.dec, ssoE[posE].dec.dec ) ; print, ssoB[posB].ra.dec, ssoB[posB].dec.dec, format='(D)' ; print, ssoB[posE].ra.dec, ssoB[posE].dec.dec, format='(D)' ; print, ec1, format='(D)' ; print, ec2, format='(D)' ;stop lonVec = [ ec1[0], ec2[0] ] latVec = [ ec1[1], ec2[1] ] cgPlot, /OverPlot, lonVec, latVec, color=ecCol[kF], thick=lineThick print, k, n1, kC, kF, name1, $ ec2[0]-ec1[0], $ ec2[1]-ec1[1], $ format='(I3,1x,I3,3x,I1,1x,I1,4x,A-30,5x,F8.5,1x,F8.5)' ; raVec = [ ssoB[posB].ra.dec, ssoE[posE].ra.dec ] ; decVec = [ ssoB[posB].dec.dec, ssoE[posE].dec.dec ] ; cgPlot, /OverPlot, raVec, decVec, color=ecCol[kF], thick=lineThick ; ; print, k, n1, kC, kF, name1, $ ; ssoB[posB].ra.dec - ssoE[posE].ra.dec, $ ; ssoB[posB].dec.dec - ssoE[posE].dec.dec, $ ; format='(I3,1x,I3,3x,I1,1x,I1,4x,A-30,5x,F8.5,1x,F8.5)' endif ;stop endfor endfor endfor ;--II.3-- Key -------------------------------------------------------------------------------- cgPlot, 0,0, /NoData, /NoErase, /Normal, $ xStyle=1+4, xRange=[0,1], $ yStyle=1+4, yRange=[0,1], $ position=[0.09,0.09,0.99,0.99] for kF=0, nbFilter-1 do begin cgPlot, /OverPlot, fKey.x+[0,fKey.len], [fKey.y,fKey.y]+kF*fKey.yShi, color=ecCol[kF], thick=5*lineThick cgText, fKey.x+fKey.len*1.3, fKey.y+kF*fKey.yShi-0.006, filt[kF] endfor cgText, fKey.x+fKey.len*0.5, fKey.y+kF*fKey.yShi-0.006, 'Filters' cgText, dKey.x, dKey.y, 't!D0!N = '+t1 if lKey.cal eq 0 then begin cgText, lKey.x, lKey.y, align=1, 'Survey field '+strTrim(id,2) endif else begin cgText, lKey.x, lKey.y, align=1, 'Calibration field '+strTrim(id,2) endelse ;--II.3-- Zoom ------------------------------------------------------------------------------- if zoom.yn eq 1 then begin cgPlot, 0,0, /NoData, /NoErase, /Normal, $ xStyle=1+4, xRange=xRang, $ yStyle=1+4, yRange=yRang, $ position=[0.09,0.09,0.99,0.99] theta = 2*!PI*findgen(361)/360 rad1 = 0.01 pos1 = where( strCmp(sso1.name,zoom.name) ) pos2 = where( strCmp(sso2.name,zoom.name) ) if pos1[0] ne -1 and pos2[0] ne -1 then begin ec1 = frameCoord_eq2ec( sso1[pos1].ra.dec, sso1[pos1].dec.dec ) ec2 = frameCoord_eq2ec( sso2[pos2].ra.dec, sso2[pos2].dec.dec ) lonVec = [ ec1[0], ec2[0] ] latVec = [ ec1[1], ec2[1] ] lonLen = ec2[0] - ec1[0] latLen = ec2[1] - ec1[1] maxLen = max( [lonLen,latLen] ) lon=mean(lonVec) lat=mean(latVec) cgPlot, /overplot, lon + rad1 * cos(theta), lat + rad1 * sin(theta) cgPlot, /overplot, zoom.pos[0] + zoom.rad * cos(theta), zoom.pos[1]+ zoom.rad * sin(theta), color='Dark Gray' cgArrow, lon + 1.5* rad1 * cos(zoom.ang1*!DTOR), lat + 1.5* rad1 * sin(zoom.ang1*!DTOR), $ zoom.pos[0] + 1.05* zoom.rad*cos(zoom.ang2*!DTOR),zoom.pos[1] + 1.05* zoom.rad*sin(zoom.ang2*!DTOR), $ /Data, thick=3, hSize=!D.X_SIZE / 64., color='Dark Gray' cgPlot, lonVec, latVec, /NoErase, /NoData, /Normal, $ xStyle=1+4, xRange=1.2*[-1,1]*maxLen/2. + lon, $ yStyle=1+4, yRange=1.2*[-1,1]*maxLen/2. + lat, $ position=0.09 + 0.9*[((zoom.pos[0]-zoom.rad)-xRang[0])/(xRang[1]-xRang[0]), $ ((zoom.pos[1]-zoom.rad)-yRang[0])/(yRang[1]-yRang[0]), $ ((zoom.pos[0]+zoom.rad)-xRang[0])/(xRang[1]-xRang[0]), $ ((zoom.pos[1]+zoom.rad)-yRang[0])/(yRang[1]-yRang[0]) ] cgText, lon, lat-0.0005, align=0.5, zoom.name, /Data, orient=270 - atan(lonLen/latLen)/!DTOR for kF=0, nbFilter-1 do begin for kC=0, nbBlock-1 do begin if kF eq 0 then begin before = kC*(jit+total(pre+DIT)) + pre[0] after = kC*(jit+total(pre+DIT)) + pre[0] + DIT[0] endif else begin before = kC*(jit+total(pre+DIT)) + total(pre[0:kF]) + total(DIT[0:kF-1]) after = kC*(jit+total(pre+DIT)) + total(pre[0:kF]) + total(DIT[0:kF]) endelse jdB = jd1 + before/(3600.*24.d) jdE = jd1 + after /(3600.*24.d) isoB = date_conv(jdB, 'FITS') isoE = date_conv(jdE, 'FITS') ssoB = voSkybot_read( dirEph+'skybot-'+isoB+'.txt', mime='text' ) ssoE = voSkybot_read( dirEph+'skybot-'+isoE+'.txt', mime='text' ) posB = where( strCmp(ssoB.name,zoom.name) ) posE = where( strCmp(ssoE.name,zoom.name) ) if posB[0] ne -1 and posE[0] ne -1 then begin ec1 = frameCoord_eq2ec( ssoB[posB].ra.dec, ssoB[posB].dec.dec ) ec2 = frameCoord_eq2ec( ssoE[posE].ra.dec, ssoE[posE].dec.dec ) lonVec = [ ec1[0], ec2[0] ] latVec = [ ec1[1], ec2[1] ] cgPlot, /OverPlot, lonVec, latVec, color=ecCol[kF], thick=lineThick endif if kF eq 0 then begin cgText, ec1[0]+0.00025, ec1[1]+0.00025, $ 't!D0!N+'+strtrim(string(before,format='(I5)'),2)+'s' endif endfor endfor scaleLen = 6 cgErrPlot, /Horizontal, lat-0.9*maxLen/2., lon-(scaleLen/2.)/3600., lon+(scaleLen/2.)/3600., thick=4, width=0.025 cgText, lon, lat-0.85*maxLen/2., StrTrim(string(scaleLen,format='(I)'),2)+'"', /Data, align=0.5 cgText, lon, lat+0.85*maxLen/2., 'Magnified view', /Data, align=0.5, color='Dark Gray' ;--- xKey = ra ;--- cgErrPlot, /Horizontal, dec-0.9*maxLen/2., xKey-1.5/3600., xKey+1.5/3600., thick=4, width=0.025 ;--- cgText, xKey, dec-0.85*maxLen/2., '3"', /Data, align=0.5 ;--- ;--- endif endif cgPS_close, /Png, Delete_PS=0 end