From 2c4d10ec7718a680f58f0bf998b37314420f3b2f Mon Sep 17 00:00:00 2001
From: ralfulrich <ralf.ulrich@kit.edu>
Date: Tue, 26 Jan 2021 13:00:32 +0100
Subject: [PATCH] implemented Max's comments

---
 .../detail/framework/geometry/FourVector.inl  |  2 +-
 corsika/detail/framework/geometry/Point.inl   |  2 +-
 corsika/detail/framework/geometry/Vector.inl  |  2 +-
 corsika/detail/media/WeightProvider.inl       |  2 +-
 corsika/framework/process/BaseProcess.hpp     | 22 +++++-
 .../framework/process/ContinuousProcess.hpp   |  3 -
 .../process/ContinuousProcessIndex.hpp        |  6 ++
 corsika/framework/process/ProcessSequence.hpp | 72 +++++++++----------
 corsika/framework/process/ProcessTraits.hpp   | 28 ++++----
 .../process/SwitchProcessSequence.hpp         | 61 +++++-----------
 modules/conex                                 |  2 +-
 modules/data                                  |  2 +-
 tests/framework/testGeometry.cpp              | 13 ++--
 tests/framework/testProcessSequence.cpp       | 32 ++++-----
 14 files changed, 119 insertions(+), 130 deletions(-)

