Windowsで64bit版Geant4を入れたお話です。32bit版は過去記事参照。
これまで、Windows用Geant4は32bit版しか提供されてきませんでしたが、11.3から64bitに対応したようです。
というわけで、インストールしてみましょう。
Geant4 64bit版入手
ダウンロードページからコンパイル済みのバイナリを入手し、インストールします。
https://cern.ch/geant4-data/releases/lib4.11.3.p02/WIN64-VC17.10.3-11.exe
PATHは手動で通すので、Do not add
でよく、インストール先はデフォルトの C:\Program Files\Geant4-11.3
としておきましょう。x86 が外れましたね。
ユーザー環境変数の Path に C:\Program Files\Geant4-11.3\bin
を追加しておきましょう。
Datasets の入手
https://geant4.web.cern.ch/download/11.3.2.html
からデータセットをダウンロードして展開し、ユーザー環境変数に変数と値をセットします。ここは以前と変わっていません。
G4ABLADATA=C:\geant4\data\G4SAIDDATA2.0 G4CHANNELINGDATA=C:\geant4\data\G4CHANNELING1.0 G4ENSDFSTATEDATA=C:\geant4\data\G4ENSDFSTATE3.0 G4INCLDATA=C:\geant4\data\G4INCL1.2 G4LEDATA=C:\geant4\data\G4EMLOW8.6.1 G4LEVELGAMMADATA=C:\geant4\data\PhotonEvaporation6.1 G4NEUTRONHPDATA=C:\geant4\data\G4NDL4.7.1 G4PARTICLEXSDATA=C:\geant4\data\G4PARTICLEXS4.1 G4PIIDATA=C:\geant4\data\G4PII1.3 G4RADIOACTIVEDATA=C:\geant4\data\RadioactiveDecay6.1.2 G4REALSURFACEDATA=C:\geant4\data\RealSurface2.2 G4SAIDXSDATA=C:\geant4\data\G4SAIDDATA2.0
Visual Studioでプロジェクトを作成
新しいプロジェクトを作成→ 空のプロジェクト C++ → 適当に名前を付けて作成します。まず、Release x64 にします。
ソースファイルに main.cpp
を追加し
#include <G4coutDestination.hh> int main() { G4cout << "Hello world!" << G4endl; }
と書きます。
プロパティ → 構成プロパティ→VC++ディレクトリ
インクルードディレクトリに C:\Program Files\Geant4-11.3\include\Geant4
を追加
ライブラリディレクトリに C:\Program Files\Geant4-11.3\lib
を追加
リンカーの入力の追加の依存ファイルに、C:\Program Files\Geant4-11.3\lib
に存在するすべての lib のファイル名を書いておきます。
G4analysis.lib G4clhep.lib G4digits_hits.lib G4error_propagation.lib G4event.lib G4expat.lib G4FR.lib G4geometry.lib G4geomtext.lib G4global.lib G4GMocren.lib G4graphics_reps.lib G4intercoms.lib G4interfaces.lib G4materials.lib G4mctruth.lib G4modeling.lib G4OpenGL.lib G4parmodels.lib G4particles.lib G4physicslists.lib G4processes.lib G4ptl.lib G4RayTracer.lib G4readout.lib G4run.lib G4ToolsSG.lib G4track.lib G4tracking.lib G4Tree.lib G4vis_management.lib G4visHepRep.lib G4VRML.lib G4zlib.lib
本当は必要なものだけでいいんですけどね。
ビルドすると
1>C:\Program Files\Geant4-11.3\include\Geant4\tls.hh(73,1): error C1189: #error: "No Thread Local Storage (TLS) technology supported for this platform. Use sequential build !"
というエラーが出るはずです。
tls.hh の
# elif defined(WIN32) # define G4ThreadLocalStatic static thread_local # define G4ThreadLocal thread_local
この部分を実行する必要があるので、x64版ですが仕方なく
C/C++→プリプロセッサ→プリプロセッサの定義 に WIN32
を追加します。
1>C:\Program Files\Geant4-11.3\include\Geant4\G4EnvironmentUtils.hh(145,24): error C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>(ソース ファイル 'main.cpp' をコンパイルしています) 1>C:\Program Files\Geant4-11.3\include\Geant4\G4EnvironmentUtils.hh(204,24): error C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>(ソース ファイル 'main.cpp' をコンパイルしています)
この古い関数に関するエラーを無視するため、プリプロセッサの定義 に _CRT_SECURE_NO_WARNINGS
も追加しておきましょう。
C++ 17 以上にしろと言われるので、
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\string_view(12): warning STL4038: The contents of <string_view> are available only with C++17 or later.
構成プロパティ→全般 で C++言語標準を、C++17標準 にします。
これでデバッグなしで開始などをすると、Hello world! が表示されるはずです。
サンプルB1を実行する
Geant4ぽいことをしてみよう。 Geant4 の examples から https://gitlab.cern.ch/geant4/geant4/-/tree/geant4-11.3-release/examples/basic/B1
メインのソースファイル(exampleB1.cc) 、srcフォルダ内のファイルとincludeフォルダ内のファイルをVisual Studioのプロジェクトに追加する。
run2.mac
に 設定が書いてあるので、これを引数にして実行してみよう。
ここで設定されている、6 MeVのガンマ線を1000発打ち込んだ時、
/gun/particle gamma /gun/energy 6 MeV /run/beamOn 1000
結果は
--------------------End of Global Run----------------------- The run consists of 1000 Cumulated dose per run, in scoring volume : 43.4009 picoGy rms = 3.89683 picoGy ------------------------------------------------------------
43±4 pico Gy の doseがあったようだ。
210 MeVの陽子を1000発打ち込んだとき、
/gun/particle proton /gun/energy 210 MeV /run/beamOn 1000
--------------------End of Global Run----------------------- The run consists of 1000 Cumulated dose per run, in scoring volume : 5.38591 nanoGy rms = 144.936 picoGy ------------------------------------------------------------
5.4±0.1 nano Gy のdoseがあったようだ。
プリコンパイル済みバイナリではGUIは使えない。何が実行されているかは Geant4 B1 examples
などで画像検索してほしい。