========================================
DetectorInfoとそのフォーマットについて
========================================
概要
====
空蟬において、DAQミドルウェアが出力するイベントデータからDetectorInfoを利用して作成された検出単位のヒストグラムに対して位置情報などを付与するために必要な情報をXML形式で記述しており、それを"Detector Info"と定義している。本稿ではDetecotInfoの役割とそのフォーマットについて記述する。
----------------------
DetectorInfoの情報
----------------------
Detector Infoは、XML形式によって記述されている。またその情報には大まかに3種類ある。DetectorInfoが持つ情報は以下のようなものである。
+-+-----------------------------------------------------+----------------------------------------+
| |Detector Info内の情報 |XMLのタグ |
+=+=====================================================+========================================+
|1|基本的な距離の情報(L1など) |instrumentInfo, L1など |
+-+-----------------------------------------------------+----------------------------------------+
|2|Time-Focusingパラメータの情報 |tfp, tfpCalcParamsなど |
+-+-----------------------------------------------------+----------------------------------------+
|3|検出器の位置を示す情報 |positionInfo, positionなど |
+-+-----------------------------------------------------+----------------------------------------+
|4|検出器のまとまり(Bank)を示す情報 |bankInfo, bankなど |
+-+-----------------------------------------------------+----------------------------------------+
|5|検出器の構造を示す情報 | |
+-+-----------------------------------------------------+----------------------------------------+
フォーマットの詳細
===================
これらの情報を収めるXMLタグの詳細な情報を以下に記す。
---------------
detectorInfo
---------------
**【ヒストグラム化に必須】**
DetectorInfo内の全てのエレメントの親である。
+------------+----------------+----------------+
| |名前 | 意味・説明 |
+============+================+================+
|属性 |inst |装置コード |
| +----------------+----------------+
| |version |バージョン |
| +----------------+----------------+
| |update |アープデート日時|
+------------+----------------+----------------+
|親エレメント|なし | |
+------------+----------------+----------------+
|子エレメント|instrumentInfo, | |
| |tfpCalcParams, | |
| |positionInfoなど| |
+------------+----------------+----------------+
-----------------
instrumentInfo
-----------------
**【ヒストグラム化に必須】**
装置の配置情報のうち基本的なものを示す。単位は[mm]。
現状、 *L1* はヒストグラム化の横軸をエネルギーや波長に変換する際に使用される。
*TypicalL2* と *TypicalDS* は必須である。これらは 立体角の相対値を利用した単純な補正(NormBySolidAngle)を行う際に規格化に用いられるが、このコマンドを使用しないならダミーの値で良い。
+------------+----------------+---------------------------------------+
| |名前 | 意味・説明 |
+============+================+=======================================+
|属性 |なし | |
+------------+----------------+---------------------------------------+
|親エレメント|detectorInfo | |
+------------+----------------+---------------------------------------+
|子エレメント|L1 | 線源と試料間距離情報[mm] |
| +----------------+---------------------------------------+
| |TypicalL2 | 試料から検出器までの代表的な距離[mm] |
| +----------------+---------------------------------------+
| |TypicalDS | 検出器1Pixel分の代表的な面積[mm*mm] |
+------------+----------------+---------------------------------------+
例
---
BL01での使用例を示す。
.. code-block:: xml
:linenos:
18030.0
2500.0
483.87
--------------------
instrumentInfo/L1
--------------------
線源と試料の間の距離。単位は[mm]。
+------------+----------------+-----------------------+
| |名前 | 意味・説明 |
+============+================+=======================+
|属性 |なし | |
+------------+----------------+-----------------------+
|親エレメント|instrumentInfo | |
+------------+----------------+-----------------------+
|子エレメント|なし | |
+------------+----------------+-----------------------+
|コンテンツ |L1 |線源試料間距離情報[mm] |
+------------+----------------+-----------------------+
---------------------------
instrumentInfo/TypicalL2
---------------------------
試料から検出器までの代表的な距離、単位は[mm]。
立体角の相対値を利用した単純な補正(NormBySolidAngle)を行う際に規格化に用いられる。NOrmBySolidAngleを使用しないならばダミーで良い。
+------------+----------------+-----------------------+
| |名前 | 意味・説明 |
+============+================+=======================+
|属性 |なし | |
+------------+----------------+-----------------------+
|親エレメント|instrumentInfo | |
+------------+----------------+-----------------------+
|子エレメント|なし | |
+------------+----------------+-----------------------+
|コンテンツ |TypicalL2 |代表的試料検出器間距離 |
+------------+----------------+-----------------------+
-------------------------
instrumentInfo/TypicalDS
-------------------------
検出器1Pixel分の代表的な面積、単位は[mm*mm]。
立体角の相対値を利用した単純な補正(NormBySolidAngle)を行う際に規格化に用いられる。NOrmBySolidAngleを使用しないならばダミーで良い。
+------------+----------------+-----------------------+
| |名前 | 意味・説明 |
+============+================+=======================+
|属性 |なし | |
+------------+----------------+-----------------------+
|親エレメント|instrumentInfo | |
+------------+----------------+-----------------------+
|子エレメント|なし | |
+------------+----------------+-----------------------+
|コンテンツ |TypicalDS |代表的1Pixel面積 |
+------------+----------------+-----------------------+
----------------
positionInfo
----------------
**【ヒストグラム化に必須】**
検出器の位置情報の親である。
+------------+----------------+----------------------------+
| |名前 | 意味・説明 |
+============+================+============================+
|属性 |n |子エレメントの個数|
+------------+----------------+----------------------------+
|親エレメント|detectorInfo | |
+------------+----------------+----------------------------+
|子エレメント|position |検出器ごとの位置情報 |
+------------+----------------+----------------------------+
|コンテンツ |なし | |
+------------+----------------+----------------------------+
-----------------------
positionInfo/position
-----------------------
検出器の位置情報を示す。コンテンツの具体的な記述方法や具体的な位置の計算方法などは、後述( )する。
+------------+----------------+-----------------------+
| |名前 | 意味・説明 |
+============+================+=======================+
|属性 |i |インデックス |
| +----------------+-----------------------+
| |detId |detId(検出器ID) |
| +----------------+-----------------------+
| |numAxis |検出器内の座標軸数 |
+------------+----------------+-----------------------+
|親エレメント|positionInfo | |
+------------+----------------+-----------------------+
|子エレメント|なし | |
+------------+----------------+-----------------------+
|コンテンツ |,,... |検出器の位置情報。 |
| |(実数、 |numAxis=1なら8個、 |
| |カンマ区切り) |numAxis=2なら13個。 |
+------------+----------------+-----------------------+
------------
bankInfo
------------
**【ヒストグラム化に必須】**
検出器のグループ化(バンク)情報の親。ヒストグラム化の際に、データのヘッダに情報が書き込まれる("BankId" など)。
現状、
- ヒストグラム化の時に特定のBankのみ指定してヒストグラム化する
- データ処理においてバンクごとに異なる補正を行う
- データ可視化で、バンクごとに異なる見せ方を行う
などに使用されている。
+------------+----------------+----------------------------+
| |名前 | 意味・説明 |
+============+================+============================+
|属性 |n |子エレメントの個数 |
+------------+----------------+----------------------------+
|親エレメント|detectorInfo | |
+------------+----------------+----------------------------+
|子エレメント|bank |検出器グループ化の情報 |
+------------+----------------+----------------------------+
|コンテンツ |なし | |
+------------+----------------+----------------------------+
例
----
BL01における使用例を示す。
.. code-block:: xml
:linenos:
0-31
32-63
64-95
96-127
128-159
160-191
192-223
224-255
256-287
288-319
320-351
500-501
---------------
bankInfo/bank
---------------
検出器のグループ化(バンク)情報を記す。情報は検出器にユニークな番号である、detId(検出器ID)。
+------------+----------------+---------------------------------------+
| |名前 | 意味・説明 |
+============+================+=======================================+
|属性 |i |インデックス |
| +----------------+---------------------------------------+
| |bankId |バンク識別ID |
| +----------------+---------------------------------------+
| |name |バンクの名前 |
+------------+----------------+---------------------------------------+
|親エレメント|bankInfo | |
+------------+----------------+---------------------------------------+
|子エレメント|なし | |
+------------+----------------+---------------------------------------+
|コンテンツ |All |すべてのDetIDに適応 |
|(DetId情報) +----------------+---------------------------------------+
| |- |ハイフンは範囲(10-39なら10から39まで)|
| +----------------+---------------------------------------+
| |, |カンマは個別の指定 |
| +----------------+---------------------------------------+
| |,- |両方の共存も可能 |
+------------+----------------+---------------------------------------+
-------
tfp
-------
PixelごとのTime Focusing パラメータの情報の親。
+------------+----------------+-------------------------+
| |名前 | 意味・説明 |
+============+================+=========================+
|属性 |n |子エレメントの個数|
+------------+----------------+-------------------------+
|親エレメント|detectorInfo | |
+------------+----------------+-------------------------+
|子エレメント|param | |
+------------+----------------+-------------------------+
|コンテンツ |なし | |
+------------+----------------+-------------------------+
-----------
tfp/param
-----------
PixelごとのTime Focusing パラメータ情報。
+------------+----------------+-----------------------+
| |名前 | 意味・説明 |
+============+================+=======================+
|属性 |i |インデックス |
| +----------------+-----------------------+
| |pixId |pixel Id |
+------------+----------------+-----------------------+
|親エレメント|tfp | |
+------------+----------------+-----------------------+
|子エレメント|なし | |
+------------+----------------+-----------------------+
|コンテンツ |Time Focusing | < A, B > |
| |パラメータ | |
+------------+----------------+-----------------------+
--------------
tfpCalcParams
--------------
全PixelのヒストグラムのTime-of-Flightを、指定した特定のPixelへ波長を揃えてたたみ込むためのパラメータを記述する。
+------------+----------------+-----------------------+
| |名前 | 意味・説明 |
+============+================+=======================+
|属性 |なし | |
+------------+----------------+-----------------------+
|親エレメント|detectorInfo | |
+------------+----------------+-----------------------+
|子エレメント|psd | |
+------------+----------------+-----------------------+
|コンテンツ |なし | |
+------------+----------------+-----------------------+
-------------------
tfpCalcParams/psd
-------------------
現在PSDだけを対象にしているが、将来別の可能性もあるため、PSDとして枠を作成している。
+------------+----------------+-----------------------+
| |名前 | 意味・説明 |
+============+================+=======================+
|属性 |なし | |
+------------+----------------+-----------------------+
|親エレメント|tfpCalcParams | |
+------------+----------------+-----------------------+
|子エレメント|reference |畳み込み先の位置情報 |
+------------+----------------+-----------------------+
|コンテンツ |なし | |
+------------+----------------+-----------------------+
-----------------------------
tfpCalcParams/psd/reference
-----------------------------
たたみ込む先の情報を記述する。
+------------+----------------+-----------------------+
| |名前 | 意味・説明 |
+============+================+=======================+
|属性 |なし | |
+------------+----------------+-----------------------+
|親エレメント|psd | |
+------------+----------------+-----------------------+
|子エレメント|L2 |畳み込み先のL2 |
| +----------------+-----------------------+
| |theta |畳み込み先のPolar Angle|
+------------+----------------+-----------------------+
|コンテンツ |なし | |
+------------+----------------+-----------------------+
--------------------
detectorStructure
--------------------
検出器の構造情報を記述する。主に検出器効率補正に用いられる。
現状では、 **UtsusemiDetectorEfficiencyCorrectio** コマンドに使用される。通常のヒストグラム化には使用されないので、なくてもエラーにはならない。
+------------+----------------+----------------------------+
| |名前 | 意味・説明 |
+============+================+============================+
|属性 |name |検出器タイプの名前 |
+------------+----------------+----------------------------+
|親エレメント|detectorInfo | |
+------------+----------------+----------------------------+
|子エレメント|wall |検出器の壁面の情報 |
| +----------------+----------------------------+
| |body |検出器の内部の情報 |
+------------+----------------+----------------------------+
|コンテンツ |なし | |
+------------+----------------+----------------------------+
例
----
BL01の検出器構造を以下に示す。
.. code-block:: xml
:linenos:
1.0
7930
16.4
308.15
---------------------------------
detectorStructure/wall
---------------------------------
検出器の壁の構造情報を記述する。主に検出器効率補正に用いられる。
+------------+-----------------+--------------------------------+
| |名前 | 意味・説明 |
+============+=================+================================+
|属性 |なし | |
+------------+-----------------+--------------------------------+
|親エレメント|detectorStrucure | |
+------------+-----------------+--------------------------------+
|子エレメント|form |構造情報(形、内外径、高さ) |
| +-----------------+--------------------------------+
| |ratio |wallでの散乱がbodyに影響する割合|
| +-----------------+--------------------------------+
| |weight_per_volume|密度 [g/(mm)^3] |
| +-----------------+--------------------------------+
| |element |wallの原子構成 |
+------------+-----------------+--------------------------------+
|コンテンツ |なし | |
+------------+-----------------+--------------------------------+
---------------------------------
detectorStructure/body
---------------------------------
検出器の内部がすの構成情報を記述する。主に検出器効率補正に用いられる。
+------------+-----------------+--------------------------------+
| |名前 | 意味・説明 |
+============+=================+================================+
|属性 |なし | |
+------------+-----------------+--------------------------------+
|親エレメント|detectorStrucure | |
+------------+-----------------+--------------------------------+
|子エレメント|form |構造情報(形、内外径、高さ) |
| +-----------------+--------------------------------+
| |pressure |気圧 [Atm] |
| +-----------------+--------------------------------+
| |temperature |気圧測定時の温度[K] |
| +-----------------+--------------------------------+
| |element |bodyの原子構成 |
+------------+-----------------+--------------------------------+
|コンテンツ |なし | |
+------------+-----------------+--------------------------------+
---------------------------
detectorStructure/XXXX/form
---------------------------
XXXX = wall / body
構造情報を示す。
+------------+----------------+--------------------------------+
| |名前 | 意味・説明 |
+============+================+================================+
|属性 |なし | |
+------------+----------------+--------------------------------+
|親エレメント|wall / body | |
+------------+----------------+--------------------------------+
|子エレメント|type |slab, cylinder, column |
| +----------------+--------------------------------+
| |out_radius |外径 [mm] |
| +----------------+--------------------------------+
| |in_radius |内径 [mm] |
| +----------------+--------------------------------+
| |height |高さ |
| +----------------+--------------------------------+
| |widthe |幅 |
+------------+----------------+--------------------------------+
|コンテンツ |なし | |
+------------+----------------+--------------------------------+
位置情報のフォーマットの詳細
==============================
検出器の装置内座標系における位置を定義する。
1. Pixel位置計算のための仮定
Pixelは検出器上の直線軸上に位置し、1つもしくは2つの軸の線形結合によって表記しうることとする。
2. いくつかのルール
- 軸のベクトルの向きはPixel番号が小さい方から大きい方へ。
- 数値はすべてミリメートルを単位とする。
検出器の位置情報は下記に述べるベクトルとスカラのパラメータで指定する。それらの情報をカンマ区切りの実数として、DetectorInfo内のpositionInfo/positionのコンテンツに記述する
------------------------------
1次元検出器の場合のパラメータ
------------------------------
|image0|
- 検出器自体の位置を定義するベクトル
- 試料位置を原点としたベクトル: :math:`\vec P_{org}`
- 検出器内の軸を定義するベクトル: :math:`\vec U`
大きさは使用するPixelの端から端までとする。
- :math:`\vec P_{org}` の終点を検出器内の軸で表すためのスカラ: :math:`\vec L_{U0}`
:math:`\vec U` と :math:`\vec V` の始点からの距離で示す。
なお、Pixel数に関してはこのフォーマットには含まれないことに留意すること。
positionのコンテンツ
---------------------
positionタグの属性numAxisが1のときは8個の実数(カンマ区切り)で記述する。
:math:`P_{org-x}` , :math:`P_{org-y}` , :math:`P_{org-z}` , :math:`U_{x}` , :math:`U_{y}` , :math:`U_{z}` , :math:`L_{U0}` , w
wは、:math:`\vec U` に垂直な方向のPixelの幅 [mm]である。
------------------------------
2次元検出器の場合のパラメータ
------------------------------
|image1|
|image2|
- 検出器自体の位置を定義するベクトル
- 試料位置を原点としたベクトル: :math:`\vec P_{org}`
- 検出器内の軸を定義するベクトル: :math:`\vec U` と :math:`\vec V`
大きさは使用するPixelの端から端までとする。
- :math:`\vec P_{org}` の終点を検出器内の軸で表すためのスカラ: :math:`\vec L_{U0}` と :math:`\vec L_{V0}`
:math:`\vec U` と :math:`\vec V` の始点からの距離で示す。
なお、Pixel数に関してはこのフォーマットには含まれないことに留意すること。
positionのコンテンツ
---------------------
positionタグの属性numAxisが2のときは13個の実数(カンマ区切り)で記述する。
:math:`P_{org-x}` , :math:`P_{org-y}` , :math:`P_{org-z}` , :math:`U_{x}` , :math:`U_{y}` , :math:`U_{z}` , :math:`V_{x}` , :math:`V_{y}` , :math:`V_{z}` , :math:`L_{U0}` , :math:`L_{V0}` , :math:`w_{U}` , :math:`w_{V}`
ここで、
.. math::
{\vec P_{{\rm{org}}}} = \left( {\begin{array}{*{20}{c}}{{P_{{\rm{org - x}}}}}\\{{P_{{\rm{org - y}}}}}\\{{P_{{\rm{org - z}}}}}\end{array}} \right) ,
\vec U = \left( {\begin{array}{*{20}{c}}{{U_{\rm{x}}}}\\{{U_{\rm{y}}}}\\{{U_z}}\end{array}} \right) ,
\vec V = \left( {\begin{array}{*{20}{c}}{{V_x}}\\{{V_y}}\\{{V_z}}\end{array}} \right)
と置いている。また、 :math:`w_{U}` は、:math:`\vec U` 方向のPixelの幅 [mm]、:math:`w_{V}` :math:`\vec V` 方向のPixelの幅 [mm]である。
------------------------------
位置の計算例
------------------------------
計算に必要な値は以下のとおり。
- :math:`n_{pixel}` :Pixel分割数
- :math:`\vec P_{org}` :原点となる位置
- :math:`\vec U` :PSD上のPixelNo=0のピクセル端から( :math:`n_{pixel}` -1 )へ向かい、Pixel領域の両端を結ぶベクトル
- :math:`L_{U0}` ::math:`\vec P_{org}` からPixelNo=0のピクセル端までの長さ
これらのうち、detId(PSDのID)と、 :math:`\vec P_{org}` , :math:`\vec U` , :math:`L_{U0}` の情報はDetectorInfoに含まれる。
「Pixel位置」とは、Pixelの領域の中心を示すとする。
PixelNo=0のPixelの位置を :math:`\vec P_{0}` と示すとすると、
.. math::
{\vec P_{\rm{0}}} = {\vec P_{{\rm{org}}}} - \frac{{{L_{{\rm{U0}}}}}}{{{L_{{\rm{psd}}}}}}\vec U + \frac{1}{2}\frac{{\vec U}}{{{n_{{\rm{pixel}}}}}}
\quad = {\vec P_{{\rm{org}}}} - \left( {\frac{{{L_{{\rm{U0}}}}}}{{\left| {\vec U} \right|}} - \frac{1}{{2{n_{{\rm{pixel}}}}}}} \right)\vec U
となる。また図のようにPixel No.が増える方向のPixel単位ベクトル :math:`\vec u` を定義する。
.. math::
\vec p = \frac{{\vec U}}{{{n_{{\rm{pixel}}}}}}
これらを用い、n番目のPixelの位置を :math:`\vec P_{n}` で表すと
.. math::
{{\vec P}_{\rm{n}}} = {{\vec P}_{\rm{0}}} + n \cdot \mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over p}
\quad = {{\vec P}_{{\rm{org}}}} - \left( {\frac{{{L_{{\rm{U0}}}}}}{{\left| {\vec U} \right|}} - \frac{1}{{2{n_{{\rm{pixel}}}}}}} \right)\vec U + n \cdot \frac{{\vec U}}{{{n_{{\rm{pixel}}}}}}
\quad = {{\vec P}_{{\rm{org}}}} - \left( {\frac{{{L_{{\rm{U0}}}}}}{{\left| {\vec U} \right|}} - \frac{{n + {\textstyle{1 \over 2}}}}{{{n_{{\rm{pixel}}}}}}} \right)\vec U
となる。
.. |image0| image:: media/Define1D_detector.png
:width: 300px
:alt: figure of folders structure on Utsusemi environment
.. |image1| image:: media/Define2D_detector.png
:width: 300px
:alt: figure of folders structure on Utsusemi environment
.. |image2| image:: media/Define2D_detector2.png
:width: 300px
:alt: figure of folders structure on Utsusemi environment