Blame view

src/idl/dustem_make_polarization_sed_example.pro 4.3 KB
21b2be95   Jean-Philippe Bernard   First commit
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
PRO dustem_make_polarization_sed_example,model=model,help=help

;+
; NAME:
;    dustem_make_polarization_sed_example
; PURPOSE:
;    This is an example of how to generate an SED using dustemwrap.
;    It is meant to be an example to follow when writing your own
;    programs using the dustem IDL/GDL wrapper.
; CATEGORY:
;    Dustem
; CALLING SEQUENCE:
;    dustem_make_polarization_sed_example[,model=][,/help]
; INPUTS:
;    None
; OPTIONAL INPUT PARAMETERS:
;    None
; OUTPUTS:
;    None
; OPTIONAL OUTPUT PARAMETERS:
;    None
; ACCEPTED KEY-WORDS:
;    model     = if set, name of the Dustem dust model to use (default='G17_MODELC')
;    help      = If set print this help
; COMMON BLOCKS:
;    None
; SIDE EFFECTS:
;    None
; RESTRICTIONS:
;    The dustem idl wrapper must be installed
; PROCEDURE:
;    None
; EXAMPLES
eab2e158   Jean-Philippe Bernard   did some (sometim...
34
35
;    dustem_make_polarization_sed_example
;    dustem_make_polarization_sed_example,model='G17_MODELD'
21b2be95   Jean-Philippe Bernard   First commit
36
37
; MODIFICATION HISTORY:
;    Written by J.P. Bernard June 29th 2011
724127ad   Jean-Philippe Bernard   clean the code a bit
38
;    see evolution details on the dustem cvs maintained at IRAP
21b2be95   Jean-Philippe Bernard   First commit
39
40
41
42
43
44
45
46
47
48
49
;    Contact J.-Ph. Bernard (Jean-Philippe.Bernard@cesr.fr) in case of problems.
;-

IF keyword_set(help) THEN BEGIN
  doc_library,'dustem_fit_sed_polsed_readme'
  goto,the_end
ENDIF

dustem_define_la_common

;=== initialise dustem
21b2be95   Jean-Philippe Bernard   First commit
50
51
52
53
54
55
56
use_mode='G17_MODELC'
dustem_init,mode=use_mode,kwords=['logn-chrg-spin','plaw-pol','plaw-pol'],/pol

!dustem_verbose=1
!dustem_show_plot=1
!dustem_nocatch=1

724127ad   Jean-Philippe Bernard   clean the code a bit
57
;=== define filters for the SED
21b2be95   Jean-Philippe Bernard   First commit
58
59
60
61
62
63
64
filters=['IRAS1','IRAS2','IRAS3','IRAS4','PACS3','SPIRE1','SPIRE2','SPIRE3','HFI2','HFI3','HFI4','HFI5','HFI6','LFI1','LFI2','LFI3']
Nfilt=n_elements(filters)
sed=dustem_initialize_sed(Nfilt)
sed.filter=filters
sed.wave=dustem_filter2wav(filters)
sed.instru=dustem_filter2instru(filters)

724127ad   Jean-Philippe Bernard   clean the code a bit
65
;=== initializing IQU and associated errors to avoid problems when checking SED in dustem_set_data.pro
21b2be95   Jean-Philippe Bernard   First commit
66
67
68
69
70
71
72
73
74
75
sed[*].StokesI=1.
sed.StokesQ=sed.StokesI/100.
sed.StokesU=sed.StokesI/100.
sed.SigmaII=sed.StokesI/100.
sed.SigmaQQ=sed.StokesI/100.
sed.SigmaUU=sed.StokesI/100.
sed.SigmaIQ=sed.StokesI/100.
sed.SigmaIU=sed.StokesI/100.
sed.SigmaQU=sed.StokesI/100.

724127ad   Jean-Philippe Bernard   clean the code a bit
76
;=== initializing the !dustem_data structure that will be internally used 
21b2be95   Jean-Philippe Bernard   First commit
77
78
dustem_set_data,sed

724127ad   Jean-Philippe Bernard   clean the code a bit
79
;help,!dustem_data
21b2be95   Jean-Philippe Bernard   First commit
80
81

;=== Set which model parameters to use for the SED
01f481d4   Jean-Philippe Bernard   added dust polari...
82
83
84
85
86
87
88
89
90
91
92
93
94
pd = [ $
             '(*!dustem_params).G0', $                   ;G0
             '(*!dustem_params).grains(0).mdust_o_mh',$  ;PAH0 mass fraction
             '(*!dustem_params).grains(1).mdust_o_mh',$  ;PAH0 mass fraction   
             '(*!dustem_params).grains(2).mdust_o_mh', $    ;PAH1 mass fraction
             'dustem_plugin_modify_dust_pol_2',  $     ;This will set the polarization angle
             'dustem_plugin_synchrotron_1', $   ;Synchrotron spectra index
             'dustem_plugin_synchrotron_2', $   ;Synchrotron amplitude at 10 mm
             'dustem_plugin_synchrotron_3', $    ;Synchrotron polarization fraction
             'dustem_plugin_synchrotron_4'  $    ;Synchrotron polarization angle
             ]                   
p_truth=[1.,7.8000E-04,7.8000E-04,7.8000E-04,10.,3., 1.e-2, 0.3, 45.]

21b2be95   Jean-Philippe Bernard   First commit
95
96
97
98
99
Npar=n_elements(pd)  
ulimed=replicate(0,Npar)
llimed=replicate(1,Npar)
llims=replicate(0,Npar)

724127ad   Jean-Philippe Bernard   clean the code a bit
100
dustem_init_parinfo,pd,p_truth,up_limited=ulimed,lo_limited=llimed,up_limits=ulims,lo_limits=llims
21b2be95   Jean-Philippe Bernard   First commit
101
102
dustem_init_plugins,pd

21b2be95   Jean-Philippe Bernard   First commit
103
104
dustem_Ised=dustem_compute_sed(p_truth,ssti)   ;sst is not set on purpose, for dustem_compute_sed to compute the sed using fortran code
toto=dustem_compute_stokes(p_truth,sstqu,dustem_Qsed,dustem_Used) ;this procedure also allows for the extraction of the spectra
21b2be95   Jean-Philippe Bernard   First commit
105

724127ad   Jean-Philippe Bernard   clean the code a bit
106
;print,dustem_Qsed,dustem_Used
eab2e158   Jean-Philippe Bernard   did some (sometim...
107

4d1fdbd6   Jean-Philippe Bernard   added some synchr...
108
109
110
111
sed.stokesI=dustem_Ised
sed.stokesQ=dustem_Qsed
sed.stokesU=dustem_Used

724127ad   Jean-Philippe Bernard   clean the code a bit
112
;=== set arbitrary uncertainties to I,Q,U
eab2e158   Jean-Philippe Bernard   did some (sometim...
113
114
sed.sigmaII=abs(sed.StokesI*0.000001)
sed.sigmaQQ=abs(sed.StokesQ*0.000001)
21b2be95   Jean-Philippe Bernard   First commit
115
116
sed.sigmaUU=abs(sed.StokesU*0.000001)

eab2e158   Jean-Philippe Bernard   did some (sometim...
117
118
119
120
sed.sigmaIQ=0.
sed.sigmaIU=0.
sed.sigmaQU=0.

724127ad   Jean-Philippe Bernard   clean the code a bit
121
122
;print,sed.stokesI,sed.stokesQ,sed.stokesU
;print,sed.sigmaII,sed.sigmaQQ,sed.sigmaUU
eab2e158   Jean-Philippe Bernard   did some (sometim...
123

4d1fdbd6   Jean-Philippe Bernard   added some synchr...
124
125
126
;==== fill in dependent columns of the SED.
sed=dustem_fill_sed_dependent_columns(sed)

eab2e158   Jean-Philippe Bernard   did some (sometim...
127
128
129
130
131
;======== save the SED
filename='/tmp/fake_polarization_sed.xcat'
write_xcat,sed,filename

message,'Wrote '+filename,/continue
21b2be95   Jean-Philippe Bernard   First commit
132

2a47d796   Jean-Philippe Bernard   improved
133
134
filename_final=!dustem_wrap_soft_dir+'/Data/EXAMPLE_OBSDATA/example_sed3.xcat'
str='cp '+filename+' '+filename_final
01f481d4   Jean-Philippe Bernard   added dust polari...
135
message,'Do '+str+' to make change permanent',/continue
2a47d796   Jean-Philippe Bernard   improved
136

21b2be95   Jean-Philippe Bernard   First commit
137
138
139
the_end:

END