Blame view

src/idl/dustem_plot_fit_sed.pro 15.9 KB
452c334e   Ilyes Choubani   Implementation Of...
1
2
 PRO dustem_plot_fit_sed,st,sed, $
                         res=res,errors=errors,chi2=chi2,rchi2=rchi2, $
759a527d   Ilyes Choubani   general update
3
                         no_spec_error=no_spec_error,title=title,$;xtit=xtit,ytit=ytit,xr=xr,yr=yr $
452c334e   Ilyes Choubani   Implementation Of...
4
                         help=help,win=win,ps=ps, $
266ae799   Ilyes Choubani   General update
5
                         legend_xpos=legend_xpos,legend_ypos=legend_ypos,legend_offset=legend_offset,fpol=fpol, $
452c334e   Ilyes Choubani   Implementation Of...
6
                         _extra=_extra
427f1205   Jean-Michel Glorian   version 4.2 merged
7

427f1205   Jean-Michel Glorian   version 4.2 merged
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
; NAME:
;    dustem_plot_fit_sed
; PURPOSE:
;    Plots a Dustem model and SED. Parameter values and error are
;    printed on plot. Used for plotting results during fit.
; CATEGORY:
;    Dustem
; CALLING SEQUENCE:
;    dustem_plot_fit_sed,st,sed,cont[,/no_spec_error][,res=][,errors=][,chi2=][,rchi2=][/help][_extra=]
; INPUTS:
;    st        = Dustem model output structure
;    sed       = Dustem model SED
;    cont      = Dustem model NIR continuum
; OPTIONAL INPUT PARAMETERS:
;    res       = fit result values. If set values are written on plot.
;    errors    = fit result errors. If set values are written on plot.
;    chi2      = fit chi^2. if set value is written on plot.
;    rchi2     = Reduced fit chi^2. if set value is written on plot.
;    _extra    = extra parameters for the plot routine
; OUTPUTS:
;    None
; OPTIONAL OUTPUT PARAMETERS:
;    None
; ACCEPTED KEY-WORDS:
;    help      = If set, print this help
; COMMON BLOCKS:
;    None
; SIDE EFFECTS:
;    SED and model are plotted
; RESTRICTIONS:
;    The dustem idl wrapper must be installed
; PROCEDURE:
;    None
; EXAMPLES
;    dustem_plot_fit_sed,st,sed,cont
; MODIFICATION HISTORY:
;    Written by J.-Ph. Bernard
;    see evolution details on the dustem cvs maintained at CESR
;    Contact J.-Ph. Bernard (Jean-Philippe.Bernard@cesr.fr) in case of problems.
;-

3ff9cac3   Ilyes Choubani   general update
49
50
51

;NOta bene: only delete the cgoplot commands

9ccf7615   Jean-Philippe Bernard   modified to fit u...
52
53
;stop

427f1205   Jean-Michel Glorian   version 4.2 merged
54
55
56
57
58
IF keyword_set(help) THEN BEGIN
  doc_library,'dustem_plot_fit_sed'
  goto,the_end
ENDIF

9ccf7615   Jean-Philippe Bernard   modified to fit u...
59
IF keyword_set(ps) THEN BEGIN
452c334e   Ilyes Choubani   Implementation Of...
60
    set_plot, 'PS'
b0cabd3c   Ilyes Choubani   general update
61
    device, filename=ps, /color,set_character_size=[170,250], /encapsulated
452c334e   Ilyes Choubani   Implementation Of...
62
ENDIF ELSE BEGIN
4750086c   Ilyes Choubani   nouvelle philosph...
63

452c334e   Ilyes Choubani   Implementation Of...
64
  set_plot,'X'
266ae799   Ilyes Choubani   General update
65
    IF keyword_set(win) then window,win;,xsize=600,ysize=800
452c334e   Ilyes Choubani   Implementation Of...
66
ENDELSE
427f1205   Jean-Michel Glorian   version 4.2 merged
67

759a527d   Ilyes Choubani   general update
68
fact = 1.e4*(*!dustem_HCD)/(4.*!pi)/(3.e8/1.e-6/st.sed.wav)*1.e20/1.e7
1a82f397   Ilyes Choubani   Keep dustemwrap a...
69

9ccf7615   Jean-Philippe Bernard   modified to fit u...
70
;use_col_data_filt=70
1a82f397   Ilyes Choubani   Keep dustemwrap a...
71

9ccf7615   Jean-Philippe Bernard   modified to fit u...
72
;use_col_sed_spec=170
1a82f397   Ilyes Choubani   Keep dustemwrap a...
73

