Blame view

src/idl/dustem_fit_intensity_example.pro 17.5 KB
a1839067   Jean-Philippe Bernard   First commit
1
2
3
4
5
PRO dustem_fit_intensity_example,model=model $
                                ,sed_file=sed_file $
                                ,Nitermax=Nitermax $
                                ,postscript=postscript $
                                ,fits_save_and_restore=fits_save_and_restore $
a6bd0451   Annie Hughes   made prettier for...
6
7
8
                                 ,help=help $
                                 ,wait=wait $
                                 ,verbose=verbose
a1839067   Jean-Philippe Bernard   First commit
9

8561c935   Annie Hughes   minor change
10
11
12
13
;This routine is an example of how to fit an observational SED
;(StokesI only) with DustEM and DustEMWrap. The objective is to
;illustrate how to use DustEMWrap and not to do science -- the fit
;obtained by running this example is likely to be poor!
a1839067   Jean-Philippe Bernard   First commit
14
15
16
17
;  
;For this example, the code uses the SED in the file example_SED_1.xcat,
;which is distributed in the Data/EXAMPLE_OBSDATA/ directory 
;
8561c935   Annie Hughes   minor change
18
19
;The example SED has Stokes I photometric data points from
;IRAC, MIPS, IRAS and NIKA2. Examples illustrating running DustEMWrap to
a6bd0451   Annie Hughes   made prettier for...
20
21
;fit spectral data, polarisation data and extinction data
;are provided in other _example routines in the src/idl/ directory.
a1839067   Jean-Philippe Bernard   First commit
22
23
24
25
  
