Appendix. イメージスライサを使用した場合の解析 (フリンジがあるときのフラットおよびオーダー抽出) |
|
|
イメージスライサを使用している場合は基本的には
apflattenで規格化されたフラットを用いて
フラットフィールディングし、
通常のスリットと同様な解析を行うとトラブルが少ない。
ただし、フリンジが出る領域(Hαより長い波長域)
では、以下に述べる特殊な方式で解析を行うことでノイズを削減できる。
この方法では、apnormalize された フラットを使用し、
flat-fieldingとapallを両方同時に行う形で解析を行う。
hdsqlのパラメータ設定で、apnormalizedで規格化したフラットを指定し、
(fl_refe= FlatNIRR.sc.nm) Flat frame
フラットフィールディング(flat)と
一次元化 (apall)をno にした上で、その下にある isecf を yes にする。
(flat = no) Flat Fielding?
(apall = no) Aperture Extraction?
(isecf = yes) Extract & Flat for IS? (override flat & apall)
この isecf (中身は hdsis_ecf.cl というタスク) に関して指定するhdsqlの
パラメータは以下の通り。
|
[(8+9)/13] Parameters for Flat Fielding & Extraction for Image Slicer
|
is_plot
|
フラットに対してapeditを起動し、インタラクティブに抽出する範囲を決定するか? (default=yes)
|
is_stx
|
非インタラクティブに抽出するときの範囲を開始するピクセル。(default=-12)
|
is_edx
|
非インタラクティブに抽出するときの終端ピクセル。(default=12)
|
is_bfix
|
バッドピクセルをフィックスする方法の指定。(default=fixpix)
|
is_up
|
規格化されたフラットでバッドピクセルと判断するときのピクセルの上限値。(default=0.001)
|
|
hdsqlを実行して、この処理が始まると
apeditが起動するので、'.'(ドット)で適当なオーダーを選び、
オーダー表示中に'C'で抽出すべき範囲の両端のピクセルを決めておく。
|

▲イメージスライサのオーダー抽出 '.'で選択したオーダーの表示中で、'C'を押してピクセル値を読み、天体の写っている範囲を決めておく。
|
|
両端のpixel値が決められれば(もしくはすでに決まっていれば)、
とくになにもせずに'q'でGUIから抜けてよい。
このapeditで':upper'と':lower'でapertureをトレースする範囲(これは全オーダー共通の値になる)を決めると次の手入力でのデフォルト値になる。
次に両端のpixel値を聞かれるので、手入力をする。
(ここの数字はフラットに対してapnormalizeで指定したlower,upperの範囲よりも内側にくるべきである)
>>> Lower Pixel for Extraction (-12) : -20
-20
>>> Upper Pixel for Extraction (12) : 11
11
プロンプトの( )のなかには先ほどのapeditで決めた一番目のオーダーの
apertureの値がデフォルトで入っている。
何も数字を入れずにリターンをするとその値になる。
あとは自動的に1pixel毎にフラットと天体がスライスされ、
フラットフィールディングとオーダー抽出が同時に行われる形になる。
|

▲イメージスライサ#3のスリット長方向のプロファイル
黒が天体で赤がフラットのプロファイル。 スライサ素子の間および両端では
フラットのカウントが小さくなるが、このまま割るとこの部分の
天体のカウントが過大に見積もられてしまう。 hdsis_ecf.clでは
このフラットのプロファイルを一度作って補正をかけることにより
それを防止する。
|
|
|
|
|
ここまでの作業で、一次リダクションはほぼ完了したので、
ここから先はエシェルの各オーダーを結合して完全一次元化をしてみる。
オーダー間を結合したフレームを作成するためには、EchelleのBlaze functionを
なんらかの形で補正する作業が必要になるが、それには大きく分けて
[A] 目標天体自身をContinuuum Fitする
[B] 標準星を使ってフラックス補正をする
という二つの方法が考えられる。
|
|
天体自身が普通の星であり、broadな輝線やバンド吸収などがなく連続光の
レベルの決定が容易である場合は、天体自身のスペクトルを
タスクcontinuuumでフィットしてしまうのがもっとも簡単な方法である。
|
[1] |
タスク "continuum" を使って天体のcontinuuum fitを行う。
ecl> continuum H75611omlcsf_ecwzr H75611omlcsf_ecwzr_c
|

▲Continuum Fit中の様子
(Order 6~15程度でfit)
|