9ccf7615   Jean-Philippe Bernard   modified to fit u...
74
use_col_data_filt='blue'
1a82f397   Ilyes Choubani   Keep dustemwrap a...
75

9be94157   Jean-Philippe Bernard   improved
76
;use_col_sed_spec='red'
1355825c   Ilyes Choubani   General update
77
use_col_sed_spec='Powder Blue'
1a82f397   Ilyes Choubani   Keep dustemwrap a...
78

427f1205   Jean-Michel Glorian   version 4.2 merged
79
IF not keyword_set(col_sed) THEN BEGIN
9ccf7615   Jean-Philippe Bernard   modified to fit u...
80
81
  ;use_col_sed_filt=250     ;red
  use_col_sed_filt='red'     ;red
427f1205   Jean-Michel Glorian   version 4.2 merged
82
83
84
85
ENDIF ELSE BEGIN
  use_col_sed_filt=col_sed
ENDELSE
IF not keyword_set(col_tot) THEN BEGIN
9ccf7615   Jean-Philippe Bernard   modified to fit u...
86
87
  ;use_col_tot=200
  use_col_tot='black'
427f1205   Jean-Michel Glorian   version 4.2 merged
88
89
90
91
92
93
94
95
ENDIF ELSE BEGIN
  use_col_tot=col_tot
ENDELSE
IF not keyword_set(line_tot) THEN BEGIN
  use_line_tot=0
ENDIF ELSE BEGIN
  use_line_tot=line_tot
ENDELSE
427f1205   Jean-Michel Glorian   version 4.2 merged
96

452c334e   Ilyes Choubani   Implementation Of...
97

427f1205   Jean-Michel Glorian   version 4.2 merged
98
spec = st.sed.em_tot * fact
266ae799   Ilyes Choubani   General update
99
if keyword_set(fpol) then specpol = st.polsed.em_tot * fact
1a82f397   Ilyes Choubani   Keep dustemwrap a...
100

452c334e   Ilyes Choubani   Implementation Of...
101
;ADDING PLUGIN(S) TO SPECTRUM----------------
1a82f397   Ilyes Choubani   Keep dustemwrap a...
102

79991f38   Jean-Philippe Bernard   fixed for whan sc...
103
104
scopes=tag_names((*!dustem_scope))
IF scopes[0] NE 'NONE' THEN BEGIN
759a527d   Ilyes Choubani   general update
105
;IF ptr_valid(!dustem_plugin) THEN BEGIN
79991f38   Jean-Philippe Bernard   fixed for whan sc...
106
107
  FOR i=0L,n_tags(*!dustem_scope)-1 DO BEGIN
    IF total(strsplit((*(*!dustem_scope).(i)),'+',/extract) EQ 'ADD_SED') THEN spec+=(*(*!dustem_plugin).(i))[*,0]
266ae799   Ilyes Choubani   General update
108
109
110
111
112
113
114
115
    if keyword_set(fpol) then begin
        IF total(strsplit((*(*!dustem_scope).(i)),'+',/extract) EQ 'REPLACE_QSED') THEN specpol=sqrt(((*(*!dustem_plugin).(i))[*,1])^2+((*(*!dustem_plugin).(i))[*,2])^2)
    endif
  ENDFOR
  FOR i=0L,n_tags(*!dustem_scope)-1 DO BEGIN
    if keyword_set(fpol) then begin    
        IF total(strsplit((*(*!dustem_scope).(i)),'+',/extract) EQ 'ADD_QSED') THEN specpol+=sqrt(((*(*!dustem_plugin).(i))[*,1])^2+((*(*!dustem_plugin).(i))[*,2])^2)
    endif  
79991f38   Jean-Philippe Bernard   fixed for whan sc...
116
117
  ENDFOR
ENDIF
452c334e   Ilyes Choubani   Implementation Of...
118
119
;endif
;------------------------------------------
427f1205   Jean-Michel Glorian   version 4.2 merged
120

6730c3f8   Jean-Philippe Bernard   modified to be co...
121
122
;stop

427f1205   Jean-Michel Glorian   version 4.2 merged
123
124
;use_cols=[use_col_pah,use_col_vsg,use_col_bg,use_col_cont]
;use_lines=[use_line_pah,use_line_vsg,use_line_bg,use_line_cont]
4750086c   Ilyes Choubani   nouvelle philosph...
125
;col_off=30
6730c3f8   Jean-Philippe Bernard   modified to be co...
126
127
;Ngrains=(*!dustem_params).grain.Ngrains
Ngrains=(*!dustem_params).Ngrains
9ccf7615   Jean-Philippe Bernard   modified to fit u...
128
129
;use_cols=long(findgen(Ngrains)/(Ngrains-1)*(255-col_off)+col_off)
use_cols=dustem_grains_colors(Ngrains,/cgplot)
9ccf7615   Jean-Philippe Bernard   modified to fit u...
130
131
132
133
use_lines=replicate(0,Ngrains)

