Blame view

src/idl/dustem_plot_dataset.pro 234 KB
c7b5699b   Jean-Philippe Bernard   minor changes
1
2
3
4
5
6
7
8
9
10
11
PRO dustem_plot_dataset,st $
                       ,dustem_interp $
                       ,dustem_spec $
                       ,extra_spec=extra_spec $
                       ,dataset=dataset $
                       ,refresh=refresh $
                       ,position=position $
                       ,positive_only=positive_only $
                       ,negative_only=negative_only $
                       ,_extra=_extra $
                       ,help=help
bffa7018   Ilyes Choubani   update
12
13
14
15

;+
; NAME:
;    dustem_plot_dataset
af2812ab   Annie Hughes   updated doc help
16
;
bffa7018   Ilyes Choubani   update
17
18
; PURPOSE:
;    Allows the plotting of a (several) dataset(s) 
af2812ab   Annie Hughes   updated doc help
19
;
bffa7018   Ilyes Choubani   update
20
; CATEGORY:
af2812ab   Annie Hughes   updated doc help
21
22
;    DustEMWrap, Distributed, Low-level, Plotting
;
bffa7018   Ilyes Choubani   update
23
; CALLING SEQUENCE:
9ded3be9   Ilyes Choubani   Display update. F...
24
;    dustem_plot_dataset, st, dustem_interp, dustem_spec, dataset ,extra_spec=extra_spec, refresh=refresh, position=position,positive_only=positive_only, negative_only=negative_only, _extra=_extra 
af2812ab   Annie Hughes   updated doc help
25
;
bffa7018   Ilyes Choubani   update
26
; INPUTS:
9ded3be9   Ilyes Choubani   Display update. F...
27
;    st = DustEM output structure
af2812ab   Annie Hughes   updated doc help
28
;
9ded3be9   Ilyes Choubani   Display update. F...
29
30
31
32
; INPUT and OUTPUT KEYWORDS:
;    dustem_interp = dustem SED predictions - type = array or list of arrays.
;    dustem_spec = dustem spectra predictions (Emission or Extinction) - type = array or list of arrays 
;    extra_spec = Specific to the use of polfrac that requires an extra spectrum (that of SED) - type = array or list of arrays
c7b5699b   Jean-Philippe Bernard   minor changes
33
;    dataset = Dataset(s) to be plotted - type = array. If absent, nothing gets plotted.
9ded3be9   Ilyes Choubani   Display update. F...
34
35
36
;    position =  Position(s) of the plot(s) - type = list 
;    positive_only = Plotting of positive data on a 'modified logarithm' axis/plot - type = Boolean array   
;    negative_only = Plotting of negative data on a 'modified logarithm' axis/plot - type =  
af2812ab   Annie Hughes   updated doc help
37
;
bffa7018   Ilyes Choubani   update
38
39
; OUTPUTS:
;    NONE
bffa7018   Ilyes Choubani   update
40
41
; ACCEPTED KEY-WORDS:
;    help
9ded3be9   Ilyes Choubani   Display update. F...
42
;    refresh = Plot the datasets that change after each DustEM run 
bffa7018   Ilyes Choubani   update
43
44
; COMMON BLOCKS:
;    None
af2812ab   Annie Hughes   updated doc help
45
;
bffa7018   Ilyes Choubani   update
46
47
; SIDE EFFECTS:
;    Does a plot
af2812ab   Annie Hughes   updated doc help
48
;
bffa7018   Ilyes Choubani   update
49
50
51
; RESTRICTIONS:
;    The DustEM fortran code must be installed
;    The DustEMWrap IDL code must be installed
af2812ab   Annie Hughes   updated doc help
52
;
bffa7018   Ilyes Choubani   update
53
54
55
56
57
; PROCEDURES AND SUBROUTINES USED:
;
; EXAMPLES
;    
; MODIFICATION HISTORY:
af2812ab   Annie Hughes   updated doc help
58
;    Written by Ilyes Choubani 2022
bffa7018   Ilyes Choubani   update
59
;    Evolution details on the DustEMWrap gitlab.
af2812ab   Annie Hughes   updated doc help
60
;    See http://dustemwrap.irap.omp.eu/ for FAQ and help.  
bffa7018   Ilyes Choubani   update
61
62
;-

af2812ab   Annie Hughes   updated doc help
63

bffa7018   Ilyes Choubani   update
64
65
66
67
68
69
IF keyword_set(help) THEN BEGIN
  doc_library,'dustem_plot_dataset'
  goto,the_end
END


9ded3be9   Ilyes Choubani   Display update. F...
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
;****NB (Latest changes)****:  
;Now all datasets can be plotted simultaneously
;In addition, for each dataset, the normalized plot and normal plot are plotted simultaneously
;This was not the case before.
;Since the new changes, I believe many of the plotting keywords can be removed. 
;This is in part because I have added a /nodata plot at each update/refreshing step to guide the routine where to plot.

;REMOVED/OBSOLETE: kept to potentially help fix errors.

; if !run_pol then begin
;     if isa(position) then begin
;         if keyword_set(norm) then pospltxt = [position(0)+0.02,position(3)-0.02] else pospltxt = [position(0)+0.02,position(3)-0.03]  
;     endif
; endif else begin
;     if isa(position) then pospltxt = [position(0)+0.02,position(3)-0.05] ;hard-coded but we can find a way 
; endelse 
bffa7018   Ilyes Choubani   update
86
87
88
89
90
91
92

wavs=dustem_get_wavelengths()
n_plgns = n_tags(*!dustem_plugin)
Ngrains=(*!dustem_params).Ngrains
use_cols=dustem_grains_colors(Ngrains,/cgplot)
use_cols[1]='Cornflower'
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
dc84fd94   Ilyes Choubani   Small corrections...
93

bffa7018   Ilyes Choubani   update
94
95
96
97
98
99
100
101
102
103
104
105
clrs_plgns = ['Rosy Brown','Gold','Light Coral','Slate Blue','Dark Khaki','Salmon','Dark Green'] ;FOR NOW
;NB: plugins need to have different colors for extinction because they are not the same plugins. New array required.

scopes=tag_names((*!dustem_plugin))
tgnms_extra = tag_names(_extra)


frmt0='(A46)'
frmt1='(1E11.4)'
frmt2='(10F10.2)'


9ded3be9   Ilyes Choubani   Display update. F...
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
; if keyword_set(refresh) then begin
; 
;     dustem_interp.reverse
;     dustem_spec.reverse
;     extra_spec.reverse
;     dataset=reverse(dataset)
;     position.reverse
;     
; endif

;These were created to be able to utilize the existing structure of this procedure 
;and to plot multiple datasets at once... 
;The routine also allows to plot a single dataset but this will have to be set in the main plotting routine which is dustermwrap_plot.

;The following variables are created because I wanted to keep using the same variable names throughout the lines of the code.
;I can replace them in the future.
bffa7018   Ilyes Choubani   update
122

9ded3be9   Ilyes Choubani   Display update. F...
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
if keyword_set(dustem_interp) then dustem_interp_sv = dustem_interp else dustem_interp_sv = list()
if keyword_set(dustem_spec) then dustem_spec_sv = dustem_spec else dustem_spec_sv = list()
if keyword_set(extra_spec) then extra_spec_sv = extra_spec else extra_spec_sv = list();assuming this is always called
if keyword_set(position) then position_sv=position else position_sv = list()

;temporary solution. I'll clean up the code in the future
positive_only=1
negative_only=1

;Generating a fake vector that extends beyond the DustEM/DustEmWrap wavelength range (for display purposes only)
vectw=DINDGEN(1001)*(alog10(1E7) - alog10(1E5))/(1000 - 1L) + alog10(1E5)
vectw=10^vectw[1:*]
vectw=[wavs,vectw]
vectx=vectw*0+1

24fe128f   Ilyes Choubani   Removed forced pl...
138
139
if keyword_set(dataset) then begin ;

9ded3be9   Ilyes Choubani   Display update. F...
140
    for ss=0L,n_elements(dataset)-1 do begin
bffa7018   Ilyes Choubani   update
141
            
bffa7018   Ilyes Choubani   update
142
            
9ded3be9   Ilyes Choubani   Display update. F...
143
144
145
146
147
148
149
150
151
            if n_elements(dustem_interp_sv) NE 0 then begin
                if typename(dustem_interp_sv) EQ 'LIST' then  dustem_interp = dustem_interp_sv[ss] else dustem_interp = dustem_interp_sv
            endif
            if n_elements(dustem_spec_sv) NE 0  then begin
                if typename(dustem_spec_sv) EQ 'LIST' then dustem_spec = dustem_spec_sv[ss] else dustem_spec = dustem_spec_sv
            endif
            if n_elements(extra_spec_sv) NE 0 then begin
                if n_elements(extra_spec_sv[ss]) NE 1 then extra_spec = extra_spec_sv[ss] ;assuming this is always called
            endif
bffa7018   Ilyes Choubani   update
152
            
bffa7018   Ilyes Choubani   update
153
            
9ded3be9   Ilyes Choubani   Display update. F...
154
            if n_elements(position_sv) NE 0 then begin
bffa7018   Ilyes Choubani   update
155
            
18e47096   Ilyes Choubani   corrections for e...
156
                if (size(position_sv(0)))[2] NE 11 then position=position_sv else position=position_sv[ss]
9ded3be9   Ilyes Choubani   Display update. F...
157
158
                
                if n_elements(position) ne 1 then begin ;eq 1 is for datasets that don't have normalized curves. ie: polfrac and psi.
bffa7018   Ilyes Choubani   update
159
                    
9ded3be9   Ilyes Choubani   Display update. F...
160
161
162
163
164
165
166
167
168
169
170
                    if !run_pol then begin
                        
                        pospltxt = [(position[0])(0)+0.02,(position[0])(3)-0.03]
                        pospltxt_n = [(position[1])(0)+0.02,(position[1])(3)-0.02];created this new array so that the normalized plot is automatically plotted for each dataset. 
                        
                    endif else begin
                    
                        pospltxt = [(position[0])(0)+0.02,(position[0])(3)-0.05]
                        pospltxt_n = [(position[1])(0)+0.02,(position[1])(3)-0.05]
                    
                    endelse 
bffa7018   Ilyes Choubani   update
171
                
9ded3be9   Ilyes Choubani   Display update. F...
172
                endif else pospltxt = [(position[0])(0)+0.02,(position[0])(3)-0.05];
bffa7018   Ilyes Choubani   update
173
                
9ded3be9   Ilyes Choubani   Display update. F...
174
            endif
bffa7018   Ilyes Choubani   update
175
            
9ded3be9   Ilyes Choubani   Display update. F...
176
177
178
179
180
181
182
            Case strupcase(dataset[ss]) of 
            
                'SED': begin
                
                    ;SETTING THE PLOT RANGE
                    xr = !dustem_plot_range.sed.xr
                    yr = !dustem_plot_range.sed.yr
bffa7018   Ilyes Choubani   update
183
                    
9ded3be9   Ilyes Choubani   Display update. F...
184
185
186
187
188
189
                    idx_filt=where((*(*!dustem_data).sed).filt_names NE 'SPECTRUM',ct_filt)
                    idx_spec=where((*(*!dustem_data).sed).filt_names EQ 'SPECTRUM',ct_spec)
                            
                    ;DISPLAYING OF NORMALIZED PLOT HERE IS DONE BEFORE THE PLOTTING OF THE NORMAL PLOT
                    ;THIS SHOULD NOT INTERFERE WITH THE CODE.
                    
24fe128f   Ilyes Choubani   Removed forced pl...
190
191
192
193
194
                    If n_elements(position) GT 1 THEN BEGIN ;Making the plotting of the normalized data optional because so far it was forced.
                        ;REFRESHING OF NORMALIZED PLOT
                        if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
                            ;making sure we're on the plot we're consider (since cgwindow doesn't allow us to do what we want anyway...)
                            cgplot,vectw,vectx,/nodata,/xlog,xs=9,ys=9,pos=position[1],noerase=1,ytickformat='(A1)',xtickformat='(A1)',color='Black',xr=xr,xtit='',yticks=0,xticks=0,xticklen=0.0,yticklen=0.0,yr=[0.0,2.0],ymino=2,charsize=1.0
bffa7018   Ilyes Choubani   update
195
                            
24fe128f   Ilyes Choubani   Removed forced pl...
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
                            IF ct_spec NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).sed).wav)[idx_spec]
                                yy=dustem_interp[idx_spec]
                                rms=2.*((*(*!dustem_data).sed).sigma)(idx_spec)/2.
                                cgoplot,xx,((*(*!dustem_data).sed).values)[idx_spec]/yy,color='Powder Blue',psym=16,syms=0.8,noerase=1,pos=position[1]
                                cgerrplot,((*(*!dustem_data).sed).wav)(idx_spec),(((*(*!dustem_data).sed).values)[idx_spec]-rms)/yy,(((*(*!dustem_data).sed).values)[idx_spec]+rms)/yy,color='Powder Blue'
                            ENDIF
                            
                            IF ct_filt NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).sed).wav)[idx_filt]
                                yy=dustem_interp[idx_filt]
                                rms=2.*((*(*!dustem_data).sed).sigma)(idx_filt)/2. 
                                cgoplot,xx,((*(*!dustem_data).sed).values)[idx_filt]/yy,psym=16,color='Dodger Blue',syms=0.8,noerase=1,pos=position[1]
                                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';,/overplot 
                            ENDIF
                                
                            
                        endif 
9ded3be9   Ilyes Choubani   Display update. F...
214
                    
24fe128f   Ilyes Choubani   Removed forced pl...
215
216
217
218
219
220
221
222
223
224
225
                        ;PLOTTING OF FROZEN PART OF NORMALIZED PLOT    
                        if not keyword_set(refresh) then begin        ;This used to be an ELSE condition before. Made it like so for testing.
                            
                            xtit=textoidl('\lambda (\mum)')
                            if !run_pol then begin
                                xtit = ''
                                xtickformat='(A1)'
                            endif else xtickformat='(F10.2)' ;MAYBE YOU'LL CHANGE THIS FORMAT TO EXPONENTIAL NOTATION
                            
                            cgplot,vectw,vectx,/xlog,/ys,xs=1,pos=position[1],noerase=1,xtickformat=xtickformat,color='Black',xr=xr,xtit=xtit,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0
                            xyouts,pospltxt_n[0],pospltxt_n[1],textoidl('norm'),color=0,/normal,charsize=1.1
bffa7018   Ilyes Choubani   update
226
                        
24fe128f   Ilyes Choubani   Removed forced pl...
227
228
229
                        ;endelse
                        endif
                    ENDIF
bffa7018   Ilyes Choubani   update
230
                    
bffa7018   Ilyes Choubani   update
231
                    
9ded3be9   Ilyes Choubani   Display update. F...
232
                    ;REFRESHING OF NORMAL PLOT                 
bffa7018   Ilyes Choubani   update
233
234
                    if keyword_set(refresh) then begin ;The data points in the plot are being refreshed
                        
9ded3be9   Ilyes Choubani   Display update. F...
235
236
237
238
239
240
                        ;stop
                        ;making sure we're on the plot we're consider (since cgwindow doesn't allow us to do what we want anyway...)
                        cgplot,vectw,vectx,/nodata,/xlog,/ylog,xs=8,ys=8,pos=position[0],noerase=1,ytickformat='(A1)',xtickformat='(A1)',color='Black',xr=xr,xtit='',yr=yr,yticks=0,xticks=0,xticklen=0.0,yticklen=0.0,charsize=1.0
                        
                        ;stop
                        
bffa7018   Ilyes Choubani   update
241
242
                        ;Plotting of the spectra of the dust species
                        FOR i=0L,Ngrains-1 DO BEGIN
9ded3be9   Ilyes Choubani   Display update. F...
243
                            cgoplot,st.sed.wav,st.sed.(i+1)*fact,color=use_cols[i],pos=position[0],noerase=1
bffa7018   Ilyes Choubani   update
244
                        ENDFOR
9ded3be9   Ilyes Choubani   Display update. F...
245
                        ;stop
bffa7018   Ilyes Choubani   update
246
247
248
249
250
251
252
                                                
                        ;Plotting of the plugins.
                        for i=0L,n_plgns-1 do begin
                            
                            if isa((*!dustem_plugin).(0).spec) then begin 
                            
                                IF total(strsplit((*(*!dustem_plugin).(i).scope),'+',/extract) EQ 'ADD_SED') THEN begin
9ded3be9   Ilyes Choubani   Display update. F...
253
                                    cgoplot,st.sed.wav,((*(*!dustem_plugin).(i).spec)[*,0]),color=clrs_plgns[i],pos=position[0],noerase=1,linestyle=2               
bffa7018   Ilyes Choubani   update
254
255
256
257
258
259
260
261
262
263
264
265
                                ENDIF
                                
                            endif
                            
                        endfor
                                                
                        ;PLotting of the interpolates corresponding to spectrum and filter points
                           
                        IF ct_spec NE 0 THEN BEGIN
                        
                            xx=((*(*!dustem_data).sed).wav)[idx_spec]
                            yy=dustem_interp[idx_spec]
9ded3be9   Ilyes Choubani   Display update. F...
266
                            cgoplot,xx,yy,color='Indian Red',pos=position[0],psym=7,syms=1,noerase=1   
bffa7018   Ilyes Choubani   update
267
268
269
270
271
272
                        ENDIF
                        
                        
                        IF ct_filt NE 0 THEN BEGIN
                            xx=((*(*!dustem_data).sed).wav)[idx_filt]
                            yy=dustem_interp[idx_filt]
9ded3be9   Ilyes Choubani   Display update. F...
273
274
                            ;stop
                            cgoplot,xx,yy,color='red',pos=position[0],psym=6,syms=2,noerase=1
bffa7018   Ilyes Choubani   update
275
276
277
278
                        ENDIF
                        
                        
                        ;Plotting of the total dust emission spectrum
9ded3be9   Ilyes Choubani   Display update. F...
279
                        cgoplot,st.sed.wav,dustem_spec,pos=position[0],noerase=1,/xlog,/ys,/xs,/ylog
bffa7018   Ilyes Choubani   update
280
281
282
283
284
285
286
287
                                
                    endif ;else begin ;The data points in the plot that remain unchanged.
                        ;stop
                    if not keyword_set(refresh) then begin
                        ;Spectrum points are treated before for plotting reasons. 
                        if ct_spec ne 0 then begin 
                            
                            ;Plotting of spectrum data points (to be fitted)
9ded3be9   Ilyes Choubani   Display update. F...
288
                            cgplot,((*(*!dustem_data).sed).wav)(idx_spec),((*(*!dustem_data).sed).values)(idx_spec),/ylog,/xlog,/ys,xs=9,pos=position[0],noerase=1,xtit=' ',charsize=1.15,xtickformat='(A1)',color='Powder Blue',xr=xr,yr=yr,psym=16,syms=0.8,ytickformat='dstmwrp_exp'                
bffa7018   Ilyes Choubani   update
289
290
                            
                            ;Plotting of the spectrum error points
9ded3be9   Ilyes Choubani   Display update. F...
291
                            rms=2.*((*(*!dustem_data).sed).sigma)(idx_spec)/2.
bffa7018   Ilyes Choubani   update
292
293
294
295
296
                            cgerrplot,((*(*!dustem_data).sed).wav)(idx_spec),((*(*!dustem_data).sed).values)(idx_spec)-rms,((*(*!dustem_data).sed).values)(idx_spec)+rms,color='Powder Blue'

                        endif
                        
                        if ct_filt ne 0 then begin
9ded3be9   Ilyes Choubani   Display update. F...
297
                            
bffa7018   Ilyes Choubani   update
298
                            ;Plotting of filter data points (to be fitted) + testing for prior plotting                         
9ded3be9   Ilyes Choubani   Display update. F...
299
300
                            if ct_spec ne 0 then cgoplot,((*(*!dustem_data).sed).wav)(idx_filt),((*(*!dustem_data).sed).values)(idx_filt),charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,pos=position[0],/ys,xs=9,noerase=1,xtickformat='(A1)',xr=xr,yr=yr,ytickformat='dstmwrp_exp',/ylog,/xlog else $
                                cgplot,((*(*!dustem_data).sed).wav)(idx_filt),((*(*!dustem_data).sed).values)(idx_filt),charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,pos=position[0],/ys,xs=9,noerase=1,xtickformat='(A1)',xtit=' ',xr=xr,yr=yr,ytickformat='dstmwrp_exp',/ylog,/xlog
bffa7018   Ilyes Choubani   update
301
302
303
                            
                            
                            ;Plotting of the filter error points
9ded3be9   Ilyes Choubani   Display update. F...
304
                            rms=2.*((*(*!dustem_data).sed).sigma)(idx_filt)/2.;/dustem_sed(idx_filt)
bffa7018   Ilyes Choubani   update
305
306
307
308
309
                            cgerrplot,((*(*!dustem_data).sed).wav)(idx_filt),((*(*!dustem_data).sed).values)(idx_filt)-rms,((*(*!dustem_data).sed).values)(idx_filt)+rms,color='Dodger Blue'
                            
                        endif
                        
                        ;Plotting of frequency axis
9ded3be9   Ilyes Choubani   Display update. F...
310
                        ;what are these? tests?
bffa7018   Ilyes Choubani   update
311
312
                        ;save_x=!x & save_y=!y & save_z=!z & save_p=!p & save_d=!d
                        ;save_scaling=1
d0f6ff14   Ilyes Choubani   corrected faulty ...
313
                        use_xrange=((!const.c*1E6/(xr))*1E-9)
bffa7018   Ilyes Choubani   update
314
315
316
                        ;order=sort(use_xrange)
                        ;use_xrange=use_xrange[order]
                        ;print,use_xrange
9ded3be9   Ilyes Choubani   Display update. F...
317
                        
bffa7018   Ilyes Choubani   update
318
319
320
321
322
323
324
325
326
327
328
329
330
331
                        IF !dustemwrap_which_language NE 'fawlty' THEN BEGIN
                            axis, xaxis=1, xlog=1, xs=1, xminor=10, xticklen=0.05, xrange=use_xrange,charsize=1.15,xtitle=textoidl('\nu (GHz)'),color=0
                        ENDIF
                        
                        xyouts,pospltxt[0],pospltxt[1],textoidl('I_{\nu} (MJy/sr)'),color=0,/normal,charsize=1.3;,charthick=2.0
                         
                        ;Locating all the hidden data points (spectrum+filter)
                        match2,((*(*!dustem_data).sed).wav),((*(*!dustem_show).sed).wav),show_sedpts,fit_sedpts ;only show_sedpts is needed
                        idx_rmv_sed=where(fit_sedpts eq -1, ct_hdnpts) ; indices of the points to hide
                        ;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)
                         
                        if ct_hdnpts ne 0 then begin ;Hidden data points are present 
9ded3be9   Ilyes Choubani   Display update. F...
332
                            
bffa7018   Ilyes Choubani   update
333
334
                            if ct_spec_hdn ne 0 then begin
                                ;Plotting of hidden spectrum data points
9ded3be9   Ilyes Choubani   Display update. F...
335
                                cgoplot,(((*(*!dustem_show).sed).wav)[idx_rmv_sed])(idx_spec_hdn),(((*(*!dustem_show).sed).values)[idx_rmv_sed])(idx_spec_hdn),pos=position[0],/ylog,/xlog,/ys,xs=9,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=16,syms=0.8
bffa7018   Ilyes Choubani   update
336
337
                                
                                ;Plotting of hidden spectrum error points
9ded3be9   Ilyes Choubani   Display update. F...
338
                                rms=2.*(((*(*!dustem_show).sed).sigma)[idx_rmv_sed])(idx_spec_hdn)/2.
bffa7018   Ilyes Choubani   update
339
340
341
342
343
                                cgerrplot,(((*(*!dustem_show).sed).wav)[idx_rmv_sed])(idx_spec_hdn),(((*(*!dustem_show).sed).values)[idx_rmv_sed])(idx_spec_hdn)-rms,(((*(*!dustem_show).sed).values)[idx_rmv_sed])(idx_spec_hdn)+rms,color='Black'
                            endif                                            
                            
                            if ct_filt_hdn then begin
                            ;Plotting of hidden filter data points 
9ded3be9   Ilyes Choubani   Display update. F...
344
                                cgoplot,(((*(*!dustem_show).sed).wav)[idx_rmv_sed])(idx_filt_hdn),(((*(*!dustem_show).sed).values)[idx_rmv_sed])(idx_filt_hdn),pos=position[0],/ylog,/xlog,/ys,xs=9,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=16,syms=0.8                                           
bffa7018   Ilyes Choubani   update
345
346
                                
                                ;Plotting of hidden filter error point
9ded3be9   Ilyes Choubani   Display update. F...
347
                                rms=2.*(((*(*!dustem_show).sed).sigma)[idx_rmv_sed])(idx_filt_hdn)/2.
bffa7018   Ilyes Choubani   update
348
349
350
351
352
                                cgerrplot,(((*(*!dustem_show).sed).wav)[idx_rmv_sed])(idx_filt_hdn),(((*(*!dustem_show).sed).values)[idx_rmv_sed])(idx_filt_hdn)-rms,(((*(*!dustem_show).sed).values)[idx_rmv_sed])(idx_filt_hdn)+rms,color='Black'
                                
                            endif
                                                           
                        endif    
9ded3be9   Ilyes Choubani   Display update. F...
353
                         
bffa7018   Ilyes Choubani   update
354
                    endif
9ded3be9   Ilyes Choubani   Display update. F...
355
356
    
                end
bffa7018   Ilyes Choubani   update
357
            
9ded3be9   Ilyes Choubani   Display update. F...
358
            ;DONE BUT NOT TESTED
bffa7018   Ilyes Choubani   update
359
            
9ded3be9   Ilyes Choubani   Display update. F...
360
            'EXT': begin 
bffa7018   Ilyes Choubani   update
361
            
9ded3be9   Ilyes Choubani   Display update. F...
362
363
364
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.ext.xr
                yr = !dustem_plot_range.ext.yr
bffa7018   Ilyes Choubani   update
365
                
9ded3be9   Ilyes Choubani   Display update. F...
366
367
368
                idx_filt=where((*(*!dustem_data).ext).filt_names NE 'SPECTRUM',ct_filt)
                idx_spec=where((*(*!dustem_data).ext).filt_names EQ 'SPECTRUM',ct_spec)         
                        
bffa7018   Ilyes Choubani   update
369
                
24fe128f   Ilyes Choubani   Removed forced pl...
370
371
                If n_elements(position) GT 1 THEN BEGIN ;Making the plotting of the normalized data optional because so far it was forced.
                    ;PLOTTING OF NORMALIZED PLOT
9ded3be9   Ilyes Choubani   Display update. F...
372
                    
24fe128f   Ilyes Choubani   Removed forced pl...
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
                    ;REFRESHING OF NORMALIZED PLOT 
                    if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
                        
                        ;making sure we're in the normalized plot so that overplotting happens here
                        cgplot,1/vectw,vectx,/xlog,/nodata,ys=8,xs=8,pos=position[1],noerase=1,xtickformat='(A1)',ytickformat='(A1)',color='Black',xr=xr,xtit='',yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,charsize=1.0
                        
                        IF ct_spec NE 0 THEN BEGIN
                            xx=((*(*!dustem_data).ext).wav)[idx_spec]
                            yy=dustem_interp[idx_spec]
                            rms=2.*((*(*!dustem_data).ext).sigma)(idx_spec)/2.
                            indzero = where(yy NE 0, ct_zero)
                            IF ct_zero NE 0 THEN BEGIN
                                cgoplot,(1/xx)[indzero],(((*(*!dustem_data).ext).values)[idx_spec])[indzero]/yy[indzero],color='Powder Blue',psym=16,syms=0.8,noerase=1,pos=position[1]
                                cgerrplot,(1/((*(*!dustem_data).ext).wav)(idx_spec))[indzero],((((*(*!dustem_data).ext).values)[idx_spec])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).ext).values)[idx_spec])[indzero]+rms[indzero])/yy[indzero],color='Powder Blue'
                            ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
388
                        ENDIF
24fe128f   Ilyes Choubani   Removed forced pl...
389
390
391
392
393
394
395
396
397
398
                        
                        IF ct_filt NE 0 THEN BEGIN ; There are no filter points for now...
                            xx=((*(*!dustem_data).ext).wav)[idx_filt]
                            yy=dustem_interp[idx_filt]
                            rms=2.*((*(*!dustem_data).ext).sigma)(idx_filt)/2.
                            indzero = where(yy NE 0, ct_zero)
                            IF ct_zero NE 0 THEN BEGIN
                                cgoplot,(1/xx)[indzero],(((*(*!dustem_data).ext).values)[idx_filt])[indzero]/yy[indzero],psym=16,color='Dodger Blue',syms=0.8,noerase=1,pos=position[1]
                                cgerrplot,(1/((*(*!dustem_data).ext).wav)(idx_filt))[indzero],((((*(*!dustem_data).ext).values)[idx_filt])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).ext).values)[idx_filt])[indzero]+rms[indzero])/yy[indzero],color='Dodger Blue';,/overplot 
                            ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
399
                        ENDIF
24fe128f   Ilyes Choubani   Removed forced pl...
400
                            
9ded3be9   Ilyes Choubani   Display update. F...
401
                        
24fe128f   Ilyes Choubani   Removed forced pl...
402
                    endif 
9ded3be9   Ilyes Choubani   Display update. F...
403
                    
24fe128f   Ilyes Choubani   Removed forced pl...
404
405
406
407
408
409
410
411
412
413
414
415
                    ;plotting of frozen data in polarization plot                            
                    if not keyword_set(refresh) then begin 
                           
                        xtit=textoidl('1/\lambda (\mum^{-1})')
                        if !run_pol then begin
                            xtit = ''
                            xtickformat='(A1)'
                        endif else xtickformat='(F10.2)' ;MAYBE YOU'LL CHANGE THIS FORMAT TO EXPONENTIAL NOTATION
                        cgplot,1/vectw,vectx,/xlog,/ys,xs=1,pos=position[1],noerase=1,xtickformat=xtickformat,color='Black',xr=xr,xtit=xtit,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0
                        xyouts,pospltxt_n[0],pospltxt_n[1],textoidl('norm'),color=0,/normal,charsize=1.1
                    
                    endif
9ded3be9   Ilyes Choubani   Display update. F...
416
                
24fe128f   Ilyes Choubani   Removed forced pl...
417
                ENDIF
bffa7018   Ilyes Choubani   update
418
            
9ded3be9   Ilyes Choubani   Display update. F...
419
420
421
422
            ;PLOTTING OF NORMAL PLOT
                
                ;REFRESHING OF NORMAL PLOT
                if keyword_set(refresh) then begin ;The data points in the plot are being refreshed
bffa7018   Ilyes Choubani   update
423
                    
9ded3be9   Ilyes Choubani   Display update. F...
424
425
                    
                    ;making sure we're in the normal plot so that overplotting happens here
3196a378   Ilyes Choubani   Complementing fit...
426
                    cgplot,1/vectw,vectx,/xlog,/ylog,/nodata,ys=8,xs=8,pos=position[0],noerase=1,xtickformat='(A1)',ytickformat='(A1)',color='Black',xr=xr,xtit='',yr=yr,yticks=2,ymino=2,xticklen=0.1,charsize=1.0
9ded3be9   Ilyes Choubani   Display update. F...
427
428
429
430
                    
                    ;Plotting of the spectra of the dust species
                
                    FOR i=0L,Ngrains-1 DO BEGIN
18e47096   Ilyes Choubani   corrections for e...
431
                        cgoplot,1/st.ext.wav,transpose((st.ext.(1))[i,*]+(st.ext.(2))[i,*])*(*!dustem_HCD)/1.0e21,color=use_cols[i],pos=position[0],noerase=1
9ded3be9   Ilyes Choubani   Display update. F...
432
                    ENDFOR
bffa7018   Ilyes Choubani   update
433
                        
