From 32c94f8ba8781d1a71d55478d54dca47442ef9d8 Mon Sep 17 00:00:00 2001
From: ralfulrich <ralf.ulrich@kit.edu>
Date: Thu, 24 Jan 2019 00:18:45 +0100
Subject: [PATCH] times in COAST comes in seconds not ns...

---
 COAST/COASTProcess.cc               |  5 +++--
 COAST/COASTProcess.h                |  3 ++-
 COAST/COASTStack.h                  | 12 ++++++------
 COAST/COASTUserLib.cc               |  8 +++-----
 COAST/ParticleConversion.cc         |  2 +-
 COAST/ParticleConversion.h          | 29 +++++++++++++++--------------
 Framework/Particles/NuclearData.xml | 11 +++++++----
 7 files changed, 37 insertions(+), 33 deletions(-)

diff --git a/COAST/COASTProcess.cc b/COAST/COASTProcess.cc
index d362bc044..3f4281b4d 100644
--- a/COAST/COASTProcess.cc
+++ b/COAST/COASTProcess.cc
@@ -30,8 +30,9 @@ namespace corsika::coast {
      the stack from here (docontinuous) inside corisika7. In corsika8
      you will be able to do that.
    */
-  corsika::process::EProcessReturn COASTProcess::DoContinuous(Particle& p, Track& t,
-                                                              Stack&) {
+  corsika::process::EProcessReturn COASTProcess::DoContinuous(const Particle& p,
+                                                              const Track& t,
+                                                              const Stack&) {
     using namespace corsika::units::si;
     auto const start = t.GetPosition(0).GetCoordinates();
     auto const delta = t.GetPosition(1).GetCoordinates() - start;
diff --git a/COAST/COASTProcess.h b/COAST/COASTProcess.h
index 19d1db2c6..686975e7f 100644
--- a/COAST/COASTProcess.h
+++ b/COAST/COASTProcess.h
@@ -21,7 +21,8 @@ namespace corsika::coast {
   public:
     void Init();
 
-    corsika::process::EProcessReturn DoContinuous(Particle&, Track&, Stack&);
+    corsika::process::EProcessReturn DoContinuous(const Particle&, const Track&,
+                                                  const Stack&);
 
     corsika::units::si::LengthType MaxStepLength(Particle&, Track&) {
       return corsika::units::si::meter * std::numeric_limits<double>::infinity();
diff --git a/COAST/COASTStack.h b/COAST/COASTStack.h
index 60659cd39..936c6fa28 100644
--- a/COAST/COASTStack.h
+++ b/COAST/COASTStack.h
@@ -53,7 +53,7 @@ namespace corsika::coast {
       using namespace corsika::units::si;
       const HEPEnergyType mass = corsika::particles::GetMass(GetPID());
       const auto P = sqrt((GetEnergy() - mass) * (GetEnergy() + mass));
-      const auto p = GetStackData().GetDirection(cs, GetIndex());
+      const auto p = GetStackData().GetDirection(cs);
       return p * P;
     }
 
@@ -73,7 +73,7 @@ namespace corsika::coast {
 
     corsika::geometry::Vector<corsika::units::si::dimensionless_d> GetDirection(
         const corsika::geometry::CoordinateSystem& cs) const {
-      return GetStackData().GetDirection(cs, GetIndex());
+      return GetStackData().GetDirection(cs);
     }
 
     corsika::units::si::TimeType GetTimeInterval() const {
@@ -126,7 +126,7 @@ namespace corsika::coast {
       return fParticle1->energy * 1_GeV;
     }
     corsika::geometry::Vector<corsika::units::si::dimensionless_d> GetDirection(
-        const corsika::geometry::CoordinateSystem& cs, const int) const {
+        const corsika::geometry::CoordinateSystem& cs) const {
       using namespace corsika::units::si;
       corsika::geometry::Point p1(
           cs, {fParticle1->x * 1_cm, fParticle1->y * 1_cm, fParticle1->z * 1_cm});
@@ -141,7 +141,7 @@ namespace corsika::coast {
         const corsika::geometry::CoordinateSystem& cs, const int) const {
       using namespace corsika::units::si;
       corsika::geometry::Vector<corsika::units::si::dimensionless_d> dir =
-          GetDirection(cs, 0);
+          GetDirection(cs);
       corsika::geometry::Point p1(
           cs, {fParticle1->x * 1_cm, fParticle1->y * 1_cm, fParticle1->z * 1_cm});
       corsika::geometry::Point p2(
@@ -159,12 +159,12 @@ namespace corsika::coast {
     }
     corsika::units::si::TimeType GetTime(const int) const {
       using namespace corsika::units::si;
-      return fParticle1->time * 1_ns;
+      return fParticle1->time * 1_s;
     }
 
     corsika::units::si::TimeType GetTimeInterval() const {
       using namespace corsika::units::si;
-      return (fParticle2->time - fParticle1->time) * 1_ns;
+      return (fParticle2->time - fParticle1->time) * 1_s;
     }
 
     /**
diff --git a/COAST/COASTUserLib.cc b/COAST/COASTUserLib.cc
index ab4c3d987..57a9ab568 100644
--- a/COAST/COASTUserLib.cc
+++ b/COAST/COASTUserLib.cc
@@ -84,14 +84,12 @@ extern "C" void track_([[maybe_unused]] const crs::CParticle& pre,
     int    hadronicGeneration;
   */
   gCOASTStack.SetParticle(&pre, &post);
-  auto particle = gCOASTStack.GetNextParticle();
-
-  geometry::CoordinateSystem& rootCS =
+  const auto particle = gCOASTStack.GetNextParticle();
+  const geometry::CoordinateSystem& rootCS =
       geometry::RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
-
   geometry::Line const line(particle.GetPosition(rootCS), particle.GetVelocity(rootCS));
   const TimeType time = particle.GetTimeInterval();
-  geometry::Trajectory<geometry::Line> track(line, time);
+  const geometry::Trajectory<geometry::Line> track(line, time);
   gCorsikaProcess.DoContinuous(particle, track, gCOASTStack);
 }
 
diff --git a/COAST/ParticleConversion.cc b/COAST/ParticleConversion.cc
index 489c4dbf4..ddff698ae 100644
--- a/COAST/ParticleConversion.cc
+++ b/COAST/ParticleConversion.cc
@@ -23,7 +23,7 @@ namespace corsika::coast {
   /**
      Convert particle code, and check if it does exists. Throw exeption, if not!
    */
-  
+
   corsika::particles::Code ConvertFromCoast(CoastCode pCode) {
     if (coast2corsika.count(pCode) == 0) {
       ostringstream err;
diff --git a/COAST/ParticleConversion.h b/COAST/ParticleConversion.h
index 8b7817e7b..8c35c0ea7 100644
--- a/COAST/ParticleConversion.h
+++ b/COAST/ParticleConversion.h
@@ -98,26 +98,26 @@ namespace corsika::coast {
     Tritium = 301,
     He3 = 302,
     Helium = 402,
-      Lithium = 603,
-      Beryllium = 904,
-      Boron = 1005,
-      Carbon = 1206,
+    Lithium = 603,
+    Beryllium = 904,
+    Boron = 1005,
+    Carbon = 1206,
+    Carbon13 = 1306,
     Nitrogen = 1407,
     Oxygen = 1608,
-      Neon = 2210,
-      Argon = 1838,
+    Neon = 2210,
+    Argon = 1838,
     Iron = 5628,
-      Xenon = 12854,
-      Radon = 13888,
+    Xenon = 12854,
+    Radon = 13888,
   };
 
   using CoastCodeIntType = std::underlying_type<CoastCode>::type;
 
-  
   /**
      Here we convert CORSIKA7 to CORSIKA8 codes
    */
-  
+
   const std::map<corsika::coast::CoastCode, corsika::particles::Code> coast2corsika = {
       {CoastCode::Gamma, corsika::particles::Code::Gamma},
       {CoastCode::Positron, corsika::particles::Code::Positron},
@@ -189,10 +189,11 @@ namespace corsika::coast {
       {CoastCode::Tritium, corsika::particles::Code::Tritium},
       {CoastCode::He3, corsika::particles::Code::Helium3},
       {CoastCode::Helium, corsika::particles::Code::Helium}, // 402
-      {CoastCode::Lithium, corsika::particles::Code::Lithium}, 
-      {CoastCode::Beryllium, corsika::particles::Code::Beryllium}, 
-      {CoastCode::Boron, corsika::particles::Code::Boron}, 
+      {CoastCode::Lithium, corsika::particles::Code::Lithium},
+      {CoastCode::Beryllium, corsika::particles::Code::Beryllium},
+      {CoastCode::Boron, corsika::particles::Code::Boron},
       {CoastCode::Carbon, corsika::particles::Code::Carbon},
+      {CoastCode::Carbon13, corsika::particles::Code::Carbon13},
       {CoastCode::Nitrogen, corsika::particles::Code::Nitrogen},
       {CoastCode::Oxygen, corsika::particles::Code::Oxygen},
       {CoastCode::Neon, corsika::particles::Code::Neon},
@@ -201,7 +202,7 @@ namespace corsika::coast {
       {CoastCode::Radon, corsika::particles::Code::Radon},
       {CoastCode::Iron, corsika::particles::Code::Iron}, // 5628
 
-      //{CoastCode::, corsika::particles::Code::}, 
+      //{CoastCode::, corsika::particles::Code::},
 
   };
 
diff --git a/Framework/Particles/NuclearData.xml b/Framework/Particles/NuclearData.xml
index e01f1ba6a..69e76393b 100644
--- a/Framework/Particles/NuclearData.xml
+++ b/Framework/Particles/NuclearData.xml
@@ -27,13 +27,16 @@
 <particle id="1000060120" name="carbon" A="12" Z="6" >
 </particle> 
 
+<particle id="1000060120" name="carbon13" A="13" Z="6" >
+</particle> 
+
 <particle id="1000070140" name="nitrogen" A="14" Z="7" >
 </particle> 
 
 <particle id="1000080160" name="oxygen" A="16" Z="8" >
 </particle> 
 
-<particle id="1000180400" name="neon" A="22" Z="10" >
+<particle id="1000100220" name="neon" A="22" Z="10" >
 </particle> 
 
 <particle id="1000180400" name="argon" A="40" Z="18" >
@@ -42,13 +45,13 @@
 <particle id="1000280560" name="iron" A="56" Z="28" >
 </particle> 
 
-<particle id="1000180400" name="xenon" A="128" Z="54" >
+<particle id="1000541280" name="xenon" A="128" Z="54" >
 </particle> 
 
-<particle id="1000180400" name="radon" A="138" Z="88" >
+<particle id="1000822080" name="lead" A="208" Z="82" >
 </particle> 
 
-<particle id="1000280560" name="lead" A="208" Z="82" >
+<particle id="1000862220" name="radon" A="222" Z="86" >
 </particle> 
 
 </chapter>
-- 
GitLab