Blame view

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

;+
; NAME:
;    dustem_plot_dataset
af2812ab   Annie Hughes   updated doc help
16
;
bffa7018   Ilyes Choubani   update
17
18
; PURPOSE:
;    Allows the plotting of a (several) dataset(s) 
af2812ab   Annie Hughes   updated doc help
19
;
bffa7018   Ilyes Choubani   update
20
; CATEGORY:
af2812ab   Annie Hughes   updated doc help
21
22
;    DustEMWrap, Distributed, Low-level, Plotting
;
bffa7018   Ilyes Choubani   update
23
; CALLING SEQUENCE:
9ded3be9   Ilyes Choubani   Display update. F...
24
;    dustem_plot_dataset, st, dustem_interp, dustem_spec, dataset ,extra_spec=extra_spec, refresh=refresh, position=position,positive_only=positive_only, negative_only=negative_only, _extra=_extra 
af2812ab   Annie Hughes   updated doc help
25
;
bffa7018   Ilyes Choubani   update
26
; INPUTS:
9ded3be9   Ilyes Choubani   Display update. F...
27
;    st = DustEM output structure
af2812ab   Annie Hughes   updated doc help
28
;
9ded3be9   Ilyes Choubani   Display update. F...
29
; INPUT and OUTPUT KEYWORDS:
5eebdedb   Jean-Philippe Bernard   changed plugin st...
30
;    dustem_interp = dustem SED predictions - type = array or list of arrays. Is also a list of parameter values when passing parameters
9ded3be9   Ilyes Choubani   Display update. F...
31
32
;    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
IF keyword_set(help) THEN BEGIN
  doc_library,'dustem_plot_dataset'
  goto,the_end
END

5eebdedb   Jean-Philippe Bernard   changed plugin st...
70
;stop
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

wavs=dustem_get_wavelengths()
5eebdedb   Jean-Philippe Bernard   changed plugin st...
89
n_plgns = n_elements(*!dustem_plugin)
bffa7018   Ilyes Choubani   update
90
91
92
93
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
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.

5eebdedb   Jean-Philippe Bernard   changed plugin st...
98
99
;scopes=tag_names((*!dustem_plugin))
scopes=(*!dustem_plugin).scope
bffa7018   Ilyes Choubani   update
100
101
102
103
104
105
106
107
tgnms_extra = tag_names(_extra)


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


9ded3be9   Ilyes Choubani   Display update. F...
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
; 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
124

9ded3be9   Ilyes Choubani   Display update. F...
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
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...
140
141
if keyword_set(dataset) then begin ;

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

9ded3be9   Ilyes Choubani   Display update. F...
963
964
965
966
967
968
969
                    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
970
971
                        
                        
9ded3be9   Ilyes Choubani   Display update. F...
972
973
974
                        ;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
975
                        
9ded3be9   Ilyes Choubani   Display update. F...
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
                    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
993
                        
9ded3be9   Ilyes Choubani   Display update. F...
994
995
996
997
998
999
1000
1001
                        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
1002
                        
9ded3be9   Ilyes Choubani   Display update. F...
1003
                        if ct_filt_hdn ne 0 then begin
bffa7018   Ilyes Choubani   update
1004
                            ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1005
1006
1007
1008
1009
1010
1011
1012
                            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
1013
                        endif 
9ded3be9   Ilyes Choubani   Display update. F...
1014
1015
                                                       
                    endif 
bffa7018   Ilyes Choubani   update
1016
                    
bffa7018   Ilyes Choubani   update
1017
                
9ded3be9   Ilyes Choubani   Display update. F...
1018
                endelse 
bffa7018   Ilyes Choubani   update
1019
            
9ded3be9   Ilyes Choubani   Display update. F...
1020
            end
bffa7018   Ilyes Choubani   update
1021
            
9ded3be9   Ilyes Choubani   Display update. F...
1022
1023
1024
1025
1026
1027
1028
            ;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...
1029
                
9ded3be9   Ilyes Choubani   Display update. F...
1030
1031
1032
1033
                
                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
1034
                            
9ded3be9   Ilyes Choubani   Display update. F...
1035
1036
1037
1038
1039
                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
1040
                        
9ded3be9   Ilyes Choubani   Display update. F...
1041
1042
                    
                    FOR i=0L,Ngrains-1 DO BEGIN
bffa7018   Ilyes Choubani   update
1043
                        
9ded3be9   Ilyes Choubani   Display update. F...
1044
                        vecto = transpose((st.polext.(1))[i,*]+(st.polext.(2))[i,*])
bffa7018   Ilyes Choubani   update
1045
                        
9ded3be9   Ilyes Choubani   Display update. F...
1046
1047
1048
1049
                        testneq = where(vecto ne 0,countneq)
                        
                        if countneq ne 0 then begin 
                            vecfin = vecto*0.0
bffa7018   Ilyes Choubani   update
1050
                            
9ded3be9   Ilyes Choubani   Display update. F...
1051
1052
1053
1054
1055
1056
1057
1058
1059
                            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
1060
                        
5eebdedb   Jean-Philippe Bernard   changed plugin st...
1061
                        if isa((*!dustem_plugin)[0].spec) then begin
bffa7018   Ilyes Choubani   update
1062
                        
5eebdedb   Jean-Philippe Bernard   changed plugin st...
1063
                            IF total(strsplit((*!dustem_plugin)[i].scope,'+',/extract) EQ 'ADD_POLEXT') THEN begin
9ded3be9   Ilyes Choubani   Display update. F...
1064
                                vecfin = st.polext.ext_tot*0.0
5eebdedb   Jean-Philippe Bernard   changed plugin st...
1065
                                vecfin[testneq] = sqrt((((*(*!dustem_plugin)[i].spec)[*,1])^2)[testneq]+(((*(*!dustem_plugin)[i].spec)[*,2])^2)[testneq])/((*(*!dustem_plugin)[i].spec)[*,0])[testneq]        
9ded3be9   Ilyes Choubani   Display update. F...
1066
                                cgoplot,1/st.polext.wav,vecfin*100,color=clrs_plgns[i],pos=position[0],noerase=1,linestyle=2               
bffa7018   Ilyes Choubani   update
1067
                            
9ded3be9   Ilyes Choubani   Display update. F...
1068
                            ENDIF
bffa7018   Ilyes Choubani   update
1069
1070
                        endif
                        
9ded3be9   Ilyes Choubani   Display update. F...
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
1099
                    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
1100
                        
