Blame view

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

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

af2812ab   Annie Hughes   updated doc help
64

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


9ded3be9   Ilyes Choubani   Display update. F...
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
;****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
87
88
89
90
91
92
93

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

bffa7018   Ilyes Choubani   update
95
96
97
98
99
100
101
102
103
104
105
106
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...
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
; 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
123

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

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

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

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

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

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

9ded3be9   Ilyes Choubani   Display update. F...
1246
1247
1248
1249
1250
1251
1252
                    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
1253
                        
bffa7018   Ilyes Choubani   update
1254
                        
9ded3be9   Ilyes Choubani   Display update. F...
1255
1256
1257
                        ;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
1258
                        
9ded3be9   Ilyes Choubani   Display update. F...
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
                    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
1274
                        
9ded3be9   Ilyes Choubani   Display update. F...
1275
1276
1277
1278
1279
1280
1281
1282
                        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
1283
                        
9ded3be9   Ilyes Choubani   Display update. F...
1284
                        if ct_filt_hdn ne 0 then begin
bffa7018   Ilyes Choubani   update
1285
                            ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1286
1287
1288
1289
1290
1291
1292
1293
                            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
1294
                        endif 
9ded3be9   Ilyes Choubani   Display update. F...
1295
1296
                                                       
                    endif 
bffa7018   Ilyes Choubani   update
1297
                
9ded3be9   Ilyes Choubani   Display update. F...
1298
1299
1300
                endelse 
                   
            end
bffa7018   Ilyes Choubani   update
1301
            
9ded3be9   Ilyes Choubani   Display update. F...
1302
            ;DONE BUT NOT TESTED.
bffa7018   Ilyes Choubani   update
1303
            
9ded3be9   Ilyes Choubani   Display update. F...
1304
            '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
1305
                
9ded3be9   Ilyes Choubani   Display update. F...
1306
1307
1308
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.psi_ext.xr
                yr = !dustem_plot_range.psi_ext.yr
bffa7018   Ilyes Choubani   update
1309
1310
                
            
9ded3be9   Ilyes Choubani   Display update. F...
1311
1312
                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
1313
                
9ded3be9   Ilyes Choubani   Display update. F...
1314
1315
                            
                if keyword_set(refresh) then begin ;The data points in the plot are being refreshed
bffa7018   Ilyes Choubani   update
1316
                    
478a4d49   Ilyes Choubani   Correcting some p...
1317
                    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...
1318
1319
1320
1321
1322
1323
                    
                    ;##################TAKEN FROM SED
                    
                    ;Plotting of the spectra of the dust species
                    
                    FOR i=0L,Ngrains-1 DO BEGIN
bffa7018   Ilyes Choubani   update
1324
                        
9ded3be9   Ilyes Choubani   Display update. F...
1325
1326
1327
                        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
1328
                        
9ded3be9   Ilyes Choubani   Display update. F...
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
                        ;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
1352
1353
                            ENDIF
                        ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
                    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
1400
                        
9ded3be9   Ilyes Choubani   Display update. F...
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
                    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
1415
                        ;stop
bffa7018   Ilyes Choubani   update
1416
                        
9ded3be9   Ilyes Choubani   Display update. F...
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
                        if ct_spec_hdn ne 0 then begin
                            ;Plotting of hidden spectrum data points
                            cgplot,1/(((*(*!dustem_show).psi_ext).wav)[idx_rmv_psi_em])(idx_spec_hdn),(((*(*!dustem_show).psi_ext).values)[idx_rmv_psi_em])(idx_spec_hdn),pos=position[0],/xlog,/ys,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=8,syms=0.8
                            
                            ;Plotting of hidden spectrum error points
                            rms=2.*(((*(*!dustem_show).psi_ext).sigma)[idx_rmv_psi_em])(idx_spec_hdn)/2.
                            cgerrplot,1/(((*(*!dustem_show).psi_ext).wav)[idx_rmv_psi_em])(idx_spec_hdn),(((*(*!dustem_show).psi_ext).values)[idx_rmv_psi_em])(idx_spec_hdn)-rms,(((*(*!dustem_show).psi_ext).values)[idx_rmv_psi_em])(idx_spec_hdn)+rms,color='Black'
                        endif                                           
                        
                        if ct_filt_hdn ne 0 then begin
                            ;stop
                            plotsym,0, /fill
                            ;Plotting of hidden filter data points 
                            cgplot,1/(((*(*!dustem_show).psi_ext).wav)[idx_rmv_psi_em])(idx_filt_hdn),(((*(*!dustem_show).psi_ext).values)[idx_rmv_psi_em])(idx_filt_hdn),pos=position[0],/xlog,/ys,xs=1,noerase=1,charsize=1.15,xtickformat='(A1)',color='Black',xr=xr,yr=yr,psym=8,syms=0.8                                           
                            ;stop
                            ;Plotting of hidden filter error point
                            rms=2.*(((*(*!dustem_show).psi_ext).sigma)[idx_rmv_psi_em])(idx_filt_hdn)/2.
                            cgerrplot,1/(((*(*!dustem_show).psi_ext).wav)[idx_rmv_psi_em])(idx_filt_hdn),(((*(*!dustem_show).psi_ext).values)[idx_rmv_psi_em])(idx_filt_hdn)-rms,(((*(*!dustem_show).psi_ext).values)[idx_rmv_psi_em])(idx_filt_hdn)+rms,color='Black'
                             
                        endif 
                                                       
                    endif 
                    
                endelse 
                    
            
            end
            
            
            ;DONE BUT NOT TESTED.
            'QSED': begin ; THE ONE I WILL BE WORKING ON
                
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.qsed.xr
                yr = !dustem_plot_range.qsed.yr
                
                
                varvar=where((*(*!dustem_data).qsed).values GT 0, testpstv)
                varvar=where((*(*!dustem_data).qsed).values LT 0, testngtv)
                
                idx_filt=where((*(*!dustem_data).qsed).filt_names NE 'SPECTRUM', ct_filt)
                idx_spec=where((*(*!dustem_data).qsed).filt_names EQ 'SPECTRUM' , ct_spec)
               
                ;Locating all the hidden data points (spectrum+filter)
                match2,((*(*!dustem_data).qsed).wav),((*(*!dustem_show).qsed).wav),show_sedpts,fit_sedpts ;only show_sedpts is needed
                idx_rmv_sed=where(fit_sedpts eq -1, ct_hdnpts) ; indices of the points to hide
            
9ded3be9   Ilyes Choubani   Display update. F...
1464
                
24fe128f   Ilyes Choubani   Removed forced pl...
1465
1466
1467
1468
1469
                
                If n_elements(position) GT 1 THEN BEGIN
                
                        
                    ;Plotting of the refreshed data in the normalized plot
bffa7018   Ilyes Choubani   update
1470
                    
24fe128f   Ilyes Choubani   Removed forced pl...
1471
                    if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
9ded3be9   Ilyes Choubani   Display update. F...
1472
                        
