CaseInfoとそのフォーマットについて#

last update

19th May 2023

Status

作成中

概要#

空蟬は、TrigNETがDAQミドルウェアを通して出力するイベントデータを利用し、中性子データ(イベント)をTrigNETに入力されたシグナルの情報の組み合わせ(ケース)により分類し、ケースごとに個別のヒストグラムとして取り出す機能(フィルタリング)を持つ。このケースを定義するために必要な情報をXML形式で記述しており、それを”Case Info”と定義している。本稿ではCaseInfoの役割とそのフォーマットについて記述する。

イベント識別するための条件#

  1. 測定時刻による切り出し

  • 測定開始を0としたときの経過時間(相対時刻)

  • 装置時刻(絶対時刻)

    • フィルター設定時のみ有効

    • T0に使用されているMLF基本時刻(2008/1/1を0とするClock)での指定

    • 年月日時刻による指定

  1. TOFの指定によるイベントの分割

  2. TrigNETのイベントに記載された情報による分別(フィルタリング)

  • TrigNETのイベントの値(DIO状態やアナログ値)に応じてフィルタリングする

  1. TrigNETのイベントをトリガーとするカウンター

  • カウント数を内部で持っていて、指定したイベントがあればカウントし、そのカウント数に応じてフィルタリングする

TrigNETイベントを利用したフィルタリング#

  1. フィルタリングするための条件ファイル(CaseInfoファイル)の読み込み

  2. TrigNETイベントファイルの読み込みと解析

  3. 中性子イベントの読み込みとフィルタリング

語句の定義#

Case#

  • フィルター及びカウンター、測定時間などによって識別されるパターンをCaseと呼んでいる

  • 「Case=0は不使用」と定義する

    • よって、使用するCaseは必ず0以上の整数。

  • Caseの識別を行うための条件

    • フィルター

      • Trignetイベントデータによる分別

      • TOFの領域による分別

      • 時刻情報による分別

    • カウンター

      • Trignetデータを解析し、それをカウンターとして、その値で分別。

    • 時間

      • イベント内部の時間情報を利用して分割

Caseテーブル#

中性子イベントをTOFで分けるために使用するテーブルをCaseテーブルと呼ぶ。フレームごとに、CaseId, TOF, CaseId, TOF,… という情報を収めたもの。

DIOのRiseとDrop、UpとDown#

TrigNETに入力可能なシグナルにTTLがある。これは0 Vから5.0V の間の電圧で閾値(おそらく1.5V程度)を超えると、シグナルが入ったとみなし、逆に閾値を下回るとシグナルが消えたとみなす。 本稿では、このTTLのシグナル入力をDIO(DigitalIO)と呼び、閾値を超える挙動をRise, 下回る挙動をDrop、超えている状態をUp、下がっている状態をDownとする。

TrigNET+CaseInfoファイル具体例#

本稿では、TrigNETと共に使用するCaseInfoの例を示す。

フィルター設定例:シグナル状態で識別

TrigNETに入ってきたシグナルの状態(TTL, 電圧)によって、Caseを決める

カウンター設定例:単純Increment

TrigNETに入ってきたDIOシグナル(Rise, Drop)をカウンターとして、そのカウンターに定数をかけた値に対してCaseを決定する方式

カウンター設定例:サイクリックIncrement

こちらもTrigNETに入ってきたDIOシグナル(Rise, Drop)をカウンターとして、そのカウンターに定数をかけた値に対してCaseを決定するが、こちらは計算値が予め設定した領域から外れた場合に、その範囲内の値に変換(端点の値からの差分)しCaseを決定する方式

カウンター設定例:仮想的時間原点

TrigNETのDIOのシグナルを時間分解における仮想的な原点とし、その原点からの秒数によって時間分解しCaseに分類する方式

カウンター設定例:仮想的時間原点+フレーム厳密対応

TrigNETのDIOのシグナルを時間分解における仮想的な原点のトリガーとし、同時に施設のMLF基準トリガー(常時25Hz)のDIO入力をカウンターとすることで、その原点から厳密なフレーム単位の時間分解を可能とする方式

カウンター設定例:ロータリーエンコーダ+DAQコンポーネント

ロータリーエンコーダのA相B相シグナルをTrigNETに入力し、TrigNET用DAQミドルウェアコンポーネントにて処理されたイベントに対応した方式

以下に上記の場合の具体的なCase Info(XMLによって記述)の例と説明を述べる。

