Geant4をWindowsにインストールし、Qtを利用して表示する


高エネルギー粒子のシミュレーションとして用いられるGeant4をWindowsにインストールして、Qtで表示する方法をまとめる。標準では、OpenGLを使用するのだが、WindowsではOpenGLの表示が正しくないこともあり、汎用性を考慮しQtを使用するこで、ソース編集と確認をMSVCで行い、実際の実行をマルチスレッド処理が可能なUnix環境で行うことができ、開発が便利となる。
(Windows環境で、Geant4 v11.0.0からマルチスレッドでの並列処理が可能になりました。ただし、不安定であるので、長時間のシミュレーションの際には注意が必要。)

必要な環境
Windows 10 (11は未確認)
Microsoft Visual Studio 2019 (Communityでも可)。(Intel C++コンパイラーやCMakeでも代用可能であるっぽいが動作検証されてないようである)

##Qtをインストール##

  1. Qtのサイトから、[Open Source Qt Use]にて、Qtのインストーラーをダウンロードする。
  2. インストーラーを起動し、 Qt Accountを登録し、[Custom installation]を選択し、[Next]をクリック
  3. Qt 5.##の最新版にて、[MSVC 2019 64-bit]を選択する。[Qt 5.##]以下のQt ???を全てチェックする。Qt6はGeant4では非対応なのでインストールしない。
  4. Windowsの[システムの環境変数]の[環境変数]の"Path"に%{Qt_install}\5.##\msvc2019_64\binを追加する。(%{Qt_install}は、Qtをインストールしたフォルダ。ディフォルトなら、"c:\Qt")

##Geant4をインストール##

  1. Geant4のサイトから、最新版のSource files(ZIP形式)をダウンロードする。
  2. Geant4をインストールする任意のフォルダ(%{Geant4_BaseDir})を作成(Cドライブ直下やProgram Files等のシステムフォルダ内は避けるべし)し、ダウンロードしたソースファイルを解凍する。%{Geant4_BaseDir}に、geant4_##_## フォルダ(##はバージョン)ができています。
  3. %{Geant4_BaseDir}に、ビルド用のフォルダ(例:geant4-build)とインストールフォルダ(例:geant4-install)を作成する。
  4. Windowsメニュー等から[Developer Command Prompt for VS 2019]を起動する。
  5. "cd"コマンドにて、ビルド用フォルダに移動する。
cd %{Geant4_BaseDir}\geant4-build

実際には""は、円マーク(¥)になります。¥入力後に、フォルダー名の頭文字を入力して、[Tab]キーを押すと、最初のフォルダーが自動入力されます。
6. 以下のコマンドにて、ビルドする。

cmake -DCMAKE_INSTALL_PREFIX=%{Geant4_BaseDir}\geant4-install -DGEANT4_INSTALL_DATA=ON -DGEANT4_USE_QT=ON -DCMAKE_PREFIX_PATH=%{Qt_install}\バージョン\msvc2019_64 %{Geant4_BaseDir}\ソースファイルフォルダ

各引数の説明
-DCMAKE_INSTALL_PREFIX : インストール先を指定
-DGEANT4_INSTALL_DATA : 必要なデータファイルをダウンロードし、インストールする
-DGEANT4_USE_QT=ON : 表示にQtを使用する
-DCMAKE_PREFIX_PATH : ビルド時に追加のライブラリパス(ここでは、Qtのパスを指定)

最後に、ソースフォルダを指定する。
様々なオプションの指定が可能であるので、Geant4のInstallation Guideを参照すべし。cmakeコマンドで、オプションを追加することは可能であるが、設定を間違えた場合は、geant4-build内のCMakeCache.txtを削除してから、再度、cmakeコマンドを実行するほうが安心である。オプションの意味が分からないなら、何もしないことをお勧めする。
問題がなければ、以下のように

成功の場合
-- Configuring done
-- Generating done
-- Build files have been written to : *****

と表示されていれば、成功。
7. 以下のコマンドにてコンパイルを行う。

コンパイル
cmake --build . --config Release

ツール開発などでデバッグ情報が必要な場合は、ReleaseをRelWithDebInfoに変更する。ただし、Releaseビルドに比べると、最適化が行われないために、パフォーマンスが落ちる。

もし、インターネット接続環境にて、プロキシーが必要な場合は、必要なデータをダウンロードすることができずにビルドエラーとなってしまうので、setコマンドでプロキシーを事前に設定しておく必要がある。