9ded3be9   Ilyes Choubani   Display update. F...
1101
1102
                        ;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
1103
                        
9ded3be9   Ilyes Choubani   Display update. F...
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
                        ;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
1120
                        
9ded3be9   Ilyes Choubani   Display update. F...
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
                    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
1135
                        ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1136
1137
1138
1139
                        
                        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
1140
                            
9ded3be9   Ilyes Choubani   Display update. F...
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
                            ;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
1156
                        endif 
9ded3be9   Ilyes Choubani   Display update. F...
1157
1158
1159
1160
                                                       
                    endif 
                
                endelse 
bffa7018   Ilyes Choubani   update
1161
                    
9ded3be9   Ilyes Choubani   Display update. F...
1162
            END
bffa7018   Ilyes Choubani   update
1163
            
bffa7018   Ilyes Choubani   update
1164
            
9ded3be9   Ilyes Choubani   Display update. F...
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
             
            '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
1186
                        
9ded3be9   Ilyes Choubani   Display update. F...
1187
                            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
1188
                            
9ded3be9   Ilyes Choubani   Display update. F...
1189
1190
                            ;*****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
1191
                            
9ded3be9   Ilyes Choubani   Display update. F...
1192
1193
1194
                            ;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
1195
                            
9ded3be9   Ilyes Choubani   Display update. F...
1196
1197
1198
1199
1200
1201
1202
1203
1204
                            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
                        
5eebdedb   Jean-Philippe Bernard   changed plugin st...
1205
1206
                        if isa((*!dustem_plugin)[0].spec) then begin
                            IF total(strsplit((*!dustem_plugin)[i].scope,'+',/extract) EQ 'ADD_POLSED') THEN begin
9ded3be9   Ilyes Choubani   Display update. F...
1207
                                ;dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i))[*,1],ppositions=position, /overplot, noerase=1, color=clrs_plgns[i], linestyle=2,xr=xr,/xlog
5eebdedb   Jean-Philippe Bernard   changed plugin st...
1208
                                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
1209
                            ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
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
1238
                        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
1239
                        
9ded3be9   Ilyes Choubani   Display update. F...
1240
1241
                        ;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
1242
                        
9ded3be9   Ilyes Choubani   Display update. F...
1243
1244
1245
                        ;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
1246

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

9ded3be9   Ilyes Choubani   Display update. F...
1788
1789
                        
                        endif else begin
bffa7018   Ilyes Choubani   update
1790
                            
9ded3be9   Ilyes Choubani   Display update. F...
1791
1792
                            
                            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
1793
                                
9ded3be9   Ilyes Choubani   Display update. F...
1794
1795
1796
1797
1798
1799
1800
1801
1802
                            
                            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
1803
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1804
1805
                                    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
1806
                                
9ded3be9   Ilyes Choubani   Display update. F...
1807
                                endif 
bffa7018   Ilyes Choubani   update
1808
                                
9ded3be9   Ilyes Choubani   Display update. F...
1809
                                if ct_filt_hdn_ngtv ne 0 then begin
bffa7018   Ilyes Choubani   update
1810
                                
9ded3be9   Ilyes Choubani   Display update. F...
1811
1812
1813
                                    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
1814
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
                                    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
1825
                    
bffa7018   Ilyes Choubani   update
1826
1827
                
                endelse 
9ded3be9   Ilyes Choubani   Display update. F...
1828
                    
bffa7018   Ilyes Choubani   update
1829
            
9ded3be9   Ilyes Choubani   Display update. F...
1830
            END
bffa7018   Ilyes Choubani   update
1831
            
9ded3be9   Ilyes Choubani   Display update. F...
1832
1833
            ;DONE BUT NOT TESTED...
            'USED': begin
bffa7018   Ilyes Choubani   update
1834
                
9ded3be9   Ilyes Choubani   Display update. F...
1835
1836
1837
                ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.used.xr
                yr = !dustem_plot_range.used.yr
bffa7018   Ilyes Choubani   update
1838
                
9ded3be9   Ilyes Choubani   Display update. F...
1839
1840
1841
1842
                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
1843
            
9ded3be9   Ilyes Choubani   Display update. F...
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
                ;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...
1856
1857
1858
1859
                
                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
1860
                        
24fe128f   Ilyes Choubani   Removed forced pl...
1861
1862
                        ;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
1863
                        
24fe128f   Ilyes Choubani   Removed forced pl...
1864
1865
1866
1867
1868
1869
1870
1871
1872
                        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
1873
                        ENDIF
24fe128f   Ilyes Choubani   Removed forced pl...
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
                        
                        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
1895
                    
24fe128f   Ilyes Choubani   Removed forced pl...
1896
1897
                    endelse
                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
                
                ;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
1910
                        
9ded3be9   Ilyes Choubani   Display update. F...
1911
1912
1913
1914
1915
1916
                            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
1917
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1918
                                    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
1919
                                        
9ded3be9   Ilyes Choubani   Display update. F...
1920
1921
1922
1923
                                    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
1924
                                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
1925
1926
1927
1928
                            ENDFOR
                            ;stop
                            for i=0L,n_plgns-1 do begin
                                
5eebdedb   Jean-Philippe Bernard   changed plugin st...
1929
                                IF isa((*!dustem_plugin)[0].spec) THEN BEGIN
9ded3be9   Ilyes Choubani   Display update. F...
1930
                                
5eebdedb   Jean-Philippe Bernard   changed plugin st...
1931
                                    IF total(strsplit((*!dustem_plugin)[i].scope,'+',/extract) EQ 'ADD_POLSED') THEN begin
bffa7018   Ilyes Choubani   update
1932
                                        
9ded3be9   Ilyes Choubani   Display update. F...
1933
                                        
5eebdedb   Jean-Philippe Bernard   changed plugin st...
1934
                                        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
1935
1936
                                    ENDIF
                                    
bffa7018   Ilyes Choubani   update
1937
1938
                                ENDIF
                                
9ded3be9   Ilyes Choubani   Display update. F...
1939
                            endfor
bffa7018   Ilyes Choubani   update
1940
                            
9ded3be9   Ilyes Choubani   Display update. F...
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
                            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
1956
1957
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
                                
                    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
1975
                                    
9ded3be9   Ilyes Choubani   Display update. F...
1976
1977
1978
1979
1980
1981
1982
1983
1984
                                    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
5eebdedb   Jean-Philippe Bernard   changed plugin st...
1985
                                IF isa((*!dustem_plugin)[0].spec) THEN BEGIN
