From ad793f822a1646e059c9b46274c08bf77bbe1334 Mon Sep 17 00:00:00 2001
From: Remy Prechelt <prechelt@hawaii.edu>
Date: Tue, 18 May 2021 10:35:50 -1000
Subject: [PATCH] Remove setup from ParticleCut.

---
 corsika/detail/modules/ParticleCut.inl | 11 ++++++-----
 corsika/modules/ParticleCut.hpp        | 16 ++++++++--------
 tests/modules/testParticleCut.cpp      |  1 +
 3 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/corsika/detail/modules/ParticleCut.inl b/corsika/detail/modules/ParticleCut.inl
index 04aff2d69..9fc69b4a9 100644
--- a/corsika/detail/modules/ParticleCut.inl
+++ b/corsika/detail/modules/ParticleCut.inl
@@ -8,7 +8,7 @@
 
 #pragma once
 
-#include <corsika/modules/ParticleCut.hpp>
+#include <corsika/framework/core/Logging.hpp>
 
 namespace corsika {
 
@@ -148,7 +148,8 @@ namespace corsika {
     return false; // this particle will not be removed/cut
   }
 
-  inline void ParticleCut::doSecondaries(corsika::setup::StackView& vS) {
+  template <typename TStackView>
+  inline void ParticleCut::doSecondaries(TStackView& vS) {
     auto particle = vS.begin();
     while (particle != vS.end()) {
       if (checkCutParticle(particle)) { particle.erase(); }
@@ -156,9 +157,9 @@ namespace corsika {
     }
   }
 
-  inline ProcessReturn ParticleCut::doContinuous(
-      corsika::setup::Stack::particle_type& particle, corsika::setup::Trajectory const&,
-      bool const) {
+  template <typename TParticle, typename TTrajectory>
+  inline ProcessReturn ParticleCut::doContinuous(TParticle& particle, TTrajectory const&,
+                                                 bool const) {
     CORSIKA_LOG_TRACE("ParticleCut::DoContinuous");
     if (checkCutParticle(particle)) {
       CORSIKA_LOG_TRACE("removing during continuous");
diff --git a/corsika/modules/ParticleCut.hpp b/corsika/modules/ParticleCut.hpp
index 7857c691f..e9df7a602 100644
--- a/corsika/modules/ParticleCut.hpp
+++ b/corsika/modules/ParticleCut.hpp
@@ -15,9 +15,6 @@
 #include <corsika/framework/process/SecondariesProcess.hpp>
 #include <corsika/framework/process/ContinuousProcess.hpp>
 
-#include <corsika/setup/SetupStack.hpp>
-#include <corsika/setup/SetupTrajectory.hpp>
-
 namespace corsika {
   /**
      simple ParticleCut process. Goes through the secondaries of an interaction and
@@ -52,13 +49,16 @@ namespace corsika {
     ParticleCut(std::unordered_map<Code const, HEPEnergyType const> const& eCuts,
                 bool const em, bool const inv);
 
-    void doSecondaries(corsika::setup::StackView&);
+    template <typename TStackView>
+    void doSecondaries(TStackView&);
+
+    template <typename TParticle, typename TTrajectory>
     ProcessReturn doContinuous(
-        corsika::setup::Stack::particle_type& vParticle,
-        corsika::setup::Trajectory const& vTrajectory,
+        TParticle& vParticle, TTrajectory const& vTrajectory,
         const bool limitFlag = false); // this is not used for ParticleCut
-    LengthType getMaxStepLength(corsika::setup::Stack::particle_type const&,
-                                corsika::setup::Trajectory const&) {
+
+    template <typename TParticle, typename TTrajectory>
+    LengthType getMaxStepLength(TParticle const&, TTrajectory const&) {
       return meter * std::numeric_limits<double>::infinity();
     }
 
diff --git a/tests/modules/testParticleCut.cpp b/tests/modules/testParticleCut.cpp
index 94ec3f27f..ea3a8bbe5 100644
--- a/tests/modules/testParticleCut.cpp
+++ b/tests/modules/testParticleCut.cpp
@@ -18,6 +18,7 @@
 
 #include <SetupTestStack.hpp>
 #include <SetupTestTrajectory.hpp>
+#include <corsika/setup/SetupTrajectory.hpp>
 
 #include <catch2/catch.hpp>
 
-- 
GitLab