Skip to content

Commit

Permalink
Add general simulator
Browse files Browse the repository at this point in the history
  • Loading branch information
beomki-yeo committed Nov 10, 2023
1 parent e89017a commit 7bcdb1a
Show file tree
Hide file tree
Showing 19 changed files with 319 additions and 100 deletions.
2 changes: 2 additions & 0 deletions examples/options/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
traccc_add_library( traccc_options options TYPE SHARED
# header files
"include/traccc/options/common_options.hpp"
"include/traccc/options/detector_input_options.hpp"
"include/traccc/options/handle_argument_errors.hpp"
"include/traccc/options/mt_options.hpp"
"include/traccc/options/options.hpp"
Expand All @@ -19,6 +20,7 @@ traccc_add_library( traccc_options options TYPE SHARED
"include/traccc/options/throughput_options.hpp"
# source files
"src/options/common_options.cpp"
"src/options/detector_input_options.cpp"
"src/options/handle_argument_errors.cpp"
"src/options/mt_options.cpp"
"src/options/seeding_input_options.cpp"
Expand Down
3 changes: 0 additions & 3 deletions examples/options/include/traccc/options/common_options.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@ struct common_options {
int skip;
unsigned short target_cells_per_partition;
bool check_performance;
std::string detector_file;
std::string material_file;
std::string grid_file;

common_options(po::options_description& desc);
void read(const po::variables_map& vm);
Expand Down
24 changes: 24 additions & 0 deletions examples/options/include/traccc/options/detector_input_options.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/** TRACCC library, part of the ACTS project (R&D line)
*
* (c) 2023 CERN for the benefit of the ACTS project
*
* Mozilla Public License Version 2.0
*/

// Boost
#include <boost/program_options.hpp>

namespace traccc {

namespace po = boost::program_options;

struct detector_input_options {
std::string detector_file;
std::string material_file;
std::string grid_file;

detector_input_options(po::options_description& desc);
void read(const po::variables_map& vm);
};

} // namespace traccc
13 changes: 0 additions & 13 deletions examples/options/src/options/common_options.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,6 @@ traccc::common_options::common_options(po::options_description& desc) {
desc.add_options()("check_performance",
po::value<bool>()->default_value(false),
"generate performance result");
desc.add_options()("detector_file", po::value<std::string>()->required(),
"specify detector file");
desc.add_options()("material_file", po::value<std::string>()->required(),
"specify material file");
desc.add_options()("grid_file", po::value<std::string>()->required(),
"specify surface grid file");
}

void traccc::common_options::read(const po::variables_map& vm) {
Expand All @@ -47,11 +41,4 @@ void traccc::common_options::read(const po::variables_map& vm) {
target_cells_per_partition =
vm["target_cells_per_partition"].as<unsigned short>();
check_performance = vm["check_performance"].as<bool>();
detector_file = vm["detector_file"].as<std::string>();
if (vm.count("material_file")) {
material_file = vm["material_file"].as<std::string>();
}
if (vm.count("grid_file")) {
grid_file = vm["grid_file"].as<std::string>();
}
}
30 changes: 30 additions & 0 deletions examples/options/src/options/detector_input_options.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/** TRACCC library, part of the ACTS project (R&D line)
*
* (c) 2023 CERN for the benefit of the ACTS project
*
* Mozilla Public License Version 2.0
*/

// options
#include "traccc/options/detector_input_options.hpp"

traccc::detector_input_options::detector_input_options(
po::options_description& desc) {
desc.add_options()("detector_file", po::value<std::string>()->required(),
"specify detector file");
desc.add_options()("material_file", po::value<std::string>(),
"specify material file");
desc.add_options()("grid_file", po::value<std::string>(),
"specify surface grid file");
}

void traccc::detector_input_options::read(const po::variables_map& vm) {

detector_file = vm["detector_file"].as<std::string>();
if (vm.count("material_file")) {
material_file = vm["material_file"].as<std::string>();
}
if (vm.count("grid_file")) {
grid_file = vm["grid_file"].as<std::string>();
}
}
14 changes: 8 additions & 6 deletions examples/run/alpaka/seeding_example_alpaka.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,10 @@
namespace po = boost::program_options;

int seq_run(const traccc::seeding_input_config& /*i_cfg*/,
const traccc::common_options& common_opts, bool run_cpu) {
const traccc::common_options& common_opts, det_opts, bool run_cpu) {

// Read the surface transforms
auto surface_transforms =
traccc::io::read_geometry(common_opts.detector_file);
auto surface_transforms = traccc::io::read_geometry(det_opts.detector_file);

// Output stats
uint64_t n_modules = 0;
Expand Down Expand Up @@ -171,6 +170,7 @@ int main(int argc, char* argv[]) {
// Add options
desc.add_options()("help,h", "Give some help with the program's options");
traccc::common_options common_opts(desc);
traccc::detector_input_options det_opts(desc);
traccc::seeding_input_config seeding_input_cfg(desc);
desc.add_options()("run_cpu", po::value<bool>()->default_value(false),
"run cpu tracking as well");
Expand All @@ -183,14 +183,16 @@ int main(int argc, char* argv[]) {

// Read options
common_opts.read(vm);
det_opts.read(vm);

seeding_input_cfg.read(vm);
auto run_cpu = vm["run_cpu"].as<bool>();

std::cout << "Running " << argv[0] << " " << common_opts.detector_file
<< " " << common_opts.input_directory << " " << common_opts.events
std::cout << "Running " << argv[0] << " " << det_opts.detector_file << " "
<< common_opts.input_directory << " " << common_opts.events
<< std::endl;

int ret = seq_run(seeding_input_cfg, common_opts, run_cpu);
int ret = seq_run(seeding_input_cfg, common_opts, det_opts, run_cpu);

return ret;
}
19 changes: 11 additions & 8 deletions examples/run/cpu/seeding_example.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

// options
#include "traccc/options/common_options.hpp"
#include "traccc/options/detector_input_options.hpp"
#include "traccc/options/finding_input_options.hpp"
#include "traccc/options/handle_argument_errors.hpp"
#include "traccc/options/propagation_options.hpp"
Expand All @@ -54,7 +55,8 @@ namespace po = boost::program_options;
int seq_run(const traccc::seeding_input_config& /*i_cfg*/,
const traccc::finding_input_config& finding_cfg,
const traccc::propagation_options<traccc::scalar>& propagation_opts,
const traccc::common_options& common_opts) {
const traccc::common_options& common_opts,
const traccc::detector_input_options& det_opts) {

/// Type declarations
using host_detector_type = detray::detector<>;
Expand Down Expand Up @@ -97,10 +99,9 @@ int seq_run(const traccc::seeding_input_config& /*i_cfg*/,

// Read the detector
detray::io::detector_reader_config reader_cfg{};
reader_cfg
.add_file(traccc::io::data_directory() + common_opts.detector_file)
.add_file(traccc::io::data_directory() + common_opts.material_file)
.add_file(traccc::io::data_directory() + common_opts.grid_file);
reader_cfg.add_file(traccc::io::data_directory() + det_opts.detector_file)
.add_file(traccc::io::data_directory() + det_opts.material_file)
.add_file(traccc::io::data_directory() + det_opts.grid_file);

auto [host_det, names] =
detray::io::read_detector<host_detector_type>(host_mr, reader_cfg);
Expand Down Expand Up @@ -247,6 +248,7 @@ int main(int argc, char* argv[]) {
// Add options
desc.add_options()("help,h", "Give some help with the program's options");
traccc::common_options common_opts(desc);
traccc::detector_input_options det_opts(desc);
traccc::seeding_input_config seeding_input_cfg(desc);
traccc::finding_input_config finding_input_cfg(desc);
traccc::propagation_options<traccc::scalar> propagation_opts(desc);
Expand All @@ -259,14 +261,15 @@ int main(int argc, char* argv[]) {

// Read options
common_opts.read(vm);
det_opts.read(vm);
seeding_input_cfg.read(vm);
finding_input_cfg.read(vm);
propagation_opts.read(vm);

std::cout << "Running " << argv[0] << " " << common_opts.detector_file
<< " " << common_opts.input_directory << " " << common_opts.events
std::cout << "Running " << argv[0] << " " << det_opts.detector_file << " "
<< common_opts.input_directory << " " << common_opts.events
<< std::endl;

return seq_run(seeding_input_cfg, finding_input_cfg, propagation_opts,
common_opts);
common_opts, det_opts);
}
22 changes: 12 additions & 10 deletions examples/run/cpu/seq_example.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/** TRACCC library, part of the ACTS project (R&D line)
*
* (c) 2021-2022 CERN for the benefit of the ACTS project
* (c) 2021-2023 CERN for the benefit of the ACTS project
*
* Mozilla Public License Version 2.0
*/
Expand All @@ -21,6 +21,7 @@

// options
#include "traccc/options/common_options.hpp"
#include "traccc/options/detector_input_options.hpp"
#include "traccc/options/full_tracking_input_options.hpp"
#include "traccc/options/handle_argument_errors.hpp"

Expand All @@ -34,11 +35,11 @@
namespace po = boost::program_options;

int seq_run(const traccc::full_tracking_input_config& i_cfg,
const traccc::common_options& common_opts) {
const traccc::common_options& common_opts,
const traccc::detector_input_options& det_opts) {

// Read the surface transforms
auto surface_transforms =
traccc::io::read_geometry(common_opts.detector_file);
auto surface_transforms = traccc::io::read_geometry(det_opts.detector_file);

// Read the digitization configuration file
auto digi_cfg =
Expand Down Expand Up @@ -124,11 +125,10 @@ int seq_run(const traccc::full_tracking_input_config& i_cfg,
------------*/

if (common_opts.check_performance) {
traccc::event_map evt_map(event, common_opts.detector_file,
i_cfg.digitization_config_file,
common_opts.input_directory,
common_opts.input_directory,
common_opts.input_directory, host_mr);
traccc::event_map evt_map(
event, det_opts.detector_file, i_cfg.digitization_config_file,
common_opts.input_directory, common_opts.input_directory,
common_opts.input_directory, host_mr);

sd_performance_writer.write(vecmem::get_data(seeds),
vecmem::get_data(spacepoints_per_event),
Expand Down Expand Up @@ -161,6 +161,7 @@ int main(int argc, char* argv[]) {
// Add options
desc.add_options()("help,h", "Give some help with the program's options");
traccc::common_options common_opts(desc);
traccc::detector_input_options det_opts(desc);
traccc::full_tracking_input_config full_tracking_input_cfg(desc);

po::variables_map vm;
Expand All @@ -171,12 +172,13 @@ int main(int argc, char* argv[]) {

// Read options
common_opts.read(vm);
det_opts.read(vm);
full_tracking_input_cfg.read(vm);

std::cout << "Running " << argv[0] << " "
<< full_tracking_input_cfg.detector_file << " "
<< common_opts.input_directory << " " << common_opts.events
<< std::endl;

return seq_run(full_tracking_input_cfg, common_opts);
return seq_run(full_tracking_input_cfg, common_opts, det_opts);
}
15 changes: 9 additions & 6 deletions examples/run/cpu/truth_finding_example.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include "traccc/io/read_measurements.hpp"
#include "traccc/io/utils.hpp"
#include "traccc/options/common_options.hpp"
#include "traccc/options/detector_input_options.hpp"
#include "traccc/options/finding_input_options.hpp"
#include "traccc/options/handle_argument_errors.hpp"
#include "traccc/options/propagation_options.hpp"
Expand Down Expand Up @@ -44,7 +45,8 @@ namespace po = boost::program_options;

int seq_run(const traccc::finding_input_config& i_cfg,
const traccc::propagation_options<scalar>& propagation_opts,
const traccc::common_options& common_opts) {
const traccc::common_options& common_opts,
const traccc::detector_input_options& det_opts) {

/// Type declarations
using host_detector_type = detray::detector<detray::default_metadata,
Expand Down Expand Up @@ -79,10 +81,9 @@ int seq_run(const traccc::finding_input_config& i_cfg,

// Read the detector
detray::io::detector_reader_config reader_cfg{};
reader_cfg
.add_file(traccc::io::data_directory() + common_opts.detector_file)
.add_file(traccc::io::data_directory() + common_opts.material_file)
.add_file(traccc::io::data_directory() + common_opts.grid_file);
reader_cfg.add_file(traccc::io::data_directory() + det_opts.detector_file)
.add_file(traccc::io::data_directory() + det_opts.material_file)
.add_file(traccc::io::data_directory() + det_opts.grid_file);

const auto [host_det, names] =
detray::io::read_detector<host_detector_type>(host_mr, reader_cfg);
Expand Down Expand Up @@ -198,6 +199,7 @@ int main(int argc, char* argv[]) {
// Add options
desc.add_options()("help,h", "Give some help with the program's options");
traccc::common_options common_opts(desc);
traccc::detector_input_options det_opts(desc);
traccc::finding_input_config finding_input_cfg(desc);
traccc::propagation_options<scalar> propagation_opts(desc);

Expand All @@ -209,11 +211,12 @@ int main(int argc, char* argv[]) {

// Read options
common_opts.read(vm);
det_opts.read(vm);
finding_input_cfg.read(vm);
propagation_opts.read(vm);

std::cout << "Running " << argv[0] << " " << common_opts.input_directory
<< " " << common_opts.events << std::endl;

return seq_run(finding_input_cfg, propagation_opts, common_opts);
return seq_run(finding_input_cfg, propagation_opts, common_opts, det_opts);
}
11 changes: 7 additions & 4 deletions examples/run/cpu/truth_fitting_example.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "traccc/io/read_measurements.hpp"
#include "traccc/io/utils.hpp"
#include "traccc/options/common_options.hpp"
#include "traccc/options/detector_input_options.hpp"
#include "traccc/options/handle_argument_errors.hpp"
#include "traccc/options/propagation_options.hpp"
#include "traccc/resolution/fitting_performance_writer.hpp"
Expand Down Expand Up @@ -48,6 +49,7 @@ int main(int argc, char* argv[]) {
// Add options
desc.add_options()("help,h", "Give some help with the program's options");
traccc::common_options common_opts(desc);
traccc::detector_input_options det_opts(desc);
traccc::propagation_options<scalar> propagation_opts(desc);

po::variables_map vm;
Expand All @@ -58,6 +60,8 @@ int main(int argc, char* argv[]) {

// Read options
common_opts.read(vm);
det_opts.read(vm);

propagation_opts.read(vm);

std::cout << "Running " << argv[0] << " " << common_opts.input_directory
Expand Down Expand Up @@ -94,10 +98,9 @@ int main(int argc, char* argv[]) {

// Read the detector
detray::io::detector_reader_config reader_cfg{};
reader_cfg
.add_file(traccc::io::data_directory() + common_opts.detector_file)
.add_file(traccc::io::data_directory() + common_opts.material_file)
.add_file(traccc::io::data_directory() + common_opts.grid_file);
reader_cfg.add_file(traccc::io::data_directory() + det_opts.detector_file)
.add_file(traccc::io::data_directory() + det_opts.material_file)
.add_file(traccc::io::data_directory() + det_opts.grid_file);

const auto [host_det, names] =
detray::io::read_detector<host_detector_type>(host_mr, reader_cfg);
Expand Down
Loading

0 comments on commit 7bcdb1a

Please sign in to comment.