Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-07-26 08:22:19

0001 /** TRACCC library, part of the ACTS project (R&D line)
0002  *
0003  * (c) 2022-2026 CERN for the benefit of the ACTS project
0004  *
0005  * Mozilla Public License Version 2.0
0006  */
0007 
0008 // Local include(s).
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 // System include(s).
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 }  // namespace traccc::io