9ded3be9   Ilyes Choubani   Display update. F...
434
435
436
                                            
                    ;Plotting of the plugins.
                    for i=0L,n_plgns-1 do begin
bffa7018   Ilyes Choubani   update
437
                        
9ded3be9   Ilyes Choubani   Display update. F...
438
439
440
                        if isa((*!dustem_plugin).(0).spec) then begin 
                        
                            IF total(strsplit((*(*!dustem_plugin).(i).scope),'+',/extract) EQ 'ADD_EXT') THEN begin
18e47096   Ilyes Choubani   corrections for e...
441
                                cgoplot,1/st.ext.wav,((*(*!dustem_plugin).(i).spec)[*,0]),color=clrs_plgns[i],pos=position[0],noerase=1,linestyle=2               
bffa7018   Ilyes Choubani   update
442
                            ENDIF
bffa7018   Ilyes Choubani   update
443
                            
9ded3be9   Ilyes Choubani   Display update. F...
444
                        endif
bffa7018   Ilyes Choubani   update
445
                        
9ded3be9   Ilyes Choubani   Display update. F...
446
447
448
449
450
                    endfor
                                            
                    ;PLotting of the interpolates corresponding to spectrum and filter points
                       
                    IF ct_spec NE 0 THEN BEGIN
bffa7018   Ilyes Choubani   update
451
                    
9ded3be9   Ilyes Choubani   Display update. F...
452
453
                        xx=((*(*!dustem_data).ext).wav)[idx_spec]
                        yy=dustem_interp[idx_spec]
18e47096   Ilyes Choubani   corrections for e...
454
                        cgoplot,1/xx,yy,color='Indian Red',pos=position[0],psym=7,syms=1,noerase=1   
9ded3be9   Ilyes Choubani   Display update. F...
455
                    ENDIF
bffa7018   Ilyes Choubani   update
456
                    
bffa7018   Ilyes Choubani   update
457
                    
9ded3be9   Ilyes Choubani   Display update. F...
458
459
460
                    IF ct_filt NE 0 THEN BEGIN
                        xx=((*(*!dustem_data).ext).wav)[idx_filt]
                        yy=dustem_interp[idx_filt]
18e47096   Ilyes Choubani   corrections for e...
461
                        cgoplot,1/xx,yy,color='red',pos=position[0],psym=6,syms=2,noerase=1
9ded3be9   Ilyes Choubani   Display update. F...
462
463
464
465
                    ENDIF
                    
                    
                    ;Plotting of the total dust emission spectrum
18e47096   Ilyes Choubani   corrections for e...
466
                    cgoplot,1/st.ext.wav,dustem_spec,pos=position[0],noerase=1,/xlog,/ys,/xs,/ylog
9ded3be9   Ilyes Choubani   Display update. F...
467
468
                     
                                    
bffa7018   Ilyes Choubani   update
469
                            
9ded3be9   Ilyes Choubani   Display update. F...
470
471
472
473
474
475
476
                endif 
                
                ;Plotting of the frozen data in the normal plot
                
                if not keyword_set(refresh) then begin
                    ;Spectrum points are treated before for plotting reasons. 
                    if ct_spec ne 0 then begin 
bffa7018   Ilyes Choubani   update
477
                        
9ded3be9   Ilyes Choubani   Display update. F...
478
                        ;Plotting of spectrum data points (to be fitted)
3196a378   Ilyes Choubani   Complementing fit...
479
                        cgplot,1/((*(*!dustem_data).ext).wav)(idx_spec),((*(*!dustem_data).ext).values)(idx_spec),/ylog,/xlog,ys=8,xs=8,pos=position[0],noerase=1,xtit=' ',charsize=1.15,xtickformat='(A1)',color='Powder Blue',xr=xr,yr=yr,psym=16,syms=0.8,ytickformat='dstmwrp_exp'                
bffa7018   Ilyes Choubani   update
480
                        
9ded3be9   Ilyes Choubani   Display update. F...
481
482
483
484
485
486
487
488
489
                        ;Plotting of the spectrum error points
                        rms=2.*((*(*!dustem_data).ext).sigma)(idx_spec)/2.
                        cgerrplot,1/((*(*!dustem_data).ext).wav)(idx_spec),((*(*!dustem_data).ext).values)(idx_spec)-rms,((*(*!dustem_data).ext).values)(idx_spec)+rms,color='Powder Blue'

                    endif
                    
                    if ct_filt ne 0 then begin
                    
                        ;Plotting of filter data points (to be fitted) + testing for prior plotting                         
18e47096   Ilyes Choubani   corrections for e...
490
                        if ct_spec ne 0 then cgoplot,1/((*(*!dustem_data).ext).wav)(idx_filt),((*(*!dustem_data).ext).values)(idx_filt),charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,pos=position[0],/ys,xs=9,noerase=1,xtickformat='(A1)',xr=xr,yr=yr,ytickformat='dstmwrp_exp',/ylog,/xlog else $
3196a378   Ilyes Choubani   Complementing fit...
491
                            cgplot,1/((*(*!dustem_data).ext).wav)(idx_filt),((*(*!dustem_data).ext).values)(idx_filt),charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,pos=position[0],ys=8,xs=8,noerase=1,xtickformat='(A1)',xtit=' ',xr=xr,yr=yr,ytickformat='dstmwrp_exp',/ylog,/xlog
bffa7018   Ilyes Choubani   update
492
                        
bffa7018   Ilyes Choubani   update
493
                        
9ded3be9   Ilyes Choubani   Display update. F...
494
495
496
                        ;Plotting of the filter error points
                        rms=2.*((*(*!dustem_data).ext).sigma)(idx_filt)/2.;/dustem_sed(idx_filt)
                        cgerrplot,1/((*(*!dustem_data).ext).wav)(idx_filt),((*(*!dustem_data).ext).values)(idx_filt)-rms,((*(*!dustem_data).ext).values)(idx_filt)+rms,color='Dodger Blue'
bffa7018   Ilyes Choubani   update
497
                        
9ded3be9   Ilyes Choubani   Display update. F...
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
                    endif
                    
                    
                    ;Plotting of frequency axis
                    IF !dustemwrap_which_language NE 'fawlty' THEN BEGIN
                        axis, xaxis=1, xlog=1, xs=1, xminor=10, xticklen=0.05, xrange=((!const.c*1E6*xr)*1E-9),charsize=1.15,xtitle=textoidl('\nu (GHz)'),color=0
                    ENDIF
                    xyouts,pospltxt[0],pospltxt[1],textoidl('\tau_{EXT}'),color=0,/normal,charsize=1.3;,charthick=2.0
                     
                    ;Locating all the hidden data points (spectrum+filter)
                    match2,((*(*!dustem_data).ext).wav),((*(*!dustem_show).ext).wav),show_sedpts,fit_sedpts ;only show_sedpts is needed
                    idx_rmv_sed=where(fit_sedpts eq -1, ct_hdnpts) ; indices of the points to hide
                    ;Locating the hidden spectrum and filter data points                                        
                    idx_filt_hdn = where((((*(*!dustem_show).ext).filt_names))(idx_rmv_sed) NE 'SPECTRUM',ct_filt_hdn)
                    idx_spec_hdn = where(((*(*!dustem_show).ext).filt_names)(idx_rmv_sed) EQ 'SPECTRUM',ct_spec_hdn)
                     
                    if ct_hdnpts ne 0 then begin ;Hidden data points are present 
bffa7018   Ilyes Choubani   update
515
                        ;stop
9ded3be9   Ilyes Choubani   Display update. F...
516
517
                        if ct_spec_hdn ne 0 then begin
                            ;Plotting of hidden spectrum data points
3196a378   Ilyes Choubani   Complementing fit...
518
                            cgoplot,1/(((*(*!dustem_show).ext).wav)[idx_rmv_sed])(idx_spec_hdn),(((*(*!dustem_show).ext).values)[idx_rmv_sed])(idx_spec_hdn),pos=position[0],/ylog,/xlog,ys=8,xs=8,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=16,syms=0.8
bffa7018   Ilyes Choubani   update
519
                            
9ded3be9   Ilyes Choubani   Display update. F...
520
521
522
523
                            ;Plotting of hidden spectrum error points
                            rms=2.*(((*(*!dustem_show).ext).sigma)[idx_rmv_sed])(idx_spec_hdn)/2.
                            cgerrplot,1/(((*(*!dustem_show).ext).wav)[idx_rmv_sed])(idx_spec_hdn),(((*(*!dustem_show).ext).values)[idx_rmv_sed])(idx_spec_hdn)-rms,(((*(*!dustem_show).ext).values)[idx_rmv_sed])(idx_spec_hdn)+rms,color='Black'
                        endif                                            
bffa7018   Ilyes Choubani   update
524
                        
9ded3be9   Ilyes Choubani   Display update. F...
525
526
                        if ct_filt_hdn then begin
                        ;Plotting of hidden filter data points 
3196a378   Ilyes Choubani   Complementing fit...
527
                            cgoplot,1/(((*(*!dustem_show).ext).wav)[idx_rmv_sed])(idx_filt_hdn),(((*(*!dustem_show).ext).values)[idx_rmv_sed])(idx_filt_hdn),pos=position[0],/ylog,/xlog,ys=8,xs=8,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=16,syms=0.8                                           
bffa7018   Ilyes Choubani   update
528
                            
9ded3be9   Ilyes Choubani   Display update. F...
529
530
531
                            ;Plotting of hidden filter error point
                            rms=2.*(((*(*!dustem_show).ext).sigma)[idx_rmv_sed])(idx_filt_hdn)/2.
                            cgerrplot,1/(((*(*!dustem_show).ext).wav)[idx_rmv_sed])(idx_filt_hdn),(((*(*!dustem_show).ext).values)[idx_rmv_sed])(idx_filt_hdn)-rms,(((*(*!dustem_show).ext).values)[idx_rmv_sed])(idx_filt_hdn)+rms,color='Black'
bffa7018   Ilyes Choubani   update
532
533
                            
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
                                                       
                    endif    
                
                endif        
              
            end
            
            ;DONE BUT NOT TESTED
            'POLEXT': begin 
                
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.polext.xr
                yr = !dustem_plot_range.polext.yr
                
                idx_filt=where((*(*!dustem_data).polext).filt_names NE 'SPECTRUM',ct_filt)
                idx_spec=where((*(*!dustem_data).polext).filt_names EQ 'SPECTRUM',ct_spec)
                        
24fe128f   Ilyes Choubani   Removed forced pl...
551
552
553
554
555
                
                If n_elements(position) GT 1 THEN BEGIN
                
                    ;Plotting of refreshed data in normalized plot
                    if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
9ded3be9   Ilyes Choubani   Display update. F...
556
                        
24fe128f   Ilyes Choubani   Removed forced pl...
557
558
                        ;Making sure we're placed in the normalized plot
                        cgplot,1/vectw,vectx,/xlog,/nodata,/ys,xs=1,pos=position[1],noerase=1,xtickformat='(A1)',ytickformat='(A1)',color='Black',xr=xr,xtit='',yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,charsize=1.0
bffa7018   Ilyes Choubani   update
559
                        
24fe128f   Ilyes Choubani   Removed forced pl...
560
561
562
563
564
565
566
567
568
569
570
571
572
                        IF ct_spec NE 0 THEN BEGIN
                            
                            xx=((*(*!dustem_data).polext).wav)[idx_spec]
                            yy=dustem_interp[idx_spec]
                            rms=2.*((*(*!dustem_data).polext).sigma)(idx_spec)/2.
                            indzero = where(yy NE 0, ct_zero)
                            
                            IF ct_zero NE 0 THEN BEGIN
                            
                                cgoplot,(1/xx)[indzero],(((*(*!dustem_data).polext).values)[idx_spec])[indzero]/yy[indzero],color='Powder Blue',psym=16,syms=0.8,noerase=1,pos=position[1]
                                cgerrplot,(1/((*(*!dustem_data).polext).wav)(idx_spec))[indzero],((((*(*!dustem_data).polext).values)[idx_spec])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).polext).values)[idx_spec])[indzero]+rms[indzero])/yy[indzero],color='Powder Blue'
                            
                            ENDIF
8e55ab4d   Jean-Philippe Bernard   removed frequency...
573
                        ENDIF
bffa7018   Ilyes Choubani   update
574
                        
24fe128f   Ilyes Choubani   Removed forced pl...
575
576
577
578
579
580
581
582
583
584
585
                        IF ct_filt NE 0 THEN BEGIN
                            xx=((*(*!dustem_data).polext).wav)[idx_filt]
                            yy=dustem_interp[idx_filt]
                            rms=2.*((*(*!dustem_data).polext).sigma)(idx_filt)/2.
                            indzero = where(yy NE 0, ct_zero)
                            IF ct_zero NE 0 THEN BEGIN
                             
                                cgoplot,(1/xx)[indzero],(((*(*!dustem_data).polext).values)[idx_filt])[indzero]/yy[indzero],psym=16,color='Dodger Blue',syms=0.8,noerase=1,pos=position[1]
                                cgerrplot,(1/((*(*!dustem_data).polext).wav)(idx_filt))[indzero],((((*(*!dustem_data).polext).values)[idx_filt])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).polext).values)[idx_filt])[indzero]+rms[indzero])/yy[indzero],color='Dodger Blue'
                            
                            ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
586
                        ENDIF
24fe128f   Ilyes Choubani   Removed forced pl...
587
588
589
                            
                    ;Plotting of frozen data in normalized plot    
                    endif else begin 
bffa7018   Ilyes Choubani   update
590
                        
24fe128f   Ilyes Choubani   Removed forced pl...
591
592
593
594
                        xtit=textoidl('1/\lambda (\mum^{-1})')
                        if !run_pol then xtit = ''
                        cgplot,1/vectw,vectx,/xlog,/ys,xs=1,pos=position[1],noerase=1,xtickformat='(A1)',color='Black',xr=xr,xtit=xtit,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0
                        xyouts,pospltxt_n[0],pospltxt_n[1],textoidl('norm'),color=0,/normal,charsize=1.1
bffa7018   Ilyes Choubani   update
595
                    
24fe128f   Ilyes Choubani   Removed forced pl...
596
597
                    endelse
                ENDIF
bffa7018   Ilyes Choubani   update
598
                
9ded3be9   Ilyes Choubani   Display update. F...
599
                ;Plotting of refreshed data in normal plot
bffa7018   Ilyes Choubani   update
600
                
9ded3be9   Ilyes Choubani   Display update. F...
601
                if keyword_set(refresh) then begin ;The data points in the plot are being refreshed
bffa7018   Ilyes Choubani   update
602
                    
bffa7018   Ilyes Choubani   update
603
                    
9ded3be9   Ilyes Choubani   Display update. F...
604
605
                    ;Making sure we're placed in the normal plot
                    cgplot,1/vectw,vectx,/nodata,/xlog,/ylog,/ys,xs=1,pos=position[0],noerase=1,xtickformat='(A1)',ytickformat='(A1)',color='Black',xr=xr,xtit='',yr=yr,yticks=2,ymino=2,xticklen=0.1,charsize=1.0
bffa7018   Ilyes Choubani   update
606
                    
9ded3be9   Ilyes Choubani   Display update. F...
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
                    
                    ;Plotting of the spectra of the dust species
                    FOR i=0L,Ngrains-1 DO BEGIN
                        vecto = transpose(((st.polext.(1))[i,*]+(st.polext.(2))[i,*]))
                        cgoplot,1/st.polext.wav,vecto*(*!dustem_HCD)/1.0e21,color=use_cols[i],pos=position[0],noerase=1
                    ENDFOR
                    
                    ;stop
                                            
                    ;Plotting of the plugins.
                    for i=0L,n_plgns-1 do begin
                        If isa((*!dustem_plugin).(0).spec) then begin
                            IF total(strsplit((*(*!dustem_plugin).(i).scope),'+',/extract) EQ 'ADD_POLEXT') THEN begin
                                cgoplot,1/st.polext.wav,sqrt(((*(*!dustem_plugin).(i).spec)[*,1])^2+((*(*!dustem_plugin).(i).spec)[*,2])^2),color=clrs_plgns[i],pos=position[0],noerase=1,linestyle=2               
                            ENDIF 
                        endif
                    endfor
                                            
                    ;PLotting of the interpolates corresponding to spectrum and filter points
                       
                    IF ct_spec NE 0 THEN BEGIN
                    
                        xx=((*(*!dustem_data).polext).wav)[idx_spec]
                        yy=dustem_interp[idx_spec]
                        cgoplot,1/xx,yy,color='Indian Red',pos=position[0],psym=7,syms=2,noerase=1   
                    ENDIF
                    
                    
                    IF ct_filt NE 0 THEN BEGIN
                        xx=((*(*!dustem_data).polext).wav)[idx_filt]
                        yy=dustem_interp[idx_filt]
                        cgoplot,1/xx,yy,color='red',pos=position[0],psym=6,syms=2,noerase=1
                    ENDIF
                    
                    ;Plotting of the total dust emission spectru
                    cgoplot,1/st.polext.wav,dustem_spec,pos=position[0],noerase=1,/xlog,/ys,/xs,/ylog
                   
                ;Plotting of frozen data in normal plot            
                endif else begin 
                    
                    ;Spectrum points are treated before for plotting reasons. 
                    if ct_spec ne 0 then begin 
bffa7018   Ilyes Choubani   update
649
                        
9ded3be9   Ilyes Choubani   Display update. F...
650
651
                        ;Plotting of spectrum data points (to be fitted)
                        cgplot,1/((*(*!dustem_data).polext).wav)(idx_spec),((*(*!dustem_data).polext).values)(idx_spec),/ylog,/xlog,/ys,xs=9,pos=position[0],noerase=1,xtit=' ',charsize=1.15,xtickformat='(A1)',color='Powder Blue',xr=xr,yr=yr,psym=8,syms=0.8,ytickformat='dstmwrp_exp'                
bffa7018   Ilyes Choubani   update
652
                        
9ded3be9   Ilyes Choubani   Display update. F...
653
654
655
656
657
658
659
660
661
662
663
                        ;Plotting of the spectrum error points
                        rms=2.*((*(*!dustem_data).polext).sigma)(idx_spec)/2.
                        cgerrplot,1/((*(*!dustem_data).polext).wav)(idx_spec),((*(*!dustem_data).polext).values)(idx_spec)-rms,((*(*!dustem_data).polext).values)(idx_spec)+rms,color='Powder Blue'

                    endif
                    
                    if ct_filt ne 0 then begin
                        plotsym,0,/fill
                        ;Plotting of filter data points (to be fitted) + testing for prior plotting                         
                        if ct_spec ne 0 then cgoplot,1/((*(*!dustem_data).polext).wav)(idx_filt),((*(*!dustem_data).polext).values)(idx_filt),charsize=1.15,color='Dodger Blue',psym=8,syms=0.8,pos=position[0],/ys,xs=9,noerase=1,xtickformat='(A1)',xr=xr,yr=yr,ytickformat='dstmwrp_exp',/ylog,/xlog else $
                            cgplot,1/((*(*!dustem_data).polext).wav)(idx_filt),((*(*!dustem_data).polext).values)(idx_filt),charsize=1.15,color='Dodger Blue',psym=8,syms=0.8,pos=position[0],/ys,xs=9,noerase=1,xtickformat='(A1)',xtit=' ',xr=xr,yr=yr,ytickformat='dstmwrp_exp',/ylog,/xlog
bffa7018   Ilyes Choubani   update
664
665
                        
                        
9ded3be9   Ilyes Choubani   Display update. F...
666
667
668
                        ;Plotting of the filter error points
                        rms=2.*((*(*!dustem_data).polext).sigma)(idx_filt)/2.;/dustem_polsed(idx_filt)
                        cgerrplot,1/((*(*!dustem_data).polext).wav)(idx_filt),((*(*!dustem_data).polext).values)(idx_filt)-rms,((*(*!dustem_data).polext).values)(idx_filt)+rms,color='Dodger Blue'
bffa7018   Ilyes Choubani   update
669
                        
9ded3be9   Ilyes Choubani   Display update. F...
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
                    endif
                    
                    
                    ;Plotting of frequency axis
                    IF !dustemwrap_which_language NE 'fawlty' THEN BEGIN
                        axis, xaxis=1, xlog=1, xs=1, xminor=10, xticklen=0.05, xrange=((!const.c*1E6*xr)*1E-9),charsize=1.15,xtitle=textoidl('\nu (GHz)'),color=0
                    ENDIF
                    xyouts,pospltxt[0],pospltxt[1],textoidl('\tau_{PEXT}'),color=0,/normal,charsize=1.3;,charthick=2.0
                     
                    ;Locating all the hidden data points (spectrum+filter)
                    match2,((*(*!dustem_data).polext).wav),((*(*!dustem_show).polext).wav),show_polsedpts,fit_polsedpts ;only show_polsedpts is needed
                    idx_rmv_polsed=where(fit_polsedpts eq -1, ct_hdnpts) ; indices of the points to hide  - not renaming this and keeping the polsed notation
                    ;Locating the hidden spectrum and filter data points                                        
                    idx_filt_hdn = where((((*(*!dustem_show).polext).filt_names))(idx_rmv_polsed) NE 'SPECTRUM',ct_filt_hdn)
                    idx_spec_hdn = where(((*(*!dustem_show).polext).filt_names)(idx_rmv_polsed) EQ 'SPECTRUM',ct_spec_hdn)
                    
                    ;stop
                    if ct_hdnpts ne 0 then begin ;Hidden data points are present 
                        ;stop
bffa7018   Ilyes Choubani   update
689
                        
9ded3be9   Ilyes Choubani   Display update. F...
690
691
692
                        if ct_spec_hdn ne 0 then begin
                            ;Plotting of hidden spectrum data points
                            cgoplot,1/(((*(*!dustem_show).polext).wav)[idx_rmv_polsed])(idx_spec_hdn),(((*(*!dustem_show).polext).values)[idx_rmv_polsed])(idx_spec_hdn),pos=position[0],/ylog,/xlog,/ys,xs=9,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
693
                            
9ded3be9   Ilyes Choubani   Display update. F...
694
695
696
697
                            ;Plotting of hidden spectrum error points
                            rms=2.*(((*(*!dustem_show).polext).sigma)[idx_rmv_polsed])(idx_spec_hdn)/2.
                            cgerrplot,1/(((*(*!dustem_show).polext).wav)[idx_rmv_polsed])(idx_spec_hdn),(((*(*!dustem_show).polext).values)[idx_rmv_polsed])(idx_spec_hdn)-rms,(((*(*!dustem_show).polext).values)[idx_rmv_polsed])(idx_spec_hdn)+rms,color='Black'
                        endif                                            
bffa7018   Ilyes Choubani   update
698
                        
9ded3be9   Ilyes Choubani   Display update. F...
699
700
701
                        if ct_filt_hdn ne 0 then begin
                        ;Plotting of hidden filter data points 
                            cgoplot,1/(((*(*!dustem_show).polext).wav)[idx_rmv_polsed])(idx_filt_hdn),(((*(*!dustem_show).polext).values)[idx_rmv_polsed])(idx_filt_hdn),pos=position[0],/ylog,/xlog,/ys,xs=9,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=8,syms=0.8                                           
bffa7018   Ilyes Choubani   update
702
                            
9ded3be9   Ilyes Choubani   Display update. F...
703
704
705
                            ;Plotting of hidden filter error point
                            rms=2.*(((*(*!dustem_show).polext).sigma)[idx_rmv_polsed])(idx_filt_hdn)/2.
                            cgerrplot,1/(((*(*!dustem_show).polext).wav)[idx_rmv_polsed])(idx_filt_hdn),(((*(*!dustem_show).polext).values)[idx_rmv_polsed])(idx_filt_hdn)-rms,(((*(*!dustem_show).polext).values)[idx_rmv_polsed])(idx_filt_hdn)+rms,color='Black'
bffa7018   Ilyes Choubani   update
706
707
                            
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
708
709
                                                       
                    endif    
bffa7018   Ilyes Choubani   update
710
                    
9ded3be9   Ilyes Choubani   Display update. F...
711
712
713
714
715
716
                endelse 
              
            end
            
            ;Done but not tested.
            'POLSED': begin 
bffa7018   Ilyes Choubani   update
717
718
                
                
9ded3be9   Ilyes Choubani   Display update. F...
719
720
721
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.polsed.xr
                yr = !dustem_plot_range.polsed.yr
bffa7018   Ilyes Choubani   update
722
                
9ded3be9   Ilyes Choubani   Display update. F...
723
724
725
                idx_filt=where((*(*!dustem_data).polsed).filt_names NE 'SPECTRUM',ct_filt)
                idx_spec=where((*(*!dustem_data).polsed).filt_names EQ 'SPECTRUM',ct_spec)
                
24fe128f   Ilyes Choubani   Removed forced pl...
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
                
                
                If n_elements(position) GT 1 THEN BEGIN
                    ;Refreshing of normalized plot        
                    if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
                        
                        ;making sure we're in the normalized plot
                        cgplot,vectw,vectx,/nodata,/xlog,xs=5,ys=5,pos=position[1],noerase=1,xtickformat='(A1)',ytickformat='(A1)',color='Black',xr=xr,xtit='',yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,charsize=1.0
                        
                        ;I think the fact we use the position keyword here might mean we can omit it in the following lines but I haven't tried removing it yet.
                        IF ct_spec NE 0 THEN BEGIN
                            xx=((*(*!dustem_data).polsed).wav)[idx_spec]
                            yy=dustem_interp[idx_spec]
                            rms=2.*((*(*!dustem_data).polsed).sigma)(idx_spec)/2.
                            indzero = where(yy NE 0, ct_zero)
                            IF ct_zero NE 0 THEN BEGIN
                                cgoplot,xx[indzero],(((*(*!dustem_data).polsed).values)[idx_spec])[indzero]/yy[indzero],color='Powder Blue',psym=16,syms=0.8,noerase=1,pos=position[1]
                                cgerrplot,(((*(*!dustem_data).polsed).wav)(idx_spec))[indzero],((((*(*!dustem_data).polsed).values)[idx_spec])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).polsed).values)[idx_spec])[indzero]+rms[indzero])/yy[indzero],color='Powder Blue'
                            ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
745
                        ENDIF
24fe128f   Ilyes Choubani   Removed forced pl...
746
747
748
749
750
751
752
753
754
755
                        
                        IF ct_filt NE 0 THEN BEGIN
                            xx=((*(*!dustem_data).polsed).wav)[idx_filt]
                            yy=dustem_interp[idx_filt]
                            rms=2.*((*(*!dustem_data).polsed).sigma)(idx_filt)/2.
                            indzero = where(yy NE 0, ct_zero)
                            IF ct_zero NE 0 THEN BEGIN 
                                cgoplot,xx[indzero],(((*(*!dustem_data).polsed).values)[idx_filt])[indzero]/yy[indzero],psym=16,color='Dodger Blue',syms=0.8,noerase=1,pos=position[1]
                                cgerrplot,(((*(*!dustem_data).polsed).wav)(idx_filt))[indzero],((((*(*!dustem_data).polsed).values)[idx_filt])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).polsed).values)[idx_filt])[indzero]+rms[indzero])/yy[indzero],color='Dodger Blue';,/overplot 
                            ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
756
                        ENDIF
24fe128f   Ilyes Choubani   Removed forced pl...
757
758
759
                            
                    ;plotting of frozen data points in normalized plot    
                    endif else begin ;The data points in the plot that remain unchanged ; UNNECESSARY BLOCK but needed to limit erros when calls are made with missing keywords.
9ded3be9   Ilyes Choubani   Display update. F...
760
                        
24fe128f   Ilyes Choubani   Removed forced pl...
761
762
763
764
                        xtit=textoidl('\lambda (\mum)')
                        if !run_pol then xtit = ''
                        cgplot,vectw,vectx,/xlog,/ys,xs=1,pos=position[1],noerase=1,xtickformat='(A1)',color='Black',xr=xr,xtit=xtit,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0
                        xyouts,pospltxt_n[0],pospltxt_n[1],textoidl('norm'),color=0,/normal,charsize=1.1
bffa7018   Ilyes Choubani   update
765
                    
24fe128f   Ilyes Choubani   Removed forced pl...
766
767
                    endelse
                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
768
769
                ;Plotting the refreshed data in the normal plot                       
                if keyword_set(refresh) then begin ;The data points in the plot are being refreshed
bffa7018   Ilyes Choubani   update
770
                    
9ded3be9   Ilyes Choubani   Display update. F...
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
                    ;making sure we're placed in the normal window
                    
                    cgplot,vectw,vectx,/nodata,/xlog,/ylog,xs=5,ys=5,pos=position[0],noerase=1,xtickformat='(A1)',ytickformat='(A1)',color='Black',xr=xr,xtit='',yr=yr,yticks=2,ymino=2,xticklen=0.1,charsize=1.0
                    
                    
                    ;Plotting of the spectra of the dust species
                    FOR i=0L,Ngrains-1 DO BEGIN
                        cgoplot,st.polsed.wav,st.polsed.(i+1)*fact,color=use_cols[i],pos=position[0],noerase=1
                    ENDFOR
                    
                                            
                    ;Plotting of the plugins.
                    for i=0L,n_plgns-1 do begin
                        If isa((*!dustem_plugin).(i).spec) then begin
                            IF total(strsplit((*(*!dustem_plugin).(i).scope),'+',/extract) EQ 'ADD_POLSED') THEN begin
                                cgoplot,st.polsed.wav,sqrt(((*(*!dustem_plugin).(i).spec)[*,1])^2+((*(*!dustem_plugin).(i).spec)[*,2])^2),color=clrs_plgns[i],pos=position[0],noerase=1,linestyle=2               
                            ENDIF 
                        endif
                    endfor
                   
                    ;PLotting of the interpolates corresponding to spectrum and filter points
                       
                    IF ct_spec NE 0 THEN BEGIN
                    
                        xx=((*(*!dustem_data).polsed).wav)[idx_spec]
                        yy=dustem_interp[idx_spec]
                        cgoplot,xx,yy,color='Indian Red',pos=position[0],psym=7,syms=2,noerase=1   
8e55ab4d   Jean-Philippe Bernard   removed frequency...
798
                    ENDIF
bffa7018   Ilyes Choubani   update
799
                    
bffa7018   Ilyes Choubani   update
800
                    
9ded3be9   Ilyes Choubani   Display update. F...
801
802
803
804
805
                    IF ct_filt NE 0 THEN BEGIN
                        xx=((*(*!dustem_data).polsed).wav)[idx_filt]
                        yy=dustem_interp[idx_filt]
                        cgoplot,xx,yy,color='red',pos=position[0],psym=6,syms=2,noerase=1
                    ENDIF
bffa7018   Ilyes Choubani   update
806
                    
9ded3be9   Ilyes Choubani   Display update. F...
807
808
809
810
811
                    ;Plotting of the total dust emission spectru
                    cgoplot,st.polsed.wav,dustem_spec,pos=position[0],noerase=1,/xlog,/ys,/xs,/ylog
                                    
                ;Plotting of frozen data in normal plot            
                endif else begin 
bffa7018   Ilyes Choubani   update
812
                
9ded3be9   Ilyes Choubani   Display update. F...
813
814
                    ;Spectrum points are treated before for plotting reasons. 
                    if ct_spec ne 0 then begin 
bffa7018   Ilyes Choubani   update
815
                        
9ded3be9   Ilyes Choubani   Display update. F...
816
817
                        ;Plotting of spectrum data points (to be fitted)
                        cgplot,((*(*!dustem_data).polsed).wav)(idx_spec),((*(*!dustem_data).polsed).values)(idx_spec),/ylog,/xlog,/ys,xs=9,pos=position[0],noerase=1,xtit=' ',charsize=1.15,xtickformat='(A1)',color='Powder Blue',xr=xr,yr=yr,psym=8,syms=0.8,ytickformat='dstmwrp_exp'                
bffa7018   Ilyes Choubani   update
818
                        