フィルター設定例:シグナル状態で識別#

TrigNETに入ってきたシグナルの状態(TTL, 電圧)によって、Caseが決まる方式である。

 1<caseInfo>
 2    <caseAmbiguity>1</caseAmbiguity>
 3    <initialCase>0</initialCase>
 4    <filters n="2">
 5        <filter i="0" case="1">
 6            <signal cond="AND" n="2">
 7                <trignet i="0" index="0" io="DIO1R" type="DIO">*,*,1,0,*,*,*,*</trignet>
 8                <trignet i="1" index="1" io="DIO2R" type="LADC1">0,1000000</trignet>
 9            </signal>
10            <timeRange type="DATE">2012,4,12,2,45,0,0.0,2012,4,12,12,40,0,0.0</timeRange>
11            <tofRange>500.0,20000.0</tofRange>
12        </filter>
13        <filter i="1" case="2">
14            <signal cond="OR" n="1">
15                <trignet i="0" index="0" io="DIO1R" type="DIO">*,*,0,0,*,*,*,*</trignet>
16                <trignet i="1" index="1" io="DIO2R" type="LADC1">1000000,9000000</trignet>
17            </signal>
18            <timeRange type="MLF">345313,4313145</timeRange>
19            <tofRange/>
20        </filter>
21    </filters>
22    <counters/>
23    <timeSlicing/>
24</caseInfo>

このCaseInfoに置いて、Case 1 の条件を以下のように定めている(5行目〜12行目)。

  1. TrigNETのDIO1のRiseで生じるシグナルのうち、DIO3がUp、DIO4がDownの時、(7行目)

  2. DIO2の立ち上がり時にLADC1が0〜1000000の間(8行目)

  3. 時刻が2012/4/12 2:45:00から2012/4/12 12:40:00までの(10行目)

  4. TOFが500から20000の間(11行目)

また、Case 2 の条件を以下のようにしている(13行目〜20行目)。

  1. TrigNETのDIO1のRiseで生じるシグナルのうち、DIO3、DIO4がDownの時(15行目)

  2. DIO2の立ち上がり時にLADC1が1000000から9000000の間(16行目)

  3. MLF標準Clockで345313から4313145の間(18行目)

カウンター設定例:単純Increment型#

TrigNETに入ってきたDIOシグナル(Rise, Drop)をカウンターとして、そのカウンターに定数をかけた値に対してCaseを決定する方式である。

 1<caseInfo>
 2    <caseAmbiguity>0</caseAmbiguity>
 3    <initialCase>1</initialCase>
 4    <counters n=“1">
 5        <counter i="1" type="NORMAL">
 6            <signal n="2">
 7                <trignet i="0" index="0" io="DIO1R" title="Counter1" attr="1.0"/>
 8                <trignet i="1" index="0" io="DIO2R" title="Counter2" attr="-1.0"/>
 9            </signal>
10            <conversionVal>1.0</conversionVal>
11            <originalVal unit="Counts">0.0</originalVal>
12            <conditions type="1" n="3">
13                <cond i="0" case="1">1.0,2.5</cond>
14                <cond i="1" case="2">2.5,14.0</cond>
15                <cond i="2" case="3">14.0,20.0</cond>
16            </conditions>
17        </counter>
18    </counters>
19    <timeSlicing/>
20</caseInfo>

このCaseInfoではカウンターとしての使用方法の例を示している。

カウンター方式では、TrigNETへのシグナルによって加算される内部カウンターがあり、これとconversionValとoriginalValを利用して得られた値( Val = <originalVal> + <conversionVal> × <内部カウンター>)に対して、Caseを割り当てることになる。

この例では、

  • DIO1にシグナルが来た(Rise)時に内部カウンターに1.0を加算 ( 7行目 )

  • DIO2にシグナルが来た(Rise)時に内部カウンターに-1.0を加算( 8行目 )

と定義し、値 Val = 0.0(originalVal) + 1.0(conversionVal) × 内部カウンター が、

  • 1.0 <= Val < 2.5 なら Case 1 ( 13行目 )

  • 2.5 <= Val < 14.0 なら Case 2 ( 14行目 )

  • 14.0 <= Val < 20.0 なら Case 3 ( 15行目 )

として識別 ( 12行目: <conditions>の属性 typeが1 ) される。値がそれ以外の値を取った時はイベントは無視される。

カウンター設定例:サイクリックIncrement型#

