From 8bab4ad0f6f9f0652460ee616612bb5c6e481a9e Mon Sep 17 00:00:00 2001
From: Maximilian Reininghaus <maximilian.reininghaus@kit.edu>
Date: Mon, 24 Jun 2019 17:09:35 +0200
Subject: [PATCH] throw exception if conversion impossible

---
 Processes/Sibyll/ParticleConversion.h | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/Processes/Sibyll/ParticleConversion.h b/Processes/Sibyll/ParticleConversion.h
index 4265441d3..62ccdda99 100644
--- a/Processes/Sibyll/ParticleConversion.h
+++ b/Processes/Sibyll/ParticleConversion.h
@@ -13,7 +13,7 @@
 
 #include <corsika/particles/ParticleProperties.h>
 
-#include <map>
+#include <string>
 
 namespace corsika::process::sibyll {
 
@@ -28,7 +28,14 @@ namespace corsika::process::sibyll {
   }
 
   corsika::particles::Code constexpr ConvertFromSibyll(SibyllCode pCode) {
-    return sibyll2corsika[static_cast<SibyllCodeIntType>(pCode) - minSibyll];
+    auto const s = static_cast<SibyllCodeIntType>(pCode);
+    auto const corsikaCode = sibyll2corsika[s - minSibyll];
+    if (corsikaCode == corsika::particles::Code::Unknown) {
+      throw std::runtime_error(std::string("SIBYLL/CORSIKA conversion of ")
+                                   .append(std::to_string(s))
+                                   .append(" impossible"));
+    }
+    return corsikaCode;
   }
 
   int constexpr ConvertToSibyllRaw(corsika::particles::Code pCode) {
-- 
GitLab