Back to home page

EIC code displayed by LXR

 
 

    


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

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 // Project include(s).
0009 #include "traccc/io/read_cells.hpp"
0010 #include "traccc/io/read_detector_description.hpp"
0011 #include "traccc/io/read_measurements.hpp"
0012 #include "traccc/io/read_spacepoints.hpp"
0013 #include "traccc/io/write.hpp"
0014 #include "traccc/options/detector.hpp"
0015 #include "traccc/options/input_data.hpp"
0016 #include "traccc/options/output_data.hpp"
0017 #include "traccc/options/program_options.hpp"
0018 
0019 // VecMem include(s).
0020 #include <vecmem/memory/host_memory_resource.hpp>
0021 
0022 // System include(s).
0023 #include <cstdlib>
0024 
0025 int create_binaries(const traccc::opts::detector& detector_opts,
0026                     const traccc::opts::input_data& input_opts,
0027                     const traccc::opts::output_data& output_opts,
0028                     std::unique_ptr<const traccc::Logger> logger) {
0029   // Memory resource used by the EDM.
0030   vecmem::host_memory_resource host_mr;
0031 
0032   // Construct the detector description object.
0033   traccc::detector_design_description::host det_descr{host_mr};
0034   traccc::detector_conditions_description::host det_cond{host_mr};
0035   traccc::io::read_detector_description(
0036       det_descr, det_cond, detector_opts.detector_file,
0037       detector_opts.digitization_file, detector_opts.conditions_file,
0038       traccc::data_format::json);
0039 
0040   // Loop over events
0041   for (std::size_t event = input_opts.skip;
0042        event < input_opts.events + input_opts.skip; ++event) {
0043     // Read the cells from the relevant event file
0044     traccc::edm::silicon_cell_collection::host cells{host_mr};
0045     traccc::io::read_cells(cells, event, input_opts.directory, logger->clone(),
0046                            &det_cond, input_opts.format);
0047 
0048     // Write binary file
0049     traccc::io::write(event, output_opts.directory, traccc::data_format::binary,
0050                       vecmem::get_data(cells), vecmem::get_data(det_descr),
0051                       vecmem::get_data(det_cond));
0052 
0053     // Read the measurements and hits from the relevant event file
0054     traccc::edm::measurement_collection::host measurements{host_mr};
0055     traccc::edm::spacepoint_collection::host spacepoints{host_mr};
0056     traccc::io::read_spacepoints(spacepoints, measurements, event,
0057                                  input_opts.directory, nullptr, nullptr,
0058                                  nullptr, input_opts.format);
0059 
0060     // Write binary file(s)
0061     traccc::io::write(event, output_opts.directory, traccc::data_format::binary,
0062                       vecmem::get_data(spacepoints),
0063                       vecmem::get_data(measurements));
0064   }
0065 
0066   return EXIT_SUCCESS;
0067 }
0068 
0069 // The main routine
0070 //
0071 int main(int argc, char* argv[]) {
0072   std::unique_ptr<const traccc::Logger> logger = traccc::getDefaultLogger(
0073       "TracccExampleCreateBinaries", traccc::Logging::Level::INFO);
0074 
0075   // Program options.
0076   traccc::opts::detector detector_opts;
0077   traccc::opts::input_data input_opts;
0078   traccc::opts::output_data output_opts;
0079   traccc::opts::program_options program_opts{
0080       "Binary File Creation",
0081       {detector_opts, input_opts, output_opts},
0082       argc,
0083       argv,
0084       logger->cloneWithSuffix("Options")};
0085 
0086   // Run the application.
0087   return create_binaries(detector_opts, input_opts, output_opts,
0088                          logger->clone());
0089 }