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 may 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(0)) 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(0)) ;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 may 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 'FPOLEXT',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(testext,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)-3)/2+1,(n_tags(!dustem_plot_range)-3) 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(0)) 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(0)) ;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 may be 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') idxr_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 'FPOLEXT',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(testext,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)-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_m(0)) 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)-3)/2+1,(n_tags(!dustem_plot_range)-3) 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(0)) 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(0)) ;FILLING UP X ranges (same xrange) - EXTINCTION IF ctestxr_x ne 0 THEN !dustem_plot_range.(6).xr=_extra.(idxr_x(0)) ;FILLING UP Y ranges (same xrange): EMISSION IF ctestyr_m ne 0 THEN !dustem_plot_range.(0).yr=_extra.(idyr_m(0)) ;FILLING UP Y ranges (same xrange) - EXTINCTION IF ctestxr_x ne 0 THEN !dustem_plot_range.(6).yr=_extra.(idyr_x(0)) ;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