;+
; NAME:
;    dustem_fit_intensity_example  
a6bd0451   Annie Hughes   made prettier for...
26
;
8561c935   Annie Hughes   minor change
27
28
29
30
31
; PURPOSE:
; This routine is an example of how to fit an observational SED
; (StokesI only) with DustEM and DustEMWrap. The objective is to
; illustrate how to use DustEMWrap and not to do science -- the fit
; obtained by running this example is likely to be poor!
a6bd0451   Annie Hughes   made prettier for...
32
;  
8561c935   Annie Hughes   minor change
33
34
35
36
37
38
39
40
; For this example, the code uses the SED in the file example_SED_1.xcat,
; which is distributed in the Data/EXAMPLE_OBSDATA/ directory 
;
; The example SED has Stokes I photometric data points from
; IRAC, MIPS and IRAS. Examples illustrating running DustEMWrap to
; fit spectral data, polarisation data and extinction data
; are provided in other _example routines in the src/idl/
; directory. See the DustEMWrap User Guide for more information.
a6bd0451   Annie Hughes   made prettier for...
41
;
a1839067   Jean-Philippe Bernard   First commit
42
43
; CATEGORY:
;    DustEMWrap, Distributed, High-Level, User Example
8561c935   Annie Hughes   minor change
44
;
a1839067   Jean-Philippe Bernard   First commit
45
46
; CALLING SEQUENCE:
;    dustem_fit_intensity_example[,model=][sed_file=][,postscript=][,Nitermax=][,fits_save_and_restore=][,/help]
8561c935   Annie Hughes   minor change
47
;
a1839067   Jean-Philippe Bernard   First commit
48
49
; INPUTS:
;    None
8561c935   Annie Hughes   minor change
50
;
a1839067   Jean-Philippe Bernard   First commit
51
52
; OPTIONAL INPUT PARAMETERS:
;    None
8561c935   Annie Hughes   minor change
53
;
a1839067   Jean-Philippe Bernard   First commit
54
55
; OUTPUTS:
;    None
8561c935   Annie Hughes   minor change
56
;
a1839067   Jean-Philippe Bernard   First commit
57
; OPTIONAL OUTPUT PARAMETERS:
a6bd0451   Annie Hughes   made prettier for...
58
;    Plots, results structure in binary FITS table format
8561c935   Annie Hughes   minor change
59
;
a1839067   Jean-Philippe Bernard   First commit
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
; ACCEPTED KEY-WORDS:
;    model = specifies the interstellar dust mixture used by DustEM
;           'MC10' model from Compiegne et al 2010 (default)
;           'DBP90' model from Desert et al 1990
;           'DL01' model from Draine & Li 2001
;           'WD01_RV5p5B' model from Weingartner & Draine 2002 with Rv=5.5
;           'DL07' model from Draine & Li 2007
;           'J13' model from Jones et al 2013, as updated in
;                 Koehler et al 2014
;           'G17_ModelA' model A from Guillet et al (2018). Includes
;                 polarisation. See Tables 2 and 3 of that paper for details.
;           'G17_ModelB' model B from Guillet et al (2018)
;           'G17_ModelC' model C from Guillet et al (2018)
;           'G17_ModelD' model A from Guillet et al (2018)
;    sed_file = string naming the path to text file in .xcat format that
;          describes the observational SED. If not set, the file
;          'Data/SEDs/sample_SED.xcat' is used.  
;    postscript = if set, final plot is saved as postscript in the
a6bd0451   Annie Hughes   made prettier for...
78
;                 current working directory
a1839067   Jean-Philippe Bernard   First commit
79
;    Nitermax = maximum number of fit iterations. Default is 5.
a6bd0451   Annie Hughes   made prettier for...
80
81
82
;    fits_save_and_restore = if set, save the fit results in a binary
;               FITS file. The code then restore this file and plots
;               the results using the saved results information.
a1839067   Jean-Philippe Bernard   First commit
83
;    help      = if set, print this help
a6bd0451   Annie Hughes   made prettier for...
84
85
86
;    wait      = if set, wait this many seconds between each step of
;                the code (for illustration purposes)
;    verbose      = if set, subroutines will run in verbose mode
8561c935   Annie Hughes   minor change
87
;
a1839067   Jean-Philippe Bernard   First commit
88
89
; COMMON BLOCKS:
;    None
8561c935   Annie Hughes   minor change
90
;
a1839067   Jean-Philippe Bernard   First commit
91
92
; SIDE EFFECTS:
;    None
8561c935   Annie Hughes   minor change
93
;
a1839067   Jean-Philippe Bernard   First commit
94
95
96
; RESTRICTIONS:
;    The DustEM fortran code must be installed
;    The DustEMWrap IDL code must be installed
8561c935   Annie Hughes   minor change
97
;
a1839067   Jean-Philippe Bernard   First commit
98
99
; PROCEDURES AND SUBROUTINES USED:
;    *** COMMENT AH --> is this really NONE? ****
8561c935   Annie Hughes   minor change
100
;
a1839067   Jean-Philippe Bernard   First commit
101
102
103
; EXAMPLES
;    dustem_fit_intensity_example
;    dustem_fit_intensity_example,Nitermax=1,fits_save_and_restore='/tmp/mysavefile.fits'
16adf9ea   Jean-Philippe Bernard   improved
104
;    dustem_fit_intensity_example,model='DBP90'
8561c935   Annie Hughes   minor change
105
;
a1839067   Jean-Philippe Bernard   First commit
106
107
108
109
110
111
112
113
114
115
116
117
118
119
; MODIFICATION HISTORY:
;    Written by JPB Apr-2011
;    Evolution details on the DustEMWrap gitlab.
;    See http://dustemwrap.irap.omp.eu/ for FAQ and help.  
;-

IF keyword_set(help) THEN BEGIN
  doc_library,'dustem_fit_intensity_example'
  goto,the_end
END

IF keyword_set(model) THEN BEGIN
  use_model=strupcase(model)
ENDIF ELSE BEGIN
a6bd0451   Annie Hughes   made prettier for...
120
  use_model='MC10'    ;Default is the Compeigne et al (2011) model
a1839067   Jean-Philippe Bernard   First commit
121
122
ENDELSE

a6bd0451   Annie Hughes   made prettier for...
123
124
125
126
use_polarization=0   ; initialize Dustemwrap in no polarization mode 
use_window=2          ; default graphics window number to use for plotting the results
use_verbose=0
if keyword_set(verbose) then use_verbose=1
8561c935   Annie Hughes   minor change
127
128
use_Nitermax=5        ; maximum number of iterations for the fit
IF keyword_set(Nitermax) THEN use_Nitermax=Nitermax
a1839067   Jean-Philippe Bernard   First commit
129

