From 3d592fd14291b8e7b8f2088893026158f983797a Mon Sep 17 00:00:00 2001
From: Jean-Marco Alameddine <jean-marco.alameddine@tu-dortmund.de>
Date: Wed, 20 Oct 2021 12:32:47 +0200
Subject: [PATCH] Add tracking of particle times to observation plane writer

---
 corsika/detail/modules/ObservationPlane.inl                | 2 +-
 .../modules/writers/ObservationPlaneWriterParquet.inl      | 7 +++++--
 corsika/modules/writers/ObservationPlaneWriterParquet.hpp  | 3 ++-
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/corsika/detail/modules/ObservationPlane.inl b/corsika/detail/modules/ObservationPlane.inl
index b3d4b916c..b40e8d772 100644
--- a/corsika/detail/modules/ObservationPlane.inl
+++ b/corsika/detail/modules/ObservationPlane.inl
@@ -51,7 +51,7 @@ namespace corsika {
 
     // add our particles to the output file stream
     this->write(particle.getPID(), energy, displacement.dot(xAxis_),
-                displacement.dot(yAxis_));
+                displacement.dot(yAxis_), particle.getTime());
 
     CORSIKA_LOG_TRACE("Particle detected absorbed={}", deleteOnHit_);
 
diff --git a/corsika/detail/modules/writers/ObservationPlaneWriterParquet.inl b/corsika/detail/modules/writers/ObservationPlaneWriterParquet.inl
index 60752c56a..5eef28a41 100644
--- a/corsika/detail/modules/writers/ObservationPlaneWriterParquet.inl
+++ b/corsika/detail/modules/writers/ObservationPlaneWriterParquet.inl
@@ -31,6 +31,8 @@ namespace corsika {
                      parquet::ConvertedType::NONE);
     output_.addField("y", parquet::Repetition::REQUIRED, parquet::Type::FLOAT,
                      parquet::ConvertedType::NONE);
+    output_.addField("t", parquet::Repetition::REQUIRED, parquet::Type::FLOAT,
+                     parquet::ConvertedType::NONE);
 
     // and build the streamer
     output_.buildStreamer();
@@ -43,12 +45,13 @@ namespace corsika {
   inline void ObservationPlaneWriterParquet::write(Code const& pid,
                                                    HEPEnergyType const& energy,
                                                    LengthType const& x,
-                                                   LengthType const& y) {
+                                                   LengthType const& y,
+                                                   TimeType const& t) {
     // write the next row - we must write `shower_` first.
     *(output_.getWriter()) << shower_ << static_cast<int>(get_PDG(pid))
                            << static_cast<float>(energy / 1_GeV)
                            << static_cast<float>(x / 1_m) << static_cast<float>(y / 1_m)
-                           << parquet::EndRow;
+                           << static_cast<float>(t / 1_ns) << parquet::EndRow;
   }
 
 } // namespace corsika
diff --git a/corsika/modules/writers/ObservationPlaneWriterParquet.hpp b/corsika/modules/writers/ObservationPlaneWriterParquet.hpp
index 2a5089c26..5963aa100 100644
--- a/corsika/modules/writers/ObservationPlaneWriterParquet.hpp
+++ b/corsika/modules/writers/ObservationPlaneWriterParquet.hpp
@@ -50,7 +50,8 @@ namespace corsika {
      * Write a particle to the file.
      */
     void write(Code const& pid, units::si::HEPEnergyType const& energy,
-               units::si::LengthType const& x, units::si::LengthType const& y);
+               units::si::LengthType const& x, units::si::LengthType const& y,
+               units::si::TimeType const& t);
 
   }; // class ObservationPlaneWriterParquet
 
-- 
GitLab