ファイルフォーマット

Cosmo-Zのデータファイルは図1に示すような構造になっています。

ファイルにはファイルヘッダと呼ばれるヘッダ構造があり、その後ろにチャンクと呼ばれるデータの塊が複数個並んでいます。

図1 Cosmo-Zのデータファイル構造

ファイルヘッダ

ファイルヘッダは448バイト固定(平成29年1月時点)であり、図2のような情報が格納されています。複数バイトにまたがる値はリトルエンディアンで格納されます。

図2 ファイルヘッダの構造

  • MagicNumber・・・ファイルの種類を表す
  • 0x20c5・・生データ
  • 0x21c5・・低レートパルスデータ(イベント波形データ)
  • n_boards・・ボードの数。ADCチャネル数÷8。拡張ボード3枚挿しの場合は4
  • start_unixtime・・計測開始時刻がtime_t型で入る
  • end_unixtime・・計測終了時刻がtime_t型で入る
  • chmask・・どのチャネルをキャプチャしたかがビットマスクで入る
  • iteration・・チャンクの数を表す。現時点では1に固定
  • triginfo・・TRIGINFOレジスタの設定値が格納される
  • adccommand・・ADCCOMMANDレジスタの設定値が格納される
  • original_name・・最初に設定したファイル名が設定される。ヌル終端文字列
             文字コードはSJISまたはUTF-8
  • comment・・ファイルに付与されたコメント
           文字コードはSJISまたはUTF-8
  • chx_adc_offset・・ADCの値に加算されたオフセット値(通常は0)
  • chx_adc_mult・・ADCの値に乗算されたゲイン補正値(通常は0)
    固定小数点で、xx.yy と表現される。xx、yyともに8bit
  • chx_adc_delay・・そのチャネルに追加された遅延のクロック数
  • chx_adc_trig・・そのチャネルのトリガ情報

 

チャンク構造(生データ)

生データが格納されたチャンクの構造は図3のようになっています。

図3 チャンクの構造(生データ)

  • MagicNumber・・0xc0c5
  • time48_high,middle,low・・・計測開始時刻を、FPGA起動時から10ns単位で表したタイムスタンプ
  • length・・データ数。実際のデータサイズは、length×チャネル数×2バイトとなる。
  • xadc・・計測開始時のFPGAの電圧や温度など
  • chx_pedestal・・各チャネルの値の最頻値
  • gps_time、gps_10ns、gps_maxcount・・・計測開始時のGPS時刻情報

 

計測データは16bitで表現され、各チャネルごとに256ワードずつ記録されます。

例えば、CH1,2,7を記録した場合、図4のような構造で記録されます。

図4 生データの構造(CH1,2,7を計測の場合)

 

チャンクヘッダ(低レートパルス/イベント計測モード)

低レートパルスのデータは、1つのチャンクに数多くの波形データが含まれています。チャンクヘッダは図5のようになっています。

図5 生データの構造(CH1,2,7を計測の場合)

  • MagicNumber・・0xc0c5
  • time48_high,middle,low・・・計測開始時刻を、FPGA起動時から10ns単位で表したタイムスタンプ
  • length・・データ長。
  • xadc・・計測開始時のFPGAの電圧や温度など
  • chx_pedestal・・各チャネルの値の最頻値
  • min_y,max_y,max_x・・・全てのイベント波形を解析した結果のx,yの最大値、最小値

 

オフセット128以降には、トリガ発生時の波形が格納されています。イベントの数と1つのイベントのデータ長は可変長です。

各イベントのデータには24バイトのヘッダが付き、図6のような構造をしています。

図6 イベントデータの構造

 

各データの意味を図7に示します。このような波形が入力され、トリガが発生したとき、Cosmo-Zはトリガ発生時点よりも前(プレトリガ)の時刻から波形を記録します。

ペデスタルレベルとは、イベントが発生していない状態でのADCの値を示しています。これは波形のヒストグラムを測り、最頻値から求めています。

イベントが発生すると、トリガ長、トリガ期間中の波形の総和=面積、データ長、最大値などを記録します。

図7 イベントデータの構造

 

データは可変長で、データ長はオフセット2に書かれています。1つ1つのデータは16bit幅で、リトルエンディアンで、LSB方向に詰められています。