;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--- TAG --- I -- Initialization And Input Verification -----------------------; ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--I.1-- Directories spawn, 'hostname', host case strTrim(host) of 'hyperion': dirEuclid = '/observ/euclid/' 'endymion': dirEuclid = '/home/bcarry/work/data/euclid/' else: stop endcase filterDir = dirEuclid+'filters/' ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--- TAG --- II -- Read Bus Demeo -----------------------; ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--II.3-- Read Bus-DeMeo average spectra demeo = readBusDeMeo() sel = [0,9,13,19] nbSel = n_elements(sel) ;--- Version with 11 classes cLabel=['A','B','C','D','K','L','Q','S','T','X','V'] cColor=['Sienna' , $ ;-- A 'Gray' , $ ;-- B 'Charcoal' , $ ;-- C 'Dark Gray' , $ ;-- D 'Green' , $ ;-- K 'Navy', $ ;-- L 'Orange' , $ ;-- Q 'Cornflower blue', $ ;-- S 'PUR8' , $ ;-- T 'Magenta' , $ ;-- X 'Red' ] ;-- V cSymb =['Filled circle' , $ ;-- A 'Filled circle', $ ;-- B 'Open circle', $ ;-- C 'Filled circle', $ ;-- D 'Open circle', $ ;-- K 'Open square', $ ;-- L 'Filled star', $ ;-- Q 'Open square', $ ;-- S 'Star' , $ ;-- T 'Open diamond', $ ;-- X 'Filled Circle' ] ;-- V SSymb =[ 0.8 ,$ ;-- A 0.8 ,$ ;-- B 0.8 ,$ ;-- C 0.8 ,$ ;-- D 0.8 ,$ ;-- K 0.8 ,$ ;-- L 1.5 ,$ ;-- Q 0.8 ,$ ;-- S 1.5 ,$ ;-- T 0.8 ,$ ;-- X 0.8 ] ;-- V ; forprint, indgen(demeo.n), demeo.class.name, textout=2, format='(I3,1x,A)' ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--- TAG --- III-- Figure -----------------------; ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--III.1-- EPS/PNG output cgPS_open, xSize=29.7, ySize=21., Filename=filterDir+'euclid-degen.eps', $ /metric, /decomposed, /landscape, /encapsulated, language_level=2, /quiet xRang=[0.3,2.4] yRang=[0.,2.0] ; norma = where( demeo.wave ge 0.5 and demeo.wave le 0.55 ) norma = where( demeo.wave ge 0.55 and demeo.wave le 0.85 ) cgPlot, demeo.wave, demeo.class[0].spec, /NoData, /NoErase, $ xStyle=1, xRange=xRang, xTickInt=0.5, xMinor=5, $ yStyle=1, yRange=yRang, yTickInt=0.5, yMinor=5, $ xTickLen=0.04, $ yTickLen=0.03, $ charSize=1.5, position=[0.1,0.1,0.95,0.95], $ xTitle='Wavelength ('+cgGreek('mu')+'m)', $ yTitle='Reflectance (normalized to VIS)' for k=0, nbSel-1 do begin kC=sel[k] ind = where( strcmp(demeo.class[kC].name, cLabel, 1) ) print, demeo.class[kC].name, ind demeo.class[kC].spec /= mean(demeo.class[kC].spec[norma]) range=where( demeo.wave ge 0.35 and demeo.wave le 2.1, nbR ) last = nbR-1 cgPlot, /over, demeo.wave[range], demeo.class[kC].spec[range], color=cColor[ind] cgText, 2.12, demeo.class[kC].spec[range[last]]-0.015, demeo.class[kC].name, color=cColor[ind] endfor ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--- TAG --- IV -- Survey filters -----------------------; ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--IV.1-- Euclid filters filtName=['VIS', 'Y', 'J', 'H'] filtWave=[0.725,1.020,1.252,1.645] nbFilt=n_elements(filtName) centWave = fltarr(4) waveToMicron=1e-4 ;--IV.2-- Typical Filter readcol, filterDIR+'EuclidVisFilterMin.txt', w, t, /SILENT ref = {name:'', wave:w*waveToMicron, trans:t} euclid = replicate( {name:'', min:0., max:0.}, nbFilt ) ;--IV.4-- Convert Spectra into Colors filt=replicate(ref,nbFilt) for kFilt=0, nbFilt-1 do begin ;--IV.4.1-- Read current filter readcol, filterDIR+'Euclid'+filtName[kFilt]+'FilterMin.txt', w, t, /SILENT ;--II.4.2-- Correct bad J Filter transmission if strcmp(filtName[kFilt],'J') then begin band = where( w ge 1.2/waveToMicron and w le 1.55/waveToMicron ) t*=0 t[band]=0.4 endif ;--IV.4.3-- Convert to micron filt[kFilt].name=filtName[kFilt] filt[kFilt].wave=w*waveToMicron filt[kFilt].trans= t ok =where( filt[kFilt].trans ge 0.1 ) euclid[kFilt].name = filt[kFilt].name euclid[kFilt].min = min( filt[kFilt].wave[ok] ) euclid[kFilt].max = max( filt[kFilt].wave[ok] ) print, filt[kFilt].name, euclid[kFilt].min , ' ' ,euclid[kFilt].max endfor yEc = 0.575 ecCol = ['Black', 'Orange', 'Cornflower blue', 'Firebrick'] for k=0, nbFilt-1 do begin cgPlot, /over, [euclid[k].min, euclid[k].max], [yEc,yEc], color=ecCol[k], thick=15 cgText, /data, (euclid[k].min+euclid[k].max)/2., yEc+0.02, euclid[k].Name, align=0.5, color=ecCol[k] endfor ; cgText, /data, 2.05, yEc-0.02, 'Euclid', align=0 yEc = 0.425 ecCol = ['Blue','Red'] ecGrism = replicate( {name:'', min:0., max:0.}, 2) ecGrism[0]={name:'blue grism', min:0.92, max:1.25} ecGrism[1]={name:'red grism', min:1.25, max:1.85} for k=0, 1 do begin cgPlot, /over, [ecGrism[k].min, ecGrism[k].max], [yEc,yEc], color=ecCol[k], thick=15 cgText, /data, (ecGrism[k].min+ecGrism[k].max)/2., yEc+0.03, ecGrism[k].Name, align=0.5, color=ecCol[k] endfor yEc=0.5 cgText, /data, 2.05, yEc-0.02, 'Euclid', align=0 ;--IV.2-- SDSS/LSST filters fName = ['u','g','r','i','z'] n=n_elements(fname) sdss = replicate( {name:'', min:0., max:0.}, n ) for k=0, n-1 do begin readcol, filterDir+'sdss/'+fname[k]+'.dat', w,t,/silent w*=1e-4 ok =where( t ge 0.05 ) sdss[k].name = fname[k] sdss[k].min = min( w[ok] ) sdss[k].max = max( w[ok] ) ; print, sdss[k].name ; print, sdss[k].min, sdss[k].max ySDSS = 0.3 sdssCol = ['Navy', 'Black', 'Orange', 'Cornflower blue', 'Firebrick'] sdssCol = ['Navy', 'Cyan', 'Red', 'Royal blue', 'Dark gray'] ; sdssCol = replicate( 'Royal blue', n) cgPlot, /over, [sdss[k].min, sdss[k].max], [ySdss,ySdss], color=sdssCol[k], thick=15 cgText, /data, (sdss[k].min+sdss[k].max)/2., ySdss+0.03, sdss[k].Name, align=0.5, color=sdssCol[k] cgText, /data, 0.95, ySDSS-0.02, 'SDSS/LSST', align=0 endfor ;--IV.2-- Gaia Photometers fName = ['BP','RP'] n=n_elements(fname) gaia = replicate( {name:'', min:0., max:0.}, n ) gaia[0].min = 0.400 gaia[0].max = 0.700 gaia[1].min = 0.630 gaia[1].max = 1.000 yshi = 0.01 * [-1,1] for k=0, n-1 do begin gaia[k].name = fname[k] yGAIA = 0.1 + yShi[k] gaiaCol = ['Blue','Red'] cgPlot, /over, [gaia[k].min, gaia[k].max], [yGaia,yGaia], color=gaiaCol[k], thick=15 cgText, /data, (gaia[k].min+gaia[k].max)/2., yGaia+0.02, gaia[k].Name, align=0.5, color=gaiaCol[k] endfor cgText, /data, 1.05, 0.1-0.02, 'Gaia', align=0 cgPS_close, /png, Delete_PS=0 end