▲Continuum Fit後の天体スペクトル
(continuuum level=1に規格化される)
|
|
|
この出力(H75611omlcsf_ecwzr_c)をそのままscombine (combine=ave group=images)すると、一応オーダー結合されたスペクトルを得ることができるが、
各オーダー端のカウントが低い部分も区別なく平均かされるため、S/Nが悪くなってしまう。
これを避けるために、一度Blaze Function を算出する手段をとる。
|
[2] |
Continuum Fit前後のスペクトルを割って、Blaze Function (CBlaze)を算出する。。
ecl> sarith H75611omlcsf_ecwzr / H75611omlcsf_ecwzr_c CBlaze
CBlazeは本来のblazeと違い、目標天体のcontinuumに相当する関数が実際にはかかったものであるが、ここでは便宜上「Blaze Function」と記述する。
|
[3] |
ここで可能な場合は、CBlazeについてバルマー線の周囲や大気吸収のあるオーダー
を周囲のオーダーで補間をかけるような作業をした方がよりよいBlaze Function
にすることができる。
hdsqlのRe-Mask after Wavelength Calibrationの過程で"zm_val=0"とした
場合は、CBlazeでもマスクした部分の値がゼロになってしまい、
この補間に向かなくなるため注意が必要である。
|

▲修正前のCBlazeの全オーダーをオーバープロット
|

▲修正後のCBlazeの全オーダーをオーバープロット
|
(CCD端で大きくずれているものはあまり気にしなくてよいが、Hα等のbroadな輝線や大気吸収のある一部オーダーで明らかに異なるフィーチャーが見られる。)
|
|
[4] |
hdsqlで天体にマスクをかけた場合(かつRe-Mask after Wavelength
Calibrationの過程で"zm_val=0"としなかった場合)は、
Continnum Fitする前の天体のフレームにマスクを適用しなおす
(hdsqlでzm_val="0"としたときは飛ばしてよい)。
hdsqlでは天体のフレームと同時にマスク(Mask_HXXXXXomlcsf_ecw.fits)も
作られ、天体フレームのヘッダ(H_MASK)には該当するマスクが記録されている。
タスク "hdsbadfix" (オリジナル)を使えば、このマスクは簡単にできる。
ecl> hdsbadfix H75611omlcsf_ecwzr H75611omlcsf_ecwzr_b mask+ manual+ cl_mask+ value=0
今度はvalue=0としてマスク部分のカウントがゼロになるようにする。
このコマンドではmanual=yesとすることにより、CCD端の両側2オーダーずつで
手動でカウントをゼロにする領域を決めることができる。
このときにcl_mask=yesとすると、CCD端でカウントをゼロにした部分も同時にマスクに追加する(上書きなので注意)。
|
[5] |
同様に Blaze Function (CBlaze) にマスクを適用させておく。
こうすることで、Bad Column にかかった部分のデータがとなりのオーダーでは
同じ波長で有効な値を持つといった場合は、以降の作業で有効なオーダーのデータのみを反映させることができる(もちろんその部分のS/Nは低くなるが)。
天体から作られたCBlazeも同じマスク情報(H_MASK)をヘッダに持っているはずなので、hdsbadfixで同じマスクを簡単に適用できる。
ecl> hdsbadfix CBlaze CBlaze_b mask+ manual- cl_mask- value=0
value=0を指定して、マスク部分の値がゼロになるようにする。
|
[6] |
タスク scombineにて天体・Blazeともにオーダーを足し合わせ(combine=sum group=images)、最後にsarithで割って最終スペクトルを得る。
こうすることにより、オーダー端でS/Nを落とすことなく
滑らかに結合することができる。
ecl> scombine H75611omlcsf_ecwzr_b H75611omlcsf_ecwzr_b_sum combine=sum gorup=images
ecl> socmbine CBlaze_b CBlaze_b_sum combine=sum gorup=images
ecl> sarith H75611omlcsf_ecwzr_b_sum / CBlaze_b_sum H75611_Cfit
|
[3]のBlazeの作成・補正までが終了していれば、上記[4]∼[6]は次のコマンドで一括処理できる。
ecl> hdsmk1d H75611omlcsf_ecwzr H75611_Cfit CBlaze
|
PACKAGE = hds
TASK = hdsmk1d
inec = H75611omlcsf_ecwzr Multi-Order Spectrum
out1d = H75611_Cfit Output Flux Calibrated 1D Spectrum
blaze = CBlaze (Modefied) Blaze Function
(trim = yes) Trimming X-Pixel? (y/n)
(st_x = 3) Start X
(ed_x = 2048) End X
(adjexp = yes) Auto ExpTime Adjustment? (y/n)
(mode = al)
|
|
Parameters for hdsmk1d
|
inec
|
hdsqlで処理をした天体スペクトル (INPUT)
|
out1d
|
出力するファイル
|
blaze
|
Blaze function のファイル
|
trim
|
st_x, ed_x を使ってトリミングを行うか?
|
st_x
|
トリミングを行うときの最初のpixel値
|
ed_x
|
トリミングを行うときの最後のpixel値
|
adjexp
|
(通常 "y"にしておく)
|
|
|

