Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-07-15 08:53:29

0001 // SPDX-License-Identifier: LGPL-3.0-or-later
0002 // Copyright (C) 2024 Wouter Deconinck
0003 
0004 #pragma once
0005 
0006 #include <string>
0007 #include <variant>
0008 #include <vector>
0009 #include <edm4eic/TrackPoint.h>
0010 
0011 namespace eicrecon {
0012 
0013 struct CylinderSurfaceConfig {
0014   std::string id;
0015   std::variant<std::string, double> rmin;
0016   std::variant<std::string, double> zmin;
0017   std::variant<std::string, double> zmax;
0018 };
0019 
0020 struct DiscSurfaceConfig {
0021   std::string id;
0022   std::variant<std::string, double> zmin;
0023   std::variant<std::string, double> rmin;
0024   std::variant<std::string, double> rmax;
0025 };
0026 
0027 using SurfaceConfig = std::variant<CylinderSurfaceConfig, DiscSurfaceConfig>;
0028 
0029 struct TrackPropagationConfig {
0030   std::vector<SurfaceConfig> filter_surfaces{};
0031   std::vector<SurfaceConfig> target_surfaces{};
0032 
0033   std::function<bool(edm4eic::TrackPoint)> track_point_cut{
0034       [](const edm4eic::TrackPoint&) { return true; }};
0035   bool skip_track_on_track_point_cut_failure{false};
0036 };
0037 
0038 } // namespace eicrecon