diff --git a/corsika/detail/modules/writers/ObservationPlaneWriterParquet.inl b/corsika/detail/modules/writers/ObservationPlaneWriterParquet.inl index 5eb2ce5b2dc96b423edaa9d72d4ec86120c8ed68..c5f5e7da25dc785ae466b0f421dbc7ae8025b34f 100644 --- a/corsika/detail/modules/writers/ObservationPlaneWriterParquet.inl +++ b/corsika/detail/modules/writers/ObservationPlaneWriterParquet.inl @@ -11,31 +11,31 @@ namespace corsika { ObservationPlaneWriterParquet::ObservationPlaneWriterParquet() - : ParquetStreamer(){} + : output_() {} void ObservationPlaneWriterParquet::startOfLibrary( std::filesystem::path const& directory) { // setup the streamer - initStreamer((directory / "particles.parquet").string()); + output_.initStreamer((directory / "particles.parquet").string()); // build the schema - addField("pdg", parquet::Repetition::REQUIRED, parquet::Type::INT32, - parquet::ConvertedType::INT_32); - addField("energy", parquet::Repetition::REQUIRED, parquet::Type::FLOAT, - parquet::ConvertedType::NONE); - addField("x", parquet::Repetition::REQUIRED, parquet::Type::FLOAT, - parquet::ConvertedType::NONE); - addField("y", parquet::Repetition::REQUIRED, parquet::Type::FLOAT, - parquet::ConvertedType::NONE); + output_.addField("pdg", parquet::Repetition::REQUIRED, parquet::Type::INT32, + parquet::ConvertedType::INT_32); + output_.addField("energy", parquet::Repetition::REQUIRED, parquet::Type::FLOAT, + parquet::ConvertedType::NONE); + output_.addField("x", parquet::Repetition::REQUIRED, parquet::Type::FLOAT, + parquet::ConvertedType::NONE); + output_.addField("y", parquet::Repetition::REQUIRED, parquet::Type::FLOAT, + parquet::ConvertedType::NONE); // and build the streamer - buildStreamer(); + output_.buildStreamer(); } void ObservationPlaneWriterParquet::endOfShower() { ++shower_; } - void ObservationPlaneWriterParquet::endOfLibrary() { closeStreamer(); } + void ObservationPlaneWriterParquet::endOfLibrary() { output_.closeStreamer(); } void ObservationPlaneWriterParquet::write(Code const& pid, units::si::HEPEnergyType const& energy, @@ -44,12 +44,10 @@ namespace corsika { using namespace units::si; // write the next row - we must write `shower_` first. - (*writer_) << shower_ - << static_cast<int>(get_PDG(pid)) - << static_cast<float>(energy / 1_eV) - << static_cast<float>(x / 1_m) - << static_cast<float>(y / 1_m) - << parquet::EndRow; + *(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; } } // namespace corsika diff --git a/corsika/detail/output/ParquetStreamer.inl b/corsika/detail/output/ParquetStreamer.inl index 000b93846fbfa77ec101db54ec0391d9d0f6364f..d9b4672be3a4201a342a5a0664a3602731cbbdd4 100644 --- a/corsika/detail/output/ParquetStreamer.inl +++ b/corsika/detail/output/ParquetStreamer.inl @@ -47,4 +47,8 @@ namespace corsika { outfile_->Close(); } + std::shared_ptr<parquet::StreamWriter> ParquetStreamer::getWriter() { + return writer_; + } + } // namespace corsika diff --git a/corsika/modules/writers/ObservationPlaneWriterParquet.hpp b/corsika/modules/writers/ObservationPlaneWriterParquet.hpp index 53ec19a2e38b868833f0e29c8c6a21061fd5b452..cda8b8fb5119a116e9d1516aca8182c34b83158d 100644 --- a/corsika/modules/writers/ObservationPlaneWriterParquet.hpp +++ b/corsika/modules/writers/ObservationPlaneWriterParquet.hpp @@ -15,7 +15,9 @@ namespace corsika { - class ObservationPlaneWriterParquet : public BaseOutput, private ParquetStreamer { + class ObservationPlaneWriterParquet : public BaseOutput { + + ParquetStreamer output_; ///< The primary output file. public: /**