9ded3be9   Ilyes Choubani   Display update. F...
819
820
821
822
823
824
825
826
827
828
829
                        ;Plotting of the spectrum error points
                        rms=2.*((*(*!dustem_data).polsed).sigma)(idx_spec)/2.
                        cgerrplot,((*(*!dustem_data).polsed).wav)(idx_spec),((*(*!dustem_data).polsed).values)(idx_spec)-rms,((*(*!dustem_data).polsed).values)(idx_spec)+rms,color='Powder Blue'

                    endif
                    
                    if ct_filt ne 0 then begin
                        plotsym,0,/fill
                        ;Plotting of filter data points (to be fitted) + testing for prior plotting                         
                        if ct_spec ne 0 then cgoplot,((*(*!dustem_data).polsed).wav)(idx_filt),((*(*!dustem_data).polsed).values)(idx_filt),charsize=1.15,color='Dodger Blue',psym=8,syms=0.8,pos=position[0],/ys,xs=9,noerase=1,xtickformat='(A1)',xr=xr,yr=yr,ytickformat='dstmwrp_exp',/ylog,/xlog else $
                            cgplot,((*(*!dustem_data).polsed).wav)(idx_filt),((*(*!dustem_data).polsed).values)(idx_filt),charsize=1.15,color='Dodger Blue',psym=8,syms=0.8,pos=position[0],/ys,xs=9,noerase=1,xtickformat='(A1)',xtit=' ',xr=xr,yr=yr,ytickformat='dstmwrp_exp',/ylog,/xlog
bffa7018   Ilyes Choubani   update
830
831
                        
                        
9ded3be9   Ilyes Choubani   Display update. F...
832
833
834
                        ;Plotting of the filter error points
                        rms=2.*((*(*!dustem_data).polsed).sigma)(idx_filt)/2.;/dustem_polsed(idx_filt)
                        cgerrplot,((*(*!dustem_data).polsed).wav)(idx_filt),((*(*!dustem_data).polsed).values)(idx_filt)-rms,((*(*!dustem_data).polsed).values)(idx_filt)+rms,color='Dodger Blue'
bffa7018   Ilyes Choubani   update
835
                        
9ded3be9   Ilyes Choubani   Display update. F...
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
                    endif
                    
                    
                    ;Plotting of frequency axis
                    IF !dustemwrap_which_language NE 'fawlty' THEN BEGIN
                        axis, xaxis=1, xlog=1, xs=1, xminor=10, xticklen=0.05, xrange=((!const.c*1E6/(xr))*1E-9),charsize=1.15,xtitle=textoidl('\nu (GHz)'),color=0
                    ENDIF
                    xyouts,pospltxt[0],pospltxt[1],textoidl('P_{\nu} (MJy/sr)'),color=0,/normal,charsize=1.3;,charthick=2.0
                     
                    ;Locating all the hidden data points (spectrum+filter)
                    match2,((*(*!dustem_data).polsed).wav),((*(*!dustem_show).polsed).wav),show_polsedpts,fit_polsedpts ;only show_polsedpts is needed
                    idx_rmv_polsed=where(fit_polsedpts eq -1, ct_hdnpts) ; indices of the points to hide
                    ;Locating the hidden spectrum and filter data points                                        
                    idx_filt_hdn = where((((*(*!dustem_show).polsed).filt_names))(idx_rmv_polsed) NE 'SPECTRUM',ct_filt_hdn)
                    idx_spec_hdn = where(((*(*!dustem_show).polsed).filt_names)(idx_rmv_polsed) EQ 'SPECTRUM',ct_spec_hdn)
                    
                    ;stop
                    if ct_hdnpts ne 0 then begin ;Hidden data points are present 
                        ;stop
bffa7018   Ilyes Choubani   update
855
                        
9ded3be9   Ilyes Choubani   Display update. F...
856
857
858
                        if ct_spec_hdn ne 0 then begin
                            ;Plotting of hidden spectrum data points
                            cgoplot,(((*(*!dustem_show).polsed).wav)[idx_rmv_polsed])(idx_spec_hdn),(((*(*!dustem_show).polsed).values)[idx_rmv_polsed])(idx_spec_hdn),pos=position[0],/ylog,/xlog,/ys,xs=9,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
859
                            
9ded3be9   Ilyes Choubani   Display update. F...
860
861
862
863
                            ;Plotting of hidden spectrum error points
                            rms=2.*(((*(*!dustem_show).polsed).sigma)[idx_rmv_polsed])(idx_spec_hdn)/2.
                            cgerrplot,(((*(*!dustem_show).polsed).wav)[idx_rmv_polsed])(idx_spec_hdn),(((*(*!dustem_show).polsed).values)[idx_rmv_polsed])(idx_spec_hdn)-rms,(((*(*!dustem_show).polsed).values)[idx_rmv_polsed])(idx_spec_hdn)+rms,color='Black'
                        endif                                            
bffa7018   Ilyes Choubani   update
864
                        
9ded3be9   Ilyes Choubani   Display update. F...
865
866
867
                        if ct_filt_hdn ne 0 then begin
                        ;Plotting of hidden filter data points 
                            cgoplot,(((*(*!dustem_show).polsed).wav)[idx_rmv_polsed])(idx_filt_hdn),(((*(*!dustem_show).polsed).values)[idx_rmv_polsed])(idx_filt_hdn),pos=position[0],/ylog,/xlog,/ys,xs=9,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=8,syms=0.8                                           
bffa7018   Ilyes Choubani   update
868
                            
9ded3be9   Ilyes Choubani   Display update. F...
869
870
871
                            ;Plotting of hidden filter error point
                            rms=2.*(((*(*!dustem_show).polsed).sigma)[idx_rmv_polsed])(idx_filt_hdn)/2.
                            cgerrplot,(((*(*!dustem_show).polsed).wav)[idx_rmv_polsed])(idx_filt_hdn),(((*(*!dustem_show).polsed).values)[idx_rmv_polsed])(idx_filt_hdn)-rms,(((*(*!dustem_show).polsed).values)[idx_rmv_polsed])(idx_filt_hdn)+rms,color='Black'
bffa7018   Ilyes Choubani   update
872
873
                            
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
874
875
                                                       
                    endif    
bffa7018   Ilyes Choubani   update
876
                    
bffa7018   Ilyes Choubani   update
877
878
                endelse 
            
9ded3be9   Ilyes Choubani   Display update. F...
879
            end
bffa7018   Ilyes Choubani   update
880
            
9ded3be9   Ilyes Choubani   Display update. F...
881
            ;DONE BUT NOT TESTED...
bffa7018   Ilyes Choubani   update
882
            
9ded3be9   Ilyes Choubani   Display update. F...
883
884
885
886
887
888
889
890
            'POLFRAC': begin 
                
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.polfrac.xr
                yr = !dustem_plot_range.polfrac.yr
                
                idx_filt=where((*(*!dustem_data).polfrac).filt_names NE 'SPECTRUM',ct_filt)
                idx_spec=where((*(*!dustem_data).polfrac).filt_names EQ 'SPECTRUM',ct_spec)
bffa7018   Ilyes Choubani   update
891
                            
bffa7018   Ilyes Choubani   update
892
                        
9ded3be9   Ilyes Choubani   Display update. F...
893
894
895
896
897
898
899
                if keyword_set(refresh) then begin ;The data points in the plot are being refreshed
                    
                    ;making sure we're refreshing the right dataset
                    
                    cgplot,vectw,vectx,/nodata,/xlog,/ylog,/ys,xs=1,pos=position[0],noerase=1,charsize=1.15,xtickformat='(A1)',ytickformat='(A1)',color='Powder Blue',xr=xr,xtit='',yr=yr,psym=8,syms=0.8  
                    
                    FOR i=0L,Ngrains-1 DO BEGIN
bffa7018   Ilyes Choubani   update
900
                        
9ded3be9   Ilyes Choubani   Display update. F...
901
                        testneq = where(st.polsed.(i+1) ne 0,countneq)
bffa7018   Ilyes Choubani   update
902
                        
9ded3be9   Ilyes Choubani   Display update. F...
903
904
                        if countneq ne 0 then begin 
                            vecfin = st.polsed.(i+1)*0.0
bffa7018   Ilyes Choubani   update
905
                            
9ded3be9   Ilyes Choubani   Display update. F...
906
                            vecfin[testneq] = ((st.polsed.(i+1))[testneq])*fact[testneq]/extra_spec[testneq];(st.sed.em_tot)[testneq];;(st.sed.em_tot)[testneq];spec[testneq];(st.sed.(i+1))[testneq];*fact;(st.sed.(i+1))[testneq]
bffa7018   Ilyes Choubani   update
907
                            
9ded3be9   Ilyes Choubani   Display update. F...
908
909
910
911
912
913
914
                            cgoplot,st.polsed.wav,vecfin*100,pos=position[0],noerase=1,color=use_cols[i],xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
                        endif   
                    ENDFOR
                   
                    ;Plotting of the plugins. 
                     
                    for i=0L,n_plgns-1 do begin
bffa7018   Ilyes Choubani   update
915
                        
9ded3be9   Ilyes Choubani   Display update. F...
916
                        if isa((*!dustem_plugin).(i).spec) then begin
bffa7018   Ilyes Choubani   update
917
                        
9ded3be9   Ilyes Choubani   Display update. F...
918
919
920
921
                            IF total(strsplit((*(*!dustem_plugin).(i).scope),'+',/extract) EQ 'ADD_POLSED') THEN begin
                                vecfin = st.polsed.em_tot*0.0
                                vecfin[testneq] = sqrt((((*(*!dustem_plugin).(i).spec)[*,1])^2)[testneq]+(((*(*!dustem_plugin).(i).spec)[*,2])^2)[testneq])/extra_spec[testneq];((*(*!dustem_plugin).(i).spec)[*,0])[testneq]        
                                cgoplot,st.polsed.wav,vecfin*100,color=clrs_plgns[i],pos=position[0],noerase=1,linestyle=2               
bffa7018   Ilyes Choubani   update
922
                            
9ded3be9   Ilyes Choubani   Display update. F...
923
                            ENDIF
bffa7018   Ilyes Choubani   update
924
925
                        endif
                        
9ded3be9   Ilyes Choubani   Display update. F...
926
                    endfor
bffa7018   Ilyes Choubani   update
927
                    
9ded3be9   Ilyes Choubani   Display update. F...
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
                     ;PLotting of the interpolates corresponding to spectrum and filter points
                    
                     IF ct_spec NE 0 THEN BEGIN
                     
                         xx=((*(*!dustem_data).polfrac).wav)[idx_spec]
                         yy=dustem_interp[idx_spec]
                         cgoplot,xx,yy*100,color='Indian Red',pos=position[0],psym=7,syms=2,noerase=1   
                     ENDIF
                     
                     
                     IF ct_filt NE 0 THEN BEGIN
                         xx=((*(*!dustem_data).polfrac).wav)[idx_filt]
                         yy=dustem_interp[idx_filt]
                         cgoplot,xx,yy*100,color='red',pos=position[0],psym=6,syms=2,noerase=1
                     ENDIF
                     
                     
                     ;Plotting of the total dust emission spectrum
                     cgoplot,st.polsed.wav,dustem_spec*100,pos=position[0],noerase=1,/xlog,/ys,/xs               
bffa7018   Ilyes Choubani   update
947
                            
9ded3be9   Ilyes Choubani   Display update. F...
948
949
950
951
952
                endif else begin ;The data points in the plot that remain unchanged.
                    
                    ;Spectrum points are treated before for plotting reasons. 
                    
                    if ct_spec ne 0 then begin 
bffa7018   Ilyes Choubani   update
953
                        
9ded3be9   Ilyes Choubani   Display update. F...
954
955
                        ;Plotting of spectrum data points (to be fitted)
                        cgplot,((*(*!dustem_data).polfrac).wav)(idx_spec),((*(*!dustem_data).polfrac).values)(idx_spec)*100,/xlog,/ylog,/ys,xs=1,pos=position[0],noerase=1,xtit=' ',charsize=1.15,xtickformat='(A1)',color='Powder Blue',xr=xr,yr=yr,psym=16,syms=0.8;,ytickformat='dstmwrp_exp'                
bffa7018   Ilyes Choubani   update
956
                        
9ded3be9   Ilyes Choubani   Display update. F...
957
958
959
                        ;Plotting of the spectrum error points
                        rms=2.*((*(*!dustem_data).polfrac).sigma)(idx_spec)/2.
                        cgerrplot,((*(*!dustem_data).polfrac).wav)(idx_spec),(((*(*!dustem_data).polfrac).values)(idx_spec)-rms)*100,(((*(*!dustem_data).polfrac).values)(idx_spec)+rms)*100,color='Powder Blue'
bffa7018   Ilyes Choubani   update
960

9ded3be9   Ilyes Choubani   Display update. F...
961
962
963
964
965
966
967
                    endif
                    
                    if ct_filt ne 0 then begin
                    
                        ;Plotting of filter data points (to be fitted) + testing for prior plotting                         
                        if ct_spec ne 0 then cgoplot,((*(*!dustem_data).polfrac).wav)(idx_filt),((*(*!dustem_data).polfrac).values)(idx_filt)*100,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,pos=position[0],/ys,xs=1,noerase=1,xtickformat='(A1)',xr=xr,yr=yr,/xlog,/ylog else $;,ytickformat='dstmwrp_exp'
                            cgplot,((*(*!dustem_data).polfrac).wav)(idx_filt),((*(*!dustem_data).polfrac).values)(idx_filt)*100,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,pos=position[0],/ys,xs=1,noerase=1,xtickformat='(A1)',xtit=' ',xr=xr,yr=yr,/xlog,/ylog;,ytickformat='dstmwrp_exp'
bffa7018   Ilyes Choubani   update
968
969
                        
                        
9ded3be9   Ilyes Choubani   Display update. F...
970
971
972
                        ;Plotting of the filter error points
                        rms=2.*((*(*!dustem_data).polfrac).sigma)(idx_filt)/2.;/dustem_polfrac(idx_filt)
                        cgerrplot,((*(*!dustem_data).polfrac).wav)(idx_filt),(((*(*!dustem_data).polfrac).values)(idx_filt)-rms)*100,(((*(*!dustem_data).polfrac).values)(idx_filt)+rms)*100,color='Dodger Blue'
bffa7018   Ilyes Choubani   update
973
                        
9ded3be9   Ilyes Choubani   Display update. F...
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
                    endif
                    
                    
                    
                    xyouts,pospltxt[0],pospltxt[1],textoidl('p (%)'),color=0,/normal,charsize=1.3;,charthick=2.0
                     
                    ;Locating all the hidden data points (spectrum+filter)
                    
                    ;The filtering has been done prior (in the primary routine)
                    match2,((*(*!dustem_data).polfrac).wav),((*(*!dustem_show).polfrac).wav),show_polfracpts,fit_polfracpts ;only show_polfracpts is needed
                    idx_rmv_polfrac=where(fit_polfracpts eq -1, ct_hdnpts) ; indices of the points to hide
                    ;stop
                    ;Locating the hidden spectrum and filter data points                                        
                    idx_filt_hdn = where(((*(*!dustem_show).polfrac).filt_names)(idx_rmv_polfrac) NE 'SPECTRUM',ct_filt_hdn)
                    idx_spec_hdn = where(((*(*!dustem_show).polfrac).filt_names)(idx_rmv_polfrac) EQ 'SPECTRUM',ct_spec_hdn)
                    if ct_hdnpts ne 0 then begin ;Hidden data points are present 
                        ;stop
bffa7018   Ilyes Choubani   update
991
                        
9ded3be9   Ilyes Choubani   Display update. F...
992
993
994
995
996
997
998
999
                        if ct_spec_hdn ne 0 then begin
                            ;Plotting of hidden spectrum data points
                            cgplot,(((*(*!dustem_show).polfrac).wav)[idx_rmv_polfrac])(idx_spec_hdn),(((*(*!dustem_show).polfrac).values)[idx_rmv_polfrac])(idx_spec_hdn)*100,pos=position[0],/xlog,/ylog,/ys,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=8,syms=0.8
                            
                            ;Plotting of hidden spectrum error points
                            rms=2.*(((*(*!dustem_show).polfrac).sigma)[idx_rmv_polfrac])(idx_spec_hdn)/2.
                            cgerrplot,(((*(*!dustem_show).polfrac).wav)[idx_rmv_polfrac])(idx_spec_hdn),((((*(*!dustem_show).polfrac).values)[idx_rmv_polfrac])(idx_spec_hdn)-rms)*100,((((*(*!dustem_show).polfrac).values)[idx_rmv_polfrac])(idx_spec_hdn)+rms)*100,color='Black'
                        endif                                           
bffa7018   Ilyes Choubani   update
1000
                        
9ded3be9   Ilyes Choubani   Display update. F...
1001
                        if ct_filt_hdn ne 0 then begin
bffa7018   Ilyes Choubani   update
1002
                            ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1003
1004
1005
1006
1007
1008
1009
1010
                            plotsym,0, /fill
                            ;Plotting of hidden filter data points 
                            cgplot,(((*(*!dustem_show).polfrac).wav)[idx_rmv_polfrac])(idx_filt_hdn),(((*(*!dustem_show).polfrac).values)[idx_rmv_polfrac])(idx_filt_hdn)*100,pos=position[0],/xlog,/ylog,/ys,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=8,syms=0.8                                           
                            ;stop
                            ;Plotting of hidden filter error point
                            rms=2.*(((*(*!dustem_show).polfrac).sigma)[idx_rmv_polfrac])(idx_filt_hdn)/2.
                            cgerrplot,(((*(*!dustem_show).polfrac).wav)[idx_rmv_polfrac])(idx_filt_hdn),((((*(*!dustem_show).polfrac).values)[idx_rmv_polfrac])(idx_filt_hdn)-rms)*100,((((*(*!dustem_show).polfrac).values)[idx_rmv_polfrac])(idx_filt_hdn)+rms)*100,color='Black'
                             
bffa7018   Ilyes Choubani   update
1011
                        endif 
9ded3be9   Ilyes Choubani   Display update. F...
1012
1013
                                                       
                    endif 
bffa7018   Ilyes Choubani   update
1014
                    
bffa7018   Ilyes Choubani   update
1015
                
9ded3be9   Ilyes Choubani   Display update. F...
1016
                endelse 
bffa7018   Ilyes Choubani   update
1017
            
9ded3be9   Ilyes Choubani   Display update. F...
1018
            end
bffa7018   Ilyes Choubani   update
1019
            
9ded3be9   Ilyes Choubani   Display update. F...
1020
1021
1022
1023
1024
1025
1026
            ;DONE BUT NOT TESTED.
            'FPOLEXT': BEGIN ; For completeness (not sure of the physical usefulness of this qauntity )
                
                
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.fpolext.xr
                yr = !dustem_plot_range.fpolext.yr
7817238c   Ilyes Choubani   removed forgotten...
1027
                
9ded3be9   Ilyes Choubani   Display update. F...
1028
1029
1030
1031
                
                idx_filt=where((*(*!dustem_data).fpolext).filt_names NE 'SPECTRUM',ct_filt)
                idx_spec=where((*(*!dustem_data).fpolext).filt_names EQ 'SPECTRUM',ct_spec)
                
bffa7018   Ilyes Choubani   update
1032
                            
9ded3be9   Ilyes Choubani   Display update. F...
1033
1034
1035
1036
1037
                if keyword_set(refresh) then begin ;The data points in the plot are being refreshed
                    
                    ;making sure we're plotting in the refreshed plot

                    cgplot,1/vectw,vectx,/xlog,/ylog,/nodata,/ys,xs=1,pos=position[0],noerase=1,xtickformat='(A1)',ytickformat='(A1)',color='Black',xr=xr,xtit='',yr=yr,yticks=2,ymino=2,xticklen=0.1,charsize=1.0
bffa7018   Ilyes Choubani   update
1038
                        
9ded3be9   Ilyes Choubani   Display update. F...
1039
1040
                    
                    FOR i=0L,Ngrains-1 DO BEGIN
bffa7018   Ilyes Choubani   update
1041
                        
9ded3be9   Ilyes Choubani   Display update. F...
1042
                        vecto = transpose((st.polext.(1))[i,*]+(st.polext.(2))[i,*])
bffa7018   Ilyes Choubani   update
1043
                        
9ded3be9   Ilyes Choubani   Display update. F...
1044
1045
1046
1047
                        testneq = where(vecto ne 0,countneq)
                        
                        if countneq ne 0 then begin 
                            vecfin = vecto*0.0
bffa7018   Ilyes Choubani   update
1048
                            
9ded3be9   Ilyes Choubani   Display update. F...
1049
1050
1051
1052
1053
1054
1055
1056
1057
                            vecfin[testneq] = (vecto[testneq])*(*!dustem_HCD)/1.0e21/extra_spec[testneq];(st.sed.em_tot)[testneq];spec[testneq];(st.sed.(i+1))[testneq];*fact;(st.sed.(i+1))[testneq]
                             
                            cgoplot,1/st.polext.wav,vecfin*100,pos=position[0],noerase=1,color=use_cols[i],xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
                        endif   
                    ENDFOR
                   
                    ;Plotting of the plugins. 
                     
                    for i=0L,n_plgns-1 do begin
bffa7018   Ilyes Choubani   update
1058
                        
9ded3be9   Ilyes Choubani   Display update. F...
1059
                        if isa((*!dustem_plugin).(0).spec) then begin
bffa7018   Ilyes Choubani   update
1060
                        
9ded3be9   Ilyes Choubani   Display update. F...
1061
1062
1063
1064
                            IF total(strsplit((*(*!dustem_plugin).(i).scope),'+',/extract) EQ 'ADD_POLEXT') THEN begin
                                vecfin = st.polext.ext_tot*0.0
                                vecfin[testneq] = sqrt((((*(*!dustem_plugin).(i).spec)[*,1])^2)[testneq]+(((*(*!dustem_plugin).(i).spec)[*,2])^2)[testneq])/((*(*!dustem_plugin).(i).spec)[*,0])[testneq]        
                                cgoplot,1/st.polext.wav,vecfin*100,color=clrs_plgns[i],pos=position[0],noerase=1,linestyle=2               
bffa7018   Ilyes Choubani   update
1065
                            
9ded3be9   Ilyes Choubani   Display update. F...
1066
                            ENDIF
bffa7018   Ilyes Choubani   update
1067
1068
                        endif
                        
9ded3be9   Ilyes Choubani   Display update. F...
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
                    endfor
                   
                     ;PLotting of the interpolates corresponding to spectrum and filter points
                    
                     IF ct_spec NE 0 THEN BEGIN
                     
                         xx=((*(*!dustem_data).fpolext).wav)[idx_spec]
                         yy=dustem_interp[idx_spec]
                         cgoplot,1/xx,yy*100,color='Indian Red',pos=position[0],psym=7,syms=2,noerase=1   
                     ENDIF
                     
                     
                     IF ct_filt NE 0 THEN BEGIN
                         xx=((*(*!dustem_data).fpolext).wav)[idx_filt]
                         yy=dustem_interp[idx_filt]
                         cgoplot,1/xx,yy*100,color='red',pos=position[0],psym=6,syms=2,noerase=1
                     ENDIF
                     
                     
                     ;Plotting of the total dust emission spectrum
                     cgoplot,1/st.polext.wav,dustem_spec*100,pos=position[0],noerase=1,/xlog,/ys,/xs
                                    
                            
                endif else begin ;The data points in the plot that remain unchanged.
                     
                    
                    ;Spectrum points are treated before for plotting reasons. 
                    
                    if ct_spec ne 0 then begin 
bffa7018   Ilyes Choubani   update
1098
                        
9ded3be9   Ilyes Choubani   Display update. F...
1099
1100
                        ;Plotting of spectrum data points (to be fitted)
                        cgplot,1/((*(*!dustem_data).fpolext).wav)(idx_spec),((*(*!dustem_data).fpolext).values)(idx_spec)*100,/xlog,/ylog,/ys,xs=1,pos=position[0],noerase=1,xtit=' ',charsize=1.15,xtickformat='(A1)',color='Powder Blue',xr=xr,yr=yr,psym=16,syms=0.8;,ytickformat='dstmwrp_exp'                
bffa7018   Ilyes Choubani   update
1101
                        
9ded3be9   Ilyes Choubani   Display update. F...
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
                        ;Plotting of the spectrum error points
                        rms=2.*((*(*!dustem_data).fpolext).sigma)(idx_spec)/2.
                        cgerrplot,1/((*(*!dustem_data).fpolext).wav)(idx_spec),(((*(*!dustem_data).fpolext).values)(idx_spec)-rms)*100,(((*(*!dustem_data).fpolext).values)(idx_spec)+rms)*100,color='Powder Blue'

                    endif
                    
                    if ct_filt ne 0 then begin
                    
                        ;Plotting of filter data points (to be fitted) + testing for prior plotting                         
                        if ct_spec ne 0 then cgoplot,1/((*(*!dustem_data).fpolext).wav)(idx_filt),((*(*!dustem_data).fpolext).values)(idx_filt)*100,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,pos=position[0],/ys,xs=1,noerase=1,xtickformat='(A1)',xr=xr,yr=yr,/xlog,/ylog else $;,ytickformat='dstmwrp_exp'
                            cgplot,1/((*(*!dustem_data).fpolext).wav)(idx_filt),((*(*!dustem_data).fpolext).values)(idx_filt)*100,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,pos=position[0],/ys,xs=1,noerase=1,xtickformat='(A1)',xtit=' ',xr=xr,yr=yr,/xlog,/ylog;,ytickformat='dstmwrp_exp'
                        
                        
                        ;Plotting of the filter error points
                        rms=2.*((*(*!dustem_data).fpolext).sigma)(idx_filt)/2.;/dustem_polfrac(idx_filt)
                        cgerrplot,1/((*(*!dustem_data).fpolext).wav)(idx_filt),(((*(*!dustem_data).fpolext).values)(idx_filt)-rms)*100,(((*(*!dustem_data).fpolext).values)(idx_filt)+rms)*100,color='Dodger Blue'
bffa7018   Ilyes Choubani   update
1118
                        
9ded3be9   Ilyes Choubani   Display update. F...
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
                    endif
                    
                    xyouts,pospltxt[0],pospltxt[1],textoidl('\tau_{PEXT}/\tau_{EXT} (%)'),color=0,/normal,charsize=1.3;,charthick=2.0
                     
                    ;Locating all the hidden data points (spectrum+filter)
                    
                    ;The filtering has been done prior (in the primary routine)
                    match2,((*(*!dustem_data).fpolext).wav),((*(*!dustem_show).fpolext).wav),show_polfracpts,fit_polfracpts ;only show_polfracpts is needed
                    idx_rmv_polfrac=where(fit_polfracpts eq -1, ct_hdnpts) ; indices of the points to hide; 
                    
                    ;Locating the hidden spectrum and filter data points                                        
                    idx_filt_hdn = where(((*(*!dustem_show).fpolext).filt_names)(idx_rmv_polfrac) NE 'SPECTRUM',ct_filt_hdn)
                    idx_spec_hdn = where(((*(*!dustem_show).fpolext).filt_names)(idx_rmv_polfrac) EQ 'SPECTRUM',ct_spec_hdn)
                    if ct_hdnpts ne 0 then begin ;Hidden data points are present 
bffa7018   Ilyes Choubani   update
1133
                        ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1134
1135
1136
1137
                        
                        if ct_spec_hdn ne 0 then begin
                            ;Plotting of hidden spectrum data points
                            cgplot,1/(((*(*!dustem_show).fpolext).wav)[idx_rmv_polfrac])(idx_spec_hdn),(((*(*!dustem_show).fpolext).values)[idx_rmv_polfrac])(idx_spec_hdn)*100,pos=position[0],/xlog,/ylog,/ys,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
1138
                            
9ded3be9   Ilyes Choubani   Display update. F...
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
                            ;Plotting of hidden spectrum error points
                            rms=2.*(((*(*!dustem_show).fpolext).sigma)[idx_rmv_polfrac])(idx_spec_hdn)/2.
                            cgerrplot,1/(((*(*!dustem_show).fpolext).wav)[idx_rmv_polfrac])(idx_spec_hdn),((((*(*!dustem_show).fpolext).values)[idx_rmv_polfrac])(idx_spec_hdn)-rms)*100,((((*(*!dustem_show).fpolext).values)[idx_rmv_polfrac])(idx_spec_hdn)+rms)*100,color='Black'
                        endif                                           
                        
                        if ct_filt_hdn ne 0 then begin
                            ;stop
                            plotsym,0, /fill
                            ;Plotting of hidden filter data points 
                            cgplot,1/(((*(*!dustem_show).fpolext).wav)[idx_rmv_polfrac])(idx_filt_hdn),(((*(*!dustem_show).fpolext).values)[idx_rmv_polfrac])(idx_filt_hdn)*100,pos=position[0],/xlog,/ylog,/ys,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=8,syms=0.8                                           
                            ;stop
                            ;Plotting of hidden filter error point
                            rms=2.*(((*(*!dustem_show).fpolext).sigma)[idx_rmv_polfrac])(idx_filt_hdn)/2.
                            cgerrplot,1/(((*(*!dustem_show).fpolext).wav)[idx_rmv_polfrac])(idx_filt_hdn),((((*(*!dustem_show).fpolext).values)[idx_rmv_polfrac])(idx_filt_hdn)-rms)*100,((((*(*!dustem_show).fpolext).values)[idx_rmv_polfrac])(idx_filt_hdn)+rms)*100,color='Black'
                             
bffa7018   Ilyes Choubani   update
1154
                        endif 
9ded3be9   Ilyes Choubani   Display update. F...
1155
1156
1157
1158
                                                       
                    endif 
                
                endelse 
bffa7018   Ilyes Choubani   update
1159
                    
9ded3be9   Ilyes Choubani   Display update. F...
1160
            END
bffa7018   Ilyes Choubani   update
1161
            
bffa7018   Ilyes Choubani   update
1162
            
9ded3be9   Ilyes Choubani   Display update. F...
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
             
            'PSI_EM': begin ;will be copying code from qsed and hopefully it will work. NB: THIS IS FALSE . YOU DO NOT NEED A LOGARITHMIC AXIS
                
         
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.psi_em.xr
                yr = !dustem_plot_range.psi_em.yr
                
                idx_filt=where((*(*!dustem_data).psi_em).filt_names NE 'SPECTRUM',ct_filt)
                idx_spec=where((*(*!dustem_data).psi_em).filt_names EQ 'SPECTRUM',ct_spec)
                            
                if keyword_set(refresh) then begin ;The data points in the plot are being refreshed
                    
                    ;making sure we're placed in the considered plot.
                    cgplot,vectw,vectx,/nodata,/xlog,xs=5,ys=5,pos=position[0],noerase=1,charsize=1.15,xtickformat='(A1)',ytickformat='(A1)',color='Powder Blue',xr=xr,xtit='',yr=yr,psym=8,syms=0.8
                    
                    ;Plotting of the spectra of the dust species
                    FOR i=0L,Ngrains-1 DO BEGIN
                        testneq = where(st.polsed.(i+1) ne 0,countneq)
                        if countneq ne 0 then begin
                            vecfin = st.polsed.(i+1)*0.0
bffa7018   Ilyes Choubani   update
1184
                        
9ded3be9   Ilyes Choubani   Display update. F...
1185
                            vecfin[testneq] = ((st.polsed.(i+1))[testneq])/(st.sed.(i+1))[testneq];extra_spec[testneq];(st.sed.em_tot)[testneq];spec[testneq] ;removed multiplication by 'fact'. 
bffa7018   Ilyes Choubani   update
1186
                            
9ded3be9   Ilyes Choubani   Display update. F...
1187
1188
                            ;*****NB: These two lines will have to be modified if the polarization angle varies with the dust species and/or with wavelength
                            polar_ippsi2iqu,st.sed.(i+1)*fact,specqgrain,specugrain,vecfin,replicate(!dustem_psi,n_elements(vecfin)) ;temporary solution
bffa7018   Ilyes Choubani   update
1189
                            
9ded3be9   Ilyes Choubani   Display update. F...
1190
1191
1192
                            ;You can replace the -0 values by 0 in order to avoid atan giving wrong values 
                            testnzero = where(specqgrain EQ -0., ct_nzero)
                            if ct_nzero ne 0 then specqgrain[testnzero] = 0