24fe128f   Ilyes Choubani   Removed forced pl...
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
                       ;Making sure we're placed in the normalized plot
                       cgplot,vectw,vectx,/nodata,/xlog,ys=5,xs=5,pos=position[1],noerase=1,charsize=1.15,xtickformat='(A1)',ytickformat='(A1)',ymin=0,color='Powder Blue',xr=xr,xtit='',yr=[0.0,2.0],psym=8,syms=0.8
                      
                        IF ct_spec NE 0 THEN BEGIN
                            xx=((*(*!dustem_data).qsed).wav)[idx_spec]
                            yy=dustem_interp[idx_spec]
                            rms=2.*((*(*!dustem_data).qsed).sigma)(idx_spec)/2.
                            indzero = where(yy NE 0, ct_zero)
                            IF ct_zero NE 0 THEN BEGIN
                                cgoplot,xx[indzero],(((*(*!dustem_data).qsed).values)(idx_spec))[indzero]/yy[indzero],pos=position[1],psym=16,color='Powder Blue',syms=0.8,noerase=1 
                                cgerrplot,(((*(*!dustem_data).qsed).wav)(idx_spec))[indzero],((((*(*!dustem_data).qsed).values)[idx_spec])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).qsed).values)[idx_spec])[indzero]+rms[indzero])/yy[indzero],color='Powder Blue'
                            ENDIF 
9ded3be9   Ilyes Choubani   Display update. F...
1485
                        ENDIF
24fe128f   Ilyes Choubani   Removed forced pl...
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
                        
                        IF ct_filt NE 0 THEN BEGIN
                            
                            xx=((*(*!dustem_data).qsed).wav)[idx_filt]
                            yy=dustem_interp[idx_filt]
                            rms=2.*((*(*!dustem_data).qsed).sigma)(idx_filt)/2.
                            indzero = where(yy NE 0, ct_zero)
                            IF ct_zero NE 0 THEN BEGIN
                                cgoplot,xx[indzero],(((*(*!dustem_data).qsed).values)(idx_filt))[indzero]/yy[indzero],pos=position[1],psym=16,color='Dodger Blue',syms=0.8,noerase=1 
                                cgerrplot,(((*(*!dustem_data).qsed).wav)(idx_filt))[indzero],((((*(*!dustem_data).qsed).values)[idx_filt])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).qsed).values)[idx_filt])[indzero]+rms[indzero])/yy[indzero],color='Dodger Blue' 
                            ENDIF
                        ENDIF
      
                    ;Plotting of the frozen data points in the normalized plot    
                    endif else begin ;The data points in the plot that remain unchanged
                     
                        xtit=textoidl('\lambda (\mum)')
                        cgplot,vectw,vectx,/xlog,/ys,xs=1,pos=position[1],noerase=1,color='Black',xr=xr,xtit=xtit,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0
                        xyouts,pospltxt_n[0],pospltxt_n[1],textoidl('norm'),color=0,/normal,charsize=1.1
                    
                    endelse
                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
                ;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
1523
                                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1524
1525
                                if countneq ne 0 then begin 
                                    vecfin = st.polsed.(i+1)*0.0 ;em_tot can be used here right? 
bffa7018   Ilyes Choubani   update
1526
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1527
                                    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
1528
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1529
1530
1531
                                    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
1532
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1533
                                endif
bffa7018   Ilyes Choubani   update
1534
                                
9ded3be9   Ilyes Choubani   Display update. F...
1535
1536
1537
                            ENDFOR
                            
                            for i=0L,n_plgns-1 do begin
bffa7018   Ilyes Choubani   update
1538
                                
9ded3be9   Ilyes Choubani   Display update. F...
1539
1540
1541
1542
1543
1544
                                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
1545
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
                            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
1558
                                
9ded3be9   Ilyes Choubani   Display update. F...
1559
1560
                                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
1561
                            
9ded3be9   Ilyes Choubani   Display update. F...
1562
                            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
1563
1564
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
                                
                    
                    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
1584
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1585
1586
1587
1588
1589
1590
                                    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
1591
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
                                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
1603
                                    ENDIF
bffa7018   Ilyes Choubani   update
1604
                                    
bffa7018   Ilyes Choubani   update
1605
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1606
1607
1608
1609
1610
                            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
1611
                                
9ded3be9   Ilyes Choubani   Display update. F...
1612
1613
                                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
1614
                            
9ded3be9   Ilyes Choubani   Display update. F...
1615
1616
1617
1618
1619
1620
1621
                            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
1622
                        
bffa7018   Ilyes Choubani   update
1623
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
                                
                    
                    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
1644
                        
9ded3be9   Ilyes Choubani   Display update. F...
1645
                        if testpstv ne 0 then begin
bffa7018   Ilyes Choubani   update
1646
                        
9ded3be9   Ilyes Choubani   Display update. F...
1647
1648
1649
1650
1651
                            plotsym, 0
                            
                            if ct_spec ne 0 then begin
                            
                                rms=2.*((*(*!dustem_data).qsed).sigma)(idx_spec)/2.
bffa7018   Ilyes Choubani   update
1652
                                
9ded3be9   Ilyes Choubani   Display update. F...
1653
1654
1655
1656
1657
1658
                                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
1659
                                
9ded3be9   Ilyes Choubani   Display update. F...
1660
1661
1662
                                rms=2.*((*(*!dustem_data).qsed).sigma)(idx_filt)/2.
                               
                               
3196a378   Ilyes Choubani   Complementing fit...
1663
                                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...
1664
1665
                                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
1666
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
                            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
1679
                                
9ded3be9   Ilyes Choubani   Display update. F...
1680
                                endif 
bffa7018   Ilyes Choubani   update
1681
                                
9ded3be9   Ilyes Choubani   Display update. F...
1682
                                if ct_filt_hdn_pstv ne 0 then begin
bffa7018   Ilyes Choubani   update
1683
                                
9ded3be9   Ilyes Choubani   Display update. F...
1684
1685
1686
                                    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
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,/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
1690
                                
9ded3be9   Ilyes Choubani   Display update. F...
1691
                                endif
bffa7018   Ilyes Choubani   update
1692
                                
9ded3be9   Ilyes Choubani   Display update. F...
1693
1694
1695
1696
1697
1698
1699
1700
                            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
1701
1702
                                
                            
9ded3be9   Ilyes Choubani   Display update. F...
1703
1704
1705
1706
1707
1708
1709
1710
1711
                            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
1712
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1713
1714
                                    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
1715
                                
9ded3be9   Ilyes Choubani   Display update. F...
1716
                                endif 
bffa7018   Ilyes Choubani   update
1717
                                
9ded3be9   Ilyes Choubani   Display update. F...
1718
                                if ct_filt_hdn_pstv ne 0 then begin
bffa7018   Ilyes Choubani   update
1719
                                
9ded3be9   Ilyes Choubani   Display update. F...
1720
1721
1722
                                    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
1723
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1724
1725
1726
                                    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
1727
1728
                                endif
                                