こちらもTrigNETに入ってきたDIOシグナル(Rise, Drop)をカウンターとして、そのカウンターに定数をかけた値に対してCaseを決定するが、こちらは計算値が予め設定した領域から外れた場合に、その範囲内の値に変換(端点の値からの差分)しCaseを決定する方式である。

 1<caseInfo>
 2    <caseAmbiguity>0</caseAmbiguity>
 3    <initialCase>1</initialCase>
 4    <counters n=“1">
 5        <counter i="1" type="NORMAL">
 6            <signal n="1">
 7                <trignet i="0" index="0" io="DIO1R" title="Counter1" attr="1.0"/>
 8            </signal>
 9            <conversionVal>2.0</conversionVal>
10            <originalVal unit="Counts">100.0</originalVal>
11            <cyclicRange begin="0.0" end="360.0"/>
12            <conditions type="2">
13                <cond>0.0,360.0,2.0</cond>
14            </conditions>
15        </counter>
16    </counters>
17    <timeSlicing/>
18</caseInfo>

この例の場合、

  • DIO1にシグナルが来た(Rise)ら内部カウンターに1.0加算 ( 7行目 )

  • 値 Val = 100.0 + 2.0 × <内部カウンター>

と定義されているが、さらに<cyclicRange>( 11行目 )により

  • 値が 0.0から360.0 の間から外れた時は360.0 = 0.0 とみなす

ことになる。すなわち、Caseに分類に使う値Valはサイクリックに扱われる。

また、 <conditions>の属性 typeが2 であるので、そのコンテンツ <cond>0.0,359.0,2.0</cond> から

  • case 1 : 0.0-2.0

  • case 2 : 2.0-4.0

  • case 178 : 356.0-358.0

  • case 179 : 358.0-360.0

という分類となる。

カウンター設定例:仮想的時間原点#

TrigNETのDIOのシグナルを時間分解における仮想的な原点とし、その原点からの秒数によって時間分解しCaseに分類する方式である。時間分解の一つであるが、カウンターのシグナルを原点とみなす設定なので、カウンター設定の一つとしている。 またこの方法では、厳密に1フレーム単位で抜き出すのは難しい(1フレームの時間が一定ではないため)ので注意すること。フレーム単位で取り出す場合は、後述のカウンター設定例4の方法を取ること。

 1<caseInfo>
 2  <caseAmbiguity>2</caseAmbiguity>
 3  <initialCase>0</initialCase>
 4  <filters/>
 5  <counters n="1">
 6    <counter i="0" type="NORMAL">
 7      <signal n="1" cnd="AND">
 8        <trignet i="0" index="0" io="DIO2R" title="Counter" attr="1.0"/>
 9      </signal>
10      <conversionVal>1.0</conversionVal>
11      <originVal unit="Clock" priority="case">0.0</originVal>
12      <cyclicRegion/>
13      <conditions type="1">
14        <cond case="1">0.0,1.0</cond>
15        <cond case="2">1.0,2.0</cond>
16        <cond case="3">2.0,3.0</cond>
17        <cond case="4">3.0,4.0</cond>
18        <cond case="5">4.0,5.0</cond>
19        <cond case="6">5.0,6.0</cond>
20        <cond case="7">6.0,7.0</cond>
21        <cond case="8">7.0,8.0</cond>
22        <cond case="9">8.0,9.0</cond>
23        <cond case="10">9.0,15.0</cond>
24      </conditions>
25    </counter>
26  </counters>
27</caseInfo>

この例の場合、DIO2のRiseイベントをカウンターとして拾い、この時刻を時間原点とし、その原点から1秒ごとに9秒後までCaseに分けるものである。

この設定で重要なのは

<originVal unit="Clock" priority="case">0.0</originVal>
<cyclicRegion/>

である。

  • <originVal>のunit属性値を、通常”Counts”であるのを”Clock”とすること

  • <cyclicRegion>を空にすること

  • <condition><cond>でCaseを指定するが、単位は[sec]であること

  • <originVal>のpriorigy属性値を”case”と設定すると、<condition>で指定した範囲内に再びカウンター用イベントが来ても無視する(Case分類を優先する)。不要なら外す。

カウンター設定例:仮想的時間原点+フレーム厳密対応#

