オススメの可視化ドライバー

$ cmake \
-DGEANT4_USE_OPENGL_X11=ON \
-DGEANT4_USE_QT=ON \
-DGEANT4_USE_RAYTRACER_X11=ON \    # 必要に応じて

現状では、OpenGLQtの組み合わせが標準的かつ推奨です。 OpenGLは3D描画を担当し、 QtはGUIやウィンドウ管理を可能にするため、 インタラクティブなシミュレーションやデバッグに最適です。

RayTracerは高品質レンダリング用ドライバーです。 影や反射を含む静止画の生成やプレゼン資料の作成に最適です。 オプションで有効にしておけばOKです。

注釈

大学院生で使っていたときは、可視化ドライバーの組み合わせをいくつか順番に試して、うまくビルドできたものを使っていた気がします。

注釈

MotifやOpenInventor、DAWNなどのドライバーは、 メンテナンスやドキュメントが十分でないため、 これからわざわざ使う必要はないと思います。

注釈

自作の可視化ツールも作れるように設計されています。 Pythonのライブラリ(AltairPlotlyStreamlitなど)で 描画できたらおもしろそうです。

可視化ドライバーの選び方

Geant4は9種類の可視化ドライバーに対応しています。 しかし、初心者にとってドライバー選びは鬼門のひとつです。 理由として、ドライバー名が多く用途が分かりにくいことや、 OSや環境によって動作が不安定になることが挙げられます。

2022年の講習会スライドでは、用途に応じたドライバーの選び方が整理されていました。

利用目的

オススメのドライバー

実行/描画ウィンドウをまとめたい

Qt

リアルタイムでグリグリしたい

Qt, OpenGL

複雑な構造体を描画したい

RayTracer

描画した要素をピッキングしたい

Qt、HepRep

ブラウザでグリグリ表示したい

VRML

高解像度のポスター印刷したい

DAWN

放射線治療などで使いたい

gMocren

素早く構造体を点検したい

ASCIITree

DAWNVRMLHepRepは形式はGeant4のデフォルトで出力できるようなのですが、 それらの形式を開くことができる外部ビューワーが見つかりませんでした。 開発やメンテナンスも停滞しているようなので、積極的に選択する理由はないです。

利用可能なドライバー

Geant4ノアプリケーションを実行すると、現在の環境で利用可能な可視化ドライバーを確認できます。 たとえば、exampleB1を実行した場合は次のようになっています。

$ ./exampleB1  # Geant4アプリケーションを実行
Available UI session types: [ Qt, tcsh, csh ]
**************************************************************
 Geant4 version Name: geant4-11-02-patch-01 [MT]   (16-February-2024)
...(省略)...
*************************************************************
...(省略)...
Registered graphics systems are:
  ASCIITree (ATree)
  DAWNFILE (DAWNFILE)
  G4HepRepFile (HepRepFile)
  RayTracer (RayTracer)
  VRML2FILE (VRML2FILE)
  gMocrenFile (gMocrenFile)
  TOOLSSG_OFFSCREEN (TSG_OFFSCREEN)
  TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
  OpenGLImmediateQt (OGLIQt, OGLI)
  OpenGLStoredQt (OGLSQt, OGL, OGLS)
  OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK)
  OpenGLStoredX (OGLSX, OGLSQt_FALLBACK)
  RayTracerX (RayTracerX)
  Qt3D (Qt3D)
  TOOLSSG_X11_GLES (TSG_X11_GLES, TSGX11, TSG_QT_GLES_FALLBACK)
  TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG)
  TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
Default graphics system is: OGL (based on build flags).
Default window size hint is: 600x600-0+0 (based on G4VisManager initialisation).
...(省略)...

この場合、デフォルトはOGL(OpenGLStoredQtに対応)、 ウィンドウサイズは600x600となっています。

ドライバーを変更したい(/vis/open

可視化ドライバーは、マクロの/vis/openコマンドで変更できます。

以下は表示設定(/vis/open ドライバー名)を変更してexampleB1を実行した記録です。

ドライバーの種類

/vis/openの設定値

実行結果

デフォルト値

OGL

Qtが起動した

OpenGLStoredQt

OGL / OGLS / OGLSQt

Qtが起動した

OpenGLImmediateQt

OGLI / OGLIQt

Qtが起動した

OpenGLStoredX

OGLSX

(起動しなかった)

OpenGLImmediateX

OGLIX

(起動しなかった)

Qt3D

Qt3D

Qtが起動した

HepRep

HepRepFile

G4Data{N}.heprepが作成された

RayTracer

RayTracer

-

RayTracerX

RayTracerX

Xが起動した

VRML

VRML2FILE

g4_{NN}.wrlが作成された

DAWN

DAWNFILE

g4_{NNNN}.primが作成された

gMocren

gMocrenFile

g4_{NN}.wrl作成された

ASCIITree

ATree

-

とりあえずデフォルトのOGL(=OpenGLStoredQt)を使っておけば大丈夫なことが確認できました。

OpenGLStoredXOpenGLImmediateX はXが起動すると期待したのですが、illegal parameterという警告が表示されました。

HepRepDAWNVRMLgMocrenではQtインターフェイスが起動し、 ランを実行(/run/beamOn イベント数)するたびにファイルが生成されました。