G4DynamicParticle.patch

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

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

pythiaでPrimary ParticleのDecay Tableを反応の末端まで作成し、G4HEPEvt形式で 読ませた場合に、G4DecayのDoIt関数が第一世代の娘粒子までしか追わないという問題を回避した。
ERRORを吐くのはG4Decayで、たとえばBからD-(第一世代娘粒子)に崩壊し、更にD-がPi (第二世代娘粒子)などに崩壊する、といったDecay Tableを読ませた際に、

" G4Decay::DoIt : decay table not defined for D-"

等のErrorが出る。これは読ませたはずの第二世代以降のDecay Tableが G4DynamicParticleでコピーコンストラクタを用いた際にコピーされないという設計による (どうやら、わざとそのような設計になっているらしい)。
変更点は、コピーコンストラクタ内で、G4DecayProducts* thePreAssignedDecayProductsを
newして、コピー元のDecayの情報がコピー先にも受け継がれるようにした点であるが、 この変更が他に悪影響を及ぼさぬか否かは定かではない。
ちなみに、第二世代以降の娘粒子のDecay TableがGeant4の中に定義されている場合は、 そちらのTableを見にいくのでG4DecayのErrorは出ない。

Patchの当て方

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

HOME