norm = sed * 0. + 1

389a2b1d   Jean-Philippe Bernard   improved
134
;====== PLOT THE SED
4750086c   Ilyes Choubani   nouvelle philosph...
135
136
137

IF keyword_set(title) THEN title = title ELSE title = 'Spectral Energy Distribution (Running)'

759a527d   Ilyes Choubani   general update
138
139
140
141
142
143
144
145
IF keyword_set(xr) THEN xr = xr ELSE xr = [1.00E+00,6.00E+04]

IF keyword_set(yr) THEN yr = yr ELSE yr = [1.00E-7,5.00E03]

IF keyword_set(xtit) THEN xtit = xtit ELSE xtit = textoidl('\lambda (\mum)')

IF keyword_set(ytit) THEN ytit = ytit ELSE ytit = textoidl('Brightness/N_H (MJy/sr/H)')

266ae799   Ilyes Choubani   General update
146

266ae799   Ilyes Choubani   General update
147
148
149
;###############################
if keyword_set(fpol) then begin
    if !run_lin then begin
1f4818fe   Jean-Philippe Bernard   modified to work ...
150
151
      IF !d.name NE 'PS' THEN cgDisplay, 600, 500
      cgplot,(*!dustem_data.sed).wav,(*!dustem_data.sed).values/norm,/nodata,xtit='',ytit=ytit,tit='',/ylog,/xlog,/ys,/xs,position=[0.12,0.25,0.96,0.76],xtickformat='(A1)',_extra=_extra,charsize=1.3,/noerase    
266ae799   Ilyes Choubani   General update
152
    endif
1355825c   Ilyes Choubani   General update
153
154
endif ELSE cgplot,(*!dustem_data.sed).wav,(*!dustem_data.sed).values/norm,/nodata,ytit=ytit,tit=title,/ylog,/xlog,/ys,/xs,position=[0.12,0.35,0.96,0.90],charsize=1.3,_extra=_extra,xtickformat='(A1)'
;stop  
266ae799   Ilyes Choubani   General update
155
156
;###############################

452c334e   Ilyes Choubani   Implementation Of...
157
158
159
;this is where you will add the normalized sed


427f1205   Jean-Michel Glorian   version 4.2 merged
160
161
162
ind_filt=where((*!dustem_data.sed).filt_names NE 'SPECTRUM',count_filt)
ind_spec=where((*!dustem_data.sed).filt_names EQ 'SPECTRUM',count_spec)
;=== Plot the data
2ca3af6c   Annie Hughes   fawlty psym bug
163
164
165
; following lines for fawlty compatibility
defsysv,'!psym',exists=pexist
if pexist eq 0 then defsysv,'!psym',0
427f1205   Jean-Michel Glorian   version 4.2 merged
166
167
IF count_spec NE 0 THEN BEGIN
  plotsym,0,/fill
9ccf7615   Jean-Philippe Bernard   modified to fit u...
168
169
170
  xx=((*!dustem_data.sed).wav)[ind_spec]
  yy=((*!dustem_data.sed).values)[ind_spec]/norm[ind_spec]
  rms=3.*((*!dustem_data.sed).sigma)[ind_spec]/2./norm[ind_spec]
1355825c   Ilyes Choubani   General update
171
  cgoplot,xx,yy,psym=8,color=use_col_sed_spec
427f1205   Jean-Michel Glorian   version 4.2 merged
172
  IF not keyword_set(no_spec_error) THEN BEGIN
9be94157   Jean-Philippe Bernard   improved
173
    cgerrplot,xx,yy-rms,yy+rms,color=use_col_sed_spec
9ccf7615   Jean-Philippe Bernard   modified to fit u...
174
    ;err_bar,((*!dustem_data.sed).wav)(ind_spec),((*!dustem_data.sed).values)(ind_spec)/norm(ind_spec),yrms=3.*((*!dustem_data.sed).sigma)(ind_spec)/2./norm(ind_spec)
427f1205   Jean-Michel Glorian   version 4.2 merged
175
176
177
  ENDIF
ENDIF
IF count_filt NE 0 THEN BEGIN
b5ccb706   Jean-Philippe Bernard   improved to fit p...
178
  ;stop
