|
[準備その1]
|
HDSのCCD、特にRed側のCCDには非常に強いBad Columnが存在し、
しばしばオーダートレースや、フラットフィールディングで害を
およぼす。
その影響をなるべく抑制するために、BIAS画像をつかって
マスクフレームを作成しておく。
この「マスク」はBIASフレームから異常なカウント値を示す
Bad Pixelを抜き出して、まわりのピクセルで補間を行うもので、
その部分にあたるスペクトルのカウント値は「一見問題なさそうに
見えるが、実は嘘の値に置き換えられている」という点に注意しなければ
ならない。
また、Blue CCDにはカウントが伸びない"負"のBad Columnや、
その他の弱いBad Columnが多数存在するが、
この作業ではそれらの補正はあまり考えない(たぶんそこまで厳密には
行わない方がよいと思われる)。
|
|
[Preparation 1] BIASフレームからのマスクフレームの作成
|
|
使用するフレーム
|
BIAS
|
|
hdsqlでの前処理
|
OverScanのみ
|
|
hdsql後の処理
|
"imcombine"で足し合わせてBIASを作成。
そのBIASからタスク"mkbadmask"によってマスクフレームを作成。
|
|
hdsqlのパラメータへの指定
|
"### Masking Bad Pixels"の"mb_refer"にマスクフレームを指定する。
|
|
| [1] |
hdsqlを使ってBIASフレームについてoverscanのみを実行。
できた HXXXXXo.fitsのリスト(Bias2x1R.lst etc.)を作って、imcombineでmedianをとり、BIASフレームとする。
ecl> imcombine @Bias2x1R.lst Bias2x1R combine=median reject=sigclip
|
| [2] |
このBIASフレームについて上限値と下限値を指定し、マスクフレームを作成する。
使うタスクは"mkbadmask"(オリジナル)。
また、このコマンドの内部では"wacosm11.cl"を呼び出している部分があるのでlogin.cl等で登録がなされている必要がある(ANAでは登録済みなので気にしなくてよい)。
パラメータの例としては以下のようになる。
|
PACKAGE = echelle
TASK = mkbadmask
inimage = Bias2x1R Input BIAS image
outimage= Mask2x1R Output MASK image
(lower = -100) Lower limit replacement window
(upper = 300) Upper limit replacement window
(clean = yes) Clean up by wacosm11
(base = 1) Baseline for wacosm11
(mode = q)
|
|
|
lowerおよびupperにBIASフレームでの下限値および上限値を指定する。
数値としてはbinningにも依存するが、経験上からlower=-100,
upper=300程度とすればRed CCDの強いBad Columnをピックアップできるようである。
また、imcombine時に取り除けなかったCosmic Ray(一部 Bad "Pixel"も混在している)
を取り除きたい場合は、clean=yes とすることでタスク wacosm11 (オリジナル)を用いて
クリーンアップを行い、純粋にBad "Column"だけを抽出することができる。
|
| [3] |
できたマスクフレームは下図のように Bad pixel=1, 健常なPixel=0とした二値の
画像になる。
このマスクフレームはタスク"fixpix"でマスクとして指定して使用することができる。
ただし、fixpixはhdsqlの内部で自動的に呼び出されているので、その部分の解説は省く。
|

▲BIASから作成されたマスクフレーム(Red CCD)
|
|

▲OverScan後のイメージ(Red CCD)
|
→
|

