gem 検出器用 daq-middleware
DESCRIPTION
GEM 検出器用 DAQ-Middleware. 2010 年度 DAQ-Middleware 講習会 2010 年 8 月 4 日 素核研エレクトロニクスシステムグループ 安 芳次. 大下さんのトラぺ. Architecture of DAQ-Middleware. DAQ-Operator. System Interface. Control Panel. Logger. ・ ・ ・. Gatherer. Dispatcher. Monitor. Readout modules. Online histogram. - PowerPoint PPT PresentationTRANSCRIPT
GEM 検出器用 DAQ-Middleware
2010 年度 DAQ-Middleware 講習会2010 年 8 月 4 日
素核研エレクトロニクスシステムグループ
安 芳次
大下さんのトラぺ
Architecture of DAQ-Middleware
DispatcherDispatcher
LoggerLogger
MonitorMonitorGathererGatherer
・・・
・・・
SystemSystemInterfaceInterfaceSystemSystem
InterfaceInterface
Control Panel
Online histogram
DAQ-OperatorDAQ-Operator
Readout modules
GEM 用 Gatherer コンポーネント
• データフォーマット( 1 フレーム、 10 バイト)
unsigned int timeU; unsigned int timeL; unsigned char Xdata; unsigned char Ydata;
• データの流れ– コネクションが確立すると、 GEM 側からデー
タが垂れ流しにやってくる
SiTCP とは(復習)
使い方が簡単使い方が簡単
FPGA
高速データ転送高速データ転送理論限界値付近で安定して転送可能
TCP サーバに見え
る
ソケットプログラミン
グで通信
FIFO メモリ
に見える
メモリ読み書き回路で TCP
通信
ユーザ回路ユーザ回路
SiTCP
内田さんから
プログラミングの実際(Gatherer)
configure コマンド時daq_configure() { システム構成パラメータの設定 ::NVList* paramList; paramList = m_daq_service0.getCompParams(); parse_params(paramList);}
start コマンド時daq_start() { set_condition(); 実験条件パラメータの設定 connect_modules(); SiTCP モジュールへの接続 データは流れ始める}
stop コマンド時daq_stop() { disconnect_modules(); SiTCP モジュールの切り離し データの流れは止まる}
daq_run() { stop コマンドが来ているか、 終了条件が成立しているか? チェックする 以前の OutPort への転送が成功していなかったら 転送を試みる 複数の SiTCP モジュールからのデータを待つ 到着したデータを読み出す 読み出したデータをフォーマットする フォーマットされたデータを OutPort に転送する 転送に成功したら取得イベント数をインクリメントする}
一回しか呼ばれない 繰り返し呼ばれる
RUNNING state 時
Monitor コンポーネント with ROOT
• ROOT とは CERN で開発された解析表示用ツール
• ヒストグラムや GUI ばかりでなく Tree と呼ばれるデータコンテナが強力
• DAQ-Middleware のMonitor コンポーネントで積極的に利用している
• 下記に英語・日本語のUserGuide がある
http://root.cern.ch/drupal/content/users-guidehttp://www.dw-sapporo.co.jp/technology/root_cint_dw_documents/root_cint_dw_documents
プログラミングの実際(Monitor)
configure コマンド時daq_configure() { システム構成パラメータの設定 ::NVList* paramList; paramList = m_daq_service0.getCompParams(); parse_params(paramList);}
start コマンド時daq_start() { キャンバスとヒストグラムの定義 TCanvas* m_canvas = new TCanvas(“myc”,…); TH2F* m_hist = new TH2F(“h3”, … ); }
stop コマンド時daq_stop() { m_hist->Draw(“colz”); m_canvas->Update(); m_canvas->Modified();}
daq_run() { InPort からデータを読み出す タイムアウトや stop コマンドが来ているかどうかを チェックする また、フェータルエラーかどうかもチェック | if(isEvent) { イベントデータが正しく到着したら、データを Fill する m_hist->Fill(x,y); } | if((m_loop%100))==0) { 定期的にヒストグラムを表示 m_hist->Draw(“colz”); m_canvas->Update(); } |}
一回しか呼ばれない 繰り返し呼ばれる
RUNNING state 時
まとめ
• GEM 検出器用 DAQ-Middleware を紹介した• 特に、 GEM 用 Gatherer コンポーネントと
ROOT を用いた Monitor コンポーネントについて詳しく解説した
• GEM 検出器用 DAQ-Middleware のGatherer, Monitor はすでに J-PARC, MLF で利用されている