90 likes | 2.25k Views
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.
E N D
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
GEM用Gathererコンポーネント • データフォーマット(1フレーム、10バイト) unsigned int timeU; unsigned int timeL; unsigned char Xdata; unsigned char Ydata; • データの流れ • コネクションが確立すると、GEM側からデータが垂れ流しにやってくる
SiTCPとは(復習) 内田さんから TCPサーバに見える FIFOメモリ に見える SiTCP 高速データ転送 理論限界値付近で 安定して転送可能 ユーザ回路 FPGA ソケット プログラミングで通信 メモリ読み書き回路でTCP通信 使い方が簡単
プログラミングの実際(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モジュールの切り離し データの流れは止まる } RUNNING state時 daq_run(){ stopコマンドが来ているか、 終了条件が成立しているか? チェックする 以前のOutPortへの転送が成功していなかったら 転送を試みる 複数のSiTCPモジュールからのデータを待つ 到着したデータを読み出す 読み出したデータをフォーマットする フォーマットされたデータをOutPortに転送する 転送に成功したら取得イベント数をインクリメントする }
Monitorコンポーネント with ROOT • ROOTとはCERNで開発された解析表示用ツール • ヒストグラムやGUIばかりでなくTreeと呼ばれるデータコンテナが強力 • DAQ-MiddlewareのMonitorコンポーネントで積極的に利用している • 下記に英語・日本語のUserGuideがある http://root.cern.ch/drupal/content/users-guide http://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(); } RUNNING state時 daq_run(){ InPortからデータを読み出す タイムアウトやstopコマンドが来ているかどうかを チェックする また、フェータルエラーかどうかもチェック | if(isEvent) { イベントデータが正しく到着したら、データをFillする m_hist->Fill(x,y); } | if((m_loop%100))==0) { 定期的にヒストグラムを表示 m_hist->Draw(“colz”); m_canvas->Update(); } | }
まとめ • GEM検出器用DAQ-Middlewareを紹介した • 特に、GEM用GathererコンポーネントとROOTを用いたMonitorコンポーネントについて詳しく解説した • GEM検出器用DAQ-MiddlewareのGatherer, MonitorはすでにJ-PARC, MLFで利用されている