Blame view

src/idl/dustem_plot_dataset.pro 232 KB
9ded3be9   Ilyes Choubani   Display update. F...
1
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
2
3
4
5

;+
; NAME:
;    dustem_plot_dataset
af2812ab   Annie Hughes   updated doc help
6
;
bffa7018   Ilyes Choubani   update
7
8
; PURPOSE:
;    Allows the plotting of a (several) dataset(s) 
af2812ab   Annie Hughes   updated doc help
9
;
bffa7018   Ilyes Choubani   update
10
; CATEGORY:
af2812ab   Annie Hughes   updated doc help
11
12
;    DustEMWrap, Distributed, Low-level, Plotting
;
bffa7018   Ilyes Choubani   update
13
; CALLING SEQUENCE:
9ded3be9   Ilyes Choubani   Display update. F...
14
;    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
15
;
bffa7018   Ilyes Choubani   update
16
; INPUTS:
9ded3be9   Ilyes Choubani   Display update. F...
17
;    st = DustEM output structure
af2812ab   Annie Hughes   updated doc help
18
;
9ded3be9   Ilyes Choubani   Display update. F...
19
20
21
22
23
24
25
26
; 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
;    dataset = Dataset(s) to be plotted - type = array 
;    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
27
;
bffa7018   Ilyes Choubani   update
28
29
; OUTPUTS:
;    NONE
bffa7018   Ilyes Choubani   update
30
31
; ACCEPTED KEY-WORDS:
;    help
9ded3be9   Ilyes Choubani   Display update. F...
32
;    refresh = Plot the datasets that change after each DustEM run 
bffa7018   Ilyes Choubani   update
33
34
; COMMON BLOCKS:
;    None
af2812ab   Annie Hughes   updated doc help
35
;
bffa7018   Ilyes Choubani   update
36
37
; SIDE EFFECTS:
;    Does a plot
af2812ab   Annie Hughes   updated doc help
38
;
bffa7018   Ilyes Choubani   update
39
40
41
; RESTRICTIONS:
;    The DustEM fortran code must be installed
;    The DustEMWrap IDL code must be installed
af2812ab   Annie Hughes   updated doc help
42
;
bffa7018   Ilyes Choubani   update
43
44
45
46
47
; PROCEDURES AND SUBROUTINES USED:
;
; EXAMPLES
;    
; MODIFICATION HISTORY:
af2812ab   Annie Hughes   updated doc help
48
;    Written by Ilyes Choubani 2022
bffa7018   Ilyes Choubani   update
49
;    Evolution details on the DustEMWrap gitlab.
af2812ab   Annie Hughes   updated doc help
50
;    See http://dustemwrap.irap.omp.eu/ for FAQ and help.  
bffa7018   Ilyes Choubani   update
51
52
;-

af2812ab   Annie Hughes   updated doc help
53

bffa7018   Ilyes Choubani   update
54
55
56
57
58
59
IF keyword_set(help) THEN BEGIN
  doc_library,'dustem_plot_dataset'
  goto,the_end
END


9ded3be9   Ilyes Choubani   Display update. F...
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
;****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
76
77
78
79
80
81
82

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...
83

bffa7018   Ilyes Choubani   update
84
85
86
87
88
89
90
91
92
93
94
95
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...
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
; 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
112

9ded3be9   Ilyes Choubani   Display update. F...
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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

if keyword_set(dataset) then begin ;This shouldn't be a keyword. Should be changed for the next releases?
bffa7018   Ilyes Choubani   update
129
    
9ded3be9   Ilyes Choubani   Display update. F...
130
    for ss=0L,n_elements(dataset)-1 do begin
bffa7018   Ilyes Choubani   update
131
            
bffa7018   Ilyes Choubani   update
132
            
18e47096   Ilyes Choubani   corrections for e...
133
134
135
136
            
            
            
            
9ded3be9   Ilyes Choubani   Display update. F...
137
138
139
140
141
142
143
144
145
            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
146
            
bffa7018   Ilyes Choubani   update
147
            
9ded3be9   Ilyes Choubani   Display update. F...
148
            if n_elements(position_sv) NE 0 then begin
bffa7018   Ilyes Choubani   update
149
            
18e47096   Ilyes Choubani   corrections for e...
150
                if (size(position_sv(0)))[2] NE 11 then position=position_sv else position=position_sv[ss]
9ded3be9   Ilyes Choubani   Display update. F...
151
152
                
                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
153
                    
9ded3be9   Ilyes Choubani   Display update. F...
154
155
156
157
158
159
160
161
162
163
164
                    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
165
                
9ded3be9   Ilyes Choubani   Display update. F...
166
                endif else pospltxt = [(position[0])(0)+0.02,(position[0])(3)-0.05];
bffa7018   Ilyes Choubani   update
167
                
9ded3be9   Ilyes Choubani   Display update. F...
168
            endif
bffa7018   Ilyes Choubani   update
169
            
9ded3be9   Ilyes Choubani   Display update. F...
170
171
172
173
174
175
176
            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
177
                    
9ded3be9   Ilyes Choubani   Display update. F...
178
179
180
181
182
183
184
                    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.
                    
                    ;REFRESHING OF NORMALIZED PLOT
bffa7018   Ilyes Choubani   update
185
                    if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
9ded3be9   Ilyes Choubani   Display update. F...
186
187
                        ;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
188
189
190
191
                        
                        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...
192
193
                            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]
bffa7018   Ilyes Choubani   update
194
195
196
197
198
199
                            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]
9ded3be9   Ilyes Choubani   Display update. F...
200
201
                            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]
bffa7018   Ilyes Choubani   update
202
203
204
205
                            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
                            
                        
9ded3be9   Ilyes Choubani   Display update. F...
206
207
208
209
                    endif 
                    
                    ;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.
bffa7018   Ilyes Choubani   update
210
211
212
213
214
215
216
                        
                        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
                        
9ded3be9   Ilyes Choubani   Display update. F...
217
218
                        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
219
220
221
222
                    
                    ;endelse
                    endif
                    
9ded3be9   Ilyes Choubani   Display update. F...
223
                    ;REFRESHING OF NORMAL PLOT                 
bffa7018   Ilyes Choubani   update
224
225
                    if keyword_set(refresh) then begin ;The data points in the plot are being refreshed
                        
9ded3be9   Ilyes Choubani   Display update. F...
226
227
228
229
230
231
                        ;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
232
233
                        ;Plotting of the spectra of the dust species
                        FOR i=0L,Ngrains-1 DO BEGIN
9ded3be9   Ilyes Choubani   Display update. F...
234
                            cgoplot,st.sed.wav,st.sed.(i+1)*fact,color=use_cols[i],pos=position[0],noerase=1
bffa7018   Ilyes Choubani   update
235
                        ENDFOR
9ded3be9   Ilyes Choubani   Display update. F...
236
                        ;stop
bffa7018   Ilyes Choubani   update
237
238
239
240
241
242
243
                                                
                        ;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...
244
                                    cgoplot,st.sed.wav,((*(*!dustem_plugin).(i).spec)[*,0]),color=clrs_plgns[i],pos=position[0],noerase=1,linestyle=2               
bffa7018   Ilyes Choubani   update
245
246
247
248
249
250
251
252
253
254
255
256
                                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...
257
                            cgoplot,xx,yy,color='Indian Red',pos=position[0],psym=7,syms=1,noerase=1   
bffa7018   Ilyes Choubani   update
258
259
260
261
262
263
                        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...
264
265
                            ;stop
                            cgoplot,xx,yy,color='red',pos=position[0],psym=6,syms=2,noerase=1
bffa7018   Ilyes Choubani   update
266
267
268
269
                        ENDIF
                        
                        
                        ;Plotting of the total dust emission spectrum
9ded3be9   Ilyes Choubani   Display update. F...
270
                        cgoplot,st.sed.wav,dustem_spec,pos=position[0],noerase=1,/xlog,/ys,/xs,/ylog
bffa7018   Ilyes Choubani   update
271
272
273
274
275
276
277
278
                                
                    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...
279
                            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
280
281
                            
                            ;Plotting of the spectrum error points
9ded3be9   Ilyes Choubani   Display update. F...
282
                            rms=2.*((*(*!dustem_data).sed).sigma)(idx_spec)/2.
bffa7018   Ilyes Choubani   update
283
284
285
286
287
                            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...
288
                            
bffa7018   Ilyes Choubani   update
289
                            ;Plotting of filter data points (to be fitted) + testing for prior plotting                         
9ded3be9   Ilyes Choubani   Display update. F...
290
291
                            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
292
293
294
                            
                            
                            ;Plotting of the filter error points