8561c935   Annie Hughes   minor change
130
131
132
133
134
135
;=== Set the (model-dependent) parameters that you want to fit (pd)
;=== their initial values (iv)
;=== and whether they are bounded (ulimed,llimed,llims,ulims).
;=== Fixed parameters (fpd) and their values (fiv) are also set here
;=== Refer to the DustEM and DustEMWrap User guides for an explanation
;=== of the dust model and plug-in parameters.
a1839067   Jean-Philippe Bernard   First commit
136
137
138
139
140
141

CASE use_model OF
      'DBP90':BEGIN
         pd = [ $
             '(*!dustem_params).G0', $      ;G0
             '(*!dustem_params).grains(0).mdust_o_mh',$  ;PAH0 mass fraction
a6bd0451   Annie Hughes   made prettier for...
142
143
             '(*!dustem_params).grains(1).mdust_o_mh',$  ;VSG mass fraction
             '(*!dustem_params).grains(2).mdust_o_mh', $ ;BG mass fraction
a1839067   Jean-Philippe Bernard   First commit
144
145
146
147
148
149
             'dustem_plugin_continuum_2']                ;Intensity of NIR continuum
        iv =   [1.0, 4.3e-4, 4.7e-4,6.4e-3,0.001]
        Npar=n_elements(pd)
        ulimed=replicate(0,Npar)
        llimed=replicate(1,Npar)
        llims=replicate(0.,Npar)
a6bd0451   Annie Hughes   made prettier for...
150
        fpd=[] & fiv=[]
a1839067   Jean-Philippe Bernard   First commit
151
152
153
154
     END
      'DL01':BEGIN
         pd = [ $
             '(*!dustem_params).G0', $      ;G0
a6bd0451   Annie Hughes   made prettier for...
155
             '(*!dustem_params).grains(0).mdust_o_mh',$     ;PAH0 mass fraction
a1839067   Jean-Philippe Bernard   First commit
156
157
158
159
160
161
162
163
164
165
             '(*!dustem_params).grains(1).mdust_o_mh',$     ;PAH1 mass fraction
             '(*!dustem_params).grains(2).mdust_o_mh', $    ;Gra
             '(*!dustem_params).grains(3).mdust_o_mh', $    ;Gra
             '(*!dustem_params).grains(4).mdust_o_mh', $    ;aSil
             'dustem_plugin_continuum_2']                ;Intensity of NIR continuum
        iv =   [1.0,5.4e-4, 5.4e-4,1.8e-4,2.33e-3,8.27e-3,0.001]
        Npar=n_elements(pd)
        ulimed=replicate(0,Npar)
        llimed=replicate(1,Npar)
        llims=replicate(0.,Npar)
a6bd0451   Annie Hughes   made prettier for...
166
        fpd=[] & fiv=[]
a1839067   Jean-Philippe Bernard   First commit
167
168
      END
      'WD01_RV5p5B':BEGIN
a6bd0451   Annie Hughes   made prettier for...
169
170
171
172
173
174
175
176
177
178
179
180
181
182
         pd = [ $
             '(*!dustem_params).G0', $      ;G0
             '(*!dustem_params).grains(0).mdust_o_mh',$     ;PAH0 mass fraction
             '(*!dustem_params).grains(1).mdust_o_mh',$     ;PAH1 mass fraction
             '(*!dustem_params).grains(2).mdust_o_mh', $    ;Gra
             '(*!dustem_params).grains(3).mdust_o_mh', $    ;Gra
             '(*!dustem_params).grains(4).mdust_o_mh', $    ;aSil
             'dustem_plugin_continuum_2']                ;Intensity of NIR continuum
        iv =   [1.0,5.4e-4, 5.4e-4,1.8e-4,1.64e-3,6.99e-3,0.001]
        Npar=n_elements(pd)
        ulimed=replicate(0,Npar)
        llimed=replicate(1,Npar)
        llims=replicate(0.,Npar)
        fpd=[] & fiv=[]