9ded3be9   Ilyes Choubani   Display update. F...
1986
                                
5eebdedb   Jean-Philippe Bernard   changed plugin st...
1987
                                    IF total(strsplit((*!dustem_plugin)[i].scope,'+',/extract) EQ 'ADD_POLSED') THEN begin
9ded3be9   Ilyes Choubani   Display update. F...
1988
                                        ;dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i))[*,1],ppositions=position, /overplot, noerase=1, color=clrs_plgns[i], linestyle=2,xr=xr,/xlog
5eebdedb   Jean-Philippe Bernard   changed plugin st...
1989
                                        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
1990
                                    ENDIF
bffa7018   Ilyes Choubani   update
1991
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
1992
1993
1994
1995
1996
1997
1998
1999
                            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
2000
                            
9ded3be9   Ilyes Choubani   Display update. F...
2001
2002
2003
2004
2005
2006
2007
2008
2009
                            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
2010
2011
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
                                
                    
                    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
2034
                        ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2035
                        if testpstv ne 0 then begin
bffa7018   Ilyes Choubani   update
2036
                        ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
                            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
2052
                                
9ded3be9   Ilyes Choubani   Display update. F...
2053
2054
2055
2056
2057
2058
2059
                                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
2060
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
                            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
2073
                                
9ded3be9   Ilyes Choubani   Display update. F...
2074
                                endif 
bffa7018   Ilyes Choubani   update
2075
                                
9ded3be9   Ilyes Choubani   Display update. F...
2076
2077
2078
2079
2080
                                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
2081
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2082
2083
                                    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
2084
                                
9ded3be9   Ilyes Choubani   Display update. F...
2085
2086
2087
2088
2089
                                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
2090
                                
9ded3be9   Ilyes Choubani   Display update. F...
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
                            
                            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
2104
                                
9ded3be9   Ilyes Choubani   Display update. F...
2105
                                endif 
bffa7018   Ilyes Choubani   update
2106
                                
9ded3be9   Ilyes Choubani   Display update. F...
2107
2108
2109
2110
2111
                                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
2112
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
                                    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
2132
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2133
                                 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
2134
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2135
2136
2137
2138
2139
                                 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
2140
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2141
2142
2143
2144
                                 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
2145
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2146
                                 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
2147
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2148
2149
2150
2151
2152
2153
2154
2155
                             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
2156
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2157
2158
                                     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
2159
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2160
                                 endif 
bffa7018   Ilyes Choubani   update
2161
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2162
2163
2164
2165
2166
                                 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
2167
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2168
2169
2170
2171
                                     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
2172

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

9ded3be9   Ilyes Choubani   Display update. F...
2206
2207
2208
                            endif     
                             
                        endelse
bffa7018   Ilyes Choubani   update
2209
                        
9ded3be9   Ilyes Choubani   Display update. F...
2210
                    endif
bffa7018   Ilyes Choubani   update
2211
                    
bffa7018   Ilyes Choubani   update
2212
2213
                
                endelse 
bffa7018   Ilyes Choubani   update
2214
                    
bffa7018   Ilyes Choubani   update
2215
                
9ded3be9   Ilyes Choubani   Display update. F...
2216
            end
bffa7018   Ilyes Choubani   update
2217
            
9ded3be9   Ilyes Choubani   Display update. F...
2218
            'QEXT': begin   ;Correct this like you corrected extinction...
bffa7018   Ilyes Choubani   update
2219
                
9ded3be9   Ilyes Choubani   Display update. F...
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
                ;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
2242
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2243
2244
                If n_elements(position) GT 1 THEN BEGIN        
                    ;refreshing of the normalized plot
9ded3be9   Ilyes Choubani   Display update. F...
2245
                    
24fe128f   Ilyes Choubani   Removed forced pl...
2246
                    if keyword_set(refresh) then begin ;The data points in the plot that are being refreshed 
bffa7018   Ilyes Choubani   update
2247
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2248
2249
                        ;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
2250
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
                        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
2268
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
                        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...
2279
                        ENDIF
24fe128f   Ilyes Choubani   Removed forced pl...
2280
2281
2282
2283
2284
2285
2286
2287
      
                    ;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
2288
                    
24fe128f   Ilyes Choubani   Removed forced pl...
2289
2290
                    endelse
                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
                      
                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
2310
                                
bffa7018   Ilyes Choubani   update
2311

9ded3be9   Ilyes Choubani   Display update. F...
2312
2313
2314
2315
2316
2317
2318
                                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
2319
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2320
                                    ;if countneg ne 0 and cos(!dustem_psi_ext) gt 0 then specqgrain[testneg] = 0
bffa7018   Ilyes Choubani   update
2321
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2322
2323
                                    ;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
2324
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2325
                                endif
bffa7018   Ilyes Choubani   update
2326
                                
bffa7018   Ilyes Choubani   update
2327
                                
9ded3be9   Ilyes Choubani   Display update. F...
2328
2329
2330
                            ENDFOR
                            
                            for i=0L,n_plgns-1 do begin
bffa7018   Ilyes Choubani   update
2331
                                
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2332
2333
                                IF isa((*!dustem_plugin)[0].spec) THEN BEGIN
                                    IF total(strsplit((*!dustem_plugin)[i].scope,'+',/extract) EQ 'ADD_POLEXT') THEN begin
9ded3be9   Ilyes Choubani   Display update. F...
2334
2335
                                     
                                        ;dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i))[*,1],ppositions=position, /overplot, noerase=1, color=clrs_plgns[i], linestyle=2,xr=xr,/xlog
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2336
                                        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
2337
                                    ENDIF
bffa7018   Ilyes Choubani   update
2338
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
                            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
2356
                            
bffa7018   Ilyes Choubani   update
2357
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
2358
2359
2360
2361
2362
2363
2364
2365
2366
                                
                    
                    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
2367
                        
9ded3be9   Ilyes Choubani   Display update. F...
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
                            ;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
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2390
                                IF isa((*!dustem_plugin)[0].spec) THEN BEGIN
9ded3be9   Ilyes Choubani   Display update. F...
2391
                                
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2392
                                    IF total(strsplit((*!dustem_plugin)[i].scope,'+',/extract) EQ 'ADD_POLEXT') THEN begin
9ded3be9   Ilyes Choubani   Display update. F...
2393
2394
 
                                        ;dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i))[*,1],ppositions=position, /overplot, noerase=1, color=clrs_plgns[i], linestyle=2,xr=xr,/xlog
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2395
                                        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      
