はじめに
ChandraのACISグレーティング観測で0次像の細かい構造を解析する際、CIAOのsimulate_psfには注意が必要です。
通常、chandra_reproでACISのTimed Exposure観測を再処理すると、グレーティングの有無にかかわらず、イベント位置補正にEDSERが使われます。
EDSER(Energy-Dependent Subpixel Event Repositioning)は、CCDで検出されたイベントのエネルギーとgradeを利用して、ピクセル内の光子位置を推定する方法です。
ところが、CIAO 4.18のsimulate_psfのソースコード(run_marx2fits())には、次の処理があります。
if "HRC" == obi_info["instrume"]:
pixadj = "RANDOMIZE"
elif "NONE" != obi_info["grating"]:
pixadj = "RANDOMIZE"
else: # ACIS, no gratings
pixadj = "EDSER"
cmd = "marx2fits --pixadj=" + pixadj + " "
つまり、MARXを用いたPSFシミュレーションでは、次のようになります。
| ACIS観測 | chandra_repro(標準) | simulate_psf |
|---|---|---|
| Grating = NONE | EDSER | EDSER |
| Grating = HETG / LETG | EDSER | RANDOMIZE |
グレーティング観測では、観測画像がEDSERで処理されていても、シミュレーションPSFにはRANDOMIZEが使われてしまいます。
simulate_psfの引数では変更できない
simulate_psfの公式ドキュメントには、MARXがEDSERによるsubpixel event positionsに対応していることが記載されています。また、MARXの公式ドキュメントによれば、marx2fits自体の--pixadjの既定値もEDSERです。
しかし、CIAO 4.18のsimulate_psfでは、グレーティング観測に対してRANDOMIZEが明示的に指定されています。
さらに、simulate_psfにはmarx2fitsのpixadjを直接指定する引数がないため、通常の引数設定だけでグレーティング観測のPSFをEDSERに切り替えることはできません。
この点についてCXC Help Deskに問い合わせたところ、標準データ処理でグレーティング観測にもEDSERを使うようになった変更が、simulate_psfには反映されていなかったとの回答をいただきました。将来のリリースで修正する予定とのことです(CXC Help Deskとの私信、private communication)。
EDSERとRANDOMIZEではPSFの中心部の幅や形状が異なり得ます。実際、MARXの公式PSF検証ページでは、両者によるPSF分布の違いが図で示されています。ただし、これはグレーティング0次像を直接比較したものではありません。また、MARXによるevent gradeの再現精度にも限界があることが説明されています。
特にグレーティング0次像を用いたsubpixel imagingや、微細構造の検出、PSFとの幅の比較では、この不一致が解析結果に影響する可能性があります。なお、その影響の大きさは今回定量的には検証していません。
回避策としては、marxとmarx2fitsを直接利用してEDSERを指定する方法があります。また、simulate_psfのソースコードを直接修正する方法も考えられますが、公式ツールの動作を変更することになるため推奨しません。具体的な手順はここでは割愛します。
この記事は2026年10月24日時点のCIAO 4.18のソースコードに基づく注意喚起です。今後のアップデートで修正される可能性があるため、実際に解析する際には、使用しているバージョンのsimulate_psfのソースコードや更新履歴を確認してください。