ECCE @ 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 Config {
49  Config(const BField_t& bIn, std::shared_ptr<propagator_t> prop)
50  : bField(bIn), propagator(std::move(prop)) {}
51 
56  template <typename T = BField_t,
58  Config(std::shared_ptr<propagator_t> prop) : propagator(std::move(prop)) {}
59 
63  std::shared_ptr<propagator_t> propagator;
65  int maxIterations = 20;
67  double precision = 1.e-10;
69  double minQoP = 1e-15;
71  double maxRho = 1e+15;
72  };
73 
77  ImpactPointEstimator(const Config& cfg) : m_cfg(cfg) {}
78 
87  const BoundParameters& trkParams,
88  const Vector3D& vtxPos) const;
89 
105  const GeometryContext& gctx, const Acts::MagneticFieldContext& mctx,
106  const BoundParameters& trkParams, const Vector3D& vtxPos) const;
107 
119  const BoundParameters* trkParams,
120  const Vector3D& vertexPos) const;
121 
131  const BoundParameters& track, const Vertex<input_track_t>& vtx,
132  const GeometryContext& gctx, const MagneticFieldContext& mctx) const;
133 
134  private:
136  const Config m_cfg;
137 
150  const Vector3D& vtxPos, double phi,
151  double theta, double r) const;
152 
165  const BoundParameters& trkParams,
166  const Vector3D& vtxPos, Vector3D& deltaR,
167  Vector3D& momDir) const;
168 };
169 
170 } // namespace Acts
171