▲fixpixによるマスク済みのイメージ(Red CCD)
|
中央部右側の強いBad Columnがマスクされている。
逆に左側の比較的弱いBad Columnはそのまま残っている。
こちらはupper=100程度でマスクを作ると取り除くこともできるが、
オーダートレースなどで悪影響の出るようなBad Columnではないため、
無理して取り除かない方がよいと思われる。
(非常に明るい天体などでは無視してしまえる場合もある。)
|
|
| [4] |
できたマスクフレームは、hdsqlのパラメータで
##### Masking Bad Pixels
部のmb_referに指定しておく。
|
|
| [5] |
なお、ANAで解析をする場合は、
/home/hds01/share/data/Mask2x1R.fits
というようなマスクが各CCD・binningについて用意されているので、
以上の作業はとばして、それをそのまま使用してもよい。
|
|
|
[準備その2]
|
オーダートレース用のテンプレート(=Apertureリファレンス)は標準星などの明るい星のデータ、
もしくはオーダートレース用にスリット長を狭めてとったフラットのデータを用いて
作成する。
標準設定(StdYbなど)を使っている場合は、"/home/hds01/share/data/"
の下にある"StdYbLshsl2x2.fits"
(StdYb, L[Red側,(Blue側はR)], 2x2binning)などのデータを流用し、
以下の作業はスキップすることができる。
このときは database/ディレクトリの下にある apStdYbLshsl2x2 などの
ファイルも作業しているディレクトリの database/ 下ににコピーする必要がある。
|
|
[Preparation 2] オーダートレース用のテンプレートの作成
|
|
使用するフレーム
|
標準星などの明るい天体、もしくはスリット長を狭めてとったフラット
|
|
hdsqlでの前処理
|
OverScan + Masing Bad Pixels (OverScanのみでも可)
|
|
hdsql後の処理
|
"apall"でApertureをトレースする。
|
|
hdsqlのパラメータへの指定
|
"### Scattered Light Subtraction"の"sc_refer"にApertureリファレンスフレームを指定する。
"### Aperture Extraction"の"ap_refer"にApertureリファレンスフレームを指定する。
|
|
| [1] |
hdsqlを使ってテンプレートにするデータについてoverscanおよびmaskbadをyesとして実行。
(場合によってはmaskbadをnoとしてもよいが、Bad Columnの影響が出てトレースしにくくなる)
できた HXXXXXom.fits をわかりやすい名前にリネーム
(ここではApYb2x1R.fitsとしておく)する。
|
| [2] |
これに関してapallを実行。
パラメータの例としては以下のようになる。
オーダーの抽出時にCCD端でlineがうまく拾えない等のときは、
"line"の値を少し変える(もしくはApertureのedit画面で":line 1800"→"a"-Keyでオーダー全選択→"g"-Keyでリセンター→"m"-Keyでオーダー抽出、等)
ことで対処するとよい。
オーダーの抽出画面では、ライン上"m"キーでマニュアルのオーダー抽出。
1番となるべきオーダー上で"o"キー→Aperture(1)="1"で
オーダーの順番が整列。
その後"q"キーで次の作業に移る。
(yes/no)と聞かれるところは基本的に"yes"(そのままリターンキー押下)
でよい。
フィッティング時にはCCD端(もしくはbad columnの影響を受けているところ)については
"s"→"s"で抽出範囲の決定、"t"で抽出範囲のクリア、"f"で再フィット
などの小技を使う以外はそれほど細かい作業はない(sky等を気にしなければ)。
|
PACKAGE = echelle
TASK = apall
input = ApYb2x1R List of input images
(output = ) List of output spectra
(apertur= ) Apertures
(format = echelle) Extracted spectra format
(referen= ) List of aperture reference images
(profile= ) List of aperture profile images
(interac= yes) Run task interactively?
(find = yes) Find apertures?
(recente= yes) Recenter apertures?
(resize = yes) Resize apertures?
(edit = yes) Edit apertures?
(trace = yes) Trace apertures?
(fittrac= yes) Fit the traced points interactively?
(extract= yes) Extract spectra?
(extras = no) Extract sky, sigma, etc.?
(review = yes) Review extractions?
(line = INDEF) Dispersion line
(nsum = 20) Number of dispersion lines to sum or median
# DEFAULT APERTURE PARAMETERS
(lower = -20) Lower aperture limit relative to center
(upper = 20) Upper aperture limit relative to center
(apidtab= ) Aperture ID table (optional)
# DEFAULT BACKGROUND PARAMETERS
(b_funct= chebyshev) Background function
(b_order= 1) Background function order
(b_sampl= -10:-6,6:10) Background sample regions
(b_naver= -3) Background average or median
(b_niter= 0) Background rejection iterations
(b_low_r= 3.) Background lower rejection sigma
(b_high_= 3.) Background upper rejection sigma
(b_grow = 0.) Background rejection growing radius
# APERTURE CENTERING PARAMETERS
(width = 15.) Profile centering width
(radius = 30.) Profile centering radius
(thresho= 0.) Detection threshold for profile centering
# AUTOMATIC FINDING AND ORDERING PARAMETERS
nfind = 22 Number of apertures to be found automatically
(minsep = 40.) Minimum separation between spectra
(maxsep = 1000.) Maximum separation between spectra
(order = increasing) Order of apertures
# RECENTERING PARAMETERS
(aprecen= ) Apertures for recentering calculation
(npeaks = INDEF) Select brightest peaks
(shift = no) Use average shift instead of recentering?
# RESIZING PARAMETERS
(llimit = -17.) Lower aperture limit relative to center
(ulimit = 17.) Upper aperture limit relative to center
(ylevel = 0.05) Fraction of peak or intensity for automatic width
(peak = yes) Is ylevel a fraction of the peak?
(bkg = no) Subtract background in automatic width?
(r_grow = 0.) Grow limits by this factor
(avglimi= yes) Average limits over all apertures?
# TRACING PARAMETERS
(t_nsum = 10) Number of dispersion lines to sum
(t_step = 3) Tracing step
(t_nlost= 10) Number of consecutive times profile is lost befor
(t_funct= legendre) Trace fitting function
(t_order= 3) Trace fitting function order
(t_sampl= *) Trace sample regions
(t_naver= 1) Trace average or median
(t_niter= 2) Trace rejection iterations
(t_low_r= 3.) Trace lower rejection sigma
(t_high_= 3.) Trace upper rejection sigma
(t_grow = 0.) Trace rejection growing radius
# EXTRACTION PARAMETERS
(backgro= none) Background to subtract
(skybox = 1) Box car smoothing length for sky
(weights= none) Extraction weights (none|variance)
(pfit = fit1d) Profile fitting type (fit1d|fit2d)
(clean = no) Detect and replace bad pixels?
(saturat= INDEF) Saturation level
(readnoi= 0.) Read out noise sigma (photons)
(gain = 1.) Photon gain (photons/data number)
(lsigma = 4.) Lower rejection threshold
(usigma = 4.) Upper rejection threshold
(nsubaps= 1) Number of subapertures per aperture
(mode = ql)
|
|
| [3] |
ApYb2x1R.ec.fits という一次元化されたファイルができる。
またトレースされたアパーチャーの情報はdatabase/apApYb2x1Rというファイルに保存される。
|