9ccf7615   Jean-Philippe Bernard   modified to fit u...
179
180
181
  xx=((*!dustem_data.sed).wav)[ind_filt]
  yy=((*!dustem_data.sed).values)[ind_filt]/norm[ind_filt]
  rms=3.*((*!dustem_data.sed).sigma)[ind_filt]/2./norm[ind_filt]
427f1205   Jean-Michel Glorian   version 4.2 merged
182
  plotsym,0,/fill
452c334e   Ilyes Choubani   Implementation Of...
183
  cgoplot,xx,yy,psym=8,color='Dodger Blue';use_col_data_filt
9ccf7615   Jean-Philippe Bernard   modified to fit u...
184
  ;err_bar,((*!dustem_data.sed).wav)(ind_filt),((*!dustem_data.sed).values)(ind_filt)/norm(ind_filt),yrms=3.*((*!dustem_data.sed).sigma)(ind_filt)/2./norm(ind_filt),color=use_col_data_filt
452c334e   Ilyes Choubani   Implementation Of...
185
  cgerrplot,xx,yy-rms,yy+rms,color='Dodger Blue';use_col_data_filt
427f1205   Jean-Michel Glorian   version 4.2 merged
186
ENDIF
1355825c   Ilyes Choubani   General update
187
;=== Plot the computed SED
427f1205   Jean-Michel Glorian   version 4.2 merged
188
189
IF count_filt NE 0 THEN BEGIN
  plotsym,8
9ccf7615   Jean-Philippe Bernard   modified to fit u...
190
191
  xx=((*!dustem_data.sed).wav)[ind_filt]
  yy=sed[ind_filt]/norm[ind_filt]
dc72d0b6   Ilyes Choubani   initial procedure...
192
  cgoplot,xx,yy,color=use_col_sed_filt,psym=6,syms=2
427f1205   Jean-Michel Glorian   version 4.2 merged
193
194
195
ENDIF
IF count_spec NE 0 THEN BEGIN
  plotsym,0
9ccf7615   Jean-Philippe Bernard   modified to fit u...
196
197
  xx=((*!dustem_data.sed).wav)[ind_spec]
  yy=sed[ind_spec]/norm[ind_spec]
1355825c   Ilyes Choubani   General update
198
  cgoplot,xx,yy,color='Indian Red',psym=7,syms=1
427f1205   Jean-Michel Glorian   version 4.2 merged
199
200
201
ENDIF


9ccf7615   Jean-Philippe Bernard   modified to fit u...
202
IF !dustem_show_plot EQ 2 THEN BEGIN
427f1205   Jean-Michel Glorian   version 4.2 merged
203
	norm = spec
9ccf7615   Jean-Philippe Bernard   modified to fit u...
204
ENDIF ELSE BEGIN
427f1205   Jean-Michel Glorian   version 4.2 merged
205
	norm = spec * 0. + 1
9ccf7615   Jean-Philippe Bernard   modified to fit u...
206
ENDELSE
266ae799   Ilyes Choubani   General update
207
use_cols[1]='Cornflower'
427f1205   Jean-Michel Glorian   version 4.2 merged
208
FOR i=0L,Ngrains-1 DO BEGIN
9ccf7615   Jean-Philippe Bernard   modified to fit u...
209
  cgoplot,st.sed.wav,st.sed.(i+1)*fact/norm,color=use_cols[i],linestyle=use_lines[i]
427f1205   Jean-Michel Glorian   version 4.2 merged
210
ENDFOR
452c334e   Ilyes Choubani   Implementation Of...
211

1fa79b40   Jean-Philippe Bernard   added back passin...
212
;stop
452c334e   Ilyes Choubani   Implementation Of...
213

759a527d   Ilyes Choubani   general update
214
;PLOTTING OF THE PLUGIN(S)--------------- AUTOMATE THIS. QUITE FEASIBLE
452c334e   Ilyes Choubani   Implementation Of...
215
IF tag_exist(*!dustem_scope,'CONTINUUM') THEN BEGIN
759a527d   Ilyes Choubani   general update
216
  cgoplot,st.sed.wav,(*(*!dustem_plugin).continuum)[*,0],color='Teal',linestyle=3
427f1205   Jean-Michel Glorian   version 4.2 merged
217
ENDIF
4750086c   Ilyes Choubani   nouvelle philosph...
218
IF tag_exist(*!dustem_scope,'FREEFREE') THEN BEGIN
4fd64cbb   Ilyes Choubani   dustem_fit_sed_po...
219
  cgoplot,st.sed.wav,(*(*!dustem_plugin).freefree)[*,0],color='Dark Red',linestyle=3