9ded3be9   Ilyes Choubani   Display update. F...
1729
1730
1731
1732
1733
1734
1735
1736
                            endif
                            
                        endelse                           
                    
                    endif 
                    
                    
                    if negative_only EQ 1 then begin
bffa7018   Ilyes Choubani   update
1737
                        
9ded3be9   Ilyes Choubani   Display update. F...
1738
1739
1740
                        if testngtv ne 0 then begin
                             
                             ;plotsym, 0
bffa7018   Ilyes Choubani   update
1741
                            
9ded3be9   Ilyes Choubani   Display update. F...
1742
1743
1744
                             if ct_spec ne 0 then begin
                             
                                 rms=2.*((*(*!dustem_data).qsed).sigma)(idx_spec)/2.
bffa7018   Ilyes Choubani   update
1745
                                 
9ded3be9   Ilyes Choubani   Display update. F...
1746
1747
1748
1749
1750
1751
                                 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
1752
                                 
9ded3be9   Ilyes Choubani   Display update. F...
1753
1754
1755
1756
                                 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
1757
                                 
9ded3be9   Ilyes Choubani   Display update. F...
1758
                                 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
1759
                                     
9ded3be9   Ilyes Choubani   Display update. F...
1760
1761
1762
1763
1764
1765
1766
1767
                             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
1768
                                     
9ded3be9   Ilyes Choubani   Display update. F...
1769
1770
1771
                                     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
1772
1773
                                 endif 
                                 
9ded3be9   Ilyes Choubani   Display update. F...
1774
                                 if ct_filt_hdn_ngtv ne 0 then begin
bffa7018   Ilyes Choubani   update
1775
                                 
9ded3be9   Ilyes Choubani   Display update. F...
1776
1777
1778
                                     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
1779
                                     
9ded3be9   Ilyes Choubani   Display update. F...
1780
1781
1782
                                     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
1783
                                 endif
9ded3be9   Ilyes Choubani   Display update. F...
1784
1785
                            
                             endif
bffa7018   Ilyes Choubani   update
1786

9ded3be9   Ilyes Choubani   Display update. F...
1787
1788
                        
                        endif else begin
bffa7018   Ilyes Choubani   update
1789
                            
9ded3be9   Ilyes Choubani   Display update. F...
1790
1791
                            
                            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
1792
                                
9ded3be9   Ilyes Choubani   Display update. F...
1793
1794
1795
1796
1797
1798
1799
1800
1801
                            
                            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
1802
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1803
1804
                                    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
1805
                                
9ded3be9   Ilyes Choubani   Display update. F...
1806
                                endif 
bffa7018   Ilyes Choubani   update
1807
                                
9ded3be9   Ilyes Choubani   Display update. F...
1808
                                if ct_filt_hdn_ngtv ne 0 then begin
bffa7018   Ilyes Choubani   update
1809
                                
9ded3be9   Ilyes Choubani   Display update. F...
1810
1811
1812
                                    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
1813
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
                                    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
1824
                    
bffa7018   Ilyes Choubani   update
1825
1826
                
                endelse 
9ded3be9   Ilyes Choubani   Display update. F...
1827
                    
bffa7018   Ilyes Choubani   update
1828
            
9ded3be9   Ilyes Choubani   Display update. F...
1829
            END
bffa7018   Ilyes Choubani   update
1830
            
9ded3be9   Ilyes Choubani   Display update. F...
1831
1832
            ;DONE BUT NOT TESTED...
            'USED': begin
bffa7018   Ilyes Choubani   update
1833
                
9ded3be9   Ilyes Choubani   Display update. F...
1834
1835
1836
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.used.xr
                yr = !dustem_plot_range.used.yr
bffa7018   Ilyes Choubani   update
1837
                
9ded3be9   Ilyes Choubani   Display update. F...
1838
1839
1840
1841
                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
1842
            
9ded3be9   Ilyes Choubani   Display update. F...
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
                ;SIGN-RELATED PARAMETERS/LOOPS HERE?
                ;negative & positive values regardless of data type (SPECTRUM or FILTER data points)
                varvar=where((*(*!dustem_data).used).values LT 0, testngtv)
                varvar=where((*(*!dustem_data).used).values GT 0, testpstv)
                ;stop
                idx_filt=where((*(*!dustem_data).used).filt_names NE 'SPECTRUM', ct_filt)
                idx_spec=where((*(*!dustem_data).used).filt_names EQ 'SPECTRUM' , ct_spec)
                
                ;Locating all the hidden data points (spectrum+filter)
                match2,((*(*!dustem_data).used).wav),((*(*!dustem_show).used).wav),show_sedpts,fit_sedpts ;only show_sedpts is needed
                idx_rmv_sed=where(fit_sedpts eq -1, ct_hdnpts) ; indices of the points to hide
                
24fe128f   Ilyes Choubani   Removed forced pl...
1855
1856
1857
1858
                
                If n_elements(position) GT 1 THEN BEGIN
                    ;Refreshing of the data in the normalized plot
                    if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
bffa7018   Ilyes Choubani   update
1859
                        
24fe128f   Ilyes Choubani   Removed forced pl...
1860
1861
                        ;Making sure we're placed in the normalized plot
                        cgplot,vectw,vectx,/nodata,/xlog,xs=5,ys=5,pos=position[1],noerase=1,charsize=1.15,xtickformat='(A1)',ytickformat='(A1)',color='Powder Blue',xr=xr,xtit='',yr=[0.0,2.0],psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
1862
                        
24fe128f   Ilyes Choubani   Removed forced pl...
1863
1864
1865
1866
1867
1868
1869
1870
1871
                        IF ct_spec NE 0 THEN BEGIN
                            xx=((*(*!dustem_data).used).wav)[idx_spec]
                            yy=dustem_interp[idx_spec]
                            rms=2.*((*(*!dustem_data).used).sigma)(idx_spec)/2.
                            indzero = where(yy NE 0, ct_zero)
                            IF ct_zero NE 0 THEN BEGIN
                                cgoplot,xx[indzero],(((*(*!dustem_data).used).values)(idx_spec))[indzero]/yy[indzero],pos=position[1],psym=16,color='Powder Blue',syms=0.8,noerase=1 
                                cgerrplot,(((*(*!dustem_data).used).wav)(idx_spec))[indzero],((((*(*!dustem_data).used).values)[idx_spec])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).used).values)[idx_spec])[indzero]+rms[indzero])/yy[indzero],color='Powder Blue'
                            ENDIF
bffa7018   Ilyes Choubani   update
1872
                        ENDIF
