たくのろじぃのメモ部屋

プログラミング(C#)の基礎やそれを応用した技術情報をメモしておくブログです。

Geant4をWindows10で動かす

Geant4 を Windows10 で動かすために行ったメモです。一筋縄で行かなかったので大変だった記録。

実行環境(動いたVer)

Geant4って何?

ググってください。と言いたいところですが、簡単に言うと「粒子同士を衝突させて物理的相互作用を解析・シミュレーションするツールセット」です。あくまでツールなので、シミュレーションさせたい場合はプログラムを書いて実行する必要があります。要はライブラリです。

実行ファイルを用いた Geant4 のインストール

まずはGeant4公式サイトからPre-compiled Libraries欄にあるcompiled using Visual Studio 2017 (version 15.9.3) on Windows 7, 32 bits, executable installer (16.8Mb, 17627603 bytes) を選択してダウンロードします。ダウンロードすると実行ファイルが生成されるので、これを実行してインストールします。うまくいった人はこちらのサイトを参考に進めてみてください。

さて、私たくのろじぃはこの時点でインストールがうまくいきませんでした。どうやら環境変数を設定できないとのことです。理由は、登録している環境変数が多いためだそうです。そこで、コントロールパネルから環境変数をいくつか削除してみました。が、それでも同じようなエラーが出て先に進めないので、断念しました。セットアップ上では「完了」と表示されているのですが、信用できなかったのでアンインストール。

Zipファイル展開による Geant4 のセットアップ

同じくインストールサイトのPre-compiled Libraries欄にあるcompiled using Visual Studio 2017 (version 15.9.3) on Windows 7, 32 bits, zip file (22.8Mb, 23917100 bytes)の方を選択します。Zipで落とせるので、好きな場所に展開します。私は C:\Program Files (x86)\Geant4_10_5 ディレクトリ に展開しました。これで一通り Geant4 のライブラリやDLLなどを得られました。

自分の環境にて手動でビルドする方法

実は上記の方法でやってもうまくいきませんでした。一応、サンプルコードのビルドを行うところまではできましたが、アクセス違反によってブレークします。仕方なく、自分の環境上でやることにします。おそらく2017年版の Visual Studio でビルドしたファイルたちを 2019年で動かしたのがだめだったのかと...。メモリアクセスについてはそこまで詳しくないので、自分の環境でビルドしてみます。

Geant4のサイトには Windows10 でビルドする方法が載っているので、Windows10 で動くのは確かだと思います。なので、このサイトの手順通りにすすめていきます。

geant4-userdoc.web.cern.ch

英語が苦手な人は翻訳しながら進めましょう。 f:id:takunology:20190917162103p:plain

いい感じにセットアップが進行しています。一応手順だけ書いておきます。 まず、Zipファイルを適当なディレクトリで展開します。展開したディレクトリは"Geant4_10_5"という名前にしておきます。次に、ビルド用のディレクトリ"Geant4_10_5-build"を作成しておきます。できたらVisual Studio Developer Command Prompt でビルドのほうのディレクトリに入って、次のコマンドを打ちます。

cmake -DCMAKE_INSTALL_PREFIX="インストール先パス\geant4_10_05-install" "ビルド元パス\geant4_10_05"

build のディレクトリ内にCMakeビルドを行い、そこからインストールを install ディレクトリにて行います。オリジナル(ハイフンなし)はCMake の構成ファイルが入っています。

次に Geant4 データセットのインストールを有効にしておきます。

cmake -DGEANT4_INSTALL_DATA=ON .

ドットはミスタイプでなく、カレントディレクトリのことです。できたらリリースビルドを行います。

cmake --build . --config Release

ざっとこんな感じです。この作業はかなり時間がかかります。core i7でも30分以上はかかります。気長に待ちます。 できたらリリースと粒子に関するデータをインストールします。

cmake --build . --config Release --target install

今後、ここで生成されたインストールディレクトリの中にあるインクルードファイルやDLLファイルなどを使います。

プロジェクトの作成

Visual Studio 2019 でやってみます。ダウンロードしたものは 2017 で作成したファイルですが、読み込むには問題ないので大丈夫でしょう。(本当かよ...) とりあえず C++ で空のプロジェクトを作ります。 f:id:takunology:20190917141900p:plain

KEKの講座ページにあるサンプルコードをダウンロードして、解凍し、P01_FirstStep > source の中にあるファイルをソリューションエクスプローラーのソースファイルに追加します。ヘッダーファイルは include ディレクトリに入っているものを追加します。geant4_10_05-install > share > Geant4-10.5.1 > data にある粒子データたちは環境変数に登録します。geant4_10_05-install の中にある bin と lib の中身はVisual Studioのプロパティ設定で使います。

あとはこのページにある通りに進めていきます。

さて、これでうまく実行できると思いましたが結果はダメでした。メモリアクセス違反になります。なにが悪いのか分からず、結局アンインストールとインストールを様々なバージョン、コンパイラで試しました。それでもダメでした。心が折れそう...。

うまくいかなかった原因と解決方法

環境変数の設定方法が悪かったです。なんと、Path の欄に追加すると思っていましたが、正しくは新規追加で追記していく方法です。こんな感じです。 f:id:takunology:20190918010704p:plain

これでプログラムが動くようになりました。たったこれだけのことで何日も悩んでいたのがバカみたいですw

ちなみに、実行してみるとこんな感じになります。上記のサイトを参考に動かしてみました。あとはKEK講習会の試料を見ながらやるのが一番です。 f:id:takunology:20190918010836p:plain

参考にさせていただいたサイト

ありがとうございます。

phst.hateblo.jp

geant4-userdoc.web.cern.ch

geant4-forum.web.cern.ch

3番目が最高のヒントになりました。やっぱ海外勢はさすがです。 チュートリアルは講習会の資料が易しいです。

wiki.kek.jp