bffa7018   Ilyes Choubani   update
1193
                            
9ded3be9   Ilyes Choubani   Display update. F...
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
                            cgoplot,st.polsed.wav,0.5*atan(specugrain, specqgrain)/!dtor,pos=position[0],noerase=1,color=use_cols[i],xr=xr,/xlog,ytickformat='(A1)',yr=yr
                            ;cgoplot,st.polsed.wav,replicate(!dustem_psi,n_elements(vecfin)),pos=position,noerase=1,color=use_cols[i],xr=xr,/xlog,ytickformat='(A1)',yr=[-90.00,90.00]
                            
                        endif 
                    ENDFOR
                                                                    
                    ;Plotting of the plugins.
                    for i=0L,n_plgns-1 do begin
                        
                        if isa((*!dustem_plugin).(0).spec) then begin
                            IF total(strsplit((*(*!dustem_plugin).(i).scope),'+',/extract) EQ 'ADD_POLSED') THEN begin
                                ;dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i))[*,1],ppositions=position, /overplot, noerase=1, color=clrs_plgns[i], linestyle=2,xr=xr,/xlog
                                cgoplot,st.polsed.wav,0.5*atan((*(*!dustem_plugin).(i).spec)[*,2],(*(*!dustem_plugin).(i).spec)[*,1])/!dtor,pos=position[0],noerase=1, color=clrs_plgns[i], linestyle=2 ,xr=xr,/xlog,ytickformat='(A1)',yr=yr   
bffa7018   Ilyes Choubani   update
1207
                            ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
                        ENDIF
                    endfor
                    
                     ;PLotting of the interpolates corresponding to spectrum and filter points
                    
                     IF ct_spec NE 0 THEN BEGIN
                     
                         xx=((*(*!dustem_data).psi_em).wav)[idx_spec]
                         yy=dustem_interp[idx_spec]
                         cgoplot,xx,yy,color='Indian Red',pos=position[0],psym=7,syms=2,noerase=1   
                     ENDIF
                     
                     
                     IF ct_filt NE 0 THEN BEGIN
                         xx=((*(*!dustem_data).psi_em).wav)[idx_filt]
                         yy=dustem_interp[idx_filt]
                         cgoplot,xx,yy,color='red',pos=position[0],psym=6,syms=2,noerase=1
                     ENDIF
                     
                     
                     ;Plotting of the total dust emission spectrum
                     ;cgoplot,st.sed.wav,0.5*atan(specu,specq)/!dtor,pos=position,noerase=1,/xlog,/ys,/xs
                     cgoplot,st.sed.wav,dustem_spec,pos=position[0],noerase=1,/xlog,/ys,/xs               
                            
                endif else begin ;The data points in the plot that remain unchanged.
                     
                    
                    ;Spectrum points are treated before for plotting reasons. 
                    if ct_spec ne 0 then begin 
bffa7018   Ilyes Choubani   update
1237
                        
9ded3be9   Ilyes Choubani   Display update. F...
1238
1239
                        ;Plotting of spectrum data points (to be fitted)
                        cgplot,((*(*!dustem_data).psi_em).wav)(idx_spec),((*(*!dustem_data).psi_em).values)(idx_spec),/xlog,/ys,xs=1,pos=position[0],noerase=1,xtit=' ',charsize=1.15,xtickformat='(A1)',color='Powder Blue',xr=xr,yr=yr,psym=16,syms=0.8;,ytickformat='dstmwrp_exp'                
bffa7018   Ilyes Choubani   update
1240
                        
9ded3be9   Ilyes Choubani   Display update. F...
1241
1242
1243
                        ;Plotting of the spectrum error points
                        rms=2.*((*(*!dustem_data).psi_em).sigma)(idx_spec)/2.
                        cgerrplot,((*(*!dustem_data).psi_em).wav)(idx_spec),((*(*!dustem_data).psi_em).values)(idx_spec)-rms,((*(*!dustem_data).psi_em).values)(idx_spec)+rms,color='Powder Blue'
bffa7018   Ilyes Choubani   update
1244

9ded3be9   Ilyes Choubani   Display update. F...
1245
1246
1247
1248
1249
1250
1251
                    endif
                    
                    if ct_filt ne 0 then begin
                    
                        ;Plotting of filter data points (to be fitted) + testing for prior plotting                         
                        if ct_spec ne 0 then cgoplot,((*(*!dustem_data).psi_em).wav)(idx_filt),((*(*!dustem_data).psi_em).values)(idx_filt),charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,pos=position[0],/ys,xs=1,noerase=1,xtickformat='(A1)',xr=xr,yr=yr,/xlog else $;,ytickformat='dstmwrp_exp'
                            cgplot,((*(*!dustem_data).psi_em).wav)(idx_filt),((*(*!dustem_data).psi_em).values)(idx_filt),charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,pos=position[0],/ys,xs=1,noerase=1,xtickformat='(A1)',xtit=' ',xr=xr,yr=yr,/xlog;,ytickformat='dstmwrp_exp'
bffa7018   Ilyes Choubani   update
1252
                        
bffa7018   Ilyes Choubani   update
1253
                        
9ded3be9   Ilyes Choubani   Display update. F...
1254
1255
1256
                        ;Plotting of the filter error points
                        rms=2.*((*(*!dustem_data).psi_em).sigma)(idx_filt)/2.;/dustem_psi_em(idx_filt)
                        cgerrplot,((*(*!dustem_data).psi_em).wav)(idx_filt),((*(*!dustem_data).psi_em).values)(idx_filt)-rms,((*(*!dustem_data).psi_em).values)(idx_filt)+rms,color='Dodger Blue'
bffa7018   Ilyes Choubani   update
1257
                        
9ded3be9   Ilyes Choubani   Display update. F...
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
                    endif
                    
                    xyouts,pospltxt[0],pospltxt[1],textoidl('\Psi (deg)'),color=0,/normal,charsize=1.3;,charthick=2.0
                     
                    ;Locating all the hidden data points (spectrum+filter)
                    
                    ;The filtering has been done prior (in the primary routine)
                    match2,((*(*!dustem_data).psi_em).wav),((*(*!dustem_show).psi_em).wav),show_psi_empts,fit_psi_empts ;only show_psi_empts is needed
                    idx_rmv_psi_em=where(fit_psi_empts eq -1, ct_hdnpts) ; indices of the points to hide
                    ;stop
                    ;Locating the hidden spectrum and filter data points                                        
                    idx_filt_hdn = where(((*(*!dustem_show).psi_em).filt_names)(idx_rmv_psi_em) NE 'SPECTRUM',ct_filt_hdn)
                    idx_spec_hdn = where(((*(*!dustem_show).psi_em).filt_names)(idx_rmv_psi_em) EQ 'SPECTRUM',ct_spec_hdn)
                    if ct_hdnpts ne 0 then begin ;Hidden data points are present 
                        ;stop
bffa7018   Ilyes Choubani   update
1273
                        
9ded3be9   Ilyes Choubani   Display update. F...
1274
1275
1276
1277
1278
1279
1280
1281
                        if ct_spec_hdn ne 0 then begin
                            ;Plotting of hidden spectrum data points
                            cgplot,(((*(*!dustem_show).psi_em).wav)[idx_rmv_psi_em])(idx_spec_hdn),(((*(*!dustem_show).psi_em).values)[idx_rmv_psi_em])(idx_spec_hdn),pos=position[0],/xlog,/ys,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=8,syms=0.8
                            
                            ;Plotting of hidden spectrum error points
                            rms=2.*(((*(*!dustem_show).psi_em).sigma)[idx_rmv_psi_em])(idx_spec_hdn)/2.
                            cgerrplot,(((*(*!dustem_show).psi_em).wav)[idx_rmv_psi_em])(idx_spec_hdn),(((*(*!dustem_show).psi_em).values)[idx_rmv_psi_em])(idx_spec_hdn)-rms,(((*(*!dustem_show).psi_em).values)[idx_rmv_psi_em])(idx_spec_hdn)+rms,color='Black'
                        endif                                           
bffa7018   Ilyes Choubani   update
1282
                        
9ded3be9   Ilyes Choubani   Display update. F...
1283
                        if ct_filt_hdn ne 0 then begin
bffa7018   Ilyes Choubani   update
1284
                            ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1285
1286
1287
1288
1289
1290
1291
1292
                            plotsym,0, /fill
                            ;Plotting of hidden filter data points 
                            cgplot,(((*(*!dustem_show).psi_em).wav)[idx_rmv_psi_em])(idx_filt_hdn),(((*(*!dustem_show).psi_em).values)[idx_rmv_psi_em])(idx_filt_hdn),pos=position[0],/xlog,/ys,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=8,syms=0.8                                           
                            ;stop
                            ;Plotting of hidden filter error point
                            rms=2.*(((*(*!dustem_show).psi_em).sigma)[idx_rmv_psi_em])(idx_filt_hdn)/2.
                            cgerrplot,(((*(*!dustem_show).psi_em).wav)[idx_rmv_psi_em])(idx_filt_hdn),(((*(*!dustem_show).psi_em).values)[idx_rmv_psi_em])(idx_filt_hdn)-rms,(((*(*!dustem_show).psi_em).values)[idx_rmv_psi_em])(idx_filt_hdn)+rms,color='Black'
                             
bffa7018   Ilyes Choubani   update
1293
                        endif 
9ded3be9   Ilyes Choubani   Display update. F...
1294
1295
                                                       
                    endif 
bffa7018   Ilyes Choubani   update
1296
                
9ded3be9   Ilyes Choubani   Display update. F...
1297
1298
1299
                endelse 
                   
            end
bffa7018   Ilyes Choubani   update
1300
            
9ded3be9   Ilyes Choubani   Display update. F...
1301
            ;DONE BUT NOT TESTED.
bffa7018   Ilyes Choubani   update
1302
            
9ded3be9   Ilyes Choubani   Display update. F...
1303
            'PSI_EXT': begin ;MODIFYING THIS NOW - You should write a plugin for the modification of polarized extinction so that !dustem_psi_ext is different than !dustem_psi. 
bffa7018   Ilyes Choubani   update
1304
                
9ded3be9   Ilyes Choubani   Display update. F...
1305
1306
1307
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.psi_ext.xr
                yr = !dustem_plot_range.psi_ext.yr
bffa7018   Ilyes Choubani   update
1308
1309
                
            
9ded3be9   Ilyes Choubani   Display update. F...
1310
1311
                idx_filt=where((*(*!dustem_data).psi_ext).filt_names NE 'SPECTRUM',ct_filt)
                idx_spec=where((*(*!dustem_data).psi_ext).filt_names EQ 'SPECTRUM',ct_spec)
bffa7018   Ilyes Choubani   update
1312
                
9ded3be9   Ilyes Choubani   Display update. F...
1313
1314
                            
                if keyword_set(refresh) then begin ;The data points in the plot are being refreshed
bffa7018   Ilyes Choubani   update
1315
                    
478a4d49   Ilyes Choubani   Correcting some p...
1316
                    cgplot,1/vectw,vectx,/nodata,/xlog,/ys,xs=1,pos=position[0],noerase=1,charsize=1.15,xtickformat='(A1)',ytickformat='(A1)',color='Powder Blue',xr=xr,xtit='',yr=yr,psym=8,syms=0.8
9ded3be9   Ilyes Choubani   Display update. F...
1317
1318
1319
1320
1321
1322
                    
                    ;##################TAKEN FROM SED
                    
                    ;Plotting of the spectra of the dust species
                    
                    FOR i=0L,Ngrains-1 DO BEGIN
bffa7018   Ilyes Choubani   update
1323
                        
9ded3be9   Ilyes Choubani   Display update. F...
1324
1325
1326
                        vecto = transpose((st.polext.(1))[i,*]+(st.polext.(2))[i,*])
                        vecte = transpose(((st.ext.(1))[i,*]+(st.ext.(2))[i,*]))
                        testneq = where(vecto ne 0,countneq)
bffa7018   Ilyes Choubani   update
1327
                        
9ded3be9   Ilyes Choubani   Display update. F...
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
                        ;testing whether the polext values contain negative ones
                        testpos = where(vecto LT 0, countpos)
                        IF countpos NE 0 THEN vecto[testpos] = 0
                          
                        if countneq ne 0 then begin
                            
                            vecfin = vecto*0.0
                            
                            vecfin[testneq] = (vecto[testneq])/vecte[testneq];extra_spec[testneq];(st.sed.em_tot)[testneq];spec[testneq] ;removed multiplication by 'fact'. 
                            
                            polar_ippsi2iqu,vecte*(*!dustem_HCD)/1.0e21,specqgrain,specugrain,vecfin,replicate(!dustem_psi_ext,n_elements(vecfin)) ;temporary solution
                             
                            cgoplot,1/st.polext.wav,0.5*atan(specugrain,specqgrain)/!dtor,pos=position[0],noerase=1,color=use_cols[i],xr=xr,/xlog,ytickformat='(A1)',yr=yr
                        endif 
                    ENDFOR
                                                                          
                    ;Plotting of the plugins.
                    for i=0L,n_plgns-1 do begin
                        
                        if isa((*!dustem_plugin).(0).spec) then begin
                            IF total(strsplit((*(*!dustem_plugin).(i).scope),'+',/extract) EQ 'ADD_POLEXT') THEN begin
                                ;dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i))[*,1],ppositions=position, /overplot, noerase=1, color=clrs_plgns[i], linestyle=2,xr=xr,/xlog
                                cgoplot_mlog,1/st.polext.wav,0.5*atan((*(*!dustem_plugin).(i).spec)[*,2],(*(*!dustem_plugin).(i).spec)[*,1])/!dtor,pos=position[0],noerase=1, color=clrs_plgns[i], linestyle=2 ,xr=xr,/xlog,ytickformat='(A1)',yr=yr   
bffa7018   Ilyes Choubani   update
1351
1352
                            ENDIF
                        ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
                    endfor
                    
                     ;PLotting of the interpolates corresponding to spectrum and filter points
                    
                     IF ct_spec NE 0 THEN BEGIN
                     
                         xx=((*(*!dustem_data).psi_ext).wav)[idx_spec]
                         yy=dustem_interp[idx_spec]
                         cgoplot,1/xx,yy,color='Indian Red',pos=position[0],psym=7,syms=2,noerase=1   
                     ENDIF
                     
                     
                     IF ct_filt NE 0 THEN BEGIN
                         xx=((*(*!dustem_data).psi_ext).wav)[idx_filt]
                         yy=dustem_interp[idx_filt]
                         cgoplot,1/xx,yy,color='red',pos=position[0],psym=6,syms=2,noerase=1
                     ENDIF
                     
                     ;Plotting of the total dust emission spectrum
                     ;cgoplot,st.sed.wav,0.5*atan(specu,specq)/!dtor,pos=position,noerase=1,/xlog,/ys,/xs
                     cgoplot,1/st.ext.wav,dustem_spec,pos=position[0],noerase=1,/xlog,/ys,/xs               
                            
                endif else begin ;The data points in the plot that remain unchanged.
                    
                    ;Spectrum points are treated before for plotting reasons. 
                    if ct_spec ne 0 then begin 
                        
                        ;Plotting of spectrum data points (to be fitted)
                        cgplot,1/((*(*!dustem_data).psi_ext).wav)(idx_spec),((*(*!dustem_data).psi_ext).values)(idx_spec),/xlog,/ys,xs=1,pos=position[0],noerase=1,xtit=' ',charsize=1.15,xtickformat='(A1)',color='Powder Blue',xr=xr,yr=yr,psym=16,syms=0.8;,ytickformat='dstmwrp_exp'                
                        
                        ;Plotting of the spectrum error points
                        rms=2.*((*(*!dustem_data).psi_ext).sigma)(idx_spec)/2.
                        cgerrplot,1/((*(*!dustem_data).psi_ext).wav)(idx_spec),((*(*!dustem_data).psi_ext).values)(idx_spec)-rms,((*(*!dustem_data).psi_ext).values)(idx_spec)+rms,color='Powder Blue'

                    endif
                    
                    if ct_filt ne 0 then begin
                    
                        ;Plotting of filter data points (to be fitted) + testing for prior plotting                         
                        if ct_spec ne 0 then cgoplot,1/((*(*!dustem_data).psi_ext).wav)(idx_filt),((*(*!dustem_data).psi_ext).values)(idx_filt),charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,pos=position[0],/ys,xs=1,noerase=1,xtickformat='(A1)',xr=xr,yr=yr,/xlog else $;,ytickformat='dstmwrp_exp'
                            cgplot,1/((*(*!dustem_data).psi_ext).wav)(idx_filt),((*(*!dustem_data).psi_ext).values)(idx_filt),charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,pos=position[0],/ys,xs=1,noerase=1,xtickformat='(A1)',xtit=' ',xr=xr,yr=yr,/xlog;,ytickformat='dstmwrp_exp'
                        
                        
                        ;Plotting of the filter error points
                        rms=2.*((*(*!dustem_data).psi_ext).sigma)(idx_filt)/2.;/dustem_psi_em(idx_filt)
                        cgerrplot,1/((*(*!dustem_data).psi_ext).wav)(idx_filt),((*(*!dustem_data).psi_ext).values)(idx_filt)-rms,((*(*!dustem_data).psi_ext).values)(idx_filt)+rms,color='Dodger Blue'
bffa7018   Ilyes Choubani   update
1399
                        
9ded3be9   Ilyes Choubani   Display update. F...
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
                    endif
                    
                    xyouts,pospltxt[0],pospltxt[1],textoidl('\Psi_{EXT} (deg)'),color=0,/normal,charsize=1.3;,charthick=2.0
                     
                    ;Locating all the hidden data points (spectrum+filter)
                    
                    ;The filtering has been done prior (in the primary routine)
                    match2,((*(*!dustem_data).psi_ext).wav),((*(*!dustem_show).psi_ext).wav),show_psi_empts,fit_psi_empts ;only show_psi_empts is needed
                    idx_rmv_psi_em=where(fit_psi_empts eq -1, ct_hdnpts) ; indices of the points to hide
                    ;stop
                    ;Locating the hidden spectrum and filter data points                                        
                    idx_filt_hdn = where(((*(*!dustem_show).psi_ext).filt_names)(idx_rmv_psi_em) NE 'SPECTRUM',ct_filt_hdn) ;keeping psi_em notation for counters...
                    idx_spec_hdn = where(((*(*!dustem_show).psi_ext).filt_names)(idx_rmv_psi_em) EQ 'SPECTRUM',ct_spec_hdn)
                    if ct_hdnpts ne 0 then begin ;Hidden data points are present 
bffa7018   Ilyes Choubani   update
1414
                        ;stop
bffa7018   Ilyes Choubani   update
1415
                        
9ded3be9   Ilyes Choubani   Display update. F...
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
                        if ct_spec_hdn ne 0 then begin
                            ;Plotting of hidden spectrum data points
                            cgplot,1/(((*(*!dustem_show).psi_ext).wav)[idx_rmv_psi_em])(idx_spec_hdn),(((*(*!dustem_show).psi_ext).values)[idx_rmv_psi_em])(idx_spec_hdn),pos=position[0],/xlog,/ys,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=8,syms=0.8
                            
                            ;Plotting of hidden spectrum error points
                            rms=2.*(((*(*!dustem_show).psi_ext).sigma)[idx_rmv_psi_em])(idx_spec_hdn)/2.
                            cgerrplot,1/(((*(*!dustem_show).psi_ext).wav)[idx_rmv_psi_em])(idx_spec_hdn),(((*(*!dustem_show).psi_ext).values)[idx_rmv_psi_em])(idx_spec_hdn)-rms,(((*(*!dustem_show).psi_ext).values)[idx_rmv_psi_em])(idx_spec_hdn)+rms,color='Black'
                        endif                                           
                        
                        if ct_filt_hdn ne 0 then begin
                            ;stop
                            plotsym,0, /fill
                            ;Plotting of hidden filter data points 
                            cgplot,1/(((*(*!dustem_show).psi_ext).wav)[idx_rmv_psi_em])(idx_filt_hdn),(((*(*!dustem_show).psi_ext).values)[idx_rmv_psi_em])(idx_filt_hdn),pos=position[0],/xlog,/ys,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=8,syms=0.8                                           
                            ;stop
                            ;Plotting of hidden filter error point
                            rms=2.*(((*(*!dustem_show).psi_ext).sigma)[idx_rmv_psi_em])(idx_filt_hdn)/2.
                            cgerrplot,1/(((*(*!dustem_show).psi_ext).wav)[idx_rmv_psi_em])(idx_filt_hdn),(((*(*!dustem_show).psi_ext).values)[idx_rmv_psi_em])(idx_filt_hdn)-rms,(((*(*!dustem_show).psi_ext).values)[idx_rmv_psi_em])(idx_filt_hdn)+rms,color='Black'
                             
                        endif 
                                                       
                    endif 
                    
                endelse 
                    
            
            end
            
            
            ;DONE BUT NOT TESTED.
            'QSED': begin ; THE ONE I WILL BE WORKING ON
                
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.qsed.xr
                yr = !dustem_plot_range.qsed.yr
                
                
                varvar=where((*(*!dustem_data).qsed).values GT 0, testpstv)
                varvar=where((*(*!dustem_data).qsed).values LT 0, testngtv)
                
                idx_filt=where((*(*!dustem_data).qsed).filt_names NE 'SPECTRUM', ct_filt)
                idx_spec=where((*(*!dustem_data).qsed).filt_names EQ 'SPECTRUM' , ct_spec)
               
                ;Locating all the hidden data points (spectrum+filter)
                match2,((*(*!dustem_data).qsed).wav),((*(*!dustem_show).qsed).wav),show_sedpts,fit_sedpts ;only show_sedpts is needed
                idx_rmv_sed=where(fit_sedpts eq -1, ct_hdnpts) ; indices of the points to hide
            
9ded3be9   Ilyes Choubani   Display update. F...
1463
                
24fe128f   Ilyes Choubani   Removed forced pl...
1464
1465
1466
1467
1468
                
                If n_elements(position) GT 1 THEN BEGIN
                
                        
                    ;Plotting of the refreshed data in the normalized plot
bffa7018   Ilyes Choubani   update
1469
                    
24fe128f   Ilyes Choubani   Removed forced pl...
1470
                    if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
9ded3be9   Ilyes Choubani   Display update. F...
1471
                        
24fe128f   Ilyes Choubani   Removed forced pl...
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
                       ;Making sure we're placed in the normalized plot
                       cgplot,vectw,vectx,/nodata,/xlog,ys=5,xs=5,pos=position[1],noerase=1,charsize=1.15,xtickformat='(A1)',ytickformat='(A1)',ymin=0,color='Powder Blue',xr=xr,xtit='',yr=[0.0,2.0],psym=8,syms=0.8
                      
                        IF ct_spec NE 0 THEN BEGIN
                            xx=((*(*!dustem_data).qsed).wav)[idx_spec]
                            yy=dustem_interp[idx_spec]
                            rms=2.*((*(*!dustem_data).qsed).sigma)(idx_spec)/2.
                            indzero = where(yy NE 0, ct_zero)
                            IF ct_zero NE 0 THEN BEGIN
                                cgoplot,xx[indzero],(((*(*!dustem_data).qsed).values)(idx_spec))[indzero]/yy[indzero],pos=position[1],psym=16,color='Powder Blue',syms=0.8,noerase=1 
                                cgerrplot,(((*(*!dustem_data).qsed).wav)(idx_spec))[indzero],((((*(*!dustem_data).qsed).values)[idx_spec])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).qsed).values)[idx_spec])[indzero]+rms[indzero])/yy[indzero],color='Powder Blue'
                            ENDIF 
9ded3be9   Ilyes Choubani   Display update. F...
1484
                        ENDIF
24fe128f   Ilyes Choubani   Removed forced pl...
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
                        
                        IF ct_filt NE 0 THEN BEGIN
                            
                            xx=((*(*!dustem_data).qsed).wav)[idx_filt]
                            yy=dustem_interp[idx_filt]
                            rms=2.*((*(*!dustem_data).qsed).sigma)(idx_filt)/2.
                            indzero = where(yy NE 0, ct_zero)
                            IF ct_zero NE 0 THEN BEGIN
                                cgoplot,xx[indzero],(((*(*!dustem_data).qsed).values)(idx_filt))[indzero]/yy[indzero],pos=position[1],psym=16,color='Dodger Blue',syms=0.8,noerase=1 
                                cgerrplot,(((*(*!dustem_data).qsed).wav)(idx_filt))[indzero],((((*(*!dustem_data).qsed).values)[idx_filt])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).qsed).values)[idx_filt])[indzero]+rms[indzero])/yy[indzero],color='Dodger Blue' 
                            ENDIF
                        ENDIF
      
                    ;Plotting of the frozen data points in the normalized plot    
                    endif else begin ;The data points in the plot that remain unchanged
                     
                        xtit=textoidl('\lambda (\mum)')
                        cgplot,vectw,vectx,/xlog,/ys,xs=1,pos=position[1],noerase=1,color='Black',xr=xr,xtit=xtit,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0
                        xyouts,pospltxt_n[0],pospltxt_n[1],textoidl('norm'),color=0,/normal,charsize=1.1
                    
                    endelse
                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
                ;stop          
                ;refreshing of the data of the normal plot          
                if keyword_set(refresh) then begin ;The data points in the plot are being refreshed
                    
                    if positive_only EQ 1 then begin
                        
                        testsup=where(dustem_spec GT 0., countmodelsup)
                        if testpstv ne 0 or countmodelsup ne 0 then begin
                            
                            ;making sure that we're placed in the positive_only normal plot
                            dustem_plot_mlog,vectw,vectx,xs=5,ys=5,ppositions=position[0],/positive_only, noerase=1, color='Indian Red',psym=7,syms=2,xr=xr,/xlog,/ylog,yticks=0,xticks=0,xticklen=0.0,yticklen=0.0,/nodata,xtickformat='(A1)',xtit='',ytickformat='(A1)',yr=yr 
                            
                            FOR i=0L,Ngrains-1 DO BEGIN
                                
                                testneq = where(st.polsed.(i+1) ne 0,countneq)
bffa7018   Ilyes Choubani   update
1522
                                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1523
1524
                                if countneq ne 0 then begin 
                                    vecfin = st.polsed.(i+1)*0.0 ;em_tot can be used here right? 
bffa7018   Ilyes Choubani   update
1525
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1526
                                    vecfin[testneq] = ((st.polsed.(i+1))[testneq])/((st.sed.(i+1))[testneq]);extra_spec[testneq];(st.sed.em_tot)[testneq];(st.sed.(i+1))[testneq];*fact;(st.sed.(i+1))[testneq]
bffa7018   Ilyes Choubani   update
1527
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1528
1529
1530
                                    polar_ippsi2iqu,st.sed.(i+1)*fact,specqgrain,specugrain,vecfin,replicate(!dustem_psi,n_elements(vecfin)) ;temporary solution
                                                                        
                                    dustem_plot_mlog,st.polsed.wav,specqgrain,ppositions=position[0],/positive_only,/overplot,noerase=1,color=use_cols[i],xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
bffa7018   Ilyes Choubani   update
1531
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1532
                                endif
bffa7018   Ilyes Choubani   update
1533
                                
9ded3be9   Ilyes Choubani   Display update. F...
1534
1535
1536
                            ENDFOR
                            
                            for i=0L,n_plgns-1 do begin
bffa7018   Ilyes Choubani   update
1537
                                
9ded3be9   Ilyes Choubani   Display update. F...
1538
1539
1540
1541
1542
1543
                                IF isa((*!dustem_plugin).(0).spec) THEN BEGIN
                                    IF total(strsplit((*(*!dustem_plugin).(i).scope),'+',/extract) EQ 'ADD_POLSED') THEN begin
                                     
                                        ;dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i))[*,1],ppositions=position, /overplot, noerase=1, color=clrs_plgns[i], linestyle=2,xr=xr,/xlog
                                        dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i).spec)[*,1],ppositions=position[0],/positive_only,/overplot,noerase=1, color=clrs_plgns[i], linestyle=2 ,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr      
                                    ENDIF
bffa7018   Ilyes Choubani   update
1544
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
                            endfor
                            
                            IF ct_spec NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).qsed).wav)[idx_spec]
                                yy=dustem_interp[idx_spec]
                                
                                dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only, /overplot, noerase=1, color='Indian Red',psym=7,syms=2,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr 
                            ENDIF
                            
                            IF ct_filt NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).qsed).wav)[idx_filt]
                                yy=dustem_interp[idx_filt]
bffa7018   Ilyes Choubani   update
1557
                                
9ded3be9   Ilyes Choubani   Display update. F...
1558
1559
                                dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only, /overplot, noerase=1, color='red',psym=6,syms=2,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
                            ENDIF
bffa7018   Ilyes Choubani   update
1560
                            
9ded3be9   Ilyes Choubani   Display update. F...
1561
                            dustem_plot_mlog,st.polsed.wav,dustem_spec,ppositions=position[0],/positive_only,/overplot,noerase=1,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr                                    
bffa7018   Ilyes Choubani   update
1562
1563
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
                                
                    
                    endif
                    

                    if negative_only EQ 1 then begin
                                                         
                        testlow=where(dustem_spec LT 0., countmodellow)   
                        if testngtv ne 0 or countmodellow ne 0 then begin
                            
                            dustem_plot_mlog,vectw,-vectx,ppositions=position[0],xs=5,ys=5,/negative_only, noerase=1, color='Indian Red',psym=7,syms=2,xr=xr,/xlog,/ylog,/nodata,xtickformat='(A1)',xtit='',ytickformat='(A1)',yr=yr
                            
                            ;Plotting of the spectra of the dust species
                            FOR i=0L,Ngrains-1 DO BEGIN
                                
                                testneq = where(st.polsed.(i+1) ne 0,countneq)
                                ;stop
                                if countneq ne 0 then begin 
                                    vecfin = st.polsed.(i+1)*0.0 ;em_tot can be used here right? 
bffa7018   Ilyes Choubani   update
1583
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1584
1585
1586
1587
1588
1589
                                    vecfin[testneq] = ((st.polsed.(i+1))[testneq])/((st.sed.(i+1))[testneq]);extra_spec[testneq];(st.sed.em_tot)[testneq];(st.sed.(i+1))[testneq];*fact;(st.sed.(i+1))[testneq] 
                                    ;stop    
                                    polar_ippsi2iqu,st.sed.(i+1)*fact,specqgrain,specugrain,vecfin,replicate(!dustem_psi,n_elements(vecfin)) ;temporary solution
                                    ;stop
                                    ;dustem_plot_mlog,st.polsed.wav,specqgrain,ppositions=position,/overplot,noerase=1,color=use_cols[i],xr=xr,/xlog 
                                    dustem_plot_mlog,st.polsed.wav,specqgrain,ppositions=position[0],/negative_only,/overplot,noerase=1,color=use_cols[i],xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
bffa7018   Ilyes Choubani   update
1590
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
                                endif 
                            ENDFOR
                            
                            ;Plotting of the plugins
                            for i=0L,n_plgns-1 do begin
                                IF isa((*!dustem_plugin).(0).spec) THEN BEGIN
                                
                                    IF total(strsplit((*(*!dustem_plugin).(i).scope),'+',/extract) EQ 'ADD_POLSED') THEN begin
 
                                        ;dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i))[*,1],ppositions=position, /overplot, noerase=1, color=clrs_plgns[i], linestyle=2,xr=xr,/xlog
                                        dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i).spec)[*,1],ppositions=position[0],/negative_only,/overplot,noerase=1, color=clrs_plgns[i], linestyle=2 ,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr      
bffa7018   Ilyes Choubani   update
1602
                                    ENDIF
bffa7018   Ilyes Choubani   update
1603
                                    
bffa7018   Ilyes Choubani   update
1604
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1605
1606
1607
1608
1609
                            endfor
                            ;PLotting of the interpolates corresponding to spectrum and filter points
                            IF ct_spec NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).qsed).wav)[idx_spec]
                                yy=dustem_interp[idx_spec]