a1839067   Jean-Philippe Bernard   First commit
183
184
185
186
       END
      'DL07':BEGIN
          pd = [ $
              '(*!dustem_params).G0', $      ;G0
a6bd0451   Annie Hughes   made prettier for...
187
              '(*!dustem_params).grains(0).mdust_o_mh',$     ;PAH0 mass fraction
a1839067   Jean-Philippe Bernard   First commit
188
189
190
191
192
              '(*!dustem_params).grains(1).mdust_o_mh',$     ;PAH1 mass fraction
              '(*!dustem_params).grains(2).mdust_o_mh', $    ;Gra
              '(*!dustem_params).grains(3).mdust_o_mh', $    ;Gra
              '(*!dustem_params).grains(4).mdust_o_mh', $    ;aSil
              'dustem_plugin_continuum_2']                ;Intensity of NIR continuum
a6bd0451   Annie Hughes   made prettier for...
193
        iv =   [1.0,4.97e-4, 4.97e-4,1.66e-4,2.21e-3,7.64e-3,0.001]
a1839067   Jean-Philippe Bernard   First commit
194
195
196
197
        Npar=n_elements(pd)
        ulimed=replicate(0,Npar)
        llimed=replicate(1,Npar)
        llims=replicate(0.,Npar)
a6bd0451   Annie Hughes   made prettier for...
198
        fpd=[] & fiv=[]
a1839067   Jean-Philippe Bernard   First commit
199
200
      END
      'MC10':BEGIN
a6bd0451   Annie Hughes   made prettier for...
201
202
; parameters of the model to fit
         pd = [ $
8561c935   Annie Hughes   minor change
203
204
205
206
207
208
209
              '(*!dustem_params).grains(0).mdust_o_mh'$     ;PAH0 mass fraction
              ,'(*!dustem_params).grains(1).mdust_o_mh' $     ;PAH1 mass fraction
              ,'(*!dustem_params).grains(2).mdust_o_mh' $    ;amCBEx
              ,'(*!dustem_params).grains(3).mdust_o_mh' $    ;amCBEx
              ,'(*!dustem_params).grains(4).mdust_o_mh' $     ;aSilx
              ,'dustem_plugin_continuum_2' $                 ;Temperature of the blackbody 
              ,'dustem_plugin_continuum_1' $                 ;Intensity at peak of the continuum
a1839067   Jean-Philippe Bernard   First commit
210
              ]
a6bd0451   Annie Hughes   made prettier for...
211
; initial values of the model parameters that are to be varied during the fit
8561c935   Annie Hughes   minor change
212
         iv =   [ 7.8e-4, 7.8e-4, 1.65e-4, 1.45e-3, 6.7e-3,0.003,1200.]
a1839067   Jean-Philippe Bernard   First commit
213
        Npar=n_elements(pd)
a6bd0451   Annie Hughes   made prettier for...
214
; flags for whether the parameters are upper/lower bounded
a1839067   Jean-Philippe Bernard   First commit
215
216
        ulimed=replicate(0,Npar)
        llimed=replicate(1,Npar)
a6bd0451   Annie Hughes   made prettier for...
217
; lower bound value
a1839067   Jean-Philippe Bernard   First commit
218
        llims=replicate(0.,Npar)
a6bd0451   Annie Hughes   made prettier for...
219
; parameters of the model that are fixed
a1839067   Jean-Philippe Bernard   First commit
220
        fpd=[ $
8561c935   Annie Hughes   minor change
221
222
223
224
          '(*!dustem_params).gas.G0'   $   ; ISRF intensity (multiplicative factor x G0)
 ;         'dustem_plugin_continuum_1' $     ;temperature of blackbody the produces the continuum 
;          ,'dustem_plugin_continuum_2' $     ;intensity at peak of
;          the continuum
a1839067   Jean-Philippe Bernard   First commit
225
            ]
a6bd0451   Annie Hughes   made prettier for...
226
; values of the fixed model parameters
8561c935   Annie Hughes   minor change
227
        fiv=[2.4]
