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

$ cmake \
-DGEANT4_USE_OPENGL_X11=ON \
-DGEANT4_USE_QT=ON \
-DGEANT4_USE_RAYTRACER_X11=ON \

現状では、OpenGLQtは必須、 RayTracerはオプションで有効にしておけばOKです。

注釈

大学院生で使っていたときは、オプションの組み合わせをいくつか順番に試して、 うまくビルドできたものを使っていた気がします。

注釈

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

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

Geant4は9種類の可視化ドライバーに対応しています。 ただし、この可視化ドライバーの選択は初心者にとって鬼門のひとつです。 なぜなら、初見のドライバー名が多く、自分の用途に適したものがよく分からないのと、 OSなどの環境によって動いたり動かなかったりすることもあるからです。

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

利用目的

オススメのドライバー

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

Qt

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

Qt, OpenGL

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

RayTracer

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

Qt、HepRep

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

VRML

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

DAWN

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

gMocren

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

ASCIITree

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

利用可能なドライバー

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

ユーザーアプリを実行したあとの画面出力で、現在の環境で利用できるドライバーの一覧を確認できます。

...(省略)...
Default graphics system is: OGL (based on build flags).
Default window size hint is: 600x600-0+0 (based on G4VisManager initialisation).
...(省略)...

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

ドライバーを変更したい(/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 イベント数)するたびにファイルが生成されました。