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

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)
    です。