% file: rg_setup.i % % Setup and fill structures for defining regions in spectra % and "bumps" to be fit; and related things... % % Also define "list_rg", "fit_rg", "plot_rg", "list_bp" as simple evalfiles % of rg_list.i rg_fit.i rg_plot.i and bp_list.i % % - - - % Define a Region List structure array % typedef struct { id, lo, hi, desc } Region_Type; % variable rgl = Region_Type [25]; % % - - - % - - - % Fill the Regions by hand here... variable rgid, rglo, rghi, rgdesc, rgsel, rgbprange; variable ii; rglo=[1.0, 24.0,18.0, 21.40, 11.3,13.2, 9.8, 8.9, 7.5, 8.1, 5.9, 6.4, 14.5, 16.5, 6.0, 8.0]; rghi=[5.5, 26.0,20.0, 22.30, 13.0,14.5, 10.7, 9.6, 8.1, 8.7, 6.4, 7.0, 16.5, 17.5, 26.0, 20.0]; rgdesc=["Hi-Z Elements", "N VI 24A","O Ly alpha and O VII beta","O triplet", "Ne X and Fe XVII", "Ne triplet and Fe", "Ne Lyman Beta", "Mg Triplet", "Mg XI", "Mg Lyman Alpha", "Si La", "Si Triplet", "Fe XVII and O Ly beta", "Fe XVII", "6 - 26 A", "8 - 20 A"]; % Set id to zero for all... ii=0; while (ii < length(rgl)) { rgl[ii].id = 0; rgl[ii].lo = 0.0; rgl[ii].hi = 0.0; rgl[ii].desc = ""; ii=ii+1; } % fill the valid info % in sorted order rgsel = array_sort(rglo); ii=0; while (ii < length(rglo)) { rgl[ii].id = ii+1; rgl[ii].lo = rglo[rgsel[ii]]; rgl[ii].hi = rghi[rgsel[ii]]; rgl[ii].desc = rgdesc[rgsel[ii]]; ii=ii+1; } % point to region 1 rgsel = 1; % and set nominal bump range rgbprange = 10.0*0.01; % - - - % - - - % Define a Bump List structure array % % There is a line for each to-be-studied line in the spectrum. % % l = lambda; a = area; w = width (FWHM); chi = reduced chi-squared typedef struct { id, ignore, lam, grp, desc, lfit, lclo, lchi, afit, aclo, achi, wfit, wclo, wchi, cfit, cclo, cchi, chifit, rgfit } Bump_Type; % variable bpl = Bump_Type [75]; % % - - - % - - - % Fill the Bumps by hand here... variable bplam, bpgrp, bpdesc, bpig; variable bpsel; bplam = [24.7794, 1.89672e+01, 2.16015e+01, 2.18036e+01, 2.20977e+01, 1.60056e+01, 15.176, 14.821, 18.6270, 17.7680, 17.3960, 12.1322,13.4473,13.5531,13.6990, 10.2386, 9.7081, 11.5600, 11.001, 10.780, 8.41930,9.16875,9.23121,9.31434,7.10580, 7.8500, 7.473, 6.18050,5.2169,6.64795,6.68819,6.74029, 5.6810, 4.7274, 3.9908, 5.0387, 5.0631, 5.1015, 4.2990, 3.7311, 3.1503, 3.9491, 3.9694, 3.9942, 3.3650, 3.0185, 2.5490, 3.1772, 3.1927, 3.2110, 2.7050, 1.936, 1.22661e+01, 1.50140e+01, 1.52610e+01, 1.67800e+01, 1.70510e+01, 1.70960e+01, 14.2100,15.6230,16.0730, 17.6179, 13.5200, 12.8200, 12.8349, 12.8542, 1.77810, 1.85040, 1.85541, 1.86819 ]; bpgrp = [g_NLyAlpha, g_OLyAlpha, g_OHeTripR, g_OHeTripI, g_OHeTripF, g_OLyBeta, g_OLyGamma, g_OLyDelta, g_OVII_HeBeta, g_OVII_HeGamma, g_OVII_HeDelta, g_NeLyAlpha, g_NeHeTripR, g_NeHeTripI, g_NeHeTripF, g_NeLyBeta, g_NeX_9p7A, g_NeIX_HeBeta, g_NeIX_HeGamma, g_NeIX_HeDelta, g_MgLyAlpha, g_MgHeTripR, g_MgHeTripI, g_MgHeTripF, g_MgLyBeta, g_MgXI_HeBeta, g_MgXI_HeGamma, g_SiLyAlpha, g_SiLyBeta, g_SiHeTripR, g_SiHeTripI, g_SiHeTripF, g_SiXIII_HeBeta, g_SLyAlpha, g_SLyBeta, g_SHeTripR, g_SHeTripI, g_SHeTripF, g_SXV_HeBeta, g_ArLyAlpha, g_ArLyBeta, g_ArHeTripR, g_ArHeTripI, g_ArHeTripF, g_ArXVII_HeBeta, g_CaLyAlpha, g_CaLyBeta, g_CaHeTripR, g_CaHeTripI, g_CaHeTripF, g_CaXIX_HeBeta, g_FeI_Kalpha, g_FeXVII_12p2A, g_FeXVII_15A, g_FeXVII_15p2A, g_FeXVII_16p7A, g_FeXVII_17A, g_FeXVII_17p1A, g_FeXVIII_14p2A, g_FeXVIII_15p6A, g_FeXVIII_16A, g_FeXVIII_17p6A, g_FeXIX_13p5A, g_FeXX_12p82A, g_FeXX_12p83A, g_FeXX_12p85A, g_FeLyAlpha, g_FeHeTripR, g_FeHeTripI, g_FeHeTripF ]; bpdesc = ["NLyAlpha", "OLyAlpha","OHeTripR","OHeTripI","OHeTripF", "OLyBeta", "OLyGamma", "OLyDelta", "OVII_HeBeta", "OVII_HeGamma", "OVII_HeDelta", "NeLyAlpha","NeHeTripR","NeHeTripI","NeHeTripF","NeLyBeta", "NeX_9p7A", "NeIX_HeBeta", "NeIX_HeGamma", "NeIX_HeDelta", "MgLyAlpha","MgHeTripR","MgHeTripI","MgHeTripF","MgLyBeta", "MgXI_HeBeta", "MgXI_HeGamma", "SiLyAlpha","SiLyBeta","SiHeTripR","SiHeTripI","SiHeTripF", "SiXIII_HeBeta", "SLyAlpha","SLyBeta","SHeTripR","SHeTripI","SHeTripF", "SXV_HeBeta", "ArLyAlpha","ArLyBeta","ArHeTripR","ArHeTripI","ArHeTripF", "ArXVII_HeBeta", "CaLyAlpha","CaLyBeta","CaHeTripR","CaHeTripI","CaHeTripF", "CaXIX_HeBeta", "FeI_Kalpha", "FeXVII_12p2A", "FeXVII_15A", "FeXVII_15p2A", "FeXVII_16p7A", "FeXVII_17A","FeXVII_17p1A", "FeXVIII_14p2A", "FeXVIII_15p6A", "FeXVIII_16A", "FeXVIII_17p6A", "FeXIX_13p5A", "FeXX_12p82A", "FeXX_12p83A", "FeXX_12p85A", "FeLyAlpha", "FeHeTripR","FeHeTripI","FeHeTripF" ]; bpig = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0,1,1 ]; % Set id to zero for all... ii=0; while (ii < length(bpl)) { bpl[ii].id = 0; bpl[ii].ignore = 0; bpl[ii].lam = 0.0; bpl[ii].grp = 0; bpl[ii].desc = ""; bpl[ii].lfit = 0.0; bpl[ii].lclo = 0.0; bpl[ii].lchi = 0.0; bpl[ii].afit = 0.0; bpl[ii].aclo = 0.0; bpl[ii].achi = 0.0; bpl[ii].wfit = 0.0; bpl[ii].wclo = 0.0; bpl[ii].cfit = 0.0; bpl[ii].cclo = 0.0; bpl[ii].cchi = 0.0; bpl[ii].wchi = 0.0; bpl[ii].chifit = 0.0; bpl[ii].rgfit = ""; ii=ii+1; } % fill the valid info in wavelength sorted order: % use bpsel for sort order: bpsel = array_sort(bplam); ii=0; while (ii < length(bplam)) { bpl[ii].id = ii+1; bpl[ii].ignore = bpig[bpsel[ii]]; bpl[ii].lam = bplam[bpsel[ii]]; bpl[ii].grp = bpgrp[bpsel[ii]]; bpl[ii].desc = bpdesc[bpsel[ii]]; ii=ii+1; } % point to bump 1 bpsel = 1; % - - - % - - - % and make little wrappers for some routines: % rg_list.i, bp_list.i, rg_fit.i, rg_plot.i % define list_rg() { ()=evalfile("rg_list.i"); } define list_bp() { ()=evalfile("bp_list.i"); } define fit_rg() { ()=evalfile("rg_fit.i"); } define plot_rg() { ()=evalfile("rg_plot.i"); } % - - - % and compile the bp_*_fits routines () = evalfile("bp_write_fits.i"); () = evalfile("bp_read_fits.i");