Home Download Tutorial 1 Tutorial 2 Tutorial 3 Tutorial 4 Tutorial 5

ULySS: Tutorial on analysis of stellar populations

The application that drove the development of ULySS was the analyze of stellar population. The goal was to fit in the same time the internal kinematics and the characteristics (age, metallicity, ...) of a galaxy.
In this tutorial we present examples of fit of stellar populations. First, SSP and second composite populations.

To follow this tutorial it is advisable first to read the general tutorial.

1. Single stellar populations

By fitting SSP models, we obtain the SSP equivalent characteristics of a stellar population: Age and metallicity. This is particularly relevant for a star cluster thought to be coeval.
In the exercise below, we fit a spectrum of the open cluster M67 (Schiavon et al. 2004, AJ, 127, 1513) with a grid of PegaseHR models based on the Elodie.3.1 spectral library. To get a better fit, we first analyze the LSF using the spectrum itself (we do not fit the internal kinematics):
GDL> cmp_peg = uly_ssp()           ; Pegase_HR / Elodie.3.1 model
GDL> ulyss, uly_root+'/data/m67.fits', cmp_peg, FILE='m67_phr', /CLEAN, /QUIET
GDL> uly_solut_tprint, 'm67_phr'

cz             :       11.438009 +/- 0.35241655 km/s
dispersion     :       78.368161 +/- 0.36759704 km/s
----------------------------
chi^2          :      1.41257
----------------------------
Weight         :    6.1153193e-13 +/-    1.2512574e-16 [data_unit/cmp_unit]
age            :       3824.3382 +/- 61.834706 Myr
Fe/H           :    -0.092830058 +/- 0.0047806000 dex
----------------------------

GDL> m67 = uly_root+'/data/m67.fits'
GDL> model = uly_ssp_extr(m67, uly_root+'/models/PHR_Elodie31.fits', [3920.,-0.1])
GDL> uly_lsf, OBS=m67, SUN=model, 400, 200, FILE='lsf_m67_phr.txt', /QUIET
GDL> uly_lsf_smooth, 'lsf_m67_phr.txt', 'lsfs_m67_phr.txt'
GDL> cmp_phr =  uly_ssp(LSF='lsfs_m67_phr.txt')
GDL> ulyss, m67, cmp_phr, KMOMENT=0, /CLEAN, FILE='m67_phr_2', /PLOT
Dispersion axis is 1 (Air wavelength)
Dispersion axis is linear
Read the model ./models/PHR_Elodie31.fits
read the file ./models/PHR_Elodie31.fits
model reading time=       1.5277200
model deriving time=      0.13924694
--------------------------------------------------------------------
INPUT PARAMETERS
--------------------------------------------------------------------
The fits file to be analyze is       ./data/m67.fits
Name of the output file              m67_phr_2.res
Degree of multiplicative polynomial            10
No additive polynomial  
Component1 (cmp2) model:./models/PHR_Elodie31.fits lsf:lsfs_m67_phr.txt
  Guess for age: 8000.0000 [Myr], Fe/H: -0.40000000 [dex]
--------------------------------------------------------------------
Dispersion axis is 1 (Air wavelength)
Dispersion axis is linear
Read the model ./models/PHR_Elodie31.fits
read the file ./models/PHR_Elodie31.fits
model reading time=       1.5122130
model deriving time=      0.13820505
--------------------------------------------------------------------
PARAMETERS PASSED TO ULY_FIT
--------------------------------------------------------------------
Wavelength range used                 :       3900.4112       5397.5790
 [Angstrom]
Sampling in log wavelength            :       50.436632 [km/s]
Number of independent pixels in signal:        1931
Number of pixels fitted               :        1931
DOF factor                            :      1.00000
--------------------------------------------------------------------
number of model evaluations:          25
Number of clipped outliers:9+5+12 out of        1930      1.08205
number of model evaluations:           9
time=       1.0765271
Number of pixels used for the fit        1904
----------------------------
chi^2          :      0.97196058
----------------------------
Weight         :    6.1760423e-13 +/-    1.2616181e-16 [data_unit/cmp_unit]
age            :       3889.6376 +/- 63.328605 Myr
Fe/H           :     -0.11048757 +/- 0.0041340088 dex
----------------------------