▲scombineで結合したCBlaze_b_sum
|

▲scombineで結合した天体スペクトル
|
|

▲完成したContinuum Fit・完全一次元化済みスペクトル
|
|

▲CBlazeにマスクをしなかった場合
(Bad Columnの影響が残ってしまう)
|

▲CBlazeにマスクをした場合
(生きているオーダーのみを使ってスペクトルをつなげることができる)
|
|
|
broadな輝線や吸収帯が存在するときや、フラックス情報を残したい場合は
目標天体のごく近傍で撮った
標準星を使ってフラックス補正をすることにとってBlaze functionに相当する
関数を算出し、オーダー結合することもできる。
HDSの場合は、EchelleのBlaze functionが望遠鏡の位置またはフォーカス
に依存して変動があるようであまり安定しないため、いわゆる
分光測光標準星(数が少ない)を撮るよりは
- 目標天体の近傍(同様な高度・時間)
- 吸収線が少なめな早期型(<A型星)で、スペクトル型および等級が既知
- (Balmer limit付近を含むUVでの観測では特に)自転速度が遅め
(λ>4000Åなどの場合ではそれほどBalmer線は混み合ってなく、大気吸収の判別にも使える高速自転星の方がいいこともあるので一概には言えない)
な星を標準星のかわりに使った方が以下の作業はうまくいく場合が多い。
|
[1] |
タスク "standard"を使って標準星のデータのフラックスを測定する。
|
PACKAGE = echelle
TASK = standard
input = H75611omlcsf_ecwzr_tb Input image file root name
output = HD153855R_0724 Output flux file (used by SENSFUNC)
(samesta= yes) Same star in all apertures?
(beam_sw= no) Beam switch spectra?
(apertur= ) Aperture selection list
(bandwid= 1.) Bandpass widths
(bandsep= 1.) Bandpass separation
(fnuzero= 3.6800000000000E-20) Absolute flux zero point
(extinct= hdshome$mkoextinct.dat) Extinction file
(caldir = onedstds$blackbody/) Directory containing calibration data
(observa= )_.observatory) Observatory for data
(interac= yes) Graphic interaction to define new bandpasses
(graphic= stdgraph) Graphics output device
(cursor = ) Graphics cursor input
star_nam= v Star name in calibration list
airmass = 1.62 Airmass
exptime = 30. Exposure time (seconds)
mag = 6.97 Magnitude of star
magband = V Magnitude type
teff = B1III Effective temperature or spectral type
answer = YES! (no|yes|NO|YES|NO!|YES!)
(mode = q)
|
▲分光測光標準星ではなく、明るさ・およびスペクトル型が既知の星を使って、
bklackbodyにフィットさせる場合
|
(前略)
(caldir = onedstds$spec50cal/) Directory containing calibration data
(中略)
star_nam= bd284211 Star name in calibration list
airmass = 1.62 Airmass
exptime = 30. Exposure time (seconds)
(後略)
|
▲IRAFがデータを持っている分光測光標準星を使う場合
|
|
airmass, exptimeはimage headerに記述されている内容が優先されるようなので、
正しくない場合はheditで修正しておく必要がある。
blackbodyを使う場合のteffは例のようにスペクトル型で入力してもよい。
スペクトル型のテンプレートがない、判別できない場合は怒られるので
心配しなくてよい。
|
[2] |
タスク sensfuncによって感度曲線を決定する。
|
PACKAGE = echelle
TASK = sensfunc
standard= HD153855R_0724 Input standard star data file (from STANDARD)
sensitiv= HD153855R_0724 Output root sensitivity function imagename
(apertur= ) Aperture selection list
(ignorea= no) Ignore apertures and make one sensitivity functi
(logfile= logfile) Output log for statistics information
(extinct= )_.extinction) Extinction file
(newexti= hdshome$mkoextinct.dat) Output revised extinction file
(observa= )_.observatory) Observatory of data
(functio= spline3) Fitting function
(order = 10) Order of fit
(interac= yes) Determine sensitivity function interactively?
(graphs = sr) Graphs per frame
(marks = plus cross box) Data mark types (marks deleted added)
(colors = 2 1 3 4) Colors (lines marks deleted added)
(cursor = ) Graphics cursor input
(device = stdgraph) Graphics output device
answer = YES (no|yes|NO|YES)
(mode = q)
|
|

▲タスク"standard"での標準星のフラックス測定
(測定バンドはもっと太くてもよい[~4Åくらい])
|

