From d7a05a5f2f77a6a16763e79ce39ada5b4eebe830 Mon Sep 17 00:00:00 2001
From: ralfulrich <ralf.ulrich@kit.edu>
Date: Tue, 1 Jun 2021 09:07:59 +0200
Subject: [PATCH] another attempt to make cuved leap frog tracking more robust

---
 .../detail/modules/tracking/TrackingLeapFrogCurved.inl | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/corsika/detail/modules/tracking/TrackingLeapFrogCurved.inl b/corsika/detail/modules/tracking/TrackingLeapFrogCurved.inl
index 009be7c63..4542f2e56 100644
--- a/corsika/detail/modules/tracking/TrackingLeapFrogCurved.inl
+++ b/corsika/detail/modules/tracking/TrackingLeapFrogCurved.inl
@@ -106,7 +106,15 @@ namespace corsika {
       LengthType const gyroradius = convert_HEP_to_SI<MassType::dimension_type>(p_perp) *
                                     constants::c / (abs(charge) * magnitudeB);
 
-      double const maxRadians = 0.01; // maximal allowed deflection
+      if (gyroradius > 1e9_m) {
+        CORSIKA_LOG_WARN(
+            "CurvedLeapFrog is not very stable for extremely high gyroradius steps. "
+            "Rg={} -> straight tracking.",
+            gyroradius);
+        return getLinearTrajectory(particle);
+      }
+
+      double const maxRadians = 0.01;
       LengthType const steplimit = 2 * cos(maxRadians) * sin(maxRadians) * gyroradius;
       TimeType const steplimit_time = steplimit / initialVelocity.getNorm();
       CORSIKA_LOG_DEBUG("gyroradius {}, steplimit: {} = {}", gyroradius, steplimit,
-- 
GitLab