あいちSRの硬X線XAFSビームラインBL5S1, BL11S2 と、軟X線XAFSビームライン BL6N1 では、 XAFS測定に XafsM2 と呼ばれる計測プログラムを使用しています。 XafsM2 が記録するXAFS測定データのフォーマットは、9809フォーマットと呼ばれるフォーマットに準じています。
この文章では9809フォーマットを変更、拡張した部分を含めて XafsM2 の XAFS測定データフォマットを説明します。
データファイルの先頭の数行には、
測定日時やファイル名、コメント、幾つかの測定条件等付随的な情報が 9809 フォーマットの規定に準じて記録されています。
ここに、 データファイルのヘッダの部分の例 を一つ挙げました。
ヘッダ部分の記録にあたっては、ファイルの形式を 9809 フォーマットに揃えることを優先に考えています。
これは、9809フォーマットを読み込む様にできている従来の解析プログラム等がそのまま使えるようにするためです。
そのため「測定条件等の付随的な情報」の記録としてみたときには情報が不完全だったり、
9809フォーマットの範囲では表現しきれず便宜的な記録になっている部分があります。
測定条件等に関するより正確/詳細な情報が必要な場合には、
XafsM2 で “data-file-name.dat” という測定データと共に作られる “data-file-name.info” ファイルを参照して下さい
2)。
以下、このファイルの先頭の行から順番に 1行ずつ、記録されている内容を説明します。
先頭の1行に記録されるのは「ファイルID(9809)」、「測定施設名(AichiSR)」、「測定ビームライン名(BL5S1)」です。
9809 AichiSR BL5S1
9809原典では、「ビームライン名」は 5文字となっています。 このため、BL11S2 で測定を行った場合、“BL11S2” とは記録できず “BL11S” になっているはずです。 過去にはこれを避けるために、ビームライン名は常に “BL5S1” にしていたこともあります。
2行目に記録されるのは「ファイル名」、「測定開始日時」、「測定終了日時」です。
201203-test-tr 20.12.03 15:49 - 20.12.03 16:11
「ファイル名」として記録できる文字数にも制限(14文字)があるのでファイル名は途中で切れています
(例として上げたファイルの元のファイル名は “201203-test-trans.dat” でした)。
「日時」の「時間」は「分」の桁まで記録されています。
現在の XAFS 測定の時間は短縮されていて、秒の桁が無いと不便な場合があります。
その場合には別途情報を記録している「*.info」ファイルを参照して下さい。
XafsM2 は、何かの理由で測定が途中で中断した場合でもそこまでのデータを残すために、
測定の進行にあわせて順次ファイルの各行を書き出します。
そのため、この行に「測定終了日時」を書き込むことは本当はできません(この行を書くのは測定開始時点なので)。
そこで XafsM2 は、測定開始時には「測定終了日時」の位置に仮に “%001%” と書いておいて、
測定終了時に改めてこの行を書き換えて終了日時を記録しています。
測定中にXafsM2を強制終了した場合などは、書き換えが行われないので “%001%” がそのまま残ります。
次の行はコメントです。
Sample Name:Cu foil Meas. No. 12
XafsM2 の画面上で「コメント」として入力した文字列がここに記録されます。
次の行は蓄積リングの「加速電圧」と「電流値」です。
Ring : 1.2 GeV 300.0 mA - 301.0 mA
「電流値」は測定開始時の値と終了時の値が記録されます。
「終了日時」と同じで「終了時の電流値」も測定開始時には書き込めないので、
代わりに一旦 “%002% と書き込まれ、終了時に書き直されます。
「加速電圧」は計測値ではなく固定で書き込まれていますので、
将来あいちSRがアップグレードして加速電圧が変わることがあれば、ここの数字が違っているというバグが発生するかもしれません。
次の行は、測定時の分光器と分光結晶に関する情報の記録です。
Mono : Si(111) D= 3.13553 A Initial angle= 12.50000 deg
この例では
がわかります。
測定結果のファイルに記載されている「分光器の角度」をその測定点のエネルギーに直す際にも重要です。どの様に変換するかは注2を読んでみて下さい。
次の行に記録されているのは、「ビームライン名」、「測定モード」、「繰返し数」、「測定点数」です。
BL5S1 Transmission ( 2) Repetition= 0 Points= 620
次の行は、「ブロックパラメータ記録ファイル名」、「エネルギー軸の決め方」、「ブロック数」を記録することになっています。
Param file : DUMMYNAME.prm energy axis (2) Block = 4
しかし、XafsM2 は「ブロックパラメータ記録ファイル名」として常に「DUMMYNAME.prm」と記録します5)。
ブロックパラメータをファイルから読み込んだ場合もその名前にはなりません。
「エネルギー軸の決め方」は、測定開始時にブロックパラメータの表示単位として角度(“deg”)を選択していた場合 “1” に、
それ以外を選んでいると “2” になります。これは測定時の各点が「角度で等間隔」かどうかを表します。
しかしやや特殊ですが XafsM2 は、表示単位を角度以外にしている時でも測定を「角度で等間隔」にすることも可能です。
その場合も、ここでの表示は “2” になるので注意が必要です6)。
次は「ブロック数」の記録です。ここでは、”Block = 4“ なので、XAFS測定を4つのブロックに分けて測定したことがわかります。
この後には1行の空白行に続いてブロックパラメータが記録されます。
Block Init-Eng final-Eng Step/eV Time/s Num 1 8684.36 8944.36 6.50 1.00 40 2 8944.36 9034.36 0.30 1.00 300 3 9034.36 9484.36 2.50 1.00 180 4 9484.36 10084.36 6.00 1.00 100
最初の行は、続く行の行内の各項目の説明で、その後に「ブロック数」分の行が並びます7)。
”Block“ は何番目のブロックかを表す番号、”Init-Eng“ はブロックの始点のエネルギー、”final-Eng“ はブロックの終点のエネルギー、”Step/eV“ はそのブロック内を何eVステップで刻んで測定を行うか、”Time/s“ は1点の計測時間、”Num“ はそのブロックの測定点数(終点を含まない)を示します。
XafsM2 の画面上の表示単位が [keV] の場合でも、ここの記録は [eV] 単位になります。
ブロックパラメータの定義に続く次の1行は、計測に使われた機器やチャンネルの記録です。この行はファイルの見かけを 9809フォーマットに揃えるためだけのあまり意味のない内容の行です。
ORTEC( 0) NDCH = 3
最初に記録されている”ORTEC( 0)“ というのは、測定に使われた機器の種類を表すことになっています。
しかし、あいちSRの硬X線XAFSビームラインでは 9809フォーマットで想定されている機器(ORTEC や CAMAC)は使われていませんし、
仮に使われていたとしても、前述したように XafsM2 では複数の検出器を用いた複雑な構成での計測ができるため、
9809フォーマットで想定しているようなシンプルな表現ができません。
そこで、XafsM2 では、使用機器欄を常に “ORTEC( 0)” とします。言い換えるとこの記述に意味はありません。
単にファイルフォーマットの外見を揃えるためだけのモノです。
測定チャンネル数 “NDCH” の記述にもあまり意味はありません。9809フォーマットの定義では「測定チャンネルの数」となっています。
しかし XafsM2 開発当初(2010年前後) PF での測定データを見ると、例えば二つのイオンチャンバで I0 と I1 を計測したような場合でも
“NDCH = 2” ではなく “3” になる場合があるなど
(ORTEC では、カウンタと同様にタイマーにもアクセスできたので、おそらくタイマーを一つのチャンネルとして数えられていた)、
厳密な定義が不明だったからです。
XafsM2 では PF と同様のパタンで測定した時の “NDCH” がなるべく PF で記録したファイルの “NDCH” と同じになるように努力しましたが、
あいちSR、PF 共に検出器/計測系、計測プログラムの更新が続いていますので現在も同じである保証はありません。
XafsM2 での “NDCH” の値は、透過法の場合には “計測チャンネル数(I0, I1, I2,…)+1” です(検出器の数+1になります)。
SSD/SDD を用いた蛍光法では “NDCH” は蛍光検出器のチャンネル数(7とか19とか)に I0 を足した数(8 とか 20)になります(検出器の数と同じです)。
蛍光測定で I2 を追加したり、その他様々な検出器の組み合わせを使う場合、”NDCH“ が幾らになるかをここで説明するのは複雑ですし、
特に意味も無いと思いますので割愛します。
続く3行は、データ本体部分の各行に記録されるデータと密接に関連しています。
Angle(c) Angle(o) time/s 1 2 Mode 0 0 1 2 Offset 0 0 0.000 0.000
最初の行は、データ本体部分に並ぶ数値が何かを示している行です。ここでは「ラベル行」と呼びます。
データ本体を見る時に意味が分かりやすくなるので便利ですがさほど重要ではありません。
“Angle(c)” は各行に対応する点を計測する際のプログラム上での分光器の角度(プログラムが分光器のパルスモーターコントローラに指示した角度)で、
“Angle(o)” は計測を行った時の実際の角度をエンコーダで計測した数値を意味します8)。
“time/s” は、その点の計測時間[s]を表します。続く 1, 2, 3,… は順に振られた計測器の番号です。
続く2行は重要です。”Mode“ で始まる行は、検出器の「モード」を表しています。ここでは「モード行」と呼びます。 先頭から 3つのカラム(Angle(c), Angle(o), time/s) は検出器に対応していないのでモードはありません。 “Mode”, “0”, “0” という3つの記述でカラム数を合わせています。
XafsM2 が「モード」として記録する数字は 0, 1, 2, 3, 101, 103 です9)。
ヘッダ部分の最後の一行は “Offset” から始まる行です。ここでは「オフセット行」と呼びます。
測定に用いた検出器の「オフセット」(入力信号がないはずの時の出力値)を記録しています。
先頭から3カラムは検出器に対応していないのでオフセットもありません。”Offset“, “0”, “0” という3つの記述でカラム数を合わせています。
データ本体に記録される計測値はこの「オフセットを引いた後の数字」です。
もし生データが必要な場合には記録されている計測値にこのオフセットを加算して下さい。
但し、計測値は、積分型の検出器/検出系の場合、計測時間分の積分値ですが、オフセットは 1秒の計測値になっていることに注意して下さい。
ヘッダを構成する情報は以上です。
最後に、9809 フォーマットには「ヘッダ」と「データ本体」を区別する記号はありません。 ですが、ヘッダの最後には必ずオフセット行が来ます(少なくとも XafsM2 のデータファイルはそうです)。 従って、もし何かのプログラム等で測定データを読んで処理する必要がある場合、オフセット行をヘッダ終端記号の代わりに使えます。
ヘッダ部分の最後の 3行(ラベル行、モード行、オフセット行)の意味を知っていると
データ本体部分はほとんど理解できるので、ここで説明することはあまりありません。
データファイルの本体部分の例として、ヘッダ部分と本体部分の最初の3行を切り出した例を3例あげます
( 透過法での測定データ例 、
蛍光法での測定データ例 1 、
蛍光法での測定データ例 2 )。
透過法での測定データ例としてあげたファイルのラベル行以下は次のようになっています。
Angle(c) Angle(o) time/s 1 2 Mode 0 0 1 2 Offset 0 0 6335.000 228.000 13.159369 13.159360 1.00 1.71017e+06 1.71122e+06 13.149350 13.149344 1.00 1.71227e+06 1.71333e+06 13.139347 13.139340 1.00 1.7144e+06 1.71547e+06
データ本体に関して「説明することはあまりない」と書きましたが、それでも多少説明すべき点があります。
次に、蛍光法での測定データ例1としてあげたファイルを見てみます。
Angle(c) Angle(o) time/s 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Mode 0 0 3 3 3 3 3 3 3 1 103 103 103 103 103 103 103 101 Offset 0 0 0.000 0.000 0.000 0.000 0.000 0.100 0.000 6369.500 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 13.159369 13.159770 1.00 74 76 211 212 255 82 63 1.26984e+07 692 752 1782 1874 1962 1011 844 0 13.149350 13.149320 1.00 70 94 221 213 216 75 78 1.28284e+07 656 793 1828 1850 1907 1007 816 0 13.139347 13.139370 1.00 80 100 214 199 242 70 75 1.27539e+07 711 714 1745 1824 1918 1005 882 0
モード行を見ると、測定結果の各行には、7素子の蛍光検出器の各素子の測定値が先に並んでいて、
その後に $I_0$ の数字が記録されていることがわかります。
先に述べたように、固定長ではないのでカラムの位置が多少ズレていて見にくいですが、$I_0$の後に、
蛍光検出器の各素子のICRの値が並び、最後にモード101(リセット回数)が来ます。先に述べたように XafsM2 はモード101のカラムは常に 0 にします。
また、複数あるモード3のカラムとモード103のカラムの対応関係はラベル行の番号を見るとわかります。
この関係を敷衍するとモード1のカラムとモード101のカラムに対応関係がありそうに思えますが、先に述べたように対応関係はありません。
蛍光法での測定データ例1は、 フォトンカウント型の検出器/計測系 で測定を行っていましたが、 一般的な積分型の検出器/検出系で蛍光や電子終了の測定を行った場合、ICR に相当する数字が無いことがあります。 蛍光法での測定のデータ例(2)としてあげたファイルはその様な例です。 このファイルのラベル行以下を見ると、次のようになっています。
Angle(c) Angle(o) time/s 1 2 Mode 0 0 1 3 Offset 0 0 0.000 0.000 42.783521 42.783510 0.50 85549 1993 42.761802 42.761850 0.50 85606 1992 42.740108 42.740220 0.50 85641 1992
モード行を見れば、4カラム目が $I_0$ で、 5カラム目が蛍光/電子収量の様に $I/I_0$ で吸収係数に比例した値が得られる計測値だということがわかります。 ですが先の例と異なり、モード 103 のカラムはありません13)。 これは、使用している 積分型の検出器/計測系 が原理的に数え落とさないからです。 その代わりにエネルギー分解能がないので、自分が測定したい蛍光X線以外の光が強いと良い測定ができなくなります。
「蛍光法での測定データ例(1)」にあげたデータファイルにはモード 103 のカラムがありました。 これは、対応するモード 3 の検出器の ICR の記録になっていて、この値を使うと「数え落とし補正」が可能です14)。 XafsM2 は、数え落とし補正可能と分かっている検出器を使って測定を行った場合、自動的に数え落とし補正を行ったデータを生成し、 測定結果と同時に出力します。その時数え落とし補正を行ったデータファイルは元の測定データのファイル名に ”-dtc数字“ を付加したものになります。 ここで “dtc” は “dead time correction” の略で、数字は数え落とし補正の計算式のタイプを示しています(上記「数え落とし補正」参照)。
次のファイル 「数え落とし補正結果の例」 は、「蛍光法での測定データ例1」と同時に XafsM2 が出力したものです。ファイル名に ”-dtc2“ が付いているのは、タイプ2の補正を行ったファイルだということを示しています。 このファイルのラベル行以下は次のように鳴っています。
Angle(c) Angle(o) time/s 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Mode 0 0 3 3 3 3 3 3 3 1 103 103 103 103 103 103 103 101 Offset 0 0 0.000 0.000 0.000 0.000 0.000 0.100 0.000 6369.500 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 13.159369 13.159770 1.00 74.0546 76.0673 211.366 212.383 255.486 82.0805 63.0475 1.26984e+07 692 752 1782 1874 1962 1011 844 0 13.149350 13.149320 1.00 70.049 94.0878 221.394 213.38 216.4 75.0733 78.0568 1.28284e+07 656 793 1828 1850 1907 1007 816 0 13.139347 13.139370 1.00 80.0607 100.084 214.364 199.35 242.451 70.0683 75.0591 1.27539e+07 711 714 1745 1824 1918 1005 882 0
「蛍光法での測定データ例1」と見比べると、計測値が実数になっているのが大きな違いです。 細かく見ると、ここの数値は「蛍光法での測定データ例1」より少しずつですが大きくなっています。 これは、測定時の「数え落とし」を補正して正しい計測値を推測した結果だからです。
ここに示したデータは、XAFS測定全体の先頭部分です。 このため入射エネルギーは、測定対象元素の吸収端エネルギーを越えておらず、蛍光がほとんど発生していません。 このことは モード 103 の列に記録された ICR の値があまり大きくないことからも確認できます。 この様に、ICR の値が小さいため、数え落としの度合いも小さく、補正を行ってもほんの少ししか値が変化しません。 対象元素の濃度が高い場合など、吸収端を越えると強い蛍光X線が発生し、ICR も大きくなりますので 補正を行うと数%から10%近く値が変わることもあり得ます。
数え落としによって(あるいは逆に数え落とし補正によって)計測値が一律に変化するなら、 それほど数え落としを気にしなくてもよいのですが、実際にはその効果は一律ではなく、 蛍光X線が強いほど数え落としの影響が強くなります。 このため、吸収の強い部分(XAFSスペクトルの振動のピーク部分)が影響を受けて抑圧され、見かけ上吸収強度が下がります。
このため数え落とし補正を行っていないデータを使うと、 指紋照合的に XANES スペクトルを見ている場合には、スペクトルの形が違って見えることで判断を誤る原因になります。 また、EXAFS 解析を行う場合には、EXAFS振動の振幅が小さくなったかのような効果を及ぼすので、 解析結果の配位数が小さく出てくる等の影響が出ます。 できれば補正後のデータ ”-dtc“ ファイルを使用して下さい。
当 web ページとその下のページに関するお問い合わせ等ございましたら、連絡先にご連絡をお願いします。
田渕のページのルート