DAQMWコンポーネントの現状
「改良の詳細」に入る前に、J-PARC/MLF用DAQMWコンポーネントの現状について簡単に紹介する。 DAQMWコンポーネントはいくつかのグループに分けられる。
検出器からのデータを読み出すGathererと呼ばれるコンポーネントグループがある。 例えば、GathererPsdコンポーネントはPSDからのデータを読み出す。
さらに、GatenetコンポーネントやTrignetMlfコンポーネントなどはタイミングやデバイス類の情報を扱うDAQMWコンポーネントである。
また、Gathererからのデータを後段の複数のDAQMWコンポーネントに送るDispatcherMlfコンポーネントがある。
後段のDAQMWコンポーネントには、データをファイルに記録するLoggerMlfコンポーネントやKickerMlf(以前はKicker)コンポーネントなどがある。KickerMlfコンポーネントは、LoggerMlfコンポーネントがイベントカウント情報をログ情報とする代わりに、キッカーカウント情報をログ情報とする。 オンラインデータ解析を行うDAQMWコンポーネントやT0インデックスを作成しファイルに記録するT0EventLoggerMlfコンポーネントなどもこのグループに入る。
典型的な構成例をあげてみる。 下記の例は、GathererPsdからDispatcherMlfへデータを送り、さらにDispatcherMlfからLoggerMlfとT0EventLoggerMlfにデータを送り、データの記録とT0インデックスの作成・記録を行う。
GathererPsd --> DisptacherMlf --> LoggerMlf, T0EventLoggerMlf
また、新しく作られた、nGEMからデータを読み出すGathererPushコンポーネントやデータをRedisサーバに送る(publishする)PublisherMlfコンポーネントの例では、下記のようになる。 この例では、DispatcherMlfからのデータはLoggerMlfコンポーネントによりファイルに記録され、PublisherMlfコンポーネントによりRedisサーバに送られる。Redisサーバについては「改良の詳細」で触れる。
GathererPush --> DisptacherMlf --> LoggerMlf, PublisherMlf
PublisherMlfコンポーネントにより、以前はデータファイルから利用されてきたオンライン解析がRedisサーバから利用できるようになった。
また、nGEMからのデータも後段のDAQMWコンポーネントにデータを送ることができるようになった。以前のNgemMlfコンポーネントは直接データをファイルに書いていて、下流にデータを流していなかった。
さらに、以前より問題として指摘されていた日付問題(詳しくは「改良の詳細」で触れる)は、DAQ-Middlewareの本体とdaqmw.mlfパッケージの改良により解決された。
DAQ終了アルゴリズムの改良では、Gathererのデータ収集終了のタイミングが、後段のDAQMWコンポーネントに正確にわかるようになった。
また、LoggerMlfとKickerMlfの無限ループアルゴリズムが改良され、DAQMWコンポーネント群を管理するDaqOpertorはログ情報を的確に取得できるようになり、それらのコンポーネントはEnd情報をすぐに取得できるようになった。