チェックボックスアイコン 手順11: 輻射強度較正

輻射強度較正をします。 このマニュアルではカウント値をflux densityに変更する処理をします。 星の研究などで、連続光強度を1に規格化するような解析をしたい場合は、他のマニュアルなどを参考にしてください。

KOOLS-IFUの入射側ファイバーアレイ (2次元ファイバーアレイ) は、ファイバーコアfilling factorが58%であり、平均して約40%のflux lossがあります。 しかもファイバーコア中心間隔が2.35″とseeingに対してアンダーサンプリングなため、seeingと2次元アレイ上の天体位置によって、このflux lossの値が変わります。 よって、KOOLS-IFUによる観測で天体fluxを正確に測定するのは難しいです。 また、以下の方法では、天体高度を考慮せず一律にカウント値からflux densityへの変換を行っています。

以下が解析コマンド例です。 観測の目的によっては、適宜最適な方法に変更してもらって構いません。

標準星フレームの2次元再合成を作成します。

#KOOLS-IFU用オリジナルソフトウェアを使用
#コマンド名の前に、ソフトウェア置き場のパスを適宜追加すること
#第1引数が入力ファイル名、第2と第3引数が切り出す波長範囲 (x座標) の始点と終点
#波長範囲はCCD上部の欠損領域にかかっていない領域を選ぶこと
FiberMakeImage kls036570-flip.ms.fits 361 365
#この例だと"kls036570-flip.ms-image-361-365.fits"という名前のファイルができ、ds9で開くと以下のような画像が現れる

画像再合成の例

最も明るいファイバーのfluxと、その周囲の6ファイバーのfluxの比から、上記のflux lossを補正した、天体のtotal fluxを推定します。 この推定において、天体のradial profileはgaussianを仮定しています。 2次元再合成画像に、偽の信号 (cosmic rayなど) によって、天体光が最も明るいファイバーよりも明るいファイバーがあると、正しく測定できません。 その場合はIRAFのepixなどをコマンドを使って、事前にそのpixelの値を書き換えておいてください。

#2次元再合成画像に映った最も明るい天体の、total fluxなどを返すプログラム
#第1引数が2次元再合成画像fitsファイルの名前、第2引数が背景光強度、第3引数がライブラリファイル名
#ライブラリファイルはkools-ifu-red.tar.gzに含まれている、kools-ifu-red/kools-ifu/template-FiberFlux2.datを指定する
FiberCenter2 kls036570-flip.ms-image-361-365.fits 0 /home/kazuya/data/make/c-program/kools-ifu/template-FiberFlux2.dat
#返り値は"(x, y, FWHM, total flux, residual) = (1.2, 0.3, 1.2, 5.6303e+05, 3.1089e-04)"
#xとyは天体の中心位置、FWHMは天体の空間方向のFWHMを表す
#x、y、FWHMの単位は1ファイバー間距離 (2.35″ = fitsファイルで2 pixel)

天体fluxが大きいファイバーのみを足しあげて、S/Nの良いスペクトルを作ります。 ….ms.fits (または…-sky.fits) で見て、天体光が明るいファイバー数本のみを選びます。 それから、上記のtotal fluxと同じ波長範囲のカウント値を測定し、両者のカウント値が同じになるようにスペクトル全体のかさ上げを行います。

vi kls036570-shape.list
#このファイルの中身の例は以下
kls036570-flip.ms[*,39]
kls036570-flip.ms[*,35]
kls036570-flip.ms[*,26]
kls036570-flip.ms[*,122]
kls036570-flip.ms[*,37]
kls036570-flip.ms[*,71]

rm -f kls036570-shape.fits
imcomb @kls036570-shape.list kls036570-shape combine=sum

imstat kls036570-shape.fits[361:365]
# IMAGE NPIX MEAN STDDEV MIN MAX
kls036570-shape.fits[361:365] 5 61244. 113.5 61105. 61397.
#スペクトルのカウント値は61244 × 5 = 306220 counts
#スペクトルのかさ上げ係数は 5.6303 × 105 / (3.06 × 105) = 1.840
rm -f kls036570-total.fits
imarith kls036570-shape * 1.840 kls036570-total

カウント値からflux densityに変換する係数の関数 (感度曲線) を求めます。 ここからは通常の分光データ解析と同様の手順でしょう。

#standard、sensfunc、fluxcalibの設定する
noao
onedspec
twodspec
longslit
#感度曲線に使う波長帯を指定する
#第1引数が入力ファイル名、第2引数が出力ファイル名、cal_dirが標準星等級データが置いてあるディレクトリ、exptimeが標準星フレームの積分時間、star_namが星の名前、extinctが赤化曲線のファイル名
#私はextinction補正を入れるとおかしくなったので、補正しないようにしたが、正しく補正できるならextinction補正を入れてもいいだろう
rm -f std-no5.dat
standard kls036570-total std-no5.dat caldir=/iraf/iraf/noao/lib/onedstds/spec16cal/ exptime=5 star_nam=hr718 extinct="" answer=yes
#下記のような、カウント値 vs 波長の図が現れる
#曲線が標準星フレームのデータ、四角印が感度曲線のフィッティングに使うデータ
#吸収線や欠損領域にかかっている波長帯のデータは、データ点の近くにカーソルを持って行き、dを押して削除する
#使うデータ点の指定が終わったら、qを押して終了する

standardウィンドウ

#感度曲線を求める
#第1引数が入力ファイル名、第2引数が出力ファイル名、orderがフィッティング次数、extinctが赤化曲線のファイル名
rm -f sens-no5.fits
sensfunc std-no5.dat sens-no5 order=4 extinct="" answer=yes
#下図のようなウィンドウが現れる
#上パネルが感度曲線、下パネルが残差
#変にずれているデータ点があれば、そのデータ点にカーソルを持って行き、d pを押して削除し、fを押してフィッティングし直す

sensfuncウィンドウ

#輻射強度較正をするフレームのリストを作る
#基本的に背景光引きをした…-sky.fitsが入るが、標準星など短時間積分の…-flip.ms.fitsも入るかもしれない
vi obs-no5-sky.list
sed -e s/-sky/-fc/ obs-no5-sky.list | sed -e s/-flip.ms.fits/-fc.fits/ > obs-no5-fc.list

awk '{printf ("rm -f %s\n", $1)}' obs-no5-fc.list | sh
fluxcalib @obs-no5-sky.list @obs-no5-fc.list sens-no5 exposur="EXPTIME"
#これでデータのカウント値の単位が erg cm-2 s-1 Å-1 になる

基本的な解析は以上です。 ここまででファイバーごとのスペクトル (= データキューブ) が得られたことになります。 ここからはより正確な画像化や、複数フレームの足し上げなど、追加の解析です。