9ded3be9   Ilyes Choubani   Display update. F...
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
                                    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
2407
                            
9ded3be9   Ilyes Choubani   Display update. F...
2408
2409
2410
2411
2412
2413
2414
2415
                            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
2416
                        
9ded3be9   Ilyes Choubani   Display update. F...
2417
                        endif
bffa7018   Ilyes Choubani   update
2418
                                
9ded3be9   Ilyes Choubani   Display update. F...
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
2450
                    
                    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
2451
                                
9ded3be9   Ilyes Choubani   Display update. F...
2452
2453
2454
2455
2456
                                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
2457
                                
9ded3be9   Ilyes Choubani   Display update. F...
2458
2459
2460
2461
2462
                                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
2463
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2464
2465
2466
2467
2468
2469
2470
2471
2472
                            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
2473
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2474
2475
                                    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
2476
                                
9ded3be9   Ilyes Choubani   Display update. F...
2477
                                endif 
bffa7018   Ilyes Choubani   update
2478
                                
9ded3be9   Ilyes Choubani   Display update. F...
2479
                                if ct_filt_hdn_pstv ne 0 then begin
bffa7018   Ilyes Choubani   update
2480
                                
9ded3be9   Ilyes Choubani   Display update. F...
2481
2482
2483
                                    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
2484
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2485
2486
                                    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
2487
                                
9ded3be9   Ilyes Choubani   Display update. F...
2488
                                endif
bffa7018   Ilyes Choubani   update
2489
                                
9ded3be9   Ilyes Choubani   Display update. F...
2490
                            endif
bffa7018   Ilyes Choubani   update
2491
2492
                            
                            
9ded3be9   Ilyes Choubani   Display update. F...
2493
                        endif else begin
bffa7018   Ilyes Choubani   update
2494
2495
                        
                        
9ded3be9   Ilyes Choubani   Display update. F...
2496
2497
                            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
2498
                            
9ded3be9   Ilyes Choubani   Display update. F...
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
2526
                            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
2527
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2528
2529
2530
2531
2532
2533
                                 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
2534
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2535
                                 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
2536
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2537
2538
2539
2540
2541
2542
2543
2544
                             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
2545
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2546
2547
2548
2549
                                     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
2550
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2551
                                 if ct_filt_hdn_ngtv ne 0 then begin
bffa7018   Ilyes Choubani   update
2552
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2553
2554
2555
                                     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
2556
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
                                     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
2567
                                
bffa7018   Ilyes Choubani   update
2568
                            
9ded3be9   Ilyes Choubani   Display update. F...
2569
                            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
2570
                            
9ded3be9   Ilyes Choubani   Display update. F...
2571
2572
2573
                        endelse
            
                    endif
bffa7018   Ilyes Choubani   update
2574
2575
                
                endelse 
9ded3be9   Ilyes Choubani   Display update. F...
2576
2577
                    
            end
bffa7018   Ilyes Choubani   update
2578
            
9ded3be9   Ilyes Choubani   Display update. F...
2579
            'UEXT': begin
bffa7018   Ilyes Choubani   update
2580
                
9ded3be9   Ilyes Choubani   Display update. F...
2581
2582
2583
               ;SETTING THE PLOT RANGE
                xr = !dustem_plot_range.uext.xr
                yr = !dustem_plot_range.uext.yr
bffa7018   Ilyes Choubani   update
2584
                    
9ded3be9   Ilyes Choubani   Display update. F...
2585
2586
2587
2588
2589
2590
2591
                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
2592
                
9ded3be9   Ilyes Choubani   Display update. F...
2593
2594
2595
                ;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
2596
                
9ded3be9   Ilyes Choubani   Display update. F...
2597
                ;Plotting of frequency axis
bffa7018   Ilyes Choubani   update
2598
                
9ded3be9   Ilyes Choubani   Display update. F...
2599
2600
2601
                ;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...
2602
2603
2604
2605
                
                
                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...
2606
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2607
2608
                        ;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
2609
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
                        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
2622
                        
24fe128f   Ilyes Choubani   Removed forced pl...
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
                        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
2633
                        ENDIF
24fe128f   Ilyes Choubani   Removed forced pl...
2634
2635
2636
      
                        
                    endif else begin ;The data points in the plot that remain unchanged
bffa7018   Ilyes Choubani   update
2637
                        ;stop
24fe128f   Ilyes Choubani   Removed forced pl...
2638
2639
2640
2641
2642
                        
                        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
2643
                    
24fe128f   Ilyes Choubani   Removed forced pl...
2644
2645
2646
                    endelse
                ENDIF
                      
9ded3be9   Ilyes Choubani   Display update. F...
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
                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
2660
                                
9ded3be9   Ilyes Choubani   Display update. F...
2661
2662
2663
2664
2665
2666
2667
2668
2669
                                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
2670
                                    
bffa7018   Ilyes Choubani   update
2671
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2672
2673
                                    ;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
2674
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2675
2676
2677
2678
2679
                                endif
                                ;stop
                            ENDFOR
                            
                            for i=0L,n_plgns-1 do begin
bffa7018   Ilyes Choubani   update
2680
                                
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2681
2682
                                IF isa((*!dustem_plugin)[0].spec) THEN BEGIN
                                    IF total(strsplit((*!dustem_plugin)[i].scope,'+',/extract) EQ 'ADD_POLEXT') THEN begin
9ded3be9   Ilyes Choubani   Display update. F...
2683
2684
                                     
                                        ;dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i))[*,1],ppositions=position, /overplot, noerase=1, color=clrs_plgns[i], linestyle=2,xr=xr,/xlog
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2685
                                        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
2686
                                    ENDIF
bffa7018   Ilyes Choubani   update
2687
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2688
                            endfor
bffa7018   Ilyes Choubani   update
2689
                            
9ded3be9   Ilyes Choubani   Display update. F...
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
                            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
2705
2706
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
                                
                    
                    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
2727
                                    ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
                                    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
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2738
                                IF isa((*!dustem_plugin)[0].spec) THEN BEGIN
9ded3be9   Ilyes Choubani   Display update. F...
2739
                                
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2740
                                    IF total(strsplit((*!dustem_plugin)[i].scope,'+',/extract) EQ 'ADD_POLEXT') THEN begin
9ded3be9   Ilyes Choubani   Display update. F...
2741
2742
 
                                        ;dustem_plot_mlog,st.polsed.wav,(*(*!dustem_plugin).(i))[*,1],ppositions=position, /overplot, noerase=1, color=clrs_plgns[i], linestyle=2,xr=xr,/xlog
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2743
                                        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
