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で改善されている。