fullseye

detector_calibrate — DRIVE pxrd op

使い方

既知の標準(Si など)の環から検出器の中心・距離・傾きを較正する。

``d_spacings`` は標準の面間隔 [Å] の list(強い順でなくてよい)、``geometry_guess`` には少なくとも ``pixel`` と
``wavelength``、分かっていれば ``cx``・``cy``・``distance``・``tilt``・``tilt_dir`` を入れる。手順:

1. 中心が無ければ明るい画素の重心から始め、最も強い環を光線に沿って拾い、円の当てはめで中心を 3 回更新する。
2. 距離が無ければ、半径方向のプロファイルの最初の山を d の候補(小さい 2θ から 4 本)に当て、他の環の予測と
   観測の山が最も多く一致する組を選ぶ。
3. 現在の幾何で各環の位置を ``n_azimuth`` 本の光線上で予測し、窓の中の強度の重心で点を拾い、
   ``scipy.optimize.least_squares`` で ``(cx, cy, distance, tilt の 2 成分)`` を 2θ の残差 [deg] で当てる。窓を
   縮めながら 3 回。傾きは回転ベクトルの 2 成分 ``tilt·(cos φ, sin φ)`` で解く(傾き 0 で φ が不定になる特異点を避ける)。

返り値(dict): 幾何(``cx``・``cy``・``distance``・``pixel``・``wavelength``・``tilt``・``tilt_dir``)に
``rms_two_theta_deg``・``n_points``・``n_rings``・``rings_deg``・``ok``(rms が画素 1/4 の角 ``0.25·pixel/distance`` 未満 かつ環 >= ``min_rings``)を足したもの。

Raises ValueError: 像が 2-D でない、d が 1 本も無い、pixel / wavelength が無い、環が ``min_rings`` 本見つからない。

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(table を入力に取れる)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

同カテゴリ(pxrd)

cif_read · cubic_prototype · powder_reflections · scherrer_size · debye_ring_image · detector_two_theta · azimuthal_integrate · diffraction_peaks


Provenance: pxrd.py — DRIVE operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.