▲apallによるオーダー抽出
|

▲apallによるオーダーフィッティング
|
|
| [4] |
apallに使ったApertureリファレンスフレームを、hdsqlのパラメータとして
##### Scattered Light Subtraction
部のsc_refer、および
##### Aperture Extraction
部のap_referに指定しておく。
|
|
|
[準備その3]
|
上記のオーダートレース用のテンプレートをリファレンスとして使い、
フラットフレームから規格化されたフラットを作成する。
もちろんフラットフィールディングをしない場合はこの作業はスキップできる。
オーダーテンプレートや波長較正データと違って、
標準設定でもフラットは保存していないので、必要な場合は
各自で作業されたい。
|
|
[Preparation 3] 規格化されたフラットの作成
|
|
使用するフレーム
|
フラット
|
|
hdsqlでの前処理
|
OverScan + Masing Bad Pixels + Linearity Correction(OverScanのみでも可)
|
|
hdsql後の処理
|
"apscatter"で"ref=ApYb2x1R"とリファレンスを指定して散乱光を除去する。
次に"apflatten"で同じく"ref=ApYb2x1R"とリファレンスを指定して規格化する。
|
|
hdsqlのパラメータへの指定
|
"### Flat Fielding"の"fl_refer"に規格化したフラットフレームを指定する。
|
|
| [1] |
hdsqlを使って各フラットフレームをOverScan + Masking Bad Pixels + Linearity Correctionする(場合によっては後ろふたつは飛ばしてもよい)。
HDSではたいていの場合Blue用とRed用に最適化したフラットのシリーズを
とるため、使える方のものだけを使う。
|
| [2] |
リニアリティ補正済みのHXXXXXoml.fits (もしくはOverScan済みのHXXXXXo.fits)
のテキストリストを作成し、
imcombineで平均化されたフラットイメージを作成する
(combine=average reject=avsigclipでよい)。
ecl> imcombine @FlatYb2x1R.lst FlatYb2x1R combine=ave reject=avsigclip
|
| [3] |
タスク apscatterでオーダー間の散乱光を除去する。
refrenにはオーダートレース用テンプレートのファイル名を入れる。
ecl> apscatter FlatYb2x1R FlatYb2x1R.sc referen=ApYb2x1R find- recent+ resize+ edit+ trac-
(場合によっては飛ばしてもよい)
|