TrigNETのDIOのシグナルを時間分解における仮想的な原点のトリガーとし、同時に施設のMLF基準トリガー(常時25Hz)のDIO入力をカウンターとすることで、その原点から厳密なフレーム単位の時間分解を可能とする方式である。

 1<caseInfo>
 2    <caseAmbiguity>3</caseAmbiguity>
 3    <initialCase>0</initialCase>
 4    <filters/>
 5    <counters n="1">
 6        <counter i="0" type="KICKCOUNT">
 7            <signal n="2" cnd="OR">
 8                <trignet i="0" index="0" io="DIO1R" title="Kicker" attr="1.0"/>
 9                <trignet i="1" index="0" io="DIO2R" title="Counter" attr="1.0"/>
10            </signal>
11            <ignoreKickerInCondRange>Y</ignoreKickerInCondRange>
12            <conversionVal>1.0</conversionVal>
13            <originVal unit="Counts">0.0</originVal>
14            <cyclicRegion/>
15            <conditions type="2">
16                <cond>-0.5,11.5,1.0</cond>
17            </conditions>
18        </counter>
19    </counters>
20</caseInfo>

この設定で重要な点は

  1. <counter>のtype属性に”KICKCOUNT”を与える。

<counter i="0" type="KICKCOUNT">
  1. <counter>/<signal>には二つの<trignet>があり、片方は仮想キッカー、もう片方はカウンターであり、両者の区別はtitle属性で行う。

<trignet i="0" index="0" io="DIO1R" title="Kicker" attr="1.0"/>
<trignet i="1" index="0" io="DIO2R" title="Counter" attr="1.0"/>

なお、<trignet>のtitle属性値は以下のように与え、役割を指定すること。

役割

title

仮想トリガー

“Kicker”

カウンター

“Couinter”

カウンター設置例:ロータリーエンコーダ+DAQコンポーネント#

ロータリーエンコーダのA相B相シグナルをTrigNETに入力し、TrigNET用DAQミドルウェアコンポーネントにて処理されたイベントに対応した方式である。

この新しいモジュールは、連続回転測定などのエンコーダのシグナルをLineDriver経由でTrigNETで取り込む際の

  • 多く発生するノイズの低減

  • フレームごとの角度情報(A相B相から算出)がわからない

の点を改善するため、A相B相から角度情報を算出し、LADC1イベントとして保存するDAQミドルウェアのコンポーネントを使用する場合に用いるやり方である。

このデータを処理する場合のCaseInfoは以下のようになる。

 1<caseInfo>
 2    <counters n="1">
 3        <counter i="0" type="ABC">
 4            <signal n="1">
 5                <trignet i="0" io="DIO1R" type="LADC1" />
 6            </signal>
 7            <conversionVal>0.002866242038</conversionVal>
 8            <originVal unit="Degree">-90.00</originVal>
 9            <conditions type="2">
10                <cond>-90.0,90.0,1.0</cond>
11            </conditions>
12        </counter>
13    </counters>
14</caseInfo>

ここで重要な点は以下の通り。あとは通常のカウンターの動作と同じ。

  • <counter> の属性typeが”ABC”(”ABP”ではなく)

  • <counter>/<signal>/<trignet>の数は一つだけ(これを角度情報イベントとして取り込む)

  • <counter>/<signal>/<trignet>

  • 属性ioはA相を示す値であること

  • 属性typeは”LADC1”であること

挙動としては以下の通り。

  • conversionVal=0.002866242038、原点(originalVal)を -90度とし、

  • これからCase識別用の値(Val)を計算する( Val = conversionVal*counts + originalVal )。

  • -90.0から+90.0を1.0刻みで分けて、Valの値が-90.0〜-89.0の時をCase 1, -89.0〜-88.0をCase 2, …と割りあてる。

単純時間分解の例#

特にTrigNETなどを使用せずとも、単純な時間分解だけでもCaseInfoは使用できる。以下のように timeSlicing を利用する。

 1<caseInfo>
 2    <caseAmbiguity>0</caseAmbiguity>
 3    <initialCase>0</initialCase>
 4    <filters/>
 5    <counters/>
 6    <timeSlicing>
 7        <time caseId="1">0.0,1234.5</time>
 8        <time caseId="2">1500.0,2345.6</time>
 9        <time caseId="3">2445.6,3000.0</time>
10    </timeSlicing>
11</caseInfo>
  • time タグで、測定開始からの秒数(実数)で開始と終了を示す

  • フォーマットは、<開始[秒]>, <終了[秒]>

  • time タグの属性値 caseId でその開始・終了範囲内のデータのCaseIdを決める

フォーマットの詳細#