9ded3be9   Ilyes Choubani   Display update. F...
295
                            rms=2.*((*(*!dustem_data).sed).sigma)(idx_filt)/2.;/dustem_sed(idx_filt)
bffa7018   Ilyes Choubani   update
296
297
298
299
300
                            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...
301
                        ;what are these? tests?
bffa7018   Ilyes Choubani   update
302
303
                        ;save_x=!x & save_y=!y & save_z=!z & save_p=!p & save_d=!d
                        ;save_scaling=1
d0f6ff14   Ilyes Choubani   corrected faulty ...
304
                        use_xrange=((!const.c*1E6/(xr))*1E-9)
bffa7018   Ilyes Choubani   update
305
306
307
                        ;order=sort(use_xrange)
                        ;use_xrange=use_xrange[order]
                        ;print,use_xrange
9ded3be9   Ilyes Choubani   Display update. F...
308
                        
bffa7018   Ilyes Choubani   update
309
310
311
312
313
314
315
316
317
318
319
320
321
322
                        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...
323
                            
bffa7018   Ilyes Choubani   update
324
325
                            if ct_spec_hdn ne 0 then begin
                                ;Plotting of hidden spectrum data points
9ded3be9   Ilyes Choubani   Display update. F...
326
                                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
327
328
                                
                                ;Plotting of hidden spectrum error points
9ded3be9   Ilyes Choubani   Display update. F...
329
                                rms=2.*(((*(*!dustem_show).sed).sigma)[idx_rmv_sed])(idx_spec_hdn)/2.
bffa7018   Ilyes Choubani   update
330
331
332
333
334
                                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...
335
                                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
336
337
                                
                                ;Plotting of hidden filter error point
9ded3be9   Ilyes Choubani   Display update. F...
338
                                rms=2.*(((*(*!dustem_show).sed).sigma)[idx_rmv_sed])(idx_filt_hdn)/2.
bffa7018   Ilyes Choubani   update
339
340
341
342
343
                                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...
344
                         
bffa7018   Ilyes Choubani   update
345
                    endif
9ded3be9   Ilyes Choubani   Display update. F...
346
347
    
                end
bffa7018   Ilyes Choubani   update
348
            
9ded3be9   Ilyes Choubani   Display update. F...
349
            ;DONE BUT NOT TESTED
bffa7018   Ilyes Choubani   update
350
            
9ded3be9   Ilyes Choubani   Display update. F...
351
            'EXT': begin 
bffa7018   Ilyes Choubani   update
352
            
9ded3be9   Ilyes Choubani   Display update. F...
353
354
355
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.ext.xr
                yr = !dustem_plot_range.ext.yr
bffa7018   Ilyes Choubani   update
356
                
9ded3be9   Ilyes Choubani   Display update. F...
357
358
359
360
                idx_filt=where((*(*!dustem_data).ext).filt_names NE 'SPECTRUM',ct_filt)
                idx_spec=where((*(*!dustem_data).ext).filt_names EQ 'SPECTRUM',ct_spec)         
                        
                ;PLOTTING OF NORMALIZED PLOT
bffa7018   Ilyes Choubani   update
361
                
9ded3be9   Ilyes Choubani   Display update. F...
362
363
364
365
                ;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
3196a378   Ilyes Choubani   Complementing fit...
366
                    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
9ded3be9   Ilyes Choubani   Display update. F...
367
368
369
370
371
372
373
374
375
376
                    
                    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
8e55ab4d   Jean-Philippe Bernard   removed frequency...
377
                    ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
                    
                    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
                    ENDIF
                        
                    
                endif 
                
                ;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
                
bffa7018   Ilyes Choubani   update
404
405
                endif
            
9ded3be9   Ilyes Choubani   Display update. F...
406
407
408
409
            ;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
410
                    
9ded3be9   Ilyes Choubani   Display update. F...
411
412
                    
                    ;making sure we're in the normal plot so that overplotting happens here
3196a378   Ilyes Choubani   Complementing fit...
413
                    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...
414
415
416
417
                    
                    ;Plotting of the spectra of the dust species
                
                    FOR i=0L,Ngrains-1 DO BEGIN
18e47096   Ilyes Choubani   corrections for e...
418
                        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...
419
                    ENDFOR
bffa7018   Ilyes Choubani   update
420
                        
9ded3be9   Ilyes Choubani   Display update. F...
421
422
423
                                            
                    ;Plotting of the plugins.
                    for i=0L,n_plgns-1 do begin
bffa7018   Ilyes Choubani   update
424
                        
9ded3be9   Ilyes Choubani   Display update. F...
425
426
427
                        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...
428
                                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
429
                            ENDIF
bffa7018   Ilyes Choubani   update
430
                            
9ded3be9   Ilyes Choubani   Display update. F...
431
                        endif
bffa7018   Ilyes Choubani   update
432
                        
9ded3be9   Ilyes Choubani   Display update. F...
433
434
435
436
437
                    endfor
                                            
                    ;PLotting of the interpolates corresponding to spectrum and filter points
                       
                    IF ct_spec NE 0 THEN BEGIN
bffa7018   Ilyes Choubani   update
438
                    
9ded3be9   Ilyes Choubani   Display update. F...
439
440
                        xx=((*(*!dustem_data).ext).wav)[idx_spec]
                        yy=dustem_interp[idx_spec]
18e47096   Ilyes Choubani   corrections for e...
441
                        cgoplot,1/xx,yy,color='Indian Red',pos=position[0],psym=7,syms=1,noerase=1   
9ded3be9   Ilyes Choubani   Display update. F...
442
                    ENDIF
bffa7018   Ilyes Choubani   update
443
                    
bffa7018   Ilyes Choubani   update
444
                    
9ded3be9   Ilyes Choubani   Display update. F...
445
446
447
                    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...
448
                        cgoplot,1/xx,yy,color='red',pos=position[0],psym=6,syms=2,noerase=1
9ded3be9   Ilyes Choubani   Display update. F...
449
450
451
452
                    ENDIF
                    
                    
                    ;Plotting of the total dust emission spectrum
18e47096   Ilyes Choubani   corrections for e...
453
                    cgoplot,1/st.ext.wav,dustem_spec,pos=position[0],noerase=1,/xlog,/ys,/xs,/ylog
9ded3be9   Ilyes Choubani   Display update. F...
454
455
                     
                                    
bffa7018   Ilyes Choubani   update
456
                            
9ded3be9   Ilyes Choubani   Display update. F...
457
458
459
460
461
462
463
                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
464
                        
9ded3be9   Ilyes Choubani   Display update. F...
465
                        ;Plotting of spectrum data points (to be fitted)
3196a378   Ilyes Choubani   Complementing fit...
466
                        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
467
                        
9ded3be9   Ilyes Choubani   Display update. F...
468
469
470
471
472
473
474
475
476
                        ;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...
477
                        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...
478
                            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
479
                        
bffa7018   Ilyes Choubani   update
480
                        
9ded3be9   Ilyes Choubani   Display update. F...
481
482
483
                        ;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
484
                        
9ded3be9   Ilyes Choubani   Display update. F...
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
                    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
502
                        ;stop
9ded3be9   Ilyes Choubani   Display update. F...
503
504
                        if ct_spec_hdn ne 0 then begin
                            ;Plotting of hidden spectrum data points
3196a378   Ilyes Choubani   Complementing fit...
505
                            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
506
                            
9ded3be9   Ilyes Choubani   Display update. F...
507
508
509
510
                            ;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
511
                        
9ded3be9   Ilyes Choubani   Display update. F...
512
513
                        if ct_filt_hdn then begin
                        ;Plotting of hidden filter data points 
3196a378   Ilyes Choubani   Complementing fit...
514
                            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
515
                            
9ded3be9   Ilyes Choubani   Display update. F...
516
517
518
                            ;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
519
520
                            
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
                                                       
                    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)
                        
                ;Plotting of refreshed data in normalized plot
                if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
                    
                    ;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
                    
                    IF ct_spec NE 0 THEN BEGIN
bffa7018   Ilyes Choubani   update
545
                        
9ded3be9   Ilyes Choubani   Display update. F...
546
547
548
549
550
551
552
553
554
                        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'
bffa7018   Ilyes Choubani   update
555
                        
8e55ab4d   Jean-Philippe Bernard   removed frequency...
556
                        ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
557
558
559
560
561
562
563
564
                    ENDIF
                    
                    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
bffa7018   Ilyes Choubani   update
565
                         
9ded3be9   Ilyes Choubani   Display update. F...
566
567
                            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'
bffa7018   Ilyes Choubani   update
568
                        
9ded3be9   Ilyes Choubani   Display update. F...
569
570
                        ENDIF
                    ENDIF
bffa7018   Ilyes Choubani   update
571
                        
