G4Tubs.patch

これらは、JUPITERを開発する上で必要になったGeant4へのpatchです。
Geant4開発者とは全く無関係です。
質問・意見等、絶対に開発者へは送らないで下さい。

使用は自由ですが、このpatchを用いて不具合が起こった場合の保証は致しませんので
必ず自己責任でお願いします。

G4Tubsが、 "G4Tubs::DistanceToOut(p), point p is outside !?" とERRORを吐く問題について、 Inside(const G4ThreeVector& p) 関数中での、phi方向のBoundary checkに問題があるため (sPhiが負で、pPhiが正であると全てkOutsideが返ってくるようになっている)、Logicを変更した。
しかし依然として、r方向のBoundary checkでERRORを吐く。おそらく、Geant4の長さにおける 内部表現がミリメートルであるため、CDCを半径1500mmの円筒として計算すると、 r2 = p.x()*p.x() + p.y()*p.y() の計算のところで精度が足りなくなるためではないかと思われる。 ちなみに、Boundary checkに使われるkRadToleranceの精度は10^-9である。
なお、このbugは、phi方向のboundary checkに関しては、geant4.3.1で改善されている。

Patchの当て方

  1. patchファイルをとってきて、$G4INSTALL ディレクトリに置く。
  2. $G4INSTALLディレクトリ直下で
     % patch -p1 -s < Geant4.3.0-macosx.patch
    等と打つ。

HOME