これらの情報を収めるXMLタグの詳細な情報を以下に記す。

caseInfo#

CaseInfo内の全てのエレメントの親である。

名前

意味・説明

属性

無し

親エレメント

なし

子エレメント

filters

caseAmbiguity#

一つのフレームの中に複数のCaseが入っていた場合の処理(主にノイズ対策)

名前

意味・説明

属性

無し

親エレメント

caseInfo

子エレメント

無し

コンテンツ

整数 0

全てを採用

整数 1

一つのCaseのみ以外は不採用

整数 2

多数決でCaseを一つに絞る

整数 3

最初のCaseだけを採用する

initialCase#

最初のTrigNETのイベントが発生するまでのCaseを定義する。

名前

意味・説明

属性

無し

親エレメント

caseInfo

子エレメント

なし

コンテンツ

整数

Case Number

filters#

filterの親。

名前

意味・説明

属性

i

ナンバリング

n

子エレメント<filter>の個数

親エレメント

caseInfo

子エレメント

filter

コンテンツ

無し

filters/filter#

filterの条件の親。

名前

意味・説明

属性

i

インデックス

case

case番号

親エレメント

filters

子エレメント

signal

Trignetイベントの条件

timeRange

時刻の条件

tofRange

TOFの条件

コンテンツ

無し

signal#

複数のTrigNETやその他のシグナルを用いる場合のために用意。

名前

意味・説明

属性

n

内包するタグ(trignet)の数

cond

シグナル条件の”AND”/”OR”

親エレメント

filter or container

子エレメント

trignet

コンテンツ

trignet#

Trignetイベントの条件。

名前

意味・説明

属性

i

ナンバリング

index

複数のTrigNETを使用するときのID

io

イベントトリガーの種類:詳細は下記

type

イベント内容のタイプ:DIO, LADC1, LADC2, HADC

title

このシグナルの名前

attr

何か属性を加える場合に使用。現在は単純カウンター設定時に内部カウンターの増減値として、 もしくは、エンコーダとしての設定時にA相B相の識別に使用。

親エレメント

signal

子エレメント

なし

内容

イベント内容によって異なる

DIO1〜8

カンマ区切りの8つの整数(0か1)、Off=0,On=1,Free=それ以外、省略すると完全にフリー、 つまり状態がなんであれトリガーがあればよい

低速ADC1、低速ADC2

カンマ区切りの2つの実数(min,max)、仕様上、minは0が最小値、maxに最大値はないが、 max=0なら上限なし判定

高速ADC

カンマ区切りの4つの実数、minは0が最小値、maxは4095が最大値

ioの記述#

イベント発生トリガー

属性ioに使用できる文字

DIOの立ち上がり

DIO1R, DIO2R, DIO3R, DIO4R, DIO5R, DIO6R, DIO7R, DIO8R

DIOの下り

DIO1F, DIO2F, DIO3F, DIO4F, DIO5F, DIO6F, DIO7F, DIO8F

T0立ち上がり

T0R

TI(タイマ)

TI

ソフトウェア

SW

全て利用

ANY

timeRange#

時刻の条件、内容が2つの実数なら相対時間で、内容が14の実数なら絶対時刻で切り出すことを示す。

名前

意味・説明

属性

type

時刻の指定方法:0. 測定開始からの経過時間[秒]、1.MLF基準Clock、2.年月日時分秒方式

親エレメント

filter

子エレメント

なし

内容

切り出し時刻情報

カンマ区切りの2または14の実数 ( 例:2013年4月10日 5時21分32.54秒->”2013”,”4”,”10”,”5”,”13”,”21”,”32”,”0.54” )

tofRange#

TOFの条件。

名前

意味・説明

属性

なし

親エレメント

filter

子エレメント

なし

内容

切り出し時刻情報

カンマ区切りの2つの実数

counters#

counterの親。

名前

意味・説明

属性

n

子エレメント(counter)の個数

親エレメント

caseInfo

子エレメント

counter

内容

無し

counter#

counterの条件の親。

名前

意味・説明

属性

i

ナンバリング

type

カウンターとしてのタイプ (後述するテーブル参照)

親エレメント

counters

子エレメント

signal

Trignetイベントの条件(filterのものと同じ)

conversionVal

カウンターの変換用(積)

originalVal

カウンターの変換用(原点)

conditions

Case分別用情報

type属性

“NORMAL”

通常のシグナル

“ABP”

エンコーダー用

“ABC”