a1839067   Jean-Philippe Bernard   First commit
228
229
230
      END
     'J13':BEGIN
        pd = [ $
8561c935   Annie Hughes   minor change
231
232
233
234
235
236
237
238
239
240
241
242
243
244
             '(*!dustem_params).G0' $      ;G0
;             '(*!dustem_params).grains(0).mdust_o_mh'$     ;CM20 -- power law size distribution
;             '(*!dustem_params).grains(1).mdust_o_mh'$     ;CM20 -- logN size distribution
;             '(*!dustem_params).grains(2).mdust_o_mh' $    ;aPyM5
;             '(*!dustem_params).grains(3).mdust_o_mh' $    ;aOlM5
;             'dustem_plugin_continuum_2']                ;Intensity of NIR continuum
             ,'(*!dustem_params).grains(0).mdust_o_mh'$     ;CM20 -- power law size distribution
             ,'(*!dustem_params).grains(1).mdust_o_mh'$     ;CM20 -- logN size distribution
             ,'(*!dustem_params).grains(2).mdust_o_mh' $    ;aPyM5
             ,'(*!dustem_params).grains(3).mdust_o_mh' $    ;aOlM5
             ,'dustem_plugin_freefree_1' $                ;Isynchrotron amplitude at 10 mm
             ,'dustem_plugin_freefree_2']                ;Isynchrotron amplitude at 10 mm
;        iv =   [1.0, 1.7e-3, 6.3e-4,2.55e-3,2.55e-3,0.001]
        iv =   [1.5,1.7e-3, 6.3e-4,2.55e-3,2.55e-3,7500.,0.4];,2.8,0.1]
a1839067   Jean-Philippe Bernard   First commit
245
246
247
248
        Npar=n_elements(pd)
        ulimed=replicate(0,Npar)
        llimed=replicate(1,Npar)
        llims=replicate(0.,Npar)
a6bd0451   Annie Hughes   made prettier for...
249
        fpd=[] & fiv=[]
8561c935   Annie Hughes   minor change
250
251
;        fpd=['(*!dustem_params).gas.G0'];,'dustem_plugin_continuum_1','dustem_plugin_continuum_2']
;        fiv=[2.4];,1200.,0.002]
a6bd0451   Annie Hughes   made prettier for...
252
     END
a1839067   Jean-Philippe Bernard   First commit
253
      'G17_MODELA':BEGIN
a1839067   Jean-Philippe Bernard   First commit
254
255
256
         pd = [ $
             '(*!dustem_params).G0', $      ;G0
             '(*!dustem_params).grains(0).mdust_o_mh',$  ;PAH0 mass fraction
a6bd0451   Annie Hughes   made prettier for...
257
258
             '(*!dustem_params).grains(1).mdust_o_mh',$     ;amCB_0.3333x
             '(*!dustem_params).grains(2).mdust_o_mh', $    ;aSil2001_0.3333_p20B
a1839067   Jean-Philippe Bernard   First commit
259
             'dustem_plugin_continuum_2']                ;Intensity of NIR continuum
a6bd0451   Annie Hughes   made prettier for...
260
        iv =   [1.0, 7.094483e-4, 1.319896e-3, 5.588265e-3, 0.001]
a1839067   Jean-Philippe Bernard   First commit
261
262
263
264
        Npar=n_elements(pd)
        ulimed=replicate(0,Npar)
        llimed=replicate(1,Npar)
        llims=replicate(0.,Npar)
9074d6cd   Jean-Philippe Bernard   fixed a bug of Na...
265
        use_polarization=0
a6bd0451   Annie Hughes   made prettier for...
266
        fpd=[] & fiv=[]
a1839067   Jean-Philippe Bernard   First commit
267
268
269
      END
      'G17_MODELB':BEGIN
         pd = [ $
a6bd0451   Annie Hughes   made prettier for...
270
            '(*!dustem_params).G0', $      ;G0
a1839067   Jean-Philippe Bernard   First commit
271
             '(*!dustem_params).grains(0).mdust_o_mh',$  ;PAH0 mass fraction
a6bd0451   Annie Hughes   made prettier for...
272
273
             '(*!dustem_params).grains(1).mdust_o_mh',$     ;amCB_0.3333x
             '(*!dustem_params).grains(2).mdust_o_mh', $    ;aSil_0.3333_p20B
a1839067   Jean-Philippe Bernard   First commit
274
             'dustem_plugin_continuum_2']                ;Intensity of NIR continuum
