Welcome to Artemis Artemis ユーザーガイドへようこそ。このウェブサイトでは、artemis のインストールから解析手順書、ヒストグラム、コマンドまで、解析を始める方法をまとめています。
artemis とは artemis は加速幾を用いた原子核物理学実験のために開発された解析フレームワークであり、特定の時間幅における相関関係を解析することを前提にしており、特にセットアップの変更による要求に迅速に対応しかつ安定した解析ツールを提供することが大きな特徴です。
様々なフォーマット RIBF, RCNP, HIMAC, CYRIC などの低エネルギー原子核実験向け加速器施設だけでなく、J-PARC などのハドロン物理においても活用されています。再利用可能な断片的な解析コードを準備し、それらを組み合わせることによって、コードのデバッグを不要とし、かつ、比較的大規模な実験まで容易に解析ツールを準備することができるようになります。
各施設のデータフォーマットは現在大きく異なっていますが、初段の解析コードがその違いを吸収することで、その後の解析コードの再利用を可能にしています。もちろん Tree も入力にできますので、解析の中間ファイルだけでなくシミュレーションの出力からも解析を始めることができます。そのため、シミュレーションと実験データを完全に同じ解析コードで処理することができ、管理が単純になるだけでなく、解析コードの開発から利用がシームレスに繋がります。
ヒストグラムとコマンド ヒストグラム定義の機能を使うことで自動的に Fill されて、何度も Tree::Draw を呼ぶ必要はありません。これらの定義ファイルは可読性の高い YAML フォーマットさらには、独自のコマンドラインを準備することによって hist->Draw() という矢印と括弧の苦行から開放されます。
Artemis は以下のことは提供できません 未知の解析アルゴリズム 既存のコードを利用するため、新たな解析アルゴリズムが必要になった場合にはご自身で追加頂く必要があります。開発された汎用性を持つコードをご提供いただける場合にはご連絡ください。物理的に「正しい」解析結果 各処理コードは最新の注意を払って確認されていますが、意図しない使い方による解析コードの動作保証はできません。また、解析結果が物理的に正しいかどうかは常に物理的な根拠に基づいて、使用者が判断してください。artemis が想定するユーザー Artemis はある程度の時間幅内にあるデータの相関関係を解析することを得意としていますので、加速器実験などでの短い時間における粒子生成や、あまり頻度の高くない粒子崩壊に対する検出器応答の解析に向いています。一方で連続的にやってくるデータの処理は現在のところ想定しておらず、別のソフトウェアでの加工をおすすめしています。
非常に単純な解析にはやや牛刀であるかもしれませんので、ご自分で解析コードを書かれることをおすすめします。また、巨大なデータの場合には高速化を行う必要があるかもしれませんが、解析アルゴリズムの実装によっては対応可能であろうと考えています。
現在は SPADI Alliance が開発しているトリガーレス連続読み出しデータ収集システムへの対応を進めており、比較的長い時間幅に対する解析も行っていますが、やはり、事前に短い時間幅へと処理されているほうが効率的であるようです。
さぁ、始めましょう インストールの仕方は Get Started にあります。
1 - Get Started What does your user need to know to try your project?
Artemis のインストールや使用方法など、artmis を使い始める方法をご紹介します。
Artemis は ROOT の拡張機能として実装された解析フレームワークですので、いくつかの依存した外部ソフトウェアのインストールと、解析を行うためのいくつかのファイルを準備しなくてはなりません。artemis がどのように動作するのかの簡単な例は example に格納してありますが、実際のデータを解析する際にはもう少し設定が必要になります。
このページでは artemis をインストールをする際に必要なソフトウェアと依存関係を説明し、適切なセットアップガイドを選択してインストールを開始できるようにします。
インストール要件 ROOTは共有ライブラリを読み込むことを可能としていますが、artemis は独自のコマンドを実装するために、ソフトウェアアプリケーションとして動作します。artemis が依存するいくつかの外部ライブラリが存在しており、ユーザーは必要に応じてインストール時に選択することができます。
項目 要求 必須 動作確認 C++ C++17 o ROOT > 6.26.0 o 6.30.06 で確認済み (2024-04-15) yaml-cpp > 0.6.3 o 0.7.0 では pkgconfig の場所がおかしいという報告もあり openmpi 未確認 計算機クラスタにインストールされているものは使えるはず GetDecoder バージョンなし? メモリリークの報告あり。確認中。
前提 C++17 に対応したコンパイラ ROOT-6 (最小の枝番は未確認。6.30.06 でも動作はします。) とやって ROOT が使える状態であることを確認してください。使えない場合にはインストールされていないか、環境変数の設定ができていません。
ROOTをインストール するか、グループの誰か、サーバーの管理者などに初期設定の仕方を教えてもらいましょう。
yaml-cpp 0.6.3 (0.7.0 でも動作しますが、pkgconfig の場所がおかしいようでコンパイルにひと手間かかります) OpenMPI にも対応しています。 GETDecoder にも対応しています。 インストール ROOT-6 を使用する場合には develop ブランチを使用します。 github からソースコードをもってきてコンパイルをします。mkdir artemis-work
cd artemis-work
git clone --branch develop https://github.com/artemis-dev/artemis.git artemis-src
cmake -DCMAKE_INSTALL_PREFIX= $HOME /local/artemis -DCMAKE_PREFIX_PATH= $HOME /local/yaml-cpp/ -B artemis-build -S artemis-src
cmake --build artemis-build --target install -j10
これで $HOME/local/artemis にインストールされたはずです。
以下を実行することで環境変数が設定されます。スクリプトは .bashrc などに記入することで自動で実行できるようになります。
thisartemis.shを呼び出す:
bash, zsh
csh, tcsh
pushd $HOME/local/artemis/bin && . ./thisartemis.sh && popd
pushd $HOME/local/artemis/bin && source ./thisartemis.csh && popd
解析ディレクトリの準備 artemis 自身は特に環境変数は要求しませんが、git を利用したコード管理をやりやすくするために、環境変数を設定していることがあります。
artemis が推奨するディレクトリ構造は以下の通りです。ここで output や rawdata はシンボリックリンクになっています。
必ずしも必要なリンクではありませんが、特に output はローカルディスクを使い切ることの内容に事前の対策として作成することが多いディレクトリになっています。
.
├── artemislogon.C
├── conf
│ ├── map
│ └── seg
├── hist
│ └── pla
├── macro
├── output -> /data/work/ota/output
├── prm
├── rawdata -> /home/nestdaq/run/data
└── steering
└── itmpl.
artemislogon.C artemis 用の初期設定ファイルになっています。コマンドやモジュールデコーダの登録やパラメータ変更に用います。
steering 解析の起点となるファイルを配置するディレクトリです。
conf 検出器の設定やチャンネルマップなどの対象が検出器ごとなど大きなまとまりに対する設定ファイルを格納する
prm チャンネル単位、物理量単位などの具体的に演算対象となる単位に対するパラメータを記述するファイルを格納する
hist ヒストグラムの設定ファイルを格納する
macro マクロなどを格納する
2 - Examples See your project in action!
artemis のインストールが完了し、artemis が起動できるようになったら解析をしてみましょう。
対応したデータ収集系ではデータが最大5つのユニークにチャンネル
前提 プラスチックシンチレータの組がセグメント ID [0,0,0] の [Geo,ch] = [0x2aa,10] と [Geo, ch] = [0x2aa,12] にされている 解析を進めるうえで準備すべきファイル群 steering/chk.tmpl.yaml mapper.conf