We repeat here the exercise with the Vazdekis models based on the Miles library:
GDL> cmp_vaz = uly_ssp(MODEL=uly_root+'/models/Vaz_Miles.fits') ; Vazdekis/Miles
GDL> ulyss, uly_root+'/data/m67.fits', cmp_vaz, FILE='m67_vaz', /CLEAN, /QUIET, /PLO
GDL> uly_solut_tprint, 'm67_vaz'
cz             :       5.5074043 +/- 0.32502778 km/s
dispersion     :       45.866683 +/- 0.57147400 km/s
----------------------------
chi^2          :      1.23451
----------------------------
Weight         :    3.8401729e-13 +/-    7.6160368e-17 [data_unit/cmp_unit]
age            :       3084.0980 +/- 27.184567 Myr
Fe/H           :    -0.026079021 +/- 0.0073815674 dex
----------------------------
GDL> m67 = uly_root+'/data/m67.fits'
GDL> model = uly_ssp_extr(m67, uly_root+'/models/Vaz_Miles.fits', [3920.,-0.1])
GDL> uly_lsf, OBS=m67, SUN=model, 400, 200, FILE='lsf_m67_vaz.txt', /QUIET
GDL> uly_lsf_smooth, 'lsf_m67_vaz.txt', 'lsfs_m67_vaz.txt'
GDL> cmp_vaz =  uly_ssp(MODEL=uly_root+'/models/Vaz_Miles.fits', LSF='lsfs_m67_vaz.txt')
GDL> ulyss, m67, cmp_vaz, KMOMENT=0, /CLEAN, FILE='m67_vaz_2', /PLOT
Dispersion axis is 1 (Air wavelength)
Dispersion axis is linear
Read the model ./models/Vaz_Miles.fits
read the file ./models/Vaz_Miles.fits
model reading time=      0.47260785
model deriving time=      0.11970091
--------------------------------------------------------------------
INPUT PARAMETERS
--------------------------------------------------------------------
The fits file to be analyze is       ./data/m67.fits
Name of the output file              m67_vaz_2.res
Degree of multiplicative polynomial            10
No additive polynomial  
Component1 (cmp2) model:./models/Vaz_Miles.fits lsf:lsfs_m67_vaz.txt
  Guess for age: 8000.0000 [Myr], Fe/H: -0.40000000 [dex]
--------------------------------------------------------------------
Dispersion axis is 1 (Air wavelength)
Dispersion axis is linear
Read the model ./models/Vaz_Miles.fits
read the file ./models/Vaz_Miles.fits
model reading time=      0.46850705
model deriving time=      0.12066102
--------------------------------------------------------------------
PARAMETERS PASSED TO ULY_FIT
--------------------------------------------------------------------
Wavelength range used                 :       3634.9308       5397.5790
 [Angstrom]
Sampling in log wavelength            :       50.436632 [km/s]
Number of independent pixels in signal:        2350
Number of pixels fitted               :        2350
DOF factor                            :      1.00000
--------------------------------------------------------------------
number of model evaluations:          20
Number of clipped outliers:1+0+0 out of        2347     0.824227
number of model evaluations:          56
time=       1.3754470
Number of pixels used for the fit        2346
----------------------------
chi^2          :      0.63838402
----------------------------
Weight         :    3.6918917e-13 +/-    7.3201899e-17 [data_unit/cmp_unit]
age            :       2867.6254 +/- 23.703021 Myr
Fe/H           :     0.029886236 +/- 0.0074891921 dex
----------------------------
We make now a graphic, similar to Prugniel et al. 2007 (Fig. 1), showing the great consistency between the two models. Though the residuals are of the order of 1 percent, they are very similar between the two independent models:
GDL> window, 0
GDL> uly_solut_splot, 'm67_phr_2', WAVERANGE=[4850.,5200.], RESI_YR=[-0.03, 0.03]
GDL> window, 1
GDL> uly_solut_splot, 'm67_vaz_2', WAVERANGE=[4850.,5200.], RESI_YR=[-0.03, 0.03]

2. Composite populations

As an example of composite population, we are proposing a spectrum made from the addition of SDSS L* galaxies. It was used for the Stellar Population challenge organized by Scott Tragger in the frame of the IAU241 symposium ( spectrum4).
We can have a first, quick, evaluation of the data:
GDL> ulyss, uly_root+'/data/sdss_lstar.fits', MODEL=uly_root+'/models/Vaz_Miles.fits', /PLOT
--------------------------------------------------------------------
INPUT PARAMETERS
--------------------------------------------------------------------
The fits file to be analyze is       ./data/sdss_lstar.fits
Name of the output file              output.res
Degree of multiplicative polynomial            10
No additive polynomial  
Component1 (cmp1) model:./models/Vaz_Miles.fits 
  Guess for age: 8000.0000 [Myr], Fe/H: -0.40000000 [dex]