▲apscatterでのオーダー抽出
(テンプレートからのresize、recenterで行う)
|

▲apscatterでの分散方向フィッティング
(spline3のorder=20でフィッティング)
|
|
| [4] |
apscatterの出力に対して、タスク apflattenで規格化されたフラットを作成する。
refrenにはオーダートレース用テンプレートのファイル名を入れる。
ecl> apflatten FlatYb2x1R.sc FlatYb2x1R.sc.nm referen=ApYb2x1R find- recent+ resize+ edit+ trac-
フラットをフィッティングする関数は比較的高次で10〜20次程度くらい
(":order 11"のようにして変更)。
bad columnの影響部分や端のピクセルなどを取り除きながら行う行程は
apallとほぼ一緒("s"-"s"-keyで範囲選択、"t"で範囲解除等)である。
|
PACKAGE = echelle
TASK = apflatten
input = FlatYb2x1R.sc List of images to flatten
output = FlatYb2x1R.sc.nm List of output flatten images
(apertur= ) Apertures
(referen= ApYb2x1R) List of reference images
(interac= yes) Run task interactively?
(find = no) Find apertures?
(recente= no) Recenter apertures?
(resize = yes) Resize apertures?
(edit = yes) Edit apertures?
(trace = no) Trace apertures?
(fittrac= no) Fit traced points interactively?
(flatten= yes) Flatten spectra?
(fitspec= yes) Fit normalization spectra interactively?
(line = INDEF) Dispersion line
(nsum = 100) Number of dispersion lines to sum or median
(thresho= 10.) Threshold for flattening spectra
(pfit = fit1d) Profile fitting type (fit1d|fit2d)
(clean = no) Detect and replace bad pixels?
(saturat= INDEF) Saturation level
(readnoi= 0.) Read out noise sigma (photons)
(gain = 1.) Photon gain (photons/data number)
(lsigma = 4.) Lower rejection threshold
(usigma = 4.) Upper rejection threshold
(functio= spline3) Fitting function for normalization spectra
(order = 3) Fitting function order
(sample = *) Sample regions
(naverag= 1) Average or median
(niterat= 5) Number of rejection iterations
(low_rej= 3.) Lower rejection sigma
(high_re= 3.) High upper rejection sigma
(grow = 0.) Rejection growing radius
(mode = q)
|
|