bffa7018   Ilyes Choubani   update
1610
                                
9ded3be9   Ilyes Choubani   Display update. F...
1611
1612
                                dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only, /overplot, noerase=1, color='Indian Red',psym=7,syms=2,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr 
                            ENDIF
bffa7018   Ilyes Choubani   update
1613
                            
9ded3be9   Ilyes Choubani   Display update. F...
1614
1615
1616
1617
1618
1619
1620
                            IF ct_filt NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).qsed).wav)[idx_filt]
                                yy=dustem_interp[idx_filt]
                                dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only, /overplot, noerase=1, color='red',psym=6,syms=2,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
                            ENDIF
                            ;Plotting of the total dust emission spectrum
                            dustem_plot_mlog,st.polsed.wav,dustem_spec,ppositions=position[0],/negative_only,/overplot,noerase=1,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr                                    
bffa7018   Ilyes Choubani   update
1621
                        
bffa7018   Ilyes Choubani   update
1622
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
                                
                    
                    endif
                                               
                ;Plotting of the froeen data in the normal plot           
                endif else begin ;The data points in the plot that remain unchanged.; DO NOT USE AN ELSE HERE. 
                 
                    xyouts,pospltxt[0],pospltxt[1],textoidl('Q_{\nu} (MJy/sr)'),color=0,/normal,charsize=1.3;,charthick=2.0  
                    ;if ct_hdnpts ne 0 then begin ;Hidden data points are present 
                        
                    ;Locating the hidden spectrum and filter data points     
                   
                    if ct_hdnpts NE 0 then begin
                        idx_filt_hdn_pstv = where(((*(*!dustem_show).qsed).filt_names)(idx_rmv_sed) NE 'SPECTRUM' and ((*(*!dustem_show).qsed).values)(idx_rmv_sed) gt 0,ct_filt_hdn_pstv)
                        idx_spec_hdn_pstv = where(((*(*!dustem_show).qsed).filt_names)(idx_rmv_sed) EQ 'SPECTRUM' and ((*(*!dustem_show).qsed).values)(idx_rmv_sed) gt 0,ct_spec_hdn_pstv)
                        idx_filt_hdn_ngtv = where(((*(*!dustem_show).qsed).filt_names)(idx_rmv_sed) NE 'SPECTRUM' and ((*(*!dustem_show).qsed).values)(idx_rmv_sed) lt 0,ct_filt_hdn_ngtv)
                        idx_spec_hdn_ngtv = where(((*(*!dustem_show).qsed).filt_names)(idx_rmv_sed) EQ 'SPECTRUM' and ((*(*!dustem_show).qsed).values)(idx_rmv_sed) lt 0,ct_spec_hdn_ngtv)
                    endif
                    
                    if positive_only EQ 1 then begin
bffa7018   Ilyes Choubani   update
1643
                        
9ded3be9   Ilyes Choubani   Display update. F...
1644
                        if testpstv ne 0 then begin
bffa7018   Ilyes Choubani   update
1645
                        
9ded3be9   Ilyes Choubani   Display update. F...
1646
1647
1648
1649
1650
                            plotsym, 0
                            
                            if ct_spec ne 0 then begin
                            
                                rms=2.*((*(*!dustem_data).qsed).sigma)(idx_spec)/2.
bffa7018   Ilyes Choubani   update
1651
                                
9ded3be9   Ilyes Choubani   Display update. F...
1652
1653
1654
1655
1656
1657
                                dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_spec),((*(*!dustem_data).qsed).values)(idx_spec),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_spec),((*(*!dustem_data).qsed).values)(idx_spec),ppositions=position[0],color='Dodger Blue',/positive_only,noerase=1,/overplot,rms=rms,xtit='',charsize=1.15,xtickformat='(A1)',xs=1,psym=16,syms=0.8,xr=xr,/xlog,/ylog,yr=yr,ytickformat='(A1)'     
                             
                            endif
                            
                            if ct_filt ne 0 then begin
bffa7018   Ilyes Choubani   update
1658
                                
9ded3be9   Ilyes Choubani   Display update. F...
1659
1660
1661
                                rms=2.*((*(*!dustem_data).qsed).sigma)(idx_filt)/2.
                               
                               
3196a378   Ilyes Choubani   Complementing fit...
1662
                                if ct_spec ne 0 then dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_filt),((*(*!dustem_data).qsed).values)(idx_filt),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr,/overplot,ytickformat='(A1)';,ytickformat='(A1)'
9ded3be9   Ilyes Choubani   Display update. F...
1663
1664
                                if ct_spec eq 0 then dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_filt),((*(*!dustem_data).qsed).values)(idx_filt),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_filt),((*(*!dustem_data).qsed).values)(idx_filt),ppositions=position[0],color='Dodger Blue',/positive_only,noerase=1,/overplot,rms=rms,xtit='',charsize=1.15,xtickformat='(A1)',xs=1,psym=16,syms=0.8,xr=xr,/xlog,/ylog,yr=yr,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
1665
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
                            endif
                            
                            
                            if ct_hdnpts NE 0 then begin
                            
                                if ct_spec_hdn_pstv ne 0 then begin
                                    xx = (((*(*!dustem_show).qsed).wav)[idx_rmv_sed])(idx_spec_hdn_pstv)
                                    yy = (((*(*!dustem_show).qsed).values)[idx_rmv_sed])(idx_spec_hdn_pstv)
                                    rms=2.*(((*(*!dustem_show).qsed).sigma)[idx_rmv_sed])(idx_spec_hdn_pstv)/2.
                                    
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',/overplot,xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr,ytickformat='(A1)'  
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only,noerase=1,color='Black',/overplot,rms=rms,yr=yr,xtickformat='(A1)',xr=xr,xs=1,/xlog,/ylog,ytickformat='(A1)'  
bffa7018   Ilyes Choubani   update
1678
                                
9ded3be9   Ilyes Choubani   Display update. F...
1679
                                endif 
bffa7018   Ilyes Choubani   update
1680
                                
9ded3be9   Ilyes Choubani   Display update. F...
1681
                                if ct_filt_hdn_pstv ne 0 then begin
bffa7018   Ilyes Choubani   update
1682
                                
9ded3be9   Ilyes Choubani   Display update. F...
1683
1684
1685
                                    xx = (((*(*!dustem_show).qsed).wav)[idx_rmv_sed])(idx_filt_hdn_pstv)
                                    yy = (((*(*!dustem_show).qsed).values)[idx_rmv_sed])(idx_filt_hdn_pstv)
                                    rms=2.*(((*(*!dustem_show).qsed).sigma)[idx_rmv_sed])(idx_filt_hdn_pstv)/2.
bffa7018   Ilyes Choubani   update
1686
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1687
1688
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,charsize=1.15,/overplot,xtickformat='(A1)',xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr,ytickformat='(A1)'     
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,color='Black',/overplot,rms=rms,xr=xr,yr=yr,xtickformat='(A1)',/xlog,/ylog,ytickformat='(A1)'  
bffa7018   Ilyes Choubani   update
1689
                                
9ded3be9   Ilyes Choubani   Display update. F...
1690
                                endif
bffa7018   Ilyes Choubani   update
1691
                                
9ded3be9   Ilyes Choubani   Display update. F...
1692
1693
1694
1695
1696
1697
1698
1699
                            endif
                            
                            
                        endif else begin
                            
                            
                        
                            if ct_spec ne 0 then dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_spec),-((*(*!dustem_data).qsed).values)(idx_spec),ppositions=position[0],charsize=1.15,/nodata,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
1700
1701
                                
                            
9ded3be9   Ilyes Choubani   Display update. F...
1702
1703
1704
1705
1706
1707
1708
1709
1710
                            if ct_filt ne 0 and ct_spec eq 0 then  dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_filt),-((*(*!dustem_data).qsed).values)(idx_filt),/nodata,ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                               
                            
                            if ct_hdnpts NE 0 then begin
                            
                                if ct_spec_hdn_pstv ne 0 then begin
                                    xx = (((*(*!dustem_show).qsed).wav)[idx_rmv_sed])(idx_spec_hdn_pstv)
                                    yy = (((*(*!dustem_show).qsed).values)[idx_rmv_sed])(idx_spec_hdn_pstv)
                                    rms=2.*(((*(*!dustem_show).qsed).sigma)[idx_rmv_sed])(idx_spec_hdn_pstv)/2.
bffa7018   Ilyes Choubani   update
1711
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1712
1713
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',/overplot,xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr,ytickformat='(A1)'  
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only,noerase=1,color='Black',/overplot,rms=rms,yr=yr,xtickformat='(A1)',xr=xr,xs=1,/xlog,/ylog,ytickformat='(A1)'  ;,psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
1714
                                
9ded3be9   Ilyes Choubani   Display update. F...
1715
                                endif 
bffa7018   Ilyes Choubani   update
1716
                                
9ded3be9   Ilyes Choubani   Display update. F...
1717
                                if ct_filt_hdn_pstv ne 0 then begin
bffa7018   Ilyes Choubani   update
1718
                                
9ded3be9   Ilyes Choubani   Display update. F...
1719
1720
1721
                                    xx = (((*(*!dustem_show).qsed).wav)[idx_rmv_sed])(idx_filt_hdn_pstv)
                                    yy = (((*(*!dustem_show).qsed).values)[idx_rmv_sed])(idx_filt_hdn_pstv)
                                    rms=2.*(((*(*!dustem_show).qsed).sigma)[idx_rmv_sed])(idx_filt_hdn_pstv)/2.
bffa7018   Ilyes Choubani   update
1722
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1723
1724
1725
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,charsize=1.15,/overplot,xtickformat='(A1)',xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr,ytickformat='(A1)'     
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,color='Black',/overplot,rms=rms,xr=xr,yr=yr,xtickformat='(A1)',/xlog,/ylog,ytickformat='(A1)'  ;,psym=8,syms=0.8
                                
bffa7018   Ilyes Choubani   update
1726
1727
                                endif
                                
9ded3be9   Ilyes Choubani   Display update. F...
1728
1729
1730
1731
1732
1733
1734
1735
                            endif
                            
                        endelse                           
                    
                    endif 
                    
                    
                    if negative_only EQ 1 then begin
bffa7018   Ilyes Choubani   update
1736
                        
9ded3be9   Ilyes Choubani   Display update. F...
1737
1738
1739
                        if testngtv ne 0 then begin
                             
                             ;plotsym, 0
bffa7018   Ilyes Choubani   update
1740
                            
9ded3be9   Ilyes Choubani   Display update. F...
1741
1742
1743
                             if ct_spec ne 0 then begin
                             
                                 rms=2.*((*(*!dustem_data).qsed).sigma)(idx_spec)/2.
bffa7018   Ilyes Choubani   update
1744
                                 
9ded3be9   Ilyes Choubani   Display update. F...
1745
1746
1747
1748
1749
1750
                                 dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_spec),((*(*!dustem_data).qsed).values)(idx_spec),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                 dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_spec),((*(*!dustem_data).qsed).values)(idx_spec),ppositions=position[0],color='Dodger Blue',/negative_only,noerase=1,/overplot,rms=rms,xtit='',charsize=1.15,xtickformat='(A1)',xs=1,xr=xr,/xlog,/ylog,yr=yr,ytickformat='(A1)';,psym=16,syms=0.8     
                              
                             endif
                             
                             if ct_filt ne 0 then begin
bffa7018   Ilyes Choubani   update
1751
                                 
9ded3be9   Ilyes Choubani   Display update. F...
1752
1753
1754
1755
                                 rms=2.*((*(*!dustem_data).qsed).sigma)(idx_filt)/2.
                                
                                 if ct_spec ne 0 then dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_filt),((*(*!dustem_data).qsed).values)(idx_filt),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr,ytickformat='(A1)'
                                 if ct_spec eq 0 then dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_filt),((*(*!dustem_data).qsed).values)(idx_filt),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr
bffa7018   Ilyes Choubani   update
1756
                                 
9ded3be9   Ilyes Choubani   Display update. F...
1757
                                 dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_filt),((*(*!dustem_data).qsed).values)(idx_filt),ppositions=position[0],color='Dodger Blue',/negative_only,noerase=1,/overplot,rms=rms,xtit='',charsize=1.15,xtickformat='(A1)',xs=1,xr=xr,/xlog,/ylog,yr=yr,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
1758
                                     
9ded3be9   Ilyes Choubani   Display update. F...
1759
1760
1761
1762
1763
1764
1765
1766
                             endif 
                             
                             if ct_hdnpts NE 0 then begin
                             
                                 if ct_spec_hdn_ngtv ne 0 then begin
                                     xx = (((*(*!dustem_show).qsed).wav)[idx_rmv_sed])(idx_spec_hdn_ngtv)
                                     yy = (((*(*!dustem_show).qsed).values)[idx_rmv_sed])(idx_spec_hdn_ngtv)
                                     rms=2.*(((*(*!dustem_show).qsed).sigma)[idx_rmv_sed])(idx_spec_hdn_ngtv)/2.
bffa7018   Ilyes Choubani   update
1767
                                     
9ded3be9   Ilyes Choubani   Display update. F...
1768
1769
1770
                                     dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,charsize=1.15,/overplot,xtickformat='(A1)',xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr,ytickformat='(A1)'
                                     dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only,noerase=1,color='Black',/overplot,rms=rms,yr=yr,xtickformat='(A1)',xr=xr,xs=1,/xlog,/ylog,ytickformat='(A1)';,psym=8,syms=0.8
                                 
bffa7018   Ilyes Choubani   update
1771
1772
                                 endif 
                                 
9ded3be9   Ilyes Choubani   Display update. F...
1773
                                 if ct_filt_hdn_ngtv ne 0 then begin
bffa7018   Ilyes Choubani   update
1774
                                 
9ded3be9   Ilyes Choubani   Display update. F...
1775
1776
1777
                                     xx = (((*(*!dustem_show).qsed).wav)[idx_rmv_sed])(idx_filt_hdn_ngtv)
                                     yy = (((*(*!dustem_show).qsed).values)[idx_rmv_sed])(idx_filt_hdn_ngtv)
                                     rms=2.*(((*(*!dustem_show).qsed).sigma)[idx_rmv_sed])(idx_filt_hdn_ngtv)/2.
bffa7018   Ilyes Choubani   update
1778
                                     
9ded3be9   Ilyes Choubani   Display update. F...
1779
1780
1781
                                     dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,charsize=1.15,/overplot,xtickformat='(A1)',xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr ,ytickformat='(A1)'  
                                     dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,color='Black',/overplot,rms=rms,xr=xr,yr=yr,xtickformat='(A1)',/xlog,/ylog,ytickformat='(A1)';,psym=8,syms=0.8
                                 
bffa7018   Ilyes Choubani   update
1782
                                 endif
9ded3be9   Ilyes Choubani   Display update. F...
1783
1784
                            
                             endif
bffa7018   Ilyes Choubani   update
1785

9ded3be9   Ilyes Choubani   Display update. F...
1786
1787
                        
                        endif else begin
bffa7018   Ilyes Choubani   update
1788
                            
9ded3be9   Ilyes Choubani   Display update. F...
1789
1790
                            
                            if ct_spec ne 0 then dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_spec),-((*(*!dustem_data).qsed).values)(idx_spec),ppositions=position[0],charsize=1.15,/nodata,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
1791
                                
9ded3be9   Ilyes Choubani   Display update. F...
1792
1793
1794
1795
1796
1797
1798
1799
1800
                            
                            if ct_filt ne 0 and ct_spec eq 0 then  dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_filt),-((*(*!dustem_data).qsed).values)(idx_filt),/nodata,ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                            
                            if ct_hdnpts NE 0 then begin
                            
                                if ct_spec_hdn_ngtv ne 0 then begin
                                    xx = (((*(*!dustem_show).qsed).wav)[idx_rmv_sed])(idx_spec_hdn_ngtv)
                                    yy = (((*(*!dustem_show).qsed).values)[idx_rmv_sed])(idx_spec_hdn_ngtv)
                                    rms=2.*(((*(*!dustem_show).qsed).sigma)[idx_rmv_sed])(idx_spec_hdn_ngtv)/2.
bffa7018   Ilyes Choubani   update
1801
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1802
1803
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,charsize=1.15,/overplot,xtickformat='(A1)',xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr,ytickformat='(A1)'
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only,noerase=1,color='Black',/overplot,rms=rms,yr=yr,xtickformat='(A1)',xr=xr,xs=1,/xlog,/ylog,ytickformat='(A1)';,psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
1804
                                
9ded3be9   Ilyes Choubani   Display update. F...
1805
                                endif 
bffa7018   Ilyes Choubani   update
1806
                                
9ded3be9   Ilyes Choubani   Display update. F...
1807
                                if ct_filt_hdn_ngtv ne 0 then begin
bffa7018   Ilyes Choubani   update
1808
                                
9ded3be9   Ilyes Choubani   Display update. F...
1809
1810
1811
                                    xx = (((*(*!dustem_show).qsed).wav)[idx_rmv_sed])(idx_filt_hdn_ngtv)
                                    yy = (((*(*!dustem_show).qsed).values)[idx_rmv_sed])(idx_filt_hdn_ngtv)
                                    rms=2.*(((*(*!dustem_show).qsed).sigma)[idx_rmv_sed])(idx_filt_hdn_ngtv)/2.
bffa7018   Ilyes Choubani   update
1812
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,charsize=1.15,/overplot,xtickformat='(A1)',xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr ,ytickformat='(A1)'  
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,color='Black',/overplot,rms=rms,xr=xr,yr=yr,xtickformat='(A1)',/xlog,/ylog,ytickformat='(A1)';,psym=8,syms=0.8
                                
                                endif
                                
                                endif
                              
                        endelse
                        ;stop
                    endif
bffa7018   Ilyes Choubani   update
1823
                    
bffa7018   Ilyes Choubani   update
1824
1825
                
                endelse 
9ded3be9   Ilyes Choubani   Display update. F...
1826
                    
bffa7018   Ilyes Choubani   update
1827
            
9ded3be9   Ilyes Choubani   Display update. F...
1828
            END
bffa7018   Ilyes Choubani   update
1829
            
9ded3be9   Ilyes Choubani   Display update. F...
1830
1831
            ;DONE BUT NOT TESTED...
            'USED': begin
bffa7018   Ilyes Choubani   update
1832
                
9ded3be9   Ilyes Choubani   Display update. F...
1833
1834
1835
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.used.xr
                yr = !dustem_plot_range.used.yr
bffa7018   Ilyes Choubani   update
1836
                
9ded3be9   Ilyes Choubani   Display update. F...
1837
1838
1839
1840
                vectw=DINDGEN(1001)*(alog10(1E7) - alog10(1E5))/(1000 - 1L) + alog10(1E5)
                vectw=10^vectw[1:*]
                vectw=[wavs,vectw]
                vectx=vectw*0+1
bffa7018   Ilyes Choubani   update
1841
            
9ded3be9   Ilyes Choubani   Display update. F...
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
                ;SIGN-RELATED PARAMETERS/LOOPS HERE?
                ;negative & positive values regardless of data type (SPECTRUM or FILTER data points)
                varvar=where((*(*!dustem_data).used).values LT 0, testngtv)
                varvar=where((*(*!dustem_data).used).values GT 0, testpstv)
                ;stop
                idx_filt=where((*(*!dustem_data).used).filt_names NE 'SPECTRUM', ct_filt)
                idx_spec=where((*(*!dustem_data).used).filt_names EQ 'SPECTRUM' , ct_spec)
                
                ;Locating all the hidden data points (spectrum+filter)
                match2,((*(*!dustem_data).used).wav),((*(*!dustem_show).used).wav),show_sedpts,fit_sedpts ;only show_sedpts is needed
                idx_rmv_sed=where(fit_sedpts eq -1, ct_hdnpts) ; indices of the points to hide
                
24fe128f   Ilyes Choubani   Removed forced pl...
1854
1855
1856
1857
                
                If n_elements(position) GT 1 THEN BEGIN
                    ;Refreshing of the data in the normalized plot
                    if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
bffa7018   Ilyes Choubani   update
1858
                        
24fe128f   Ilyes Choubani   Removed forced pl...
1859
1860
                        ;Making sure we're placed in the normalized plot
                        cgplot,vectw,vectx,/nodata,/xlog,xs=5,ys=5,pos=position[1],noerase=1,charsize=1.15,xtickformat='(A1)',ytickformat='(A1)',color='Powder Blue',xr=xr,xtit='',yr=[0.0,2.0],psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
1861
                        
24fe128f   Ilyes Choubani   Removed forced pl...
1862
1863
1864
1865
1866
1867
1868
1869
1870
                        IF ct_spec NE 0 THEN BEGIN
                            xx=((*(*!dustem_data).used).wav)[idx_spec]
                            yy=dustem_interp[idx_spec]
                            rms=2.*((*(*!dustem_data).used).sigma)(idx_spec)/2.
                            indzero = where(yy NE 0, ct_zero)
                            IF ct_zero NE 0 THEN BEGIN
                                cgoplot,xx[indzero],(((*(*!dustem_data).used).values)(idx_spec))[indzero]/yy[indzero],pos=position[1],psym=16,color='Powder Blue',syms=0.8,noerase=1 
                                cgerrplot,(((*(*!dustem_data).used).wav)(idx_spec))[indzero],((((*(*!dustem_data).used).values)[idx_spec])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).used).values)[idx_spec])[indzero]+rms[indzero])/yy[indzero],color='Powder Blue'
                            ENDIF
bffa7018   Ilyes Choubani   update
1871
                        ENDIF
24fe128f   Ilyes Choubani   Removed forced pl...
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
                        
                        IF ct_filt NE 0 THEN BEGIN
                            
                            xx=((*(*!dustem_data).used).wav)[idx_filt]
                            yy=dustem_interp[idx_filt]
                            rms=2.*((*(*!dustem_data).used).sigma)(idx_filt)/2. 
                            indzero = where(yy NE 0, ct_zero)
                            
                            IF ct_zero NE 0 THEN BEGIN
                                cgoplot,xx[indzero],(((*(*!dustem_data).used).values)(idx_filt))[indzero]/yy[indzero],pos=position[1],psym=16,color='Dodger Blue',syms=0.8,noerase=1 
                                cgerrplot,(((*(*!dustem_data).used).wav)(idx_filt))[indzero],((((*(*!dustem_data).used).values)[idx_filt])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).used).values)[idx_filt])[indzero]+rms[indzero])/yy[indzero],color='Dodger Blue' 
                            ENDIF
                        ENDIF
      
                    ;plotting of the frozen data in the normalized plot
                    endif else begin 
                        
                        xtit=textoidl('\lambda (\mum)')
                        
                        cgplot,vectw,vectx,/xlog,/ys,xs=1,pos=position[1],noerase=1,color='Black',xr=xr,xtit=xtit,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0
                        xyouts,pospltxt_n[0],pospltxt_n[1],textoidl('norm'),color=0,/normal,charsize=1.1
bffa7018   Ilyes Choubani   update
1893
                    
24fe128f   Ilyes Choubani   Removed forced pl...
1894
1895
                    endelse
                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
                
                ;refreshig of the data in the normal plot.
                          
                if keyword_set(refresh) then begin 
                    
                    if positive_only EQ 1 then begin
                    
                        testsup=where(dustem_spec GT 0., countmodelsup)      
                        if testpstv ne 0 or countmodelsup ne 0 then begin
                            
                            ;Making sure we're refreshing data in the positive_only plot
                            dustem_plot_mlog,vectw,vectx,ppositions=position[0],/positive_only, noerase=1, color='Indian Red',xs=5,ys=5,psym=7,syms=2,xr=xr,/xlog,/ylog,/nodata,xtickformat='(A1)',xtit='',ytickformat='(A1)',yr=yr
bffa7018   Ilyes Choubani   update
1908
                        
9ded3be9   Ilyes Choubani   Display update. F...
1909
1910
1911
1912
1913
1914
                            FOR i=0L,Ngrains-1 DO BEGIN
                                
                                testneq = where(st.polsed.(i+1) ne 0,countneq)
                                
                                if countneq ne 0 then begin 
                                    vecfin = st.polsed.(i+1)*0.0 ;em_tot can be used here right? 
bffa7018   Ilyes Choubani   update
1915
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1916
                                    vecfin[testneq] = ((st.polsed.(i+1))[testneq])/((st.sed.(i+1))[testneq]);extra_spec[testneq];(st.sed.em_tot)[testneq];(st.sed.(i+1))[testneq];*fact;(st.sed.(i+1))[testneq]
bffa7018   Ilyes Choubani   update
1917
                                        
9ded3be9   Ilyes Choubani   Display update. F...
1918
1919
1920
1921
                                    polar_ippsi2iqu,st.sed.(i+1)*fact,specqgrain,specugrain,vecfin,replicate(!dustem_psi,n_elements(vecfin)) ;temporary solution
                                    ;dustem_plot_mlog,st.polsed.wav,specqgrain,ppositions=position,/overplot,noerase=1,color=use_cols[i],xr=xr,/xlog 
                                    dustem_plot_mlog,st.polsed.wav,specugrain,ppositions=position[0],/positive_only,/overplot,noerase=1,color=use_cols[i],xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
                                endif 
bffa7018   Ilyes Choubani   update
1922
                                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1923
1924
1925
1926
1927
1928
1929
                            ENDFOR
                            ;stop
                            for i=0L,n_plgns-1 do begin
                                
                                IF isa((*!dustem_plugin).(0).spec) THEN BEGIN
                                
                                    IF total(strsplit((*(*!dustem_plugin).(i).scope),'+',/extract) EQ 'ADD_POLSED') THEN begin
bffa7018   Ilyes Choubani   update
1930
                                        
9ded3be9   Ilyes Choubani   Display update. F...
1931
1932
                                        
                                        dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i).spec)[*,2],ppositions=position[0],/positive_only,/overplot,noerase=1, color=clrs_plgns[i], linestyle=2 ,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr      
bffa7018   Ilyes Choubani   update
1933
1934
                                    ENDIF
                                    
bffa7018   Ilyes Choubani   update
1935
1936
                                ENDIF
                                
9ded3be9   Ilyes Choubani   Display update. F...
1937
                            endfor
bffa7018   Ilyes Choubani   update
1938
                            
9ded3be9   Ilyes Choubani   Display update. F...
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
                            IF ct_spec NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).used).wav)[idx_spec]
                                yy=dustem_interp[idx_spec]
                                ;dustem_plot_mlog,xx,yy,ppositions=position,/overplot, noerase=1, color='red',psym=7,syms=2,xr=xr,/xlog
                                dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only, /overplot, noerase=1, color='Indian Red',psym=7,syms=2,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr 
                            ENDIF
                            
                            IF ct_filt NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).used).wav)[idx_filt]
                                yy=dustem_interp[idx_filt]
                                ;dustem_plot_mlog,xx,yy,ppositions=position, /overplot, noerase=1, color='red',psym=6,syms=2,xr=xr,/xlog
                                dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only, /overplot, noerase=1, color='red',psym=6,syms=2,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
                            ENDIF
                            
                            dustem_plot_mlog,st.polsed.wav,dustem_spec,ppositions=position[0],/positive_only,/overplot,noerase=1,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr                                    
bffa7018   Ilyes Choubani   update
1954
1955
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
                                
                    endif
                    
                    
                    if negative_only EQ 1 then begin
                    
                        testlow=where(dustem_spec LT 0., countmodelow)  
                        if testngtv ne 0 or countmodelow ne 0 then begin
                            
                            ;Making sure we're refreshing data in the positive_only plot
                            dustem_plot_mlog,vectw,-vectx,ppositions=position[0],/negative_only, noerase=1, color='Indian Red',psym=7,syms=2,xr=xr,xs=5,ys=5,/xlog,/ylog,/nodata,xtickformat='(A1)',xtit='',ytickformat='(A1)',yr=yr
                                
                            ;Plotting of the spectra of the dust species
                            FOR i=0L,Ngrains-1 DO BEGIN
                                testneq = where(st.polsed.(i+1) ne 0,countneq)
                                if countneq ne 0 then begin
                                    vecfin = st.polsed.(i+1)*0.0 ;em_tot can be used here right? 
bffa7018   Ilyes Choubani   update
1973
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
                                    vecfin[testneq] = ((st.polsed.(i+1))[testneq])/((st.sed.(i+1))[testneq]);extra_spec[testneq];(st.sed.em_tot)[testneq];(st.sed.(i+1))[testneq];*fact;(st.sed.(i+1))[testneq]
                                    
                                    polar_ippsi2iqu,st.sed.(i+1)*fact,specqgrain,specugrain,vecfin,replicate(!dustem_psi,n_elements(vecfin)) ;temporary solution
                                     
                                    dustem_plot_mlog,st.polsed.wav,specugrain,ppositions=position[0],/negative_only,/overplot,noerase=1,color=use_cols[i],xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
                                endif    
                            ENDFOR
                            ;Plotting of the plugins
                            FOR i=0L,n_plgns-1 do begin
                                IF isa((*!dustem_plugin).(0).spec) THEN BEGIN
                                
                                    IF total(strsplit((*(*!dustem_plugin).(i).scope),'+',/extract) EQ 'ADD_POLSED') THEN begin
                                        ;dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i))[*,1],ppositions=position, /overplot, noerase=1, color=clrs_plgns[i], linestyle=2,xr=xr,/xlog
                                        dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i).spec)[*,2],ppositions=position[0],/negative_only,/overplot,noerase=1, color=clrs_plgns[i], linestyle=2 ,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr      
bffa7018   Ilyes Choubani   update
1988
                                    ENDIF
bffa7018   Ilyes Choubani   update
1989
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1990
1991
1992
1993
1994
1995
1996
1997
                            ENDFOR
                            ;PLotting of the interpolates corresponding to spectrum and filter points
                            IF ct_spec NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).used).wav)[idx_spec]
                                yy=dustem_interp[idx_spec]
                                ;dustem_plot_mlog,xx,yy,ppositions=position,/overplot, noerase=1, color='red',psym=7,syms=2,xr=xr,/xlog
                                dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only, /overplot, noerase=1, color='Indian Red',psym=7,syms=2,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr 
                            ENDIF
bffa7018   Ilyes Choubani   update
1998
                            
9ded3be9   Ilyes Choubani   Display update. F...
1999
2000
2001
2002
2003
2004
2005
2006
2007
                            IF ct_filt NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).used).wav)[idx_filt]
                                yy=dustem_interp[idx_filt]
                                ;dustem_plot_mlog,xx,yy,ppositions=position, /overplot, noerase=1, color='red',psym=6,syms=2,xr=xr,/xlog
                                dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only, /overplot, noerase=1, color='red',psym=6,syms=2,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
                            ENDIF
                            
                            ;Plotting of the total dust emission spectrum
                            dustem_plot_mlog,st.polsed.wav,dustem_spec,ppositions=position[0],/negative_only,/overplot,noerase=1,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr                                    
bffa7018   Ilyes Choubani   update
2008
2009
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
                                
                    
                    endif
                                               
                ;Plotting of frozen data in the normal plot    
                       
                endif else begin 
                    
                    xyouts,pospltxt[0],pospltxt[1],textoidl('U_{\nu} (MJy/sr)'),color=0,/normal,charsize=1.3;,charthick=2.0  
                    
                    ;Locating the hidden spectrum and filter data points     
                    ;SADLY I STILL DON'T HAVE A SOLUTION FOR THE PLOTTING OF NULL VALUES.                                   
                    
                    if ct_hdnpts NE 0 then begin
                        idx_filt_hdn_pstv = where(((*(*!dustem_show).used).filt_names)(idx_rmv_sed) NE 'SPECTRUM' and ((*(*!dustem_show).used).values)(idx_rmv_sed) gt 0,ct_filt_hdn_pstv)
                        idx_spec_hdn_pstv = where(((*(*!dustem_show).used).filt_names)(idx_rmv_sed) EQ 'SPECTRUM' and ((*(*!dustem_show).used).values)(idx_rmv_sed) gt 0,ct_spec_hdn_pstv)
                        idx_filt_hdn_ngtv = where(((*(*!dustem_show).used).filt_names)(idx_rmv_sed) NE 'SPECTRUM' and ((*(*!dustem_show).used).values)(idx_rmv_sed) lt 0,ct_filt_hdn_ngtv)
                        idx_spec_hdn_ngtv = where(((*(*!dustem_show).used).filt_names)(idx_rmv_sed) EQ 'SPECTRUM' and ((*(*!dustem_show).used).values)(idx_rmv_sed) lt 0,ct_spec_hdn_ngtv)
                    endif
                    ;stop
                    
                    if positive_only EQ 1 then begin