9ded3be9   Ilyes Choubani   Display update. F...
572
573
                ;Plotting of frozen data in normalized plot    
                endif else begin 
bffa7018   Ilyes Choubani   update
574
                    
9ded3be9   Ilyes Choubani   Display update. F...
575
576
577
578
                    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
579
                
9ded3be9   Ilyes Choubani   Display update. F...
580
                endelse
bffa7018   Ilyes Choubani   update
581
                
bffa7018   Ilyes Choubani   update
582
                
9ded3be9   Ilyes Choubani   Display update. F...
583
                ;Plotting of refreshed data in normal plot
bffa7018   Ilyes Choubani   update
584
                
9ded3be9   Ilyes Choubani   Display update. F...
585
                if keyword_set(refresh) then begin ;The data points in the plot are being refreshed
bffa7018   Ilyes Choubani   update
586
                    
bffa7018   Ilyes Choubani   update
587
                    
9ded3be9   Ilyes Choubani   Display update. F...
588
589
                    ;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
590
                    
9ded3be9   Ilyes Choubani   Display update. F...
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
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
                    
                    ;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
633
                        
9ded3be9   Ilyes Choubani   Display update. F...
634
635
                        ;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
636
                        
9ded3be9   Ilyes Choubani   Display update. F...
637
638
639
640
641
642
643
644
645
646
647
                        ;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
648
649
                        
                        
9ded3be9   Ilyes Choubani   Display update. F...
650
651
652
                        ;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
653
                        
9ded3be9   Ilyes Choubani   Display update. F...
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
                    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
673
                        
9ded3be9   Ilyes Choubani   Display update. F...
674
675
676
                        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
677
                            
9ded3be9   Ilyes Choubani   Display update. F...
678
679
680
681
                            ;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
682
                        
9ded3be9   Ilyes Choubani   Display update. F...
683
684
685
                        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
686
                            
9ded3be9   Ilyes Choubani   Display update. F...
687
688
689
                            ;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
690
691
                            
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
692
693
                                                       
                    endif    
bffa7018   Ilyes Choubani   update
694
                    
9ded3be9   Ilyes Choubani   Display update. F...
695
696
697
698
699
700
                endelse 
              
            end
            
            ;Done but not tested.
            'POLSED': begin 
bffa7018   Ilyes Choubani   update
701
702
                
                
9ded3be9   Ilyes Choubani   Display update. F...
703
704
705
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.polsed.xr
                yr = !dustem_plot_range.polsed.yr
bffa7018   Ilyes Choubani   update
706
                
9ded3be9   Ilyes Choubani   Display update. F...
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
                idx_filt=where((*(*!dustem_data).polsed).filt_names NE 'SPECTRUM',ct_filt)
                idx_spec=where((*(*!dustem_data).polsed).filt_names EQ 'SPECTRUM',ct_spec)
                
                ;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
                    ENDIF
                    
                    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
                    ENDIF
                        
                ;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.
bffa7018   Ilyes Choubani   update
741
742
743
                    
                    xtit=textoidl('\lambda (\mum)')
                    if !run_pol then xtit = ''
9ded3be9   Ilyes Choubani   Display update. F...
744
745
                    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
746
                
9ded3be9   Ilyes Choubani   Display update. F...
747
748
749
750
                endelse
                
                ;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
751
                    
9ded3be9   Ilyes Choubani   Display update. F...
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
                    ;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...
779
                    ENDIF
bffa7018   Ilyes Choubani   update
780
                    
bffa7018   Ilyes Choubani   update
781
                    
9ded3be9   Ilyes Choubani   Display update. F...
782
783
784
785
786
                    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
787
                    
9ded3be9   Ilyes Choubani   Display update. F...
788
789
790
791
792
                    ;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
793
                
9ded3be9   Ilyes Choubani   Display update. F...
794
795
                    ;Spectrum points are treated before for plotting reasons. 
                    if ct_spec ne 0 then begin 
bffa7018   Ilyes Choubani   update
796
                        
9ded3be9   Ilyes Choubani   Display update. F...
797
798
                        ;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
799
                        
9ded3be9   Ilyes Choubani   Display update. F...
800
801
802
803
804
805
806
807
808
809
810
                        ;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
811
812
                        
                        
9ded3be9   Ilyes Choubani   Display update. F...
813
814
815
                        ;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
816
                        
9ded3be9   Ilyes Choubani   Display update. F...
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
                    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
836
                        
9ded3be9   Ilyes Choubani   Display update. F...
837
838
839
                        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
840
                            
9ded3be9   Ilyes Choubani   Display update. F...
841
842
843
844
                            ;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
845
                        
9ded3be9   Ilyes Choubani   Display update. F...
846
847
848
                        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
849
                            
9ded3be9   Ilyes Choubani   Display update. F...
850
851
852
                            ;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
853
854
                            
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
855
856
                                                       
                    endif    
bffa7018   Ilyes Choubani   update
857
                    
bffa7018   Ilyes Choubani   update
858
859
                endelse 
            
9ded3be9   Ilyes Choubani   Display update. F...
860
            end
bffa7018   Ilyes Choubani   update
861
            
9ded3be9   Ilyes Choubani   Display update. F...
862
            ;DONE BUT NOT TESTED...
bffa7018   Ilyes Choubani   update
863
            
9ded3be9   Ilyes Choubani   Display update. F...
864
865
866
867
868
869
870
871
            '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
872
                            
bffa7018   Ilyes Choubani   update
873
                        
9ded3be9   Ilyes Choubani   Display update. F...
874
875
876
877
878
879
880
                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
881
                        
9ded3be9   Ilyes Choubani   Display update. F...
882
                        testneq = where(st.polsed.(i+1) ne 0,countneq)
bffa7018   Ilyes Choubani   update
883
                        
9ded3be9   Ilyes Choubani   Display update. F...
884
885
                        if countneq ne 0 then begin 
                            vecfin = st.polsed.(i+1)*0.0
bffa7018   Ilyes Choubani   update
886
                            
9ded3be9   Ilyes Choubani   Display update. F...
887
                            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
888
                            
9ded3be9   Ilyes Choubani   Display update. F...
889
890
891
892
893
894
895
                            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
896
                        
9ded3be9   Ilyes Choubani   Display update. F...
897
                        if isa((*!dustem_plugin).(i).spec) then begin
bffa7018   Ilyes Choubani   update
898
                        
9ded3be9   Ilyes Choubani   Display update. F...
899
900
901
902
                            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
903
                            
9ded3be9   Ilyes Choubani   Display update. F...
904
                            ENDIF
bffa7018   Ilyes Choubani   update
905
906
                        endif
                        
9ded3be9   Ilyes Choubani   Display update. F...
907
                    endfor
bffa7018   Ilyes Choubani   update
908
                    
9ded3be9   Ilyes Choubani   Display update. F...
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
                     ;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
928
                            
9ded3be9   Ilyes Choubani   Display update. F...
929
930
931
932
933
                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
934
                        
9ded3be9   Ilyes Choubani   Display update. F...
935
936
                        ;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
937
                        
9ded3be9   Ilyes Choubani   Display update. F...
938
939
940
                        ;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
941

9ded3be9   Ilyes Choubani   Display update. F...
942
943
944
945
946
947
948
                    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
949
950
                        
                        
9ded3be9   Ilyes Choubani   Display update. F...
951
952
953
                        ;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
954
                        
9ded3be9   Ilyes Choubani   Display update. F...
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
                    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
972
                        
9ded3be9   Ilyes Choubani   Display update. F...
973
974
975
976
977
978
979
980
                        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
981
                        
9ded3be9   Ilyes Choubani   Display update. F...
982
                        if ct_filt_hdn ne 0 then begin
bffa7018   Ilyes Choubani   update
983
                            ;stop
9ded3be9   Ilyes Choubani   Display update. F...
984
985
986
987
988
989
990
991
                            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
992
                        endif 
9ded3be9   Ilyes Choubani   Display update. F...
993
994
                                                       
                    endif 
bffa7018   Ilyes Choubani   update
995
                    
bffa7018   Ilyes Choubani   update
996
                
9ded3be9   Ilyes Choubani   Display update. F...
997
                endelse 
bffa7018   Ilyes Choubani   update
998
            
9ded3be9   Ilyes Choubani   Display update. F...
999
            end
bffa7018   Ilyes Choubani   update
1000
            
9ded3be9   Ilyes Choubani   Display update. F...
1001
1002
1003
1004
1005
1006
1007
            ;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...
1008
                
9ded3be9   Ilyes Choubani   Display update. F...
1009
1010
1011
1012
                
                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
1013
                            
9ded3be9   Ilyes Choubani   Display update. F...
1014
1015
1016
1017
1018
                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
1019
                        
