diff --git a/src/idl/dustem_set_plot_range.pro b/src/idl/dustem_set_plot_range.pro new file mode 100644 index 0000000..f455c56 --- /dev/null +++ b/src/idl/dustem_set_plot_range.pro @@ -0,0 +1,695 @@ +PRO dustem_set_plot_range ,test_m,test_x, _extra=_extra ,help=help + +;+ +; NAME: +; dustem_set_plot_range +; PURPOSE: +; Sets the X and Y plotting ranges for the different datasets in emission and extinction when in polarization mode and not (using the _extra structure). +; CATEGORY: +; DustEMWrap +; CALLING SEQUENCE: +; dustem_set_plot_range,test_m,test_x,_extra=_extra +; INPUTS: +; test_m : (Boolean) signaling emission mode +; test_x : (Boolean) signaling extinction mode +; OPTIONAL INPUT PARAMETERS: +; _extra structure containing the plotting keywords +; OUTPUTS: +; NONE +; OPTIONAL OUTPUT PARAMETERS: +; +; ACCEPTED KEY-WORDS: +; help +; COMMON BLOCKS: +; None +; SIDE EFFECTS: +; Changes the default plotting parameters in the !dustem_plot_range pointer. +; The procedure only works with the presence of the _extra structure +; RESTRICTIONS: +; The DustEM fortran code must be installed +; The DustEMWrap IDL code must be installed +; PROCEDURES AND SUBROUTINES USED: +; +; EXAMPLES +; dustem_set_plot_range ,test_m,test_x, _extra=_extra +; MODIFICATION HISTORY: +; Written by Ilyes Choubani +; Evolution details on the DustEMWrap gitlab. +;- + +IF keyword_set(help) THEN BEGIN + doc_library,'dustemw_set_plot_range' + goto,the_end +END + +IF keyword_set(_extra) THEN BEGIN + + tgnms_extra = tag_names(_extra) + + ; ;Now testing on what is in the _extra structure. + IF test_m and ~test_x THEN BEGIN ;EMISSION ALONE + + IF !run_pol THEN BEGIN ;SEVERAL DATA SETS: THE DASHBOARD + + ;Setting of tHE X-RANGE + ;taking into account as many entries as possible + tsxr = strmid(strupcase(tgnms_extra),0,2) EQ 'XR' or $ + strupcase(tgnms_extra) EQ 'XRANGE' or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'X' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_M') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'X' and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) EQ '_EMISSION') + + idxr = where(tsxr,ctestxr) + + ;There is no error testing on X ranges because there is only one X range + + ;THIS WILL ONLY CONCERN THE Y RANGES + + tst = STRUPCASE(strmid(tgnms_extra,2,/reverse_offset)) NE 'SED' and $ + STRUPCASE(strmid(tgnms_extra,2,/reverse_offset)) NE '_EM' and $ + STRUPCASE(strmid(tgnms_extra,2,/reverse_offset)) NE 'RAC' + + idyr = where((strmid(strupcase(tgnms_extra),0,2) EQ 'YR'and tst) or $ + strupcase(tgnms_extra) EQ 'YRANGE' or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'YR' and tst and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) NE '_M') or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'YR' and tst and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) NE '_EMISSION'),ctestyr) ;(strsplit(tgnms_extra,'_')) NE [0],ctestyr) + + + if ctestyr ne 0 then message, 'You have provided one Y-range when multiple ones have to be provided.', /continue + + idyr_polsed = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,5,/reverse_offset)) EQ 'POLSED',ctyr_polsed) + + idyr_psi_em = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,5,/reverse_offset)) EQ 'PSI_EM',ctyr_psi_em) + + idyr_used = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,3,/reverse_offset)) EQ 'USED',ctyr_used) + + idyr_sed = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,5,/reverse_offset)) NE 'POLSED' and $ + STRUPCASE(strmid(tgnms_extra,3,/reverse_offset)) NE 'QSED' and $ + STRUPCASE(strmid(tgnms_extra,3,/reverse_offset)) NE 'USED' and $ + STRUPCASE(strmid(tgnms_extra,2,/reverse_offset)) EQ 'SED',ctyr_sed) + + idyr_polfrac = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,5,/reverse_offset)) EQ 'OLFRAC',ctyr_polfrac) + + idyr_qsed = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,3,/reverse_offset)) EQ 'QSED',ctyr_qsed) + + + ;SETTING THE TITLE + + idtit = where(strmid(strupcase(tgnms_extra),0,3) EQ 'TIT' or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'T' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_M') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'T' and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) EQ '_EMISSION') , ctestit) + + + + + ;FILLING UP X ranges (same xrange) + + IF ctestxr ne 0 THEN BEGIN + + FOR i=0L,(n_tags(!dustem_plot_range)-3)/2 DO BEGIN ; THIS IS EMISSION , extinction will have to from (n_tags(!dustem_plot_range)-2)/2+1 to (n_tags(!dustem_plot_range)-2) + + !dustem_plot_range.(i).xr=_extra.(idxr) + + ENDFOR + + + ENDIF ;else the default xr is kept + + ;FILLING UP Y RANGES + + + if ctyr_polsed ne 0 then !dustem_plot_range.(3).yr = _extra.(idyr_polsed) + + + if ctyr_psi_em ne 0 then !dustem_plot_range.(5).yr = _extra.(idyr_psi_em) + + + if ctyr_used ne 0 then !dustem_plot_range.(2).yr = _extra.(idyr_used) + + + if ctyr_sed ne 0 then !dustem_plot_range.(0).yr = _extra.(idyr_sed) + + + if ctyr_polfrac ne 0 then !dustem_plot_range.(4).yr = _extra.(idyr_polfrac) + + + if ctyr_qsed ne 0 then !dustem_plot_range.(1).yr = _extra.(idyr_qsed) + + + if ctestit ne 0 then !dustem_plot_range.(12) = _extra.(idtit) + stop + + ENDIF ELSE BEGIN ;ONE DATA SET : SED - - - - + + tsxr = strmid(strupcase(tgnms_extra),0,2) EQ 'XR' or $ + strupcase(tgnms_extra) EQ 'XRANGE' or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'X' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_M') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'X' and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) EQ '_EMISSION') + + idxr = where(tsxr,ctestxr) + ;FILLING UP X ranges (same xrange) + + IF ctestxr ne 0 THEN !dustem_plot_range.(0).xr=_extra.(idxr) + + idyr = where(strmid(strupcase(tgnms_extra),0,2) EQ 'YR' or $ + strupcase(tgnms_extra) EQ 'YRANGE' or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_M') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) EQ '_EMISSION'),ctestyr) + + ;Filling up the Y range + if ctestyr ne 0 then !dustem_plot_range.(0).yr = _extra.(idyr) + + ;SETTING THE TITLE + + idtit = where(strmid(strupcase(tgnms_extra),0,3) EQ 'TIT' or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'T' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_M') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'T' and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) EQ '_EMISSION') , ctestit) + + if ctestit ne 0 then !dustem_plot_range.(12) = _extra.(idtit) + + ENDELSE + + + ENDIF + + + IF test_x and ~test_m THEN BEGIN ;EXTINCTION ALONE + + + + IF !run_pol THEN BEGIN ;SEVERAL DATA SETS: THE DASHBOARD + + + ;Setting of tHE X-RANGE + ;taking into account as many entries as possible + tsxr = strmid(strupcase(tgnms_extra),0,2) EQ 'XR' or $ + strupcase(tgnms_extra) EQ 'XRANGE' or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'X' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_X') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'X' and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) EQ '_EXTINCTION') + + idxr = where(tsxr,ctestxr) + + + tst = STRUPCASE(strmid(tgnms_extra,2,/reverse_offset)) NE 'EXT' + + idyr = where((strmid(strupcase(tgnms_extra),0,2) EQ 'YR'and tst) or $ + strupcase(tgnms_extra) EQ 'YRANGE' or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'YR' and tst and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) NE '_X') or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'YR' and tst and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) NE '_EXTINCTION'),ctestyr) ; + + + if ctestyr ne 0 then message, 'You have provided one Y-range when multiple Y-ranges have to be provided.',/continue + + + idyr_polext = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,6,/reverse_offset)) EQ '_POLEXT',ctyr_polext) + + idyr_psi_ext = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,6,/reverse_offset)) EQ 'PSI_EXT',ctyr_psi_ext) + + idyr_uext = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,3,/reverse_offset)) EQ 'UEXT',ctyr_uext) + + idyr_fpolext = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,6,/reverse_offset)) EQ 'FPLOEXT',ctyr_fpolext) + + idyr_qext = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,3,/reverse_offset)) EQ 'QEXT',ctyr_qext) + + testext = strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,2,/reverse_offset)) EQ 'EXT' and $ + STRUPCASE(strmid(tgnms_extra,6,/reverse_offset)) NE '_POLEXT' and $ + STRUPCASE(strmid(tgnms_extra,6,/reverse_offset)) NE 'FPOLEXT' and $ + STRUPCASE(strmid(tgnms_extra,6,/reverse_offset)) NE 'PSI_EXT' and $ + STRUPCASE(strmid(tgnms_extra,3,/reverse_offset)) NE 'UEXT' and $ + STRUPCASE(strmid(tgnms_extra,3,/reverse_offset)) NE 'QEXT' + + idyr_ext = where(testex,ctyr_ext) + + + ;SETTING THE TITLE + + idtit = where(strmid(strupcase(tgnms_extra),0,3) EQ 'TIT' or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'T' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_X') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'T' and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) EQ '_EXTINCTION') , ctestit) + + + ;FILLING UP Xranges (same xrange) + + IF ctestxr ne 0 THEN BEGIN + + FOR i=(n_tags(!dustem_plot_range)-2)/2+1,(n_tags(!dustem_plot_range)-2) DO BEGIN ; THIS IS EMISSION , extinction will have to from (n_tags(!dustem_plot_range)-2)/2+1 to (n_tags(!dustem_plot_range)-2) + + !dustem_plot_range.(i).xr=_extra.(idxr) + + ENDFOR + + + ENDIF ;else the default xr is kept + + + ;FILLING UP Y RANGES + + + if ctyr_polext ne 0 then !dustem_plot_range.(9).yr = _extra.(idyr_polext) + + + if ctyr_psi_ext ne 0 then !dustem_plot_range.(11).yr = _extra.(idyr_psi_ext) + + + if ctyr_uext ne 0 then !dustem_plot_range.(8).yr = _extra.(idyr_uext) + + + if ctyr_ext ne 0 then !dustem_plot_range.(6).yr = _extra.(idyr_ext) + + + if ctyr_fpolext ne 0 then !dustem_plot_range.(10).yr = _extra.(idyr_fpolext) + + + if ctyr_qext ne 0 then !dustem_plot_range.(7).yr = _extra.(idyr_qext) + + + if ctestit ne 0 then !dustem_plot_range.(13) = _extra.(idtit) + + + ENDIF ELSE BEGIN ;ONE DATA SET : EXT + + + tsxr = strmid(strupcase(tgnms_extra),0,2) EQ 'XR' or $ + strupcase(tgnms_extra) EQ 'XRANGE' or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'X' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_X') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'X' and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) EQ '_EXTINCTION') + + idxr = where(tsxr,ctestxr) + + ;FILLING UP X ranges (same xrange) + + IF ctestxr ne 0 THEN !dustem_plot_range.(6).xr=_extra.(idxr) + + + + ;NB: Counters in this loop and in the loop above do not necessarily serve the same function + idyr = where(strmid(strupcase(tgnms_extra),0,2) EQ 'YR' or $ + strupcase(tgnms_extra) EQ 'YRANGE' or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_X') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) EQ '_EXTINCTION'),ctestyr) ; + + if ctestyr ne 0 then !dustem_plot_range.(6).yr = _extra.(idyr) + + ;SETTING THE TITLE + + idtit = where(strmid(strupcase(tgnms_extra),0,3) EQ 'TIT' or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'T' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_X') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'T' and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) EQ '_EXTINCTION') , ctestit) + + + if ctestit ne 0 then !dustem_plot_range.(13) = _extra.(idtit) + + + ENDELSE + + ENDIF + + + + IF test_m and test_x THEN BEGIN ;EMISSION and EXTINCTION + + + IF !run_pol THEN BEGIN ;SEVERAL DATA SETS: THE SED DASHBOARD & EXT DASHBOARD + + + tstxr = strupcase(tgnms_extra) EQ 'XRANGE' or $ + strupcase(tgnms_extra) EQ 'XR' or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'XR' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) NE '_M') or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'XR' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) NE '_X') or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'XR' and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) NE '_EMISSION') or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'XR' and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) NE '_EXTINCTION') + + idxr = where(tstxr,ctestxr) + + if ctestxr ne 0 then message, 'You have provided one X-range when multiple ones are needed',/continue + + t_m = (strmid(strupcase(tgnms_extra),0,1) EQ 'X' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_M') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'X' and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) EQ '_EMISSION') + + indxr_m = where(t_m,ctestxr_m) + + + + t_x = (strmid(strupcase(tgnms_extra),0,1) EQ 'X' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_X') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'X' and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) EQ '_EXTINCTION') + + + idxr_x = where(t_x,ctestxr_x) + + + ;SETTING Y RANGE + + tst = STRUPCASE(strmid(tgnms_extra,2,/reverse_offset)) NE 'SED' and $ + STRUPCASE(strmid(tgnms_extra,2,/reverse_offset)) NE '_EM' and $ + STRUPCASE(strmid(tgnms_extra,2,/reverse_offset)) NE 'RAC'and $ + STRUPCASE(strmid(tgnms_extra,2,/reverse_offset)) NE 'EXT' + + idyr = where((strmid(strupcase(tgnms_extra),0,2) EQ 'YR'and tst) or $ + strupcase(tgnms_extra) EQ 'YR' or $ + strupcase(tgnms_extra) EQ 'YRANGE' or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'YR' and tst and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) NE '_M') or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'YR' and tst and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) NE '_EMISSION') or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'YR' and tst and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) NE '_X') or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'YR' and tst and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) NE '_EXTINCTION'),ctestyr) ; + + if ctestyr ne 0 then message, 'You have provided one Y-range when multiple ones are needed.',/continue + + ;EMISSION + idyr_polsed = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,5,/reverse_offset)) EQ 'POLSED',ctyr_polsed) + + idyr_psi_em = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,5,/reverse_offset)) EQ 'PSI_EM',ctyr_psi_em) + + idyr_used = where(strmid(strupcase(tgnms_extra),0,1) EQ 'YR' and $ + STRUPCASE(strmid(tgnms_extra,3,/reverse_offset)) EQ 'USED',ctyr_used) + + idyr_sed = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,5,/reverse_offset)) NE 'POLSED' and $ + STRUPCASE(strmid(tgnms_extra,3,/reverse_offset)) NE 'QSED' and $ + STRUPCASE(strmid(tgnms_extra,3,/reverse_offset)) NE 'USED' and $ + STRUPCASE(strmid(tgnms_extra,2,/reverse_offset)) EQ 'SED',ctyr_sed) + + idyr_polfrac = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,5,/reverse_offset)) EQ 'OLFRAC',ctyr_polfrac) + + idyr_qsed = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,3,/reverse_offset)) EQ 'QSED',ctyr_qsed) + + ;EXTINCTION + idyr_polext = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,6,/reverse_offset)) EQ '_POLEXT',ctyr_polext) + + idyr_psi_ext = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,6,/reverse_offset)) EQ 'PSI_EXT',ctyr_psi_ext) + + idyr_uext = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,3,/reverse_offset)) EQ 'UEXT',ctyr_uext) + + idyr_fpolext = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,6,/reverse_offset)) EQ 'FPLOEXT',ctyr_fpolext) + + idyr_qext = where(strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,3,/reverse_offset)) EQ 'QEXT',ctyr_qext) + + testext = strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,2,/reverse_offset)) EQ 'EXT' and $ + STRUPCASE(strmid(tgnms_extra,6,/reverse_offset)) NE '_POLEXT' and $ + STRUPCASE(strmid(tgnms_extra,6,/reverse_offset)) NE 'FPOLEXT' and $ + STRUPCASE(strmid(tgnms_extra,6,/reverse_offset)) NE 'PSI_EXT' and $ + STRUPCASE(strmid(tgnms_extra,3,/reverse_offset)) NE 'UEXT' and $ + STRUPCASE(strmid(tgnms_extra,3,/reverse_offset)) NE 'QEXT' + + idyr_ext = where(testex,ctyr_ext) + + testit = strupcase(tgnms_extra) EQ 'TIT' or $ + strupcase(tgnms_extra) EQ 'TITLE' or $ + (strmid(strupcase(tgnms_extra),0,3) EQ 'TIT' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) NE '_M') or $ + (strmid(strupcase(tgnms_extra),0,3) EQ 'TIT' and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) NE '_EMISSION') or $ + (strmid(strupcase(tgnms_extra),0,3) EQ 'TIT' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) NE '_X') or $ + (strmid(strupcase(tgnms_extra),0,3) EQ 'TIT' and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) NE '_EXTINCTION') + + idtit = where(testit, ctit) + + if ctit ne 0 then message, 'You have provivded one title when two (emission + extinctino are needed).', /continue + + idtit_m = where((strmid(strupcase(tgnms_extra),0,1) EQ 'T' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_M') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'T' and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) EQ '_EMISSION'),ctit_m) + + + idtit_x = where((strmid(strupcase(tgnms_extra),0,1) EQ 'T' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_X') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'T' and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) EQ '_EXTINCTION'),ctit_x) + + + ;FILLING UP X ranges (same xrange): EMISSION + + IF ctestxr_m ne 0 THEN BEGIN + + FOR i=0L,(n_tags(!dustem_plot_range)-2)/2 DO BEGIN ; THIS IS EMISSION , extinction will have to from (n_tags(!dustem_plot_range)-2)/2+1 to (n_tags(!dustem_plot_range)-2) + + !dustem_plot_range.(i).xr=_extra.(idxr_m) + + + ENDFOR + + + ENDIF ;else the default xr is kept + + + ;FILLING UP X ranges (same xrange) - EXTINCTION + + IF ctestxr_x ne 0 THEN BEGIN + + FOR i=(n_tags(!dustem_plot_range)-2)/2+1,(n_tags(!dustem_plot_range)-2) DO BEGIN ; THIS IS EMISSION , extinction will have to from (n_tags(!dustem_plot_range)-2)/2+1 to (n_tags(!dustem_plot_range)-2) + + !dustem_plot_range.(i).xr=_extra.(idxr_x) + + ENDFOR + + + ENDIF ;else the default xr is kept + + + ;FILLING UP Y RANGES - EMISSION + + + if ctyr_polsed ne 0 then !dustem_plot_range.(3).yr = _extra.(idyr_polsed) + + + if ctyr_psi_em ne 0 then !dustem_plot_range.(5).yr = _extra.(idyr_psi_em) + + + if ctyr_used ne 0 then !dustem_plot_range.(2).yr = _extra.(idyr_used) + + + if ctyr_sed ne 0 then !dustem_plot_range.(0).yr = _extra.(idyr_sed) + + + if ctyr_polfrac ne 0 then !dustem_plot_range.(4).yr = _extra.(idyr_polfrac) + + + if ctyr_qsed ne 0 then !dustem_plot_range.(1).yr = _extra.(idyr_qsed) + + ;FILLING UP Y RANGES - EXTINCTION + + + if ctyr_polext ne 0 then !dustem_plot_range.(9).yr = _extra.(idyr_polext) + + + if ctyr_psi_ext ne 0 then !dustem_plot_range.(11).yr = _extra.(idyr_psi_ext) + + + if ctyr_uext ne 0 then !dustem_plot_range.(8).yr = _extra.(idyr_uext) + + + if ctyr_ext ne 0 then !dustem_plot_range.(6).yr = _extra.(idyr_ext) + + + if ctyr_fpolext ne 0 then !dustem_plot_range.(10).yr = _extra.(idyr_fpolext) + + + if ctyr_qext ne 0 then !dustem_plot_range.(7).yr = _extra.(idyr_qext) + + ;SETTING THE TITLE + + ;EXTINCTION + if ctit_x ne 0 then !dustem_plot_range.(13)=_extra.(idtit_x) + + + ;EMISSION + if ctit_m ne 0 then !dustem_plot_range.(12)=_extra.(idtit_m) + + + ENDIF ELSE BEGIN ;TWO DATA SETS : EXT AND SED + + tstxr = strupcase(tgnms_extra) EQ 'XRANGE' or $ + strupcase(tgnms_extra) EQ 'XR' or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'XR' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) NE '_M') or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'XR' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) NE '_X') or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'XR' and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) NE '_EMISSION') or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'XR' and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) NE '_EXTINCTION') + + idxr = where(tstxr,ctestxr) + + if ctestxr ne 0 then message, 'You have provided one X-range when multiple ones are needed',/continue + + t_m = (strmid(strupcase(tgnms_extra),0,1) EQ 'X' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_M') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'X' and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) EQ '_EMISSION') + + indxr_m = where(t_m,ctestxr_m) + + + + t_x = (strmid(strupcase(tgnms_extra),0,1) EQ 'X' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_X') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'X' and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) EQ '_EXTINCTION') + + + idxr_x = where(t_x,ctestxr_x) + + + idyr = where(strupcase(tgnms_extra) EQ 'YR' or $ + strupcase(tgnms_extra) EQ 'YRANGE' or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'YR' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) NE '_M') or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'YR' and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) NE '_EMISSION') or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'YR' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) NE '_X') or $ + (strmid(strupcase(tgnms_extra),0,2) EQ 'YR' and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) NE '_EXTINCTION'),ctestyr) ; + + if ctestyr ne 0 then message, 'You have provided one Y-range when multiple ones are needed.',/continue + + + + t_m = (strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_M') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) EQ '_EMISSION') + + indyr_m = where(t_m,ctestxr_m) + + t_x = (strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_X') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'Y' and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) EQ '_EXTINCTION') + + + idyr_x = where(t_x,ctestyr_x) + + + testit = strupcase(tgnms_extra) EQ 'TIT' or $ + strupcase(tgnms_extra) EQ 'TITLE' or $ + (strmid(strupcase(tgnms_extra),0,3) EQ 'TIT' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) NE '_M') or $ + (strmid(strupcase(tgnms_extra),0,3) EQ 'TIT' and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) NE '_EMISSION') or $ + (strmid(strupcase(tgnms_extra),0,3) EQ 'TIT' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) NE '_X') or $ + (strmid(strupcase(tgnms_extra),0,3) EQ 'TIT' and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) NE '_EXTINCTION') + + idtit = where(testit, ctit) + + if ctit ne 0 then message, 'You have provivded one title when two (emission + extinctino are needed).', /continue + + idtit_m = where((strmid(strupcase(tgnms_extra),0,1) EQ 'T' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_M') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'T' and $ + STRUPCASE(strmid(tgnms_extra,8,/reverse_offset)) EQ '_EMISSION') ,ctit_m) + + + idtit_x = where((strmid(strupcase(tgnms_extra),0,1) EQ 'T' and $ + STRUPCASE(strmid(tgnms_extra,1,/reverse_offset)) EQ '_X') or $ + (strmid(strupcase(tgnms_extra),0,1) EQ 'T' and $ + STRUPCASE(strmid(tgnms_extra,10,/reverse_offset)) EQ '_EXTINCTION'),ctit_x) + + + + ;FILLING UP X ranges (same xrange): EMISSION + + IF ctestxr_m ne 0 THEN !dustem_plot_range.(0).xr=_extra.(idxr_m) + + + ;FILLING UP X ranges (same xrange) - EXTINCTION + + IF ctestxr_x ne 0 THEN !dustem_plot_range.(6).xr=_extra.(idxr_x) + + ;FILLING UP X ranges (same xrange): EMISSION + + IF ctestyr_m ne 0 THEN !dustem_plot_range.(0).yr=_extra.(idyr_m) + + + ;FILLING UP X ranges (same xrange) - EXTINCTION + + IF ctestxr_x ne 0 THEN !dustem_plot_range.(6).xr=_extra.(idxr_x) + + + ;SETTING THE TITLE + + ;EXTINCTION + if ctit_x ne 0 then !dustem_plot_range.(13)=_extra.(idtit_x) + + + ;EMISSION + if ctit_m ne 0 then !dustem_plot_range.(12)=_extra.(idtit_m) + + + + ENDELSE + + +ENDIF + +ENDIF + + +the_end: + + +END + + -- libgit2 0.21.2