a6bd0451   Annie Hughes   made prettier for...
275
        iv =   [1.0, 6.480655e-4, 1.327672e-3, 5.267745e-3, 0.001]
a1839067   Jean-Philippe Bernard   First commit
276
277
278
279
280
        Npar=n_elements(pd)
        ulimed=replicate(0,Npar)
        llimed=replicate(1,Npar)
        llims=replicate(0.,Npar)
        use_polarization=1
a6bd0451   Annie Hughes   made prettier for...
281
        fpd=[] & fiv=[]
a1839067   Jean-Philippe Bernard   First commit
282
283
     END
      'G17_MODELC':BEGIN
a1839067   Jean-Philippe Bernard   First commit
284
285
286
         pd = [ $
             '(*!dustem_params).G0', $      ;G0
             '(*!dustem_params).grains(0).mdust_o_mh',$  ;PAH0 mass fraction
a6bd0451   Annie Hughes   made prettier for...
287
288
             '(*!dustem_params).grains(1).mdust_o_mh',$     ;amCBE_0.3333x
             '(*!dustem_params).grains(2).mdust_o_mh', $    ;aSil2001_0.3333_p20B
a1839067   Jean-Philippe Bernard   First commit
289
             'dustem_plugin_continuum_2']                ;Intensity of NIR continuum
a6bd0451   Annie Hughes   made prettier for...
290
        iv =   [1.0, 6.979060e-4, 1.555919e-3, 4.366849e-3, 0.001]
a1839067   Jean-Philippe Bernard   First commit
291
292
293
294
295
        Npar=n_elements(pd)
        ulimed=replicate(0,Npar)
        llimed=replicate(1,Npar)
        llims=replicate(0.,Npar)
        use_polarization=1
a6bd0451   Annie Hughes   made prettier for...
296
        fpd=[] & fiv=[]
a1839067   Jean-Philippe Bernard   First commit
297
298
299
      END
      'G17_MODELD':BEGIN
         pd = [ $
a6bd0451   Annie Hughes   made prettier for...
300
            '(*!dustem_params).G0', $      ;G0
a1839067   Jean-Philippe Bernard   First commit
301
             '(*!dustem_params).grains(0).mdust_o_mh',$  ;PAH0 mass fraction
a6bd0451   Annie Hughes   made prettier for...
302
303
             '(*!dustem_params).grains(1).mdust_o_mh',$     ;amCBE_0.3333x
             '(*!dustem_params).grains(2).mdust_o_mh', $    ;aSil2001BE6pctG_0.4x
a1839067   Jean-Philippe Bernard   First commit
304
             'dustem_plugin_continuum_2']                ;Intensity of NIR continuum
a6bd0451   Annie Hughes   made prettier for...
305
        iv =   [1.0, 7.235580e-4, 1.222725e-3, 5.324418e-3, 0.001]
a1839067   Jean-Philippe Bernard   First commit
306
307
308
309
        Npar=n_elements(pd)
        ulimed=replicate(0,Npar)
        llimed=replicate(1,Npar)
        llims=replicate(0.,Npar)
9074d6cd   Jean-Philippe Bernard   fixed a bug of Na...
310
        use_polarization=0
a6bd0451   Annie Hughes   made prettier for...
311
        fpd=[] & fiv=[]
a1839067   Jean-Philippe Bernard   First commit
312
313
314
     END
      'ELSE':BEGIN
         message,'model '+model+' unknown',/continue
8561c935   Annie Hughes   minor change
315
         message,'Known models are MC10,DBP90,DL01,WD01_RV5P5B,DL07,J13,G17_MODELA,G17_MODELB,G17_MODELC,G17_MODELD',/continue
a1839067   Jean-Philippe Bernard   First commit
316
317
318
         stop
      END
