diff --git a/Framework/Cascade/Cascade.h b/Framework/Cascade/Cascade.h index 9a0ce724302d1665dc539a7265be72d79286eb57..90df44a82e23d15fac2f22cdb233f943ac552bc2 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 c16dd44b17e6f0b861d9eaa8903031e33026f06c..fd89415abac9318d5979e596f117e8915c550d28 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