24fe128f   Ilyes Choubani   Removed forced pl...
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
                        
                        IF ct_filt NE 0 THEN BEGIN
                            
                            xx=((*(*!dustem_data).used).wav)[idx_filt]
                            yy=dustem_interp[idx_filt]
                            rms=2.*((*(*!dustem_data).used).sigma)(idx_filt)/2. 
                            indzero = where(yy NE 0, ct_zero)
                            
                            IF ct_zero NE 0 THEN BEGIN
                                cgoplot,xx[indzero],(((*(*!dustem_data).used).values)(idx_filt))[indzero]/yy[indzero],pos=position[1],psym=16,color='Dodger Blue',syms=0.8,noerase=1 
                                cgerrplot,(((*(*!dustem_data).used).wav)(idx_filt))[indzero],((((*(*!dustem_data).used).values)[idx_filt])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).used).values)[idx_filt])[indzero]+rms[indzero])/yy[indzero],color='Dodger Blue' 
                            ENDIF
                        ENDIF
      
                    ;plotting of the frozen data in the normalized plot
                    endif else begin 
                        
                        xtit=textoidl('\lambda (\mum)')
                        
                        cgplot,vectw,vectx,/xlog,/ys,xs=1,pos=position[1],noerase=1,color='Black',xr=xr,xtit=xtit,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0
                        xyouts,pospltxt_n[0],pospltxt_n[1],textoidl('norm'),color=0,/normal,charsize=1.1
bffa7018   Ilyes Choubani   update
1894
                    
24fe128f   Ilyes Choubani   Removed forced pl...
1895
1896
                    endelse
                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
                
                ;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
1909
                        
9ded3be9   Ilyes Choubani   Display update. F...
1910
1911
1912
1913
1914
1915
                            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
1916
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1917
                                    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
1918
                                        
9ded3be9   Ilyes Choubani   Display update. F...
1919
1920
1921
1922
                                    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
1923
                                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1924
1925
1926
1927
1928
1929
1930
                            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
1931
                                        
9ded3be9   Ilyes Choubani   Display update. F...
1932
1933
                                        
                                        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
1934
1935
                                    ENDIF
                                    
bffa7018   Ilyes Choubani   update
1936
1937
                                ENDIF
                                
9ded3be9   Ilyes Choubani   Display update. F...
1938
                            endfor
bffa7018   Ilyes Choubani   update
1939
                            
9ded3be9   Ilyes Choubani   Display update. F...
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
                            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
1955
1956
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
                                
                    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
1974
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
                                    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
1989
                                    ENDIF
bffa7018   Ilyes Choubani   update
1990
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1991
1992
1993
1994
1995
1996
1997
1998
                            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
1999
                            
9ded3be9   Ilyes Choubani   Display update. F...
2000
2001
2002
2003
2004
2005
2006
2007
2008
                            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
2009
2010
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
                                
                    
                    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
2033
                        ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2034
                        if testpstv ne 0 then begin
bffa7018   Ilyes Choubani   update
2035
                        ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
                            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
2051
                                
9ded3be9   Ilyes Choubani   Display update. F...
2052
2053
2054
2055
2056
2057
2058
                                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
2059
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
                            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
2072
                                
9ded3be9   Ilyes Choubani   Display update. F...
2073
                                endif 
bffa7018   Ilyes Choubani   update
2074
                                
9ded3be9   Ilyes Choubani   Display update. F...
2075
2076
2077
2078
2079
                                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
2080
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2081
2082
                                    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
2083
                                
9ded3be9   Ilyes Choubani   Display update. F...
2084
2085
2086
2087
2088
                                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
2089
                                
9ded3be9   Ilyes Choubani   Display update. F...
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
                            
                            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
2103
                                
9ded3be9   Ilyes Choubani   Display update. F...
2104
                                endif 
bffa7018   Ilyes Choubani   update
2105
                                
9ded3be9   Ilyes Choubani   Display update. F...
2106
2107
2108
2109
2110
                                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
2111
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
                                    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
2131
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2132
                                 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
2133
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2134
2135
2136
2137
2138
                                 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
2139
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2140
2141
2142
2143
                                 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
2144
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2145
                                 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
2146
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2147
2148
2149
2150
2151
2152
2153
2154
                             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
2155
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2156
2157
                                     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
2158
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2159
                                 endif 
bffa7018   Ilyes Choubani   update
2160
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2161
2162
2163
2164
2165
                                 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
2166
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2167
2168
2169
2170
                                     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
2171

9ded3be9   Ilyes Choubani   Display update. F...
2172
2173
2174
2175
2176
2177
2178
2179
                             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
2180
                            
bffa7018   Ilyes Choubani   update
2181
                            
9ded3be9   Ilyes Choubani   Display update. F...
2182
2183
2184
2185
2186
2187
                            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
2188
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2189
2190
                                    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
2191
                                
9ded3be9   Ilyes Choubani   Display update. F...
2192
                                endif 
bffa7018   Ilyes Choubani   update
2193
                                
9ded3be9   Ilyes Choubani   Display update. F...
2194
                                if ct_filt_hdn_ngtv ne 0 then begin
bffa7018   Ilyes Choubani   update
2195
                                
9ded3be9   Ilyes Choubani   Display update. F...
2196
2197
2198
                                    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
2199
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2200
2201
2202
2203
                                    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
2204

9ded3be9   Ilyes Choubani   Display update. F...
2205
2206
2207
                            endif     
                             
                        endelse
bffa7018   Ilyes Choubani   update
2208
                        
9ded3be9   Ilyes Choubani   Display update. F...
2209
                    endif
bffa7018   Ilyes Choubani   update
2210
                    
bffa7018   Ilyes Choubani   update
2211
2212
                
                endelse 
bffa7018   Ilyes Choubani   update
2213
                    
bffa7018   Ilyes Choubani   update
2214
                
9ded3be9   Ilyes Choubani   Display update. F...
2215
            end
bffa7018   Ilyes Choubani   update
2216
            
9ded3be9   Ilyes Choubani   Display update. F...
2217
            'QEXT': begin   ;Correct this like you corrected extinction...
bffa7018   Ilyes Choubani   update
2218
                
9ded3be9   Ilyes Choubani   Display update. F...
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
                ;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
2241
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2242
2243
                If n_elements(position) GT 1 THEN BEGIN        
                    ;refreshing of the normalized plot
9ded3be9   Ilyes Choubani   Display update. F...
2244
                    
24fe128f   Ilyes Choubani   Removed forced pl...
2245
                    if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
bffa7018   Ilyes Choubani   update
2246
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2247
2248
                        ;Making sure we're placed in the right plot to refresh. Here normalized plot for QEXT.
                        cgplot,1/vectw,vectx,/nodata,/xlog,xs=1,pos=position[1],noerase=1,charsize=1.15,xtickformat='(A1)',ytickformat='(A1)',color='Powder Blue',xr=xr,xtit='',yr=[0.0,2.0],psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
2249
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
                        IF ct_spec NE 0 THEN BEGIN
                            
                            xx=((*(*!dustem_data).qext).wav)[idx_spec]
                            yy=dustem_interp[idx_spec]
                            rms=2.*((*(*!dustem_data).qext).sigma)(idx_spec)/2.
                            
                            ;testing so that data/yy is finite: 
                            ;avoiding zero points in yy since we divide by it
                            ;testing also if the data is full of zeros (ie: PSI=0 for U and PSI=90 for Q)
                            
                            indzero = where(yy NE 0, ct_zero)
                            if ct_zero ne 0 then begin  
    
                                cgoplot,(1/xx)[indzero],(((*(*!dustem_data).qext).values)(idx_spec))[indzero]/yy[indzero],pos=position[1],psym=16,color='Powder Blue',syms=0.8,noerase=1 
                                cgerrplot,(1/((*(*!dustem_data).qext).wav)(idx_spec))[indzero],((((*(*!dustem_data).qext).values)[idx_spec])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).qext).values)[idx_spec])[indzero]+rms[indzero])/yy[indzero],color='Powder Blue'
                            endif
                        ENDIF