ENDCASE
a6bd0451   Annie Hughes   made prettier for...
319
320
321
322
323
Nfix=n_elements(fpd)
if n_elements(fiv) ne Nfix then begin
   message,'Number of fixed parameters (fpd) does not equal number of initial values of fixed parameters (fiv)',/info
   stop
end
a1839067   Jean-Philippe Bernard   First commit
324

a6bd0451   Annie Hughes   made prettier for...
325
326
327
328
if keyword_set(wait) then begin
   message,'Finished setting dust model: '+model,/info
   wait,wait
end
a1839067   Jean-Philippe Bernard   First commit
329

a1839067   Jean-Philippe Bernard   First commit
330
;== INITIALISE DUSTEM
a6bd0451   Annie Hughes   made prettier for...
331
dustem_init,model=use_model,polarization=use_polarization
a1839067   Jean-Philippe Bernard   First commit
332
!dustem_nocatch=1
a6bd0451   Annie Hughes   made prettier for...
333
!dustem_verbose=use_verbose
a1839067   Jean-Philippe Bernard   First commit
334
335
336
!dustem_show_plot=1


a6bd0451   Annie Hughes   made prettier for...
337
;=== READ EXAMPLE SED DATA
a1839067   Jean-Philippe Bernard   First commit
338
339
340
341
342
dir=!dustem_wrap_soft_dir+'/Data/EXAMPLE_OBSDATA/'
file=dir+'example_SED_1.xcat'
IF keyword_set(sed_file) THEN file=sed_file
sed=read_xcat(file,/silent)

a6bd0451   Annie Hughes   made prettier for...
343
344
345
346
347
348
349
if keyword_set(wait) then begin
   message,'Finished reading SED data: '+file,/info
   wait,wait
end

;;=== ADJUST THE UNCERTAINTIES (FOR ILLUSTRATION)
ind=where(sed.sigmaII LT (0.2*sed.StokesI)^2,count)
a1839067   Jean-Philippe Bernard   First commit
350
IF count NE 0 THEN sed[ind].sigmaII=(0.2*sed[ind].StokesI)^2
a1839067   Jean-Philippe Bernard   First commit
351
352

;== SET THE OBSERVATIONAL STRUCTURE
a6bd0451   Annie Hughes   made prettier for...
353
354
;== sed is passed twice -- the first occurrence is the SED that you
;== wish to fit, the second occurrence is the
8561c935   Annie Hughes   minor change
355
;== SED that you wish to visualise. 
80783331   Jean-Philippe Bernard   changed
356
dustem_set_data,sed,sed
a1839067   Jean-Philippe Bernard   First commit
357
358
359
360
361
362
363

;== SET INITIAL VALUES AND LIMITS OF THE PARAMETERS THAT WILL BE
;== ADJUSTED DURING THE FIT
dustem_init_parinfo,pd,iv,up_limited=ulimed,lo_limited=llimed,up_limits=ulims,lo_limits=llims

;== INITIALIZE ANY PLUGINS
dustem_init_plugins,pd,fpd 
a6bd0451   Annie Hughes   made prettier for...
364

a1839067   Jean-Philippe Bernard   First commit
365
;== INITIALIZE ANY FIXED PARAMETERS FOR PLUGINS
a6bd0451   Annie Hughes   made prettier for...
366
367
368
369
370
371
if Nfix gt 0 then dustem_init_fixed_params,fpd,fiv

if keyword_set(wait) then begin
   message,'Finished initializing DustEmWrap, including plugins and fixed parameters',/info
   wait,wait
end
a1839067   Jean-Philippe Bernard   First commit
372

a6bd0451   Annie Hughes   made prettier for...
373
;=== INFORMATION TO RUN THE FIT
a1839067   Jean-Philippe Bernard   First commit
374
tol=1.e-16     ;fit tolerence
a1839067   Jean-Philippe Bernard   First commit
375

