From f7175af2e17b05c9bf7c97062daec26f95053848 Mon Sep 17 00:00:00 2001
From: Andre Schmidt <schmidt-a@iklx288.ikp.kit.edu>
Date: Wed, 12 Aug 2020 18:58:29 +0200
Subject: [PATCH] few updates

---
 Framework/Cascade/Cascade.h           | 8 +++++---
 Processes/TrackingLine/TrackingLine.h | 2 ++
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/Framework/Cascade/Cascade.h b/Framework/Cascade/Cascade.h
index 9a0ce7243..90df44a82 100644
--- a/Framework/Cascade/Cascade.h
+++ b/Framework/Cascade/Cascade.h
@@ -260,15 +260,17 @@ namespace corsika::cascade {
   		// Second Movement
   		position = position + directionAfter * min_distance / 2;
       auto distance = position - vParticle.GetPosition();
-      //distance.norm() != min_distance for distance_interact, distance_decay if q != 0
+      //distance.norm() != min_distance if q != 0
       //small error can be neglected
+      if (distance.norm() != 0_m) {
       velocity = distance.normalized() * velocity.norm();
+      } //no velocity update for very small steps
       
       // here the particle is actually moved along the trajectory to new position:
       // std::visit(setup::ParticleUpdate<Particle>{vParticle}, step);
-      vParticle.SetMomentum(directionAfter.normalized() * vParticle.GetMomentum().GetNorm());
+      vParticle.SetMomentum(directionAfter.normalized() * vParticle.GetMomentum().norm());
       geometry::Line line(vParticle.GetPosition(), velocity);
-      geometry::Trajectory<geometry::Line> stepNew(line, distance.norm() / velocity.GetNorm());
+      geometry::Trajectory<geometry::Line> stepNew(line, distance.norm() / velocity.norm());
       vParticle.SetPosition(position);
       vParticle.SetTime(vParticle.GetTime() + distance.norm() / units::constants::c);
       std::cout << "New Position: " << vParticle.GetPosition().GetCoordinates() << std::endl;
diff --git a/Processes/TrackingLine/TrackingLine.h b/Processes/TrackingLine/TrackingLine.h
index c16dd44b1..fd89415ab 100644
--- a/Processes/TrackingLine/TrackingLine.h
+++ b/Processes/TrackingLine/TrackingLine.h
@@ -121,6 +121,7 @@ namespace corsika::process {
               std::cout << "no intersection (1)!" << std::endl;
               // what to do when this happens? (very unlikely)
             }
+            delete [] solutions;
 		
   		      // First Movement
   		      // assuming magnetic field does not change during movement
@@ -181,6 +182,7 @@ namespace corsika::process {
               std::cout << "no intersection (2)!" << std::endl;
               // what to do when this happens? (very unlikely)
             }
+            delete [] solutions;
 		
   		      // First Movement
   		      // assuming magnetic field does not change during movement
-- 
GitLab