diff --git a/corsika/detail/framework/geometry/FourVector.inl b/corsika/detail/framework/geometry/FourVector.inl
index 6c0a039e5..135790bfc 100644
--- a/corsika/detail/framework/geometry/FourVector.inl
+++ b/corsika/detail/framework/geometry/FourVector.inl
@@ -95,7 +95,7 @@ namespace corsika {
 
   template <typename TTimeType, typename TSpaceVecType>
   typename FourVector<TTimeType, TSpaceVecType>::norm_type
-      FourVector<TTimeType, TSpaceVecType>::operator*(FourVector const& b) {
+  FourVector<TTimeType, TSpaceVecType>::operator*(FourVector const& b) {
     if constexpr (std::is_same<time_type, decltype(std::declval<space_type>() / meter *
                                                    second)>::value)
       return timeLike_ * b.timeLike_ * constants::cSquared - spaceLike_.norm();
diff --git a/corsika/detail/framework/geometry/Point.inl b/corsika/detail/framework/geometry/Point.inl
index e424812f0..45c6900f5 100644
--- a/corsika/detail/framework/geometry/Point.inl
+++ b/corsika/detail/framework/geometry/Point.inl
@@ -97,7 +97,7 @@ namespace corsika {
 
   inline std::ostream& operator<<(std::ostream& os, corsika::Point const& p) {
     auto const& qv = p.getCoordinates();
-    os << qv << " m";
+    os << qv << " (ref:" << fmt::ptr(p.getCoordinateSystem()) << ")";
     return os;
   }
 
diff --git a/corsika/detail/framework/geometry/Vector.inl b/corsika/detail/framework/geometry/Vector.inl
index 2ecc82e65..ff968693f 100644
--- a/corsika/detail/framework/geometry/Vector.inl
+++ b/corsika/detail/framework/geometry/Vector.inl
@@ -232,7 +232,7 @@ namespace corsika {
   inline std::ostream& operator<<(std::ostream& os,
                                   corsika::Vector<TDimension> const& v) {
     auto const& qv = v.getComponents();
-    os << qv;
+    os << qv << " (ref:" << fmt::ptr(v.getCoordinateSystem()) << ")";
     return os;
   }
 
diff --git a/corsika/detail/media/WeightProvider.inl b/corsika/detail/media/WeightProvider.inl
index af9849aa3..c075b2363 100644
--- a/corsika/detail/media/WeightProvider.inl
+++ b/corsika/detail/media/WeightProvider.inl
@@ -20,7 +20,7 @@ namespace corsika {
 
   template <class AConstIterator, class BConstIterator>
   typename WeightProviderIterator<AConstIterator, BConstIterator>::value_type
-      WeightProviderIterator<AConstIterator, BConstIterator>::operator*() const {
+  WeightProviderIterator<AConstIterator, BConstIterator>::operator*() const {
     return ((*aIter_) * (*bIter_)).magnitude();
   }
 
diff --git a/corsika/framework/process/BaseProcess.hpp b/corsika/framework/process/BaseProcess.hpp
index 55572291c..b8c96a54f 100644
--- a/corsika/framework/process/BaseProcess.hpp
+++ b/corsika/framework/process/BaseProcess.hpp
@@ -8,7 +8,7 @@
 
 #pragma once
 
-//#include <corsika/framework/process/ProcessTraits.hpp>
+#include <corsika/framework/process/ProcessTraits.hpp>
 
 #include <type_traits>
 
@@ -43,8 +43,28 @@ namespace corsika {
     const TDerived& ref() const { return static_cast<const TDerived&>(*this); }
 
   public:
+    //! Default number of processes ist just one, obviously
+    static unsigned int constexpr getNumberOfProcesses() { return 1; }
+
     // Base processor type for use in other template classes
     using process_type = TDerived;
   };
 
+  /**
+   * ProcessTraits specialization
+   **/
+  template <typename TProcess>
+  struct is_process<
+      TProcess,
+      std::enable_if_t<std::is_base_of_v<BaseProcess<typename std::decay_t<TProcess>>,
+                                         typename std::decay_t<TProcess>>>>
+      : std::true_type {};
+
+  template <typename TProcess, int N>
+  struct count_processes<TProcess, N,
+                         typename std::enable_if_t<is_process_v<TProcess> &&
+                                                   !is_process_sequence_v<TProcess>>> {
+    static unsigned int constexpr count = N + 1;
+  };
+
 } // namespace corsika
diff --git a/corsika/framework/process/ContinuousProcess.hpp b/corsika/framework/process/ContinuousProcess.hpp
index 521cb0ee2..51d73d332 100644
--- a/corsika/framework/process/ContinuousProcess.hpp
+++ b/corsika/framework/process/ContinuousProcess.hpp
@@ -64,9 +64,6 @@ namespace corsika {
   template <typename TProcess, int N>
   struct count_continuous<TProcess, N,
                           typename std::enable_if_t<is_continuous_process_v<TProcess>>> {
-    // std::is_base_of_v<
-    //                      ContinuousProcess<typename std::decay_t<TProcess>>,
-    //                      typename std::decay_t<TProcess>>>> {
     enum { count = N + 1 };
   };
 
diff --git a/corsika/framework/process/ContinuousProcessIndex.hpp b/corsika/framework/process/ContinuousProcessIndex.hpp
index 4cba88fde..bc2617d2b 100644
--- a/corsika/framework/process/ContinuousProcessIndex.hpp
+++ b/corsika/framework/process/ContinuousProcessIndex.hpp
@@ -10,6 +10,12 @@
 
 namespace corsika {
 
+  /**
+   * To index individual processes (continuous processes) inside a
+   * ProcessSequence.
+   *
+   **/
+
   class ContinuousProcessIndex {
   public:
     ContinuousProcessIndex(int const id)
diff --git a/corsika/framework/process/ProcessSequence.hpp b/corsika/framework/process/ProcessSequence.hpp
index d344673c6..d909d0715 100644
--- a/corsika/framework/process/ProcessSequence.hpp
+++ b/corsika/framework/process/ProcessSequence.hpp
@@ -28,26 +28,19 @@
 
 namespace corsika {
 
-  /*
-  template <typename TProcess1, typename TProcess2 = NullModel, int IndexStart = 0,
-            int IndexProcess1 = count_continuous<TProcess1>::count,
-            int IndexProcess2 =
-                count_continuous<TProcess1, count_continuous<TProcess2>::count>::count>
-  class ProcessSequence;
-  */
-
-  /**
-   * traits class to count ContinuousProcess-es, specialized for ProcessSequence-es
-   **/
-  //  template <typename TProcess1, typename TProcess2, int N>
-  // struct count_continuous<ProcessSequence<TProcess1, TProcess2>, N> {
-  // enum { count = N + ProcessSequence<TProcess1,TProcess2>::nContinuous };
-  //};
-
   template <typename TProcess, int N>
   struct count_continuous<TProcess, N,
                           typename std::enable_if_t<is_process_sequence_v<TProcess>>> {
-    enum { count = N + std::decay_t<TProcess>::nContinuous };
+    static unsigned int constexpr count =
+        N + std::decay_t<TProcess>::getNumberOfProcesses();
+  };
+
+  template <typename TProcess, int N>
+  struct count_processes<TProcess, N,
+                         typename std::enable_if_t<is_process_v<TProcess> &&
+                                                   is_process_sequence_v<TProcess>>> {
+    static unsigned int constexpr count =
+        N + std::decay_t<TProcess>::getNumberOfProcesses();
   };
 
   /**
@@ -69,17 +62,15 @@ namespace corsika {
    * Template parameters:
    *  - TProcess1 is of type BaseProcess, either a dedicatd process, or a ProcessSequence
    *  - TProcess2 is of type BaseProcess, either a dedicatd process, or a ProcessSequence
-   *  - IndexStart, IndexProcess1, IndexProcess2 are to count and index each
+   *  - ProcessIndexOffset, IndexOfProcess1, IndexOfProcess2 are to count and index each
    *ContinuousProcess in the entire process-chain
    **/
 
-  template <typename TProcess1, typename TProcess2 = NullModel, int IndexStart = 0,
-            int IndexProcess1 = count_continuous<
-                TProcess1, count_continuous<TProcess2, IndexStart>::count>::count,
-            int IndexProcess2 = count_continuous<TProcess2, IndexStart>::count>
-  //  template <typename TProcess1, typename TProcess2, int IndexStart, int
-  //  IndexProcess1,
-  //        int IndexProcess2>
+  template <typename TProcess1, typename TProcess2 = NullModel,
+            int ProcessIndexOffset = 0,
+            int IndexOfProcess1 = count_processes<
+                TProcess1, count_processes<TProcess2, ProcessIndexOffset>::count>::count,
+            int IndexOfProcess2 = count_processes<TProcess2, ProcessIndexOffset>::count>
   class ProcessSequence : public BaseProcess<ProcessSequence<TProcess1, TProcess2>> {
 
     using process1_type = typename std::decay_t<TProcess1>;
@@ -92,19 +83,14 @@ namespace corsika {
     static bool constexpr t2SwitchProcSeq = is_switch_process_sequence_v<process2_type>;
 
     // make sure only BaseProcess types TProcess1/2 are passed
-    static_assert(is_base_process_v<process1_type>,
+    static_assert(is_process_v<process1_type>,
                   "can only use process derived from BaseProcess in "
                   "ProcessSequence, for Process 1");
-    static_assert(is_base_process_v<process2_type>,
+    static_assert(is_process_v<process2_type>,
                   "can only use process derived from BaseProcess in "
                   "ProcessSequence, for Process 2");
 
   public:
-    /**
-     * static counter to uniquely index (count) all ContinuousProcess in sequence.
-     **/
-    enum { nContinuous = IndexProcess1 };
-
     // resource management
     ProcessSequence() = delete; // only initialized objects
     ProcessSequence(ProcessSequence const&) = default;
@@ -196,9 +182,16 @@ namespace corsika {
         TSecondaryView& view, [[maybe_unused]] InverseTimeType decay_inv_select,
         [[maybe_unused]] InverseTimeType decay_inv_sum = InverseTimeType::zero());
 
+    /**
+     * static counter to uniquely index (count) all ContinuousProcess in switch sequence.
+     **/
+    static unsigned int constexpr getNumberOfProcesses() { return numberOfProcesses_; }
+
   private:
     TProcess1 A_; /// process/list A, this is a reference, if possible
     TProcess2 B_; /// process/list B, this is a reference, if possible
+
+    static unsigned int constexpr numberOfProcesses_ = IndexOfProcess1; // static counter
   };
 
   /**
@@ -227,7 +220,7 @@ namespace corsika {
 
   template <typename... TProcesses, typename TProcess1>
   inline typename std::enable_if_t<
-      is_base_process_v<typename std::decay_t<TProcess1>>,
+      is_process_v<typename std::decay_t<TProcess1>>,
       ProcessSequence<TProcess1, decltype(make_sequence(std::declval<TProcesses>()...))>>
   make_sequence(TProcess1&& vA, TProcesses&&... vBs) {
     return ProcessSequence<TProcess1,
@@ -244,11 +237,10 @@ namespace corsika {
    * \param vB needs to derive BaseProcess or ProcessSequence
    **/
   template <typename TProcess1, typename TProcess2>
-  inline
-      typename std::enable_if_t<is_base_process_v<typename std::decay_t<TProcess1>> &&
-                                    is_base_process_v<typename std::decay_t<TProcess2>>,
-                                ProcessSequence<TProcess1, TProcess2>>
-      make_sequence(TProcess1&& vA, TProcess2&& vB) {
+  inline typename std::enable_if_t<is_process_v<typename std::decay_t<TProcess1>> &&
+                                       is_process_v<typename std::decay_t<TProcess2>>,
+                                   ProcessSequence<TProcess1, TProcess2>>
+  make_sequence(TProcess1&& vA, TProcess2&& vB) {
     return ProcessSequence<TProcess1, TProcess2>(vA, vB);
   }
 
@@ -261,7 +253,7 @@ namespace corsika {
    * \param vA needs to derive from BaseProcess or ProcessSequence
    **/
   template <typename TProcess>
-  inline typename std::enable_if_t<is_base_process_v<typename std::decay_t<TProcess>>,
+  inline typename std::enable_if_t<is_process_v<typename std::decay_t<TProcess>>,
                                    ProcessSequence<TProcess, NullModel>>
   make_sequence(TProcess&& vA) {
     return ProcessSequence<TProcess, NullModel>(vA, NullModel());
@@ -274,7 +266,7 @@ namespace corsika {
   struct is_process_sequence<ProcessSequence<TProcess1, TProcess2>> : std::true_type {
     // only switch on for BaseProcesses
     template <typename std::enable_if_t<
-        is_base_process_v<TProcess1> && is_base_process_v<TProcess2>, int>>
+        is_process_v<TProcess1> && is_process_v<TProcess2>, int>>
     is_process_sequence() {}
   };
 
diff --git a/corsika/framework/process/ProcessTraits.hpp b/corsika/framework/process/ProcessTraits.hpp
index 104a40711..b08318093 100644
--- a/corsika/framework/process/ProcessTraits.hpp
+++ b/corsika/framework/process/ProcessTraits.hpp
@@ -12,30 +12,18 @@
  * \file ProcessTraits.hpp
  */
 
-//#include <corsika/framework/process/BaseProcess.hpp>
-//#include <corsika/framework/process/ProcessSequence.hpp>
-//#include <corsika/framework/process/SwitchProcessSequence.hpp>
-//#include <corsika/framework/process/ContinuousProcess.hpp>
-
 #include <type_traits>
 
 namespace corsika {
 
   /**
-   * A traits marker to identify BaseProcess
+   * A traits marker to identify BaseProcess, thus any type of process
    */
   template <typename TProcess, typename Enable = void>
-  struct is_base_process : std::false_type {};
-
-  template <typename TProcess>
-  bool constexpr is_base_process_v = is_base_process<TProcess>::value;
+  struct is_process : std::false_type {};
 
   template <typename TProcess>
-  struct is_base_process<
-      TProcess,
-      std::enable_if_t<std::is_base_of_v<BaseProcess<typename std::decay_t<TProcess>>,
-                                         typename std::decay_t<TProcess>>>>
-      : std::true_type {};
+  bool constexpr is_process_v = is_process<TProcess>::value;
 
   /**
    * A traits marker to identify ContinuousProcess
@@ -79,7 +67,15 @@ namespace corsika {
    **/
   template <typename TProcess, int N = 0, typename Enable = void>
   struct count_continuous {
-    enum { count = N };
+    static unsigned int constexpr count = N;
+  };
+
+  /**
+   * traits class to count any type of Process, general version
+   **/
+  template <typename TProcess, int N = 0, typename Enable = void>
+  struct count_processes {
+    static unsigned int constexpr count = N;
   };
 
 } // namespace corsika
diff --git a/corsika/framework/process/SwitchProcessSequence.hpp b/corsika/framework/process/SwitchProcessSequence.hpp
index df951154a..dcf4b214e 100644
--- a/corsika/framework/process/SwitchProcessSequence.hpp
+++ b/corsika/framework/process/SwitchProcessSequence.hpp
@@ -30,32 +30,6 @@
 
 namespace corsika {
 
-  /*
-  template <typename TProcess1, typename TProcess2, typename TSelect, int IndexStart = 0,
-            int IndexProcess1 = count_continuous<TProcess1>::count,
-            int IndexProcess2 = count_continuous<TProcess2>::count>
-  class SwitchProcessSequence;
-  */
-
-  /**
-   * traits class to count ContinuousProcess-es, specialized for ProcessSequence-es
-   **/
-
-  /*  template <typename TProcess1, typename TProcess2, typename TSelect, int N>
-  struct count_continuous<SwitchProcessSequence<TProcess1, TProcess2, TSelect>, N> {
-    enum {
-      count = N + SwitchProcessSequence<TProcess1, TProcess2, TSelect>::nContinuous
-    };
-    };*/
-
-  /*
-  template <typename TSProcess, int N>
-  struct count_continuous<
-      TSProcess, N, typename std::enable_if_t<is_switch_process_sequence_v<TSProcess>>> {
-    enum { count = N + TSProcess::nContinuous };
-  };
-  */
-
   /**
    * enum for the process switch selection: identify if First or
    * Second process branch should be used.
@@ -87,16 +61,16 @@ namespace corsika {
      Template parameters:
       - TProcess1 is of type BaseProcess, either a dedicatd process, or a ProcessSequence
       - TProcess2 is of type BaseProcess, either a dedicatd process, or a ProcessSequence
-      - IndexStart, IndexProcess1, IndexProcess2 are to count and index each
+      - IndexFirstProcess, IndexOfProcess1, IndexOfProcess2 are to count and index each
   ContinuousProcess in the entire process-chain
 
-
      See also class \sa ProcessSequence
   **/
 
-  template <typename TProcess1, typename TProcess2, typename TSelect, int IndexStart = 0,
-            int IndexProcess1 = count_continuous<TProcess1, IndexStart>::count,
-            int IndexProcess2 = count_continuous<TProcess2, IndexProcess1>::count>
+  template <typename TProcess1, typename TProcess2, typename TSelect,
+            int IndexFirstProcess = 0,
+            int IndexOfProcess1 = count_processes<TProcess1, IndexFirstProcess>::count,
+            int IndexOfProcess2 = count_processes<TProcess2, IndexOfProcess1>::count>
   class SwitchProcessSequence
       : public BaseProcess<SwitchProcessSequence<TProcess1, TProcess2, TSelect>> {
 
@@ -107,10 +81,10 @@ namespace corsika {
     static bool constexpr t2ProcSeq = is_process_sequence_v<process2_type>;
 
     // make sure only BaseProcess types TProcess1/2 are passed
-    static_assert(is_base_process_v<process1_type>,
+    static_assert(is_process_v<process1_type>,
                   "can only use process derived from BaseProcess in "
                   "SwitchProcessSequence, for Process 1");
-    static_assert(is_base_process_v<process2_type>,
+    static_assert(is_process_v<process2_type>,
                   "can only use process derived from BaseProcess in "
                   "SwitchProcessSequence, for Process 2");
 
@@ -130,11 +104,6 @@ namespace corsika {
                   "ProcessSequence 2");
 
   public:
-    /**
-     * static counter to uniquely index (count) all ContinuousProcess in switch sequence.
-     **/
-    enum { nContinuous = IndexProcess2 };
-
     // resource management
     SwitchProcessSequence() = delete; // only initialized objects
     SwitchProcessSequence(SwitchProcessSequence const&) = default;
@@ -201,12 +170,19 @@ namespace corsika {
         TSecondaryView& view, [[maybe_unused]] InverseTimeType decay_inv_select,
         [[maybe_unused]] InverseTimeType decay_inv_sum = InverseTimeType::zero());
 
+    /**
+     * static counter to uniquely index (count) all ContinuousProcess in switch sequence.
+     **/
+    static unsigned int constexpr getNumberOfProcesses() { return numberOfProcesses_; }
+
   private:
     TSelect select_; /// selector functor to switch between branch a and b, this is a
                      /// reference, if possible
 
     TProcess1 A_; /// process branch a, this is a reference, if possible
     TProcess2 B_; /// process branch b, this is a reference, if possible
+
+    static unsigned int constexpr numberOfProcesses_ = IndexOfProcess2; // static counter
   };
 
   /**
@@ -221,11 +197,10 @@ namespace corsika {
    **/
 
   template <typename TProcess1, typename TProcess2, typename TSelect>
-  inline
-      typename std::enable_if_t<is_base_process_v<typename std::decay_t<TProcess1>> &&
-                                    is_base_process_v<typename std::decay_t<TProcess2>>,
-                                SwitchProcessSequence<TProcess1, TProcess2, TSelect>>
-      make_select(TProcess1&& vA, TProcess2&& vB, TSelect selector) {
+  inline typename std::enable_if_t<is_process_v<typename std::decay_t<TProcess1>> &&
+                                       is_process_v<typename std::decay_t<TProcess2>>,
+                                   SwitchProcessSequence<TProcess1, TProcess2, TSelect>>
+  make_select(TProcess1&& vA, TProcess2&& vB, TSelect selector) {
     return SwitchProcessSequence<TProcess1, TProcess2, TSelect>(vA, vB, selector);
   }
 
diff --git a/modules/conex b/modules/conex
index 180215204..820f042b6 160000
--- a/modules/conex
+++ b/modules/conex
@@ -1 +1 @@
-Subproject commit 180215204035fa17c5f6cacb42588dca85d171ca
+Subproject commit 820f042b6a055276d465437c74160ef7c199b646
diff --git a/modules/data b/modules/data
index fb7577314..8b76a9ca2 160000
--- a/modules/data
+++ b/modules/data
@@ -1 +1 @@
-Subproject commit fb7577314e5e3c837fa5a3006dc4f3c0146cabf7
+Subproject commit 8b76a9ca2599cd0ce1f204b17362eb06bbcf5277
diff --git a/tests/framework/testGeometry.cpp b/tests/framework/testGeometry.cpp
index a39201c04..e8847ee5e 100644
--- a/tests/framework/testGeometry.cpp
+++ b/tests/framework/testGeometry.cpp
@@ -26,18 +26,20 @@ using namespace corsika::testing;
 
 double constexpr absMargin = 1.0e-8;
 
-TEST_CASE("transformations between CoordinateSystems") {
+TEST_CASE("Geometry CoordinateSystems") {
 
   logging::set_level(logging::level::info);
-  corsika_logger->set_pattern("[%n:%^%-8l%$] custom pattern: %v");
+  corsika_logger->set_pattern("[%n:%^%-8l%$] %v");
 
   CoordinateSystemPtr rootCS = get_root_CoordinateSystem();
 
   QuantityVector<length_d> const coordinates{0_m, 0_m, 0_m};
   Point p1(rootCS, coordinates);
+  CORSIKA_LOG_INFO("Point p1={}", p1);
 
   QuantityVector<magnetic_flux_density_d> components{1. * tesla, 0. * tesla, 0. * tesla};
   Vector<magnetic_flux_density_d> v1(rootCS, components);
+  CORSIKA_LOG_INFO("Vector<magnetic_flux_density_d> v1={}", v1);
 
   CHECK((p1.getCoordinates() - coordinates).getNorm().magnitude() ==
         Approx(0).margin(absMargin));
@@ -46,6 +48,7 @@ TEST_CASE("transformations between CoordinateSystems") {
 
   SECTION("translations") {
     QuantityVector<length_d> const translationVector{0_m, 4_m, 0_m};
+    CORSIKA_LOG_INFO("QuantityVector<length_d> translationVector={}", translationVector);
 
     CoordinateSystemPtr translatedCS = make_translation(rootCS, translationVector);
 
@@ -184,7 +187,7 @@ TEST_CASE("transformations between CoordinateSystems") {
   }
 }
 
-TEST_CASE("CoordinateSystem hirarchy") {
+TEST_CASE("Geometry CoordinateSystem-hirarchy") {
 
   CoordinateSystemPtr rootCS = get_root_CoordinateSystem();
 
@@ -232,7 +235,7 @@ TEST_CASE("CoordinateSystem hirarchy") {
   CHECK((p1 - p6).getNorm().magnitude() == Approx(0).margin(absMargin));
 }
 
-TEST_CASE("Sphere") {
+TEST_CASE("Geometry Sphere") {
   CoordinateSystemPtr const& rootCS = get_root_CoordinateSystem();
   Point center(rootCS, {0_m, 3_m, 4_m});
   Sphere sphere(center, 5_m);
@@ -251,7 +254,7 @@ TEST_CASE("Sphere") {
   }
 }
 
-TEST_CASE("Trajectories") {
+TEST_CASE("Geometry Trajectories") {
   CoordinateSystemPtr rootCS = get_root_CoordinateSystem();
   Point r0(rootCS, {0_m, 0_m, 0_m});
 
diff --git a/tests/framework/testProcessSequence.cpp b/tests/framework/testProcessSequence.cpp
index 5ae3239e4..d2612bb88 100644
--- a/tests/framework/testProcessSequence.cpp
+++ b/tests/framework/testProcessSequence.cpp
@@ -297,7 +297,7 @@ struct DummyView {
   DummyData& parent() { return p_; }
 };
 
-TEST_CASE("Process Sequence General", "ProcessSequence") {
+TEST_CASE("ProcessSequence General", "ProcessSequence") {
 
   logging::set_level(logging::level::info);
   corsika_logger->set_pattern("[%n:%^%-8l%$]: %v");
@@ -307,11 +307,11 @@ TEST_CASE("Process Sequence General", "ProcessSequence") {
     Process1 m1(0);
     const Process4 m4(3);
 
-    CHECK(is_base_process_v<Process1>);
-    CHECK_FALSE(is_base_process_v<DummyData>);
-    CHECK(is_base_process_v<decltype(m4)>);
-    CHECK(is_base_process_v<decltype(Decay1(1))>);
-    CHECK(is_base_process_v<decltype(ContinuousProcess3{3, 3_m})>);
+    CHECK(is_process_v<Process1>);
+    CHECK_FALSE(is_process_v<DummyData>);
+    CHECK(is_process_v<decltype(m4)>);
+    CHECK(is_process_v<decltype(Decay1(1))>);
+    CHECK(is_process_v<decltype(ContinuousProcess3{3, 3_m})>);
   }
 
   SECTION("Check construction") {
@@ -326,8 +326,8 @@ TEST_CASE("Process Sequence General", "ProcessSequence") {
     CHECK(globalCount == 4);
 
     auto sequence1 = make_sequence(m1, m2, m3, m4);
-    CHECK(is_base_process_v<decltype(sequence1)>);
-    CHECK(is_base_process_v<decltype(m2)>);
+    CHECK(is_process_v<decltype(sequence1)>);
+    CHECK(is_process_v<decltype(m2)>);
     CHECK(is_process_sequence_v<decltype(sequence1)>);
     CHECK_FALSE(is_process_sequence_v<decltype(m2)>);
     CHECK_FALSE(is_switch_process_sequence_v<decltype(sequence1)>);
@@ -471,7 +471,7 @@ TEST_CASE("Process Sequence General", "ProcessSequence") {
   }
 }
 
-TEST_CASE("Switch Process Sequence", "ProcessSequence") {
+TEST_CASE("SwitchProcessSequence", "ProcessSequence") {
 
   logging::set_level(logging::level::info);
   corsika_logger->set_pattern("[%n:%^%-8l%$]: %v");
@@ -692,7 +692,7 @@ TEST_CASE("Switch Process Sequence", "ProcessSequence") {
   }
 }
 
-TEST_CASE("Continuous Process Indexing", "ProcessSequence") {
+TEST_CASE("ProcessSequence Indexing", "ProcessSequence") {
 
   logging::set_level(logging::level::info);
   corsika_logger->set_pattern("[%n:%^%-8l%$]: %v");
@@ -750,12 +750,12 @@ TEST_CASE("Continuous Process Indexing", "ProcessSequence") {
     int const switch_seq_n = count_continuous<decltype(switch_seq)>::count;
     int const sequence3_n = count_continuous<decltype(sequence3)>::count;
 
-    CHECK(decltype(sequence1)::nContinuous == 1);
-    CHECK(count_continuous<decltype(sequence1)>::count == 1);
-    CHECK(count_continuous<decltype(sequence2)>::count == 2);
-    CHECK(switch_seq_n == 3);
-    CHECK(sequence3_n == 4);
-    CHECK(count_continuous<decltype(sequence4)>::count == 4);
+    CHECK(decltype(sequence1)::getNumberOfProcesses() == 3);
+    CHECK(count_continuous<decltype(sequence1)>::count == 3);
+    CHECK(count_continuous<decltype(sequence2)>::count == 4);
+    CHECK(switch_seq_n == 7);
+    CHECK(sequence3_n == 9);
+    CHECK(count_continuous<decltype(sequence4)>::count == 9);
 
     std::cout << "switch_seq "
               << boost::typeindex::type_id<decltype(switch_seq)>().pretty_name()
-- 
GitLab