ロータリーエンコーダ+DAQコンポーネント用

“KICKCOUNT”

仮想的時間原点+フレーム厳密対応

ignoreKickerInCondRange#

仮想的な時間原点を示すキッカーが、Case分類に使用するCounter範囲内に記録されていた場合に無視する、という設定を制御する。

名前

意味・説明

属性

無し

親エレメント

counter

子エレメント

内容

Y or N

有効か無効

conversionVal#

Case識別に使用する値への変換用パラメータ。Case識別に用いる値は(originalVal) + (conversionVal) × カウント数。

名前

意味・説明

属性

無し

親エレメント

counter

子エレメント

内容

カウント数にかける値

実数

originalVal#

Case識別に使用する値への変換用パラメータ。Case識別に用いる値は(originalVal) + (conversionVal) × カウント数。

名前

意味・説明

属性

unit

単位。”Counts”や”Clock”(詳細は「TrigNET+Caseファイル使用例」参照)

親エレメント

counter

子エレメント

内容

カウント数に足す値

実数

cyclicRange#

Case識別に使用する値への変換用パラメータ。Case識別に用いる値が(begin)から(end)までサイクリックに扱われる。例えば角度で360度=0度とみなすのと同等。

名前

意味・説明

属性

begin

範囲の先頭

end

範囲の末尾

親エレメント

counter

子エレメント

内容

カウント数に足す値

実数

conditions#

カウント数の変換値をCaseに分類する情報

名前

意味・説明

属性

type

条件の与え方(1: condの羅列、2: start,end,step)

n

子エレメント(cond)の個数

親エレメント

counter

子エレメント

cond

cond#

カウント数の変換値をCaseに分類する情報

名前

意味・説明

属性

i

ナンバリング(conditionsのtype=1の時に使用)

case

このcondのCaseID(conditionsのtype=1の時に使用)

親エレメント

counter

子エレメント

内容

conditionsのtype=1の時:変換値の範囲

カンマ区切りの2実数

conditionsのtype=2の時:変換値の区切り情報

カンマ区切りの3実数(start, end, step)、CaseIDは先頭から1,2,…。

timeSlicing#

単純な時間分割用。

名前

意味・説明

属性

親エレメント

caseInfo

子エレメント

time

コンテンツ

無し

timeSlicing/time#

単純な時間分割用。caseIdとその時間領域を記述する。単位は測定開始を0秒とした秒数(実数)で示す。

名前

意味・説明

属性

caseId

このコンテンツが示す時間領域に対するCaseId

親エレメント

timeSlicing

子エレメント

なし

コンテンツ

<開始>,<終了>

測定開始を0秒、実数、カンマ区切り

Appendix#

TrigNETの出力イベントのフォーマット#

トリガーの記述

イベントのトリガー

SID[7:3](int)

DIO1立ち上がり

0

DIO2立ち上がり

1

DIO3立ち上がり

2

DIO4立ち上がり

3

DIO5立ち上がり

4

DIO6立ち上がり

5

DIO7立ち上がり

6

DIO8立ち上がり

7

T0立ち上がり

14

TIイベント(タイマ)

15

DIO1立ち下がり

16

DIO2立ち下がり

17

DIO3立ち下がり

18

DIO4立ち下がり

19

DIO5立ち下がり

20

DIO6立ち下がり

21

DIO7立ち下がり

22

DIO8立ち下がり

23

Softwareイベント

31

記録イベントの識別

イベントの内容のタイプ

SID[2:0](int)

適応できる条件

DIO1 - 8

1

On/Off * 8

低速ADC1

2

範囲

低速ADC2

3

範囲

高速ADC

4

ADC1とADC2のそれぞれに対する範囲

CaseTable技術仕様#

基本構造

vector< vector<UInt4> >

  • 一つのフレーム内のCase分け情報を一つのvector<UInt4>で表す。

  • CaseIDとTOFを交互に並べる。TOFはCaseの境界となるTOFを指定。

  • TOFの単位は40MHzのClockで指定し、CaseIDともどもUInt4で表現する。

注意点

この表現方法は、現在のUtsusemiFilterTrignetクラスに搭載されているものであり、実際UtsusemiEventDataConverterTemplate::Incrementで呼び出される関数(UtsusemiEventCasesDecoderBase::GetCaseFromTof)によって使用される。この関数は、vector< vector<UInt4> >の枠組みさえ守れば本来自由に定義できるものであるため、別の形式を考えることも可能である。