--------------------------------------------------------------------
Dispersion axis is 1 (Air wavelength)
Dispersion axis is logarithmic
Convert axis scale from log10 to log
Read the model ./models/Vaz_Miles.fits
read the file ./models/Vaz_Miles.fits
model reading time=      0.70065689
model deriving time=      0.23033810
--------------------------------------------------------------------
PARAMETERS PASSED TO ULY_FIT
--------------------------------------------------------------------
Wavelength range used                 :       3540.5000       7410.3298
 [Angstrom]
Sampling in log wavelength            :       51.507049 [km/s]
Number of independent pixels in signal:        4299
Number of pixels fitted               :        4299
DOF factor                            :      1.00000
--------------------------------------------------------------------
number of model evaluations:          43
time=       1.8151050
Number of pixels used for the fit        4298

cz             :      -1.4217922 +/- 1.2625299 km/s
dispersion     :       250.53778 +/- 1.2145160 km/s
----------------------------
chi^2          :       1.2033606
----------------------------
Weight         :    2.2649542e-10 +/-    3.3281369e-14 [data_unit/cmp_unit]
age            :       4503.6524 +/- 143.46136 Myr
Fe/H           :   -0.0067255792 +/- 0.0051045588 dex
----------------------------

We now determine the line-spread function of the SDSS relative to the Elodie library that we will use for the rest of the analysis. To determine the LSF we will use the velocity dispersion templates from the SDSS (High S/N observations of stars from M67).
GDL> ulyss, uly_root+'/data/sdss_star.fits', model=uly_root+'/models/elodie32_flux_tgm.fits', MD=70
--------------------------------------------------------------------
INPUT PARAMETERS
--------------------------------------------------------------------
The fits file to be analyze is       ./data/sdss_star.fits
Name of the output file              output.res
Degree of multiplicative polynomial        70
No additive polynomial  
Component1 (cmp1) model:./models/elodie32_flux_tgm.fits 
  Guess for Teff: 7000.0000 [K], Logg: 2.0000000 [cm/s2], Fe/H: 0.0000000 [dex]
--------------------------------------------------------------------
SDSS style
--------------------------------------------------------------------
PARAMETERS PASSED TO ULY_FIT
--------------------------------------------------------------------
Wavelength range used                 :       3900.5998       6800.3525
 [Angstrom]
Sampling in log wavelength            :       69.029774 [km/s]
Number of independent pixels in signal:        2414
Number of pixels fitted               :        2414
DOF factor                            :      1.00000
--------------------------------------------------------------------
number of model evaluations:          38
time=       1.8704879
Number of pixels used for the fit        2388

cz             :       125.13322 +/- 0.00023865174 km/s
dispersion     :       70.986377 +/- 0.00024658492 km/s
----------------------------
chi^2          :       6941684.9
----------------------------
Weight         :        13163.608 +/-     0.0018710364 [data_unit/cmp_unit]
Teff           :       4770.0471 +/- 0.0068466535 K
Logg           :       2.9267287 +/- 1.5369984e-05 cm/s2
Fe/H           :   -0.0060914356 +/- 6.7475477e-06 dex
----------------------------
GDL> star = uly_root+'/data/sdss_star.fits'
GDL> model = uly_tgm_extr(star,[4700.,3.,0.])
GDL> uly_lsf, OBS=star, SUN=model, 600, 300, FIL='sdss_lsf.txt', /QUIET
GDL> uly_lsf_smooth, 'sdss_lsf.txt', 'sdss_lsfs.txt'
GDL> uly_lsf_plot, 'sdss_lsfs.txt'
Then we inject this LSF in the model grid, that we same into a FITS file in case we would have several observations to analyze (even if in this tutorial we will fit a single spectrum):
GDL> grid = uly_ssp_read(uly_root+'/models/PHR_Elodie31.fits', LSF=lsf_file)
GDL> uly_ssp_write, grid, 'PHR_Elodie31_SDSS.fits'
We can now make a first SSP analysis:
GDL> cmp = uly_ssp(MODEL='PHR_Elodie31_SDSS.fits')
GDL> ulyss, uly_root+'/data/sdss_lstar.fits', cmp, FILE='sdss', /QUIET
GDL> window, 0
GDL> uly_solut_splot, 'sdss', WAVERANGE=[4050, 4350]
GDL> window, 1
GDL> uly_solut_splot, 'sdss', WAVERANGE=[4800, 5200]