bffa7018   Ilyes Choubani   update
2267
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
                        IF ct_filt NE 0 THEN BEGIN
                            ;stop
                            xx=((*(*!dustem_data).qext).wav)[idx_filt]
                            yy=dustem_interp[idx_filt]
                            rms=2.*((*(*!dustem_data).qext).sigma)(idx_filt)/2. 
                            indzero = where(yy NE 0, ct_zero)
                            IF ct_zero NE 0 THEN BEGIN
                                cgoplot,(1/xx)[indzero],(((*(*!dustem_data).qext).values)(idx_filt))[indzero]/yy[indzero],pos=position[1],psym=16,color='Dodger Blue',syms=0.8,noerase=1 
                                cgerrplot,(1/((*(*!dustem_data).qext).wav)(idx_filt))[indzero],((((*(*!dustem_data).qext).values)[idx_filt])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).qext).values)[idx_filt])[indzero]+rms[indzero])/yy[indzero],color='Dodger Blue' 
                            ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2278
                        ENDIF
24fe128f   Ilyes Choubani   Removed forced pl...
2279
2280
2281
2282
2283
2284
2285
2286
      
                    ;Plotting of thr frozen data in the normalized plot    
                    endif else begin ;The data points in the plot that remain unchanged
                        
                        xtit=textoidl('1/\lambda (\mum^{-1})')
                        
                        cgplot,1/vectw,vectx,/xlog,xs=1,pos=position[1],noerase=1,color='Black',xr=xr,xtit=xtit,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0
                        xyouts,pospltxt_n[0],pospltxt_n[1],textoidl('norm'),color=0,/normal,charsize=1.1
bffa7018   Ilyes Choubani   update
2287
                    
24fe128f   Ilyes Choubani   Removed forced pl...
2288
2289
                    endelse
                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
                      
                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
2309
                                
bffa7018   Ilyes Choubani   update
2310

9ded3be9   Ilyes Choubani   Display update. F...
2311
2312
2313
2314
2315
2316
2317
                                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
2318
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2319
                                    ;if countneg ne 0 and cos(!dustem_psi_ext) gt 0 then specqgrain[testneg] = 0
bffa7018   Ilyes Choubani   update
2320
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2321
2322
                                    ;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
2323
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2324
                                endif
bffa7018   Ilyes Choubani   update
2325
                                
bffa7018   Ilyes Choubani   update
2326
                                
9ded3be9   Ilyes Choubani   Display update. F...
2327
2328
2329
                            ENDFOR
                            
                            for i=0L,n_plgns-1 do begin
bffa7018   Ilyes Choubani   update
2330
                                
9ded3be9   Ilyes Choubani   Display update. F...
2331
2332
2333
2334
2335
                                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
2336
                                    ENDIF
bffa7018   Ilyes Choubani   update
2337
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
                            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
2355
                            
bffa7018   Ilyes Choubani   update
2356
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
2357
2358
2359
2360
2361
2362
2363
2364
2365
                                
                    
                    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
2366
                        
9ded3be9   Ilyes Choubani   Display update. F...
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
                            ;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
2406
                            
9ded3be9   Ilyes Choubani   Display update. F...
2407
2408
2409
2410
2411
2412
2413
2414
                            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
2415
                        
9ded3be9   Ilyes Choubani   Display update. F...
2416
                        endif
bffa7018   Ilyes Choubani   update
2417
                                
9ded3be9   Ilyes Choubani   Display update. F...
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
                    
                    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
2450
                                
9ded3be9   Ilyes Choubani   Display update. F...
2451
2452
2453
2454
2455
                                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
2456
                                
9ded3be9   Ilyes Choubani   Display update. F...
2457
2458
2459
2460
2461
                                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
2462
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2463
2464
2465
2466
2467
2468
2469
2470
2471
                            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
2472
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2473
2474
                                    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
2475
                                
9ded3be9   Ilyes Choubani   Display update. F...
2476
                                endif 
bffa7018   Ilyes Choubani   update
2477
                                
9ded3be9   Ilyes Choubani   Display update. F...
2478
                                if ct_filt_hdn_pstv ne 0 then begin
bffa7018   Ilyes Choubani   update
2479
                                
9ded3be9   Ilyes Choubani   Display update. F...
2480
2481
2482
                                    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
2483
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2484
2485
                                    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
2486
                                
9ded3be9   Ilyes Choubani   Display update. F...
2487
                                endif
bffa7018   Ilyes Choubani   update
2488
                                
9ded3be9   Ilyes Choubani   Display update. F...
2489
                            endif
bffa7018   Ilyes Choubani   update
2490
2491
                            
                            
9ded3be9   Ilyes Choubani   Display update. F...
2492
                        endif else begin
bffa7018   Ilyes Choubani   update
2493
2494
                        
                        
9ded3be9   Ilyes Choubani   Display update. F...
2495
2496
                            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
2497
                            
9ded3be9   Ilyes Choubani   Display update. F...
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
                            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
2526
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2527
2528
2529
2530
2531
2532
                                 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
2533
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2534
                                 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
2535
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2536
2537
2538
2539
2540
2541
2542
2543
                             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
2544
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2545
2546
2547
2548
                                     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
2549
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2550
                                 if ct_filt_hdn_ngtv ne 0 then begin
bffa7018   Ilyes Choubani   update
2551
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2552
2553
2554
                                     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
2555
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
                                     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
2566
                                
bffa7018   Ilyes Choubani   update
2567
                            
9ded3be9   Ilyes Choubani   Display update. F...
2568
                            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
2569
                            
9ded3be9   Ilyes Choubani   Display update. F...
2570
2571
2572
                        endelse
            
                    endif
bffa7018   Ilyes Choubani   update
2573
2574
                
                endelse 
9ded3be9   Ilyes Choubani   Display update. F...
2575
2576
                    
            end
bffa7018   Ilyes Choubani   update
2577
            
9ded3be9   Ilyes Choubani   Display update. F...
2578
            'UEXT': begin
bffa7018   Ilyes Choubani   update
2579
                
9ded3be9   Ilyes Choubani   Display update. F...
2580
2581
2582
               ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.uext.xr
                yr = !dustem_plot_range.uext.yr
bffa7018   Ilyes Choubani   update
2583
                    
9ded3be9   Ilyes Choubani   Display update. F...
2584
2585
2586
2587
2588
2589
2590
                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
2591
                
9ded3be9   Ilyes Choubani   Display update. F...
2592
2593
2594
                ;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
2595
                
9ded3be9   Ilyes Choubani   Display update. F...
2596
                ;Plotting of frequency axis
