[[XDSを使ってみよう]]
 
 * インプットファイル作成リファレンス [#u5026b62]
 インプットファイルを自作するためのリファレンスです。通常はビームラインで用意されているはずなので自作することはあまりないと思います。
 
 * インプットファイルリファレンス [#u5026b62]
 ** DETECTORコマンド [#d58d8bde]
 *** DIRECTION_OF_DETECTOR_X_AXIS=ED(1,1)ED(2,1)ED(3,1) [#m8de74f8]
 *** DIRECTION_OF_DETECTOR_Y_AXIS=ED(1,2)ED(2,2)ED(3,2) [#y3301953]
 -ディテクタの方向を規定するベクトル。ED(1,1)はX軸が「Detector Coordinate System」でどちらの向きに向かっているかをあらわすX成分。同様にED(2,1)だとY成分。ED(?,2)はY軸がどうなっているかを示す。~
 -ディテクタのFAST軸、SLOW軸のベクトルを「Detector Coordinate System」に準じて規定する。原点は「結晶とディテクタ間の最小距離」の点。カメラ長はDETECTOR_DISTANCE変数で規定。~
 -これらの二つのベクトルからディテクタ面に垂直なベクトルED(?,3)というものを計算する。~
 以上からわかるとおり、これらのベクトルはディテクタの設置パラメータを精密化するためのものである。~
 
 ''テクニック''
 どうやってFAST軸、SLOW軸を見分けるのよ?~
 という疑問にお答えしましょう。図をご覧ください。
 #ref(detector_fast_slow.jpg,around,20%)
 +まずディテクタの原点を見極めます。
 +左の図のように原点は左肩にあるか、右肩にあるでしょう。イメージビューアなどを用いてまず、それぞれの値を見に行ってみてください。
 +パターンごとに説明します。イメージビューアで見てみて、X,Yというパラメータが座標で表示されている部分があると思います。そいつらをチェックしてみて、X,Y=(0,0)というのがイメージ上、左肩(図の赤)にあるか、左下(図の青)にあるのかを判断してください。
 +見つかったらそのまま、マウスを平行に右にずらしてみてちゃんとXの値が大きくなることをチェックしてみてください。それがFAST軸です。なぜFASTかっていうのは、バイナリイメージデータに1次元でデータが詰め込んであることから考えてみてね(XDSのマニュアルには載ってます)
 +ということで、どちらのケース(図の青、赤どっちかが原点)でもFAST軸は左から右のはず(多分)。ま、ここはチェックしてみて違うって場合は考えてみて(無責任発言)。
 +はい。というわけで、右肩(青)から始まった人は「Detector Coordinate System」のY軸と逆を向いてSLOW軸、つまりディテクタピクセル座標のY軸が走っているので、SLOW軸に限って言うと・・・
  (0 -1 0)
 になるわけです。フォローできます?「Detector Coordinate System」(すんません、以下DCSと呼びます)ではY軸は鉛直方向(地球の中心)に向かっているのでディテクタのY軸が上を向いていたらマイナスが入りますよね?
 +続いてFAST軸ですが、どちらの場合でもこいつはDCSのX軸に乗っていて+方向に走るのが基本のようです(一応、ビームストッパが生えている方向をイメージ上、それから、BLのコンポーネントの記憶から確認しておきましょう)。というわけで、FAST軸のベクトルは
  (1 0 0)
 になりまする。以上から、
 >DIRECTION_OF_DETECTOR_X_AXIS=(1 0 0) 
 >DIRECTION_OF_DETECTOR_Y_AXIS=&color(blue){(0 -1 0)(青)};or &color(red){(0 1 0)(赤)};
 ということになりまする。~
 
 ここがDCSと一緒に理解できていると後のキーワードの大半は「なるほどー」って感じで理解できると思います。
 
 * "XDS.INP"のテンプレートから抜粋したキーワード [#r8b794eb]
 手始めにテンプレート上、必須と思われるキーワードについて調べてみました。~
 各キーワードにはJOBという項目がありますが、要するに「ピークサーチ」とか「インデキシング」とかっていうJOBをXDS.INP内で指定してやらすんですが、どのJOBのときにそれらの値が使用されるのか?ということを親切に書いてくれているんですね。カブシュってすげー。
 ***MINIMUM_VALID_PIXEL_VALUE= [#p36ab6f9]
 ディテクタピクセルがもてる最小の値。デフォルトは0
  JOB: INIT, COLSPOT, INTEGRATE
 
 
 ***OVERLOAD= [#o67f770a]
 いわずと知れたサチり点のピクセル値。
 
 ***TRUSTED_REGION= [#yd2f7425]
 ディテクタの有効面積を中心から水平方向の端までの距離を1として表現したもの。
  JOB: INIT, IDXREF
 
 ***DIRECT BEAM [#o3e83a2f]
 3つの浮動小数によって規定する。ベクトルの値は付録参照。
 
 ***JOB [#g8cac8a9]
 どんなJOBをやりますか?ってこと。
 |''XYCORR''|各ピクセルの空間的な補正テーブルの作成|
 |''INIT''|各ピクセルのバックグラウンド決定。また、ディテクタの信用できる領域を決定する。|
 |''COLSPOT''|データイメージの指定したサブセット(複数のイメージの塊)から強い反射を集める|
 |''IDXREF''|結晶格子を決定して回折パラメータを精密化する|
 |''DEFPIX''|ディテクタの信用できる領域を決定。特に使用しない領域の認識・除外。指定された分解能以外の反射の除外を行う。|
 |''XPLAN''|データ収集のストラテジを計算してくれる。空間群がわからない場合はP1で処理されるので注意。|
 |''INTEGRATE''|3Dプロファイルを全ての反射から計算して強度を見積もる。|
 |''CORRECT''|強度の損壊(ディケイ)、吸収、ディテクタの感度による強度補正を行って、データセットの統計値を表示してくれる。また回折パラメータの精密化を全反射を使って行う。|
 
 ***ORGX, ORGY [#d57ffb2d]
 サンプル-ディテクタ間で最短の距離になるディテクタ上の座標を指定(ディテクタ上のピクセル位置で)。
 >&color(red){ディテクタに対する入射ビーム位置とは違う!(理想的には同じだが)};
 デフォルトの値は無いので、ユーザがきちんと見積もること、とカブシュが言っていました。え?いや、マニュアルの中ですよ。~
 !!この値はかなりインデックスを左右します。きっちりと見積もりましょう。
  JOB XYCORR, IDXREF
 
 ***DETECTOR_DISTANCE [#t93a499c]
 符号付きのカメラ長。なぜ符合がつくのでしょうか?というわけで、付録のDCSをご覧ください。
  JOB IDXREF
 ***ROTATION_AXIS [#kc7dedec]
 結晶の回転軸を方向余弦(direction cosine)であらわしたもの。方向余弦って難しそうやけど、定義は簡単で~
 >直行座標系X,Y,Zで原点からある方向に向いた直線が
 + X軸の正の方向と作る角をa
 + Y軸の正の方向と作る角をb
 + Z軸の正の方向と作る角をc
 とすると、その方向余弦(L,M,N)は~
 + L=cos(a)
 + M=cos(b)
 + N=cos(c)~
 とあらわせる。と。
 
 たいていのビームラインではX軸上に回転軸が乗っていると思いますので、それに限って説明しまする。
 - BL41XUの場合
 このビームラインの場合は、+Xの方向に回転軸があるのでY軸、Z軸とは回転軸は直交しています。
  M=cos(90)=0.0
  N=cos(90)=0.0
 であります。
  L=cos(0) or cos(180) = 1 or -1
 ということであります。
 で、この正負を判断するのが、
 >ある軸を&color(red){+方向};に見た場合に&color(red){時計回り(Clockwise)};であれば&color(red){+};という定義のようです。~
 
 これにのっとって考えてみると、BL41XUはサンプルマウントポジション(かっこいいな・・・)から見た回転軸は時計と反対周りに回ってますので、
  (-1 0 0)
 ということから逆に考えてみると、&size(20){回転軸に右ねじを置いてみて回転と同じ方向に回してみたらニューンとそのねじが進む軸と、この場合、X軸がなす角度であるといえる};よね。
 ***INCIDENT_BEAM_DIRECTION= [#ib5e1f44]
 光源から結晶の向きでのDCSにのっとった、ベクトルを規定。長さはXDS中で規格化されるので適当でいいよ。データプロセスの際にも精密化されまする。デフォルトの値はXDS.INPのテンプレートをご覧ください。
  JOB: IDXREF
 ***FRACTION_OF_POLARIZATION [#h69c6cca]
 ダイレクトビームの偏光を縦横比(0.0<value<1.0)で指定。入力しないと偏光が無いことになるよ(0.5になる)。SR実験ではたいてい0.90だそうだ。&color(red){CORRECTをひたすら流したら、ちゃんと精密化をやってくれますよ!};
 ***POLARIZATION_PLANE_NORMAL [#y501c71a]
 偏光面をDCSで規定。
 -無偏光の場合
  FRACTION_OF_POLARIZATION=0.5
  POLARIZATION_PLANE_NORMAL=どこでも
 - モノクロに偏光ビーム
  FRACTION_OF_POLARIZATION=[COS(2*thetaM)**2/[1+(COS(2*thetaM))**2]
  POLARIZATION_PLANE_NORMAL=モノクロの反射面に垂直な成分
 - X,Z面で0.9の確率で入射ビームの電場ベクトルがある
  POLARIZATION_PLANE_NORMAL=0 1 0
  FRACTION_OF_POLARIZATION = 0.90
 
 ***AIR [#ve597c4b]
 空気の吸収でロスっている回折強度を補正するパラメータ。
  Icorr=I*exp(|AIR*F*(1/cos(oblique angle)-1))~
 
  JOB: CORRECT
 ***STARTING_ANGLES_OF_SPINDLE_ROTATION [#x2fa064c]
 三つの値を入力する。最初、最後、増分を入力。ストラテジを立てるときに必要な結晶、回転角の指定。
 例)0 180 10~
 180度の固定総振動幅でデータをとる場合、0, 10, 20,.....,180で撮った場合にデータの完全性がイカバカリカ?を見積もってくれる。
  JOB: XPLAN
 *** NAME_TEMPLATE_OF_DATA_FRAMES [#saa86c6e]
 ファイル名、フォーマット、アクセスモードを指定。ファイル名は?を入れたところに数字を入れて読んでくれる。圧縮ファイル(対応フォーマット:.Z, .z, .gz, bz2)は自動認識で処理してくれるっす。&color(red){フォーマットの拡張子には圧縮ファイルの拡張子は入れたらだめよ。};~
 ''注意''~
 50文字以上のファイルは読み込まないので、パスとかが長いんやったらリンクでも引っ張ってくれと。
  ln -s /home/hoge/page/pige/image/ ./Images/~
 とやれば少しは楽になるだろ?
 
 アクセスとフォーマットについてはXDSにやらせてみて、無理やったらいろいろと値を変えるという方向でやってみてください。アクセスモードはたいていの場合、&color(blue){SEQUENTIAL};でございます。~
  JOB: INIT, COLSPOT, IDXREF, INTEGRATE
 ***TOTAL_SPINDLE_ROTATION_RANGES=30 120 15 [#pe1b3316]
 ***STARTING_ANGLES_OF_SPINDLE_ROTATION=0 180 10 [#g13073b8]
 これらを組み合わせた場合、スタートのΦを0,10,20,.....,180としたとき、トータルの回転角度を30,45,60,....,120にした場合の完全性を計算してくれる。
 
 ***REFERENCE_DATA_SET= [#lbb114b7]
 前にとったデータがあれば、XPLAN, CORRECTに使用することが出来る(結晶は同じタイプのものね)。~
 >''XPLAN'' どんなプランが良いか前のデータを見ながら教えてくれるよ
 >''CORRECT'' Local scalingや現データとの比較をXDS-ASCIIフォーマットで記述してくれる。
  JOB: XPLAN, CORRECT
 
 ***DATA_RANGE [#o0a7a815]
 最初と最後のイメージ番号。ここで指定した番号がファイル名のテンプレートの?マークに入れられるよ。
 
 ***BACKGROUND_RANGE=[#da88f863]
 初期のバックグラウンドを決定するためのイメージ。このパラメータが無ければ「最初の角度」から5度の振動領域分のデータが勝手に選ばれる。
  JOB: INIT
 
 ***SPOT_RANGE= [#u9adaea0]
 COLPROF(ピークサーチ)で使用するイメージ領域を指定。10枚以上を指定してください。スポット情報は「SPOT.XDS」にセーブされます(VIEWコマンドで確認可能)。~
 i) MINUTE>=0の時~
 SPOT_RANGE=BACKGROUND_RANGE~
 ii) MINUTE<0~
 SPORT_RANGE=DATA_RANGE~
 このパラメータはIDXREFステップで使用する反射をSPOT.XDSファイルから選択するのに使用する。IDXREFでSPOT.XDS中の全ての反射を使用して失敗した場合、編集すると良い。~
 COLSPOTは何度もやる必要が無い(後述しております)。~
 例)
 SPOT_RANGE=1 10~
 SPOT_RANGE=21 30~
 SPOT_RANGE=45 60~
 SPOT_RANGE=70 71~
 この4行の指定で1-10, 21-30, 45-60, 70-71のイメージ全てでピークサーチ(COLSPOT)を行います。見つかったピークはSPOT.XDSに書き込まれる。SPOT.XDSに書き込まれたピークはIDXREF(indexing)ステップで使用される。~
 という流れ。~
 結晶が滑っていない(動いていない)のであれば、全ての振動領域をカバーするようにを使用した方が信頼度は高いのでなるべくたくさんのイメージを使いましょう。~
 ではさらに具体的に~
 1-10, 21-30, 45-60, 70-71のイメージを使ってピークサーチ(COLSPOT)後、インデックス(IDXREF)してみたけどうまいこといかんかった。なので、1-10をはずしたい(ピンの台で氷が解けたかもしれん)場合。~
 1) JOB=パラメータからCOLSPOTをはずす(1-10のピークも含まれてはいるが既にSPOT.XDSにピーク情報はある!)~
 2) JOB=パラメータにIDXREFを入れる(既に入っているか?)~
 3) SPOT_RANGE=パラメータから "1 10" を抜く。これによりSPOT.XDS中の1-10のピークを抜いてIDXREFをやってくれる~
 ※注意:COLSPOT(ピークサーチ)プロセスをやり直すことによってSPOT.XDSは上書きされてしまいます。何度もIDXREF(indexing)をやり直したい場合は時間的効率を考えて最初に多目のイメージでCOLSPOTをやっておいて、その後、IDXREFをやり時にはSPOT_RANGE=パラメータを編集して最初に集めておいたピークから「選択する」感覚で処理をすると良いかと思います。COLSPOTプロセスは処理初期段階で最も時間がかかるので。~
 
  JOB: COLSPOT, IDXREF
 *** VALUE_RANGE_FOR_TRUSTED_DETECTOR_PIXELS=&color(red){(これもよくわからんのでちゃんと読み直します)}; [#bb6e74fb]
 DEFPIXで使用される⇒Shaded Regionの決定~
 DEFPIX後、"ABS.PCK"というコントロールイメージが出力される。コントロールイメージはShaded領域が10000程度。Unshaded領域はshaded領域よりも低い値を持っている。~
 指定した範囲に無ければその領域は「信頼度が低い」と判断され、"BKGPIK.PCK"中で「-3」の値を持たされる。これらのフラッグが立った場合、「trusted detector region」からはずされます。~
 BKGPIX.PCKはVIEWプログラムで検閲しましょう(除外されたエリアが正しいかどうかを)。おかしなShaded RegionがBKGPIX.PCKに含まれている場合、JOB=DEFPIXをいじって(6000-30000⇒7000-30000とか)何度もやってみましょう。~
 与えてあげる値の範囲が狭い場合、使える領域のデータも飛ばしてしまうので気をつけましょう。~
  JOB: DEFPIX~
 *** INCLUDE_RESOLUTION_RANGE= [#ybf27d94]
 使用する分解能を指定します。この範囲外であれば、範囲外のDetector pixelはUntrusted Regionとして認識されます(INTEGRATEやCORRECTにも使われないです)。~
 ちゃんと合っているかどうかはBKGPIX.PCKで「-3」が入っている部分が正しいのかどうかをきっちりと各自でチェックすることを忘れないようにしましょう。~
 CORRECTオプションでも使用する。XDS_ASCII_HKLに入っている反射を削るのに便利です。この場合、INCLUDE_RESOLUTION_RANGEを修正してCORRECTを流しましょう。high resolutionの方に0.0を入れたら全てを使用するという認識をします。
  JOB: DEFPIX
 ***さしあたり以上です。適宜更新予定。 [#i33a9be8]