G4TessellatedSolid を使うと、optical process が正しく動かない

GDML を使って複雑な形状を Geant4 に取り込む場合、G4TessellatedSolid という形状が使われます。四角形や三角形を組み合わせた、何でもありのポリゴンです。好きな形状を使えるので自由度は高いのですが、最新版の Geant4 9.3 (もしくはそれ以前も) を使うと、optical photon の伝搬に bug があります。

既に Geant4 の bugzilla に報告しましたが、どうやら G4TessellatedSolid の code の中で、photon が volume の表面にいるかどうかの判定をし間違えているようです。さらに丸め誤差が効いてくる問題もあるようで、誘電体の表面でばかり物理過程を起こす optical photon の場合には、大きな問題になる模様。

具体的には、屈折や反射を起こすべき場所で、その photon がどこにいるのかの判定を間違えるため、屈折も反射も起きないような症状が発生します。極端に屈折率の大きい物体から光が外気中に抜け出すような現象が出ると、この bug が原因のはずです。

3 月の学会発表に向けて、M1 がやっている Geant4 を使った研究の手伝いを最近しているんですが、学会までにこの bug が直ってくれないと結構大変。