And now we can experiment a 3-bursts fit:
GDL> cmp1 = uly_ssp(MODEL='PHR_Elodie31_SDSS.fits', AG=[500.])
GDL> cmp2 = uly_ssp(MODEL='PHR_Elodie31_SDSS.fits', AG=[2000.])
GDL> cmp3 = uly_ssp(MODEL='PHR_Elodie31_SDSS.fits', AG=[12000.])
GDL> cmp = [cmp1, cmp2, cmp3]
GDL> ulyss, uly_root+'/data/sdss_lstar.fits', cmp, FILE='sdss'
GDL> window, 0
GDL> uly_solut_splot, 'sdss', WAVERANGE=[4050, 4350]
GDL> window, 1
GDL> uly_solut_splot, 'sdss', WAVERANGE=[4800, 5200]
--------------------------------------------------------------------
INPUT PARAMETERS
--------------------------------------------------------------------
The fits file to be analyze is       ./data/sdss_lstar.fits
Name of the output file              sdss.res
Degree of multiplicative polynomial            10
No additive polynomial  
Component1 (cmp1) model:PHR_Elodie31_SDSS.fits 
  Guess for age: 500.00000 [Myr], Fe/H: -0.40000000 [dex]
Component2 (cmp2) model:PHR_Elodie31_SDSS.fits 
  Guess for age: 2000.0000 [Myr], Fe/H: -0.40000000 [dex]
Component3 (cmp3) model:PHR_Elodie31_SDSS.fits 
  Guess for age: 12000.000 [Myr], Fe/H: -0.40000000 [dex]
--------------------------------------------------------------------
Dispersion axis is 1 (Air wavelength)
Dispersion axis is logarithmic
Convert axis scale from log10 to log
Read the model PHR_Elodie31_SDSS.fits
read the file PHR_Elodie31_SDSS.fits
model reading time=       1.6953690
model deriving time=      0.21912122
Read the model PHR_Elodie31_SDSS.fits
read the file PHR_Elodie31_SDSS.fits
model reading time=       1.6700039
model deriving time=      0.21716785
Read the model PHR_Elodie31_SDSS.fits
read the file PHR_Elodie31_SDSS.fits
model reading time=       1.6660919
model deriving time=      0.21740890
--------------------------------------------------------------------
PARAMETERS PASSED TO ULY_FIT
--------------------------------------------------------------------
Wavelength range used                 :       3900.7477       6800.3252
 [Angstrom]
Sampling in log wavelength            :       51.507049 [km/s]
Number of independent pixels in signal:        3235
Number of pixels fitted               :        3235
DOF factor                            :      1.00000
--------------------------------------------------------------------
number of model evaluations:         195
time=       2.0809000
Number of pixels used for the fit        3172

cz             :      0.13903794 +/- 1.4141171 km/s
dispersion     :       256.33396 +/- 1.3862178 km/s
----------------------------
chi^2          :      0.38072571
----------------------------
Light fraction :        3.5807057 +/-      0.041431932 %
Weight         :    1.8041264e-12 +/-    2.0875338e-14 [data_unit/cmp_unit]
age            :       1437.6414 +/- 472.97251 Myr
Fe/H           :      -2.3010299 +/- -0.0000000 dex
----------------------------
Light fraction : 0 %
Weight         :        0.0000000 +/-        0.0000000 [data_unit/cmp_unit]
age            :       191.34778 +/- 9015.9765 Myr
Fe/H           :      0.51693206 +/- 41.533536 dex
----------------------------
Light fraction :        96.419294 +/-      0.042585657 %
Weight         :    3.5954824e-10 +/-    1.5880222e-13 [data_unit/cmp_unit]
age            :       5315.3590 +/- 144.00705 Myr
Fe/H           :     0.017898145 +/- 0.0065116641 dex
----------------------------
We have now to study the validity and significance of this result...
Contact: ulyss at obs.univ-lyon1.fr Last modified: Thu Jul 31 13:57:09 2008.