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

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

ただ、このドライバー選択は初心者にとっては鬼門のひとつだと思います。 理由はどれが自分が使いたいものかよく分からないのと、 OSなどの環境によって動いたり動かなかったりすることもあるからです。

注釈

大学院生当時は、オプションを順番に試して、うまくビルドできたものを使っていました。

2022年の講習会スライドには、ドライバーごとのオススメ局面がまとめてありました。 その内容を参考に整理しておきます。

利用目的

オススメのドライバー

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

Qt

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

Qt, OpenGL

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

Qt、HepRep

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

RayTracer

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

VRML

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

DAWN

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

gMocren

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

ASCIITree

現状ではQtが一番モダンで使いやすいと思います。 OpenGLQtRayTracerはビルド時のオプションで有効にする必要があります。 うまくビルドできない場合は Geant4 Forumで同じような状況で質問しているひとがいないか探してみるとよいでしょう。 (たとえば"Geant4 visualization on macOS"など)

// 読みやすさのために改行しましたが、実際は一行にしてください
$ cmake
-DGEANT4_USE_OPENGL_X11=ON
-DGEANT4_USE_QT=ON
-DGEANT4_USE_RAYTRACER_X11=ON
-Dその他のオプション

DAWNVRMLHepRepはデフォルト利用できますが、どういうビューワーで開けばいいのかよく分かりません。 VRMLは、オンラインビューワー(IMAGEtoSTL)を見つけました。

利用可能なドライバー

$ ./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).
...(省略)...

実行したあとの画面出力の最初のあたりで、現在の環境で利用できるドライバーの一覧を確認できます。 ドライバーの選択は、可視化用マクロ(通常はvis.mac)の/vis/openコマンドで変更できます。

exampleB1の場合、/vis/open OGL 600x600-0+0に設定されているため、OpenGLStoredQtが起動します。

ドライバーの設定値

以下は表示設定(/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 イベント数)するたびにファイルが生成されました。