▲apflattenでのオーダーフィッティング
(spline3のorder=20でフィット)
|
|
| [5] |
できた規格化済みフラットフレームは、hdsqlのパラメータで
##### Flat Fielding
部のfl_referに指定しておく。
|
|
|
[準備その4]
|
上記のオーダートレース用のテンプレートと波長較正用のTh-Arフレーム
を取得していれば、波長較正用のデータを作成することができる。
もちろん波長情報がいらない場合はこの作業はスキップできる。
また以前同じ設定で同定を行ったフレームがある場合は、
それをリファレンスとして指定することで、ecidentifyでの同定作業において
楽をできる。
そうした場合は、該当するTh-Arフレームとデータベース(database/ecXXXXXX)ファイル
をそれぞれコピーしておく。
|
|
[Preparation 4] 波長較正用データの作成
|
|
使用するフレーム
|
Comparison (Th-Ar)
|
|
hdsqlでの前処理
|
OverScan + Masing Bad Pixels + Aperture Extraction (Maskはスキップ可)
|
|
hdsql後の処理
|
[a] 新規に同定を行う場合
"ecidentify"でラインの同定を行う。
[b] 以前に同定したデータがある場合
"ecreidentify"で"referen=ThArXXXX"と以前のフレームを指定して実行してから、
"ecidentify"で同定を行う。
|
|
hdsqlのパラメータへの指定
|
"### Wavelength Calibration"の"wv_refer"に波長同定したTh-Arフレームを指定する。
|
|
| [1] |
hdsqlをThArのフレームに対して使用。
今回はOverscanとMasking Bad Pixels, Aperture Extractionを実行することになる(Maskはスキップ可)。
apallのアパーチャーのリファレンスには先ほどテンプレートを作ったときのもの
を指定する。
また、apallでのアパーチャーのresize, recenter, editは
Th-Arのデータなのでしないようにする。
apall後のデータをセーブするために"ap_save=yes"としておく。
|
PACKAGE = echelle
TASK = hdsql
inid = 22073 Input frame ID
(indirec= /data/o05129/HDSA000) directory of Input data
(oversca= yes) Overscan?
(biassub= no) BIAS / Dark Subtraction?
(maskbad= yes) Mask Bad Pixels?
(linear = no) Linearity Correction?
(cosmicr= no) Cosmicray-event rejection?
(scatter= no) Scattered light subtraction?
(flat = no) Flat fielding?
(apall = yes) Extract spectra with apall?
(remask = no) Re-Mask wavlength calibrated spectrum?
(wavecal= no) Wavelength calibration?
(rvcorre= no) Heliocentric wavelength correction?
(splot = no) Splot Spectrum?
(...中略...)
(ap_save= yes) Save apalled data?
(ap_in = ) Input frame for apall (if necessary)?
(ap_refe= ApYb2x1R) Reference frame for apall
(ap_inte= yes) Run apall interactively?
(ap_rece= no) Recenter apertures?
(ap_resi= no) Resize apertures?
(ap_edit= no) Edit apertures?
(ap_trac= no) Trace apertures?
(ap_fitt= no) Fit the traced points interactively?
(ap_llim= -30) Lower aperture limit relative to center
(ap_ulim= 30) Upper aperture limit relative to center
(ap_ylev= 0.05) Fraction of peak for automatic width determinati
(ap_peak= yes) Is ylevel a fraction of the peak?
(ap_bg = none) Background to subtract
(...後略...)
|
|
| [2] |
H22073om_ec.fits (もしくは H22073o_ec.fits)という一次元化されたファイルができる。
このファイルをわかりやすい名前 "ThArYb2x1R.fits" などにかえておく。
|
| [3a] |
新規に同定を行う場合
リネームしたファイルについて、タスク"ecidentify"で、波長同定。
オーダーの数にもよるが、1オーダーにつき5〜6点、2〜3オーダーとばしで
波長情報を記入して"f"でフィット。
最終的には":xorder 5", ":yorder 4"などとしてx=5,
y=4次の関数でフィットするのが
いいようである。
いらない点を"d"でつぶして再フィットし、エラーが小さいとうなら、"l"で
リスト中の他のラインも同定し再フィット→いらいない点をけす。
……というような手順で完了。
なおUVのデータをフィットする場合は、"coordli"で指定している
Th-Arの波長データでは足りないため、追加したファイル(このページの末尾からDLできる)に置き換える等の作業が必要となる。
|
PACKAGE = echelle
TASK = ecidentify
images = ThArYb2x1R Images containing features to be identified
(databas= database) Database in which to record feature data
(coordli= linelists$thar.dat) User coordinate list
(units = ) Coordinate units
(match = 1.) Coordinate list matching limit in user units
(maxfeat= 1000) Maximum number of features for automatic identifi
(zwidth = 10.) Zoom graph width in user units
(ftype = emission) Feature type
(fwidth = 4.) Feature width in pixels
(cradius= 5.) Centering radius in pixels
(thresho= 10.) Feature threshold for centering
(minsep = 2.) Minimum pixel separation
(functio= chebyshev) Coordinate function
(xorder = 2) Order of coordinate function along dispersion
(yorder = 2) Order of coordinate function across dispersion
(niterat= 0) Rejection iterations
(lowreje= 3.) Lower rejection sigma
(highrej= 3.) Upper rejection sigma
(autowri= no) Automatically write to database?
(graphic= stdgraph) Graphics output device
(cursor = ) Graphics cursor input
(mode = q)
|
|