9ded3be9   Ilyes Choubani   Display update. F...
1020
1021
                    
                    FOR i=0L,Ngrains-1 DO BEGIN
bffa7018   Ilyes Choubani   update
1022
                        
9ded3be9   Ilyes Choubani   Display update. F...
1023
                        vecto = transpose((st.polext.(1))[i,*]+(st.polext.(2))[i,*])
bffa7018   Ilyes Choubani   update
1024
                        
9ded3be9   Ilyes Choubani   Display update. F...
1025
1026
1027
1028
                        testneq = where(vecto ne 0,countneq)
                        
                        if countneq ne 0 then begin 
                            vecfin = vecto*0.0
bffa7018   Ilyes Choubani   update
1029
                            
9ded3be9   Ilyes Choubani   Display update. F...
1030
1031
1032
1033
1034
1035
1036
1037
1038
                            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
1039
                        
9ded3be9   Ilyes Choubani   Display update. F...
1040
                        if isa((*!dustem_plugin).(0).spec) then begin
bffa7018   Ilyes Choubani   update
1041
                        
9ded3be9   Ilyes Choubani   Display update. F...
1042
1043
1044
1045
                            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
1046
                            
9ded3be9   Ilyes Choubani   Display update. F...
1047
                            ENDIF
bffa7018   Ilyes Choubani   update
1048
1049
                        endif
                        
9ded3be9   Ilyes Choubani   Display update. F...
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
                    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
1079
                        
9ded3be9   Ilyes Choubani   Display update. F...
1080
1081
                        ;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
1082
                        
9ded3be9   Ilyes Choubani   Display update. F...
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
                        ;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
1099
                        
9ded3be9   Ilyes Choubani   Display update. F...
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
                    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
1114
                        ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1115
1116
1117
1118
                        
                        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
1119
                            
9ded3be9   Ilyes Choubani   Display update. F...
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
                            ;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
1135
                        endif 
9ded3be9   Ilyes Choubani   Display update. F...
1136
1137
1138
1139
                                                       
                    endif 
                
                endelse 
bffa7018   Ilyes Choubani   update
1140
                    
9ded3be9   Ilyes Choubani   Display update. F...
1141
            END
bffa7018   Ilyes Choubani   update
1142
            
bffa7018   Ilyes Choubani   update
1143
            
9ded3be9   Ilyes Choubani   Display update. F...
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
             
            '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
1165
                        
9ded3be9   Ilyes Choubani   Display update. F...
1166
                            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
1167
                            
9ded3be9   Ilyes Choubani   Display update. F...
1168
1169
                            ;*****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
1170
                            
9ded3be9   Ilyes Choubani   Display update. F...
1171
1172
1173
                            ;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
1174
                            
9ded3be9   Ilyes Choubani   Display update. F...
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
                            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
1188
                            ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
                        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
1218
                        
9ded3be9   Ilyes Choubani   Display update. F...
1219
1220
                        ;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
1221
                        
9ded3be9   Ilyes Choubani   Display update. F...
1222
1223
1224
                        ;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
1225

9ded3be9   Ilyes Choubani   Display update. F...
1226
1227
1228
1229
1230
1231
1232
                    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
1233
                        
bffa7018   Ilyes Choubani   update
1234
                        
9ded3be9   Ilyes Choubani   Display update. F...
1235
1236
1237
                        ;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
1238
                        
9ded3be9   Ilyes Choubani   Display update. F...
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
                    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
1254
                        
9ded3be9   Ilyes Choubani   Display update. F...
1255
1256
1257
1258
1259
1260
1261
1262
                        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
1263
                        
9ded3be9   Ilyes Choubani   Display update. F...
1264
                        if ct_filt_hdn ne 0 then begin
bffa7018   Ilyes Choubani   update
1265
                            ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1266
1267
1268
1269
1270
1271
1272
1273
                            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
1274
                        endif 
9ded3be9   Ilyes Choubani   Display update. F...
1275
1276
                                                       
                    endif 
bffa7018   Ilyes Choubani   update
1277
                
9ded3be9   Ilyes Choubani   Display update. F...
1278
1279
1280
                endelse 
                   
            end
bffa7018   Ilyes Choubani   update
1281
            
9ded3be9   Ilyes Choubani   Display update. F...
1282
            ;DONE BUT NOT TESTED.
bffa7018   Ilyes Choubani   update
1283
            
9ded3be9   Ilyes Choubani   Display update. F...
1284
            '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
1285
                
9ded3be9   Ilyes Choubani   Display update. F...
1286
1287
1288
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.psi_ext.xr
                yr = !dustem_plot_range.psi_ext.yr
bffa7018   Ilyes Choubani   update
1289
1290
                
            
9ded3be9   Ilyes Choubani   Display update. F...
1291
1292
                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
1293
                
9ded3be9   Ilyes Choubani   Display update. F...
1294
1295
                            
                if keyword_set(refresh) then begin ;The data points in the plot are being refreshed
bffa7018   Ilyes Choubani   update
1296
                    
478a4d49   Ilyes Choubani   Correcting some p...
1297
                    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...
1298
1299
1300
1301
1302
1303
                    
                    ;##################TAKEN FROM SED
                    
                    ;Plotting of the spectra of the dust species
                    
                    FOR i=0L,Ngrains-1 DO BEGIN
bffa7018   Ilyes Choubani   update
1304
                        
9ded3be9   Ilyes Choubani   Display update. F...
1305
1306
1307
                        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
1308
                        
9ded3be9   Ilyes Choubani   Display update. F...
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
                        ;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
1332
1333
                            ENDIF
                        ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
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
                    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
1380
                        
9ded3be9   Ilyes Choubani   Display update. F...
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
                    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
1395
                        ;stop
bffa7018   Ilyes Choubani   update
1396
                        
9ded3be9   Ilyes Choubani   Display update. F...
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
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
                        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
            
                        
                ;Plotting of the refreshed 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
1448
                    
9ded3be9   Ilyes Choubani   Display update. F...
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
                   ;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 
                    ENDIF
bffa7018   Ilyes Choubani   update
1462
                    
9ded3be9   Ilyes Choubani   Display update. F...
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
                    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
bffa7018   Ilyes Choubani   update
1481
                
9ded3be9   Ilyes Choubani   Display update. F...
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
                endelse
                ;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
1498
                                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1499
1500
                                if countneq ne 0 then begin 
                                    vecfin = st.polsed.(i+1)*0.0 ;em_tot can be used here right? 
bffa7018   Ilyes Choubani   update
1501
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1502
                                    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
1503
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1504
1505
1506
                                    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
1507
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1508
                                endif
bffa7018   Ilyes Choubani   update
1509
                                
9ded3be9   Ilyes Choubani   Display update. F...
1510
1511
1512
                            ENDFOR
                            
                            for i=0L,n_plgns-1 do begin
bffa7018   Ilyes Choubani   update
1513
                                
9ded3be9   Ilyes Choubani   Display update. F...
1514
1515
1516
1517
1518
1519
                                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
1520
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
                            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
1533
                                
9ded3be9   Ilyes Choubani   Display update. F...
1534
1535
                                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
1536
                            
9ded3be9   Ilyes Choubani   Display update. F...
1537
                            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
1538
1539
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
                                
                    
                    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
1559
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1560
1561
1562
1563
1564
1565
                                    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
1566
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
                                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
1578
                                    ENDIF
bffa7018   Ilyes Choubani   update
1579
                                    
bffa7018   Ilyes Choubani   update
1580
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1581
1582
1583
1584
1585
                            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
1586
                                
9ded3be9   Ilyes Choubani   Display update. F...
1587
1588
                                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
1589
                            
9ded3be9   Ilyes Choubani   Display update. F...
1590
1591
1592
1593
1594
1595
1596
                            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
1597
                        
bffa7018   Ilyes Choubani   update
1598
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
                                
                    
                    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
1619
                        
9ded3be9   Ilyes Choubani   Display update. F...
1620
                        if testpstv ne 0 then begin
bffa7018   Ilyes Choubani   update
1621
                        
9ded3be9   Ilyes Choubani   Display update. F...
1622
1623
1624
1625
1626
                            plotsym, 0
                            
                            if ct_spec ne 0 then begin
                            
                                rms=2.*((*(*!dustem_data).qsed).sigma)(idx_spec)/2.
bffa7018   Ilyes Choubani   update
1627
                                
9ded3be9   Ilyes Choubani   Display update. F...
1628
1629
1630
1631
1632
1633
                                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
1634
                                
9ded3be9   Ilyes Choubani   Display update. F...
1635
1636
1637
                                rms=2.*((*(*!dustem_data).qsed).sigma)(idx_filt)/2.
                               
                               
3196a378   Ilyes Choubani   Complementing fit...
1638
                                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...
1639
1640
                                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
