diff --git a/corsika/detail/modules/tracking/TrackingLeapFrogCurved.inl b/corsika/detail/modules/tracking/TrackingLeapFrogCurved.inl index 009be7c63610710d1ab7c1d0113518ff38dc7b68..4542f2e56289d08f57bf2f794681fa3598a80f1d 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,