bffa7018   Ilyes Choubani   update
2597
                
9ded3be9   Ilyes Choubani   Display update. F...
2598
2599
2600
                ;Locating all the hidden data points (spectrum+filter)
                match2,((*(*!dustem_data).uext).wav),((*(*!dustem_show).uext).wav),show_sedpts,fit_sedpts ;only show_sedpts is needed
                idx_rmv_sed=where(fit_sedpts eq -1, ct_hdnpts) ; indices of the points to hide
24fe128f   Ilyes Choubani   Removed forced pl...
2601
2602
2603
2604
                
                
                If n_elements(position) GT 1 THEN BEGIN        
                    if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
9ded3be9   Ilyes Choubani   Display update. F...
2605
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2606
2607
                        ;Making sure we're placed in the right plot to refresh. Here normalized plot for QEXT.
                        cgplot,1/vectw,vectx,/nodata,/xlog,xs=1,pos=position[1],noerase=1,charsize=1.15,xtickformat='(A1)',ytickformat='(A1)',color='Powder Blue',xr=xr,xtit='',yr=[0.0,2.0],psym=8,syms=0.8
bffa7018   Ilyes Choubani   update
2608
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
                        IF ct_spec NE 0 THEN BEGIN
                            
                            xx=((*(*!dustem_data).uext).wav)[idx_spec]
                            yy=dustem_interp[idx_spec]
                            rms=2.*((*(*!dustem_data).uext).sigma)(idx_spec)/2.
                            
                            indzero = where(yy NE 0, ct_zero)
                            If ct_zero NE 0 THEN BEGIN
                                cgoplot,(1/xx)[indzero],(((*(*!dustem_data).uext).values)(idx_spec))[indzero]/yy[indzero],pos=position[1],psym=16,color='Powder Blue',syms=0.8,noerase=1 
                                cgerrplot,(1/((*(*!dustem_data).uext).wav)(idx_spec))[indzero],((((*(*!dustem_data).uext).values)[idx_spec])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).uext).values)[idx_spec])[indzero]+rms[indzero])/yy[indzero],color='Powder Blue'
                            ENDIF
                        ENDIF
bffa7018   Ilyes Choubani   update
2621
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
                        IF ct_filt NE 0 THEN BEGIN
                            ;stop
                            xx=((*(*!dustem_data).uext).wav)[idx_filt]
                            yy=dustem_interp[idx_filt]
                            rms=2.*((*(*!dustem_data).uext).sigma)(idx_filt)/2. 
                            indzero = where(yy NE 0, ct_zero)
                            IF ct_zero NE 0 THEN BEGIN
                                cgoplot,(1/xx)[indzero],(((*(*!dustem_data).uext).values)(idx_filt))[indzero]/yy[indzero],pos=position[1],psym=16,color='Dodger Blue',syms=0.8,noerase=1 
                                cgerrplot,(1/((*(*!dustem_data).uext).wav)(idx_filt))[indzero],((((*(*!dustem_data).uext).values)[idx_filt])[indzero]-rms[indzero])/yy[indzero],((((*(*!dustem_data).uext).values)[idx_filt])[indzero]+rms[indzero])/yy[indzero],color='Dodger Blue' 
                            ENDIF
bffa7018   Ilyes Choubani   update
2632
                        ENDIF
24fe128f   Ilyes Choubani   Removed forced pl...
2633
2634
2635
      
                        
                    endif else begin ;The data points in the plot that remain unchanged
bffa7018   Ilyes Choubani   update
2636
                        ;stop
24fe128f   Ilyes Choubani   Removed forced pl...
2637
2638
2639
2640
2641
                        
                        xtit=textoidl('1/\lambda (\mum^{-1})')
                        ;if !run_pol then xtit = ''
                        cgplot,1/vectw,vectx,/xlog,xs=1,pos=position[1],noerase=1,color='Black',xr=xr,xtit=xtit,yr=[0.0,2.0],yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.0
                        xyouts,pospltxt_n[0],pospltxt_n[1],textoidl('norm'),color=0,/normal,charsize=1.1
bffa7018   Ilyes Choubani   update
2642
                    
24fe128f   Ilyes Choubani   Removed forced pl...
2643
2644
2645
                    endelse
                ENDIF
                      
9ded3be9   Ilyes Choubani   Display update. F...
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
                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
2659
                                
9ded3be9   Ilyes Choubani   Display update. F...
2660
2661
2662
2663
2664
2665
2666
2667
2668
                                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
2669
                                    
bffa7018   Ilyes Choubani   update
2670
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2671
2672
                                    ;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
2673
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2674
2675
2676
2677
2678
                                endif
                                ;stop
                            ENDFOR
                            
                            for i=0L,n_plgns-1 do begin
bffa7018   Ilyes Choubani   update
2679
                                
9ded3be9   Ilyes Choubani   Display update. F...
2680
2681
2682
2683
2684
                                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
2685
                                    ENDIF
bffa7018   Ilyes Choubani   update
2686
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2687
                            endfor
bffa7018   Ilyes Choubani   update
2688
                            
9ded3be9   Ilyes Choubani   Display update. F...
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
                            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
2704
2705
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
                                
                    
                    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
2726
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
                                    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
2743
                                    ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2744
                                    
bffa7018   Ilyes Choubani   update
2745
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2746
2747
2748
2749
2750
2751
2752
2753
                            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
2754
                            
9ded3be9   Ilyes Choubani   Display update. F...
2755
2756
2757
2758
2759
2760
2761
2762
                            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
2763
2764
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
                                
                    
                    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
2789
                        
bffa7018   Ilyes Choubani   update
2790
                            
9ded3be9   Ilyes Choubani   Display update. F...
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
                            
                            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
2802
                                
9ded3be9   Ilyes Choubani   Display update. F...
2803
2804
2805
2806
2807
                                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
2808
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2809
2810
2811
2812
2813
2814
                            endif
                            
                            
                            if testpstv ne 0 then begin
                            
                                plotsym, 0
bffa7018   Ilyes Choubani   update
2815
                                
9ded3be9   Ilyes Choubani   Display update. F...
2816
                                if ct_hdnpts NE 0 then begin
bffa7018   Ilyes Choubani   update
2817
                                
9ded3be9   Ilyes Choubani   Display update. F...
2818
2819
2820
2821
2822
2823
2824
                                    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
2825
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2826
                                    endif 
bffa7018   Ilyes Choubani   update
2827
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2828
2829
2830
2831
2832
                                    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
2833
                                        
9ded3be9   Ilyes Choubani   Display update. F...
2834
2835
2836
                                        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
2837
                                    endif
bffa7018   Ilyes Choubani   update
2838
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2839
2840
2841
2842
                                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
2843
                                
bffa7018   Ilyes Choubani   update
2844
                            
9ded3be9   Ilyes Choubani   Display update. F...
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
                            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
2862
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
                                 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
2873
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2874
2875
2876
2877
2878
2879
                                 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
2880
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2881
                                 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
2882
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2883
2884
2885
2886
2887
2888
2889
2890
                             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