1641
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
                            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
1654
                                
9ded3be9   Ilyes Choubani   Display update. F...
1655
                                endif 
bffa7018   Ilyes Choubani   update
1656
                                
9ded3be9   Ilyes Choubani   Display update. F...
1657
                                if ct_filt_hdn_pstv ne 0 then begin
bffa7018   Ilyes Choubani   update
1658
                                
9ded3be9   Ilyes Choubani   Display update. F...
1659
1660
1661
                                    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
1662
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1663
1664
                                    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
1665
                                
9ded3be9   Ilyes Choubani   Display update. F...
1666
                                endif
bffa7018   Ilyes Choubani   update
1667
                                
9ded3be9   Ilyes Choubani   Display update. F...
1668
1669
1670
1671
1672
1673
1674
1675
                            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
1676
1677
                                
                            
9ded3be9   Ilyes Choubani   Display update. F...
1678
1679
1680
1681
1682
1683
1684
1685
1686
                            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
1687
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1688
1689
                                    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
1690
                                
9ded3be9   Ilyes Choubani   Display update. F...
1691
                                endif 
bffa7018   Ilyes Choubani   update
1692
                                
9ded3be9   Ilyes Choubani   Display update. F...
1693
                                if ct_filt_hdn_pstv ne 0 then begin
bffa7018   Ilyes Choubani   update
1694
                                
9ded3be9   Ilyes Choubani   Display update. F...
1695
1696
1697
                                    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
1698
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1699
1700
1701
                                    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
1702
1703
                                endif
                                
9ded3be9   Ilyes Choubani   Display update. F...
1704
1705
1706
1707
1708
1709
1710
1711
                            endif
                            
                        endelse                           
                    
                    endif 
                    
                    
                    if negative_only EQ 1 then begin
bffa7018   Ilyes Choubani   update
1712
                        
9ded3be9   Ilyes Choubani   Display update. F...
1713
1714
1715
                        if testngtv ne 0 then begin
                             
                             ;plotsym, 0
bffa7018   Ilyes Choubani   update
1716
                            
9ded3be9   Ilyes Choubani   Display update. F...
1717
1718
1719
                             if ct_spec ne 0 then begin
                             
                                 rms=2.*((*(*!dustem_data).qsed).sigma)(idx_spec)/2.
bffa7018   Ilyes Choubani   update
1720
                                 
9ded3be9   Ilyes Choubani   Display update. F...
1721
1722
1723
1724
1725
1726
                                 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
1727
                                 
9ded3be9   Ilyes Choubani   Display update. F...
1728
1729
1730
1731
                                 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
1732
                                 
9ded3be9   Ilyes Choubani   Display update. F...
1733
                                 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
1734
                                     
9ded3be9   Ilyes Choubani   Display update. F...
1735
1736
1737
1738
1739
1740
1741
1742
                             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
1743
                                     
9ded3be9   Ilyes Choubani   Display update. F...
1744
1745
1746
                                     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
1747
1748
                                 endif 
                                 
9ded3be9   Ilyes Choubani   Display update. F...
1749
                                 if ct_filt_hdn_ngtv ne 0 then begin
bffa7018   Ilyes Choubani   update
1750
                                 
9ded3be9   Ilyes Choubani   Display update. F...
1751
1752
1753
                                     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
1754
                                     
9ded3be9   Ilyes Choubani   Display update. F...
1755
1756
1757
                                     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
1758
                                 endif
9ded3be9   Ilyes Choubani   Display update. F...
1759
1760
                            
                             endif
bffa7018   Ilyes Choubani   update
1761

9ded3be9   Ilyes Choubani   Display update. F...
1762
1763
                        
                        endif else begin
bffa7018   Ilyes Choubani   update
1764
                            
9ded3be9   Ilyes Choubani   Display update. F...
1765
1766
                            
                            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
1767
                                
9ded3be9   Ilyes Choubani   Display update. F...
1768
1769
1770
1771
1772
1773
1774
1775
1776
                            
                            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
1777
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1778
1779
                                    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
1780
                                
9ded3be9   Ilyes Choubani   Display update. F...
1781
                                endif 
bffa7018   Ilyes Choubani   update
1782
                                
9ded3be9   Ilyes Choubani   Display update. F...
1783
                                if ct_filt_hdn_ngtv ne 0 then begin
bffa7018   Ilyes Choubani   update
1784
                                
9ded3be9   Ilyes Choubani   Display update. F...
1785
1786
1787
                                    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
1788
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
                                    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
1799
                    
bffa7018   Ilyes Choubani   update
1800
1801
                
                endelse 
9ded3be9   Ilyes Choubani   Display update. F...
1802
                    
bffa7018   Ilyes Choubani   update
1803
            
9ded3be9   Ilyes Choubani   Display update. F...
1804
            END
bffa7018   Ilyes Choubani   update
1805
            
9ded3be9   Ilyes Choubani   Display update. F...
1806
1807
            ;DONE BUT NOT TESTED...
            'USED': begin
bffa7018   Ilyes Choubani   update
1808
                
9ded3be9   Ilyes Choubani   Display update. F...
1809
1810
1811
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.used.xr
                yr = !dustem_plot_range.used.yr
bffa7018   Ilyes Choubani   update
1812
                
9ded3be9   Ilyes Choubani   Display update. F...
1813
1814
1815
1816
                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
1817
            
9ded3be9   Ilyes Choubani   Display update. F...
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
                ;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
                
                ;Refreshing of the data in the normalized plot
                if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
                    
                    ;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
                    
                    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
                    ENDIF
bffa7018   Ilyes Choubani   update
1846
                    
9ded3be9   Ilyes Choubani   Display update. F...
1847
                    IF ct_filt NE 0 THEN BEGIN
bffa7018   Ilyes Choubani   update
1848
                        
9ded3be9   Ilyes Choubani   Display update. F...
1849
1850
1851
1852
                        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)
bffa7018   Ilyes Choubani   update
1853
                        
9ded3be9   Ilyes Choubani   Display update. F...
1854
1855
1856
                        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' 
bffa7018   Ilyes Choubani   update
1857
                        ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1858
1859
1860
1861
                    ENDIF
  
                ;plotting of the frozen data in the normalized plot
                endif else begin 
bffa7018   Ilyes Choubani   update
1862
                    
9ded3be9   Ilyes Choubani   Display update. F...
1863
                    xtit=textoidl('\lambda (\mum)')
bffa7018   Ilyes Choubani   update
1864
                    
9ded3be9   Ilyes Choubani   Display update. F...
1865
1866
                    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
1867
                
9ded3be9   Ilyes Choubani   Display update. F...
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
                endelse
                
                
                ;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
1882
                        
9ded3be9   Ilyes Choubani   Display update. F...
1883
1884
1885
1886
1887
1888
                            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
1889
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1890
                                    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
1891
                                        
9ded3be9   Ilyes Choubani   Display update. F...
1892
1893
1894
1895
                                    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
1896
                                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1897
1898
1899
1900
1901
1902
1903
                            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
1904
                                        
9ded3be9   Ilyes Choubani   Display update. F...
1905
1906
                                        
                                        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
1907
1908
                                    ENDIF
                                    
bffa7018   Ilyes Choubani   update
1909
1910
                                ENDIF
                                
9ded3be9   Ilyes Choubani   Display update. F...
1911
                            endfor
bffa7018   Ilyes Choubani   update
1912
                            
9ded3be9   Ilyes Choubani   Display update. F...
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
                            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
1928
1929
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
                                
                    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
1947
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
                                    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
1962
                                    ENDIF
bffa7018   Ilyes Choubani   update
1963
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1964
1965
1966
1967
1968
1969
1970
1971
                            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
1972
                            
9ded3be9   Ilyes Choubani   Display update. F...
1973
1974
1975
1976
1977
1978
1979
1980
1981
                            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
1982
1983
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
                                
                    
                    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
2006
                        ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2007
                        if testpstv ne 0 then begin
bffa7018   Ilyes Choubani   update
2008
                        ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
                            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
2024
                                
9ded3be9   Ilyes Choubani   Display update. F...
2025
2026
2027
2028
2029
2030
2031
                                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
2032
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
                            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
2045
                                
9ded3be9   Ilyes Choubani   Display update. F...
2046
                                endif 
bffa7018   Ilyes Choubani   update
2047
                                
9ded3be9   Ilyes Choubani   Display update. F...
2048
2049
2050
2051
2052
                                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
2053
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2054
2055
                                    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
2056
                                
9ded3be9   Ilyes Choubani   Display update. F...
2057
2058
2059
2060
2061
                                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
2062
                                
9ded3be9   Ilyes Choubani   Display update. F...
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
                            
                            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
2076
                                