bffa7018   Ilyes Choubani   update
2032
                        ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2033
                        if testpstv ne 0 then begin
bffa7018   Ilyes Choubani   update
2034
                        ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
                            plotsym, 0
                            
                             
                            if ct_spec ne 0 then begin
                            
                                rms=2.*((*(*!dustem_data).used).sigma)(idx_spec)/2.
                                ;dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_spec),-((*(*!dustem_data).used).values)(idx_spec),ppositions=position,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,/nodata,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                ;if ct_spec_hdn_pstv ne 0 then dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_spec),((*(*!dustem_data).used).values)(idx_spec),ppositions=position,charsize=1.15,/overplot,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr else begin
                                dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_spec),((*(*!dustem_data).used).values)(idx_spec),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr
                                ;endelse;,ytickformat='(A1)'
                                dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_spec),((*(*!dustem_data).used).values)(idx_spec),ppositions=position[0],color='Dodger Blue',/positive_only,noerase=1,/overplot,rms=rms,xtit='',xtickformat='(A1)',xs=1,xr=xr,/xlog,/ylog,yr=yr,ytickformat='(A1)'  ;,charsize=1.15,psym=16,syms=0.8
                             
                            endif
                            
                            if ct_filt ne 0 then begin
bffa7018   Ilyes Choubani   update
2050
                                
9ded3be9   Ilyes Choubani   Display update. F...
2051
2052
2053
2054
2055
2056
2057
                                rms=2.*((*(*!dustem_data).used).sigma)(idx_filt)/2.
                               ; dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_filt),-1.*((*(*!dustem_data).used).values)(idx_filt),ppositions=position,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,/nodata,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                ;if ct_filt_hdn_pstv ne 0 then dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_filt),((*(*!dustem_data).used).values)(idx_filt),/overplot,ppositions=position,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr else begin
                                if ct_spec ne 0 then dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_filt),((*(*!dustem_data).used).values)(idx_filt),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr,ytickformat='(A1)'
                                if ct_spec eq 0 then dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_filt),((*(*!dustem_data).used).values)(idx_filt),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr
                                ;endelse;,ytickformat='(A1)'
                                dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_filt),((*(*!dustem_data).used).values)(idx_filt),ppositions=position[0],color='Dodger Blue',/positive_only,noerase=1,/overplot,rms=rms,xtit='',xtickformat='(A1)',xs=1,xr=xr,/xlog,/ylog,yr=yr,ytickformat='(A1)';,charsize=1.15,psym=16,syms=0.8
bffa7018   Ilyes Choubani   update
2058
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
                            endif
                            
                            if ct_hdnpts NE 0 then begin
                            
                                if ct_spec_hdn_pstv ne 0 then begin
                                    ;stop
                                    xx = (((*(*!dustem_show).used).wav)[idx_rmv_sed])(idx_spec_hdn_pstv)
                                    yy = (((*(*!dustem_show).used).values)[idx_rmv_sed])(idx_spec_hdn_pstv)
                                    rms=2.*(((*(*!dustem_show).used).sigma)[idx_rmv_sed])(idx_spec_hdn_pstv)/2.
                                    
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',/overplot,xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr,ytickformat='(A1)'
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only,noerase=1,color='Black',/overplot,rms=rms,yr=yr,xtickformat='(A1)',xr=xr,xs=1,/xlog,/ylog,ytickformat='(A1)';,psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
2071
                                
9ded3be9   Ilyes Choubani   Display update. F...
2072
                                endif 
bffa7018   Ilyes Choubani   update
2073
                                
9ded3be9   Ilyes Choubani   Display update. F...
2074
2075
2076
2077
2078
                                if ct_filt_hdn_pstv ne 0 then begin
                                    ;stop
                                    xx = (((*(*!dustem_show).used).wav)[idx_rmv_sed])(idx_filt_hdn_pstv)
                                    yy = (((*(*!dustem_show).used).values)[idx_rmv_sed])(idx_filt_hdn_pstv)
                                    rms=2.*(((*(*!dustem_show).used).sigma)[idx_rmv_sed])(idx_filt_hdn_pstv)/2.
bffa7018   Ilyes Choubani   update
2079
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2080
2081
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,charsize=1.15,/overplot,xtickformat='(A1)',xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr,ytickformat='(A1)' 
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,color='Black',/overplot,rms=rms,xr=xr,yr=yr,xtickformat='(A1)',/xlog,/ylog,ytickformat='(A1)';,psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
2082
                                
9ded3be9   Ilyes Choubani   Display update. F...
2083
2084
2085
2086
2087
                                endif
                            endif   
                        endif else begin
                            
                            if ct_spec ne 0 then dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_spec),-((*(*!dustem_data).used).values)(idx_spec),ppositions=position[0],charsize=1.15,/nodata,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
2088
                                
9ded3be9   Ilyes Choubani   Display update. F...
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
                            
                            if ct_filt ne 0 and ct_spec eq 0 then  dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_filt),-((*(*!dustem_data).used).values)(idx_filt),/nodata,ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                            
                            if ct_hdnpts NE 0 then begin
                            
                                if ct_spec_hdn_pstv ne 0 then begin
                                    ;stop
                                    xx = (((*(*!dustem_show).used).wav)[idx_rmv_sed])(idx_spec_hdn_pstv)
                                    yy = (((*(*!dustem_show).used).values)[idx_rmv_sed])(idx_spec_hdn_pstv)
                                    rms=2.*(((*(*!dustem_show).used).sigma)[idx_rmv_sed])(idx_spec_hdn_pstv)/2.
                                    
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',/overplot,xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr,ytickformat='(A1)'
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only,noerase=1,color='Black',/overplot,rms=rms,yr=yr,xtickformat='(A1)',xr=xr,xs=1,/xlog,/ylog,ytickformat='(A1)';,psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
2102
                                
9ded3be9   Ilyes Choubani   Display update. F...
2103
                                endif 
bffa7018   Ilyes Choubani   update
2104
                                
9ded3be9   Ilyes Choubani   Display update. F...
2105
2106
2107
2108
2109
                                if ct_filt_hdn_pstv ne 0 then begin
                                    ;stop
                                    xx = (((*(*!dustem_show).used).wav)[idx_rmv_sed])(idx_filt_hdn_pstv)
                                    yy = (((*(*!dustem_show).used).values)[idx_rmv_sed])(idx_filt_hdn_pstv)
                                    rms=2.*(((*(*!dustem_show).used).sigma)[idx_rmv_sed])(idx_filt_hdn_pstv)/2.
bffa7018   Ilyes Choubani   update
2110
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,charsize=1.15,/overplot,xtickformat='(A1)',xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr,ytickformat='(A1)' 
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,color='Black',/overplot,rms=rms,xr=xr,yr=yr,xtickformat='(A1)',/xlog,/ylog,ytickformat='(A1)';,psym=8,syms=0.8
                                
                                endif
                            endif   
                        endelse                          
                    
                    endif 
                    
                    if negative_only EQ 1 then begin
                        ;stop
                        if testngtv ne 0 then begin
                             
                             plotsym, 0
                             
                             
                             if ct_spec ne 0 then begin
                             
                                 rms=2.*((*(*!dustem_data).used).sigma)(idx_spec)/2.
bffa7018   Ilyes Choubani   update
2130
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2131
                                 dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_spec),((*(*!dustem_data).used).values)(idx_spec),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
2132
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2133
2134
2135
2136
2137
                                 dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_spec),((*(*!dustem_data).used).values)(idx_spec),ppositions=position[0],color='Dodger Blue',/negative_only,noerase=1,/overplot,rms=rms,xtit='',charsize=1.15,xtickformat='(A1)',xs=1,psym=16,syms=0.8,xr=xr,/xlog,/ylog,yr=yr,ytickformat='(A1)'     
                              
                             endif
                             
                             if ct_filt ne 0 then begin
bffa7018   Ilyes Choubani   update
2138
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2139
2140
2141
2142
                                 rms=2.*((*(*!dustem_data).used).sigma)(idx_filt)/2.

                                 if ct_spec ne 0 then dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_filt),((*(*!dustem_data).used).values)(idx_filt),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr,ytickformat='(A1)'
                                 if ct_spec eq 0 then dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_filt),((*(*!dustem_data).used).values)(idx_filt),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
2143
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2144
                                 dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_filt),((*(*!dustem_data).used).values)(idx_filt),ppositions=position[0],color='Dodger Blue',/negative_only,noerase=1,/overplot,rms=rms,xtit='',charsize=1.15,xtickformat='(A1)',xs=1,psym=16,syms=0.8,xr=xr,/xlog,/ylog,yr=yr,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
2145
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2146
2147
2148
2149
2150
2151
2152
2153
                             endif
                             
                             if ct_hdnpts NE 0 then begin
                             
                                 if ct_spec_hdn_ngtv ne 0 then begin
                                     xx = (((*(*!dustem_show).used).wav)[idx_rmv_sed])(idx_spec_hdn_ngtv)
                                     yy = (((*(*!dustem_show).used).values)[idx_rmv_sed])(idx_spec_hdn_ngtv)
                                     rms=2.*(((*(*!dustem_show).used).sigma)[idx_rmv_sed])(idx_spec_hdn_ngtv)/2.
bffa7018   Ilyes Choubani   update
2154
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2155
2156
                                     dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',/overplot,xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr,ytickformat='(A1)'
                                     dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only,noerase=1,color='Black',/overplot,rms=rms,yr=yr,xtickformat='(A1)',xr=xr,xs=1,/xlog,/ylog,ytickformat='(A1)';,psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
2157
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2158
                                 endif 
bffa7018   Ilyes Choubani   update
2159
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2160
2161
2162
2163
2164
                                 if ct_filt_hdn_ngtv ne 0 then begin
                                 
                                     xx = (((*(*!dustem_show).used).wav)[idx_rmv_sed])(idx_filt_hdn_ngtv)
                                     yy = (((*(*!dustem_show).used).values)[idx_rmv_sed])(idx_filt_hdn_ngtv)
                                     rms=2.*(((*(*!dustem_show).used).sigma)[idx_rmv_sed])(idx_filt_hdn_ngtv)/2.
bffa7018   Ilyes Choubani   update
2165
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2166
2167
2168
2169
                                     dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',/overplot,xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr,ytickformat='(A1)'  
                                     dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,color='Black',/overplot,rms=rms,xr=xr,yr=yr,xtickformat='(A1)',/xlog,/ylog,ytickformat='(A1)';,psym=8,syms=0.8
                                 
                                 endif
bffa7018   Ilyes Choubani   update
2170

9ded3be9   Ilyes Choubani   Display update. F...
2171
2172
2173
2174
2175
2176
2177
2178
                             endif 
                        
                        endif else begin
                        
                            if ct_spec ne 0 then dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_spec),-((*(*!dustem_data).used).values)(idx_spec),ppositions=position[0],charsize=1.15,/nodata,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                
                            
                            if ct_filt ne 0 and ct_spec eq 0 then  dustem_plot_mlog,((*(*!dustem_data).used).wav)(idx_filt),-((*(*!dustem_data).used).values)(idx_filt),/nodata,ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
2179
                            
bffa7018   Ilyes Choubani   update
2180
                            
9ded3be9   Ilyes Choubani   Display update. F...
2181
2182
2183
2184
2185
2186
                            if ct_hdnpts NE 0 then begin
                            
                                if ct_spec_hdn_ngtv ne 0 then begin
                                    xx = (((*(*!dustem_show).used).wav)[idx_rmv_sed])(idx_spec_hdn_ngtv)
                                    yy = (((*(*!dustem_show).used).values)[idx_rmv_sed])(idx_spec_hdn_ngtv)
                                    rms=2.*(((*(*!dustem_show).used).sigma)[idx_rmv_sed])(idx_spec_hdn_ngtv)/2.
bffa7018   Ilyes Choubani   update
2187
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2188
2189
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',/overplot,xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr,ytickformat='(A1)'
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only,noerase=1,color='Black',/overplot,rms=rms,yr=yr,xtickformat='(A1)',xr=xr,xs=1,/xlog,/ylog,ytickformat='(A1)';,psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
2190
                                
9ded3be9   Ilyes Choubani   Display update. F...
2191
                                endif 
bffa7018   Ilyes Choubani   update
2192
                                
9ded3be9   Ilyes Choubani   Display update. F...
2193
                                if ct_filt_hdn_ngtv ne 0 then begin
bffa7018   Ilyes Choubani   update
2194
                                
9ded3be9   Ilyes Choubani   Display update. F...
2195
2196
2197
                                    xx = (((*(*!dustem_show).used).wav)[idx_rmv_sed])(idx_filt_hdn_ngtv)
                                    yy = (((*(*!dustem_show).used).values)[idx_rmv_sed])(idx_filt_hdn_ngtv)
                                    rms=2.*(((*(*!dustem_show).used).sigma)[idx_rmv_sed])(idx_filt_hdn_ngtv)/2.
bffa7018   Ilyes Choubani   update
2198
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2199
2200
2201
2202
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',/overplot,xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr,ytickformat='(A1)'  
                                    dustem_plot_mlog,xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,color='Black',/overplot,rms=rms,xr=xr,yr=yr,xtickformat='(A1)',/xlog,/ylog,ytickformat='(A1)';,psym=8,syms=0.8
                                
                                endif
bffa7018   Ilyes Choubani   update
2203

9ded3be9   Ilyes Choubani   Display update. F...
2204
2205
2206
                            endif     
                             
                        endelse
bffa7018   Ilyes Choubani   update
2207
                        
9ded3be9   Ilyes Choubani   Display update. F...
2208
                    endif
bffa7018   Ilyes Choubani   update
2209
                    
bffa7018   Ilyes Choubani   update
2210
2211
                
                endelse 
bffa7018   Ilyes Choubani   update
2212
                    
bffa7018   Ilyes Choubani   update
2213
                
9ded3be9   Ilyes Choubani   Display update. F...
2214
            end
bffa7018   Ilyes Choubani   update
2215
            
9ded3be9   Ilyes Choubani   Display update. F...
2216
            'QEXT': begin   ;Correct this like you corrected extinction...
bffa7018   Ilyes Choubani   update
2217
                
9ded3be9   Ilyes Choubani   Display update. F...
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.qext.xr
                yr = !dustem_plot_range.qext.yr
                
                vectw=DINDGEN(1001)*(alog10(1E7) - alog10(1E5))/(1000 - 1L) + alog10(1E5)
                vectw=10^vectw[1:*]
                vectw=[wavs,vectw]
                vectx=vectw*0+1
                
                
                varvar=where((*(*!dustem_data).qext).values GT 0, testpstv)
                varvar=where((*(*!dustem_data).qext).values LT 0, testngtv)
                
                ;stop
                idx_filt=where((*(*!dustem_data).qext).filt_names NE 'SPECTRUM', ct_filt)
                idx_spec=where((*(*!dustem_data).qext).filt_names EQ 'SPECTRUM' , ct_spec)
                
                
                ;Locating all the hidden data points (spectrum+filter)
                match2,((*(*!dustem_data).qext).wav),((*(*!dustem_show).qext).wav),show_sedpts,fit_sedpts ;only show_sedpts is needed
                idx_rmv_sed=where(fit_sedpts eq -1, ct_hdnpts) ; indices of the points to hide
                        
bffa7018   Ilyes Choubani   update
2240
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2241
2242
                If n_elements(position) GT 1 THEN BEGIN        
                    ;refreshing of the normalized plot
9ded3be9   Ilyes Choubani   Display update. F...
2243
                    
24fe128f   Ilyes Choubani   Removed forced pl...
2244
                    if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
bffa7018   Ilyes Choubani   update
2245
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2246
2247
                        ;Making sure we're placed in the right plot to refresh. Here normalized plot for QEXT.
                        cgplot,1/vectw,vectx,/nodata,/xlog,xs=1,pos=position[1],noerase=1,charsize=1.15,xtickformat='(A1)',ytickformat='(A1)',color='Powder Blue',xr=xr,xtit='',yr=[0.0,2.0],psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
2248
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
                        IF ct_spec NE 0 THEN BEGIN
                            
                            xx=((*(*!dustem_data).qext).wav)[idx_spec]
                            yy=dustem_interp[idx_spec]
                            rms=2.*((*(*!dustem_data).qext).sigma)(idx_spec)/2.
                            
                            ;testing so that data/yy is finite: 
                            ;avoiding zero points in yy since we divide by it
                            ;testing also if the data is full of zeros (ie: PSI=0 for U and PSI=90 for Q)
                            
                            indzero = where(yy NE 0, ct_zero)
                            if ct_zero ne 0 then begin  
    
                                cgoplot,(1/xx)[indzero],(((*(*!dustem_data).qext).values)(idx_spec))[indzero]/yy[indzero],pos=position[1],psym=16,color='Powder Blue',syms=0.8,noerase=1 
                                cgerrplot,(1/((*(*!dustem_data).qext).wav)(idx_spec))[indzero],((((*(*!dustem_data).qext).values)[idx_spec])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).qext).values)[idx_spec])[indzero]+rms[indzero])/yy[indzero],color='Powder Blue'
                            endif
                        ENDIF
bffa7018   Ilyes Choubani   update
2266
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
                        IF ct_filt NE 0 THEN BEGIN
                            ;stop
                            xx=((*(*!dustem_data).qext).wav)[idx_filt]
                            yy=dustem_interp[idx_filt]
                            rms=2.*((*(*!dustem_data).qext).sigma)(idx_filt)/2. 
                            indzero = where(yy NE 0, ct_zero)
                            IF ct_zero NE 0 THEN BEGIN
                                cgoplot,(1/xx)[indzero],(((*(*!dustem_data).qext).values)(idx_filt))[indzero]/yy[indzero],pos=position[1],psym=16,color='Dodger Blue',syms=0.8,noerase=1 
                                cgerrplot,(1/((*(*!dustem_data).qext).wav)(idx_filt))[indzero],((((*(*!dustem_data).qext).values)[idx_filt])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).qext).values)[idx_filt])[indzero]+rms[indzero])/yy[indzero],color='Dodger Blue' 
                            ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2277
                        ENDIF
24fe128f   Ilyes Choubani   Removed forced pl...
2278
2279
2280
2281
2282
2283
2284
2285
      
                    ;Plotting of thr frozen data in the normalized plot    
                    endif else begin ;The data points in the plot that remain unchanged
                        
                        xtit=textoidl('1/\lambda (\mum^{-1})')
                        
                        cgplot,1/vectw,vectx,/xlog,xs=1,pos=position[1],noerase=1,color='Black',xr=xr,xtit=xtit,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0
                        xyouts,pospltxt_n[0],pospltxt_n[1],textoidl('norm'),color=0,/normal,charsize=1.1
bffa7018   Ilyes Choubani   update
2286
                    
24fe128f   Ilyes Choubani   Removed forced pl...
2287
2288
                    endelse
                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
                      
                if keyword_set(refresh) then begin ;The data points in the plot are being refreshed
                    
                    if keyword_set(positive_only) then begin
                        ;stop
                        testsup=where(dustem_spec GT 0., countmodelsup) 
                        if testpstv ne 0 or countmodelsup ne 0 then begin
                            
                            dustem_plot_mlog,1/vectw,vectx,ppositions=position[0],/positive_only, noerase=1, color='Indian Red',psym=7,syms=2,xr=xr,/xlog,/ylog,/nodata,xtickformat='(A1)',xtit='',ytickformat='(A1)',yr=yr
                            
                            
                            ;I don't think the position keyword in the following lines is needed. I haven't verified to see if I encouter any errors.
                            ;Since we added the /nodata (new), I think we can omit some of these keywords. But this requires testing. I don't know passing keywords will be affected.
                            
                            FOR i=0L,Ngrains-1 DO BEGIN
                                
                                vecto = transpose((st.polext.(1))[i,*]+(st.polext.(2))[i,*])
                                vecte = transpose((st.ext.(1))[i,*]+(st.ext.(2))[i,*])
                                testneq = where( vecto ne 0,countneq)
bffa7018   Ilyes Choubani   update
2308
                                
bffa7018   Ilyes Choubani   update
2309

9ded3be9   Ilyes Choubani   Display update. F...
2310
2311
2312
2313
2314
2315
2316
                                if countneq ne 0 then begin 
                                    vecfin = vecto*0.0 ;em_tot can be used here right? 
                                    ;stop
                                    vecfin[testneq] = (vecto[testneq])/vecte[testneq];extra_spec[testneq];(st.sed.em_tot)[testneq];(st.sed.(i+1))[testneq];*fact;(st.sed.(i+1))[testneq]
                                    ;stop
                                    ;polar_ippsi2iqu,st.sed.(i+1)*fact,specqgrain,specugrain,st.polsed.(i+1)*fact/spec,replicate(!dustem_psi,n_elements(spec)) ;temporary solution
                                    polar_ippsi2iqu,vecte*(*!dustem_HCD)/1.0e21,specqgrain,specugrain,vecfin,replicate(!dustem_psi_ext,n_elements(vecfin)) ;temporary solution
bffa7018   Ilyes Choubani   update
2317
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2318
                                    ;if countneg ne 0 and cos(!dustem_psi_ext) gt 0 then specqgrain[testneg] = 0
bffa7018   Ilyes Choubani   update
2319
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2320
2321
                                    ;dustem_plot_mlog,st.polsed.wav,specqgrain,ppositions=position,/overplot,noerase=1,color=use_cols[i],xr=xr,/xlog 
                                    dustem_plot_mlog,1/st.polext.wav,specqgrain,ppositions=position[0],/positive_only,/overplot,noerase=1,color=use_cols[i],xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
bffa7018   Ilyes Choubani   update
2322
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2323
                                endif
bffa7018   Ilyes Choubani   update
2324
                                
bffa7018   Ilyes Choubani   update
2325
                                
9ded3be9   Ilyes Choubani   Display update. F...
2326
2327
2328
                            ENDFOR
                            
                            for i=0L,n_plgns-1 do begin
bffa7018   Ilyes Choubani   update
2329
                                
9ded3be9   Ilyes Choubani   Display update. F...
2330
2331
2332
2333
2334
                                IF isa((*!dustem_plugin).(0).spec) THEN BEGIN
                                    IF total(strsplit((*(*!dustem_plugin).(i).scope),'+',/extract) EQ 'ADD_POLEXT') THEN begin
                                     
                                        ;dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i))[*,1],ppositions=position, /overplot, noerase=1, color=clrs_plgns[i], linestyle=2,xr=xr,/xlog
                                        dustem_plot_mlog,1/st.polext.wav,(*(*!dustem_plugin).(i).spec)[*,1],ppositions=position[0],/positive_only,/overplot,noerase=1, color=clrs_plgns[i], linestyle=2 ,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr      
bffa7018   Ilyes Choubani   update
2335
                                    ENDIF
bffa7018   Ilyes Choubani   update
2336
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
                            endfor
                            
                            IF ct_spec NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).qext).wav)[idx_spec]
                                yy=dustem_interp[idx_spec]
                                ;dustem_plot_mlog,xx,yy,ppositions=position,/overplot, noerase=1, color='red',psym=7,syms=2,xr=xr,/xlog
                                dustem_plot_mlog,1/xx,yy,ppositions=position[0],/positive_only, /overplot, noerase=1, color='Indian Red',psym=7,syms=2,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr 
                            ENDIF
                            
                            IF ct_filt NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).qext).wav)[idx_filt]
                                yy=dustem_interp[idx_filt]
                                ;dustem_plot_mlog,xx,yy,ppositions=position, /overplot, noerase=1, color='red',psym=6,syms=2,xr=xr,/xlog
                                dustem_plot_mlog,1/xx,yy,ppositions=position[0],/positive_only, /overplot, noerase=1, color='red',psym=6,syms=2,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
                            ENDIF
                            
                            dustem_plot_mlog,1/st.polext.wav,dustem_spec,ppositions=position[0],/positive_only,/overplot,noerase=1,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr                                    
bffa7018   Ilyes Choubani   update
2354
                            
bffa7018   Ilyes Choubani   update
2355
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
2356
2357
2358
2359
2360
2361
2362
2363
2364
                                
                    
                    endif
                    
                    ;stop
                    if keyword_set(negative_only) then begin
                        ;stop     
                        testlow=where(dustem_spec LT 0., countmodellow)
                        if testngtv ne 0 or countmodellow ne 0 then begin
bffa7018   Ilyes Choubani   update
2365
                        
9ded3be9   Ilyes Choubani   Display update. F...
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
                            ;Making sure we're plotting in the negative_only plot.
                            dustem_plot_mlog,1/vectw,vectx,ppositions=position[0],/negative_only, noerase=1, color='Indian Red',psym=7,syms=2,xr=xr,/xlog,/ylog,/nodata,xtickformat='(A1)',xtit='',ytickformat='(A1)',yr=yr
                            ;stop    
                            ;Plotting of the spectra of the dust species
                            FOR i=0L,Ngrains-1 DO BEGIN
                                vecto = transpose(((st.polext.(1))[i,*]+(st.polext.(2))[i,*]))
                                vecte = transpose(((st.ext.(1))[i,*]+(st.ext.(2))[i,*]))
                                testneq = where(vecto ne 0,countneq)
                                ;stop
                                if countneq ne 0 then begin 
                                    vecfin = vecto*0.0 ;em_tot can be used here right? 
                                    ;stop
                                    vecfin[testneq] = (vecto[testneq])/vecte[testneq];extra_spec[testneq];(st.sed.em_tot)[testneq];(st.sed.(i+1))[testneq];*fact;(st.sed.(i+1))[testneq] 
                                    ;stop    
                                    polar_ippsi2iqu,vecte*(*!dustem_HCD)/1.0e21,specqgrain,specugrain,vecfin,replicate(!dustem_psi_ext,n_elements(vecfin)) ;temporary solution
                                    
                                    ;dustem_plot_mlog,st.polsed.wav,specqgrain,ppositions=position,/overplot,noerase=1,color=use_cols[i],xr=xr,/xlog 
                                    dustem_plot_mlog,1/st.polext.wav,specqgrain,ppositions=position[0],/negative_only,/overplot,noerase=1,color=use_cols[i],xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
                                endif 
                            ENDFOR
                            ;Plotting of the plugins
                            for i=0L,n_plgns-1 do begin
                                IF isa((*!dustem_plugin).(0).spec) THEN BEGIN
                                
                                    IF total(strsplit((*(*!dustem_plugin).(i).scope),'+',/extract) EQ 'ADD_POLEXT') THEN begin
 
                                        ;dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i))[*,1],ppositions=position, /overplot, noerase=1, color=clrs_plgns[i], linestyle=2,xr=xr,/xlog
                                        dustem_plot_mlog,1/st.polext.wav,(*(*!dustem_plugin).(i).spec)[*,1],ppositions=position[0],/negative_only,/overplot,noerase=1, color=clrs_plgns[i], linestyle=2 ,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr      
                                    ENDIF
                                    
                                ENDIF
                            endfor
                            ;PLotting of the interpolates corresponding to spectrum and filter points
                            IF ct_spec NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).qext).wav)[idx_spec]
                                yy=dustem_interp[idx_spec]
                                ;dustem_plot_mlog,xx,yy,ppositions=position,/overplot, noerase=1, color='red',psym=7,syms=2,xr=xr,/xlog
                                dustem_plot_mlog,1/xx,yy,ppositions=position[0],/negative_only, /overplot, noerase=1, color='Indian Red',psym=7,syms=2,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr 
                            ENDIF
bffa7018   Ilyes Choubani   update
2405
                            
9ded3be9   Ilyes Choubani   Display update. F...
2406
2407
2408
2409
2410
2411
2412
2413
                            IF ct_filt NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).qext).wav)[idx_filt]
                                yy=dustem_interp[idx_filt]
                                ;dustem_plot_mlog,xx,yy,ppositions=position, /overplot, noerase=1, color='red',psym=6,syms=2,xr=xr,/xlog
                                dustem_plot_mlog,1/xx,yy,ppositions=position[0],/negative_only, /overplot, noerase=1, color='red',psym=6,syms=2,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
                            ENDIF
                            ;Plotting of the total dust emission spectrum
                            dustem_plot_mlog,1/st.polext.wav,dustem_spec,ppositions=position[0],/negative_only,/overplot,noerase=1,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr                                    
bffa7018   Ilyes Choubani   update
2414
                        
9ded3be9   Ilyes Choubani   Display update. F...
2415
                        endif
bffa7018   Ilyes Choubani   update
2416
                                
9ded3be9   Ilyes Choubani   Display update. F...
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
                    
                    endif
                                               
                  ;stop             
                endif else begin ;The data points in the plot that remain unchanged.; DO NOT USE AN ELSE HERE. 
                   
                    xyouts,pospltxt[0],pospltxt[1],textoidl('\tau_{QEXT}'),color=0,/normal,charsize=1.3;,charthick=2.0  
                        
                    ;Locating the hidden spectrum and filter data points     
                    ;SADLY I STILL DON'T HAVE A SOLUTION FOR THE PLOTTING OF NULL VALUES.                                   
                   
                    if ct_hdnpts then begin
                        idx_filt_hdn_pstv = where(((*(*!dustem_show).qext).filt_names)(idx_rmv_sed) NE 'SPECTRUM' and ((*(*!dustem_show).qext).values)(idx_rmv_sed) gt 0,ct_filt_hdn_pstv)
                        idx_spec_hdn_pstv = where(((*(*!dustem_show).qext).filt_names)(idx_rmv_sed) EQ 'SPECTRUM' and ((*(*!dustem_show).qext).values)(idx_rmv_sed) gt 0,ct_spec_hdn_pstv)
                        idx_filt_hdn_ngtv = where(((*(*!dustem_show).qext).filt_names)(idx_rmv_sed) NE 'SPECTRUM' and ((*(*!dustem_show).qext).values)(idx_rmv_sed) lt 0,ct_filt_hdn_ngtv)
                        idx_spec_hdn_ngtv = where(((*(*!dustem_show).qext).filt_names)(idx_rmv_sed) EQ 'SPECTRUM' and ((*(*!dustem_show).qext).values)(idx_rmv_sed) lt 0,ct_spec_hdn_ngtv)
                    endif
                    
                    
                    if keyword_set(positive_only) then begin
                        
                        if testpstv ne 0 then begin
                    
                            plotsym, 0
                            
                            
                            if ct_spec ne 0 then begin
                            
                                rms=2.*((*(*!dustem_data).qext).sigma)(idx_spec)/2.
                                ;dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_spec),-((*(*!dustem_data).qsed).values)(idx_spec),ppositions=position,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,/nodata,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                            
                                dustem_plot_mlog,1/((*(*!dustem_data).qext).wav)(idx_spec),((*(*!dustem_data).qext).values)(idx_spec),ppositions=position[0],charsize=1.15,color='Powder Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
2449
                                
9ded3be9   Ilyes Choubani   Display update. F...
2450
2451
2452
2453
2454
                                dustem_plot_mlog,1/((*(*!dustem_data).qext).wav)(idx_spec),((*(*!dustem_data).qext).values)(idx_spec),ppositions=position[0],color='Powder Blue',/positive_only,noerase=1,/overplot,rms=rms,xtit='',charsize=1.15,xtickformat='(A1)',xs=1,psym=16,syms=0.8,xr=xr,/xlog,/ylog,yr=yr,ytickformat='(A1)'     
                                 
                            endif
                            
                            if ct_filt ne 0 then begin
bffa7018   Ilyes Choubani   update
2455
                                
