Geant4をmacOS(M1chip)にインストールする手順

M1 MacBook Airで計算機サーバーにSSHログインしGeant4を動かそうとしたころ、GUIウィンドウがうまく表示されないという不具合が発生。研究室の教授曰く、M1MacはGeant4の実行が速いらしく、ローカルに環境を構築したほうが良いとのこと。
以上の経緯から、macOS(M1 chip)にGeant4をインストールし、チュートリアルを実施するまでの手順を行ったので、備忘録として残しておく。

# 環境
- MacBook Air (M1, 2020)
- macOS Monterey 12.4

# この記事のゴール
- macOS(M1 chip)にGeant4(v.11.0.0)をインストール
- exampleB4aを実施し正常にインストールされたかどうかを確かめる

# 参考
- http://geant4-dna.in2p3.fr/styled-6/styled-12/index.html : ここを参考にインストールを実施した。ところどころ不親切な記述があったのでこの記事で補足説明を行う。

# 導入手順
## A) Installation of Geant4
### 事前準備
- Xcodeが導入されていない場合は、[App Store](https://apps.apple.com/jp/app/xcode/id497799835?mt=12)からXcodeをインストール
- Xcodeコマンドラインツールを導入
```
xcode-select --install
```
- Homebrewが導入されていない場合はHomebrewを導入
```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
- cmakeと[Qt version 5](https://www.qt.io/ja-jp/)をbrewからインストール
```
brew install cmake
```
```
brew install qt@5
```
- QtのPATHを通す。細かいバージョン(`<version>`)は実際に見に行って確かめる。
```
export PKG_CONFIG_PATH=/opt/homebrew/Cellar/qt@5/<version>/lib/pkgconfig/
export PATH=/opt/homebrew/Cellar/qt@5/<version>/bin:$PATH
```

- [Xerces-C++](https://xerces.apache.org/xerces-c/)のインストール
```
brew install xerces-c
```
- ROOTのインストール
```
brew install root
```

### Gitを利用してGeant4をインストール
今回の例では、ホームディレクトリにGeant4をインストールする。
```
cd
git clone https://gitlab.cern.ch/geant4/geant4.git
```
`v.11.0.0`というブランチに入る。
```
cd geant4
git checkout v11.0.0
cd ..
```
※ 私の環境だと、表示されているブランチ名が`84f33a068`とよくわからないことになったが、`git branch`で確認したら確かに`v.11.0.0`のブランチに入っていることが確認できた。

ビルドするディレクトリを作成。
```
cd 
mkdir build
cd build
```

以下のコマンドでCmakeを実行（長いのでバックスラッシュで適宜改行した）。
```
cmake \
-DCMAKE_INSTALL_PREFIX=~/geant4-v11.0.0-install \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DGEANT4_USE_GDML=ON \
-DGEANT4_BUILD_MULTITHREADED=ON \
-DXERCESC_ROOT_DIR=/opt/homebrew/Cellar/xerces-c/3.2.3 \
-DGEANT4_USE_QT=ON \
-DGEANT4_INSTALL_EXAMPLES=ON \
-DGEANT4_INSTALL_DATA=ON \
-DGEANT4_USE_SYSTEM_EXPAT=OFF \
-DGEANT4_BUILD_TLS_MODEL=auto \
../geant4
```

私の場合、「`CmakeLists`などを`~/geant4/`から消してね」というエラーが出たので、おとなしく指示に従ったら無事実行できた。

buildする。大体10分ぐらいで完了するはず。
```
cmake --build . --target install -- -j10
```

インストール完了！

## B) How to use Geant4
### `.zshrc`への追記
以下の内容を`.zshrc`などに追記する。
`<version-of-qt>`や`<version-of-root>`はディレクトリを見に行って確認する。
```
##### Geant4 setup #####
#
#Qt5
#
export PKG_CONFIG_PATH=/opt/homebrew/Cellar/qt@5/<version-of-qt>/lib/pkgconfig/
export PATH=/opt/homebrew/Cellar/qt@5/<version-of-qt>/bin:$PATH
#
#ROOT
#
source /opt/homebrew/Cellar/root/<version-of-root>/bin/thisroot.sh
#
#Geant4
#
cd ~/geant4-v11.0.0-install/bin
source geant4.sh
export G4COMP=/Users/yourname/geant4-v11.0.0-install/lib/Geant4-11.0.0
export CMAKE_PREFIX_PATH=$G4COMP
alias comp='cmake -DGeant4_DIR=$G4COMP -DGEANT4_BUILD_MULTITHREADED=ON'
#
cd
##### Geant4 setup #####
```
ターミナルを再起動して特にエラーがでなければ無事PATHなどが設定できていると思われる。

### `/basic/examples/B4/B4a`の実施（動作確認）
参考にしたウェブサイトでは`dnaphysics`を実施していたが、ここではその代わりにexampleB4aを実施する。

適当な作業ディレクトリを作成&移動する。
```
mkdir myg4work
cd myg4work
```
B4のソースファイルを作業ディレクトリにコピーしてくる。
```
cp -r ~/geant4/examples/basic/B4 .
```
ビルド用のディレクトリを作成してcmake&ビルドする。
```
mkdir B4-build && cd B4-build
cmake -DGeant4_DIR=~/geant4-v11.0.0-install/lib/Geant4-11.0.0 ../B4
make -j10
```
エラーがなければ`B4-build`内に`B4a`などが生成される。

B4aを実行してみる。
```
cd B4a
./exampleB4a
```

しばし待つと、QtのGUIウィンドウが表示される（かっこいい）。

![スクリーンショット 2022-07-10 18.56.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733819/b4f19c01-908f-f52e-0111-c98e183216fe.png)

ウィンドウ上部のカロリメータはマウスでグリグリいじれる。

![スクリーンショット 2022-07-10 18.57.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733819/a9742495-f2b9-89e7-7f58-7ecc19e7a0a6.png)

ウィンドウ下部の`Session:`にコマンドを入力する。

```
/control/execute run1.mac
```

![スクリーンショット 2022-07-10 18.59.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733819/9d6a5e95-aea1-f712-1e7d-0e25863106d3.png)

```
exit
```
で画面を閉じる。