9ded3be9   Ilyes Choubani   Display update. F...
2077
                                endif 
bffa7018   Ilyes Choubani   update
2078
                                
9ded3be9   Ilyes Choubani   Display update. F...
2079
2080
2081
2082
2083
                                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
2084
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
                                    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
2104
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2105
                                 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
2106
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2107
2108
2109
2110
2111
                                 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
2112
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2113
2114
2115
2116
                                 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
2117
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2118
                                 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
2119
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2120
2121
2122
2123
2124
2125
2126
2127
                             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
2128
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2129
2130
                                     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
2131
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2132
                                 endif 
bffa7018   Ilyes Choubani   update
2133
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2134
2135
2136
2137
2138
                                 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
2139
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2140
2141
2142
2143
                                     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
2144

9ded3be9   Ilyes Choubani   Display update. F...
2145
2146
2147
2148
2149
2150
2151
2152
                             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
2153
                            
bffa7018   Ilyes Choubani   update
2154
                            
9ded3be9   Ilyes Choubani   Display update. F...
2155
2156
2157
2158
2159
2160
                            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
2161
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2162
2163
                                    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
2164
                                
9ded3be9   Ilyes Choubani   Display update. F...
2165
                                endif 
bffa7018   Ilyes Choubani   update
2166
                                
9ded3be9   Ilyes Choubani   Display update. F...
2167
                                if ct_filt_hdn_ngtv ne 0 then begin
bffa7018   Ilyes Choubani   update
2168
                                
9ded3be9   Ilyes Choubani   Display update. F...
2169
2170
2171
                                    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
2172
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2173
2174
2175
2176
                                    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
2177

9ded3be9   Ilyes Choubani   Display update. F...
2178
2179
2180
                            endif     
                             
                        endelse
bffa7018   Ilyes Choubani   update
2181
                        
9ded3be9   Ilyes Choubani   Display update. F...
2182
                    endif
bffa7018   Ilyes Choubani   update
2183
                    
bffa7018   Ilyes Choubani   update
2184
2185
                
                endelse 
bffa7018   Ilyes Choubani   update
2186
                    
bffa7018   Ilyes Choubani   update
2187
                
9ded3be9   Ilyes Choubani   Display update. F...
2188
            end
bffa7018   Ilyes Choubani   update
2189
            
9ded3be9   Ilyes Choubani   Display update. F...
2190
            'QEXT': begin   ;Correct this like you corrected extinction...
bffa7018   Ilyes Choubani   update
2191
                
9ded3be9   Ilyes Choubani   Display update. F...
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
                ;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
2214
                        
9ded3be9   Ilyes Choubani   Display update. F...
2215
2216
                        
                ;refreshing of the normalized plot
bffa7018   Ilyes Choubani   update
2217
                
9ded3be9   Ilyes Choubani   Display update. F...
2218
2219
2220
                if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
                    
                    ;Making sure we're placed in the right plot to refresh. Here normalized plot for QEXT.
3196a378   Ilyes Choubani   Complementing fit...
2221
                    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
9ded3be9   Ilyes Choubani   Display update. F...
2222
2223
                    
                    IF ct_spec NE 0 THEN BEGIN
bffa7018   Ilyes Choubani   update
2224
                        
9ded3be9   Ilyes Choubani   Display update. F...
2225
2226
2227
                        xx=((*(*!dustem_data).qext).wav)[idx_spec]
                        yy=dustem_interp[idx_spec]
                        rms=2.*((*(*!dustem_data).qext).sigma)(idx_spec)/2.
bffa7018   Ilyes Choubani   update
2228
                        
9ded3be9   Ilyes Choubani   Display update. F...
2229
2230
2231
                        ;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)
bffa7018   Ilyes Choubani   update
2232
                        
9ded3be9   Ilyes Choubani   Display update. F...
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
                        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
                    
                    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
                    ENDIF
  
                ;Plotting of thr frozen data in the normalized plot    
                endif else begin ;The data points in the plot that remain unchanged
bffa7018   Ilyes Choubani   update
2255
                    
9ded3be9   Ilyes Choubani   Display update. F...
2256
                    xtit=textoidl('1/\lambda (\mum^{-1})')
bffa7018   Ilyes Choubani   update
2257
                    
3196a378   Ilyes Choubani   Complementing fit...
2258
                    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
9ded3be9   Ilyes Choubani   Display update. F...
2259
                    xyouts,pospltxt_n[0],pospltxt_n[1],textoidl('norm'),color=0,/normal,charsize=1.1
bffa7018   Ilyes Choubani   update
2260
                
9ded3be9   Ilyes Choubani   Display update. F...
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
                endelse
                      
                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
2281
                                
bffa7018   Ilyes Choubani   update
2282

9ded3be9   Ilyes Choubani   Display update. F...
2283
2284
2285
2286
2287
2288
2289
                                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
2290
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2291
                                    ;if countneg ne 0 and cos(!dustem_psi_ext) gt 0 then specqgrain[testneg] = 0
bffa7018   Ilyes Choubani   update
2292
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2293
2294
                                    ;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
2295
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2296
                                endif
bffa7018   Ilyes Choubani   update
2297
                                
bffa7018   Ilyes Choubani   update
2298
                                
9ded3be9   Ilyes Choubani   Display update. F...
2299
2300
2301
                            ENDFOR
                            
                            for i=0L,n_plgns-1 do begin
bffa7018   Ilyes Choubani   update
2302
                                
9ded3be9   Ilyes Choubani   Display update. F...
2303
2304
2305
2306
2307
                                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
2308
                                    ENDIF
bffa7018   Ilyes Choubani   update
2309
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
                            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
2327
                            
bffa7018   Ilyes Choubani   update
2328
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
2329
2330
2331
2332
2333
2334
2335
2336
2337
                                
                    
                    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
2338
                        
9ded3be9   Ilyes Choubani   Display update. F...
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
                            ;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
2378
                            
9ded3be9   Ilyes Choubani   Display update. F...
2379
2380
2381
2382
2383
2384
2385
2386
                            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
2387
                        
9ded3be9   Ilyes Choubani   Display update. F...
2388
                        endif
bffa7018   Ilyes Choubani   update
2389
                                
9ded3be9   Ilyes Choubani   Display update. F...
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
                    
                    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
2422
                                
9ded3be9   Ilyes Choubani   Display update. F...
2423
2424
2425
2426
2427
                                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
2428
                                
9ded3be9   Ilyes Choubani   Display update. F...
2429
2430
2431
2432
2433
                                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
2434
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2435
2436
2437
2438
2439
2440
2441
2442
2443
                            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
2444
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2445
2446
                                    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
2447
                                
9ded3be9   Ilyes Choubani   Display update. F...
2448
                                endif 
bffa7018   Ilyes Choubani   update
2449
                                
9ded3be9   Ilyes Choubani   Display update. F...
2450
                                if ct_filt_hdn_pstv ne 0 then begin
bffa7018   Ilyes Choubani   update
2451
                                
9ded3be9   Ilyes Choubani   Display update. F...
2452
2453
2454
                                    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
2455
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2456
2457
                                    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
2458
                                
9ded3be9   Ilyes Choubani   Display update. F...
2459
                                endif
bffa7018   Ilyes Choubani   update
2460
                                
9ded3be9   Ilyes Choubani   Display update. F...
2461
                            endif
bffa7018   Ilyes Choubani   update
2462
2463
                            
                            
9ded3be9   Ilyes Choubani   Display update. F...
2464
                        endif else begin
bffa7018   Ilyes Choubani   update
2465
2466
                        
                        
9ded3be9   Ilyes Choubani   Display update. F...
2467
2468
                            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
2469
                            
9ded3be9   Ilyes Choubani   Display update. F...
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
                            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
2498
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2499
2500
2501
2502
2503
2504
                                 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
2505
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2506
                                 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
2507
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2508
2509
2510
2511
2512
2513
2514
2515
                             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
2516
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2517
2518
2519
2520
                                     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
2521
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2522
                                 if ct_filt_hdn_ngtv ne 0 then begin
bffa7018   Ilyes Choubani   update
2523
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2524
2525
2526
                                     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
2527
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
                                     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
2538
                                
bffa7018   Ilyes Choubani   update
2539
                            
9ded3be9   Ilyes Choubani   Display update. F...
2540
                            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
2541
                            
9ded3be9   Ilyes Choubani   Display update. F...
2542
2543
2544
                        endelse
            
                    endif
bffa7018   Ilyes Choubani   update
2545
2546
                
                endelse 
9ded3be9   Ilyes Choubani   Display update. F...
2547
2548
                    
            end
bffa7018   Ilyes Choubani   update
2549
            
9ded3be9   Ilyes Choubani   Display update. F...
2550
            'UEXT': begin