2744
                                    ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2745
                                    
bffa7018   Ilyes Choubani   update
2746
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2747
2748
2749
2750
2751
2752
2753
2754
                            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
2755
                            
9ded3be9   Ilyes Choubani   Display update. F...
2756
2757
2758
2759
2760
2761
2762
2763
                            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
2764
2765
                        
                        endif
9ded3be9   Ilyes Choubani   Display update. F...
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
                                
                    
                    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
2790
                        
bffa7018   Ilyes Choubani   update
2791
                            
9ded3be9   Ilyes Choubani   Display update. F...
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
                            
                            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
2803
                                
9ded3be9   Ilyes Choubani   Display update. F...
2804
2805
2806
2807
2808
                                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
2809
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2810
2811
2812
2813
2814
2815
                            endif
                            
                            
                            if testpstv ne 0 then begin
                            
                                plotsym, 0
bffa7018   Ilyes Choubani   update
2816
                                
9ded3be9   Ilyes Choubani   Display update. F...
2817
                                if ct_hdnpts NE 0 then begin
bffa7018   Ilyes Choubani   update
2818
                                
9ded3be9   Ilyes Choubani   Display update. F...
2819
2820
2821
2822
2823
2824
2825
                                    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
2826
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2827
                                    endif 
bffa7018   Ilyes Choubani   update
2828
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2829
2830
2831
2832
2833
                                    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
2834
                                        
9ded3be9   Ilyes Choubani   Display update. F...
2835
2836
2837
                                        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
2838
                                    endif
bffa7018   Ilyes Choubani   update
2839
                                    
9ded3be9   Ilyes Choubani   Display update. F...
2840
2841
2842
2843
                                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
2844
                                
bffa7018   Ilyes Choubani   update
2845
                            
9ded3be9   Ilyes Choubani   Display update. F...
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
                            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
2863
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
                                 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
2874
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2875
2876
2877
2878
2879
2880
                                 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
2881
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2882
                                 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
2883
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2884
2885
2886
2887
2888
2889
2890
2891
                             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
2892
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2893
2894
                                     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
2895
                                 
9ded3be9   Ilyes Choubani   Display update. F...
2896
2897
2898
2899
2900
2901
2902
                                 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
2903
                                     
9ded3be9   Ilyes Choubani   Display update. F...
2904
2905
2906
                                     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
2907
2908
                                 endif
                            
9ded3be9   Ilyes Choubani   Display update. F...
2909
                             endif
bffa7018   Ilyes Choubani   update
2910
                        
9ded3be9   Ilyes Choubani   Display update. F...
2911
2912
2913
2914
2915
2916
2917
                        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
2918
                    
9ded3be9   Ilyes Choubani   Display update. F...
2919
2920
2921
                        endelse
                        ;stop
                    endif
bffa7018   Ilyes Choubani   update
2922
2923
                
                endelse 
9ded3be9   Ilyes Choubani   Display update. F...
2924
2925
              
            end
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2926
2927
2928
            'PARAMETERS':BEGIN ;This is for FORTRAN parameters only
                ;print,dustem_interp
                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2929
                p_dim = dustem_interp
9ded3be9   Ilyes Choubani   Display update. F...
2930
                Npar=n_elements(p_dim)
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2931
2932
                IF keyword_set(refresh) THEN BEGIN ;data in the parameter window that is being refreshed
                    k=0
9ded3be9   Ilyes Choubani   Display update. F...
2933
                    IF isa((*!dustem_fit).fixed_param_descs) THEN BEGIN
9ded3be9   Ilyes Choubani   Display update. F...
2934
2935
                        Nfpar = n_elements((*(*!dustem_fit).fixed_param_descs))
                        res = (*(*!dustem_fit).fixed_param_init_values)
9ded3be9   Ilyes Choubani   Display update. F...
2936
                        FOR i=0L,Nfpar-1 DO BEGIN
9ded3be9   Ilyes Choubani   Display update. F...
2937
                            parameter_description = (*(*!dustem_fit).fixed_param_descs)[i]     
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2938
                            parameter_type = dustem_parameter_description2type(parameter_description,string_name=string_name)                            
9ded3be9   Ilyes Choubani   Display update. F...
2939
2940
2941
                            IF parameter_type NE 'PLUGIN' THEN BEGIN                       
                                yypos = 0.8 - k*0.09
                                k+=1
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2942
                            ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2943
                        ENDFOR  
9ded3be9   Ilyes Choubani   Display update. F...
2944
                    ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
2945
2946
                    prms_dscs = (*(*!dustem_fit).param_descs)
                    prms_tps = strarr(n_elements(prms_dscs))
9ded3be9   Ilyes Choubani   Display update. F...
2947
2948
2949
                    for i=0L,n_elements(prms_dscs)-1 do begin
                        prms_tps[i] = dustem_parameter_description2type(prms_dscs[i])
                    endfor
9ded3be9   Ilyes Choubani   Display update. F...
2950
2951
                    testprms = where(prms_tps ne 'PLUGIN', ct_data)
                    if ct_data ne 0 then begin
9ded3be9   Ilyes Choubani   Display update. F...
2952
                        if ~isa(yypos) then yypos = 0.8 else yypos-=0.22 ;not sure about this
9ded3be9   Ilyes Choubani   Display update. F...
2953
2954
2955
2956
2957
                        res = dustem_interp
                        errors = dustem_spec
                        yypostmp = yypos
                        k=0
                        FOR i=0L,Npar-1 DO BEGIN ;---refreshing--- 
9ded3be9   Ilyes Choubani   Display update. F...
2958
2959
2960
                          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'
9ded3be9   Ilyes Choubani   Display update. F...
2961
2962
2963
2964
2965
                            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
9ded3be9   Ilyes Choubani   Display update. F...
2966
2967
                                ;choosing a step of 0.09 in norm coordinates 
                                yypos = yypostmp - k*0.09 
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2968
                                str= strtrim(string(res[i],format=frmt1) + textoidl(' \pm ') + string(errors(i),format=frmt1),2)                                 
9ded3be9   Ilyes Choubani   Display update. F...
2969
2970
                                esc_txt = strjoin(replicate(' ', strlen(strtrim(string(string_name+' = ',format=frmt0),2))))
                                esc_txt = esc_txt+'   '
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2971
2972
2973
2974
2975
2976
2977
                                IF !dustem_end NE 0 THEN BEGIN
                                    esc_txt=strtrim(string(string_name+' = ',format=frmt0),2)+' ' ;so that ps file isn't distorted
                                ENDIF ELSE BEGIN
                                    ;stops there when writing free plugin parameter values but not the last time it does !!
                                    ;stop
                                ENDELSE
                                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