a6bd0451   Annie Hughes   made prettier for...
376
377
378
379
380
381
;=== INFORMATION TO MAKE THE PLOT
yr=[1.00e-4,1.00E2] ; y-axis limits
xr=[1.00E0,6.00e4] ; x-axis limits
tit='SED -- Example 1' ; plot title
ytit=textoidl('I_\nu (MJy/sr) for N_H=10^{20} H/cm^2') ; y-axis title
xtit=textoidl('\lambda (\mum)') ; x-axis title
a1839067   Jean-Philippe Bernard   First commit
382

a6bd0451   Annie Hughes   made prettier for...
383
;===  RUN THE FIT
a1839067   Jean-Philippe Bernard   First commit
384
385
386
387
388
389
390
t1=systime(0,/sec)
res=dustem_mpfit_data(tol=tol,Nitermax=use_Nitermax,gtol=gtol $
                      ,/xlog,/ylog,xr=xr,yr=yr,xtit=xtit,ytit=ytit,title=tit $
                      ,legend_xpos=legend_xpos,legend_ypos=legend_ypos $
                      ,errors=errors,chi2=chi2,rchi2=rchi2)
t2=systime(0,/sec)

a6bd0451   Annie Hughes   made prettier for...
391
392
393
394
395
if keyword_set(wait) then begin
   message,'Finished running DustEmWrap, using Niters: '+strtrim(string(use_Nitermax),2),/info
   message,'Time taken [sec]: '+sigfig(t2-t1,2,/sci),/info
   wait,wait
end
8561c935   Annie Hughes   minor change
396

a6bd0451   Annie Hughes   made prettier for...
397
;=== MAKE THE FINAL PLOT
a1839067   Jean-Philippe Bernard   First commit
398
399
400
401
402
403
IF keyword_set(postscript) THEN BEGIN
    dir_ps='./'
    set_plot,'PS'
    ps_file=dir_ps+postscript
    device,filename=ps_file,/color
ENDIF
a6bd0451   Annie Hughes   made prettier for...
404
dustemwrap_plot,*(*!dustem_fit).CURRENT_PARAM_VALUES,dummy,xr=xr,/xstyle,yr=yr,/ysty,/ylog,/xlog,title=tit+' (Final fit)'
a1839067   Jean-Philippe Bernard   First commit
405
406
407
408
409
410
IF keyword_set(postscript) THEN BEGIN
  set_plot,'X'
  device,/close
  message,'Wrote '+ps_file,/info
ENDIF

a6bd0451   Annie Hughes   made prettier for...
411
412
413
414
415
if keyword_set(wait) then begin
   message,'Made the plot of the final results',/info
   wait,wait
end

a1839067   Jean-Philippe Bernard   First commit
416
IF keyword_set(fits_save_and_restore) THEN BEGIN
a6bd0451   Annie Hughes   made prettier for...
417
418
   message,'Writing out results structure: '+fits_save_and_restore,/info
   dustem_write_fits_table,filename=fits_save_and_restore,help=help
8561c935   Annie Hughes   minor change
419
420
;=== At this point, you could erase all dustem system variables, or exit idl... all the
;=== information needed to recover the results and remake the plots has been saved in the FITS table
a1839067   Jean-Philippe Bernard   First commit
421
422
423
  dustem_read_fits_table,filename=fits_save_and_restore,dustem_spectra_st=dustem_spectra_st
  ;==== plot result taken from the saved fits table
  res=*(*!dustem_fit).CURRENT_PARAM_VALUES
a6bd0451   Annie Hughes   made prettier for...
424
425
426
427
428
  dustemwrap_plot,res,dustem_spectra_st,xr=xr,/xstyle,yr=yr,/ysty,/ylog,/xlog,title=tit+' (From Saved FITS file)'
  if keyword_set(wait) then begin
     message,'Saved the results as FITS in the file: '+fits_save_and_restore+', and made a plot using the data in this file',/info
     wait,wait
  end
a1839067   Jean-Philippe Bernard   First commit
429
430
ENDIF

a6bd0451   Annie Hughes   made prettier for...
431
message,'Finished dustem_fit_intensity_example',/info
a1839067   Jean-Philippe Bernard   First commit
432

8561c935   Annie Hughes   minor change
433
434
stop

a1839067   Jean-Philippe Bernard   First commit
435
436
437
the_end:

END