bffa7018   Ilyes Choubani   update
2551
                
9ded3be9   Ilyes Choubani   Display update. F...
2552
2553
2554
               ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.uext.xr
                yr = !dustem_plot_range.uext.yr
bffa7018   Ilyes Choubani   update
2555
                    
9ded3be9   Ilyes Choubani   Display update. F...
2556
2557
2558
2559
2560
2561
2562
                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
2563
                
9ded3be9   Ilyes Choubani   Display update. F...
2564
2565
2566
                ;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
2567
                
9ded3be9   Ilyes Choubani   Display update. F...
2568
                ;Plotting of frequency axis
bffa7018   Ilyes Choubani   update
2569
                
9ded3be9   Ilyes Choubani   Display update. F...
2570
2571
2572
2573
2574
                ;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
                        
                if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
bffa7018   Ilyes Choubani   update
2575
                    
9ded3be9   Ilyes Choubani   Display update. F...
2576
                    ;Making sure we're placed in the right plot to refresh. Here normalized plot for QEXT.
3196a378   Ilyes Choubani   Complementing fit...
2577
                    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
9ded3be9   Ilyes Choubani   Display update. F...
2578
2579
                    
                    IF ct_spec NE 0 THEN BEGIN
bffa7018   Ilyes Choubani   update
2580
                        
9ded3be9   Ilyes Choubani   Display update. F...
2581
2582
2583
                        xx=((*(*!dustem_data).uext).wav)[idx_spec]
                        yy=dustem_interp[idx_spec]
                        rms=2.*((*(*!dustem_data).uext).sigma)(idx_spec)/2.
bffa7018   Ilyes Choubani   update
2584
                        
9ded3be9   Ilyes Choubani   Display update. F...
2585
2586
2587
2588
                        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'
bffa7018   Ilyes Choubani   update
2589
                        ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2590
2591
2592
                    ENDIF
                    
                    IF ct_filt NE 0 THEN BEGIN
bffa7018   Ilyes Choubani   update
2593
                        ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
                        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
                    ENDIF
  
bffa7018   Ilyes Choubani   update
2604
                    
9ded3be9   Ilyes Choubani   Display update. F...
2605
2606
                endif else begin ;The data points in the plot that remain unchanged
                    ;stop
bffa7018   Ilyes Choubani   update
2607
                    
9ded3be9   Ilyes Choubani   Display update. F...
2608
2609
                    xtit=textoidl('1/\lambda (\mum^{-1})')
                    ;if !run_pol then xtit = ''
3196a378   Ilyes Choubani   Complementing fit...
2610
                    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
9ded3be9   Ilyes Choubani   Display update. F...
2611
                    xyouts,pospltxt_n[0],pospltxt_n[1],textoidl('norm'),color=0,/normal,charsize=1.1
bffa7018   Ilyes Choubani   update
2612
                
9ded3be9   Ilyes Choubani   Display update. F...
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
                endelse
                          
                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
2628
                                
9ded3be9   Ilyes Choubani   Display update. F...
2629
2630
2631
2632
2633
2634
2635
2636
2637
                                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
2638
                                    
bffa7018   Ilyes Choubani   update
2639
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2640
2641
                                    ;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
2642
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2643
2644
2645
2646
2647
                                endif
                                ;stop
                            ENDFOR
                            
                            for i=0L,n_plgns-1 do begin
bffa7018   Ilyes Choubani   update
2648
                                
9ded3be9   Ilyes Choubani   Display update. F...
2649
2650
2651
2652
2653
                                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
2654
                                    ENDIF
bffa7018   Ilyes Choubani   update
2655
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2656
                            endfor
bffa7018   Ilyes Choubani   update
2657
                            
9ded3be9   Ilyes Choubani   Display update. F...
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
                            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
2673
2674
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
                                
                    
                    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
2695
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
                                    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
2712
                                    ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2713
                                    
bffa7018   Ilyes Choubani   update
2714
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2715
2716
2717
2718
2719
2720
2721
2722
                            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
2723
                            
9ded3be9   Ilyes Choubani   Display update. F...
2724
2725
2726
2727
2728
2729
2730
2731
                            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
2732
2733
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
                                
                    
                    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
2758
                        
bffa7018   Ilyes Choubani   update
2759
                            
9ded3be9   Ilyes Choubani   Display update. F...
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
                            
                            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
2771
                                
9ded3be9   Ilyes Choubani   Display update. F...
2772
2773
2774
2775
2776
                                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
2777
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2778
2779
2780
2781
2782
2783
                            endif
                            
                            
                            if testpstv ne 0 then begin
                            
                                plotsym, 0
bffa7018   Ilyes Choubani   update
2784
                                
9ded3be9   Ilyes Choubani   Display update. F...
2785
                                if ct_hdnpts NE 0 then begin
bffa7018   Ilyes Choubani   update
2786
                                
9ded3be9   Ilyes Choubani   Display update. F...
2787
2788
2789
2790
2791
2792
2793
                                    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
2794
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2795
                                    endif 
bffa7018   Ilyes Choubani   update
2796
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2797
2798
2799
2800
2801
                                    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
2802
                                        
9ded3be9   Ilyes Choubani   Display update. F...
2803
2804
2805
                                        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
2806
                                    endif
bffa7018   Ilyes Choubani   update
2807
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2808
2809
2810
2811
                                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
2812
                                
bffa7018   Ilyes Choubani   update
2813
                            
9ded3be9   Ilyes Choubani   Display update. F...
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
                            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
2831
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
                                 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
2842
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2843
2844
2845
2846
2847
2848
                                 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
2849
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2850
                                 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
2851
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2852
2853
2854
2855
2856
2857
2858
2859
                             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
2860
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2861
2862
                                     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
2863
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2864
2865
2866
2867
2868
2869
2870
                                 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
2871
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2872
2873
2874
                                     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
2875
2876
                                 endif
                            
9ded3be9   Ilyes Choubani   Display update. F...
2877
                             endif
bffa7018   Ilyes Choubani   update
2878
                        
9ded3be9   Ilyes Choubani   Display update. F...
2879
2880
2881
2882
2883
2884
2885
                        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
2886
                    
9ded3be9   Ilyes Choubani   Display update. F...
2887
2888
2889
                        endelse
                        ;stop
                    endif
bffa7018   Ilyes Choubani   update
2890
2891
                
                endelse 
9ded3be9   Ilyes Choubani   Display update. F...
2892
2893
              
            end
bffa7018   Ilyes Choubani   update
2894
            
9ded3be9   Ilyes Choubani   Display update. F...
2895
            'PARAMETERS':begin ;needs the followingd data (errors+res+formats)
bffa7018   Ilyes Choubani   update
2896
                
9ded3be9   Ilyes Choubani   Display update. F...
2897
                p_dim = dustem_interp
bffa7018   Ilyes Choubani   update
2898
                
9ded3be9   Ilyes Choubani   Display update. F...
2899
                Npar=n_elements(p_dim)
bffa7018   Ilyes Choubani   update
2900
                
9ded3be9   Ilyes Choubani   Display update. F...
2901
                if keyword_set(refresh) then begin ;data in the parameter window that is being refreshed
bffa7018   Ilyes Choubani   update
2902
                    
9ded3be9   Ilyes Choubani   Display update. F...
2903
                    k=0    
bffa7018   Ilyes Choubani   update
2904
                        
9ded3be9   Ilyes Choubani   Display update. F...
2905
                    IF isa((*!dustem_fit).fixed_param_descs) THEN BEGIN
bffa7018   Ilyes Choubani   update
2906
                        
9ded3be9   Ilyes Choubani   Display update. F...
2907
2908
2909
2910
                        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
2911
                            
9ded3be9   Ilyes Choubani   Display update. F...
2912
2913
                            parameter_description = (*(*!dustem_fit).fixed_param_descs)[i]     
                            parameter_type = dustem_parameter_description2type(parameter_description,string_name=string_name)
bffa7018   Ilyes Choubani   update
2914
                            
9ded3be9   Ilyes Choubani   Display update. F...
2915
2916
2917
2918
                            IF parameter_type NE 'PLUGIN' THEN BEGIN                       
                                yypos = 0.8 - k*0.09
                                k+=1
                            ENDIF 
bffa7018   Ilyes Choubani   update
2919
                            
9ded3be9   Ilyes Choubani   Display update. F...
2920
2921
2922
                        ENDFOR  
                         
                    ENDIF
bffa7018   Ilyes Choubani   update
2923
                    
9ded3be9   Ilyes Choubani   Display update. F...
2924
2925
                    prms_dscs = (*(*!dustem_fit).param_descs)
                    prms_tps = strarr(n_elements(prms_dscs))
c9abf9b4   Ilyes Choubani   Uploading stellar...
2926
                    
