ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkVertexFitter
TrkVertexFitterUtils
src
Z0PVTrackCompatibilityEstimator.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
6
#include "
TrkVertexFitterUtils/Z0PVTrackCompatibilityEstimator.h
"
7
8
#include "
TrkTrack/Track.h
"
9
10
#include "
TrkParticleBase/TrackParticleBase.h
"
11
12
#include "
TrkParameters/TrackParameters.h
"
13
14
#include "
VxVertex/VxTrackAtVertex.h
"
15
16
17
18
namespace
Trk
{
19
20
Z0PVTrackCompatibilityEstimator::Z0PVTrackCompatibilityEstimator
(
const
std::string&
type
,
21
const
std::string& name,
22
const
IInterface* parent) :
23
base_class(
type
, name, parent),
24
m_ipEstimator
(
"Trk::TrackToVertexIPEstimator"
),
25
m_z0SignificanceMax
(30.)
26
{
27
declareProperty(
"IPEstimator"
,
m_ipEstimator
,
"Impact parameter estimator tool"
);
28
declareProperty(
"Z0SignificanceMax"
,
m_z0SignificanceMax
);
29
}
30
31
Z0PVTrackCompatibilityEstimator::~Z0PVTrackCompatibilityEstimator
()=
default
;
32
33
34
StatusCode
Z0PVTrackCompatibilityEstimator::initialize
(){
35
36
ATH_MSG_INFO
(
"Initializing Z0PVTrackCompatibilityEstimator"
);
37
38
StatusCode
sc
=
m_ipEstimator
.retrieve();
39
if
( !
sc
.isSuccess() ){
40
msg
(MSG::FATAL) <<
"Unable to retrieve impact parameter estimator tool"
<<
endmsg
;
41
return
sc
;
42
}
43
44
return
StatusCode::SUCCESS;
45
}
46
47
48
StatusCode
Z0PVTrackCompatibilityEstimator::finalize
(){
49
50
ATH_MSG_INFO
(
"Finalizing Z0PVTrackCompatibilityEstimator"
);
51
52
return
StatusCode::SUCCESS;
53
}
54
55
56
57
bool
Z0PVTrackCompatibilityEstimator::isCompatible
(
const
xAOD::TrackParticle
* track,
58
const
xAOD::VertexContainer
* primaryVertexContainer,
unsigned
int
index
)
const
{
59
60
return
isCompatible
( &(track->perigeeParameters()), primaryVertexContainer,
index
);
61
}
62
63
bool
Z0PVTrackCompatibilityEstimator::isCompatible
(
const
TrackParameters
* track,
64
const
xAOD::VertexContainer
* primaryVertexContainer,
unsigned
int
index
)
const
{
65
66
// TODO: do we want to doRemoval here? (I have it as false for now)
67
std::unique_ptr<ImpactParametersAndSigma> ip =
m_ipEstimator
->estimate(Gaudi::Hive::currentContext(),
68
track, track, (*primaryVertexContainer)[
index
],
false
);
69
70
bool
pileup =
false
;
71
72
double
sumptPV = 0;
73
74
75
// TODO: perhaps calculate sumptPV using VxTracksAtVertex in xAOD::Vertex? -David S.
76
for
(
unsigned
int
i = 0; i < (*primaryVertexContainer)[
index
]->nTrackParticles(); ++i){
77
78
sumptPV += (*primaryVertexContainer)[
index
]->trackParticle(i)->perigeeParameters().momentum().perp();
79
}
80
81
for
(
unsigned
int
i = 0; i < primaryVertexContainer->
size
(); i++){
82
83
double
sumpt = 0.;
84
85
if
( i !=
index
&&
86
(*primaryVertexContainer)[i]->vertexType() !=
xAOD::VxType::NoVtx
){
87
88
89
// TODO: perhaps calculate sumptPV using VxTracksAtVertex in xAOD::Vertex? -David S.
90
for
(
unsigned
int
itrk = 0; itrk < (*primaryVertexContainer)[i]->nTrackParticles(); ++itrk){
91
92
sumpt += (*primaryVertexContainer)[i]->trackParticle(itrk)->perigeeParameters().momentum().perp();
93
}
94
if
((sumpt + sumptPV) == 0.)[[
unlikely
]]{
95
ATH_MSG_ERROR
(
"isCompatible: Divisor 'sumpt + sumptPV' is zero."
);
96
return
false
;
97
}
98
double
vxReach =
99
std::abs((*primaryVertexContainer)[i]->
position
().
z
()
100
- (*primaryVertexContainer)[
index
]->
position
().
z
()) * sumpt / (sumpt + sumptPV);
101
102
if
(std::abs(ip->IPz0 + (*primaryVertexContainer)[
index
]->position().z() -
103
(*primaryVertexContainer)[i]->position().z()) < vxReach){
104
105
pileup =
true
;
106
}
107
}
108
}
109
110
return
std::abs(ip->IPz0) / ip->sigmaz0 <
m_z0SignificanceMax
&& !pileup;
111
}
112
113
}
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:61
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
TrackParticleBase.h
TrackParameters.h
Track.h
VxTrackAtVertex.h
Z0PVTrackCompatibilityEstimator.h
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
Trk::Z0PVTrackCompatibilityEstimator::m_ipEstimator
ToolHandle< Trk::ITrackToVertexIPEstimator > m_ipEstimator
Definition
Z0PVTrackCompatibilityEstimator.h:60
Trk::Z0PVTrackCompatibilityEstimator::Z0PVTrackCompatibilityEstimator
Z0PVTrackCompatibilityEstimator(const std::string &type, const std::string &name, const IInterface *parent)
Definition
Z0PVTrackCompatibilityEstimator.cxx:20
Trk::Z0PVTrackCompatibilityEstimator::m_z0SignificanceMax
double m_z0SignificanceMax
Definition
Z0PVTrackCompatibilityEstimator.h:62
Trk::Z0PVTrackCompatibilityEstimator::~Z0PVTrackCompatibilityEstimator
virtual ~Z0PVTrackCompatibilityEstimator()
Trk::Z0PVTrackCompatibilityEstimator::initialize
virtual StatusCode initialize()
Definition
Z0PVTrackCompatibilityEstimator.cxx:34
Trk::Z0PVTrackCompatibilityEstimator::isCompatible
bool isCompatible(const xAOD::TrackParticle *track, const xAOD::VertexContainer *pvContainer, unsigned int pvIndex=0) const
Definition
Z0PVTrackCompatibilityEstimator.cxx:57
Trk::Z0PVTrackCompatibilityEstimator::finalize
virtual StatusCode finalize()
Definition
Z0PVTrackCompatibilityEstimator.cxx:48
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
Trk::z
@ z
global position (cartesian)
Definition
ParamDefs.h:57
Trk::position
const Amg::Vector3D & position() const
Method to retrieve the position of the Intersection.
Trk::TrackParameters
ParametersBase< TrackParametersDim, Charged > TrackParameters
Definition
Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:27
index
Definition
index.py:1
xAOD::VxType::NoVtx
@ NoVtx
Dummy vertex. TrackParticle was not used in vertex fit.
Definition
TrackingPrimitives.h:589
xAOD::TrackParticle
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Definition
Event/xAOD/xAODTracking/xAODTracking/TrackParticle.h:13
xAOD::VertexContainer
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
Definition
VertexContainer.h:14
unlikely
#define unlikely(x)
Definition
pythonic_coracool.cxx:9
type
msg
MsgStream & msg
Definition
testRead.cxx:32
Generated on
for ATLAS Offline Software by
1.17.0