b5ccb706   Jean-Philippe Bernard   improved to fit p...
220
ENDIF
452c334e   Ilyes Choubani   Implementation Of...
221
IF tag_exist(*!dustem_scope,'SYNCHROTRON') THEN BEGIN
4fd64cbb   Ilyes Choubani   dustem_fit_sed_po...
222
  cgoplot,st.sed.wav,(*(*!dustem_plugin).synchrotron)[*,0],color='Crimson',linestyle=3
b5ccb706   Jean-Philippe Bernard   improved to fit p...
223
ENDIF
452c334e   Ilyes Choubani   Implementation Of...
224

759a527d   Ilyes Choubani   general update
225
226
227
228
IF tag_exist(*!dustem_scope,'MBBDY_ISRF') THEN BEGIN
  cgoplot,st.sed.wav,(*(*!dustem_plugin).mbbdy_isrf)[*,0],color='Gold',linestyle=3
ENDIF

af6214c9   Ilyes Choubani   Added Modified-Bl...
229
IF tag_exist(*!dustem_scope,'MBBDY') THEN BEGIN
759a527d   Ilyes Choubani   general update
230
  cgoplot,st.sed.wav,(*(*!dustem_plugin).mbbdy)[*,0],color='Cornflower',linestyle=3
af6214c9   Ilyes Choubani   Added Modified-Bl...
231
232
233
ENDIF


9ccf7615   Jean-Philippe Bernard   modified to fit u...
234
cgoplot,st.sed.wav,spec/norm,color=use_col_tot,linestyle=use_line_tot
266ae799   Ilyes Choubani   General update
235
if keyword_set(fpol) then cgoplot,st.polsed.wav,specpol,color='Teal',linestyle=4
452c334e   Ilyes Choubani   Implementation Of...
236
237
;plot the normalized data as well. 
;----------------------------------------
427f1205   Jean-Michel Glorian   version 4.2 merged
238

1a82f397   Ilyes Choubani   Keep dustemwrap a...
239

9ccf7615   Jean-Philippe Bernard   modified to fit u...
240
;==== print the legend
759a527d   Ilyes Choubani   general update
241
frmt0='(A36)'
427f1205   Jean-Michel Glorian   version 4.2 merged
242
243
frmt1='(1E10.2)'
frmt2='(F7.2)'
4750086c   Ilyes Choubani   nouvelle philosph...
244
use_legend_xpos=0.50
266ae799   Ilyes Choubani   General update
245
if keyword_set(fpol) then use_legend_ypos=0.70 ELSE use_legend_ypos=0.84
9be94157   Jean-Philippe Bernard   improved
246
use_legend_offset=0.03             ;This is the offset between lines of the legend in normalized units
4750086c   Ilyes Choubani   nouvelle philosph...
247
248
249
legend_charsize=0.86

k=0.
759a527d   Ilyes Choubani   general update
250
251
252
253
iscond=0
n_plgns = n_tags(*!dustem_scope)
inn=n_plgns/2+1
IF n_plgns mod 2 ne 0 THEN inn=n_plgns/2+2
4750086c   Ilyes Choubani   nouvelle philosph...
254

b5ccb706   Jean-Philippe Bernard   improved to fit p...
255
256
IF keyword_set(legend_xpos) THEN use_legend_xpos=legend_xpos
IF keyword_set(legend_ypos) THEN use_legend_ypos=legend_ypos
9be94157   Jean-Philippe Bernard   improved
257
IF keyword_set(legend_offset) THEN use_legend_offset=legend_offset
b5ccb706   Jean-Philippe Bernard   improved to fit p...
258

1a808a22   Jean-Philippe Bernard   improved
259
IF !d.name NE 'PS' THEN cleanplot
266ae799   Ilyes Choubani   General update
260

759a527d   Ilyes Choubani   general update
261
262
tg=0
prv_str=''
427f1205   Jean-Michel Glorian   version 4.2 merged
263
IF keyword_set(res) THEN BEGIN
427f1205   Jean-Michel Glorian   version 4.2 merged
264
  Npar=n_elements(res)
7609fcde   Jean-Philippe Bernard   improved on crazy...
265
  ;print,'=============='
759a527d   Ilyes Choubani   general update
266
  
427f1205   Jean-Michel Glorian   version 4.2 merged
267
  FOR i=0L,Npar-1 DO BEGIN
7609fcde   Jean-Philippe Bernard   improved on crazy...
268
269
    parameter_description=(*(*!dustem_fit).param_descs)[i]
    parameter_type=dustem_parameter_description2type(parameter_description,string_name=string_name)