2978
                                xyouts,0.5,yypos,string(esc_txt+str),color=0,alignment=0.5,/normal,charsize=1.
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2979
2980
                                ;stop   ;stops here at each iteration
                                k+=1
bffa7018   Ilyes Choubani   update
2981
                            ENDIF
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2982
                        ENDFOR
9ded3be9   Ilyes Choubani   Display update. F...
2983
                    ENDIF                        
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2984
                ENDIF ELSE BEGIN ;data in the parameter window that is unchanged
9ded3be9   Ilyes Choubani   Display update. F...
2985
                    IF isa((*!dustem_fit).fixed_param_descs) THEN BEGIN
9ded3be9   Ilyes Choubani   Display update. F...
2986
2987
                        Nfpar = n_elements((*(*!dustem_fit).fixed_param_descs))
                        res = (*(*!dustem_fit).fixed_param_init_values)
9ded3be9   Ilyes Choubani   Display update. F...
2988
2989
                        iii=0
                        FOR i=0L,Nfpar-1 DO BEGIN
9ded3be9   Ilyes Choubani   Display update. F...
2990
2991
                            parameter_description = (*(*!dustem_fit).fixed_param_descs)[i]     
                            parameter_type = dustem_parameter_description2type(parameter_description,string_name=string_name)
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2992
                            if parameter_type NE 'PLUGIN' then iii+=1
9ded3be9   Ilyes Choubani   Display update. F...
2993
                        ENDFOR
9ded3be9   Ilyes Choubani   Display update. F...
2994
2995
2996
                        k = 0
                        if iii ne 0 then begin
                            xxpos = 0.5
5eebdedb   Jean-Philippe Bernard   changed plugin st...
2997
                            yypos = 0.9
9ded3be9   Ilyes Choubani   Display update. F...
2998
2999
                            xyouts, xxpos, yypos, '___FROZEN___', charsize=1.2, alignment=0.5,/normal, color=cgcolor('red')
                        endif
bffa7018   Ilyes Choubani   update
3000
                        
9ded3be9   Ilyes Choubani   Display update. F...
3001
                        FOR i=0L,Nfpar-1 DO BEGIN
9ded3be9   Ilyes Choubani   Display update. F...
3002
3003
3004
                            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'
9ded3be9   Ilyes Choubani   Display update. F...
3005
                            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.
9ded3be9   Ilyes Choubani   Display update. F...
3006
                                IF  testpop then begin
9ded3be9   Ilyes Choubani   Display update. F...
3007
3008
                                    indpop=fix(STRUPCASE(strmid(strtrim(parameter_description,2),12,1,/reverse_offset)))
                                    string_name=(((*!dustem_params). GRAINS).grain_type)[indpop]
9ded3be9   Ilyes Choubani   Display update. F...
3009
                                ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
3010
                                yypos = 0.8 - k*0.09
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3011
                                xxpos = 0.5
9ded3be9   Ilyes Choubani   Display update. F...
3012
                                str=strtrim(string(string_name+' = ',format=frmt0)+string(res[i],format=frmt1),2)
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3013
                                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
3014
                                xyouts,xxpos,yypos,str,color=0,/normal,alignment=0.5,charsize=1.
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3015
                                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
3016
                                k+=1
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3017
3018
                            ENDIF
                        ENDFOR
bffa7018   Ilyes Choubani   update
3019
                    ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
3020
                    xxpos = 0.5 
bffa7018   Ilyes Choubani   update
3021
                    
9ded3be9   Ilyes Choubani   Display update. F...
3022
                    ;test so that this string isn't displayed when there are no free parameters: 
bffa7018   Ilyes Choubani   update
3023
                    
9ded3be9   Ilyes Choubani   Display update. F...
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
                    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
3051
3052
                          ;stop

9ded3be9   Ilyes Choubani   Display update. F...
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
                          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
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3074
                                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
3075
                                xyouts,xxpos,yypos,str+esc_txt,color=0,alignment=0.5,/normal,charsize=1.
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3076
3077
3078
                                ;stop
                                ;=== stops here each time a fortran parameter value is written except last
                                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
3079
3080
3081
3082
                                k+=1            
                                
                          ENDIF
                          
ab4dc92e   Ilyes Choubani   Slight modificati...
3083
                        
9ded3be9   Ilyes Choubani   Display update. F...
3084
                        ENDFOR
9ded3be9   Ilyes Choubani   Display update. F...
3085
                    ENDIF
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3086
3087
3088
                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.
9ded3be9   Ilyes Choubani   Display update. F...
3089
                p_dim = dustem_interp
9ded3be9   Ilyes Choubani   Display update. F...
3090
                Npar=n_elements(p_dim)
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3091
                if keyword_set(refresh) then begin ;(REFRESHED RUN)
9ded3be9   Ilyes Choubani   Display update. F...
3092
                    IF isa((*!dustem_fit).fixed_param_descs) THEN BEGIN
9ded3be9   Ilyes Choubani   Display update. F...
3093
3094
3095
3096
                        Nfpar = n_elements((*(*!dustem_fit).fixed_param_descs))
                        res = (*(*!dustem_fit).fixed_param_init_values)
                        k=0
                        FOR i=0L,Nfpar-1 DO BEGIN
9ded3be9   Ilyes Choubani   Display update. F...
3097
3098
                            parameter_description = (*(*!dustem_fit).fixed_param_descs)[i]     
                            parameter_type = dustem_parameter_description2type(parameter_description,string_name=string_name)
9ded3be9   Ilyes Choubani   Display update. F...
3099
3100
3101
                            IF parameter_type EQ 'PLUGIN' THEN BEGIN                       
                                yypos = 0.8 - k*0.09
                                k+=1
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3102
3103
                            ENDIF
                        ENDFOR
9ded3be9   Ilyes Choubani   Display update. F...
3104
                    ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
3105
3106
                    prms_dscs = (*(*!dustem_fit).param_descs)
                    prms_tps = strarr(n_elements(prms_dscs))
9ded3be9   Ilyes Choubani   Display update. F...
3107
3108
3109
                    for i=0L,n_elements(prms_dscs)-1 do begin
                        prms_tps[i] = dustem_parameter_description2type(prms_dscs[i])
                    endfor
