From e183d94579080c2eee05e3763f75b3a97f17f002 Mon Sep 17 00:00:00 2001
From: Maximilian Sackel <maximilian.sackel@tu-dortmund.de>
Date: Thu, 1 Oct 2020 09:28:38 +0000
Subject: [PATCH] Now stores interpolation tables in
 /home/maximilian/.local/opt/corsika/Data/PROPOSAL. PROPOSAL dir still have to
 be added to data submodule

---
 Documentation/Examples/em_shower.cc       | 3 ---
 Documentation/Examples/vertical_EAS.cc    | 3 ---
 Processes/Proposal/ProposalProcessBase.cc | 7 +++++++
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/Documentation/Examples/em_shower.cc b/Documentation/Examples/em_shower.cc
index d83cdacf5..5bc85b48c 100644
--- a/Documentation/Examples/em_shower.cc
+++ b/Documentation/Examples/em_shower.cc
@@ -130,9 +130,6 @@ int main(int argc, char** argv) {
   // setup processes, decays and interactions
 
   // PROPOSAL processs proposal{...};
-  PROPOSAL::InterpolationDef::path_to_tables = "~/.local/share/PROPOSAL/tables/";
-  PROPOSAL::InterpolationDef::path_to_tables_readonly = "~/.local/share/PROPOSAL/tables/";
-
   process::particle_cut::ParticleCut cut(10_GeV, false, true);
   process::proposal::Interaction proposal(env, cut);
   process::proposal::ContinuousProcess em_continuous(env, cut);
diff --git a/Documentation/Examples/vertical_EAS.cc b/Documentation/Examples/vertical_EAS.cc
index 738bd73e4..057db325a 100644
--- a/Documentation/Examples/vertical_EAS.cc
+++ b/Documentation/Examples/vertical_EAS.cc
@@ -185,9 +185,6 @@ int main(int argc, char** argv) {
   decaySibyll.PrintDecayConfig();
 
   // PROPOSAL processs proposal{...};
-  PROPOSAL::InterpolationDef::path_to_tables = "~/.local/share/PROPOSAL/tables/";
-  PROPOSAL::InterpolationDef::path_to_tables_readonly = "~/.local/share/PROPOSAL/tables/";
-
   process::particle_cut::ParticleCut cut{60_GeV, false, true};
   process::proposal::Interaction proposal(env, cut);
   process::proposal::ContinuousProcess em_continuous(env, cut);
diff --git a/Processes/Proposal/ProposalProcessBase.cc b/Processes/Proposal/ProposalProcessBase.cc
index 815f032b5..d2ab2a220 100644
--- a/Processes/Proposal/ProposalProcessBase.cc
+++ b/Processes/Proposal/ProposalProcessBase.cc
@@ -18,6 +18,7 @@
 #include <memory>
 #include <random>
 #include <tuple>
+#include <cstdlib>
 
 namespace corsika::process::proposal {
   bool ProposalProcessBase::CanInteract(particles::Code pcode) const {
@@ -50,6 +51,12 @@ namespace corsika::process::proposal {
     PROPOSAL::InterpolationDef::order_of_interpolation = 2;
     PROPOSAL::InterpolationDef::nodes_cross_section = 100;
     PROPOSAL::InterpolationDef::nodes_propagate = 1000;
+
+    //! If corsika data exist store interpolation tables to the corresponding
+    //! path, otherwise interpolation tables would only stored in main memory if
+    //! no explicit intrpolation def is specified.
+    if(auto data_path = std::getenv("CORSIKA_DATA"))
+        PROPOSAL::InterpolationDef::path_to_tables = std::string(data_path) + "/PROPOSAL";
   }
 
   size_t ProposalProcessBase::hash::operator()(const calc_key_t& p) const noexcept {
-- 
GitLab