File indexing completed on 2025-07-06 07:52:01
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Definitions/Algebra.hpp"
0012 #include "Acts/Definitions/Units.hpp"
0013 #include "Acts/EventData/TrackParameters.hpp"
0014 #include "Acts/Utilities/Logger.hpp"
0015 #include "Acts/Utilities/Result.hpp"
0016 #include "Acts/Vertexing/FsmwMode1dFinder.hpp"
0017 #include "Acts/Vertexing/IVertexFinder.hpp"
0018 #include "Acts/Vertexing/ImpactPointEstimator.hpp"
0019 #include "Acts/Vertexing/Vertex.hpp"
0020 #include "Acts/Vertexing/VertexingOptions.hpp"
0021
0022 #include <unordered_map>
0023
0024 namespace Acts {
0025
0026
0027
0028
0029
0030
0031
0032
0033 class ZScanVertexFinder final : public IVertexFinder {
0034 public:
0035
0036 struct Config {
0037
0038
0039
0040 explicit Config(const ImpactPointEstimator& ipEst) : ipEstimator(ipEst) {}
0041
0042
0043 ImpactPointEstimator ipEstimator;
0044
0045
0046 FsmwMode1dFinder mode1dFinder;
0047
0048
0049 bool disableAllWeights = false;
0050
0051 float constraintcutoff = 9.;
0052 float constrainttemp = 1.;
0053
0054 bool useLogPt = true;
0055
0056 bool usePt = false;
0057
0058 double minPt = 0.4 * UnitConstants::GeV;
0059
0060 double expPt = 1.;
0061
0062 double minWeight = 0.01;
0063
0064
0065 InputTrack::Extractor extractParameters;
0066 };
0067
0068
0069 struct State {};
0070
0071
0072
0073
0074
0075 explicit ZScanVertexFinder(const Config& cfg,
0076 std::unique_ptr<const Logger> logger =
0077 getDefaultLogger("ZScanVertexFinder",
0078 Logging::INFO));
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090 Result<std::vector<Vertex>> find(const std::vector<InputTrack>& trackVector,
0091 const VertexingOptions& vertexingOptions,
0092 IVertexFinder::State& state) const override;
0093
0094 IVertexFinder::State makeState(
0095 const Acts::MagneticFieldContext& ) const override {
0096 return IVertexFinder::State{State{}};
0097 }
0098
0099 void setTracksToRemove(
0100 IVertexFinder::State& ,
0101 const std::vector<InputTrack>& ) const override {
0102
0103 }
0104
0105 private:
0106 Config m_cfg;
0107
0108
0109 std::unique_ptr<const Logger> m_logger;
0110
0111
0112 const Logger& logger() const { return *m_logger; }
0113 };
0114
0115 }