From bddf6ba4aa3f67f67182826bc710a890f560dc7d Mon Sep 17 00:00:00 2001
From: Remy Prechelt <prechelt@hawaii.edu>
Date: Tue, 18 May 2021 12:22:08 -1000
Subject: [PATCH] Remove Setup from PROPOSAL.

---
 .../modules/proposal/ContinuousProcess.inl    | 27 +++++++------------
 .../detail/modules/proposal/Interaction.inl   | 17 +++++-------
 .../modules/proposal/ProposalProcessBase.inl  |  7 ++---
 corsika/modules/proposal/Interaction.hpp      |  4 ---
 .../modules/proposal/ProposalProcessBase.hpp  |  5 ++--
 5 files changed, 20 insertions(+), 40 deletions(-)

diff --git a/corsika/detail/modules/proposal/ContinuousProcess.inl b/corsika/detail/modules/proposal/ContinuousProcess.inl
index b8403dc14..e65046c23 100644
--- a/corsika/detail/modules/proposal/ContinuousProcess.inl
+++ b/corsika/detail/modules/proposal/ContinuousProcess.inl
@@ -16,12 +16,6 @@
 #include <corsika/framework/utility/COMBoost.hpp>
 #include <corsika/framework/core/Logging.hpp>
 
-#include <corsika/setup/SetupEnvironment.hpp>
-#include <corsika/setup/SetupStack.hpp>
-#include <corsika/setup/SetupTrajectory.hpp>
-
-#include <iostream>
-
 namespace corsika::proposal {
 
   inline void ContinuousProcess::buildCalculator(Code code,
@@ -54,13 +48,12 @@ namespace corsika::proposal {
     calc[std::make_pair(comp.getHash(), code)] = std::move(calculator);
   }
 
-  template <>
-  inline ContinuousProcess::ContinuousProcess(setup::Environment const& _env)
+  template <typename TEnvironment>
+  inline ContinuousProcess::ContinuousProcess(TEnvironment const& _env)
       : ProposalProcessBase(_env) {}
 
-  template <>
-  inline void ContinuousProcess::scatter(setup::Stack::particle_type& vP,
-                                         HEPEnergyType const& loss,
+  template <typename TParticle>
+  inline void ContinuousProcess::scatter(TParticle& vP, HEPEnergyType const& loss,
                                          GrammageType const& grammage) {
 
     // get or build corresponding calculators
@@ -91,9 +84,9 @@ namespace corsika::proposal {
     vP.setMomentum(MomentumVector(vP_dir.getCoordinateSystem(), vec));
   }
 
-  template <>
-  inline ProcessReturn ContinuousProcess::doContinuous(setup::Stack::particle_type& vP,
-                                                       setup::Trajectory const& vT,
+  template <typename TParticle, typename TTrajectory>
+  inline ProcessReturn ContinuousProcess::doContinuous(TParticle& vP,
+                                                       TTrajectory const& vT,
                                                        bool const) {
 
     if (!canInteract(vP.getPID())) return ProcessReturn::Ok;
@@ -119,9 +112,9 @@ namespace corsika::proposal {
     return ProcessReturn::Ok;
   }
 
-  template <>
-  inline LengthType ContinuousProcess::getMaxStepLength(
-      setup::Stack::particle_type const& vP, setup::Trajectory const& vT) {
+  template <typename TParticle, typename TTrajectory>
+  inline LengthType ContinuousProcess::getMaxStepLength(TParticle const& vP,
+                                                        TTrajectory const& vT) {
     auto const code = vP.getPID();
     if (!canInteract(code)) return meter * std::numeric_limits<double>::infinity();
 
diff --git a/corsika/detail/modules/proposal/Interaction.inl b/corsika/detail/modules/proposal/Interaction.inl
index 019d31270..c45059414 100644
--- a/corsika/detail/modules/proposal/Interaction.inl
+++ b/corsika/detail/modules/proposal/Interaction.inl
@@ -12,10 +12,6 @@
 #include <corsika/framework/utility/COMBoost.hpp>
 #include <corsika/framework/core/PhysicalUnits.hpp>
 
-#include <corsika/setup/SetupEnvironment.hpp>
-#include <corsika/setup/SetupStack.hpp>
-#include <corsika/setup/SetupTrajectory.hpp>
-
 #include <limits>
 #include <memory>
 #include <random>
@@ -23,8 +19,8 @@
 
 namespace corsika::proposal {
 
-  template <>
-  inline Interaction::Interaction(setup::Environment const& _env)
+  template <typename TEnvironment>
+  inline Interaction::Interaction(TEnvironment const& _env)
       : ProposalProcessBase(_env) {}
 
   inline void Interaction::buildCalculator(Code code, NuclearComposition const& comp) {
@@ -52,8 +48,8 @@ namespace corsika::proposal {
         PROPOSAL::make_interaction(c, true));
   }
 
-  template <>
-  inline ProcessReturn Interaction::doInteraction(setup::StackView& view) {
+  template <typename TStackView>
+  inline ProcessReturn Interaction::doInteraction(TStackView& view) {
 
     auto const projectile = view.getProjectile();
 
@@ -106,9 +102,8 @@ namespace corsika::proposal {
     return ProcessReturn::Ok;
   }
 
-  template <>
-  inline GrammageType Interaction::getInteractionLength(
-      setup::Stack::particle_type const& projectile) {
+  template <typename TParticle>
+  inline GrammageType Interaction::getInteractionLength(TParticle const& projectile) {
 
     if (canInteract(projectile.getPID())) {
       auto c = getCalculator(projectile, calc);
diff --git a/corsika/detail/modules/proposal/ProposalProcessBase.inl b/corsika/detail/modules/proposal/ProposalProcessBase.inl
index bc497ea94..0633df0c6 100644
--- a/corsika/detail/modules/proposal/ProposalProcessBase.inl
+++ b/corsika/detail/modules/proposal/ProposalProcessBase.inl
@@ -12,10 +12,6 @@
 #include <corsika/framework/core/PhysicalUnits.hpp>
 #include <corsika/framework/utility/COMBoost.hpp>
 
-#include <corsika/setup/SetupEnvironment.hpp>
-#include <corsika/setup/SetupStack.hpp>
-#include <corsika/setup/SetupTrajectory.hpp>
-
 #include <cstdlib>
 #include <iostream>
 #include <limits>
@@ -30,7 +26,8 @@ namespace corsika::proposal {
     return false;
   }
 
-  inline ProposalProcessBase::ProposalProcessBase(setup::Environment const& _env)
+  template <typename TEnvironment>
+  inline ProposalProcessBase::ProposalProcessBase(TEnvironment const& _env)
       : RNG_(RNGManager::getInstance().getRandomStream("proposal")) {
     _env.getUniverse()->walk([&](auto& vtn) {
       if (vtn.hasModelProperties()) {
diff --git a/corsika/modules/proposal/Interaction.hpp b/corsika/modules/proposal/Interaction.hpp
index 80a8a7864..b6f2fabba 100644
--- a/corsika/modules/proposal/Interaction.hpp
+++ b/corsika/modules/proposal/Interaction.hpp
@@ -16,12 +16,8 @@
 #include <corsika/framework/random/RNGManager.hpp>
 #include <corsika/framework/random/UniformRealDistribution.hpp>
 
-#include <corsika/media/Environment.hpp>
-
 #include <corsika/modules/proposal/ProposalProcessBase.hpp>
 
-#include <array>
-
 namespace corsika::proposal {
 
   //!
diff --git a/corsika/modules/proposal/ProposalProcessBase.hpp b/corsika/modules/proposal/ProposalProcessBase.hpp
index 3edb90720..d1231a5db 100644
--- a/corsika/modules/proposal/ProposalProcessBase.hpp
+++ b/corsika/modules/proposal/ProposalProcessBase.hpp
@@ -13,8 +13,6 @@
 #include <corsika/framework/core/ParticleProperties.hpp>
 #include <corsika/framework/random/RNGManager.hpp>
 
-#include <corsika/setup/SetupEnvironment.hpp>
-
 #include <array>
 
 namespace corsika::proposal {
@@ -83,7 +81,8 @@ namespace corsika::proposal {
     //! Store cut and  nuclear composition of the whole universe in media which are
     //! required for creating crosssections by proposal.
     //!
-    ProposalProcessBase(corsika::setup::Environment const& _env);
+    template <typename TEnvironment>
+    ProposalProcessBase(TEnvironment const& _env);
 
     //!
     //! Checks if a particle can be processed by proposal
-- 
GitLab