exp のバックアップ(No.4)

ANAPAW の 基本的な使いかた

  1. analogin rips <enter>

    ANAPAW を起動させるためのおまじない。実験モードでは、analogin とだけ入力すると名前を聞かれるので、rips と答える。引数に rips を指定してもよい。

  2. anapaw <enter>

    ANAPAW を起動させるコマンド。起動すると同時に、ワーキングディレクトリに移動します。

  3. book [ana file] <enter>
    解析の順番やイベントの取捨選択、ヒストグラムの定義を行います。[ana file] には、例えば、ana/shift.ana, ana/chk.ana などが入ります。
  4. ana/loop [data file] <enter>
    解析をするためにデータを指定します。[data file] が省略された場合にはオンラインのデータを解析します。
  5. start <enter>
  6. <enter> ( to stop )
    解析を始めます。解析を中断する場合には <enter> を押します。再開したい場合には、再び、start <enter> を実行します。
  7. i [p]<enter>
    ヒストグラムのリストを表示します。リストが長い場合には、[p] というオプションを付けることで、細切れにしてリストを表示させることができます。
  8. ht 101 <enter>
  9. ht 102 <enter>
    ht に続けて、ヒストグラムの番号を指定することで、ヒストグラムを表示できます。ヒストグラムを表示するコマンドは他に、次のヒストグラムを表示する hn, 前のヒストグラムを表示する hb などがあります。
  10. pson [filename] <enter>
  11. psoff
    ヒストグラムを画像としてファイルに保存したい場合に使います。pson でファイルを開いて、psoff でファイルを閉じます。pson と psoff の間に表示したヒストグラムが全てファイルに保存されます。psoff をわすれるとうまく保存されないので、必ず実行すること。
  12. sh lp [filename]
    sh コマンドは続けてシェルのコマンド入力することで、そのコマンドを実行できます。単に sh とうつと、ANAPAW が中断され、シェルが起動します。

ANAPAW for RDF & RIDF

BABIRL でのデータ収集に対応するため、ANAPAW を改造しました。それに伴っていくつか変更点があります。ここでは、変更した点やポリシーなどをまとめておきます。
データフォーマットについては、以下のページを参考にしてください。

データ解析の基本的な流れとANAPAW の役割

(かきかけ)

  1. バイナリのデータを数値に置き換える
  2. 数値データからエネルギーや時間差などの物理量を計算する
  3. ヒストグラムに詰めて見る
  4. ヒストグラムを解析して欲しい物理量を抜き出す。(2からくり返し)
    ANAPAW はこの解析の流れを提供するフレームワークのひとつだと思ってください。
    ANAPAWを使って解析をしたい人達はこの大まかな流れに対応する関数を準備するだけでよいです。それでは細かい話に移りたいと思います。

バイナリデータから数値データヘの変換

データの識別子
バイナリデータを解析して、各検出器群のあるチャンネルのADCやTDCの値を抜き出します。バイナリデータの中でひとつのデータを特定するためには、segment id, geometry (virtual station number), channelという3つの数値が必要になります。(コインシデンスレジスタなどはこの限りではありませんが。)これらの数値のうち、segment id, geometry はデータ収集システムで定義されています。データを特定するこれらの数値をわかりやすくするために、マッピングを行います。マッピングでは、category id, detector id, data type という識別子に変換を行います。
バイナリデータの解析とマッピングは、データ収集に使用したモジュール毎に準備された、dec_xxx というルーチンをつかって行います。この関数自体は、実験毎に異なることはほとんどありませんが、どう呼び出すかということを決める必要があります。
この呼び出しを決めているルーチンが、sortrawdata です。
sortrawdata 関数を呼び出すことによって、rawdata という配列にデータが格納されます。rawdata の参照のしかたは、

 rawdata(idata,detid,catid)
  idata : data type
  detid : detector id
  catid : category id

です。
直接参照することも可能ですが、補助的に、hitDet(ihit,catid) という配列が準備されています。 hitDet には、そのイベントでデータが存在する detector の id が格納されています。どれだけの検出器がなったかは nHitDet(catid) という配列を参照することで知ることができます。つまり、

catid = 1
do id=1,10
  Araw = rawdata(1,id,catid)
enddo

とするかわりに

catid = 1
do ihit=1,nHitDet(catid)
  id = hitDet(ihit,catid)
  Araw = rawdata(1,id,catid)
enddo

として参照することが可能になります。これによって、全ての detector id をチェックする必要がなくなりますので、解析速度もぐんとアップします (^^)

マッピング
segment id, geometry, channel によってデータを特定し、それがどの category のどの detector のどの data type に対応するかを ANAPAW に教えます。この書き方は以下のとおりです。

category detector segment1 geometry1 channel1 segment2 geometry2 channel2 ...

category id, detector id はすぐにわかると思います。data type は segment id, geometry, channel が書いてある順番に依存します。一組目が data type = 1, 二組目が data type = 2 のようになります。つまり、グループが何列目にあるかということが data type の番号に対応します。

dec_xxx 自体はなくなっていませんがその関数を呼び出している部分が異なります。この過程に関連するルーチンは以下のとおりです。

  • loadmapper (mapper.f)
  • initrawdata (sortrawdata.f)
  • cleanuprawdata (sortrawdata.f)
  • sortrawdata (sortrawdata.f)
  • decxxx (decxxx.f)
    また、関連する配列は
  • rawdata(idata,detid,catid)
    です。