1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Geant4 11.4.0をmacOSにインストール(VS Code環境構築)

1
Posted at

はじめに

macOS環境にGeant4 11.4.0をインストールする手順を、備忘録としてまとめました。プログラミングや環境構築の経験がない方にも分かりやすいよう、順を追って説明していきます。専門用語には解説ページへのリンクを貼っているので、必要に応じてご参照ください。
おまけとして、VS CodeでGeant4コードを編集するための環境構築も行います。

すでにmacOSのファイルシステムやコマンド操作に慣れている方は、ご自身の使いやすいディレクトリ構成で進めていただいて構いません。

  • 作業時間の目安は約3時間です。特にビルドやインストールには時間がかかるため、時間に余裕を持って進めることをお勧めします。
  • 今回は、Geant4 11.3.2がすでに入っている環境で作業しています。初めてインストールする場合は、表示される内容やコマンドの実行結果が、異なる可能性があります。

この記事のゴール

  • Geant4 11.4.0をmacOSにインストールし、動作確認まで行う
  • VS CodeでのGeant4開発環境のセットアップを行う

環境

  • OS: macOS Sequoia
  • チップ:Apple Silicon

インストール手順

関連ツールのインストール

まず、Geant4のビルドに必要なツールと、可視化や解析に使用するツールをインストールします。今回使用するツールは次のとおりです。

ツール 概要
Command Line Tools for Xcode Appleが提供する開発ツール一式です。Geant4のビルドに必要なコンパイラなどが含まれています。
Homebrew コマンドを使ってソフトウェアをインストール・更新・管理するツールです。
CMake Geant4やシミュレーションプログラムをビルドするための設定を行うツールです。
Qt 6 Geant4での可視化等に使用するライブラリです。
ROOT シミュレーション結果の解析・グラフ化に使用するソフトウェアです。Geant4のインストールには必須ではありません。
Xerces-C++ 検出器構造などを記述するファイルの読み書きに必要なライブラリです。
XQuartz macOSでウィンドウ表示機能を利用するための環境です。

Qt 6・Xerces-C++・XQuartzは、Geant4で使用する機能に応じて必要になります。本記事では、これらを使用する構成で進めます。


Command Line Toolsのインストール

Finderで「アプリケーション」→「ユーティリティ」→「ターミナル」を開きます。起動したら、次のコマンドを実行します。インストールに関するダイアログが表示されるので、指示に従ってインストールを完了します。

xcode-select --install

Homebrewのインストール

次のコマンドを実行して、Homebrewをインストールします。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

インストールが完了したら、ターミナルからHomebrewを使えるようにパスを通します。次のコマンドで、~/.zprofile(設定ファイル)にHomebrewを使うための設定を追記します。

echo >> ~/.zprofile
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

次のコマンドを実行し、Homebrewのバージョンが表示されることを確認します。

brew --version

CMake・ROOT・Xerces-C++のインストール

Homebrewを使って、CMake・ROOT・Xerces-C++をインストールします。次のコマンドを1行ずつ実行します。インストールには時間がかかる場合があります。

brew install cmake
brew install root
brew install xerces-c

Qt 6のインストール

Geant4の対話画面や可視化に使用するQt 6をインストールします。

brew install qt@6

XQuartzのインストール

macOS上でGUI機能を利用するために、XQuartzをインストールします。XQuartz公式サイトを開いて、Quick DownloadからXQuartz-x.x.x.dmgをダウンロードします。ダウンロードしたファイルを開き、インストール作業を行います。

Geant4のインストール

Geant4のソースコードをダウンロードし、ビルドしてインストールします。本記事では、ホームディレクトリ内の~/geant4に、ソースコード、ビルド用、インストール用のディレクトリをまとめて配置します。ディレクトリ構成は次のような想定です。

~/geant4/
├─ geant4-v11.4.0/
├─ geant4-v11.4.0-build/
└─ geant4-v11.4.0-install/

ソースコードのダウンロード・展開

ソースコードの圧縮ファイルと展開後のソースコードを合わせると、合計で8GB以上の容量が必要になります。そのため、10GB程度の空き容量を確保した上で、以降の作業を進めることをお勧めします。

Geant4のダウンロードページを開き、「Source code」セクションの「Download tar」をクリックします。

ダウンロードが終わったら、再びターミナルを開いて次のコマンドを実行します。

cd
mkdir geant4
cd ~/geant4
tar xvf ~/Downloads/geant4-v11.4.0.tar

cdで~/geant4に移動してからtarを実行すると、このディレクトリ内にソースコードが展開されます。

Geant4のビルド

ビルド用とインストール用のディレクトリを作成します。

mkdir geant4-v11.4.0-build
mkdir geant4-v11.4.0-install

次に、ビルド用ディレクトリに移動し、CMakeでビルド設定を行います。