9ded3be9   Ilyes Choubani   Display update. F...
2456
2457
2458
2459
2460
                                rms=2.*((*(*!dustem_data).qext).sigma)(idx_filt)/2.
                               ; dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_filt),-1.*((*(*!dustem_data).qsed).values)(idx_filt),ppositions=position,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,/nodata,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                if ct_spec ne 0 then dustem_plot_mlog,1/((*(*!dustem_data).qext).wav)(idx_filt),((*(*!dustem_data).qext).values)(idx_filt),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr,ytickformat='(A1)'
                                if ct_spec eq 0 then dustem_plot_mlog,1/((*(*!dustem_data).qext).wav)(idx_filt),((*(*!dustem_data).qext).values)(idx_filt),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                dustem_plot_mlog,1/((*(*!dustem_data).qext).wav)(idx_filt),((*(*!dustem_data).qext).values)(idx_filt),ppositions=position[0],color='Dodger Blue',/positive_only,noerase=1,/overplot,rms=rms,xtit='',charsize=1.15,xtickformat='(A1)',xs=1,psym=16,syms=0.8,xr=xr,/xlog,/ylog,yr=yr,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
2461
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2462
2463
2464
2465
2466
2467
2468
2469
2470
                            endif
                            
                            
                            if ct_hdnpts NE 0 then begin
                            
                                if ct_spec_hdn_pstv ne 0 then begin
                                    xx = (((*(*!dustem_show).qext).wav)[idx_rmv_sed])(idx_spec_hdn_pstv)
                                    yy = (((*(*!dustem_show).qext).values)[idx_rmv_sed])(idx_spec_hdn_pstv)
                                    rms=2.*(((*(*!dustem_show).qext).sigma)[idx_rmv_sed])(idx_spec_hdn_pstv)/2.
bffa7018   Ilyes Choubani   update
2471
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2472
2473
                                    dustem_plot_mlog,1/xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,/overplot,charsize=1.15,xtickformat='(A1)',xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr
                                    dustem_plot_mlog,1/xx,yy,ppositions=position[0],/positive_only,noerase=1,color='Black',/overplot,rms=rms,yr=yr,xtickformat='(A1)',xr=xr,xs=1,/xlog,/ylog;,psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
2474
                                
9ded3be9   Ilyes Choubani   Display update. F...
2475
                                endif 
bffa7018   Ilyes Choubani   update
2476
                                
9ded3be9   Ilyes Choubani   Display update. F...
2477
                                if ct_filt_hdn_pstv ne 0 then begin
bffa7018   Ilyes Choubani   update
2478
                                
9ded3be9   Ilyes Choubani   Display update. F...
2479
2480
2481
                                    xx = (((*(*!dustem_show).qext).wav)[idx_rmv_sed])(idx_filt_hdn_pstv)
                                    yy = (((*(*!dustem_show).qext).values)[idx_rmv_sed])(idx_filt_hdn_pstv)
                                    rms=2.*(((*(*!dustem_show).qext).sigma)[idx_rmv_sed])(idx_filt_hdn_pstv)/2.
bffa7018   Ilyes Choubani   update
2482
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2483
2484
                                    dustem_plot_mlog,1/xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,/overplot,charsize=1.15,xtickformat='(A1)',xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr   
                                    dustem_plot_mlog,1/xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,color='Black',/overplot,rms=rms,xr=xr,yr=yr,xtickformat='(A1)',/xlog,/ylog;,psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
2485
                                
9ded3be9   Ilyes Choubani   Display update. F...
2486
                                endif
bffa7018   Ilyes Choubani   update
2487
                                
9ded3be9   Ilyes Choubani   Display update. F...
2488
                            endif
bffa7018   Ilyes Choubani   update
2489
2490
                            
                            
9ded3be9   Ilyes Choubani   Display update. F...
2491
                        endif else begin
bffa7018   Ilyes Choubani   update
2492
2493
                        
                        
9ded3be9   Ilyes Choubani   Display update. F...
2494
2495
                            if ct_spec ne 0 then dustem_plot_mlog,1/((*(*!dustem_data).qext).wav)(idx_spec),-((*(*!dustem_data).qext).values)(idx_spec),ppositions=position[0],charsize=1.15,/nodata,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                
bffa7018   Ilyes Choubani   update
2496
                            
9ded3be9   Ilyes Choubani   Display update. F...
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
                            if ct_filt ne 0 and ct_spec eq 0 then  dustem_plot_mlog,1/((*(*!dustem_data).qext).wav)(idx_filt),-((*(*!dustem_data).qext).values)(idx_filt),/nodata,ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                            

                        endelse                           
                    
                    endif 
                    
                    
                    if keyword_set(negative_only) then begin
                        
                        if testngtv ne 0 then begin
                             
                             plotsym, 0
                             
                             
                             if ct_spec ne 0 then begin
                             
                                 rms=2.*((*(*!dustem_data).qext).sigma)(idx_spec)/2.
                                 ;dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_spec),-((*(*!dustem_data).qsed).values)(idx_spec),ppositions=position,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,/nodata,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                ; if ct_spec_hdn_ngtv ne 0 then dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_spec),((*(*!dustem_data).qsed).values)(idx_spec),ppositions=position,/overplot,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr else begin
                                 dustem_plot_mlog,1/((*(*!dustem_data).qext).wav)(idx_spec),((*(*!dustem_data).qext).values)(idx_spec),ppositions=position[0],charsize=1.15,color='Powder Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                     
                                 ;endelse;,ytickformat='(A1)'
                                 dustem_plot_mlog,1/((*(*!dustem_data).qext).wav)(idx_spec),((*(*!dustem_data).qext).values)(idx_spec),ppositions=position[0],color='Powder Blue',/negative_only,noerase=1,/overplot,rms=rms,xtit='',charsize=1.15,xtickformat='(A1)',xs=1,xr=xr,/xlog,/ylog,yr=yr,ytickformat='(A1)';,psym=16,syms=0.8     
                                                                          
                             endif
                             
                             if ct_filt ne 0 then begin
bffa7018   Ilyes Choubani   update
2525
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2526
2527
2528
2529
2530
2531
                                 rms=2.*((*(*!dustem_data).qext).sigma)(idx_filt)/2.
                                ; dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_filt),-1.*((*(*!dustem_data).qsed).values)(idx_filt),ppositions=position,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,/nodata,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                 ;if ct_filt_hdn_ngtv ne 0 then  dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_filt),((*(*!dustem_data).qsed).values)(idx_filt),ppositions=position,charsize=1.15,color='Dodger Blue',/overplot,psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr else begin
                                 if ct_spec ne 0 then dustem_plot_mlog,1/((*(*!dustem_data).qext).wav)(idx_filt),((*(*!dustem_data).qext).values)(idx_filt),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr,ytickformat='(A1)'
                                 if ct_spec eq 0 then dustem_plot_mlog,1/((*(*!dustem_data).qext).wav)(idx_filt),((*(*!dustem_data).qext).values)(idx_filt),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr
                                 ;endelse ;,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
2532
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2533
                                 dustem_plot_mlog,1/((*(*!dustem_data).qext).wav)(idx_filt),((*(*!dustem_data).qext).values)(idx_filt),ppositions=position[0],color='Dodger Blue',/negative_only,noerase=1,/overplot,rms=rms,xtit='',charsize=1.15,xtickformat='(A1)',xs=1,xr=xr,/xlog,/ylog,yr=yr,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
2534
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2535
2536
2537
2538
2539
2540
2541
2542
                             endif
                             
                             if ct_hdnpts then begin
                             
                                 if ct_spec_hdn_ngtv ne 0 then begin
                                     xx = (((*(*!dustem_show).qext).wav)[idx_rmv_sed])(idx_spec_hdn_ngtv)
                                     yy = (((*(*!dustem_show).qext).values)[idx_rmv_sed])(idx_spec_hdn_ngtv)
                                     rms=2.*(((*(*!dustem_show).qext).sigma)[idx_rmv_sed])(idx_spec_hdn_ngtv)/2.
bffa7018   Ilyes Choubani   update
2543
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2544
2545
2546
2547
                                     dustem_plot_mlog,1/xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,charsize=1.15,/overplot,xtickformat='(A1)',xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr
                                     dustem_plot_mlog,1/xx,yy,ppositions=position[0],/negative_only,noerase=1,color='Black',/overplot,rms=rms,yr=yr,xtickformat='(A1)',xr=xr,xs=1,/xlog,/ylog;,psym=8,syms=0.8
                                 
                                 endif 
bffa7018   Ilyes Choubani   update
2548
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2549
                                 if ct_filt_hdn_ngtv ne 0 then begin
bffa7018   Ilyes Choubani   update
2550
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2551
2552
2553
                                     xx = (((*(*!dustem_show).qext).wav)[idx_rmv_sed])(idx_filt_hdn_ngtv)
                                     yy = (((*(*!dustem_show).qext).values)[idx_rmv_sed])(idx_filt_hdn_ngtv)
                                     rms=2.*(((*(*!dustem_show).qext).sigma)[idx_rmv_sed])(idx_filt_hdn_ngtv)/2.
bffa7018   Ilyes Choubani   update
2554
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
                                     dustem_plot_mlog,1/xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,charsize=1.15,/overplot,xtickformat='(A1)',xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr   
                                     dustem_plot_mlog,1/xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,color='Black',/overplot,rms=rms,xr=xr,yr=yr,xtickformat='(A1)',/xlog,/ylog;,psym=8,syms=0.8
                                 
                                 endif
                            
                             endif 
                        
                        endif else begin
                        
                            if ct_spec ne 0 then dustem_plot_mlog,((*(*!dustem_data).qext).wav)(idx_spec),-((*(*!dustem_data).qext).values)(idx_spec),ppositions=position[0],charsize=1.15,/nodata,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
2565
                                
bffa7018   Ilyes Choubani   update
2566
                            
9ded3be9   Ilyes Choubani   Display update. F...
2567
                            if ct_filt ne 0 and ct_spec eq 0 then  dustem_plot_mlog,((*(*!dustem_data).qext).wav)(idx_filt),-((*(*!dustem_data).qext).values)(idx_filt),/nodata,ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
2568
                            
9ded3be9   Ilyes Choubani   Display update. F...
2569
2570
2571
                        endelse
            
                    endif
bffa7018   Ilyes Choubani   update
2572
2573
                
                endelse 
9ded3be9   Ilyes Choubani   Display update. F...
2574
2575
                    
            end
bffa7018   Ilyes Choubani   update
2576
            
9ded3be9   Ilyes Choubani   Display update. F...
2577
            'UEXT': begin
bffa7018   Ilyes Choubani   update
2578
                
9ded3be9   Ilyes Choubani   Display update. F...
2579
2580
2581
               ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.uext.xr
                yr = !dustem_plot_range.uext.yr
bffa7018   Ilyes Choubani   update
2582
                    
9ded3be9   Ilyes Choubani   Display update. F...
2583
2584
2585
2586
2587
2588
2589
                vectw=DINDGEN(1001)*(alog10(1E7) - alog10(1E5))/(1000 - 1L) + alog10(1E5)
                vectw=10^vectw[1:*]
                vectw=[wavs,vectw]
                vectx=vectw*0+1
            
                varvar=where((*(*!dustem_data).uext).values GT 0, testpstv)
                varvar=where((*(*!dustem_data).uext).values LT 0, testngtv)
bffa7018   Ilyes Choubani   update
2590
                
9ded3be9   Ilyes Choubani   Display update. F...
2591
2592
2593
                ;stop
                idx_filt=where((*(*!dustem_data).uext).filt_names NE 'SPECTRUM', ct_filt)
                idx_spec=where((*(*!dustem_data).uext).filt_names EQ 'SPECTRUM' , ct_spec)
bffa7018   Ilyes Choubani   update
2594
                
9ded3be9   Ilyes Choubani   Display update. F...
2595
                ;Plotting of frequency axis
bffa7018   Ilyes Choubani   update
2596
                
9ded3be9   Ilyes Choubani   Display update. F...
2597
2598
2599
                ;Locating all the hidden data points (spectrum+filter)
                match2,((*(*!dustem_data).uext).wav),((*(*!dustem_show).uext).wav),show_sedpts,fit_sedpts ;only show_sedpts is needed
                idx_rmv_sed=where(fit_sedpts eq -1, ct_hdnpts) ; indices of the points to hide
24fe128f   Ilyes Choubani   Removed forced pl...
2600
2601
2602
2603
                
                
                If n_elements(position) GT 1 THEN BEGIN        
                    if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
9ded3be9   Ilyes Choubani   Display update. F...
2604
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2605
2606
                        ;Making sure we're placed in the right plot to refresh. Here normalized plot for QEXT.
                        cgplot,1/vectw,vectx,/nodata,/xlog,xs=1,pos=position[1],noerase=1,charsize=1.15,xtickformat='(A1)',ytickformat='(A1)',color='Powder Blue',xr=xr,xtit='',yr=[0.0,2.0],psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
2607
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
                        IF ct_spec NE 0 THEN BEGIN
                            
                            xx=((*(*!dustem_data).uext).wav)[idx_spec]
                            yy=dustem_interp[idx_spec]
                            rms=2.*((*(*!dustem_data).uext).sigma)(idx_spec)/2.
                            
                            indzero = where(yy NE 0, ct_zero)
                            If ct_zero NE 0 THEN BEGIN
                                cgoplot,(1/xx)[indzero],(((*(*!dustem_data).uext).values)(idx_spec))[indzero]/yy[indzero],pos=position[1],psym=16,color='Powder Blue',syms=0.8,noerase=1 
                                cgerrplot,(1/((*(*!dustem_data).uext).wav)(idx_spec))[indzero],((((*(*!dustem_data).uext).values)[idx_spec])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).uext).values)[idx_spec])[indzero]+rms[indzero])/yy[indzero],color='Powder Blue'
                            ENDIF
                        ENDIF
bffa7018   Ilyes Choubani   update
2620
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
                        IF ct_filt NE 0 THEN BEGIN
                            ;stop
                            xx=((*(*!dustem_data).uext).wav)[idx_filt]
                            yy=dustem_interp[idx_filt]
                            rms=2.*((*(*!dustem_data).uext).sigma)(idx_filt)/2. 
                            indzero = where(yy NE 0, ct_zero)
                            IF ct_zero NE 0 THEN BEGIN
                                cgoplot,(1/xx)[indzero],(((*(*!dustem_data).uext).values)(idx_filt))[indzero]/yy[indzero],pos=position[1],psym=16,color='Dodger Blue',syms=0.8,noerase=1 
                                cgerrplot,(1/((*(*!dustem_data).uext).wav)(idx_filt))[indzero],((((*(*!dustem_data).uext).values)[idx_filt])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).uext).values)[idx_filt])[indzero]+rms[indzero])/yy[indzero],color='Dodger Blue' 
                            ENDIF
bffa7018   Ilyes Choubani   update
2631
                        ENDIF
24fe128f   Ilyes Choubani   Removed forced pl...
2632
2633
2634
      
                        
                    endif else begin ;The data points in the plot that remain unchanged
bffa7018   Ilyes Choubani   update
2635
                        ;stop
24fe128f   Ilyes Choubani   Removed forced pl...
2636
2637
2638
2639
2640
                        
                        xtit=textoidl('1/\lambda (\mum^{-1})')
                        ;if !run_pol then xtit = ''
                        cgplot,1/vectw,vectx,/xlog,xs=1,pos=position[1],noerase=1,color='Black',xr=xr,xtit=xtit,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0
                        xyouts,pospltxt_n[0],pospltxt_n[1],textoidl('norm'),color=0,/normal,charsize=1.1
bffa7018   Ilyes Choubani   update
2641
                    
24fe128f   Ilyes Choubani   Removed forced pl...
2642
2643
2644
                    endelse
                ENDIF
                      
9ded3be9   Ilyes Choubani   Display update. F...
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
                if keyword_set(refresh) then begin ;The data points in the plot are being refreshed
                    
                    if keyword_set(positive_only) then begin
                        testsup=where(dustem_spec GT 0., countmodelsup) 
                         
                        if testpstv ne 0 or countmodelsup ne 0 then begin
                            
                            dustem_plot_mlog,1/vectw,vectx,ppositions=position[0],/positive_only, noerase=1, color='Indian Red',psym=7,syms=2,xr=xr,/xlog,/ylog,/nodata,xtickformat='(A1)',xtit='',ytickformat='(A1)',yr=yr
                            
                            FOR i=0L,Ngrains-1 DO BEGIN
                            
                                vecto = transpose(((st.polext.(1))[i,*]+(st.polext.(2))[i,*]))
                                vecte = transpose(((st.ext.(1))[i,*]+(st.ext.(2))[i,*]))
bffa7018   Ilyes Choubani   update
2658
                                
9ded3be9   Ilyes Choubani   Display update. F...
2659
2660
2661
2662
2663
2664
2665
2666
2667
                                testneq = where( vecto ne 0,countneq)
                                ;stop
                                if countneq ne 0 then begin 
                                    vecfin = vecto*0.0 ;em_tot can be used here right? 
                                    ;stop
                                    vecfin[testneq] = (vecto[testneq])/vecte[testneq];extra_spec[testneq];(st.sed.em_tot)[testneq];(st.sed.(i+1))[testneq];*fact;(st.sed.(i+1))[testneq]
                                    ;stop
                                    ;polar_ippsi2iqu,st.sed.(i+1)*fact,specqgrain,specugrain,st.polsed.(i+1)*fact/spec,replicate(!dustem_psi,n_elements(spec)) ;temporary solution
                                    polar_ippsi2iqu,vecte*(*!dustem_HCD)/1.0e21,specqgrain,specugrain,vecfin,replicate(!dustem_psi_ext,n_elements(vecfin)) ;temporary solution
bffa7018   Ilyes Choubani   update
2668
                                    
bffa7018   Ilyes Choubani   update
2669
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2670
2671
                                    ;dustem_plot_mlog,st.polsed.wav,specqgrain,ppositions=position,/overplot,noerase=1,color=use_cols[i],xr=xr,/xlog 
                                    dustem_plot_mlog,1/st.polext.wav,specugrain,ppositions=position[0],/positive_only,/overplot,noerase=1,color=use_cols[i],xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
bffa7018   Ilyes Choubani   update
2672
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2673
2674
2675
2676
2677
                                endif
                                ;stop
                            ENDFOR
                            
                            for i=0L,n_plgns-1 do begin
bffa7018   Ilyes Choubani   update
2678
                                
9ded3be9   Ilyes Choubani   Display update. F...
2679
2680
2681
2682
2683
                                IF isa((*!dustem_plugin).(0).spec) THEN BEGIN
                                    IF total(strsplit((*(*!dustem_plugin).(i).scope),'+',/extract) EQ 'ADD_POLEXT') THEN begin
                                     
                                        ;dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i))[*,1],ppositions=position, /overplot, noerase=1, color=clrs_plgns[i], linestyle=2,xr=xr,/xlog
                                        dustem_plot_mlog,1/st.polext.wav,(*(*!dustem_plugin).(i).spec)[*,2],ppositions=position[0],/positive_only,/overplot,noerase=1, color=clrs_plgns[i], linestyle=2 ,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr      
bffa7018   Ilyes Choubani   update
2684
                                    ENDIF
bffa7018   Ilyes Choubani   update
2685
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2686
                            endfor
bffa7018   Ilyes Choubani   update
2687
                            
9ded3be9   Ilyes Choubani   Display update. F...
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
                            IF ct_spec NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).uext).wav)[idx_spec]
                                yy=dustem_interp[idx_spec]
                                ;dustem_plot_mlog,xx,yy,ppositions=position,/overplot, noerase=1, color='red',psym=7,syms=2,xr=xr,/xlog
                                dustem_plot_mlog,1/xx,yy,ppositions=position[0],/positive_only, /overplot, noerase=1, color='Indian Red',psym=7,syms=2,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr 
                            ENDIF
                            
                            IF ct_filt NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).uext).wav)[idx_filt]
                                yy=dustem_interp[idx_filt]
                                ;dustem_plot_mlog,xx,yy,ppositions=position, /overplot, noerase=1, color='red',psym=6,syms=2,xr=xr,/xlog
                                dustem_plot_mlog,1/xx,yy,ppositions=position[0],/positive_only, /overplot, noerase=1, color='red',psym=6,syms=2,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
                            ENDIF
                            
                            dustem_plot_mlog,1/st.polext.wav,dustem_spec,ppositions=position[0],/positive_only,/overplot,noerase=1,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr                                    
bffa7018   Ilyes Choubani   update
2703
2704
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
                                
                    
                    endif
                    
                    ;stop
                    if keyword_set(negative_only) then begin
                        ;stop 
                        testlow=where(dustem_spec LT 0., countmodellow)     
                        if testngtv ne 0 or countmodellow ne 0 then begin
                            
                            dustem_plot_mlog,1/vectw,vectx,ppositions=position[0],/negative_only, noerase=1, color='Indian Red',psym=7,syms=2,xr=xr,/xlog,/ylog,/nodata,xtickformat='(A1)',xtit='',ytickformat='(A1)',yr=yr
                                
                            ;Plotting of the spectra of the dust species
                            FOR i=0L,Ngrains-1 DO BEGIN
                                vecto = transpose(((st.polext.(1))[i,*]+(st.polext.(2))[i,*]))
                                vecte = transpose(((st.ext.(1))[i,*]+(st.ext.(2))[i,*]))
                                testneq = where( vecto ne 0,countneq)
                                ;stop
                                if countneq ne 0 then begin 
                                    vecfin = vecto*0.0 ;em_tot can be used here right? 
bffa7018   Ilyes Choubani   update
2725
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
                                    vecfin[testneq] = vecto[testneq]/vecte[testneq];extra_spec[testneq];(st.sed.em_tot)[testneq];(st.sed.(i+1))[testneq];*fact;(st.sed.(i+1))[testneq] 
                                    ;stop    
                                    polar_ippsi2iqu,vecte*(*!dustem_HCD)/1.0e21,specqgrain,specugrain,vecfin,replicate(!dustem_psi_ext,n_elements(vecfin)) ;temporary solution
                                    ;stop
                                    ;dustem_plot_mlog,st.polsed.wav,specqgrain,ppositions=position,/overplot,noerase=1,color=use_cols[i],xr=xr,/xlog 
                                    dustem_plot_mlog,1/st.polext.wav,specugrain,ppositions=position[0],/negative_only,/overplot,noerase=1,color=use_cols[i],xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
                                endif 
                            ENDFOR
                            ;Plotting of the plugins
                            for i=0L,n_plgns-1 do begin
                                IF isa((*!dustem_plugin).(0).spec) THEN BEGIN
                                
                                    IF total(strsplit((*(*!dustem_plugin).(i).scope),'+',/extract) EQ 'ADD_POLEXT') THEN begin
 
                                        ;dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i))[*,1],ppositions=position, /overplot, noerase=1, color=clrs_plgns[i], linestyle=2,xr=xr,/xlog
                                        dustem_plot_mlog,1/st.polext.wav,(*(*!dustem_plugin).(i).spec)[*,2],ppositions=position[0],/negative_only,/overplot,noerase=1, color=clrs_plgns[i], linestyle=2 ,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr      
bffa7018   Ilyes Choubani   update
2742
                                    ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2743
                                    
bffa7018   Ilyes Choubani   update
2744
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2745
2746
2747
2748
2749
2750
2751
2752
                            endfor
                            ;PLotting of the interpolates corresponding to spectrum and filter points
                            IF ct_spec NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).uext).wav)[idx_spec]
                                yy=dustem_interp[idx_spec]
                                ;dustem_plot_mlog,xx,yy,ppositions=position,/overplot, noerase=1, color='red',psym=7,syms=2,xr=xr,/xlog
                                dustem_plot_mlog,1/xx,yy,ppositions=position[0],/negative_only, /overplot, noerase=1, color='Indian Red',psym=7,syms=2,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr 
                            ENDIF
bffa7018   Ilyes Choubani   update
2753
                            
9ded3be9   Ilyes Choubani   Display update. F...
2754
2755
2756
2757
2758
2759
2760
2761
                            IF ct_filt NE 0 THEN BEGIN
                                xx=((*(*!dustem_data).uext).wav)[idx_filt]
                                yy=dustem_interp[idx_filt]
                                ;dustem_plot_mlog,xx,yy,ppositions=position, /overplot, noerase=1, color='red',psym=6,syms=2,xr=xr,/xlog
                                dustem_plot_mlog,1/xx,yy,ppositions=position[0],/negative_only, /overplot, noerase=1, color='red',psym=6,syms=2,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr
                            ENDIF
                            ;Plotting of the total dust emission spectrum
                            dustem_plot_mlog,1/st.polext.wav,dustem_spec,ppositions=position[0],/negative_only,/overplot,noerase=1,xr=xr,/xlog,/ylog,ytickformat='(A1)',yr=yr                                    
bffa7018   Ilyes Choubani   update
2762
2763
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
                                
                    
                    endif
                                               
                  ;stop             
                endif else begin ;The data points in the plot that remain unchanged.; DO NOT USE AN ELSE HERE. 
                    ;stop
                    ;cgaxis, xaxis=1,xlog=1, xs=1,charsize=1.5,xtickformat='(A1)'
                    xyouts,pospltxt[0],pospltxt[1],textoidl('\tau_{UEXT}'),color=0,/normal,charsize=1.3;,charthick=2.0  
                    ;if ct_hdnpts ne 0 then begin ;Hidden data points are present 
                        
                    ;Locating the hidden spectrum and filter data points     
                    ;SADLY I STILL DON'T HAVE A SOLUTION FOR THE PLOTTING OF NULL VALUES.                                   
                    ;idx_filt_hdn = where(((*(*!dustem_show).qsed).filt_names)(idx_rmv_sed) NE 'SPECTRUM',ct_filt_hdn)
                    ;idx_spec_hdn = where(((*(*!dustem_show).qsed).filt_names)(idx_rmv_sed) EQ 'SPECTRUM',ct_spec_hdn)
                    if ct_hdnpts then begin
                        idx_filt_hdn_pstv = where(((*(*!dustem_show).uext).filt_names)(idx_rmv_sed) NE 'SPECTRUM' and ((*(*!dustem_show).uext).values)(idx_rmv_sed) gt 0,ct_filt_hdn_pstv)
                        idx_spec_hdn_pstv = where(((*(*!dustem_show).uext).filt_names)(idx_rmv_sed) EQ 'SPECTRUM' and ((*(*!dustem_show).uext).values)(idx_rmv_sed) gt 0,ct_spec_hdn_pstv)
                        idx_filt_hdn_ngtv = where(((*(*!dustem_show).uext).filt_names)(idx_rmv_sed) NE 'SPECTRUM' and ((*(*!dustem_show).uext).values)(idx_rmv_sed) lt 0,ct_filt_hdn_ngtv)
                        idx_spec_hdn_ngtv = where(((*(*!dustem_show).uext).filt_names)(idx_rmv_sed) EQ 'SPECTRUM' and ((*(*!dustem_show).uext).values)(idx_rmv_sed) lt 0,ct_spec_hdn_ngtv)
                    endif
                    
                    
                    if keyword_set(positive_only) then begin
bffa7018   Ilyes Choubani   update
2788
                        
bffa7018   Ilyes Choubani   update
2789
                            
9ded3be9   Ilyes Choubani   Display update. F...
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
                            
                            if ct_spec ne 0 then begin
                            
                                rms=2.*((*(*!dustem_data).uext).sigma)(idx_spec)/2.
                                ;dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_spec),-((*(*!dustem_data).qsed).values)(idx_spec),ppositions=position,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,/nodata,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                dustem_plot_mlog,1/((*(*!dustem_data).uext).wav)(idx_spec),((*(*!dustem_data).uext).values)(idx_spec),ppositions=position[0],charsize=1.15,color='Powder Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                dustem_plot_mlog,1/((*(*!dustem_data).uext).wav)(idx_spec),((*(*!dustem_data).uext).values)(idx_spec),ppositions=position[0],color='Powder Blue',/positive_only,noerase=1,/overplot,rms=rms,xtit='',charsize=1.15,xtickformat='(A1)',xs=1,psym=16,syms=0.8,xr=xr,/xlog,/ylog,yr=yr,ytickformat='(A1)'     
                             
                            endif
                            
                            if ct_filt ne 0 then begin
bffa7018   Ilyes Choubani   update
2801
                                
9ded3be9   Ilyes Choubani   Display update. F...
2802
2803
2804
2805
2806
                                rms=2.*((*(*!dustem_data).uext).sigma)(idx_filt)/2.
                               ; dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_filt),-1.*((*(*!dustem_data).qsed).values)(idx_filt),ppositions=position,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,/nodata,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                if ct_spec ne 0 then dustem_plot_mlog,1/((*(*!dustem_data).uext).wav)(idx_filt),((*(*!dustem_data).uext).values)(idx_filt),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr,ytickformat='(A1)'
                                if ct_spec eq 0 then dustem_plot_mlog,1/((*(*!dustem_data).uext).wav)(idx_filt),((*(*!dustem_data).uext).values)(idx_filt),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                dustem_plot_mlog,1/((*(*!dustem_data).uext).wav)(idx_filt),((*(*!dustem_data).uext).values)(idx_filt),ppositions=position[0],color='Dodger Blue',/positive_only,noerase=1,/overplot,rms=rms,xtit='',charsize=1.15,xtickformat='(A1)',xs=1,psym=16,syms=0.8,xr=xr,/xlog,/ylog,yr=yr,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
2807
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2808
2809
2810
2811
2812
2813
                            endif
                            
                            
                            if testpstv ne 0 then begin
                            
                                plotsym, 0
bffa7018   Ilyes Choubani   update
2814
                                
9ded3be9   Ilyes Choubani   Display update. F...
2815
                                if ct_hdnpts NE 0 then begin
bffa7018   Ilyes Choubani   update
2816
                                
9ded3be9   Ilyes Choubani   Display update. F...
2817
2818
2819
2820
2821
2822
2823
                                    if ct_spec_hdn_pstv ne 0 then begin
                                        xx = (((*(*!dustem_show).uext).wav)[idx_rmv_sed])(idx_spec_hdn_pstv)
                                        yy = (((*(*!dustem_show).uext).values)[idx_rmv_sed])(idx_spec_hdn_pstv)
                                        rms=2.*(((*(*!dustem_show).uext).sigma)[idx_rmv_sed])(idx_spec_hdn_pstv)/2.
                                        
                                        dustem_plot_mlog,1/xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,charsize=1.15,/overplot,xtickformat='(A1)',xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr
                                        dustem_plot_mlog,1/xx,yy,ppositions=position[0],/positive_only,noerase=1,color='Black',/overplot,rms=rms,yr=yr,xtickformat='(A1)',xr=xr,xs=1,/xlog,/ylog;,psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
2824
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2825
                                    endif 
bffa7018   Ilyes Choubani   update
2826
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2827
2828
2829
2830
2831
                                    if ct_filt_hdn_pstv ne 0 then begin
                                    
                                        xx = (((*(*!dustem_show).uext).wav)[idx_rmv_sed])(idx_filt_hdn_pstv)
                                        yy = (((*(*!dustem_show).uext).values)[idx_rmv_sed])(idx_filt_hdn_pstv)
                                        rms=2.*(((*(*!dustem_show).uext).sigma)[idx_rmv_sed])(idx_filt_hdn_pstv)/2.
bffa7018   Ilyes Choubani   update
2832
                                        
9ded3be9   Ilyes Choubani   Display update. F...
2833
2834
2835
                                        dustem_plot_mlog,1/xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,charsize=1.15,/overplot,xtickformat='(A1)',xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr   
                                        dustem_plot_mlog,1/xx,yy,ppositions=position[0],/positive_only,xs=1,noerase=1,color='Black',/overplot,rms=rms,xr=xr,yr=yr,xtickformat='(A1)',/xlog,/ylog;,psym=8,syms=0.8
                                    
bffa7018   Ilyes Choubani   update
2836
                                    endif