プロキシーの設定
set HTTP_PROXY=http://proxy.example.com:PORT_NUM
set HTTPS_PROXY=https://proxy.example.com:PORT_NUM

コンパイルするのに、数時間かかるので待機。途中、黄文字で何かが表示されますが、無視して大丈夫です。赤文字の場合は、エラーですので、コンパイル失敗になります。その場合は、設定等を再度見直す必要があります。
もし、コンパイルを中止したい場合は、[Ctrl+C]にて中止要求をする。
成功すると、

という感じで終わる。
8. 生成物をインストールする。1時間ぐらいかかります。

インストール
cmake --build . --config Release --target install

成功すると、

こんな感じになります。
9. 環境の設定
Windowsの[システムの環境変数]の[環境変数]の"Path"に、"%{Geant4_BaseDir}\geant4-install\bin"を追加。以下の項目をユーザーの環境変数に追加する。%{Geant4_install}は、Geant4をインストールしたフォルダ。注:data以下のフォルダ名に付随するバージョンは、実際に合わせて変更すること。

変数
G4ABLADATA %{Geant4_install}\share\Geant4-10.7.1\data\G4ABLA3.1
G4ENSDFSTATEDATA %{Geant4_install}\share\Geant4-10.7.1\data\G4ENSDFSTATE2.3
G4INCLDATA %{Geant4_install}\share\Geant4-10.7.1\data\G4INCL1.0
G4LEDATA %{Geant4_install}\share\Geant4-10.7.1\data\G4EMLOW7.13
G4LEVELGAMMADATA %{Geant4_install}\share\Geant4-10.7.1\data\PhotonEvaporation5.7
G4NEUTRONHPDATA %{Geant4_install}\share\Geant4-10.7.1\data\G4NDL4.6
G4PARTICLEXSDATA %{Geant4_install}\share\Geant4-10.7.1\data\G4PARTICLEXS3.1
G4PIIDATA %{Geant4_install}\share\Geant4-10.7.1\data\G4PII1.3
G4RADIOACTIVEDATA %{Geant4_install}\share\Geant4-10.7.1\data\RadioactiveDecay5.6
G4REALSURFACEDATA %{Geant4_install}\share\Geant4-10.7.1\data\RealSurface2.2
G4SAIDXSDATA %{Geant4_install}\share\Geant4-10.7.1\data\G4SAIDDATA2.0


10. インストールの完了
11. 設定を反映させるために、Developer Command Promptを終了させ、PCを再起動させる。
PC起動時に、環境変数を読み込むため、この作業を忘れると、正しく動作しないことが多い。

##サンプルコードでのテスト##

  1. 任意の箇所に作業フォルダ%{work_dir}を作成する。
  2. "%{Geant4_install}\share\Geant4-10.7.1\examples\basic\B1"を%{work_dir}にコピーする。
  3. Developer Command Promptを起動し、cdコマンドを使って、作業フォルダ(カレントフォルダ)を%{work_dir}に移動する。
cdコマンドの例
cd %{work_dir}  //%{work_dir}に移動する
cd ..           //一つ上の階層へ移動する
cd folder       //floderフォルダーに移動

cd : 作業フォルダを移動するコマンド
4. mkdirを使って、ビルド用のフォルダ(B1-build)を作成する。

フォルダの作成
mkdir B1-build

mkdir : フォルダを作成するコマンド
5. cdコマンドを使って、作成したフォルダ(B1-build)に移動
6. cmakeコマンドを使って、ビルドする。

ビルド
cmake -DGeant4_DIR=${Geant4_install}\lib\Geant4-10.7.1 ..\B1

-DGeant4_DIR : Geant4のライブラリパスを指定
..\B1 : ソースフォルダ (一つ上の階層にあるB1フォルダという意味)
成功すると、

7. コンパイルする

コンパイル
cmake --build . --config Release

ツール開発などでデバッグ情報が必要な場合は、ReleaseをRelWithDebInfoに変更する。ただし、Releaseビルドに比べると、最適化が行われないために、パフォーマンスが落ちる。


9. 実行する

実行
.\Release\exampleB1

.\Release : Releaseビルドによって生成された成果物が格納されているフォルダ
exampleB1 : サンプルの実行exe
成功すると、Qt画面が表示されます。