File indexing completed on 2025-11-03 08:57:22
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     
0053     float constrainttemp = 1.;
0054     
0055     bool useLogPt = true;
0056     
0057     bool usePt = false;
0058     
0059     double minPt = 0.4 * UnitConstants::GeV;
0060     
0061     double expPt = 1.;
0062     
0063     double minWeight = 0.01;
0064 
0065     
0066     InputTrack::Extractor extractParameters;
0067   };
0068 
0069   
0070   struct State {};
0071 
0072   
0073   
0074   
0075   
0076   explicit ZScanVertexFinder(const Config& cfg,
0077                              std::unique_ptr<const Logger> logger =
0078                                  getDefaultLogger("ZScanVertexFinder",
0079                                                   Logging::INFO));
0080 
0081   
0082   
0083   
0084   
0085   
0086   
0087   
0088   
0089   
0090   
0091   Result<std::vector<Vertex>> find(const std::vector<InputTrack>& trackVector,
0092                                    const VertexingOptions& vertexingOptions,
0093                                    IVertexFinder::State& state) const override;
0094 
0095   IVertexFinder::State makeState(
0096       const Acts::MagneticFieldContext& ) const override {
0097     return IVertexFinder::State{State{}};
0098   }
0099 
0100   void setTracksToRemove(
0101       IVertexFinder::State& ,
0102       const std::vector<InputTrack>& ) const override {
0103     
0104   }
0105 
0106  private:
0107   Config m_cfg;
0108 
0109   
0110   std::unique_ptr<const Logger> m_logger;
0111 
0112   
0113   const Logger& logger() const { return *m_logger; }
0114 };
0115 
0116 }