cd geant4-v11.4.0-build

cmake ../geant4-v11.4.0 \
    -DCMAKE_INSTALL_PREFIX=../geant4-v11.4.0-install \
    -DGEANT4_INSTALL_DATA=ON \
    -DGEANT4_USE_QT=ON \
    -DGEANT4_USE_OPENGL_X11=ON \
    -DGEANT4_USE_GDML=ON

cmakeから始まるコマンドは、最後の行までコピーして実行します。行末の\は、コマンドが次の行に続くことを表しています。

エラーが表示されて設定が完了しない場合は、エラーメッセージを確認してください。コマンドやパスの入力ミスのほか、必要なツールがインストールされていないなど、さまざまな原因が考えられます。エラーメッセージを検索すると、同様な問題が発生した方のページで解決策を見つけられるかもしれません。

CMakeによる設定が完了したら、同じディレクトリで次のコマンドを実行します。

make -j6

-j6は、最大6つの処理を並列に実行する指定です。数字を大きくすることで時間を短縮できますが、その分メモリも多く使用します。また、ビルドが失敗することもあるため、エラーが発生した場合は、並列数を減らすことをお勧めします。ビルドには最大で数十分〜1時間かかります(私の環境では40分で終わりました)。

Geant4のインストール

ビルドが正常に完了したら、次のコマンドを実行します。

make install

指定したインストール用のディレクトリに、Geant4がインストールされます。インストール完了後、Geant4のパスを通します。次のコマンドを実行して、.zprofileに設定を追記します。

echo 'source ~/geant4/geant4-v11.4.0-install/bin/geant4.sh' >> ~/.zprofile

コマンド実行後、ターミナルを閉じて、再度開きます。次のコマンドを実行して、Geant4のパスが通っているかを確認できます。

geant4-config --version

Geant4のバージョン(11.4.0)が表示されれば、Geant4のインストールは完了です。お疲れ様でした。

動作確認

Geant4のサンプルコード(example code)を動かしてみます。サンプルコードは、geant4のソースディレクトリ内の~/geant4/geant4-v11.4.0/examplesにあります。それぞれのサンプルコードの説明は、Geant4公式のサンプル一覧をご参照ください。

サンプルコードのコピー

今回はbasic/B1を動かしてみます。まず、作業用ディレクトリを作成します。ターミナルを開いて、次のコマンドを実行します。

cd
mkdir work
cd work

次に、B1ディレクトリをコピーし、その中に移動します。

cp -r ~/geant4/geant4-v11.4.0/examples/basic/B1 .
cd B1

サンプルコードのビルド

コピーしたソースコードから実行ファイルを作るため、ビルドを行います。

mkdir build
cd build
cmake ..
make -j4
ls

ビルドディレクトリをB1ディレクトリの中に作りました。ビルド後にlsを実行すると、exampleB1というファイルが確認できます。exampleB1は実行ファイルであり、makeコマンドによって生成されます。

ビルド用のディレクトリを作る場所に絶対的な決まりはありません。ソースディレクトリと同じ階層に作る(B1-buildを作る)こともできますし、上記のようにソースディレクトリの中に作る(B1/buildを作る)こともできます。

GUIでの起動

次のコマンドを実行することで、GUIウィンドウを開きます。

./exampleB1

実行すると下の画像のような画面が開きます。この画面では、ジオメトリ(シミュレーション対象の形状や配置)や粒子の飛跡を確認できます。

Geant4 B1 GUI画面

シミュレーションの実行

シミュレーションを実行してみましょう。GUI画面下部の「session」欄に、次のUIコマンドを入力します。

/run/beamOn 100

このコマンドは、100イベント分のシミュレーションを実行します。実行すると次のように粒子の軌跡が表示されます。表示領域でのドラッグやズーム操作によって視点を変えることができます。

シミュレーションパラメータの設定にはUIコマンドが利用されます。シミュレーション条件を変えるたびにソースコードを変更してコンパイルするのは非常に面倒です。UIコマンドを記述したマクロファイルを書き換えることで、ソースコードを変更・コンパイルすることなく、シミュレーション条件を変更できます。

Geant4 B1 実行結果GUI画面

おまけ:VS Codeでの開発環境構築

Geant4プログラムの編集には、Visual Studio Code(VS Code)が便利です。C/C++用の拡張機能を追加し、設定を読み込ませることで、クラス名や関数名の補完、定義への移動などを利用できます。

VS Codeのインストール

VS Codeの公式サイトから、macOS用のVS Codeをダウンロードします。ダウンロードしたファイルを開き、インストール後、VS Codeを起動します。

拡張機能のインストール

起動後、左側サイドバーの「Extensions」アイコンをクリックします。ここからVS Codeの拡張機能を導入できます。

