Blame view

src/idl/dustem_compute_polsed.pro 2.37 KB
427f1205   Jean-Michel Glorian   version 4.2 merged
1
2
3
4
5
6
7
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
49
50
51
52
53
54
55
FUNCTION dustem_compute_polsed,p_dim,stp,_extra=extra,out_st=out_st

;+
; NAME:
;    dustem_compute_polsed
; PURPOSE:
;    Computes an SED from a given Dustem spectrum
; CATEGORY:
;    Dustem
; CALLING SEQUENCE:
;    sed=dustem_compute_polsed(p_dim[,st=][,_extra=][,/help])
; INPUTS:
;    p_dim      = parameter values
; OPTIONAL INPUT PARAMETERS:
;    None
; OUTPUTS:
;    sed       = computed SED for filters in !dustem_data
; OPTIONAL OUTPUT PARAMETERS:
;    st        = Dustem output structure
; ACCEPTED KEY-WORDS:
;    help      = If set, print this help
; COMMON BLOCKS:
;    None
; SIDE EFFECTS:
;    None
; RESTRICTIONS:
;    The dustem idl wrapper must be installed
; PROCEDURE:
;    None
; EXAMPLES
;    
; 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.
;-

IF keyword_set(help) THEN BEGIN
  doc_library,'dustem_compute_polsed'
  dustem_polsed=0.
  goto,the_end
ENDIF

IF not keyword_set(stp) THEN BEGIN
  ;st=dustem_run(p_dim)
  dustem_create_functions,p_dim/(*(*!dustem_fit).param_init_values),res=res
  st=dustem_run(p_dim)
ENDIF
If keyword_set(result) THEN result=st
fact = 1.e4*1.E20/(4.*!pi)/(3.e8/1.e-6/stp.wav)*1.e20/1.e7
spec = stp.em_tot * fact
;stop
if not isarray(spec) THEN stop 
;stop
;COMPUTE THE MODEL SED
36e8b879   Jean-Michel Glorian   update from deborah
56

427f1205   Jean-Michel Glorian   version 4.2 merged
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
dustem_polsed = (*!dustem_data.polsed).values * 0.

;stop
IF !dustem_do_cc NE 0 AND !dustem_never_do_cc EQ 0 THEN BEGIN
  message,'DOING color correction calculations',/info
ENDIF ELSE BEGIN
  message,'SKIPPING color correction calculations',/info
ENDELSE

ind_polsed=where((*!dustem_data.polsed).filt_names NE 'SPECTRUM',count_polsed)

IF count_polsed NE 0 THEN BEGIN
  filter_names=((*!dustem_data.polsed).filt_names)(ind_polsed)
  ;FOR ii=0L,n_elements(filter_names)-1 DO BEGIN
    spolsed=dustem_cc(stp.wav,spec,filter_names,cc=cc)
  ;ENDFOR
  dustem_polsed(ind_polsed)=spolsed
ENDIF

;For spectrum data points, interpolate in log-log
;Linear interpolation leads to wrong values, in particular where few
;wavelengths points exist in the model (long wavelengths).
ind_spec=where((*!dustem_data.polsed).filt_names EQ 'SPECTRUM',count_spec)
IF count_spec NE 0 THEN BEGIN
  dustem_polsed(ind_spec)=interpol(spec,stp.wav,(((*!dustem_data.polsed).wav)(ind_spec)))
ENDIF
out_st=stp

;clean pointers
heap_gc

the_end:

RETURN,dustem_polsed

END