9ded3be9   Ilyes Choubani   Display update. F...
2927
2928
2929
                    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...
2930
                    
9ded3be9   Ilyes Choubani   Display update. F...
2931
2932
                    testprms = where(prms_tps ne 'PLUGIN', ct_data)
                    if ct_data ne 0 then begin
bffa7018   Ilyes Choubani   update
2933
                    
9ded3be9   Ilyes Choubani   Display update. F...
2934
                        if ~isa(yypos) then yypos = 0.8 else yypos-=0.22 ;not sure about this
bffa7018   Ilyes Choubani   update
2935
                        
bffa7018   Ilyes Choubani   update
2936
                        
9ded3be9   Ilyes Choubani   Display update. F...
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
                        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
2958
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2959
2960
2961
2962
2963
2964
2965
2966
                                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
2967
2968
                                
                            ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
                               
                        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
2983
                            
9ded3be9   Ilyes Choubani   Display update. F...
2984
2985
2986
                            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
2987
                            
9ded3be9   Ilyes Choubani   Display update. F...
2988
                        ENDFOR
bffa7018   Ilyes Choubani   update
2989
                        
9ded3be9   Ilyes Choubani   Display update. F...
2990
2991
2992
2993
2994
2995
2996
                        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
2997
                        
9ded3be9   Ilyes Choubani   Display update. F...
2998
                        FOR i=0L,Nfpar-1 DO BEGIN
bffa7018   Ilyes Choubani   update
2999
                            
9ded3be9   Ilyes Choubani   Display update. F...
3000
3001
3002
                            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
3003
                            
9ded3be9   Ilyes Choubani   Display update. F...
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
                            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
3020
                            
9ded3be9   Ilyes Choubani   Display update. F...
3021
3022
3023
3024
                            ENDIF    
                             
                        ENDFOR  
                         
bffa7018   Ilyes Choubani   update
3025
3026
                    ENDIF
                    
bffa7018   Ilyes Choubani   update
3027
                    
9ded3be9   Ilyes Choubani   Display update. F...
3028
                    xxpos = 0.5 
bffa7018   Ilyes Choubani   update
3029
                    
9ded3be9   Ilyes Choubani   Display update. F...
3030
                    ;test so that this string isn't displayed when there are no free parameters: 
bffa7018   Ilyes Choubani   update
3031
                    
9ded3be9   Ilyes Choubani   Display update. F...
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
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
                    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...
3087
                        
9ded3be9   Ilyes Choubani   Display update. F...
3088
                        ENDFOR
ab4dc92e   Ilyes Choubani   Slight modificati...
3089
                        
9ded3be9   Ilyes Choubani   Display update. F...
3090
                    ENDIF
bffa7018   Ilyes Choubani   update
3091
                        
9ded3be9   Ilyes Choubani   Display update. F...
3092
3093
3094
3095
3096
3097
                    
                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
3098
                
9ded3be9   Ilyes Choubani   Display update. F...
3099
3100
3101
3102
3103
                p_dim = dustem_interp
            
                Npar=n_elements(p_dim)
            
                if keyword_set(refresh) then begin ;(REFRESHED RUN) 
bffa7018   Ilyes Choubani   update
3104
                    
9ded3be9   Ilyes Choubani   Display update. F...
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
                    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
3125
                    
bffa7018   Ilyes Choubani   update
3126
                    
9ded3be9   Ilyes Choubani   Display update. F...
3127
3128
                    prms_dscs = (*(*!dustem_fit).param_descs)
                    prms_tps = strarr(n_elements(prms_dscs))
bffa7018   Ilyes Choubani   update
3129
                    
9ded3be9   Ilyes Choubani   Display update. F...
3130
3131
3132
3133
3134
                    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
3135
                    
9ded3be9   Ilyes Choubani   Display update. F...
3136
                    if ct_data ne 0 then begin
bffa7018   Ilyes Choubani   update
3137
                    
9ded3be9   Ilyes Choubani   Display update. F...
3138
                        if ~isa(yypos) then yypos = 0.8 else yypos-=0.22 ;not sure about this
bffa7018   Ilyes Choubani   update
3139
                        
9ded3be9   Ilyes Choubani   Display update. F...
3140
3141
3142
3143
                        k=0
                        res = dustem_interp
                        errors = dustem_spec
                        yypostmp = yypos
bffa7018   Ilyes Choubani   update
3144
                        
9ded3be9   Ilyes Choubani   Display update. F...
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
                        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...
3175
                               
9ded3be9   Ilyes Choubani   Display update. F...
3176
3177
3178
3179
                                k+=1
                                
                            ENDIF          
                                    
bffa7018   Ilyes Choubani   update
3180
                        
9ded3be9   Ilyes Choubani   Display update. F...
3181
3182
3183
3184
3185
3186
3187
3188
                        ENDFOR
                    
                 ENDIF
                    
                endif else begin ;plotting of strings that are fixed
                    
                    
                    IF isa((*!dustem_fit).fixed_param_descs) THEN BEGIN
bffa7018   Ilyes Choubani   update
3189
                        
9ded3be9   Ilyes Choubani   Display update. F...
3190
3191
                        Nfpar = n_elements((*(*!dustem_fit).fixed_param_descs))
                        res = (*(*!dustem_fit).fixed_param_init_values)
bffa7018   Ilyes Choubani   update
3192
                        
9ded3be9   Ilyes Choubani   Display update. F...
3193
3194
                        iii=0
                        FOR i=0L,Nfpar-1 DO BEGIN
bffa7018   Ilyes Choubani   update
3195
                            
9ded3be9   Ilyes Choubani   Display update. F...
3196
3197
3198
                            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
3199
                            
9ded3be9   Ilyes Choubani   Display update. F...
3200
3201
3202
3203
3204
                        ENDFOR
                        k = 0
                        if iii ne 0 then begin
                            xxpos = 0.5
                            yypos = 0.9
bffa7018   Ilyes Choubani   update
3205
                            
9ded3be9   Ilyes Choubani   Display update. F...
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
                            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
3236
                         
9ded3be9   Ilyes Choubani   Display update. F...
3237
3238
3239
3240
3241
3242
                    ENDIF
                    
                    xxpos = 0
                    
                    prms_dscs = (*(*!dustem_fit).param_descs)
                    prms_tps = strarr(n_elements(prms_dscs))
bffa7018   Ilyes Choubani   update
3243
                     
9ded3be9   Ilyes Choubani   Display update. F...
3244
3245
3246
                    for i=0L,n_elements(prms_dscs)-1 do begin
                        prms_tps[i] = dustem_parameter_description2type(prms_dscs[i])
                    endfor
bffa7018   Ilyes Choubani   update
3247
                    
9ded3be9   Ilyes Choubani   Display update. F...
3248
                    testprms = where(prms_tps EQ 'PLUGIN', ct_data)
bffa7018   Ilyes Choubani   update
3249
                    
9ded3be9   Ilyes Choubani   Display update. F...
3250
3251
3252
3253
3254
3255
3256
3257
                    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
3258
3259
                        
                        
9ded3be9   Ilyes Choubani   Display update. F...
3260
3261
3262
3263
3264
                        k=0
                        res = dustem_interp
                        errors = dustem_spec
                        yypos-=0.1
                        yypostmp = yypos
bffa7018   Ilyes Choubani   update
3265
                            
9ded3be9   Ilyes Choubani   Display update. F...
3266
3267
3268
3269
                        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
3270
                            
bffa7018   Ilyes Choubani   update
3271
                            
9ded3be9   Ilyes Choubani   Display update. F...
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
                            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...
3292
3293
                                
                                
9ded3be9   Ilyes Choubani   Display update. F...
3294
3295
3296
3297
3298
3299
3300
                                 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...
3301
                                  
9ded3be9   Ilyes Choubani   Display update. F...
3302
3303
3304
3305
                                k+=1
                                
                            ENDIF
                              
bffa7018   Ilyes Choubani   update
3306
                            
bffa7018   Ilyes Choubani   update
3307
                        
9ded3be9   Ilyes Choubani   Display update. F...
3308
3309
3310
3311
3312
3313
3314
3315
                        ENDFOR
                    ENDIF
                endelse
             
            
            
            end
            
bffa7018   Ilyes Choubani   update
3316
        
9ded3be9   Ilyes Choubani   Display update. F...
3317
        endcase
bffa7018   Ilyes Choubani   update
3318
    
9ded3be9   Ilyes Choubani   Display update. F...
3319
    endfor
bffa7018   Ilyes Choubani   update
3320
3321
3322
3323

endif


18e47096   Ilyes Choubani   corrections for e...
3324
3325
3326
3327
3328
3329
3330
3331
;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
3332
3333
3334
3335
the_end:


END