まず、検索欄に「Japanese」と入力します。「Japanese language Pack for Visual Studio Code」をインストールします。インストールが完了すると、言語の変更と再起動を案内する通知が表示されたら、指示に従ってVS Codeを再起動します。再起動後、VS Codeのインターフェースが日本語に切り替わります。

続いて、C/C++の開発環境を構築します。再び拡張機能を開き、検索欄に「C++」と入力します。「C/C++ Extension Pack」をインストールします。

コード補完の設定

今の段階では、VS Codeはユーザが入力したGeant4のクラスや関数を正しく解析できません。Geant4及びROOTの場所をVS Codeに教えてあげて、補完機能などが使えるように設定します。

VS Codeを開いて、Command + Shift + pを押します。検索欄が表示されるので、「ユーザ設定を開く(JSON)」を選び、次の設定を追加します。

settings.json
{
    "C_Cpp.default.compilerPath": "/usr/bin/clang++",
    "C_Cpp.default.includePath": [
        "${workspaceFolder}/include/**",
        "${workspaceFolder}/src/**",
        "${env:HOME}/geant4/geant4-v11.4.0-install/include/Geant4",
        "/opt/homebrew/opt/root/include/root/**"
    ],
    "C_Cpp.default.cppStandard": "c++17",
    "C_Cpp.default.intelliSenseMode": "macos-clang-arm64",
    "editor.quickSuggestions": {
        "other": true,
        "comments": false,
        "strings": false
    },
    "editor.suggestOnTriggerCharacters": true
}

編集後は、Command + sでファイルを保存します。

設定の確認

次に、設定が反映されているか確認します。「ファイル」→「フォルダを開く」から、先ほどコピーしたB1ディレクトリを開きます。「ユーザ名」→「work」→「B1」で開きます。

Geant4のソースファイルを開いてみます。左側のエクスプローラから、exampleB1.ccを選択してファイルを開きます。ファイルを開くと、ライセンスに関する条項が先頭に表示されます。下にスクロールすると、"#include "ActionInitialization"というコードを見つけられます。ここにエラー(黄色や赤色の下線)が表示されていないことを確認します。

ActionInitialization.hhを右クリックし、「定義へ移動」をクリックすると、そのファイルの内容が表示されることを確認します。また、コード内の空行をクリックし、Gを入力するとG4...から始まる補完候補が表示されることを確認します。

VS CodeでのGeant4クラス名の補完

VS Codeでの実行

画面上部の「ターミナル」から、「新しいターミナル」を選択すると、VS Code内でターミナルが表示されます。ここから実行してみましょう。

ターミナルで次を実行します。実行すると、先ほどの実行と同じウィンドウが表示されることがわかります。

cd build
./exampleB1

以上でVS Codeの設定は終了です。お疲れ様でした。

Geant4を触るにあたって

サイト利用

私自身もまだ勉強中ですが、Geant4を使うには、プログラミングに加えて物理現象についても理解を深める必要があります。ここでは、学習を進める際に参考になる資料やツールを紹介します。

  • 公式ドキュメント
    Geant4 公式ドキュメントには、基本的な使い方から、各機能の実装方法、物理モデルの説明まで幅広い情報がまとめられています。ドキュメントを読むだけでなく、実際にコードを動かしながら、Geant4の構成要素や役割を確認していくのがお勧めです。

  • 講習会・講義資料
    定期的にGeant4の講習会が開催されています。公開されている講義資料を活用することもできます。日本語の資料では、KEK主催の講習会資料が参考になります。また、Geant4公式サイトのイベントページからも、過去の講習会の資料を閲覧できます。

  • 公式フォーラム
    Geant4の公式フォーラムでは、ユーザ同士が質問や情報交換を行なっています。エラーメッセージや機能名で検索すると、同じ問題に関する投稿が見つかるかもしれません。

コードの読み書きや修正案の検討、エラーメッセージへの理解を助けるために、生成AIを活用する方法もあります。ただし、生成されたコードは、ビルドや実行に成功しても、意図した物理条件を再現しているとは限りません。ユーザによる直接的な確認が大切です。

解析ツールについて

本記事では解析用ツールとしてROOTをインストールしましたが、Geant4の結果を解析する際に、必ずしもROOTを使う必要はありません。

例えば、結果をCSV形式で出力し、Pythonで集計・グラフ化を行う方法もあります。保存する項目が少なく、データ量も少ない場合は、こうした方法から始めてもよいでしょう。
一方、ROOTには、大量のデータの保存や読み出し、ヒストグラム作成やフィッティングなどの機能が用意されています。データを大量に保存・解析する場合には有力な選択肢となります。

シミュレーションの規模、保存したいデータの構造や解析方法に合わせて、使いやすいツールを選んでください。

参考リンク

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?