4750086c   Ilyes Choubani   nouvelle philosph...
270
    str=string(string_name+' = ',format=frmt0)+string(res[i],format=frmt1)
7609fcde   Jean-Philippe Bernard   improved on crazy...
271
    IF keyword_set(errors) THEN BEGIN
4750086c   Ilyes Choubani   nouvelle philosph...
272
      str=str+textoidl(' \pm ')+string(errors(i),format=frmt1)
9be94157   Jean-Philippe Bernard   improved
273
    ENDIF
452c334e   Ilyes Choubani   Implementation Of...
274
   
4750086c   Ilyes Choubani   nouvelle philosph...
275
276
277
    xxpos=use_legend_xpos*0.07
    yypos=use_legend_ypos*0.03
    xyouts,xxpos,yypos,'Model: '+!dustem_model,color=0,/normal,charsize=legend_charsize
dc72d0b6   Ilyes Choubani   initial procedure...
278
279
280
281
282
283
   
    IF STRUPCASE(strmid(strtrim(parameter_description,2),0,6)) eq 'DUSTEM' THEN BEGIN
       
;     xxpos=use_legend_xpos*0.07
;     yypos=use_legend_ypos*0.03
;     xyouts,xxpos,yypos,'Model: '+!dustem_model,color=0,/normal,charsize=legend_charsize
759a527d   Ilyes Choubani   general update
284
285
     
    xxpos=use_legend_xpos*0.75
4750086c   Ilyes Choubani   nouvelle philosph...
286
287
    yypos=use_legend_ypos*1.03
    xyouts,xxpos,yypos,'--Plugins--',color=0,/normal,charsize=legend_charsize
759a527d   Ilyes Choubani   general update
288
    
4750086c   Ilyes Choubani   nouvelle philosph...
289
    ii = strsplit(string_name,'_',count=countx) & ii = ii(countx-1)-1 ; Locating the last underscore to automate the extraction of the plugin's keyword
4750086c   Ilyes Choubani   nouvelle philosph...
290
    
759a527d   Ilyes Choubani   general update
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
    mm=where(tag_names(*!dustem_scope) eq strupcase(strmid(string_name,7,ii-7)),coun) ; Selecting a plugin through matching the string name of the plugin form the scope system variable with the one read from the parameter description vector
 
    ;tg+=1
    ;if strmid(string_name,7,ii-7) eq prv_str then tg-=1
    prmtg=(*(*!dustem_paramtag).(mm))
    indtg=(strmid(string_name,ii+1)) & indtg=strmid(indtg,0,/reverse_offset)   
    ;stop
    indtg=fix(indtg)
    prmtg=prmtg[indtg-1] 
    
    str=string(strmid(string_name,7,ii-7)+' ['+strmid(string_name,ii+1)+']: '+prmtg+' = ',format=frmt0)+string(res[i],format=frmt1)
   
    prv_str=strmid(string_name,7,ii-7)
    
    
    
4750086c   Ilyes Choubani   nouvelle philosph...
307
308
309
     IF keyword_set(errors) THEN BEGIN
       str=str+textoidl(' \pm ')+string(errors(i),format=frmt1)
     ENDIF
759a527d   Ilyes Choubani   general update
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
    
    xxpos=use_legend_xpos*0.46
    
    IF n_plgns gt 3 THEN BEGIN ;adapt the display of the plugins if there are more than three (display two columns)
        IF i eq inn+k THEN BEGIN
           k+=inn     
           ;iscond=1
           inn+=1
           xxpos=use_legend_xpos*0.06
        ENDIF
    ENDIF
              
;     IF iscond THEN BEGIN
;     inn+=1
;     xxpos=use_legend_xpos*0.06
;     ENDIF

    yypos=use_legend_ypos-(i-k)*use_legend_offset
4750086c   Ilyes Choubani   nouvelle philosph...
328
    xyouts,xxpos,yypos,str,color=0,/normal,charsize=legend_charsize
452c334e   Ilyes Choubani   Implementation Of...
329
    endif else begin
9ee42e40   Ilyes Choubani   fixed small bugs
330
331
332
333
334
335
    IF STRUPCASE(strmid(strtrim(parameter_description,2),0,24)) eq '(*!DUSTEM_PARAMS).GRAINS' and STRUPCASE(strmid(strtrim(parameter_description,2),3,1,/reverse_offset)) EQ 'O' then begin
     indpop=fix(STRUPCASE(strmid(strtrim(parameter_description,2),12,1,/reverse_offset)))
     ;oo+=1
     ;string_name=(((*!dustem_params).GRAINS).grain_type)[oo-1]
     string_name=(((*!dustem_params).GRAINS).grain_type)[indpop]
     ;stop