▲ecidentifyによるTh-Ar lineの同定
(1orderにつき6本くらい)
|

▲ecidentifyでのフィッティング誤差
(xorder=2, yorder=2での初期フィット)
|
|

▲ecidentifyでのフィッティング誤差
(xorder=4, yorder=4でフィット。 0.6 arcsec slit幅, 2x1bin)
|

▲ecidentifyでのフィッティング誤差
(xorder=5, yorder=4でフィット。フィーチャーが消える。)
|
|
| [3b] |
以前に同定したデータをリファレンスにする場合
以前のデータをThArYb2x1R_old.fitsとすると、そのファイルを同じディレクトリに、
さらにdatabase/にデータベースファイル"ecThArYb2x1R_old"をコピーしておく。
タスク"ecreidentify"で参照する。
ecl> ecreidentify ThArYb2x1R referen=ThArYb2x1R_old
出てきたRMSエラーが大きい(0,01以上など)の場合はたぶんうまく行っていない。
そののちに、ThArYb2x1Rについて"ecidentify"をして誤差を確認し、
フィットし直す。
|
| [4] |
同定したTh-Arフレームを、hdsqlのパラメータで
##### Wavelength Calibration
部のwv_referに指定しておく。
|
|
|
|
|
これらのファイルをダウンロードしてから。以下のような記述を
login.cl に追加することでタスクを使えるようになる。
"/home/hds01/share/cl/" となっている部分はANAでの
設定なので、ダウンロードしたファイルを置いたディレクトリに
変更する必要がある。
hdsql[1,2,3].clというのはhdsql.clをコピーして作る。
まったく内容の同じファイルでよいが、これらは
もう一方のCCDや、違う波長設定のデータを同時に解析したいとき
などに役立つ。
|
set stdimage = imt4096
set hdshome = "/home/hds01/share/cl/"
task overscan = "hdshome$overscan.cl"
task hdsql = "hdshome$hdsql.cl"
task hdsql1 = "hdshome$hdsql1.cl"
task hdsql2 = "hdshome$hdsql2.cl"
task hdsql3 = "hdshome$hdsql3.cl"
task wacosm11 = "hdshome$wacosm11.cl"
task hdslinear = "hdshome$hdslinear.cl"
task mkbadmask = "hdshome$mkbadmask.cl"
task rvhds = "hdshome$rvhds.cl"
task hdsbadfix = "hdshome$hdsbadfix.cl"
imred
echelle
rv
|
|
タスク "rvhds" ではheliocentricへの変換に観測所の位置情報を必要
とする。
"すばる"はIRAFにデフォルトで収録されている observatory.dat に
含まれていないので、
|
observatory = "subaru"
name = "SUBARU Telescope, NAOJ"
longitude = -155.4706
latitude = 19.8255
altitude = 4163
timzone = -10
|
|
のような記述を noaolib$obsdb.dat に追加するか、
もしくは新規にファイルを作ってそのなかに記述して login.clに
set obsdb = "/home/hds01/share/cl/obsdb.dat"
というように指定する必要がある。
実際に観測所情報が読み込めるかは、IRAFのターミナルで以下のようにして確認することができる。
|
ecl> observatory
Command (set|list|images) (set|list|images) (list):
Observatory to set, list, or image default (subaru):
# Observatory parameters for SUBARU Telescope, NAOJ
observatory = subaru
timzone = -10
altitude = 4163
latitude = 19.8255
longitude = -155.4706
name = 'SUBARU Telescope, NAOJ'
|
|
| |
[Old version]
|
|
|
|
|
ここまでの作業で、一次リダクションはほぼ完了したので、
ここから先はエシェルの各オーダーを結合して完全一次元化をしてみる。
オーダー間を結合したフレームを作成するためには、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> socmbine 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
|

▲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
|

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

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