Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-06-26 07:05:43

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     };
0036     bool skip_track_on_track_point_cut_failure{false};
0037   };
0038 
0039 } // eicrecon