ATLAS Offline Software
Loading...
Searching...
No Matches
NewtonTrkDistanceFinder.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRKVERTEXSEEDFINDERUTILS_NEWTONTRKDISTANCEFINDER_H
6#define TRKVERTEXSEEDFINDERUTILS_NEWTONTRKDISTANCEFINDER_H
7
8#include "GaudiKernel/ToolHandle.h"
12#include <variant>
13
14namespace Trk
15{
16
27
28 static const InterfaceID IID_NewtonTrkDistanceFinder("NewtonTrkDistanceFinder", 1, 1);
29
31 {
32 public:
33
34 static const InterfaceID& interfaceID()
35 {
37 };
38
39
40 //default constructor due to Athena interface
41 NewtonTrkDistanceFinder(const std::string& t, const std::string& n, const IInterface* p);
42
43
44 //
45 //destructor
47
48 virtual StatusCode initialize() override;
49 virtual StatusCode finalize() override;
50
51 // GetClosestPoints returns either the resulting TwoPoints,
52 // or an error string on failure.
53
54 std::variant<TwoPoints, std::string>
55 GetClosestPoints(const Perigee & a, const Perigee & b) const {
56 //with the constractur of PointOnTrackPar a track is constructed with, as seed,
57 //directly the point of closest approach (see for info PointOnTrack.h)
59 }
60
61 std::variant<TwoPoints, std::string>
62 GetClosestPoints(const PointOnTrack &, const PointOnTrack &) const;
63
64 std::variant<TwoPoints, std::string>
65 GetClosestPoints(const TwoTracks & twotracks) const {
66 return GetClosestPoints(twotracks.getFirstPerigee(),twotracks.getSecondPerigee());
67 }
68
69 std::variant<TwoPoints, std::string>
70 GetClosestPoints(const TwoPointOnTrack & twopointontrack) const {
71 return GetClosestPoints(twopointontrack.first,twopointontrack.second);
72 }
73
74 private:
75 //parameters for precision
76 double m_precision;//as job option
77 double m_maxloopnumber;//as job option
78
79 //variables for magnetic field service needed to retrieve the correct Bz
81 {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"};
82
83 };
84
85}
86
87#endif
static Double_t a
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
static const InterfaceID & interfaceID()
std::variant< TwoPoints, std::string > GetClosestPoints(const Perigee &a, const Perigee &b) const
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
std::variant< TwoPoints, std::string > GetClosestPoints(const TwoTracks &twotracks) const
virtual StatusCode initialize() override
std::variant< TwoPoints, std::string > GetClosestPoints(const TwoPointOnTrack &twopointontrack) const
virtual StatusCode finalize() override
NewtonTrkDistanceFinder(const std::string &t, const std::string &n, const IInterface *p)
const Perigee & getSecondPerigee() const
Definition TwoTracks.cxx:21
const Perigee & getFirstPerigee() const
Definition TwoTracks.cxx:17
Ensure that the ATLAS eigen extensions are properly loaded.
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
static const InterfaceID IID_NewtonTrkDistanceFinder("NewtonTrkDistanceFinder", 1, 1)
std::pair< PointOnTrack, PointOnTrack > TwoPointOnTrack