EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ImpactPointEstimator.hpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file ImpactPointEstimator.hpp
1 // This file is part of the Acts project.
2 //
3 // Copyright (C) 2019 CERN for the benefit of the Acts project
4 //
5 // This Source Code Form is subject to the terms of the Mozilla Public
6 // License, v. 2.0. If a copy of the MPL was not distributed with this
7 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 
9 #pragma once
10 
19 
20 namespace Acts {
21 
23  double IPd0 = 0.;
24  double IPz0 = 0.;
25  double IPz0SinTheta = 0.;
26  double sigmad0 = 0.;
27  double sigmaz0 = 0.;
28  double sigmaz0SinTheta = 0.;
29  double PVsigmad0 = 0.;
30  double PVsigmaz0 = 0.;
31  double PVsigmaz0SinTheta = 0.;
32 };
33 
37 template <typename input_track_t, typename propagator_t,
38  typename propagator_options_t = PropagatorOptions<>>
41 
42  public:
44  struct State {
50  typename BField_t::Cache fieldCache;
51  };
52 
53  struct Config {
58  Config(const BField_t& bIn, std::shared_ptr<propagator_t> prop)
59  : bField(bIn), propagator(std::move(prop)) {}
60 
65  template <typename T = BField_t,
67  Config(std::shared_ptr<propagator_t> prop) : propagator(std::move(prop)) {}
68 
72  std::shared_ptr<propagator_t> propagator;
74  int maxIterations = 20;
76  double precision = 1.e-10;
78  double minQoP = 1e-15;
80  double maxRho = 1e+15;
81  };
82 
86  ImpactPointEstimator(const Config& cfg) : m_cfg(cfg) {}
87 
97  const BoundTrackParameters& trkParams,
98  const Vector3D& vtxPos,
99  State& state) const;
100 
118  const Acts::MagneticFieldContext& mctx,
119  const BoundTrackParameters& trkParams,
120  const Vector3D& vtxPos, State& state) const;
121 
133  const BoundTrackParameters* trkParams,
134  const Vector3D& vertexPos) const;
135 
145  const BoundTrackParameters& track, const Vertex<input_track_t>& vtx,
146  const GeometryContext& gctx, const MagneticFieldContext& mctx) const;
147 
148  private:
150  const Config m_cfg;
151 
164  const Vector3D& vtxPos, double phi,
165  double theta, double r) const;
166 
180  const BoundTrackParameters& trkParams,
181  const Vector3D& vtxPos, Vector3D& deltaR,
182  Vector3D& momDir, State& state) const;
183 };
184 
185 } // namespace Acts
186