2891
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2892
2893
                                     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
2894
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2895
2896
2897
2898
2899
2900
2901
                                 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
2902
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2903
2904
2905
                                     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
2906
2907
                                 endif
                            
9ded3be9   Ilyes Choubani   Display update. F...
2908
                             endif
bffa7018   Ilyes Choubani   update
2909
                        
9ded3be9   Ilyes Choubani   Display update. F...
2910
2911
2912
2913
2914
2915
2916
                        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
2917
                    
9ded3be9   Ilyes Choubani   Display update. F...
2918
2919
2920
                        endelse
                        ;stop
                    endif
bffa7018   Ilyes Choubani   update
2921
2922
                
                endelse 
9ded3be9   Ilyes Choubani   Display update. F...
2923
2924
              
            end
bffa7018   Ilyes Choubani   update
2925
            
9ded3be9   Ilyes Choubani   Display update. F...
2926
            'PARAMETERS':begin ;needs the followingd data (errors+res+formats)
bffa7018   Ilyes Choubani   update
2927
                
9ded3be9   Ilyes Choubani   Display update. F...
2928
                p_dim = dustem_interp
bffa7018   Ilyes Choubani   update
2929
                
9ded3be9   Ilyes Choubani   Display update. F...
2930
                Npar=n_elements(p_dim)
bffa7018   Ilyes Choubani   update
2931
                
9ded3be9   Ilyes Choubani   Display update. F...
2932
                if keyword_set(refresh) then begin ;data in the parameter window that is being refreshed
bffa7018   Ilyes Choubani   update
2933
                    
9ded3be9   Ilyes Choubani   Display update. F...
2934
                    k=0    
bffa7018   Ilyes Choubani   update
2935
                        
9ded3be9   Ilyes Choubani   Display update. F...
2936
                    IF isa((*!dustem_fit).fixed_param_descs) THEN BEGIN
bffa7018   Ilyes Choubani   update
2937
                        
9ded3be9   Ilyes Choubani   Display update. F...
2938
2939
2940
2941
                        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
2942
                            
9ded3be9   Ilyes Choubani   Display update. F...
2943
2944
                            parameter_description = (*(*!dustem_fit).fixed_param_descs)[i]     
                            parameter_type = dustem_parameter_description2type(parameter_description,string_name=string_name)
bffa7018   Ilyes Choubani   update
2945
                            
9ded3be9   Ilyes Choubani   Display update. F...
2946
2947
2948
2949
                            IF parameter_type NE 'PLUGIN' THEN BEGIN                       
                                yypos = 0.8 - k*0.09
                                k+=1
                            ENDIF 
bffa7018   Ilyes Choubani   update
2950
                            
9ded3be9   Ilyes Choubani   Display update. F...
2951
2952
2953
                        ENDFOR  
                         
                    ENDIF
bffa7018   Ilyes Choubani   update
2954
                    
9ded3be9   Ilyes Choubani   Display update. F...
2955
2956
                    prms_dscs = (*(*!dustem_fit).param_descs)
                    prms_tps = strarr(n_elements(prms_dscs))
c9abf9b4   Ilyes Choubani   Uploading stellar...
2957
                    
9ded3be9   Ilyes Choubani   Display update. F...
2958
2959
2960
                    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...
2961
                    
9ded3be9   Ilyes Choubani   Display update. F...
2962
2963
                    testprms = where(prms_tps ne 'PLUGIN', ct_data)
                    if ct_data ne 0 then begin
bffa7018   Ilyes Choubani   update
2964
                    
9ded3be9   Ilyes Choubani   Display update. F...
2965
                        if ~isa(yypos) then yypos = 0.8 else yypos-=0.22 ;not sure about this
bffa7018   Ilyes Choubani   update
2966
                        
bffa7018   Ilyes Choubani   update
2967
                        
9ded3be9   Ilyes Choubani   Display update. F...
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
                        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
2989
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2990
2991
2992
2993
2994
2995
2996
2997
                                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
2998
2999
                                
                            ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
                               
                        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
3014
                            
9ded3be9   Ilyes Choubani   Display update. F...
3015
3016
3017
                            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
3018
                            
9ded3be9   Ilyes Choubani   Display update. F...
3019
                        ENDFOR
bffa7018   Ilyes Choubani   update
3020
                        
9ded3be9   Ilyes Choubani   Display update. F...
3021
3022
3023
3024
3025
3026
3027
                        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
3028
                        
9ded3be9   Ilyes Choubani   Display update. F...
3029
                        FOR i=0L,Nfpar-1 DO BEGIN
bffa7018   Ilyes Choubani   update
3030
                            
9ded3be9   Ilyes Choubani   Display update. F...
3031
3032
3033
                            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
3034
                            
9ded3be9   Ilyes Choubani   Display update. F...
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
                            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
3051
                            
9ded3be9   Ilyes Choubani   Display update. F...
3052
3053
3054
3055
                            ENDIF    
                             
                        ENDFOR  
                         
bffa7018   Ilyes Choubani   update
3056
3057
                    ENDIF
                    
bffa7018   Ilyes Choubani   update
3058
                    
9ded3be9   Ilyes Choubani   Display update. F...
3059
                    xxpos = 0.5 
bffa7018   Ilyes Choubani   update
3060
                    
9ded3be9   Ilyes Choubani   Display update. F...
3061
                    ;test so that this string isn't displayed when there are no free parameters: 
bffa7018   Ilyes Choubani   update
3062
                    
9ded3be9   Ilyes Choubani   Display update. F...
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
                    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'
                          
b56f639b   Jean-Philippe Bernard   improved, somehow
3090
3091
                          ;stop

9ded3be9   Ilyes Choubani   Display update. F...
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
                          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...
3120
                        
9ded3be9   Ilyes Choubani   Display update. F...
3121
                        ENDFOR
ab4dc92e   Ilyes Choubani   Slight modificati...
3122
                        
9ded3be9   Ilyes Choubani   Display update. F...
3123
                    ENDIF
bffa7018   Ilyes Choubani   update
3124
                        
9ded3be9   Ilyes Choubani   Display update. F...
3125
3126
3127
3128
3129
3130
                    
                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
3131
                
9ded3be9   Ilyes Choubani   Display update. F...
3132
3133
3134
3135
3136
                p_dim = dustem_interp
            
                Npar=n_elements(p_dim)
            
                if keyword_set(refresh) then begin ;(REFRESHED RUN) 
bffa7018   Ilyes Choubani   update
3137
                    
9ded3be9   Ilyes Choubani   Display update. F...
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
                    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)
                            
b56f639b   Jean-Philippe Bernard   improved, somehow
3148
3149
                            ;stop

9ded3be9   Ilyes Choubani   Display update. F...
3150
3151
3152
3153
3154
3155
3156
3157
3158
                            IF parameter_type EQ 'PLUGIN' THEN BEGIN                       
                                yypos = 0.8 - k*0.09
                                k+=1
                            ENDIF 
                            
                        ENDFOR  
                                    
                         
                    ENDIF