9ded3be9   Ilyes Choubani   Display update. F...
3110
                    testprms = where(prms_tps EQ 'PLUGIN', ct_data)
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3111
                    IF ct_data ne 0 THEN BEGIN
9ded3be9   Ilyes Choubani   Display update. F...
3112
                        if ~isa(yypos) then yypos = 0.8 else yypos-=0.22 ;not sure about this
9ded3be9   Ilyes Choubani   Display update. F...
3113
3114
                        k=0
                        res = dustem_interp
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3115
3116
                        ;==== JPB: why not just do that ??
                        ;res=*(*!dustem_fit).CURRENT_PARAM_VALUES
9ded3be9   Ilyes Choubani   Display update. F...
3117
3118
                        errors = dustem_spec
                        yypostmp = yypos
9ded3be9   Ilyes Choubani   Display update. F...
3119
                        FOR i=0L,Npar-1 DO BEGIN  
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3120
                            ;stop
9ded3be9   Ilyes Choubani   Display update. F...
3121
                            parameter_description = (*(*!dustem_fit).param_descs)[i]
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3122
3123
3124
                            parameter_type = dustem_parameter_description2type(parameter_description $
                                                ,string_name=string_name,plugin_name=plugin_name,key=key,no_dustem_plugin_name=no_dustem_plugin_name)
                            ;parameter_type = dustem_parameter_description2type(parameter_description,string_name=string_name)
b56f639b   Jean-Philippe Bernard   improved, somehow
3125
                            ;stop
9ded3be9   Ilyes Choubani   Display update. F...
3126
                            IF parameter_type EQ 'PLUGIN' THEN BEGIN
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3127
3128
3129
3130
3131
                                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
                                mm = where((*!dustem_plugin).name eq plugin_name,count) ;,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
3132
3133
                                indtg = (strmid(string_name,ii+1))
                                ;indtg = strmid(indtg,0,/reverse_offset)     
9ded3be9   Ilyes Choubani   Display update. F...
3134
                                indtg = fix(indtg)
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3135
                                prmtg = prmtg[indtg-1]
9ded3be9   Ilyes Choubani   Display update. F...
3136
                                yypos = yypostmp - k*0.09
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3137
                                xxpos = 0.5        
9ded3be9   Ilyes Choubani   Display update. F...
3138
                                str= strtrim(string(res[i],format=frmt1) + textoidl(' \pm ') + string(errors(i),format=frmt1),2)
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3139
                                ;=== This is just an empty string:
9ded3be9   Ilyes Choubani   Display update. F...
3140
                                esc_txt = strjoin(replicate(' ', strlen(strtrim(string(strmid(string_name,7,ii-7)+' ['+strmid(string_name,ii+1)+']: '+prmtg+' = ',format=frmt0),2))))   
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3141
                                ;esc_txt = strjoin(replicate(' ', strlen(strtrim(string(no_dustem_plugin_name)+' ['+strmid(string_name,ii+1)+']: '+prmtg+' = ',format=frmt0),2))))   
9ded3be9   Ilyes Choubani   Display update. F...
3142
                                esc_txt = esc_txt+'   '
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
                                IF !dustem_end NE 0 THEN  BEGIN
                                    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                         
                                ENDIF
                                ;stop
                                ;Here the esc_txt is an empty string and str only contains the numerical values to be overwritten
                                ;IF !dustem_end THEN stop  ;Why is it doing this twice at the end ?
                                ;stop
                                xyouts,0.5,yypos,string(esc_txt+str),color=0,alignment=0.5,/normal,charsize=1.
                                ;C'EST ICI QUE LES VALEURS DES PARAMETRES SONT AFFICHEES
                                ;print,*(*!dustem_fit).CURRENT_PARAM_VALUES*(*(*!dustem_fit).PARAM_INIT_VALUES)
                                ;message,'Values used:',/continue
                                ;print,res
                                ;stop                      
9ded3be9   Ilyes Choubani   Display update. F...
3156
                                k+=1
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3157
3158
3159
3160
3161
                            ENDIF ELSE BEGIN
                                ;stop
                            ENDELSE
                         ENDFOR
                    ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
3162
                endif else begin ;plotting of strings that are fixed
9ded3be9   Ilyes Choubani   Display update. F...
3163
                    IF isa((*!dustem_fit).fixed_param_descs) THEN BEGIN
9ded3be9   Ilyes Choubani   Display update. F...
3164
3165
                        Nfpar = n_elements((*(*!dustem_fit).fixed_param_descs))
                        res = (*(*!dustem_fit).fixed_param_init_values)
9ded3be9   Ilyes Choubani   Display update. F...
3166
3167
                        iii=0
                        FOR i=0L,Nfpar-1 DO BEGIN
9ded3be9   Ilyes Choubani   Display update. F...
3168
3169
                            parameter_description = (*(*!dustem_fit).fixed_param_descs)[i]     
                            parameter_type = dustem_parameter_description2type(parameter_description,string_name=string_name)
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3170
                            if parameter_type EQ 'PLUGIN' then iii+=1
9ded3be9   Ilyes Choubani   Display update. F...
3171
3172
3173
3174
3175
                        ENDFOR
                        k = 0
                        if iii ne 0 then begin
                            xxpos = 0.5
                            yypos = 0.9
9ded3be9   Ilyes Choubani   Display update. F...
3176
3177
3178
                            xyouts, xxpos, yypos, '___FROZEN___', charsize=1.2,alignment=0.5, /normal, color=cgcolor('red')
                        endif
                        FOR i=0L,Nfpar-1 DO BEGIN
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3179
3180
3181
3182
                            parameter_description = (*(*!dustem_fit).fixed_param_descs)[i]
                            parameter_type = dustem_parameter_description2type(parameter_description $
                                                ,string_name=string_name,plugin_name=plugin_name,key=key,no_dustem_plugin_name=no_dustem_plugin_name)
                            ;parameter_type = dustem_parameter_description2type(parameter_description,string_name=string_name)
9ded3be9   Ilyes Choubani   Display update. F...
3183
3184
3185
                            testpop = STRUPCASE(strmid(strtrim(parameter_description,2),3,1,/reverse_offset)) EQ 'O'
                            
                            IF parameter_type EQ 'PLUGIN' THEN BEGIN
