PRO dustemwrap_plot,p_dim,st,dustem_sed,dustem_polsed,dustem_qsed,dustem_polfrac,_extra=_extra ;NB/ the old POLFRAC treatment from mpfit_run will have to be copied over here when plotting the polarization fraction. ;JP had this amazing idea about the plotting of the used parameters and plugins in (a) seperate window(s). ;I will definitely do it as soon as I am done with the main display. ;When you replace a command in cgoplot you will need to replace the cgerrplot commands as well. ;THIS IS VERY IMPORTANT DO NOT FORGET THIS. ;YOU WILL NEEED A COUNTER FOR THE COMMAND INDICES.... You need to find a solution for this. ;or know which is the index of the command that is targeted. ;The procedure takes the _extra keyword but the plotting inside does not take the full structure ;but rather the needed parts. ;when the "_extra_filtering" procedure is finished. The structure will be filtered and the routine will be more secure. ;NB (VERY IMPORTANT): in order to refresh the cgoplots maybe I should use the replacecmd keyword. ;This line runs but does it do the job?: ,cmdindex=command_index,replacecmd=command_index you ne ;THAT LINE FOR ALL THE CGOPLOTS LINES ;NB: maybe change the position arrays instead of creating two giant loops. ;THIS IS A REALLY INTERESTING IDEA ;It seems more adequate to execute dustem_compute_sed/polsed/stokes here instead of this block ;especially that dustem_activate_plugins runs the executable already but does not output it. ;NB: There is an implicit assumption that st and dustem_sed and others are set simultaneously. ;As stated above I do not think that I need this block. This will need to be corrected. IF not keyword_set(st) THEN BEGIN ;Activation of the plugins is needed because of the plotting of the total emission model that includes them. dustem_activate_plugins,p_dim/(*(*!dustem_fit).param_init_values) ; 0/0 division case? st=dustem_run(p_dim) ENDIF ;If the interpolates arrays are not present (dustem_sed, etc...) run: ;dustem_compute_sed etc to generate them. ;!const.c ;speed of light in vacuum. ;Generating a first resizable window (for emission or extinction elements) ;if ~windowavailable(cgquery()) then begin ;LIST OF TESTS THAT NEED TO BE RAN SO THAT THE PLOTTING OF THE MODEL SPECTRA OCCURS test_sed = isa(!dustem_show.sed) test_ext = isa(!dustem_show.ext) test_polext = isa(!dustem_show.polext) test_polsed = isa(!dustem_show.polsed) test_polfrac = isa(!dustem_show.polfrac) test_psi_em = isa(!dustem_show.psi_em) test_psi_ext = isa(!dustem_show.psi_ext) test_qsed = isa(!dustem_show.qsed) test_used = isa(!dustem_show.used) test_qext = isa(!dustem_show.qext) test_uext = isa(!dustem_show.uext) ;testing on the fitting of emission vs extinction data test_m = test_sed or test_polsed or test_polfrac or test_qsed or test_used or test_psi_em test_x = test_ext or test_polext or test_qext or test_uext or test_psi_ext ;there are three display layouts in one-window mode: emission, extinction and emission+extinction fact = 1.e4*(*!dustem_HCD)/(4.*!pi)/(3.e8/1.e-6/st.sed.wav)*1.e20/1.e7 ; st.sed.wav and st.polsed.wav should remain the same spec = st.sed.em_tot * fact if !run_pol then specpol = st.polsed.em_tot * fact Ngrains=(*!dustem_params).Ngrains use_cols=dustem_grains_colors(Ngrains,/cgplot) use_cols[1]='Cornflower' ;I have decided to keep track of the command index manually as I did not find any command online that does this. cmdind_m = 0 ;for emission cmdind_x = 0 ;for extinction ;#YOU NEED TO REPLACE THE QSED AND USED SCOPES WITH A SINGLE POLSED ONE ;ADDING PLUGIN(S) TO SPECTRUM---------------- scopes=tag_names((*!dustem_scope)) IF scopes[0] NE 'NONE' THEN BEGIN FOR i=0L,n_tags(*!dustem_scope)-1 DO BEGIN IF total(strsplit((*(*!dustem_scope).(i)),'+',/extract) EQ 'ADD_SED') THEN spec+=(*(*!dustem_plugin).(i))[*,0] IF total(strsplit((*(*!dustem_scope).(i)),'+',/extract) EQ 'REPLACE_QSED') THEN specpol=sqrt(((*(*!dustem_plugin).(i))[*,1])^2+((*(*!dustem_plugin).(i))[*,2])^2) ENDFOR FOR i=0L,n_tags(*!dustem_scope)-1 DO BEGIN if !run_pol then begin IF total(strsplit((*(*!dustem_scope).(i)),'+',/extract) EQ 'ADD_QSED') THEN specpol+=sqrt(((*(*!dustem_plugin).(i))[*,1])^2+((*(*!dustem_plugin).(i))[*,2])^2) endif ENDFOR ENDIF ;these following indices will be used to change the keep the same information in the _extra structure ;this is an initial solution until I finish coding the _extra-filtering procedure. tgnms_extra = tag_names(_extra) ind_xr = where(strmid(tgnms_extra,0,2) eq 'XR') ind_yr = where(strmid(tgnms_extra,0,2) eq 'YR') if ind_xr EQ -1 then xr=[1.00E+00,1.00E+05] else xr=(_extra.(ind_xr)) if ind_yr EQ -1 then yr=[5.00E-03,1.00E+08] else yr=(_extra.(ind_yr)) iswinsed = !dustemcgwin_id.sed EQ la_undef() iswinext = !dustemcgwin_id.ext EQ la_undef() ;if iswinsed then begin ;I believe the iswin test should be below the case condition because I am not copying all the first 'HUGE LOOP' but rather replacing the positional arrays. if test_m then begin ;do you need an if !run_pol condition here? ;!run_pol=1 ;test. Needs to be commented asap. ;Generating emission window and saving window ID if iswinsed then begin cgwindow, wtitle='DUSTEMWRAP v2.0 (EMISSION)', wback='grey';,wobject=winobj_m winid_m = cgquery(dimensions=dim_m,/current) ;this has to be changed because the dimensions of this array change with the data sets present (extinction/emission). !dustemcgwin_id.sed = winid_m endif else winid_m = !dustemcgwin_id.sed ;cgWindow_GetDefs,xsize=xsize,ysize=ysize ;cgcontrol, resize=[xsize,ysize] if !run_pol then begin ;cgwindow,wxsize=1260,wysize=670,wtitle='DUSTEMWRAP v2.0 (EMISSION)',wback='grey' ;position arrays for plot and normalized graph ;there might be some problems with the 'math' here p_sed = [0.05,0.67,0.475,0.90] p_psed = [0.525,0.67,0.95,0.90] ;p_spsed = [0.07,0.42,0.5,0.57] ;p_psised = [,,,] p_qsed = [0.07,0.19,0.5,0.39] ;p_used = [,,,] np_sed = [0.05,0.60,0.475,0.67] ;np_psed = [0.525,0.60,0.95,0.67] np_qsed = [0.07,0.09,0.5,0.19] ;np_used = [,,,] posp_sed = [0.07,0.87] ; posp_psed = ; posp_spsed = ; posp_qsed = ; posp_used = posnp_sed = [0.07,0.65] ; posnp_psed = ; posnp_spsed = ; posnp_qsed = ; posnp_used = ; endif else begin p_sed = [0.07,0.30,0.97,0.85] np_sed = [0.07,0.10,0.97,0.30] posp_sed = [0.09,0.80] ; posp_psed = ; posp_spsed = ; posp_qsed = ; posp_used = posnp_sed = [0.09,0.25] ; posnp_psed = ; posnp_spsed = ; posnp_qsed = ; posnp_used = endelse ;Plotting of sed data axes (whether or not data is present) plotsym,0,/fill ;you might need to execute this again. hmm... ;stop cgcontrol, execute=0 ;cgcontrol, update=0 ;stop ;cgcontrol, update=0 if ~iswinsed then goto, zone1 if ~test_sed then begin ; SED data is not present (For completeness) # This is only valid when !run_pol=1 xvar=dustem_get_wavelengths() ;supposedly does not modify the x axis range cgwindow,'cgplot',xvar,xvar,/nodata,/ylog,/xlog,/ys,xs=9,position=p_sed,/addcmd,noerase=1,charsize=1.15,xtickformat='(A1)',color='Powder Blue',xr=xr,yr=yr,winid=winid_m,psym=8,syms=0.8 cgwindow, 'cgaxis', xaxis=1 ,xlog=1 ,xrange=((!const.c*1E6/xr)*1E-9),/addcmd,charsize=1.15,title=textoidl('\nu (GHz)'),xticklen=0.05,xminor=10 & cmdind_m+=1 ;Plotting of the title of the SED plot cgwindow,'xyouts',posp_sed[0],posp_sed[1],textoidl('I_{\nu} (MJy/sr)'),color=0,/normal,charsize=1.1,/addcmd & cmdind_m+=1;,winid=winid_m ;Plotting of the normalized SED plot cgwindow,'cgplot',xvar,xvar,/xlog,/ys,xs=1,position=np_sed,/addcmd,noerase=1,xtickformat='(A1)',color='Black',xr=xr,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0 & cmdind_m+=1 ;Plotting of the title of the normalized plot cgwindow,'xyouts',posnp_sed[0],posnp_sed[1],textoidl('norm'),color=0,/normal,charsize=1.1,/addcmd & cmdind_m+=1;,winid=winid_m ;FORGOT THE PLOTTING OF THE TITLES. THIS SHOULD PROBABLY BE PLACED OUT. endif else begin ;SED exists ;Locating filter and spectrum data points idx_filt=where((*!dustem_data.sed).filt_names NE 'SPECTRUM',ct_filt) idx_spec=where((*!dustem_data.sed).filt_names EQ 'SPECTRUM',ct_spec) if ct_spec ne 0 then begin ;Plotting of spectrum data points (to be fitted) cgwindow,'cgplot',((*!dustem_data.sed).wav)(idx_spec),((*!dustem_data.sed).values)(idx_spec),/ylog,/xlog,/ys,xs=9,position=p_sed,/addcmd,noerase=1,charsize=1.15,xtickformat='(A1)',color='Powder Blue',xr=xr,yr=yr,winid=winid_m,psym=8,syms=0.8,ytickformat='dstmwrp_exp' ;stop ;Plotting of the spectrum error points rms=3.*((*!dustem_data.sed).sigma)(idx_spec)/2. cgwindow,'cgerrplot',((*!dustem_data.sed).wav)(idx_spec),((*!dustem_data.sed).values)(idx_spec)-rms,((*!dustem_data.sed).values)(idx_spec)+rms,/addcmd,color='Powder Blue' & cmdind_m+=1 endif if ct_filt ne 0 then begin if ct_spec ne 0 then txtcmd = 'cgoplot' else txtcmd = 'cgplot' & cmdind_m-=1 ;Plotting of filter data points (to be fitted) ; cgwindow,txtcmd,((*!dustem_data.sed).wav)(idx_filt),((*!dustem_data.sed).values)(idx_filt),/addcmd,charsize=1.15,color='Dodger Blue',psym=8,syms=0.8,position=p_sed,/ys,xs=9,noerase=1,xtickformat='(A1)',xr=xr,yr=yr,ytickformat='dstmwrp_exp',/ylog,/xlog & cmdind_m+=1;,xtick_get=hh ;Plotting of the filter error points rms=3.*((*!dustem_data.sed).sigma)(idx_filt)/2.;/dustem_sed(idx_filt) cgwindow,'cgerrplot',((*!dustem_data.sed).wav)(idx_filt),((*!dustem_data.sed).values)(idx_filt)-rms,((*!dustem_data.sed).values)(idx_filt)+rms,/addcmd,color='Dodger Blue' & cmdind_m+=1 endif ;Plotting of frequency axis cgwindow, 'cgaxis', xaxis=1,xlog=1 ,xs=1,xminor=10, xticklen=0.05 ,xrange=((!const.c*1E6/(_extra.(ind_xr)))*1E-9),/addcmd,charsize=1.15,title=textoidl('\nu (GHz)') & cmdind_m+=1 ;stop ;Locating all the hidden data points (spectrum+filter) match2,((*!dustem_data.sed).wav),((*!dustem_show.sed).wav),fit_sedpts,show_sedpts ;only show_sedpts is needed idx_rmv_sed=where(show_sedpts eq -1, ct_hdnpts) ; indices of the points to hide if ct_hdnpts ne 0 then begin ;Hidden data points are present ;Locating the hidden spectrum and filter data points idx_filt_hdn = where(((*!dustem_show.sed).filt_names)(idx_rmv_sed) NE 'SPECTRUM',ct_filt_hdn) idx_spec_hdn = where(((*!dustem_show.sed).filt_names)(idx_rmv_sed) EQ 'SPECTRUM',ct_spec_hdn) ;Plotting of hidden spectrum data points cgwindow,'cgoplot',((*!dustem_show.sed).wav)(idx_spec_hdn),((*!dustem_show.sed).values)(idx_spec_hdn),position=p_sed,/ylog,/xlog,/ys,xs=9,/addcmd,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,winid=winid_m,psym=8,syms=0.8 & cmdind_m+=1 ;Plotting of hidden spectrum error points rms=3.*((*!dustem_show.sed).sigma)(idx_spec_hdn)/2. cgwindow,'cgerrplot',((*!dustem_show.sed).wav)(idx_spec_hdn),((*!dustem_show.sed).values)(idx_spec_hdn)-rms,((*!dustem_show.sed).values)(idx_spec_hdn)+rms,/addcmd,winid=winid_m,color='Black' & cmdind_m+=1 ;Plotting of hidden filter data points cgwindow,'cgoplot',((*!dustem_show.sed).wav)(idx_filt_hdn),((*!dustem_show.sed).values)(idx_filt_hdn),pos=p_sed,/ylog,/xlog,/ys,xs=9,/addcmd,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,winid=winid_m,psym=8,syms=0.8 & cmdind_m+=1 ;Plotting of hidden filter error point rms=3.*((*!dustem_show.sed).sigma)(idx_filt_hdn)/2. cgwindow,'cgerrplot',((*!dustem_show.sed).wav)(idx_filt_hdn),((*!dustem_show.sed).values)(idx_filt_hdn)-rms,((*!dustem_show.sed).values)(idx_filt_hdn)+rms,/addcmd,winid=winid_m,color='Black' & cmdind_m+=1 endif ;Plotting of the title of the SED plot cgwindow,'xyouts',posp_sed[0],posp_sed[1],textoidl('I_{\nu} (MJy/sr)'),color=0,/normal,charsize=1.1,/addcmd & cmdind_m+=1;,winid=winid_m ;Plotting of the title of the normalized plot cgwindow,'xyouts',posnp_sed[0],posnp_sed[1],textoidl('norm'),color=0,/normal,charsize=1.1,/addcmd & cmdind_m+=1 ;stop ;create counter here!! if iswinsed then !dustemcgwin_ncmds.sed.ct_z1 = cmdind_m zone1: if ~iswinsed then begin cmdind_m = !dustemcgwin_ncmds.sed.ct_z1 idx_filt=where((*!dustem_data.sed).filt_names NE 'SPECTRUM',ct_filt) idx_spec=where((*!dustem_data.sed).filt_names EQ 'SPECTRUM',ct_spec) endif ;Plotting of the spectra of the dust species FOR i=0L,Ngrains-1 DO BEGIN ;if i EQ 0 then txtcmd='cgplot' else txtcmd = 'cgoplot' cmdind_m+=1 if iswinsed then cgwindow,'cgoplot',st.sed.wav,st.sed.(i+1)*fact,color=use_cols[i],position=p_sed,/addcmd,noerase=1,winid=winid_m else $ cgwindow,'cgoplot',st.sed.wav,st.sed.(i+1)*fact,color=use_cols[i],position=p_sed,noerase=1,winid=winid_m,/replacecmd,cmdindex=cmdind_m ENDFOR ;Plotting of the total dust emission spectrum if iswinsed then begin cgwindow,'cgoplot',st.sed.wav,spec,position=p_sed,/addcmd,noerase=1,winid=winid_m cmdind_m+=1 endif else begin cmdind_m+=1 cgwindow,'cgoplot',st.sed.wav,spec,position=p_sed,noerase=1,winid=winid_m,/replacecmd,cmdindex=cmdind_m endelse ;PLotting of the interpolates corresponding to spectrum and filter points IF ct_filt NE 0 THEN BEGIN ;plotsym,8 xx=((*!dustem_data.sed).wav)[idx_filt] yy=dustem_sed[idx_filt] if iswinsed then begin cgwindow,'cgoplot',xx,yy,color='red',psym=6,syms=2,noerase=1,/addcmd,winid=winid_m cmdind_m+=1 endif else begin cmdind_m+=1 cgwindow,'cgoplot',xx,yy,color='red',psym=6,syms=2,noerase=1,winid=winid_m,/replacecmd,cmdindex=cmdind_m endelse ENDIF ;stop IF ct_spec NE 0 THEN BEGIN ;plotsym,0 xx=((*!dustem_data.sed).wav)[idx_spec] yy=dustem_sed[idx_spec] if iswinsed then begin cgwindow,'cgoplot',xx,yy,color='red',psym=7,syms=2,noerase=1,/addcmd,winid=winid_m cmdind_m+=1 endif else begin cmdind_m+=1 cgwindow,'cgoplot',xx,yy,color='red',psym=7,syms=2,noerase=1,winid=winid_m,/replacecmd,cmdindex=cmdind_m endelse ENDIF ;stop if iswinsed then begin xvar=dustem_get_wavelengths() ;plotsym,0,/fill cgwindow,'cgplot',xvar,xvar/xvar,/xlog,/ys,xs=1,position=np_sed,/addcmd,noerase=1,xtickformat='(A1)',color='Black',xr=xr,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0 & cmdind_m+=1 endif else begin cmdind_m += 1 endelse ; ;Plotting of the normalized SED plot ; xvar=dustem_get_wavelengths() ; ;plotsym,0,/fill ; cgwindow,'cgplot',xvar,xvar/xvar,/xlog,/ys,xs=1,position=np_sed,/addcmd,noerase=1,xtickformat='(A1)',color='Black',xr=xr,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0 & cmdind_m+=1 ; ;stop IF ct_filt NE 0 THEN BEGIN xx=((*!dustem_data.sed).wav)[idx_filt] yy=dustem_sed[idx_filt] rms=3.*((*!dustem_data.sed).sigma)(idx_filt)/2. if iswinsed then begin cgwindow,'cgoplot',xx,((*!dustem_data.sed).values)[idx_filt]/yy,psym=16,color='Dodger Blue',syms=0.8,noerase=1,/addcmd,winid=winid_m,pos=np_sed & cmdind_m+=1 cgwindow,'cgerrplot',((*!dustem_data.sed).wav)(idx_filt),(((*!dustem_data.sed).values)[idx_filt]-rms)/yy,(((*!dustem_data.sed).values)[idx_filt]+rms)/yy,/addcmd,color='Dodger Blue' & cmdind_m+=1 endif else begin cmdind_m+=1 & cgwindow,'cgoplot',xx,((*!dustem_data.sed).values)[idx_filt]/yy,psym=16,color='Dodger Blue',syms=0.8,noerase=1,winid=winid_m,/replacecmd,cmdindex=cmdind_m,pos=np_sed cmdind_m+=1 & cgwindow,'cgerrplot',((*!dustem_data.sed).wav)(idx_filt),(((*!dustem_data.sed).values)[idx_filt]-rms)/yy,(((*!dustem_data.sed).values)[idx_filt]+rms)/yy,color='Dodger Blue',/replacecmd, cmdindex=cmdind_m endelse ENDIF IF ct_spec NE 0 THEN BEGIN ;plotsym,0,/fill xx=((*!dustem_data.sed).wav)[idx_spec] yy=dustem_sed[idx_spec] rms=3.*((*!dustem_data.sed).sigma)(idx_spec)/2. if iswinsed then begin cgwindow,'cgoplot',xx,((*!dustem_data.sed).values)[idx_spec]/yy,color='Dodger Blue',psym=16,syms=0.8,noerase=1,/addcmd,winid=winid_m & cmdind_m+=1 cgwindow,'cgerrplot',((*!dustem_data.sed).wav)(idx_spec),(((*!dustem_data.sed).values)[idx_spec]-rms)/yy,(((*!dustem_data.sed).values)[idx_spec]+rms)/yy,/addcmd,color='Dodger Blue' & cmdind_m+=1 endif else begin cmdind_m+=1 & cgwindow,'cgoplot',xx,((*!dustem_data.sed).values)[idx_spec]/yy,color='Dodger Blue',psym=16,syms=0.8,noerase=1,winid=winid_m,/replacecmd,cmdindex=cmdind_m cmdind_m+=1 & cgwindow,'cgerrplot',((*!dustem_data.sed).wav)(idx_spec),(((*!dustem_data.sed).values)[idx_spec]-rms)/yy,(((*!dustem_data.sed).values)[idx_spec]+rms)/yy,color='Dodger Blue',/replacecmd,cmdindex=cmdind_m endelse ENDIF ;cgwindow,'cgoplot',((*!dustem_show.sed).wav),((*!dustem_show.sed).values)/dustem_sed,/xlog,/ys,xs=1,position=np_sed,/addcmd,noerase=1,color='Dodger Blue',psym=8 ;,winid=winid_m endelse if ~!run_pol then goto, end_m if ~test_qsed then begin ; QSED data is not present (For completeness) # This is only valid when !run_pol=1 xvar=dustem_get_wavelengths() ;supposedly does not modify the x axis range cgwindow,'cgplot',xvar,xvar,/nodata,/ylog,/xlog,/ys,xs=9,position=p_qsed,/addcmd,noerase=1,charsize=1.15,xtickformat='(A1)',color='Powder Blue',xr=xr,yr=yr,winid=winid_m,psym=8,syms=0.8 & cmdind_m+=1 cgwindow, 'cgaxis', xaxis=1 ,xlog=1 ,xrange=((!const.c*1E6/xr)*1E-9),/addcmd,charsize=1.15,title=textoidl('\nu (GHz)'),xticklen=0.05,xminor=10 & cmdind_m+=1 ;Plotting of the title of the SED plot cgwindow,'xyouts',0.07,0.87,textoidl('Q_{\nu} (MJy/sr)'),color=0,/normal,charsize=1.1,/addcmd & cmdind_m+=1;,winid=winid_m ;Plotting of the normalized SED plot cgwindow,'cgplot',xvar,xvar,/xlog,/ys,xs=1,position=np_qsed,/addcmd,noerase=1,xtickformat='(A1)',color='Black',xr=xr,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0 & cmdind_m+=1 ;Plotting of the title of the normalized plot cgwindow,'xyouts',0.07,0.65,textoidl('norm'),color=0,/normal,charsize=1.1,/addcmd & cmdind_m+=1;,winid=winid_m ;FORGOT THE PLOTTING OF THE TITLES. THIS SHOULD PROBABLY BE PLACED OUT. endif else begin ;QSED exists ;Locating filter and spectrum data points idx_filtq=where((*!dustem_data.qsed).filt_names NE 'SPECTRUM',ct_filtq) idx_specq=where((*!dustem_data.qsed).filt_names EQ 'SPECTRUM',ct_specq) if ct_specq ne 0 then begin ;Plotting of spectrum data points (to be fitted) cgwindow,'cgplot',((*!dustem_data.qsed).wav)(idx_specq),((*!dustem_data.qsed).values)(idx_specq),/ylog,/xlog,/ys,xs=9,position=p_qsed,/addcmd,noerase=1,charsize=1.15,xtickformat='(A1)',color='Powder Blue',xr=xr,yr=yr,winid=winid_m,psym=8,syms=0.8,ytickformat='dstmwrp_exp' & cmdind_m+=1 ;stop ;Plotting of the spectrum error points rms=3.*((*!dustem_data.qsed).sigma)(idx_specq)/2. cgwindow,'cgerrplot',((*!dustem_data.qsed).wav)(idx_specq),((*!dustem_data.qsed).values)(idx_specq)-rms,((*!dustem_data.qsed).values)(idx_specq)+rms,/addcmd,color='Powder Blue' & cmdind_m+=1 endif if ct_filtq ne 0 then begin if ct_specq ne 0 then txtcmd = 'cgoplot' else txtcmd = 'cgplot' ;Plotting of filter data points (to be fitted) ; cgwindow,txtcmd,((*!dustem_data.qsed).wav)(idx_filtq),((*!dustem_data.qsed).values)(idx_filtq),/addcmd,charsize=1.15,color='Dodger Blue',psym=8,syms=0.8,position=p_qsed,/ys,xs=9,noerase=1,xtickformat='(A1)',xr=xr,yr=yr,ytickformat='dstmwrp_exp',/ylog,/xlog & cmdind_m+=1 ;Plotting of the filter error points rms=3.*((*!dustem_data.qsed).sigma)(idx_filtq)/2.;/dustem_sed(idx_filt) cgwindow,'cgerrplot',((*!dustem_data.qsed).wav)(idx_filtq),((*!dustem_data.qsed).values)(idx_filtq)-rms,((*!dustem_data.qsed).values)(idx_filtq)+rms,/addcmd,color='Dodger Blue' & cmdind_m+=1 endif ;Plotting of frequency axis cgwindow, 'cgaxis', xaxis=1,xlog=1 ,xs=1,xminor=10, xticklen=0.05 ,xrange=((!const.c*1E6/(_extra.(ind_xr)))*1E-9),/addcmd,charsize=1.15,title=textoidl('\nu (GHz)') & cmdind_m+=1 ;stop ;Locating all the hidden data points (spectrum+filter) match2,((*!dustem_data.qsed).wav),((*!dustem_show.qsed).wav),fit_sedptsq,show_sedptsq ;only show_sedpts is needed idx_rmv_sedq=where(show_sedptsq eq -1, ct_hdnptsq) ; indices of the points to hide if ct_hdnptsq ne 0 then begin ;Hidden data points are present ;Locating the hidden spectrum and filter data points idx_filt_hdnq = where(((*!dustem_show.qsed).filt_names)(idx_rmv_sedq) NE 'SPECTRUM',ct_filt_hdnq) idx_spec_hdnq = where(((*!dustem_show.qsed).filt_names)(idx_rmv_sedq) EQ 'SPECTRUM',ct_spec_hdnq) ;Plotting of hidden spectrum data points cgwindow,'cgoplot',((*!dustem_show.qsed).wav)(idx_spec_hdnq),((*!dustem_show.qsed).values)(idx_spec_hdnq),position=p_qsed,/ylog,/xlog,/ys,xs=9,/addcmd,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,winid=winid_m,psym=8,syms=0.8 & cmdind_m+=1 ;Plotting of hidden spectrum error points rms=3.*((*!dustem_show.qsed).sigma)(idx_spec_hdnq)/2. cgwindow,'cgerrplot',((*!dustem_show.qsed).wav)(idx_spec_hdnq),((*!dustem_show.qsed).values)(idx_spec_hdnq)-rms,((*!dustem_show.qsed).values)(idx_spec_hdnq)+rms,/addcmd,winid=winid_m,color='Black' & cmdind_m+=1 ;Plotting of hidden filter data points cgwindow,'cgoplot',((*!dustem_show.qsed).wav)(idx_filt_hdnq),((*!dustem_show.qsed).values)(idx_filt_hdnq),pos=p_qsed,/ylog,/xlog,/ys,xs=9,/addcmd,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,winid=winid_m,psym=8,syms=0.8 & cmdind_m+=1 ;Plotting of hidden filter error point rms=3.*((*!dustem_show.qsed).sigma)(idx_filt_hdn)/2. cgwindow,'cgerrplot',((*!dustem_show.qsed).wav)(idx_filt_hdn),((*!dustem_show.qsed).values)(idx_filt_hdn)-rms,((*!dustem_show.qsed).values)(idx_filt_hdn)+rms,/addcmd,winid=winid_m,color='Black' & cmdind_m+=1 endif ;Plotting of the title of the SED plot cgwindow,'xyouts',0.07,0.87,textoidl('I_{\nu} (MJy/sr)'),color=0,/normal,charsize=1.1,/addcmd & cmdind_m+=1;,winid=winid_m ;Plotting of the normalized SED plot xvar=dustem_get_wavelengths() cgwindow,'cgplot',xvar,xvar/xvar,/xlog,/ys,xs=1,position=np_qsed,/addcmd,noerase=1,xtickformat='(A1)',color='Black',xr=xr,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0 & cmdind_m+=1 ;Plotting of the title of the normalized plot cgwindow,'xyouts',0.07,0.65,textoidl('norm'),color=0,/normal,charsize=1.1,/addcmd & cmdind_m+=1;,winid=winid_m endelse end_m: ;cgset, winid_m ;cgcontrol, update=1 ; varrr=cgquery(dimensions=dim_m) ;be careful because the dim_m array can be multi-dimensional because of the presence of two windows. ; cgcontrol, update=1 ; cgcontrol, resize=[dim_m(0),dim_m(1)] ; ;cgcontrol, resize=1 ; cgcontrol,update=1 ; cgcontrol,update=1 ; cgcontrol, resize=[!D.X_SIZE,!D.Y_SIZE] cgcontrol, execute=1 ;cgcontrol, update=0 ;cgcontrol, update=1 ;varr=cgquery(dimensions=dim_m,objectref=winobj_m) endif ;endif ;stop ; ;#COMMENTED BITS OF CODES ; ; IF keyword_set(help) THEN BEGIN ; doc_library,'dustem_plot_fit_sed' ; goto,the_end ; ENDIF ; ; IF keyword_set(ps) THEN BEGIN ; set_plot, 'PS' ; device, filename=ps, /color,set_character_size=[170,250], /encapsulated ; ENDIF ELSE BEGIN ; ; set_plot,'X' ; IF keyword_set(win) then window,win;,xsize=600,ysize=800 ; ENDELSE ; ; fact = 1.e4*(*!dustem_HCD)/(4.*!pi)/(3.e8/1.e-6/st.sed.wav)*1.e20/1.e7 ; ;use_col_data_filt=70 ; ;use_col_sed_spec=170 ; use_col_data_filt='blue' ; ;use_col_sed_spec='red' ; use_col_sed_spec='grey' ; IF not keyword_set(col_sed) THEN BEGIN ; ;use_col_sed_filt=250 ;red ; use_col_sed_filt='red' ;red ; ENDIF ELSE BEGIN ; use_col_sed_filt=col_sed ; ENDELSE ; IF not keyword_set(col_tot) THEN BEGIN ; ;use_col_tot=200 ; use_col_tot='black' ; ENDIF ELSE BEGIN ; use_col_tot=col_tot ; ENDELSE ; IF not keyword_set(line_tot) THEN BEGIN ; use_line_tot=0 ; ENDIF ELSE BEGIN ; use_line_tot=line_tot ; ENDELSE ; ; ; spec = st.sed.em_tot * fact ; if keyword_set(fpol) then specpol = st.polsed.em_tot * fact ; ;ADDING PLUGIN(S) TO SPECTRUM---------------- ; ;if n_tags(!dustem_data.sed) gt 1 then begin ; scopes=tag_names((*!dustem_scope)) ; IF scopes[0] NE 'NONE' THEN BEGIN ; ;IF ptr_valid(!dustem_plugin) THEN BEGIN ; FOR i=0L,n_tags(*!dustem_scope)-1 DO BEGIN ; IF total(strsplit((*(*!dustem_scope).(i)),'+',/extract) EQ 'ADD_SED') THEN spec+=(*(*!dustem_plugin).(i))[*,0] ; if keyword_set(fpol) then begin ; IF total(strsplit((*(*!dustem_scope).(i)),'+',/extract) EQ 'REPLACE_QSED') THEN specpol=sqrt(((*(*!dustem_plugin).(i))[*,1])^2+((*(*!dustem_plugin).(i))[*,2])^2) ; endif ; ENDFOR ; FOR i=0L,n_tags(*!dustem_scope)-1 DO BEGIN ; if keyword_set(fpol) then begin ; IF total(strsplit((*(*!dustem_scope).(i)),'+',/extract) EQ 'ADD_QSED') THEN specpol+=sqrt(((*(*!dustem_plugin).(i))[*,1])^2+((*(*!dustem_plugin).(i))[*,2])^2) ; endif ; ENDFOR ; ENDIF ; ;endif ; ;------------------------------------------ ; ; ;stop ; ; ;use_cols=[use_col_pah,use_col_vsg,use_col_bg,use_col_cont] ; ;use_lines=[use_line_pah,use_line_vsg,use_line_bg,use_line_cont] ; ;col_off=30 ; ;Ngrains=(*!dustem_params).grain.Ngrains ; Ngrains=(*!dustem_params).Ngrains ; ;use_cols=long(findgen(Ngrains)/(Ngrains-1)*(255-col_off)+col_off) ; use_cols=dustem_grains_colors(Ngrains,/cgplot) ; use_lines=replicate(0,Ngrains) ; ; norm = dustem_sed * 0. + 1 ; ; ;====== PLOT THE SED ; ; IF keyword_set(title) THEN title = title ELSE title = 'Spectral Energy Distribution (Running)' ; ; IF keyword_set(xr) THEN xr = xr ELSE xr = [1.00E+00,6.00E+04] ; ; IF keyword_set(yr) THEN yr = yr ELSE yr = [1.00E-7,5.00E03] ; ; IF keyword_set(xtit) THEN xtit = xtit ELSE xtit = textoidl('\lambda (\mum)') ; ; IF keyword_set(ytit) THEN ytit = ytit ELSE ytit = textoidl('Brightness/N_H (MJy/sr/H)') ; ; ; ;deffo define a title variable here. The procedures are not communicating with each other. ; ;pos=cgLayout() ; ;############################### ; if keyword_set(fpol) then begin ; if !run_lin then begin ; cgDisplay, 600, 500 ; cgplot,(*!dustem_data.sed).wav,(*!dustem_data.sed).values/norm,/nodata,xtit='',ytit=ytit,tit='',/ylog,/xlog,/ys,/xs,position=[0.12,0.25,0.96,0.76],xtickformat='(A1)',_extra=_extra,charsize=1.3,/noerase ; endif ; endif ELSE cgplot,(*!dustem_data.sed).wav,(*!dustem_data.sed).values/norm,/nodata,xtit='',ytit=ytit,tit=title,/ylog,/xlog,/ys,/xs,position=[0.12,0.35,0.96,0.90],xtickformat='(A1)',_extra=_extra,charsize=1.3 ; ;############################### ; ; ; ;cgplot,(*!dustem_data.sed).wav,(*!dustem_data.sed).values/norm,/nodata,xtit='',ytit=textoidl('Brightness/N_H (MJy/sr/H)'),tit=title,ylog=1,/xlog,xr=xr,yr=yr,/ys,/xs,position=[0.12,0.35,0.96,0.90],xtickformat='(A1)' ; ; ; ;stop ; ;cgplot,st.polsed.wav,Q_sed*fact,xtit='',ytit=ytitstq,tit=titstq,ylog=ylog,/xlog,xr=xr,yr=yr,/ys,/xs,position=[0.17,0.35,0.95,0.95],xtickformat='(A1)' ; ; ;this is where you will add the normalized sed ; ; ; ind_filt=where((*!dustem_data.sed).filt_names NE 'SPECTRUM',count_filt) ; ind_spec=where((*!dustem_data.sed).filt_names EQ 'SPECTRUM',count_spec) ; ;=== Plot the data ; ; following lines for fawlty compatibility ; defsysv,'!psym',exists=pexist ; if pexist eq 0 then defsysv,'!psym',0 ; IF count_spec NE 0 THEN BEGIN ; ;x& ; xx=((*!dustem_data.sed).wav)[ind_spec] ; yy=((*!dustem_data.sed).values)[ind_spec]/norm[ind_spec] ; rms=3.*((*!dustem_data.sed).sigma)[ind_spec]/2./norm[ind_spec] ; cgoplot,xx,yy,psym ,syms=0.5,color=use_col_sed_spec ; IF not keyword_set(no_spec_error) THEN BEGIN ; cgerrplot,xx,yy-rms,yy+rms,color=use_col_sed_spec ; ;err_bar,((*!dustem_data.sed).wav)(ind_spec),((*!dustem_data.sed).values)(ind_spec)/norm(ind_spec),yrms=3.*((*!dustem_data.sed).sigma)(ind_spec)/2./norm(ind_spec) ; ENDIF ; ENDIF ; IF count_filt NE 0 THEN BEGIN ; ;stop ; xx=((*!dustem_data.sed).wav)[ind_filt] ; yy=((*!dustem_data.sed).values)[ind_filt]/norm[ind_filt] ; rms=3.*((*!dustem_data.sed).sigma)[ind_filt]/2./norm[ind_filt] ; plotsym,0,/fill ; cgoplot,xx,yy,psym=8,color='Dodger Blue';use_col_data_filt ; ;err_bar,((*!dustem_data.sed).wav)(ind_filt),((*!dustem_data.sed).values)(ind_filt)/norm(ind_filt),yrms=3.*((*!dustem_data.sed).sigma)(ind_filt)/2./norm(ind_filt),color=use_col_data_filt ; cgerrplot,xx,yy-rms,yy+rms,color='Dodger Blue';use_col_data_filt ; ENDIF ; ;=== Plot the computed SED ; IF count_filt NE 0 THEN BEGIN ; plotsym,8 ; xx=((*!dustem_data.sed).wav)[ind_filt] ; yy=sed[ind_filt]/norm[ind_filt] ; cgoplot,xx,yy,color=use_col_sed_filt,psym=6,syms=2 ; ENDIF ; IF count_spec NE 0 THEN BEGIN ; plotsym,0 ; xx=((*!dustem_data.sed).wav)[ind_spec] ; yy=sed[ind_spec]/norm[ind_spec] ; cgoplot,xx,yy,color=use_col_sed_filt,psym=6,syms=2 ; ENDIF ; ; ; IF !dustem_show_plot EQ 2 THEN BEGIN ; norm = spec ; ENDIF ELSE BEGIN ; norm = spec * 0. + 1 ; ENDELSE ; use_cols[1]='Cornflower' ; FOR i=0L,Ngrains-1 DO BEGIN ; cgoplot,st.sed.wav,st.sed.(i+1)*fact/norm,color=use_cols[i],linestyle=use_lines[i] ; ENDFOR ; ; ;stop ; ; ;PLOTTING OF THE PLUGIN(S)--------------- AUTOMATE THIS. QUITE FEASIBLE ; IF tag_exist(*!dustem_scope,'CONTINUUM') THEN BEGIN ; cgoplot,st.sed.wav,(*(*!dustem_plugin).continuum)[*,0],color='Teal',linestyle=3 ; ENDIF ; IF tag_exist(*!dustem_scope,'FREEFREE') THEN BEGIN ; cgoplot,st.sed.wav,(*(*!dustem_plugin).freefree)[*,0],color='Dark Red',linestyle=3 ; ENDIF ; IF tag_exist(*!dustem_scope,'SYNCHROTRON') THEN BEGIN ; cgoplot,st.sed.wav,(*(*!dustem_plugin).synchrotron)[*,0],color='Crimson',linestyle=3 ; ENDIF ; ; IF tag_exist(*!dustem_scope,'MBBDY_ISRF') THEN BEGIN ; cgoplot,st.sed.wav,(*(*!dustem_plugin).mbbdy_isrf)[*,0],color='Gold',linestyle=3 ; ENDIF ; ; IF tag_exist(*!dustem_scope,'MBBDY') THEN BEGIN ; cgoplot,st.sed.wav,(*(*!dustem_plugin).mbbdy)[*,0],color='Cornflower',linestyle=3 ; ENDIF ; ; ; cgoplot,st.sed.wav,spec/norm,color=use_col_tot,linestyle=use_line_tot ; if keyword_set(fpol) then cgoplot,st.polsed.wav,specpol,color='Teal',linestyle=4 ; ;plot the normalized data as well. ; ;---------------------------------------- ; ; ;==== print the legend ; frmt0='(A36)' ; frmt1='(1E10.2)' ; frmt2='(F7.2)' ; use_legend_xpos=0.50 ; if keyword_set(fpol) then use_legend_ypos=0.70 ELSE use_legend_ypos=0.84 ; use_legend_offset=0.03 ;This is the offset between lines of the legend in normalized units ; legend_charsize=0.86 ; ; k=0. ; iscond=0 ; n_plgns = n_tags(*!dustem_scope) ; inn=n_plgns/2+1 ; IF n_plgns mod 2 ne 0 THEN inn=n_plgns/2+2 ; ; IF keyword_set(legend_xpos) THEN use_legend_xpos=legend_xpos ; IF keyword_set(legend_ypos) THEN use_legend_ypos=legend_ypos ; IF keyword_set(legend_offset) THEN use_legend_offset=legend_offset ; ; IF !d.name NE 'PS' THEN cleanplot ; ; tg=0 ; prv_str='' ; IF keyword_set(res) THEN BEGIN ; Npar=n_elements(res) ; ;print,'==============' ; ; FOR i=0L,Npar-1 DO BEGIN ; parameter_description=(*(*!dustem_fit).param_descs)[i] ; parameter_type=dustem_parameter_description2type(parameter_description,string_name=string_name) ; str=string(string_name+' = ',format=frmt0)+string(res[i],format=frmt1) ; IF keyword_set(errors) THEN BEGIN ; str=str+textoidl(' \pm ')+string(errors(i),format=frmt1) ; ENDIF ; ; xxpos=use_legend_xpos*0.07 ; yypos=use_legend_ypos*0.03 ; xyouts,xxpos,yypos,'Model: '+!dustem_model,color=0,/normal,charsize=legend_charsize ; ; IF STRUPCASE(strmid(strtrim(parameter_description,2),0,6)) eq 'DUSTEM' THEN BEGIN ; ; ; xxpos=use_legend_xpos*0.07 ; ; yypos=use_legend_ypos*0.03 ; ; xyouts,xxpos,yypos,'Model: '+!dustem_model,color=0,/normal,charsize=legend_charsize ; ; xxpos=use_legend_xpos*0.75 ; yypos=use_legend_ypos*1.03 ; xyouts,xxpos,yypos,'--Plugins--',color=0,/normal,charsize=legend_charsize ; ; ii = strsplit(string_name,'_',count=countx) & ii = ii(countx-1)-1 ; Locating the last underscore to automate the extraction of the plugin's keyword ; ; mm=where(tag_names(*!dustem_scope) eq strupcase(strmid(string_name,7,ii-7)),coun) ; Selecting a plugin through matching the string name of the plugin form the scope system variable with the one read from the parameter description vector ; ; ;tg+=1 ; ;if strmid(string_name,7,ii-7) eq prv_str then tg-=1 ; prmtg=(*(*!dustem_paramtag).(mm)) ; indtg=(strmid(string_name,ii+1)) & indtg=strmid(indtg,0,/reverse_offset) ; ;stop ; indtg=fix(indtg) ; prmtg=prmtg[indtg-1] ; ; str=string(strmid(string_name,7,ii-7)+' ['+strmid(string_name,ii+1)+']: '+prmtg+' = ',format=frmt0)+string(res[i],format=frmt1) ; ; prv_str=strmid(string_name,7,ii-7) ; ; ; ; IF keyword_set(errors) THEN BEGIN ; str=str+textoidl(' \pm ')+string(errors(i),format=frmt1) ; ENDIF ; ; xxpos=use_legend_xpos*0.46 ; ; IF n_plgns gt 3 THEN BEGIN ;adapt the display of the plugins if there are more than three (display two columns) ; IF i eq inn+k THEN BEGIN ; k+=inn ; ;iscond=1 ; inn+=1 ; xxpos=use_legend_xpos*0.06 ; ENDIF ; ENDIF ; ; ; IF iscond THEN BEGIN ; ; inn+=1 ; ; xxpos=use_legend_xpos*0.06 ; ; ENDIF ; ; yypos=use_legend_ypos-(i-k)*use_legend_offset ; xyouts,xxpos,yypos,str,color=0,/normal,charsize=legend_charsize ; endif else begin ; IF STRUPCASE(strmid(strtrim(parameter_description,2),0,24)) eq '(*!DUSTEM_PARAMS).GRAINS' and STRUPCASE(strmid(strtrim(parameter_description,2),3,1,/reverse_offset)) EQ 'O' then begin ; indpop=fix(STRUPCASE(strmid(strtrim(parameter_description,2),12,1,/reverse_offset))) ; ;oo+=1 ; ;string_name=(((*!dustem_params).GRAINS).grain_type)[oo-1] ; string_name=(((*!dustem_params).GRAINS).grain_type)[indpop] ; ;stop ; endif ; k+=1 ; xxpos=use_legend_xpos*1.5 ; yypos=use_legend_ypos*1.03 ; xyouts,xxpos,yypos,'--Parameters--',color=0,/normal,charsize=legend_charsize ; yypos=use_legend_ypos-(i)*use_legend_offset ; xxpos=use_legend_xpos*1.14 ; str=string(string_name+' = ',format=frmt0)+string(res[i],format=frmt1) ; xyouts,xxpos,yypos,str,color=0,/normal,charsize=legend_charsize ; endelse ; ENDFOR ; ;stop ; ENDIF ; IF keyword_set(chi2) THEN BEGIN ; xxpos=1.29*use_legend_xpos ; yypos=1.13*0.84;use_legend_ypos ; xyouts,xxpos,yypos,string('chi2=',format=frmt0)+string(chi2,format=frmt2),color=0,/normal,charsize=legend_charsize ; ENDIF ; IF keyword_set(rchi2) THEN BEGIN ; xxpos=1.29*use_legend_xpos ; yypos=1.13*0.84-use_legend_offset;use_legend_ypos-use_legend_offset ; xyouts,xxpos,yypos,string('red. chi2=',format=frmt0)+string(rchi2,format=frmt2),color=0,/normal,charsize=legend_charsize ; ENDIF ; ; xtit=textoidl('\lambda (\mum)') ; ;cgplot,(*!dustem_data.sed).wav,(*!dustem_data.sed).values/sed,/nodata,xtit=xtit,ytit='Normalized',tit='',/xlog,xr=xr,/ys,/xs,yr=[0,2],ylog=0,position=[0.12,0.14,0.96,0.35],/noerase,yticks=2,ymino=2,xticklen=0.1 ; ;stop ; ; IF keyword_set(_extra) THEN BEGIN ; extra_kept={XR:[0.,0.]} ; extra_tags=tag_names(_extra) ; ind=where(extra_tags EQ 'XR',count) ; IF count NE 0 THEN extra_kept.XR=_extra.(ind[0]) ;ELSE extra_kept=0 ; ENDIF ; ; ;stop ; ;,position=[0.12,0.14,0.96,0.35] old position before your polfrac display modification ; if keyword_set(fpol) then begin ; cgplot,(*!dustem_data.sed).wav,(*!dustem_data.sed).values/sed,_extra=extra_kept,/nodata,xtit=xtit,ytit='Normalized',tit='',/xlog,/ys,/xs,yr=[0,2],ylog=0,position=[0.12,0.1,0.96,0.25],/noerase,yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.3 ; endif else cgplot,(*!dustem_data.sed).wav,(*!dustem_data.sed).values/sed,_extra=extra_kept,/nodata,xtit=xtit,ytit='Normalized',tit='',/xlog,/ys,/xs,yr=[0,2],ylog=0,position=[0.12,0.14,0.96,0.35],/noerase,yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.3 ; ;plot the normalized data as well. ; IF count_spec NE 0 THEN BEGIN ; xx=((*!dustem_data.sed).wav)[ind_spec] ; yy=((*!dustem_data.sed).values/sed)[ind_spec] ; cgoplot,xx,yy,psym=16,symsize=1,thick=2,color=use_col_sed_spec ; trois_sigma=(3.*((*!dustem_data.sed).sigma)/2./sed)[ind_spec] ; cgerrplot,xx,yy-trois_sigma,yy+trois_sigma,color=use_col_sed_spec ; ENDIF ; IF count_filt NE 0 THEN BEGIN ; xx=((*!dustem_data.sed).wav)[ind_filt] ; yy=((*!dustem_data.sed).values/sed)[ind_filt] ; cgoplot,xx,yy,psym=16,symsize=1,thick=2,color='Dodger Blue' ; trois_sigma=(3.*((*!dustem_data.sed).sigma)/2./sed)[ind_filt] ; cgerrplot,xx,yy-trois_sigma,yy+trois_sigma,color='Dodger Blue' ; ENDIF ; ; ;stop ; ;cgoplot,(*!dustem_data.sed).wav,(*!dustem_data.sed).values/sed,psym=16,symsize=1,thick=2,color='Dodger Blue' ; cgoplot,10^!x.crange,replicate(1.,2),color='black',linestyle=0 ; ;cgoplot,st.sed.wav,spec/spec,color='black' ; ;cgerrplot,((*!dustem_data.sed).wav),((*!dustem_data.sed).values)/sed-3.*((*!dustem_data.sed).sigma)/2./sed,((*!dustem_data.sed).values)/sed+3.*((*!dustem_data.sed).sigma)/2./sed,color='Dodger Blue' ; ; ; if keyword_set(fpol) then begin ; plotsym,0,/fill ; cgplot, (*!dustem_data.polfrac).wav,(*!dustem_data.polfrac).values*100,/nodata,xtit='',tit=title,ytit='',/xlog,/ylog,/ys,/xs,position=[0.12,0.76,0.96,0.91],charsize=1.3,yr=[1.0E-1,30.0],/noerase,xticklen=0.1,xtickformat='(A1)',_extra=extra_kept;,xr=_extra.xr ; xxpos=use_legend_xpos*0.35 ; yypos=use_legend_ypos*1.25 ; xyouts,xxpos,yypos,'Polarization fraction (%)',color=cgcolor('purple'),charsize=legend_charsize,/normal ; yypos=use_legend_ypos*1.20 ; stringg='Polarization SED '+'('+textoidl('P_{\nu}')+')' ; xyouts,xxpos,yypos,stringg,color=cgcolor('teal'),charsize=legend_charsize,/normal ; pilotfx=fpol(0);((*!dustem_data.polfrac).values)(0);fpol(0); ; cgoplot, (*!dustem_data.polfrac).wav,(*!dustem_data.polfrac).values*100,charsize=1.3,psym=8,syms=1,thick=2,color='Dodger Blue' ; cgoplot, st.polsed.wav,(specpol/spec)*100/pilotfx*((*!dustem_data.polfrac).values)(0),color='purple' ; cgoplot, (*!dustem_data.polfrac).wav,fpol*100/pilotfx*((*!dustem_data.polfrac).values)(0),color='Red',psym=6,syms=1 ; ;fpol=abs(fpol) ; ;delp=(*!dustem_data.polfrac).values*100-fpol*100/pilotfx*((*!dustem_data.polfrac).values)(0) ; ;cgoplot, ((*!dustem_data.polfrac).wav),((*!dustem_data.polfrac).values*100+delp),charsize=1.3,color='black',linestyle=2 ; ;stop ; endif ; ; IF keyword_set(ps) THEN BEGIN ; device,/close ; set_plot,'X' ; ENDIF ; ; ;stop ; ; the_end: END