From cc13c82c1ae0d79fcb944f1a3181b7fb07f97c87 Mon Sep 17 00:00:00 2001
From: Andre Schmidt <schmidt-a@iklx288.ikp.kit.edu>
Date: Tue, 13 Oct 2020 17:50:43 +0200
Subject: [PATCH] min distance is no longer steplength

---
 Framework/Cascade/Cascade.h                    | 17 +++++++++++------
 Processes/ObservationPlane/ObservationPlane.cc |  2 +-
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/Framework/Cascade/Cascade.h b/Framework/Cascade/Cascade.h
index 1b41d0a68..9896259cb 100644
--- a/Framework/Cascade/Cascade.h
+++ b/Framework/Cascade/Cascade.h
@@ -408,7 +408,7 @@ namespace corsika::cascade {
 
       // determine steplength for the magnetic field
       // because Steplength should not be min_distance
-      /*
+      
       int chargeNumber;
 	    if (corsika::particles::IsNucleus(vParticle.GetPID())) {
 	      chargeNumber = vParticle.GetNuclearZ();
@@ -419,16 +419,21 @@ namespace corsika::cascade {
 	    auto magneticfield = currentLogicalVolumeNode->GetModelProperties().GetMagneticField(vParticle.GetPosition());
       geometry::Vector<dimensionless_d> const directionBefore = vParticle.GetMomentum().normalized();
 	    auto c = directionBefore.cross(magneticfield) * chargeNumber * corsika::units::constants::c * 1_eV / 
-               (vParticle.GetMomentum().norm() * 1_V)
+               (vParticle.GetMomentum().norm() * 1_V);
 	    LengthType Steplength = min_distance;
 	    if (chargeNumber != 0) {
 	      Steplength = sqrt(2 / c.squaredNorm() * (sqrt(c.squaredNorm() * min_distance * min_distance + 1) -1));
         std::cout << "Steplength " << Steplength << std::endl;
-	    } 
-	    */
+	    }
+      if (Steplength == 0_m) {
+        Steplength = min_distance;
+      }
+	    
 	    // This formula hasnt been tested
 	    
-      auto [position, direction, L2] = fTracking.MagneticStep(vParticle, min_distance);
+      //auto [position, direction, L2] = fTracking.MagneticStep(vParticle, min_distance);
+      auto [position, direction, L2] = fTracking.MagneticStep(vParticle, Steplength);
+      
       //histL2(L2);
       histLlog2(L2);
       int pdg = static_cast<int>(particles::GetPDG(vParticle.GetPID()));
@@ -481,7 +486,7 @@ namespace corsika::cascade {
               
               
               
-     int chargeNumber = 0;
+     //int chargeNumber = 0;
         if (corsika::particles::IsNucleus(vParticle.GetPID())) {
         	chargeNumber = vParticle.GetNuclearZ();
         } else {
diff --git a/Processes/ObservationPlane/ObservationPlane.cc b/Processes/ObservationPlane/ObservationPlane.cc
index 036bbcacf..ff70be5fe 100644
--- a/Processes/ObservationPlane/ObservationPlane.cc
+++ b/Processes/ObservationPlane/ObservationPlane.cc
@@ -71,7 +71,7 @@ LengthType ObservationPlane::MaxStepLength(setup::Stack::ParticleType const& vPa
   auto magneticfield = currentLogicalVolumeNode->GetModelProperties().GetMagneticField(vParticle.GetPosition());
   auto direction = trajectory.GetV0().normalized();
   
-  if (chargeNumber != 0 && plane_.GetNormal().dot(trajectory.GetV0().cross(magneticfield)) * 1_s / 1_m / 1_T > 1e-6) {
+  if (chargeNumber != 0 && abs(plane_.GetNormal().dot(trajectory.GetV0().cross(magneticfield))) * 1_s / 1_m / 1_T > 1e-6) {
     auto const* currentLogicalVolumeNode = vParticle.GetNode();
     auto magneticfield = currentLogicalVolumeNode->GetModelProperties().GetMagneticField(vParticle.GetPosition());
     auto k = chargeNumber * corsika::units::constants::c * 1_eV / (vParticle.GetMomentum().norm() * 1_V);
-- 
GitLab