▲タスク"sensfunc"での感度曲線の決定
(spiline3のorder=10でやっているが、もっと低いorderでもよい)
|
|
[3] |
hdsqlで同様に解析した天体のスペクトルを準備(必要ならscombine combine=sumで足し合わせる)し、タスク calibrate によってフラックス補正をする。
|
PACKAGE = echelle
TASK = calibrate
input = V1312Sco_R_omlcsf_ecwzr_t Input spectra to calibrate
output = V1312Sco_R_omlcsf_ecwzr_tf Output calibrated spectra
(extinct= yes) Apply extinction correction?
(flux = yes) Apply flux calibration?
(extinct= hdshome$mkoextinct.dat) Extinction file
(observa= )_.observatory) Observatory of observation
(ignorea= no) Ignore aperture numbers in flux calibration?
(sensiti= HD153855R_0724) Image root name for sensitivity spectra
(fnu = no) Create spectra having units of FNU?
airmass = 1.99 Airmass
exptime = 1500. Exposure time (seconds)
(mode = q)
|
|
[4] |
あとはContinuum Fitでの場合とほとんど同じである。
calibrate前後の天体のスペクトルを割って、Blaze Function (FBlaze)を算出する。
ecl> sarith V1312Sco_R_omlcsf_ecwzr_t / V1312Sco_R_omlcsf_ecwzr_tf FBlaze
(前述のContinuumのときCBlazeに標準星のフラックス情報が加わった関数であり異なるものであるが、ここでは便宜上同じ「Blaze function」と呼ぶ。)
|
[5] |
ここで可能な場合は、FBlazeについてバルマー線の周囲や大気吸収のあるオーダー
を周囲のオーダーで補間をかけるような作業をした方がよりよいBlaze Function
にすることができる。
hdsqlのRe-Mask after Wavelength Calibrationの過程で"zm_val=0"とした
場合は、FBlazeでもマスクした部分の値がゼロになってしまい、
この補間に向かなくなるため注意が必要である。
|

▲修正前のFBlazeの全オーダーをオーバープロット
|

▲修正後のFBlaze(マスク済み)の全オーダーをオーバープロット
|
|
|
[6] |
hdsqlで天体にマスクをかけた場合(かつRe-Mask after Wavelength
Calibrationの過程で"zm_val=0"としなかった場合)は、
calibrateする前の天体のフレームにもマスクを適用しなおす
(hdsqlでzm_val="0"としたときは飛ばしてよい)。
ecl> hdsbadfix V1312Sco_R_omlcsf_ecwzr_t V1312Sco_R_omlcsf_ecwzr_tb mask+ manual+ cl_mask+ value=0
今度はvalue=0としてマスク部分のカウントがゼロになるようにする。
このコマンドではmanual=yesとすることにより、CCD端の両側2オーダーずつで
手動でカウントをゼロにする領域を決めることができる。
このときにcl_mask=yesとすると、CCD端でカウントをゼロにした部分も同時にマスクに追加する(上書きなので注意)。
|
[7] |
同様にBlaze Function (FBlaze) にマスクを適用させておく。
ecl> hdsbadfix FBlaze FBlaze_b mask+ manual- cl_mask- value=0
FBlazeでもvalue=0を指定して、マスク部分の値がゼロになるようにする。
|
[8] |
タスク scombineにて天体・Blazeともにオーダーを足し合わせ(combine=sum group=images)、最後にsarithで割って最終スペクトルを得る。
こうすることにより、オーダー端でS/Nを落とすことなく
滑らかに結合することができる。
ecl> socmbine V1312Sco_R_omlcsf_ecwzr_tb V1312Sco_R_omlcsf_ecwzr_tb_sum combine=sum gorup=images
ecl> socmbine FBlaze_b FBlaze_b_sum combine=sum gorup=images
ecl> sarith V1312Sco_R_omlcsf_ecwzr_tb_sum / FBlaze_b_sum V1312Sco_R_Fcalib
赤側と青側のCCDのスペクトルをつなげたい場合などには scombine group=allを使う。
ecl> socmbine V1312Sco_R_Fcalib,V1312Sco_B_Fcalib V1312Sco_All_Fcalib combine=sum gorup=all
|
Continuum Fitの時と同様に[5]のBlazeの作成・補正までが終了していれば、上記[6]∼[8]は次のコマンドで一括処理できる。
ecl> hdsmk1d V1312Sco_R_omlcsf_ecwzr V1312Sco_R_Fcalib FBlaze
|
|

▲フラックス補正・オーダー結合された完成スペクトル
|

▲完成スペクトルの一部拡大
|
(このように複数オーダーにまたがるような輝線もきれいに結合できる。)
|
|