Protection against div by 0 added.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 4 Jun 2013 08:37:03 +0000 (08:37 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 4 Jun 2013 08:37:03 +0000 (08:37 +0000)
PYTHIA8/pythia8175/src/StringFragmentation.cxx

index 28676b0..e1cb82f 100644 (file)
@@ -212,8 +212,11 @@ Vec4 StringEnd::kinematicsHadron( StringSystem& system) {
     double root  = sqrtpos( r1*r1 - 4. * r2 * r0 );
     if (abs(r2) < TINY || root < TINY) return Vec4(0., 0., 0., -1.); 
     xInvHad      = 0.5 * (root / abs(r2) - r1 / r2);
-    xDirHad      = (cM0 - cM3 * xInvHad) / (cM2 + cM4 * xInvHad); 
-
+    if (abs(cM2 + cM4 * xInvHad) > 1.e-10) {
+      xDirHad      = (cM0 - cM3 * xInvHad) / (cM2 + cM4 * xInvHad); 
+    } else {
+      xDirHad      = 1.e10 * (cM0 - cM3 * xInvHad); 
+    }
     // Define position of new trial vertex.
     xDirNew = (iDirNew == iDirOld) ? xDirOld - xDirHad : 1. - xDirHad;
     xInvNew = (iInvNew == iInvOld) ? xInvOld + xInvHad : xInvHad;