ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkVertexFitter
TrkVertexSeedFinderUtils
src
Trk2DDistanceFinder.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
/*********************************************************************
6
Trk2DDistanceFinder.cxx - Description in header file
7
*********************************************************************/
8
9
//#define SEEDNEWTONTRKDISTANCEFINDER_DEBUG
10
11
12
#include "
TrkVertexSeedFinderUtils/Trk2DDistanceFinder.h
"
13
#include "
EventPrimitives/EventPrimitives.h
"
14
#include "
GeoPrimitives/GeoPrimitives.h
"
15
#include "
TrkEventPrimitives/ParamDefs.h
"
16
#include "
TrkParameters/TrackParameters.h
"
17
#include "
TrkParticleBase/TrackParticleBase.h
"
18
#include "
TrkTrack/Track.h
"
19
#include "
TrkVertexSeedFinderUtils/SeedFinderParamDefs.h
"
20
#include "
TrkVertexSeedFinderUtils/Trk2dDistanceSeeder.h
"
21
#include <cmath>
22
23
24
namespace
Trk
25
{
26
27
28
Trk2DDistanceFinder::Trk2DDistanceFinder
(
const
std::string& t,
const
std::string& n,
const
IInterface* p) :
29
base_class(t,n,p),
30
m_2ddistanceseeder
(
"Trk::Trk2dDistanceSeeder"
),
31
m_numberOfMinimizationFailures
(0)
32
{
33
declareProperty(
"Trk2dDistanceSeeder"
,
m_2ddistanceseeder
);
34
}
35
36
Trk2DDistanceFinder::~Trk2DDistanceFinder
() =
default
;
37
38
StatusCode
Trk2DDistanceFinder::initialize
()
39
{
40
41
//initialize number of failures to 0
42
m_numberOfMinimizationFailures
=0;
43
44
ATH_CHECK
( AlgTool::initialize() );
45
ATH_CHECK
(
m_2ddistanceseeder
.retrieve() );
46
ATH_MSG_DEBUG
(
"Initialize successful"
);
47
return
StatusCode::SUCCESS;
48
}
49
50
StatusCode
Trk2DDistanceFinder::finalize
()
51
{
52
ATH_MSG_DEBUG
(
"Finalize successful. Number of failed minimizations: "
<<
m_numberOfMinimizationFailures
<<
". Few per events is OK!"
);
53
return
StatusCode::SUCCESS;
54
}
55
56
59
std::optional<ITrkDistanceFinder::TwoPoints>
60
Trk2DDistanceFinder::CalculateMinimumDistance
(
const
Trk::Perigee
&
a
,
61
const
Trk::Perigee
& b)
const
62
{
63
std::pair<PointOnTrack,PointOnTrack> minpoints;
64
Trk::TwoPoints
points;
65
66
try
{
67
minpoints=
m_2ddistanceseeder
->GetSeed(
TwoTracks
(
a
,b), &points);
68
}
catch
(...) {
69
ATH_MSG_WARNING
(
"Problem with 2d analytic minimum distance finder"
);
70
m_numberOfMinimizationFailures
+=1;
71
return
std::nullopt;
72
}
73
74
75
#ifdef SEEDNEWTONTRKDISTANCEFINDER_DEBUG
76
ATH_MSG_DEBUG
(
"Returned a_phi "
<< minpoints.first.getPhiPoint() );
77
ATH_MSG_DEBUG
(
"Returned b_phi "
<< minpoints.second.getPhiPoint() );
78
#endif
79
80
return
points;
81
82
}
83
85
std::optional<ITrkDistanceFinder::TwoPoints>
86
Trk2DDistanceFinder::CalculateMinimumDistance
(
const
Trk::Track
&
a
,
87
const
Trk::Track
& b)
const
88
{
89
if
(std::isnan(
a
.perigeeParameters()->parameters()[
Trk::d0
])||std::isnan(b.perigeeParameters()->parameters()[
Trk::d0
])) {
90
ATH_MSG_ERROR
(
"Nan parameters in tracks. Cannot use them"
);
91
return
std::nullopt;
92
}
93
94
return
CalculateMinimumDistance
(*(
a
.perigeeParameters()),*(b.perigeeParameters()));
95
}
96
97
}
// namespace Trk
98
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition
AthMsgStreamMacros.h:32
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
EventPrimitives.h
GeoPrimitives.h
a
static Double_t a
Definition
LArPhysWaveHECTool.cxx:38
ParamDefs.h
SeedFinderParamDefs.h
TrackParticleBase.h
TrackParameters.h
Track.h
Trk2DDistanceFinder.h
Trk2dDistanceSeeder.h
Trk::Track
The ATLAS Track class.
Definition
Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
Trk::Trk2DDistanceFinder::finalize
virtual StatusCode finalize() override
Definition
Trk2DDistanceFinder.cxx:50
Trk::Trk2DDistanceFinder::Trk2DDistanceFinder
Trk2DDistanceFinder(const std::string &t, const std::string &n, const IInterface *p)
Definition
Trk2DDistanceFinder.cxx:28
Trk::Trk2DDistanceFinder::CalculateMinimumDistance
virtual std::optional< TwoPoints > CalculateMinimumDistance(const Trk::Perigee &, const Trk::Perigee &) const override final
method to do the calculation starting from two MeasuredPerigees
Definition
Trk2DDistanceFinder.cxx:60
Trk::Trk2DDistanceFinder::m_numberOfMinimizationFailures
std::atomic< int > m_numberOfMinimizationFailures
Definition
Trk2DDistanceFinder.h:62
Trk::Trk2DDistanceFinder::initialize
virtual StatusCode initialize() override
Definition
Trk2DDistanceFinder.cxx:38
Trk::Trk2DDistanceFinder::m_2ddistanceseeder
ToolHandle< Trk2dDistanceSeeder > m_2ddistanceseeder
Definition
Trk2DDistanceFinder.h:61
Trk::Trk2DDistanceFinder::~Trk2DDistanceFinder
virtual ~Trk2DDistanceFinder()
Trk::TwoTracks
Definition
TwoTracks.h:15
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
Trk::Perigee
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
Definition
Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:33
Trk::d0
@ d0
Definition
ParamDefs.h:63
Trk::TwoPoints
std::pair< Amg::Vector3D, Amg::Vector3D > TwoPoints
Definition
SeedFinderParamDefs.h:20
Generated on
for ATLAS Offline Software by
1.17.0