diff --git a/corsika/detail/modules/ObservationPlane.inl b/corsika/detail/modules/ObservationPlane.inl index 8f4a658b504d896f674943f4729cc2a30336329f..23e5837ad00accbcac20e125d3c366a4d8929143 100644 --- a/corsika/detail/modules/ObservationPlane.inl +++ b/corsika/detail/modules/ObservationPlane.inl @@ -53,7 +53,7 @@ namespace corsika { // add our particles to the output file stream double const weight = 1.; // particle.getWeight() this->write(particle.getPID(), energy, displacement.dot(xAxis_), - displacement.dot(yAxis_), 0_m, weight); + displacement.dot(yAxis_), 0_m, particle.getTime(), weight); CORSIKA_LOG_TRACE("Particle detected absorbed={}", deleteOnHit_); diff --git a/corsika/detail/modules/writers/ParticleWriterParquet.inl b/corsika/detail/modules/writers/ParticleWriterParquet.inl index 4c6a49adadc103d38e2dbf5ecd278fcf262b189f..271346417218c43a2b25bfda21a476cbe470fa98 100644 --- a/corsika/detail/modules/writers/ParticleWriterParquet.inl +++ b/corsika/detail/modules/writers/ParticleWriterParquet.inl @@ -37,6 +37,8 @@ namespace corsika { parquet::ConvertedType::NONE); output_.addField("z", parquet::Repetition::REQUIRED, parquet::Type::FLOAT, parquet::ConvertedType::NONE); + output_.addField("time", parquet::Repetition::REQUIRED, parquet::Type::DOUBLE, + parquet::ConvertedType::NONE); output_.addField("weight", parquet::Repetition::REQUIRED, parquet::Type::FLOAT, parquet::ConvertedType::NONE); @@ -59,16 +61,17 @@ namespace corsika { inline void ParticleWriterParquet::endOfLibrary() { output_.closeStreamer(); } - inline void ParticleWriterParquet::write(Code const& pid, HEPEnergyType const& energy, - LengthType const& x, LengthType const& y, - LengthType const& z, double const weight) { + inline void ParticleWriterParquet::write(Code const pid, HEPEnergyType const energy, + LengthType const x, LengthType const y, + LengthType const z, TimeType const t, + double const weight) { // write the next row - we must write `shower_` first. *(output_.getWriter()) << showerId_ << static_cast<int>(get_PDG(pid)) << static_cast<float>(energy / 1_GeV) << static_cast<float>(x / 1_m) << static_cast<float>(y / 1_m) - << static_cast<float>(z / 1_m) << static_cast<float>(weight) - << parquet::EndRow; + << static_cast<float>(z / 1_m) << static_cast<double>(t / 1_s) + << static_cast<float>(weight) << parquet::EndRow; totalEnergy_ += energy; diff --git a/corsika/modules/writers/ParticleWriterParquet.hpp b/corsika/modules/writers/ParticleWriterParquet.hpp index 12451f4eddbcb55e4e14ca5a1cc21a9e124b9844..d28abdd1c7a483ace5e7e28ec2a2fbdb1b7a26d8 100644 --- a/corsika/modules/writers/ParticleWriterParquet.hpp +++ b/corsika/modules/writers/ParticleWriterParquet.hpp @@ -49,9 +49,10 @@ namespace corsika { /** * Write a PDG/corsika::Code 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& z, const double weight); + void write(Code const pid, units::si::HEPEnergyType const energy, + units::si::LengthType const x, units::si::LengthType const y, + units::si::LengthType const z, units::si::TimeType const time, + const double weight); /** * Return collected library-level summary for output. diff --git a/tests/output/testWriterObservationPlane.cpp b/tests/output/testWriterObservationPlane.cpp index c58861f52cd3f80bddf9ebd51ea4554aa39a1491..5b2483cf9a4cad58eec4acf4a281b657d11b4739 100644 --- a/tests/output/testWriterObservationPlane.cpp +++ b/tests/output/testWriterObservationPlane.cpp @@ -22,11 +22,11 @@ struct TestWriterPlane : public ParticleWriterParquet { YAML::Node getConfig() const { return YAML::Node(); } void checkWrite() { - ParticleWriterParquet::write(Code::Unknown, 1_GeV, 2_m, 3_m, 0_m, 1.0); - ParticleWriterParquet::write(Code::Proton, 1_GeV, 2_m, 3_m, 0_m, 1.0); - ParticleWriterParquet::write(Code::MuPlus, 1_GeV, 2_m, 3_m, 0_m, 1.0); - ParticleWriterParquet::write(Code::MuMinus, 1_GeV, 2_m, 3_m, 0_m, 1.0); - ParticleWriterParquet::write(Code::Photon, 1_GeV, 2_m, 3_m, 0_m, 1.0); + ParticleWriterParquet::write(Code::Unknown, 1_GeV, 2_m, 3_m, 0_m, 1_us, 1.0); + ParticleWriterParquet::write(Code::Proton, 1_GeV, 2_m, 3_m, 0_m, 1_us, 1.0); + ParticleWriterParquet::write(Code::MuPlus, 1_GeV, 2_m, 3_m, 0_m, 1_us, 1.0); + ParticleWriterParquet::write(Code::MuMinus, 1_GeV, 2_m, 3_m, 0_m, 1_us, 1.0); + ParticleWriterParquet::write(Code::Photon, 1_GeV, 2_m, 3_m, 0_m, 1_us, 1.0); } };