bffa7018   Ilyes Choubani   update
3159
                    
bffa7018   Ilyes Choubani   update
3160
                    
9ded3be9   Ilyes Choubani   Display update. F...
3161
3162
                    prms_dscs = (*(*!dustem_fit).param_descs)
                    prms_tps = strarr(n_elements(prms_dscs))
bffa7018   Ilyes Choubani   update
3163
                    
9ded3be9   Ilyes Choubani   Display update. F...
3164
3165
3166
3167
3168
                    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
3169
                    
9ded3be9   Ilyes Choubani   Display update. F...
3170
                    if ct_data ne 0 then begin
bffa7018   Ilyes Choubani   update
3171
                    
9ded3be9   Ilyes Choubani   Display update. F...
3172
                        if ~isa(yypos) then yypos = 0.8 else yypos-=0.22 ;not sure about this
bffa7018   Ilyes Choubani   update
3173
                        
9ded3be9   Ilyes Choubani   Display update. F...
3174
3175
3176
3177
                        k=0
                        res = dustem_interp
                        errors = dustem_spec
                        yypostmp = yypos
bffa7018   Ilyes Choubani   update
3178
                        
9ded3be9   Ilyes Choubani   Display update. F...
3179
3180
3181
3182
                        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)
b56f639b   Jean-Philippe Bernard   improved, somehow
3183
                            ;stop
9ded3be9   Ilyes Choubani   Display update. F...
3184
3185
3186
3187
3188
                            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)
b56f639b   Jean-Philippe Bernard   improved, somehow
3189
3190
                                indtg = (strmid(string_name,ii+1))
                                ;indtg = strmid(indtg,0,/reverse_offset)     
9ded3be9   Ilyes Choubani   Display update. F...
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
                                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...
3210
                               
9ded3be9   Ilyes Choubani   Display update. F...
3211
3212
3213
3214
                                k+=1
                                
                            ENDIF          
                                    
bffa7018   Ilyes Choubani   update
3215
                        
9ded3be9   Ilyes Choubani   Display update. F...
3216
3217
3218
3219
3220
3221
3222
3223
                        ENDFOR
                    
                 ENDIF
                    
                endif else begin ;plotting of strings that are fixed
                    
                    
                    IF isa((*!dustem_fit).fixed_param_descs) THEN BEGIN
bffa7018   Ilyes Choubani   update
3224
                        
9ded3be9   Ilyes Choubani   Display update. F...
3225
3226
                        Nfpar = n_elements((*(*!dustem_fit).fixed_param_descs))
                        res = (*(*!dustem_fit).fixed_param_init_values)
bffa7018   Ilyes Choubani   update
3227
                        
9ded3be9   Ilyes Choubani   Display update. F...
3228
3229
                        iii=0
                        FOR i=0L,Nfpar-1 DO BEGIN
bffa7018   Ilyes Choubani   update
3230
                            
9ded3be9   Ilyes Choubani   Display update. F...
3231
3232
3233
                            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
3234
                            
9ded3be9   Ilyes Choubani   Display update. F...
3235
3236
3237
3238
3239
                        ENDFOR
                        k = 0
                        if iii ne 0 then begin
                            xxpos = 0.5
                            yypos = 0.9
bffa7018   Ilyes Choubani   update
3240
                            
9ded3be9   Ilyes Choubani   Display update. F...
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
                            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)
b56f639b   Jean-Philippe Bernard   improved, somehow
3254
3255
                                indtg = (strmid(string_name,ii+1))
                                ;indtg = strmid(indtg,0,/reverse_offset)     
9ded3be9   Ilyes Choubani   Display update. F...
3256
                                indtg = fix(indtg)
057f2b9c   Jean-Philippe Bernard   small changes
3257
                                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
                                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
3273
                         
9ded3be9   Ilyes Choubani   Display update. F...
3274
3275
3276
3277
3278
3279
                    ENDIF
                    
                    xxpos = 0
                    
                    prms_dscs = (*(*!dustem_fit).param_descs)
                    prms_tps = strarr(n_elements(prms_dscs))
bffa7018   Ilyes Choubani   update
3280
                     
9ded3be9   Ilyes Choubani   Display update. F...
3281
3282
3283
                    for i=0L,n_elements(prms_dscs)-1 do begin
                        prms_tps[i] = dustem_parameter_description2type(prms_dscs[i])
                    endfor
bffa7018   Ilyes Choubani   update
3284
                    
9ded3be9   Ilyes Choubani   Display update. F...
3285
                    testprms = where(prms_tps EQ 'PLUGIN', ct_data)
bffa7018   Ilyes Choubani   update
3286
                    
9ded3be9   Ilyes Choubani   Display update. F...
3287
3288
3289
3290
3291
3292
3293
3294
                    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
3295
3296
                        
                        
9ded3be9   Ilyes Choubani   Display update. F...
3297
3298
3299
3300
3301
                        k=0
                        res = dustem_interp
                        errors = dustem_spec
                        yypos-=0.1
                        yypostmp = yypos
bffa7018   Ilyes Choubani   update
3302
                            
9ded3be9   Ilyes Choubani   Display update. F...
3303
3304
3305
3306
                        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
3307
                            
b56f639b   Jean-Philippe Bernard   improved, somehow
3308
3309
                            ;stop

9ded3be9   Ilyes Choubani   Display update. F...
3310
3311
3312
3313
                            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
b56f639b   Jean-Philippe Bernard   improved, somehow
3314
3315
3316
3317
                                prmtg = (*(*!dustem_plugin).(mm).paramtag) ;these are all plugin parameter names
                                indtg = (strmid(string_name,ii+1))         ;string giving the parameter number
                                ;JPB: I don't see why the following line is needed. When parameter number is larger than 10, leads to an error
                                ;indtg = strmid(indtg,0,/reverse_offset)     
9ded3be9   Ilyes Choubani   Display update. F...
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
                                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...
3332
3333
                                
                                
9ded3be9   Ilyes Choubani   Display update. F...
3334
3335
3336
3337
3338
3339
3340
                                 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...
3341
                                  
9ded3be9   Ilyes Choubani   Display update. F...
3342
3343
3344
3345
                                k+=1
                                
                            ENDIF
                              
bffa7018   Ilyes Choubani   update
3346
                            
bffa7018   Ilyes Choubani   update
3347
                        
9ded3be9   Ilyes Choubani   Display update. F...
3348
3349
3350
3351
3352
3353
3354
3355
                        ENDFOR
                    ENDIF
                endelse
             
            
            
            end
            
bffa7018   Ilyes Choubani   update
3356
        
9ded3be9   Ilyes Choubani   Display update. F...
3357
        endcase
bffa7018   Ilyes Choubani   update
3358
    
9ded3be9   Ilyes Choubani   Display update. F...
3359
    endfor
bffa7018   Ilyes Choubani   update
3360
3361
3362
3363

endif


18e47096   Ilyes Choubani   corrections for e...
3364
3365
3366
3367
3368
3369
3370
3371
;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
3372
3373
3374
3375
the_end:


END