759a527d   Ilyes Choubani   general update
336
    endif
4750086c   Ilyes Choubani   nouvelle philosph...
337
338
339
340
341
    k+=1
    xxpos=use_legend_xpos*1.5
    yypos=use_legend_ypos*1.03
    xyouts,xxpos,yypos,'--Parameters--',color=0,/normal,charsize=legend_charsize
    yypos=use_legend_ypos-(i)*use_legend_offset 
759a527d   Ilyes Choubani   general update
342
343
    xxpos=use_legend_xpos*1.14
    str=string(string_name+' = ',format=frmt0)+string(res[i],format=frmt1)
4750086c   Ilyes Choubani   nouvelle philosph...
344
    xyouts,xxpos,yypos,str,color=0,/normal,charsize=legend_charsize    
452c334e   Ilyes Choubani   Implementation Of...
345
    endelse
427f1205   Jean-Michel Glorian   version 4.2 merged
346
  ENDFOR
7609fcde   Jean-Philippe Bernard   improved on crazy...
347
  ;stop
427f1205   Jean-Michel Glorian   version 4.2 merged
348
349
ENDIF
IF keyword_set(chi2) THEN BEGIN
759a527d   Ilyes Choubani   general update
350
  xxpos=1.29*use_legend_xpos
266ae799   Ilyes Choubani   General update
351
  yypos=1.13*0.84;use_legend_ypos
452c334e   Ilyes Choubani   Implementation Of...
352
  xyouts,xxpos,yypos,string('chi2=',format=frmt0)+string(chi2,format=frmt2),color=0,/normal,charsize=legend_charsize
427f1205   Jean-Michel Glorian   version 4.2 merged
353
354
ENDIF
IF keyword_set(rchi2) THEN BEGIN
759a527d   Ilyes Choubani   general update
355
  xxpos=1.29*use_legend_xpos
266ae799   Ilyes Choubani   General update
356
  yypos=1.13*0.84-use_legend_offset;use_legend_ypos-use_legend_offset
452c334e   Ilyes Choubani   Implementation Of...
357
  xyouts,xxpos,yypos,string('red. chi2=',format=frmt0)+string(rchi2,format=frmt2),color=0,/normal,charsize=legend_charsize
427f1205   Jean-Michel Glorian   version 4.2 merged
358
359
ENDIF

452c334e   Ilyes Choubani   Implementation Of...
360
xtit=textoidl('\lambda (\mum)')
8a88c1a3   Jean-Philippe Bernard   can't remember wh...
361
362
;cgplot,(*!dustem_data.sed).wav,(*!dustem_data.sed).values/sed,/nodata,xtit=xtit,ytit='Normalized',tit='',/xlog,xr=xr,/ys,/xs,yr=[0,2],ylog=0,position=[0.12,0.14,0.96,0.35],/noerase,yticks=2,ymino=2,xticklen=0.1
;stop
266ae799   Ilyes Choubani   General update
363

8a88c1a3   Jean-Philippe Bernard   can't remember wh...
364
IF keyword_set(_extra) THEN BEGIN
759a527d   Ilyes Choubani   general update
365
  extra_kept={XR:[0.,0.]}
8a88c1a3   Jean-Philippe Bernard   can't remember wh...
366
  extra_tags=tag_names(_extra)
759a527d   Ilyes Choubani   general update
367
368
  ind=where(extra_tags EQ 'XR',count)
  IF count NE 0 THEN extra_kept.XR=_extra.(ind[0]) ;ELSE extra_kept=0
8a88c1a3   Jean-Philippe Bernard   can't remember wh...
369
ENDIF
266ae799   Ilyes Choubani   General update
370
371
372
373
374
375