25370043   Jean-Philippe Bernard   src/idl/dustem_ac...
3186
                                ;stop
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3187
3188
3189
3190
3191
3192
3193
3194
                                mm = where((*!dustem_plugin).name EQ plugin_name,count) ; ; 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) ;these are all plugin parameter names
                                indtg=key
                                prmtg = prmtg[indtg-1]
                                ;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((*!dustem_plugin).name eq strupcase(strmid(string_name,7,ii-7))) ;,coun) ; Selecting a plugin through matching the string name of the plugin form the scope system variable with the one read from the parameter description vector
                                ;prmtg = (*(*!dustem_plugin)[mm].paramtag)
                                ;indtg = (strmid(string_name,ii+1))
b56f639b   Jean-Philippe Bernard   improved, somehow
3195
                                ;indtg = strmid(indtg,0,/reverse_offset)     
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3196
                                ;indtg = fix(indtg)
057f2b9c   Jean-Philippe Bernard   small changes
3197
                                ;stop
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3198
                                ;prmtg = prmtg[indtg-1]
9ded3be9   Ilyes Choubani   Display update. F...
3199
                                yypos = 0.8 - k*0.09
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3200
3201
3202
3203
3204
                                xxpos = 0.5
                                ;==== compute string to output parameter value
                                str = strtrim(string(no_dustem_plugin_name+' ['+strtrim(key,2)+']: '+prmtg+' = ',format=frmt0),2)
                                ;str = string(strmid(string_name,7,ii-7)+' ['+strmid(string_name,ii+1)+']: '+prmtg+' = ',format=frmt0)
                                ;str=strtrim(str,2)
9ded3be9   Ilyes Choubani   Display update. F...
3205
                                str1=str+string(res[i],format=frmt1)
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3206
                                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
3207
                                xyouts,xxpos,yypos,str1,color=0,/normal,alignment=0.5,charsize=1.
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3208
3209
                                ;stop
                                ;IF !dustem_end THEN stop
9ded3be9   Ilyes Choubani   Display update. F...
3210
                                k+=1
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3211
3212
                            ENDIF   
                        ENDFOR
9ded3be9   Ilyes Choubani   Display update. F...
3213
3214
3215
                    ENDIF
                    
                    xxpos = 0
9ded3be9   Ilyes Choubani   Display update. F...
3216
3217
                    prms_dscs = (*(*!dustem_fit).param_descs)
                    prms_tps = strarr(n_elements(prms_dscs))
9ded3be9   Ilyes Choubani   Display update. F...
3218
3219
3220
                    for i=0L,n_elements(prms_dscs)-1 do begin
                        prms_tps[i] = dustem_parameter_description2type(prms_dscs[i])
                    endfor
9ded3be9   Ilyes Choubani   Display update. F...
3221
                    testprms = where(prms_tps EQ 'PLUGIN', ct_data)
9ded3be9   Ilyes Choubani   Display update. F...
3222
                    IF ct_data ne 0 then begin
9ded3be9   Ilyes Choubani   Display update. F...
3223
                        if ~isa(yypos) then yypos = 0.9 else yypos-=0.1*1.2 ;not sure about this
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3224
                        xxpos = 0.5
9ded3be9   Ilyes Choubani   Display update. F...
3225
                        xyouts, xxpos, yypos, '___FREE___', charsize=1.2, alignment=0.5,/normal,color=cgcolor('forest green')
9ded3be9   Ilyes Choubani   Display update. F...
3226
3227
3228
3229
3230
                        k=0
                        res = dustem_interp
                        errors = dustem_spec
                        yypos-=0.1
                        yypostmp = yypos
9ded3be9   Ilyes Choubani   Display update. F...
3231
                        FOR i=0L,Npar-1 DO BEGIN  
9ded3be9   Ilyes Choubani   Display update. F...
3232
                            parameter_description = (*(*!dustem_fit).param_descs)[i]
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3233
3234
                            parameter_type = dustem_parameter_description2type(parameter_description $
                                                            ,string_name=string_name,plugin_name=plugin_name,key=key,no_dustem_plugin_name=no_dustem_plugin_name)
9ded3be9   Ilyes Choubani   Display update. F...
3235
                            IF parameter_type EQ 'PLUGIN' THEN BEGIN
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3236
3237
3238
3239
3240
                                mm = where((*!dustem_plugin).name EQ plugin_name,count) ; ; 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) ;these are all plugin parameter names
                                indtg=key
                                prmtg = prmtg[indtg-1]
                                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
3241
                                yypos = yypostmp - k*0.09
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3242
3243
3244
3245
                                xxpos = 0.5;15
                                ;==== compute string to output parameter value
                                str = strtrim(string(no_dustem_plugin_name+' ['+strtrim(key,2)+']: '+prmtg+' = ',format=frmt0),2)
                                esc_txt = strjoin(replicate(' ', strlen(strtrim(string(res[i],format=frmt1)+textoidl(' \pm ')+string(errors(i),format=frmt1),2))))                                    
9ded3be9   Ilyes Choubani   Display update. F...
3246
                                esc_txt = '   '+esc_txt
9ded3be9   Ilyes Choubani   Display update. F...
3247
3248
3249
                                 IF !dustem_end NE 0 THEN BEGIN
                                     esc_txt=''
                                     str=''
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3250
3251
3252
3253
                                ENDIF
                                ;below writes nothing if !dustem_end
                                ;does not print parameter value either
                                ;stop
9ded3be9   Ilyes Choubani   Display update. F...
3254
                                xyouts,xxpos,yypos,str+esc_txt,color=0,alignment=0.5,/normal,charsize=1.
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3255
3256
                                ;stop
                                ;IF !dustem_end THEN stop  ;stops there at each iteration
9ded3be9   Ilyes Choubani   Display update. F...
3257
                                k+=1
9ded3be9   Ilyes Choubani   Display update. F...
3258
                            ENDIF
9ded3be9   Ilyes Choubani   Display update. F...
3259
3260
3261
                        ENDFOR
                    ENDIF
                endelse
5eebdedb   Jean-Philippe Bernard   changed plugin st...
3262
            END
9ded3be9   Ilyes Choubani   Display update. F...
3263
        endcase
9ded3be9   Ilyes Choubani   Display update. F...
3264
    endfor
bffa7018   Ilyes Choubani   update
3265
3266
endif

5eebdedb   Jean-Philippe Bernard   changed plugin st...
3267
;stop
bffa7018   Ilyes Choubani   update
3268

18e47096   Ilyes Choubani   corrections for e...
3269
3270
3271
3272
3273
3274
3275
3276
;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
3277
3278
3279
3280
the_end:


END