diff --git a/corsika/detail/modules/TrackWriter.inl b/corsika/detail/modules/TrackWriter.inl index 8af3c31dc45b718d8213346e3896e2dffb02812d..a1102ce2cf7ee18de3902baff0c141617dc099f7 100644 --- a/corsika/detail/modules/TrackWriter.inl +++ b/corsika/detail/modules/TrackWriter.inl @@ -28,7 +28,8 @@ namespace corsika { auto const end = vT.getPosition(1).getCoordinates(); // write the track to the file - this->write(vP.getPID(), vP.getEnergy(), start, end); + this->write(vP.getPID(), vP.getEnergy(), start, vP.getTime() - vT.getDuration(), end, + vP.getTime()); return ProcessReturn::Ok; } @@ -48,7 +49,7 @@ namespace corsika { // add default units for values node["type"] = "TrackWriter"; - node["units"] = "GeV | m"; + node["units"] = "GeV | m | s"; return node; } diff --git a/corsika/detail/modules/writers/TrackWriterParquet.inl b/corsika/detail/modules/writers/TrackWriterParquet.inl index 26c62bdf0e5e8260c431dc114aaed25e4aab0a82..90e0ba2c720e0ec079e853c9c9fac62f4a2ddba7 100644 --- a/corsika/detail/modules/writers/TrackWriterParquet.inl +++ b/corsika/detail/modules/writers/TrackWriterParquet.inl @@ -30,12 +30,16 @@ namespace corsika { parquet::ConvertedType::NONE); output_.addField("start_z", parquet::Repetition::REQUIRED, parquet::Type::FLOAT, parquet::ConvertedType::NONE); + output_.addField("start_t", parquet::Repetition::REQUIRED, parquet::Type::FLOAT, + parquet::ConvertedType::NONE); output_.addField("end_x", parquet::Repetition::REQUIRED, parquet::Type::FLOAT, parquet::ConvertedType::NONE); output_.addField("end_y", parquet::Repetition::REQUIRED, parquet::Type::FLOAT, parquet::ConvertedType::NONE); output_.addField("end_z", parquet::Repetition::REQUIRED, parquet::Type::FLOAT, parquet::ConvertedType::NONE); + output_.addField("end_t", parquet::Repetition::REQUIRED, parquet::Type::FLOAT, + parquet::ConvertedType::NONE); // and build the streamer output_.buildStreamer(); @@ -47,7 +51,9 @@ namespace corsika { inline void TrackWriterParquet::write(Code const& pid, HEPEnergyType const& energy, QuantityVector<length_d> const& start, - QuantityVector<length_d> const& end) { + TimeType const& t_start, + QuantityVector<length_d> const& end, + TimeType const& t_end) { // write the next row - we must write `shower_` first. // clang-format off @@ -58,9 +64,11 @@ namespace corsika { << static_cast<float>(start[0] / 1_m) << static_cast<float>(start[1] / 1_m) << static_cast<float>(start[2] / 1_m) + << static_cast<float>(t_start / 1_ns) << static_cast<float>(end[0] / 1_m) << static_cast<float>(end[1] / 1_m) << static_cast<float>(end[2] / 1_m) + << static_cast<float>(t_end / 1_ns) << parquet::EndRow; // clang-format on } diff --git a/corsika/modules/writers/TrackWriterParquet.hpp b/corsika/modules/writers/TrackWriterParquet.hpp index 7caf90558b2ae0fc5c1cc13ca38b7d009e70b335..8473cbf7f4a17c649ddae2f5b20ffaf7dc400616 100644 --- a/corsika/modules/writers/TrackWriterParquet.hpp +++ b/corsika/modules/writers/TrackWriterParquet.hpp @@ -49,8 +49,8 @@ namespace corsika { * Write a track to the file. */ void write(Code const& pid, units::si::HEPEnergyType const& energy, - QuantityVector<length_d> const& start, - QuantityVector<length_d> const& end); + QuantityVector<length_d> const& start, TimeType const& t_start, + QuantityVector<length_d> const& end, TimeType const& t_end); private: ParquetStreamer output_; ///< The primary output file. diff --git a/tests/output/testWriterTracks.cpp b/tests/output/testWriterTracks.cpp index 38cf0cf5985a956aaef03b589b93a1b6b9f9b260..43fbf88704e423027a157c099f472e44b9ff63f9 100644 --- a/tests/output/testWriterTracks.cpp +++ b/tests/output/testWriterTracks.cpp @@ -21,7 +21,8 @@ struct TestWriterTrack : public TrackWriterParquet { YAML::Node getConfig() const { return YAML::Node(); } void checkWrite() { - TrackWriterParquet::write(Code::Unknown, 1_eV, {2_m, 3_m, 4_m}, {5_m, 6_m, 7_m}); + TrackWriterParquet::write(Code::Unknown, 1_eV, {2_m, 3_m, 4_m}, 5_s, {6_m, 7_m, 8_m}, + 9_s); } };