スペクトル解析入門
とうこく
2005年4月 4日
2005年4月 5日
2005年5月27日
2005年7月22日 波長感度較正のモデル星について更新書き途中!!
---------------------------------------------------
手順
1) フラットフレームとオブジェクトフレームを作る
2) 波長較正
3) 波長感度較正
4) 分解能チェック
5) 波長感度範囲チェック
6) 問題点
---------------------------------------------------
使用したデータ
4863 Dome Flat 80s OC1.3_filter,CSL,HK500_grism
5053 Object 120s OC1.3_filter,CSL,HK500_grism
5087 Ratio Star 10s OC1.3_filter,CSL,HK500_grism
---------------------------------------------------
フラットフレーム・オブジェクトフレームを作る
オブジェクトフレーム
象限ズレを修正してから、スリットのところだけ切り出し。
imcopy 5053q.fits[4:2044,1450:1515] 5053q_s9_obj.fits
スリットの直上10行切り出し。平均をとって1次元化。
imcopy 5053q.fits[4:2044,1535:1545] 5053q_s9o_bias.fits
blkavg 5053q_s9o_bias.fits 5053q_s9o_bi_blk.fits 1 *
imcopy 5053q_s9o_bi_blk.fits[*,1] 5053q_s9o_bi_1d.fits
スリット部分だけのオブジェクト画像から直上の1次元化平均を引く ----> アノマリを差し引いたオブジェクトフレーム
imarith 5053q_s9_obj.fits - 5053q_s9o_bi_1d.fits 5053q_s9o_bisub.fits
フラットフレーム
スリットのところだけ切り出し
imcopy 4863q.fits[4:2044,1450:1515] 4863q_s9_flat.fits
スリットの直上10行切り出す(スリットの場所によって上下は変わる)。平均をとって1次元化。
imcopy 4863q.fits[4:2044,1535:1545] 4863q_s9_flat_bias.fits
blkavg 4863q_s9_flat_bias.fits 4863q_s9_flat_bi_blk.fits 1 *
imcopy 4863q_s9_flat_bi_blk.fits[*,1] 4863q_s9_flat_bi_1d.fits
スリット部分だけのフラット画像から直上の1次元化平均を引く ---> アノマリを差し引いたフラット画像
imarith 4863q_s9_flat.fits - 4863q_s9_flat_bi_1d.fits 4863q_s9_flat_bisub.fits
アノマリを差し引いたフラットの平均をとって1次元化。
blkavg 4863q_s9_flat_bisub.fits 4863q_s9_flat_bisub_blk.fits 1 *
imcopy 4863q_s9_flat_bisub_blk.fits[*:1] 4863q_s9_flat_bisub_1d.fits
フラットを平均した1次元フラットで割る ---> フラットフレーム
imarith 4863q_s9_flat_bisub.fits / 4863q_s9_flat_bisub_1d.fits 4863q_s9_flat_bisub_nor.fits
オブジェクトフレームをフラットフレームで割る
imarith 5053q_s9o_bisub.fits / 4863q_s9_flat_bisub_nor.fits 5053q_s9o_bisub_flat.fits
波長較正
準備fitsからスペクトルのある部分を切り出す
imcopy 5053q_s9o_bisub_flat.fits[1:1530,*] 5053q_s9o_bisub1.fits
identify(/noao/twod/long/identify)
noao/twodspec/longslit にあるidentifyを使って波長同定する。つまり波長方向の
単位の[pix]と[A]を関連付けする。
以下の文献を参考にしてできるだけ多くの夜光を同定する。
・http://www.eso.org/instruments/isaac/tools/ の Medium Resolution Sky Spectra
Rousselot et al, A&A 354,1134 (2000)
・Non-thermal emission in the atmosphere above Mauna Kea
S.K.Ramsay et al M.N.R.A.S 259, 751 (1992)
低分散データなので大まかに夜光を同定するのには良いが、かなりブレンドされている部分もあるので、
数値はidentifyには使わないほうが良い(フィットがあまりきれいにできない)。
この論文は「Handbook of Infrared Astronomy」にも引用されており、
数値データも http://www.ast.cam.ac.uk/~optics/dazle/sky-data/ukirt_sky_ramsey_etal.dat にある。
identify 5053q_s9o_bisub1.fits section="middle line" coordli="OHlines_HK500.dat" nsum=10 function="cheby"
/database/の下に先頭に「i」とついたデータベースファイルが生成される。
reidentify(.noao.twod.long.reidentify)
identifyで作った座標付けデータベースをもとに、スペクトルの空間方向の各行にも同じ
フィーチャを探して座標付けする。inputとoutputは同じ画像ファイルにしておく。
ここでは10行おきに(step=10)10行づつ(nsum=10)の平均をとっている。
結果はidentifyと同じデータベースファイルに書き込まれる。
輝線がないとき、スペクトルが曲がっている時など、フィーチャが見つからないときは、
nsumの数を増やすか、nlost(捨てフィーチャの数)を増やすなどする。nlost=0だと
一つでもフィーチャを逃すとエラーとなってデータベースファイルには何も書き込まれない。
reidentify 5053q_s9o_bisub1.fits 5053q_s9o_bisub1.fits section="middle line" step=10 nsum=10 overrid+ interac+
fitcoords(noao.twod.long.fitcoords)
identify/reidentifyで求めたスペクトルの曲がり具合いをフィットしてその関数を求める。
fitcoord 5053q_s9o_bisub1 xorder=1 yorder=1
空間方向についても identify/reidentify/fitcoords をする。
元の画像ファイルは別の名前にしておく。
imcopy 5053q_s9o_bisub_cut.fits 5053q_s9o_bisub2.fits
identify 5053q_s9o_bisub2.fits section="middle col" nsum=100 function="cheby"
reidentify 5053q_s9o_bisub2.fits 5053q_s9o_bisub2.fits section="middle col" step=100 nsum=100 overrid+ interac+
fitcoord 5053q_s9o_bisub2 xorder=1 yorder=1
スペクトルをまっすぐにする(.noao.twod.long.transform)
fitcoordsで作った関数を使ってスリット像をまっすぐにする。
fitsヘッダに分散方向(DISPAXIS)が書かれていないので、先に手動で書き込んでおく。
(transformで方向を認識するため。)
hedit 5053q_s9o_bisub1.fits DISPAXIS 1
transform 5053q_s9o_bisub1 5053q_s9o_bisub_tran.fits 5053q_s9o_bisub1,5053q_s9o_bisub2
夜光を差し引く(noao.twod.long.background)
空間方向のスペクトルから背景光の傾きをフィットさせて差し引く。
backg 5053q_s9o_bisub_tran.fits 5053q_s9o_bisub_tran_bg.fits
標準星
オブジェクトと同様にして、波長同定して夜光引きまでやる
オブジェクト同様にしてアノマリを引いてから、フラットで割る。
標準星はMOSスリットの真ん中のスリットで撮ったが、象限の境目を少し踏んでいる。
y=1020pixくらいまで使って、下は隣のスリットが入るぎりぎりまでめいっぱい使う。
でも、フラットの平均をとるときは隣のスリットが入ってきていない領域だけを使う。
imcopy 5087q.fits[2:2047,950:1020] 5087q_r_obj.fits
imcopy 5087q.fits[2:2047,850:860] 5087q_ro_bias.fits
blkavg 5087q_ro_bias.fits 5087q_ro_bi_blk.fits 1 *
imcopy 5087q_ro_bi_blk.fits[*,1] 5087q_ro_bi_1d.fits
imarith 5087q_r_obj.fits - 5087q_ro_bi_1d.fits 5087q_ro_bisub.fits
imcopy 4863q.fits[2:2047,950:1020] 4863q_r_flat.fits
imcopy 4863q.fits[2:2047,850:860] 4863q_r_flat_bias.fits
blkavg 4863q_r_flat_bias.fits 4863q_r_flat_bi_blk.fits 1 *
imcopy 4863q_r_flat_bi_blk.fits[*,1] 4863q_r_flat_bi_1d.fits
imarith 4863q_r_flat.fits - 4863q_r_flat_bi_1d.fits 4863q_r_flat_bisub.fits
blkavg 4863q_r_flat_bisub.fits[1:2046,10:71] 4863q_r_flat_bisub_blk.fits 1 *
imcopy 4863q_r_flat_bisub_blk.fits[*,1] 4863q_r_flat_bisub_1d.fits
imarith 4863q_r_flat_bisub.fits / 4863q_r_flat_bisub_1d.fits 4863q_r_flat_bisub_nor.fits
imarith 5087q_ro_bisub.fits / 4863q_r_flat_bisub_nor.fits 5087q_ro_bisub_flat.fits
identify 5087q_ro_bisub_flat.fits section="middle line" coordli="OHlines_HK500.dat" nsum=10 function="cheby"
identify 5087q_ro_bisub_flat.fits section="line 60" coordli="OHlines_HK500.dat" nsum=10 function="cheby"
reidentify 5087q_ro_bisub_flat.fits 5087q_ro_bisub_flat.fits section="line 60" step=10 nsum=10 overrid+ interac+
fitcoord 5087q_ro_bisub_flat xorder=1 yorder=1
imcopy 5087q_ro_bisub_flat.fits 5087q_ro_bisub_ref.fits
hedit 5087q_ro_bisub_ref.fits LTV2 1
identify 5087q_ro_bisub_ref.fits section="middle col" nsum=100 function="cheby"
reidentify 5087q_ro_bisub_ref.fits 5087q_ro_bisub_ref.fits section="middle col" step=100 nsum=100 overrid+ interac+
fitcoord 5087q_ro_bisub_ref xorder=1 yorder=1
hedit 5087q_ro_bisub_flat.fits DISPAXIS 1
transform 5087q_ro_bisub_flat 5087q_ro_bisub_tran.fits 5087q_ro_bisub_flat,5087q_ro_bisub_ref
backg 5087q_ro_bisub_tran.fits 5087q_ro_bisub_tran_bg.fits
波長感度を補正する
オブジェクトと標準星をそれぞれ1次元化する(noao/twod/apextract.)
noao/twod/apextract. の apall を使って、2次元のスペクトルを1次元化する。
backgしたデータを使う。パラメータがとても多い。
まず空間方向のフィットをすると、とりあえずスペクトルの曲がりをフィットする。
前に一度やっているのでフィットの残差は小さい。
apall.format="oned"
apall.interac=yes
apall.nsum=40
apall.lower=-7
apall.upper=7
apall.b_funct="chebyshev"
apall.b_order=3
apall.b_sample="-8:-5,5:8"
apall.b_naver=-4
apall.b_niter=2
apall.b_low_r=2
apall.b_high=1
apall.width=10
apall.ylevel=0.9
apall.bkg=no
apall.t_func="legen"
apall.t_order=2
apall.backgro="fit"
apall.weight="variance"
apall.pfit="fit1d"
apall.clean=yes
apall.readnoi=10
apall.gain="GAIN"
apall.lsig=3
apall.usig=3
apall 5087q_ro_bisub_tran_bg.fits
*.0001.imh と *.0001.pix というファイルが生成される。昔、ヘッダと画像が別々だった頃の
名残なので、コピーして一体化させておく。
imcopy 5087q_ro_bisub_tran_bg.0001.imh 5087q_ro_bisub_tran_ap.fits
オブジェクトのほうも同様に一次元化する。
apall 5053q_s9o_bisub_tran_bg.fits
imcopy 5053q_s9o_bisub_tran_bg.0001.imh 5053q_s9o_bisub_tran_ap.fits
積分時間を合わせる
1秒あたりに直す。
imarith 5087q_ro_bisub_tran_ap.fits / 10.0 5087q_ro_bisub_tran_1s.fits
imarith 5053q_s9o_bisub_tran_ap.fits / 120.0 5053q_s9o_bisub_tran_1s.fits
標準星のモデルスペクトルを用意するフラックスを合わせる
使っている標準星は Gemini Hipparcos A0V Spectroscopic Standard Star で、
M28449(A0V) 06:00:24.94 -00:41:01.7
2MASSデータによると、J=7.951 / H=7.965 / K=7.889 である。
モデルスペクトルは0magのものなのでフラックスを合わせる。
-2.5 log (counts) = 8 mag
counts = 0.00063
A0V(J=0mag) × 0.00063 ---> A0V(J=8mag)
sarith A0V_J0.fits * 0.00063 A0V_J8.fits
ほかに、大気吸収・望遠鏡効率・装置効率(光学系、フィルタ、グリズム)をかける。
求めたいのは、入射photonsに対して生成されたelectronの比(e-/photons)なので、
それが求まるように単位を合わせる。
感度補正
A0星8magのモデル ÷ 標準星 → 波長感度
[erg/s/cm2/A] [ADU/s/pix]
↓ ↓ ↓
[photons/s/A] [e-/s/A] [e-/photons]
sarith A0V_J8.fits / 5087q_ro_bisub_tran_1s.fits 5087q_ro_bisub_tran_1s_sen.fits
オブジェクトスペクトル × 感度スペクトル ---> 本来のスペクトル
sarith 5053q_s9o_bisub_tran_1s.fits * 5087q_ro_bisub_tran_1s_sen.fits 5053q_s9o_spc.fits
分解能チェック
splot
シングルの夜光輝線を使って、splot-kで輝線幅を測定する。夜光を使うと幅が少し
大きく測定されると思うが、今回は天体の輝線が不明なので、とりあえず夜光を使う。
波長 vs 分解能(1.3umオーダーカットフィルタ+グリズムHK500+0".5スリット)
プロット点の違いは、columnの違い。このスペクトルの場合、Kバンドのほうで
あまり輝線が拾えなかった。
参考
赤外領域の夜光 Maihara et al.