;stop
;,position=[0.12,0.14,0.96,0.35] old position before your polfrac display modification
if keyword_set(fpol) then begin
cgplot,(*!dustem_data.sed).wav,(*!dustem_data.sed).values/sed,_extra=extra_kept,/nodata,xtit=xtit,ytit='Normalized',tit='',/xlog,/ys,/xs,yr=[0,2],ylog=0,position=[0.12,0.1,0.96,0.25],/noerase,yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.3
endif else cgplot,(*!dustem_data.sed).wav,(*!dustem_data.sed).values/sed,_extra=extra_kept,/nodata,xtit=xtit,ytit='Normalized',tit='',/xlog,/ys,/xs,yr=[0,2],ylog=0,position=[0.12,0.14,0.96,0.35],/noerase,yticks=2,ymino=2,xticklen=0.1,ytickformat='(F6.2)',charsize=1.3
452c334e   Ilyes Choubani   Implementation Of...
376
;plot the normalized data as well. 
7f2710c1   Jean-Philippe Bernard   modified to match...
377
378
379
380
381
382
383
384
385
386
387
388
389
390
IF count_spec NE 0 THEN BEGIN
  xx=((*!dustem_data.sed).wav)[ind_spec]
  yy=((*!dustem_data.sed).values/sed)[ind_spec]
  cgoplot,xx,yy,psym=16,symsize=1,thick=2,color=use_col_sed_spec
  trois_sigma=(3.*((*!dustem_data.sed).sigma)/2./sed)[ind_spec]
  cgerrplot,xx,yy-trois_sigma,yy+trois_sigma,color=use_col_sed_spec
ENDIF
IF count_filt NE 0 THEN BEGIN
  xx=((*!dustem_data.sed).wav)[ind_filt]
  yy=((*!dustem_data.sed).values/sed)[ind_filt]
  cgoplot,xx,yy,psym=16,symsize=1,thick=2,color='Dodger Blue'
  trois_sigma=(3.*((*!dustem_data.sed).sigma)/2./sed)[ind_filt]
  cgerrplot,xx,yy-trois_sigma,yy+trois_sigma,color='Dodger Blue'
ENDIF
266ae799   Ilyes Choubani   General update
391

7f2710c1   Jean-Philippe Bernard   modified to match...
392
393
394
395
396
;stop
;cgoplot,(*!dustem_data.sed).wav,(*!dustem_data.sed).values/sed,psym=16,symsize=1,thick=2,color='Dodger Blue'
cgoplot,10^!x.crange,replicate(1.,2),color='black',linestyle=0
;cgoplot,st.sed.wav,spec/spec,color='black'
;cgerrplot,((*!dustem_data.sed).wav),((*!dustem_data.sed).values)/sed-3.*((*!dustem_data.sed).sigma)/2./sed,((*!dustem_data.sed).values)/sed+3.*((*!dustem_data.sed).sigma)/2./sed,color='Dodger Blue'
452c334e   Ilyes Choubani   Implementation Of...
397
398


266ae799   Ilyes Choubani   General update
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
if keyword_set(fpol) then begin
    plotsym,0,/fill
    cgplot, (*!dustem_data.polfrac).wav,(*!dustem_data.polfrac).values*100,/nodata,xtit='',tit=title,ytit='',/xlog,/ylog,/ys,/xs,position=[0.12,0.76,0.96,0.91],charsize=1.3,yr=[1.0E-1,30.0],/noerase,xticklen=0.1,xtickformat='(A1)',_extra=extra_kept;,xr=_extra.xr
    xxpos=use_legend_xpos*0.35
    yypos=use_legend_ypos*1.25
    xyouts,xxpos,yypos,'Polarization fraction (%)',color=cgcolor('purple'),charsize=legend_charsize,/normal
    yypos=use_legend_ypos*1.20
    stringg='Polarization SED '+'('+textoidl('P_{\nu}')+')'
    xyouts,xxpos,yypos,stringg,color=cgcolor('teal'),charsize=legend_charsize,/normal
    pilotfx=fpol(0);((*!dustem_data.polfrac).values)(0);fpol(0);
    cgoplot, (*!dustem_data.polfrac).wav,(*!dustem_data.polfrac).values*100,charsize=1.3,psym=8,syms=1,thick=2,color='Dodger Blue'   
    cgoplot, st.polsed.wav,(specpol/spec)*100/pilotfx*((*!dustem_data.polfrac).values)(0),color='purple'
    cgoplot, (*!dustem_data.polfrac).wav,fpol*100/pilotfx*((*!dustem_data.polfrac).values)(0),color='Red',psym=6,syms=1
    ;fpol=abs(fpol)
    ;delp=(*!dustem_data.polfrac).values*100-fpol*100/pilotfx*((*!dustem_data.polfrac).values)(0)
    ;cgoplot, ((*!dustem_data.polfrac).wav),((*!dustem_data.polfrac).values*100+delp),charsize=1.3,color='black',linestyle=2
    ;stop
endif
452c334e   Ilyes Choubani   Implementation Of...
417

9ccf7615   Jean-Philippe Bernard   modified to fit u...
418
419
420
421
422
423
IF keyword_set(ps) THEN BEGIN
  device,/close
  set_plot,'X'
ENDIF

;stop
427f1205   Jean-Michel Glorian   version 4.2 merged
424
425
426
427

the_end:

END