File indexing completed on 2026-07-26 08:22:19
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "traccc/io/write.hpp"
0010
0011 #include "csv/write_cells.hpp"
0012 #include "json/write_digitization_config.hpp"
0013 #include "obj/write_seeds.hpp"
0014 #include "obj/write_spacepoints.hpp"
0015 #include "obj/write_tracks.hpp"
0016 #include "traccc/geometry/host_detector.hpp"
0017 #include "traccc/io/utils.hpp"
0018 #include "write_binary.hpp"
0019
0020
0021 #include <filesystem>
0022 #include <stdexcept>
0023
0024 namespace traccc::io {
0025
0026 void write(std::size_t event, std::string_view directory,
0027 traccc::data_format format,
0028 traccc::edm::silicon_cell_collection::const_view cells,
0029 traccc::detector_design_description::const_view det_desc_view,
0030 traccc::detector_conditions_description::const_view det_cond_view,
0031 bool use_acts_geometry_id) {
0032 switch (format) {
0033 case data_format::binary:
0034 details::write_binary_soa(
0035 get_absolute_path(
0036 (std::filesystem::path(directory) /
0037 std::filesystem::path(get_event_filename(event, "-cells.dat")))
0038 .native()),
0039 traccc::edm::silicon_cell_collection::const_device{cells});
0040 break;
0041 case data_format::csv:
0042 csv::write_cells(
0043 get_absolute_path(
0044 (std::filesystem::path(directory) /
0045 std::filesystem::path(get_event_filename(event, "-cells.csv")))
0046 .native()),
0047 cells, det_desc_view, det_cond_view, use_acts_geometry_id);
0048 break;
0049 default:
0050 throw std::invalid_argument("Unsupported data format");
0051 }
0052 }
0053
0054 void write(std::size_t event, std::string_view directory,
0055 traccc::data_format format,
0056 edm::spacepoint_collection::const_view spacepoints,
0057 edm::measurement_collection::const_view measurements) {
0058 switch (format) {
0059 case data_format::binary:
0060 details::write_binary_soa(
0061 get_absolute_path(
0062 (std::filesystem::path(directory) /
0063 std::filesystem::path(get_event_filename(event, "-hits.dat")))
0064 .native()),
0065 edm::spacepoint_collection::const_device{spacepoints});
0066 details::write_binary_soa(
0067 get_absolute_path((std::filesystem::path(directory) /
0068 std::filesystem::path(get_event_filename(
0069 event, "-measurements.dat")))
0070 .native()),
0071 edm::measurement_collection::const_device{measurements});
0072 break;
0073 case data_format::obj:
0074 obj::write_spacepoints(
0075 get_absolute_path((std::filesystem::path(directory) /
0076 std::filesystem::path(
0077 get_event_filename(event, "-spacepoints.obj")))
0078 .native()),
0079 spacepoints);
0080 break;
0081 default:
0082 throw std::invalid_argument("Unsupported data format");
0083 }
0084 }
0085
0086 void write(std::size_t event, std::string_view directory,
0087 traccc::data_format format,
0088 edm::measurement_collection::const_view measurements) {
0089 switch (format) {
0090 case data_format::binary:
0091 details::write_binary_soa(
0092 get_absolute_path((std::filesystem::path(directory) /
0093 std::filesystem::path(get_event_filename(
0094 event, "-measurements.dat")))
0095 .native()),
0096 edm::measurement_collection::const_device{measurements});
0097 break;
0098 default:
0099 throw std::invalid_argument("Unsupported data format");
0100 }
0101 }
0102
0103 void write(std::size_t event, std::string_view directory,
0104 traccc::data_format format, edm::seed_collection::const_view seeds,
0105 edm::spacepoint_collection::const_view spacepoints) {
0106 switch (format) {
0107 case data_format::obj:
0108 obj::write_seeds(
0109 get_absolute_path(
0110 (std::filesystem::path(directory) /
0111 std::filesystem::path(get_event_filename(event, "-seeds.obj")))
0112 .native()),
0113 seeds, spacepoints);
0114 break;
0115 default:
0116 throw std::invalid_argument("Unsupported data format");
0117 }
0118 }
0119
0120 void write(std::size_t event, std::string_view directory,
0121 traccc::data_format format,
0122 edm::track_container<default_algebra>::const_view tracks,
0123 const traccc::host_detector& detector) {
0124 switch (format) {
0125 case data_format::obj:
0126 obj::write_tracks(
0127 get_absolute_path((std::filesystem::path(directory) /
0128 std::filesystem::path(get_event_filename(
0129 event, "-track-candidates.obj")))
0130 .native()),
0131 tracks, detector);
0132 break;
0133 default:
0134 throw std::invalid_argument("Unsupported data format");
0135 }
0136 }
0137
0138 void write(std::string_view filename, data_format format,
0139 const digitization_config& config) {
0140 switch (format) {
0141 case data_format::json:
0142 json::write_digitization_config(get_absolute_path(filename), config);
0143 break;
0144 default:
0145 throw std::invalid_argument("Unsupported data format");
0146 }
0147 }
0148
0149 }