bffa7018   Ilyes Choubani   update
2837
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2838
2839
2840
2841
                                endif
                        endif else begin
                            
                            if ct_spec ne 0 then dustem_plot_mlog,1/((*(*!dustem_data).uext).wav)(idx_spec),((*(*!dustem_data).uext).values)(idx_spec),ppositions=position[0],charsize=1.15,/nodata,color='Powder Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
2842
                                
bffa7018   Ilyes Choubani   update
2843
                            
9ded3be9   Ilyes Choubani   Display update. F...
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
                            if ct_filt ne 0 and ct_spec eq 0 then  dustem_plot_mlog,1/((*(*!dustem_data).uext).wav)(idx_filt),-((*(*!dustem_data).uext).values)(idx_filt),/nodata,ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/positive_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                               
                            
                        endelse                           
                    
                    
                    endif 
                    
                    
                    if keyword_set(negative_only) then begin
                        
                        if testngtv ne 0 then begin
                             
                             plotsym, 0
                             
                             
                             if ct_spec ne 0 then begin
bffa7018   Ilyes Choubani   update
2861
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
                                 rms=2.*((*(*!dustem_data).uext).sigma)(idx_spec)/2.
                                 ;dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_spec),-((*(*!dustem_data).qsed).values)(idx_spec),ppositions=position,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,/nodata,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                ; if ct_spec_hdn_ngtv ne 0 then dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_spec),((*(*!dustem_data).qsed).values)(idx_spec),ppositions=position,/overplot,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr else begin
                                 dustem_plot_mlog,1/((*(*!dustem_data).uext).wav)(idx_spec),((*(*!dustem_data).uext).values)(idx_spec),ppositions=position[0],charsize=1.15,color='Powder Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                 ;endelse;,ytickformat='(A1)'
                                 dustem_plot_mlog,1/((*(*!dustem_data).uext).wav)(idx_spec),((*(*!dustem_data).uext).values)(idx_spec),ppositions=position[0],color='Powder Blue',/negative_only,noerase=1,/overplot,rms=rms,xtit='',charsize=1.15,xtickformat='(A1)',xs=1,xr=xr,/xlog,/ylog,yr=yr,ytickformat='(A1)';,psym=16,syms=0.8     
                              
                             endif
                             
                             if ct_filt ne 0 then begin
bffa7018   Ilyes Choubani   update
2872
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2873
2874
2875
2876
2877
2878
                                 rms=2.*((*(*!dustem_data).uext).sigma)(idx_filt)/2.
                                ; dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_filt),-1.*((*(*!dustem_data).qsed).values)(idx_filt),ppositions=position,charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,/nodata,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                 ;if ct_filt_hdn_ngtv ne 0 then  dustem_plot_mlog,((*(*!dustem_data).qsed).wav)(idx_filt),((*(*!dustem_data).qsed).values)(idx_filt),ppositions=position,charsize=1.15,color='Dodger Blue',/overplot,psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr else begin
                                 if ct_spec ne 0 then dustem_plot_mlog,1/((*(*!dustem_data).uext).wav)(idx_filt),((*(*!dustem_data).uext).values)(idx_filt),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr,ytickformat='(A1)'
                                 if ct_spec eq 0 then dustem_plot_mlog,1/((*(*!dustem_data).uext).wav)(idx_filt),((*(*!dustem_data).uext).values)(idx_filt),ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                 ;endelse ;,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
2879
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2880
                                 dustem_plot_mlog,1/((*(*!dustem_data).uext).wav)(idx_filt),((*(*!dustem_data).uext).values)(idx_filt),ppositions=position[0],color='Dodger Blue',/negative_only,noerase=1,/overplot,rms=rms,xtit='',charsize=1.15,xtickformat='(A1)',xs=1,xr=xr,/xlog,/ylog,yr=yr,ytickformat='(A1)'
bffa7018   Ilyes Choubani   update
2881
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2882
2883
2884
2885
2886
2887
2888
2889
                             endif 
                             
                             if ct_hdnpts NE 0 then begin
                             
                                 if ct_spec_hdn_ngtv ne 0 then begin
                                     xx = (((*(*!dustem_show).uext).wav)[idx_rmv_sed])(idx_spec_hdn_ngtv)
                                     yy = (((*(*!dustem_show).uext).values)[idx_rmv_sed])(idx_spec_hdn_ngtv)
                                     rms=2.*(((*(*!dustem_show).uext).sigma)[idx_rmv_sed])(idx_spec_hdn_ngtv)/2.
bffa7018   Ilyes Choubani   update
2890
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2891
2892
                                     dustem_plot_mlog,1/xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,charsize=1.15,/overplot,xtickformat='(A1)',xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr
                                     dustem_plot_mlog,1/xx,yy,ppositions=position[0],/negative_only,noerase=1,color='Black',/overplot,rms=rms,yr=yr,xtickformat='(A1)',xr=xr,xs=1,/xlog,/ylog;,psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
2893
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2894
2895
2896
2897
2898
2899
2900
                                 endif 
                                 
                                 if ct_filt_hdn_ngtv ne 0 then begin
                                 
                                     xx = (((*(*!dustem_show).uext).wav)[idx_rmv_sed])(idx_filt_hdn_ngtv)
                                     yy = (((*(*!dustem_show).uext).values)[idx_rmv_sed])(idx_filt_hdn_ngtv)
                                     rms=2.*(((*(*!dustem_show).uext).sigma)[idx_rmv_sed])(idx_filt_hdn_ngtv)/2.
bffa7018   Ilyes Choubani   update
2901
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2902
2903
2904
                                     dustem_plot_mlog,1/xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,charsize=1.15,/overplot,xtickformat='(A1)',xr=xr,color='Black',psym=16,syms=0.8,/xlog,/ylog,yr=yr   
                                     dustem_plot_mlog,1/xx,yy,ppositions=position[0],/negative_only,xs=1,noerase=1,color='Black',/overplot,rms=rms,xr=xr,yr=yr,xtickformat='(A1)',/xlog,/ylog;,psym=8,syms=0.8
                                 
bffa7018   Ilyes Choubani   update
2905
2906
                                 endif
                            
9ded3be9   Ilyes Choubani   Display update. F...
2907
                             endif
bffa7018   Ilyes Choubani   update
2908
                        
9ded3be9   Ilyes Choubani   Display update. F...
2909
2910
2911
2912
2913
2914
2915
                        endif else begin
                            
                            if ct_spec ne 0 then dustem_plot_mlog,1/((*(*!dustem_data).uext).wav)(idx_spec),-((*(*!dustem_data).uext).values)(idx_spec),ppositions=position[0],charsize=1.15,/nodata,color='Powder Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                                
                            
                            if ct_filt ne 0 and ct_spec eq 0 then  dustem_plot_mlog,1/((*(*!dustem_data).uext).wav)(idx_filt),-((*(*!dustem_data).uext).values)(idx_filt),/nodata,ppositions=position[0],charsize=1.15,color='Dodger Blue',psym=16,syms=0.8,xs=1,xr=xr,noerase=1,/negative_only,xtickformat='(A1)',xtit='',/xlog,/ylog,yr=yr;,ytickformat='(A1)'
                            
bffa7018   Ilyes Choubani   update
2916
                    
9ded3be9   Ilyes Choubani   Display update. F...
2917
2918
2919
                        endelse
                        ;stop
                    endif
bffa7018   Ilyes Choubani   update
2920
2921
                
                endelse 
9ded3be9   Ilyes Choubani   Display update. F...
2922
2923
              
            end
bffa7018   Ilyes Choubani   update
2924
            
9ded3be9   Ilyes Choubani   Display update. F...
2925
            'PARAMETERS':begin ;needs the followingd data (errors+res+formats)
bffa7018   Ilyes Choubani   update
2926
                
9ded3be9   Ilyes Choubani   Display update. F...
2927
                p_dim = dustem_interp
bffa7018   Ilyes Choubani   update
2928
                
9ded3be9   Ilyes Choubani   Display update. F...
2929
                Npar=n_elements(p_dim)
bffa7018   Ilyes Choubani   update
2930
                
9ded3be9   Ilyes Choubani   Display update. F...
2931
                if keyword_set(refresh) then begin ;data in the parameter window that is being refreshed
bffa7018   Ilyes Choubani   update
2932
                    
9ded3be9   Ilyes Choubani   Display update. F...
2933
                    k=0    
bffa7018   Ilyes Choubani   update
2934
                        
9ded3be9   Ilyes Choubani   Display update. F...
2935
                    IF isa((*!dustem_fit).fixed_param_descs) THEN BEGIN
bffa7018   Ilyes Choubani   update
2936
                        
9ded3be9   Ilyes Choubani   Display update. F...
2937
2938
2939
2940
                        Nfpar = n_elements((*(*!dustem_fit).fixed_param_descs))
                        res = (*(*!dustem_fit).fixed_param_init_values)
                        
                        FOR i=0L,Nfpar-1 DO BEGIN
bffa7018   Ilyes Choubani   update
2941
                            
9ded3be9   Ilyes Choubani   Display update. F...
2942
2943
                            parameter_description = (*(*!dustem_fit).fixed_param_descs)[i]     
                            parameter_type = dustem_parameter_description2type(parameter_description,string_name=string_name)
bffa7018   Ilyes Choubani   update
2944
                            
9ded3be9   Ilyes Choubani   Display update. F...
2945
2946
2947
2948
                            IF parameter_type NE 'PLUGIN' THEN BEGIN                       
                                yypos = 0.8 - k*0.09
                                k+=1
                            ENDIF 
bffa7018   Ilyes Choubani   update
2949
                            
9ded3be9   Ilyes Choubani   Display update. F...
2950
2951
2952
                        ENDFOR  
                         
                    ENDIF
bffa7018   Ilyes Choubani   update
2953
                    
9ded3be9   Ilyes Choubani   Display update. F...
2954
2955
                    prms_dscs = (*(*!dustem_fit).param_descs)
                    prms_tps = strarr(n_elements(prms_dscs))
c9abf9b4   Ilyes Choubani   Uploading stellar...
2956
                    
9ded3be9   Ilyes Choubani   Display update. F...
2957
2958
2959
                    for i=0L,n_elements(prms_dscs)-1 do begin
                        prms_tps[i] = dustem_parameter_description2type(prms_dscs[i])
                    endfor
c9abf9b4   Ilyes Choubani   Uploading stellar...
2960
                    
9ded3be9   Ilyes Choubani   Display update. F...
2961
2962
                    testprms = where(prms_tps ne 'PLUGIN', ct_data)
                    if ct_data ne 0 then begin
bffa7018   Ilyes Choubani   update
2963
                    
9ded3be9   Ilyes Choubani   Display update. F...
2964
                        if ~isa(yypos) then yypos = 0.8 else yypos-=0.22 ;not sure about this
bffa7018   Ilyes Choubani   update
2965
                        
bffa7018   Ilyes Choubani   update
2966
                        
9ded3be9   Ilyes Choubani   Display update. F...
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
                        res = dustem_interp
                        errors = dustem_spec
                        yypostmp = yypos
                        k=0
                        FOR i=0L,Npar-1 DO BEGIN ;---refreshing--- 
                          
                          parameter_description = (*(*!dustem_fit).param_descs)[i]
                          parameter_type = dustem_parameter_description2type(parameter_description,string_name=string_name)
                          testpop = STRUPCASE(strmid(strtrim(parameter_description,2),3,1,/reverse_offset)) EQ 'O'
                              
                            IF parameter_type EQ 'FORTRAN' then begin
                                if testpop then begin
                                      indpop=fix(STRUPCASE(strmid(strtrim(parameter_description,2),12,1,/reverse_offset)))
                                      string_name=(((*!dustem_params). GRAINS).grain_type)[indpop]
                                endif
                              
                                ;choosing a step of 0.09 in norm coordinates 
                                yypos = yypostmp - k*0.09 
                                ;xxpos = 0.0
                                
                                str= strtrim(string(res[i],format=frmt1) + textoidl(' \pm ') + string(errors(i),format=frmt1),2)
bffa7018   Ilyes Choubani   update
2988
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2989
2990
2991
2992
2993
2994
2995
2996
                                esc_txt = strjoin(replicate(' ', strlen(strtrim(string(string_name+' = ',format=frmt0),2))))
                                esc_txt = esc_txt+'   '
                                 
                                IF !dustem_end NE 0 THEN  esc_txt=strtrim(string(string_name+' = ',format=frmt0),2)+' ' ;so that ps file isn't distorted
                                                          
                                xyouts,0.5,yypos,string(esc_txt+str),color=0,alignment=0.5,/normal,charsize=1.
                                  
                                k+=1            
bffa7018   Ilyes Choubani   update
2997
2998
                                
                            ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
                               
                        ENDFOR        
                        
                    ENDIF                        
                    
                endif else begin ;data in the parameter window that is unchanged 
                    
                    IF isa((*!dustem_fit).fixed_param_descs) THEN BEGIN
                        
                        Nfpar = n_elements((*(*!dustem_fit).fixed_param_descs))
                        res = (*(*!dustem_fit).fixed_param_init_values)
                        
                        iii=0
                        FOR i=0L,Nfpar-1 DO BEGIN
bffa7018   Ilyes Choubani   update
3013
                            
9ded3be9   Ilyes Choubani   Display update. F...
3014
3015
3016
                            parameter_description = (*(*!dustem_fit).fixed_param_descs)[i]     
                            parameter_type = dustem_parameter_description2type(parameter_description,string_name=string_name)
                            if parameter_type NE 'PLUGIN' then iii+=1 
bffa7018   Ilyes Choubani   update
3017
                            
9ded3be9   Ilyes Choubani   Display update. F...
3018
                        ENDFOR
bffa7018   Ilyes Choubani   update
3019
                        
9ded3be9   Ilyes Choubani   Display update. F...
3020
3021
3022
3023
3024
3025
3026
                        k = 0
                        if iii ne 0 then begin
                            xxpos = 0.5
                            yypos = 0.9 
                            
                            xyouts, xxpos, yypos, '___FROZEN___', charsize=1.2, alignment=0.5,/normal, color=cgcolor('red')
                        endif
bffa7018   Ilyes Choubani   update
3027
                        
9ded3be9   Ilyes Choubani   Display update. F...
3028
                        FOR i=0L,Nfpar-1 DO BEGIN
bffa7018   Ilyes Choubani   update
3029
                            
9ded3be9   Ilyes Choubani   Display update. F...
3030
3031
3032
                            parameter_description = (*(*!dustem_fit).fixed_param_descs)[i]     
                            parameter_type = dustem_parameter_description2type(parameter_description,string_name=string_name)
                            testpop = STRUPCASE(strmid(strtrim(parameter_description,2),3,1,/reverse_offset)) EQ 'O'
bffa7018   Ilyes Choubani   update
3033
                            
9ded3be9   Ilyes Choubani   Display update. F...
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
                            IF parameter_type NE 'PLUGIN' THEN BEGIN ; don't know why I'm using this instead of EQ 'FORTRAN', they should be equivalent right since we don't use the 'wrapper' type.
                                
                                IF  testpop then begin
                                     
                                    indpop=fix(STRUPCASE(strmid(strtrim(parameter_description,2),12,1,/reverse_offset)))
                                    string_name=(((*!dustem_params). GRAINS).grain_type)[indpop]
                                    
                                ENDIF
                                
                                yypos = 0.8 - k*0.09
                                xxpos = 0.5  
                                
                                str=strtrim(string(string_name+' = ',format=frmt0)+string(res[i],format=frmt1),2)
                                
                                xyouts,xxpos,yypos,str,color=0,/normal,alignment=0.5,charsize=1.
                                k+=1
bffa7018   Ilyes Choubani   update
3050
                            
9ded3be9   Ilyes Choubani   Display update. F...
3051
3052
3053
3054
                            ENDIF    
                             
                        ENDFOR  
                         
bffa7018   Ilyes Choubani   update
3055
3056
                    ENDIF
                    
bffa7018   Ilyes Choubani   update
3057
                    
9ded3be9   Ilyes Choubani   Display update. F...
3058
                    xxpos = 0.5 
bffa7018   Ilyes Choubani   update
3059
                    
9ded3be9   Ilyes Choubani   Display update. F...
3060
                    ;test so that this string isn't displayed when there are no free parameters: 
bffa7018   Ilyes Choubani   update
3061
                    
9ded3be9   Ilyes Choubani   Display update. F...
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
                    prms_dscs = (*(*!dustem_fit).param_descs)
                    prms_tps = strarr(n_elements(prms_dscs))
                    
                    for i=0L,n_elements(prms_dscs)-1 do begin
                        prms_tps[i] = dustem_parameter_description2type(prms_dscs[i])
                    endfor
                    
                    testprms = where(prms_tps ne 'PLUGIN', ct_data)
                    
                    IF ct_data ne 0 then begin
                    
                        if ~isa(yypos) then yypos = 0.9 else yypos-=0.1*1.2 ;not sure about this
                    
                        xyouts, xxpos, yypos, '___FREE___', charsize=1.2, alignment=0.5,/normal,color=cgcolor('forest green')
                    
                        k=0   
                        res = dustem_interp
                        errors = dustem_spec
                    
                        yypos-=0.1
                        yypostmp = yypos
                        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)
                          testpop = STRUPCASE(strmid(strtrim(parameter_description,2),3,1,/reverse_offset)) EQ 'O'
                          
                          IF  parameter_type EQ 'FORTRAN' then begin
                                
                                if testpop then begin
                                    indpop=fix(STRUPCASE(strmid(strtrim(parameter_description,2),12,1,/reverse_offset)))
                                    string_name=(((*!dustem_params). GRAINS).grain_type)[indpop]
                                endif
                                
                                yypos = yypostmp -  k*0.09
                                xxpos = 0.5   
                                                            
                                str=strtrim(string(string_name+' = ',format=frmt0),2)
                                  
                                esc_txt = strjoin(replicate(' ', strlen(strtrim(string(res[i],format=frmt1)+textoidl(' \pm ')+string(errors(i),format=frmt1),2))))  
                                
                                esc_txt = '   '+esc_txt
                                ;using cgwindow's weakness we can erase the last iteration so that the refreshed block does it. This is so that the ps file isn't scrambeld.
                                ;cgwindow runs all commands when the window is erased. Which happens at each refreshing (this means that cgwindow runs this block anyway). These are the rules when using the /replacecmd keyword.
                                 IF !dustem_end NE 0 THEN BEGIN
                                     esc_txt=''
                                     str=''
                                 ENDIF
                                 
                                xyouts,xxpos,yypos,str+esc_txt,color=0,alignment=0.5,/normal,charsize=1.
                                
                                k+=1            
                                
                          ENDIF
                          
ab4dc92e   Ilyes Choubani   Slight modificati...
3117
                        
9ded3be9   Ilyes Choubani   Display update. F...
3118
                        ENDFOR
ab4dc92e   Ilyes Choubani   Slight modificati...
3119
                        
9ded3be9   Ilyes Choubani   Display update. F...
3120
                    ENDIF
bffa7018   Ilyes Choubani   update
3121
                        
9ded3be9   Ilyes Choubani   Display update. F...
3122
3123
3124
3125
3126
3127
                    
                endelse
            
            end
            
            'PLUGINS':begin ;plugins use the cgwindow 'bug' in another way. Instead of replacing the refreshed run by the last string we want displayed, it removes it and relies on the 'extra' run of the fixed part of the data that cgwindow carries.
bffa7018   Ilyes Choubani   update
3128
                
9ded3be9   Ilyes Choubani   Display update. F...
3129
3130
3131
3132
3133
                p_dim = dustem_interp
            
                Npar=n_elements(p_dim)
            
                if keyword_set(refresh) then begin ;(REFRESHED RUN) 
bffa7018   Ilyes Choubani   update
3134
                    
9ded3be9   Ilyes Choubani   Display update. F...
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
                    IF isa((*!dustem_fit).fixed_param_descs) THEN BEGIN
                        
                        Nfpar = n_elements((*(*!dustem_fit).fixed_param_descs))
                        res = (*(*!dustem_fit).fixed_param_init_values)
                        k=0
                        FOR i=0L,Nfpar-1 DO BEGIN
                            
                            parameter_description = (*(*!dustem_fit).fixed_param_descs)[i]     
                            parameter_type = dustem_parameter_description2type(parameter_description,string_name=string_name)
                            
                            
                            IF parameter_type EQ 'PLUGIN' THEN BEGIN                       
                                yypos = 0.8 - k*0.09
                                k+=1
                            ENDIF 
                            
                        ENDFOR  
                                    
                         
                    ENDIF
bffa7018   Ilyes Choubani   update
3155
                    
bffa7018   Ilyes Choubani   update
3156
                    
9ded3be9   Ilyes Choubani   Display update. F...
3157
3158
                    prms_dscs = (*(*!dustem_fit).param_descs)
                    prms_tps = strarr(n_elements(prms_dscs))
bffa7018   Ilyes Choubani   update
3159
                    
9ded3be9   Ilyes Choubani   Display update. F...
3160
3161
3162
3163
3164
                    for i=0L,n_elements(prms_dscs)-1 do begin
                        prms_tps[i] = dustem_parameter_description2type(prms_dscs[i])
                    endfor
                    
                    testprms = where(prms_tps EQ 'PLUGIN', ct_data)
bffa7018   Ilyes Choubani   update
3165
                    
9ded3be9   Ilyes Choubani   Display update. F...
3166
                    if ct_data ne 0 then begin
bffa7018   Ilyes Choubani   update
3167
                    
9ded3be9   Ilyes Choubani   Display update. F...
3168
                        if ~isa(yypos) then yypos = 0.8 else yypos-=0.22 ;not sure about this
bffa7018   Ilyes Choubani   update
3169
                        
9ded3be9   Ilyes Choubani   Display update. F...
3170
3171
3172
3173
                        k=0
                        res = dustem_interp
                        errors = dustem_spec
                        yypostmp = yypos
bffa7018   Ilyes Choubani   update
3174
                        
9ded3be9   Ilyes Choubani   Display update. F...
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
                        FOR i=0L,Npar-1 DO BEGIN  
                          ;stop
                            parameter_description = (*(*!dustem_fit).param_descs)[i]
                            parameter_type = dustem_parameter_description2type(parameter_description,string_name=string_name)
                          
                            IF parameter_type EQ 'PLUGIN' THEN BEGIN
                                
                                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_plugin) 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
                                prmtg = (*(*!dustem_plugin).(mm).paramtag)
                                indtg = (strmid(string_name,ii+1)) & indtg = strmid(indtg,0,/reverse_offset)     
                                indtg = fix(indtg)
                                prmtg = prmtg[indtg-1] 
                                yypos = yypostmp - k*0.09
                                xxpos = 0.5 
                                                                    
                                ;copied from params
                                
                                str= strtrim(string(res[i],format=frmt1) + textoidl(' \pm ') + string(errors(i),format=frmt1),2)
                                  
                                 
                                esc_txt = strjoin(replicate(' ', strlen(strtrim(string(strmid(string_name,7,ii-7)+' ['+strmid(string_name,ii+1)+']: '+prmtg+' = ',format=frmt0),2))))   
                                ;esc_txt = strjoin(replicate(' ', strlen(strtrim(string(string_name+' = ',format=frmt0),2))))
                                 
                                esc_txt = esc_txt+'   '
                            
                                 
                                IF !dustem_end NE 0 THEN  esc_txt = strtrim(string(strmid(string_name,7,ii-7)+' ['+strmid(string_name,ii+1)+']: '+prmtg+' = ',format=frmt0),2);esc_txt=strtrim(string(string_name+' = ',format=frmt0),2)+' ' ;so that ps file isn't distorted
                                                           
                                xyouts,0.5,yypos,string(esc_txt+str),color=0,alignment=0.5,/normal,charsize=1.                               
9ded3be9   Ilyes Choubani   Display update. F...
3205
                               
9ded3be9   Ilyes Choubani   Display update. F...
3206
3207
3208
3209
                                k+=1
                                
                            ENDIF          
                                    
bffa7018   Ilyes Choubani   update
3210
                        
9ded3be9   Ilyes Choubani   Display update. F...
3211
3212
3213
3214
3215
3216
3217
3218
                        ENDFOR
                    
                 ENDIF
                    
                endif else begin ;plotting of strings that are fixed
                    
                    
                    IF isa((*!dustem_fit).fixed_param_descs) THEN BEGIN
bffa7018   Ilyes Choubani   update
3219
                        
9ded3be9   Ilyes Choubani   Display update. F...
3220
3221
                        Nfpar = n_elements((*(*!dustem_fit).fixed_param_descs))
                        res = (*(*!dustem_fit).fixed_param_init_values)
bffa7018   Ilyes Choubani   update
3222
                        
9ded3be9   Ilyes Choubani   Display update. F...
3223
3224
                        iii=0
                        FOR i=0L,Nfpar-1 DO BEGIN
bffa7018   Ilyes Choubani   update
3225
                            
9ded3be9   Ilyes Choubani   Display update. F...
3226
3227
3228
                            parameter_description = (*(*!dustem_fit).fixed_param_descs)[i]     
                            parameter_type = dustem_parameter_description2type(parameter_description,string_name=string_name)
                            if parameter_type EQ 'PLUGIN' then iii+=1 
bffa7018   Ilyes Choubani   update
3229
                            
9ded3be9   Ilyes Choubani   Display update. F...
3230
3231
3232
3233
3234
                        ENDFOR
                        k = 0
                        if iii ne 0 then begin
                            xxpos = 0.5
                            yypos = 0.9
bffa7018   Ilyes Choubani   update
3235
                            
9ded3be9   Ilyes Choubani   Display update. F...
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
                            xyouts, xxpos, yypos, '___FROZEN___', charsize=1.2,alignment=0.5, /normal, color=cgcolor('red')
                        endif
                        FOR i=0L,Nfpar-1 DO BEGIN
                            
                            parameter_description = (*(*!dustem_fit).fixed_param_descs)[i]     
                            parameter_type = dustem_parameter_description2type(parameter_description,string_name=string_name)
                            testpop = STRUPCASE(strmid(strtrim(parameter_description,2),3,1,/reverse_offset)) EQ 'O'
                            
                            IF parameter_type EQ 'PLUGIN' THEN BEGIN
                            
                                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_plugin) 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
                                prmtg = (*(*!dustem_plugin).(mm).paramtag)
                                indtg = (strmid(string_name,ii+1)) & indtg = strmid(indtg,0,/reverse_offset)     
                                indtg = fix(indtg)
                                prmtg = prmtg[indtg-1] 
                                
                                yypos = 0.8 - k*0.09
                                xxpos = 0.5  
                                
                                str = string(strmid(string_name,7,ii-7)+' ['+strmid(string_name,ii+1)+']: '+prmtg+' = ',format=frmt0)
                                str=strtrim(str,2)
                                str1=str+string(res[i],format=frmt1)
                    
                                xyouts,xxpos,yypos,str1,color=0,/normal,alignment=0.5,charsize=1.
                                k+=1
                             
                            ENDIF    
                             
                        ENDFOR  
bffa7018   Ilyes Choubani   update
3266
                         
9ded3be9   Ilyes Choubani   Display update. F...
3267
3268
3269
3270
3271
3272
                    ENDIF
                    
                    xxpos = 0
                    
                    prms_dscs = (*(*!dustem_fit).param_descs)
                    prms_tps = strarr(n_elements(prms_dscs))
bffa7018   Ilyes Choubani   update
3273
                     
9ded3be9   Ilyes Choubani   Display update. F...
3274
3275
3276
                    for i=0L,n_elements(prms_dscs)-1 do begin
                        prms_tps[i] = dustem_parameter_description2type(prms_dscs[i])
                    endfor
bffa7018   Ilyes Choubani   update
3277
                    
9ded3be9   Ilyes Choubani   Display update. F...
3278
                    testprms = where(prms_tps EQ 'PLUGIN', ct_data)
bffa7018   Ilyes Choubani   update
3279
                    
9ded3be9   Ilyes Choubani   Display update. F...
3280
3281
3282
3283
3284
3285
3286
3287
                    IF ct_data ne 0 then begin
                    
                    
                        if ~isa(yypos) then yypos = 0.9 else yypos-=0.1*1.2 ;not sure about this
    
                         xxpos = 0.5
    
                        xyouts, xxpos, yypos, '___FREE___', charsize=1.2, alignment=0.5,/normal,color=cgcolor('forest green')
bffa7018   Ilyes Choubani   update
3288
3289
                        
                        
9ded3be9   Ilyes Choubani   Display update. F...
3290
3291
3292
3293
3294
                        k=0
                        res = dustem_interp
                        errors = dustem_spec
                        yypos-=0.1
                        yypostmp = yypos
bffa7018   Ilyes Choubani   update
3295
                            
9ded3be9   Ilyes Choubani   Display update. F...
3296
3297
3298
3299
                        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)
bffa7018   Ilyes Choubani   update
3300
                            
bffa7018   Ilyes Choubani   update
3301
                            
9ded3be9   Ilyes Choubani   Display update. F...
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
                            IF parameter_type EQ 'PLUGIN' THEN BEGIN
                                
                                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_plugin) eq strupcase(strmid(string_name,7,ii-7))) ; ; 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
                                prmtg = (*(*!dustem_plugin).(mm).paramtag)
                                indtg = (strmid(string_name,ii+1)) & indtg = strmid(indtg,0,/reverse_offset)     
                                indtg = fix(indtg)
                                prmtg = prmtg[indtg-1] 
                                
                                yypos = yypostmp - k*0.09
                                xxpos = 0.5;15 
                                
                                
                                ;copied from params
                                ;str=strtrim(string(string_name+' = ',format=frmt0),2)
                                str = strtrim(string(strmid(string_name,7,ii-7)+' ['+strmid(string_name,ii+1)+']: '+prmtg+' = ',format=frmt0),2) 
                                esc_txt = strjoin(replicate(' ', strlen(strtrim(string(res[i],format=frmt1)+textoidl(' \pm ')+string(errors(i),format=frmt1),2))))   
                                ;esc_txt = strjoin(replicate(' ', strlen(strtrim(string(res[i],format=frmt1)+textoidl(' \pm ')+string(errors(i),format=frmt1),2))))  
                                 
                                esc_txt = '   '+esc_txt
18e47096   Ilyes Choubani   corrections for e...
3322
3323
                                
                                
9ded3be9   Ilyes Choubani   Display update. F...
3324
3325
3326
3327
3328
3329
3330
                                 IF !dustem_end NE 0 THEN BEGIN
                                     esc_txt=''
                                     str=''
                                 ENDIF
                                 
                                 
                                xyouts,xxpos,yypos,str+esc_txt,color=0,alignment=0.5,/normal,charsize=1.
18e47096   Ilyes Choubani   corrections for e...
3331
                                  
9ded3be9   Ilyes Choubani   Display update. F...
3332
3333
3334
3335
                                k+=1
                                
                            ENDIF
                              
bffa7018   Ilyes Choubani   update
3336
                            
bffa7018   Ilyes Choubani   update
3337
                        
9ded3be9   Ilyes Choubani   Display update. F...
3338
3339
3340
3341
3342
3343
3344
3345
                        ENDFOR
                    ENDIF
                endelse
             
            
            
            end
            
bffa7018   Ilyes Choubani   update
3346
        
9ded3be9   Ilyes Choubani   Display update. F...
3347
        endcase
bffa7018   Ilyes Choubani   update
3348
    
9ded3be9   Ilyes Choubani   Display update. F...
3349
    endfor
bffa7018   Ilyes Choubani   update
3350
3351
3352
3353

endif


18e47096   Ilyes Choubani   corrections for e...
3354
3355
3356
3357
3358
3359
3360
3361
;This is because I stupidly gave arrays/lists and their elements the same variable names.
;check beginning of loop. 
if keyword_set(dustem_interp) then dustem_interp = dustem_interp_sv
if keyword_set(dustem_spec) then dustem_spec = dustem_spec_sv 
if keyword_set(extra_spec) then extra_spec = extra_spec_sv 
if keyword_set(position) then position = position_sv


bffa7018   Ilyes Choubani   update
3362
3363
3364
3365
the_end:


END